@mintplayer/ng-bootstrap 13.1.4 → 13.1.9

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 (154) hide show
  1. package/esm2020/index.mjs +3 -1
  2. package/esm2020/lib/components/accordion/accordion-tab/accordion-tab.component.mjs +4 -3
  3. package/esm2020/lib/components/accordion/accordion-tab-header/accordion-tab-header.component.mjs +7 -3
  4. package/esm2020/lib/components/alert/alert/alert.component.mjs +4 -4
  5. package/esm2020/lib/components/calendar/calendar.component.mjs +77 -34
  6. package/esm2020/lib/components/card/card/card.component.mjs +1 -2
  7. package/esm2020/lib/components/carousel/carousel/carousel.component.mjs +22 -8
  8. package/esm2020/lib/components/context-menu/context-menu.directive.mjs +57 -0
  9. package/esm2020/lib/components/context-menu/context-menu.module.mjs +26 -0
  10. package/esm2020/lib/components/context-menu/index.mjs +3 -0
  11. package/esm2020/lib/components/datatable/datatable/datatable.component.mjs +51 -0
  12. package/esm2020/lib/components/datatable/datatable-column/datatable-column-metadata.mjs +2 -0
  13. package/esm2020/lib/components/datatable/datatable-column/datatable-column.directive.mjs +19 -0
  14. package/esm2020/lib/components/datatable/datatable-settings.mjs +37 -0
  15. package/esm2020/lib/components/datatable/datatable.module.mjs +40 -0
  16. package/esm2020/lib/components/datatable/index.mjs +6 -0
  17. package/esm2020/lib/components/datatable/row-template/row-template.directive.mjs +19 -0
  18. package/esm2020/lib/components/datepicker/datepicker.component.mjs +22 -0
  19. package/esm2020/lib/components/datepicker/datepicker.module.mjs +34 -0
  20. package/esm2020/lib/components/datepicker/index.mjs +3 -0
  21. package/esm2020/lib/components/dropdown/dropdown/dropdown.directive.mjs +51 -0
  22. package/esm2020/lib/components/dropdown/dropdown-menu/dropdown-menu.directive.mjs +91 -0
  23. package/esm2020/lib/components/dropdown/dropdown-toggle/dropdown-toggle.directive.mjs +28 -0
  24. package/esm2020/lib/components/dropdown/dropdown.module.mjs +44 -0
  25. package/esm2020/lib/components/dropdown/index.mjs +5 -0
  26. package/esm2020/lib/components/index.mjs +16 -4
  27. package/esm2020/lib/components/multiselect/index.mjs +3 -0
  28. package/esm2020/lib/components/multiselect/multiselect.component.mjs +36 -0
  29. package/esm2020/lib/components/multiselect/multiselect.module.mjs +34 -0
  30. package/esm2020/lib/components/navbar/nav-link/nav-link.directive.mjs +1 -1
  31. package/esm2020/lib/components/navbar/navbar-nav/navbar-nav.component.mjs +4 -3
  32. package/esm2020/lib/components/pagination/index.mjs +3 -0
  33. package/esm2020/lib/components/pagination/pagination/pagination.component.mjs +146 -0
  34. package/esm2020/lib/components/pagination/pagination.module.mjs +26 -0
  35. package/esm2020/lib/components/progress-bar/index.mjs +4 -0
  36. package/esm2020/lib/components/progress-bar/progress/progress.component.mjs +27 -0
  37. package/esm2020/lib/components/progress-bar/progress-bar/progress-bar.component.mjs +121 -0
  38. package/esm2020/lib/components/progress-bar/progress-bar.module.mjs +31 -0
  39. package/esm2020/lib/components/scrollspy/component/scrollspy.component.mjs +28 -12
  40. package/esm2020/lib/components/select2/component/select2.component.mjs +96 -0
  41. package/esm2020/lib/components/select2/directive/item-template.directive.mjs +20 -0
  42. package/esm2020/lib/components/select2/index.mjs +4 -0
  43. package/esm2020/lib/components/select2/select2.module.mjs +43 -0
  44. package/esm2020/lib/components/snackbar/component/snackbar.component.mjs +35 -0
  45. package/esm2020/lib/components/snackbar/directives/index.mjs +2 -0
  46. package/esm2020/lib/components/snackbar/directives/snackbar-close/snackbar-close.directive.mjs +27 -0
  47. package/esm2020/lib/components/snackbar/index.mjs +6 -0
  48. package/esm2020/lib/components/snackbar/interfaces/index.mjs +2 -0
  49. package/esm2020/lib/components/snackbar/interfaces/snackbar-animation-meta.mjs +2 -0
  50. package/esm2020/lib/components/snackbar/providers/snackbar-content.provider.mjs +3 -0
  51. package/esm2020/lib/components/snackbar/service/snackbar.service.mjs +50 -0
  52. package/esm2020/lib/components/snackbar/snackbar.module.mjs +38 -0
  53. package/esm2020/lib/components/toggle-button/index.mjs +3 -0
  54. package/esm2020/lib/components/toggle-button/toggle-button.component.mjs +42 -0
  55. package/esm2020/lib/components/toggle-button/toggle-button.module.mjs +26 -0
  56. package/esm2020/lib/components/tooltip/component/tooltip.component.mjs +25 -0
  57. package/esm2020/lib/components/tooltip/directive/tooltip.directive.mjs +104 -0
  58. package/esm2020/lib/components/tooltip/index.mjs +4 -0
  59. package/esm2020/lib/components/tooltip/providers/tooltip-content.provider.mjs +3 -0
  60. package/esm2020/lib/components/tooltip/tooltip.module.mjs +29 -0
  61. package/esm2020/lib/components/typeahead/index.mjs +3 -0
  62. package/esm2020/lib/components/typeahead/typeahead.component.mjs +90 -0
  63. package/esm2020/lib/components/typeahead/typeahead.module.mjs +38 -0
  64. package/esm2020/lib/enums/index.mjs +2 -1
  65. package/esm2020/lib/enums/position.enum.mjs +8 -0
  66. package/esm2020/lib/interfaces/index.mjs +2 -0
  67. package/esm2020/lib/interfaces/page-with-selection.mjs +2 -0
  68. package/esm2020/lib/pipes/font-color/font-color.module.mjs +26 -0
  69. package/esm2020/lib/pipes/font-color/font-color.pipe.mjs +26 -0
  70. package/esm2020/lib/pipes/font-color/index.mjs +3 -0
  71. package/esm2020/lib/pipes/in-list/in-list.module.mjs +26 -0
  72. package/esm2020/lib/pipes/in-list/in-list.pipe.mjs +16 -0
  73. package/esm2020/lib/pipes/index.mjs +2 -0
  74. package/esm2020/lib/pipes/month-name/month-name.pipe.mjs +7 -2
  75. package/esm2020/lib/services/calendar-month/calendar-month.service.mjs +12 -14
  76. package/esm2020/lib/services/scroll-offset/scroll-offset.service.mjs +31 -0
  77. package/esm2020/lib/types/page-number.type.mjs +2 -0
  78. package/fesm2015/mintplayer-ng-bootstrap.mjs +1912 -277
  79. package/fesm2015/mintplayer-ng-bootstrap.mjs.map +1 -1
  80. package/fesm2020/mintplayer-ng-bootstrap.mjs +1897 -275
  81. package/fesm2020/mintplayer-ng-bootstrap.mjs.map +1 -1
  82. package/index.d.ts +2 -0
  83. package/lib/components/accordion/accordion-tab-header/accordion-tab-header.component.d.ts +1 -0
  84. package/lib/components/calendar/calendar.component.d.ts +21 -13
  85. package/lib/components/carousel/carousel/carousel.component.d.ts +4 -1
  86. package/lib/components/context-menu/context-menu.directive.d.ts +16 -0
  87. package/lib/components/context-menu/context-menu.module.d.ts +8 -0
  88. package/lib/components/context-menu/index.d.ts +2 -0
  89. package/lib/components/datatable/datatable/datatable.component.d.ts +17 -0
  90. package/lib/components/datatable/datatable-column/datatable-column-metadata.d.ts +4 -0
  91. package/lib/components/datatable/datatable-column/datatable-column.directive.d.ts +10 -0
  92. package/lib/components/datatable/datatable-settings.d.ts +15 -0
  93. package/lib/components/datatable/datatable.module.d.ts +11 -0
  94. package/lib/components/datatable/index.d.ts +5 -0
  95. package/lib/components/datatable/row-template/row-template.directive.d.ts +9 -0
  96. package/lib/components/datepicker/datepicker.component.d.ts +10 -0
  97. package/lib/components/datepicker/datepicker.module.d.ts +10 -0
  98. package/lib/components/datepicker/index.d.ts +2 -0
  99. package/lib/components/dropdown/dropdown/dropdown.directive.d.ts +20 -0
  100. package/lib/components/dropdown/dropdown-menu/dropdown-menu.directive.d.ts +20 -0
  101. package/lib/components/dropdown/dropdown-toggle/dropdown-toggle.directive.d.ts +11 -0
  102. package/lib/components/dropdown/dropdown.module.d.ts +12 -0
  103. package/lib/components/dropdown/index.d.ts +4 -0
  104. package/lib/components/index.d.ts +15 -3
  105. package/lib/components/multiselect/index.d.ts +2 -0
  106. package/lib/components/multiselect/multiselect.component.d.ts +12 -0
  107. package/lib/components/multiselect/multiselect.module.d.ts +10 -0
  108. package/lib/components/pagination/index.d.ts +2 -0
  109. package/lib/components/pagination/pagination/pagination.component.d.ts +45 -0
  110. package/lib/components/pagination/pagination.module.d.ts +8 -0
  111. package/lib/components/progress-bar/index.d.ts +3 -0
  112. package/lib/components/progress-bar/progress/progress.component.d.ts +8 -0
  113. package/lib/components/progress-bar/progress-bar/progress-bar.component.d.ts +31 -0
  114. package/lib/components/progress-bar/progress-bar.module.d.ts +9 -0
  115. package/lib/components/scrollspy/component/scrollspy.component.d.ts +6 -4
  116. package/lib/components/select2/component/select2.component.d.ts +30 -0
  117. package/lib/components/select2/directive/item-template.directive.d.ts +9 -0
  118. package/lib/components/select2/index.d.ts +3 -0
  119. package/lib/components/select2/select2.module.d.ts +12 -0
  120. package/lib/components/snackbar/component/snackbar.component.d.ts +16 -0
  121. package/lib/components/snackbar/directives/index.d.ts +1 -0
  122. package/lib/components/snackbar/directives/snackbar-close/snackbar-close.directive.d.ts +11 -0
  123. package/lib/components/snackbar/index.d.ts +5 -0
  124. package/lib/components/snackbar/interfaces/index.d.ts +1 -0
  125. package/lib/components/snackbar/interfaces/snackbar-animation-meta.d.ts +7 -0
  126. package/lib/components/snackbar/providers/snackbar-content.provider.d.ts +2 -0
  127. package/lib/components/snackbar/service/snackbar.service.d.ts +14 -0
  128. package/lib/components/snackbar/snackbar.module.d.ts +9 -0
  129. package/lib/components/toggle-button/index.d.ts +2 -0
  130. package/lib/components/toggle-button/toggle-button.component.d.ts +15 -0
  131. package/lib/components/toggle-button/toggle-button.module.d.ts +8 -0
  132. package/lib/components/tooltip/component/tooltip.component.d.ts +11 -0
  133. package/lib/components/tooltip/directive/tooltip.directive.d.ts +19 -0
  134. package/lib/components/tooltip/index.d.ts +2 -0
  135. package/lib/components/tooltip/providers/tooltip-content.provider.d.ts +2 -0
  136. package/lib/components/tooltip/tooltip.module.d.ts +9 -0
  137. package/lib/components/typeahead/index.d.ts +2 -0
  138. package/lib/components/typeahead/typeahead.component.d.ts +29 -0
  139. package/lib/components/typeahead/typeahead.module.d.ts +11 -0
  140. package/lib/enums/index.d.ts +1 -0
  141. package/lib/enums/position.enum.d.ts +6 -0
  142. package/lib/interfaces/index.d.ts +1 -0
  143. package/lib/interfaces/page-with-selection.d.ts +5 -0
  144. package/lib/pipes/font-color/font-color.module.d.ts +8 -0
  145. package/lib/pipes/font-color/font-color.pipe.d.ts +7 -0
  146. package/lib/pipes/font-color/index.d.ts +2 -0
  147. package/lib/pipes/in-list/in-list.module.d.ts +8 -0
  148. package/lib/pipes/in-list/in-list.pipe.d.ts +7 -0
  149. package/lib/pipes/index.d.ts +1 -0
  150. package/lib/pipes/month-name/month-name.pipe.d.ts +1 -1
  151. package/lib/services/calendar-month/calendar-month.service.d.ts +0 -1
  152. package/lib/services/scroll-offset/scroll-offset.service.d.ts +9 -0
  153. package/lib/types/page-number.type.d.ts +1 -0
  154. package/package.json +6 -2
@@ -1,14 +1,119 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Component, Input, NgModule, Injectable, Pipe, Directive, ContentChildren, ViewChild, Optional, forwardRef, SkipSelf, Host, Inject, TemplateRef, ContentChild, HostListener } from '@angular/core';
2
+ import { Component, ContentChildren, NgModule, Input, Injectable, Pipe, EventEmitter, Output, Directive, HostBinding, Host, SkipSelf, HostListener, forwardRef, PLATFORM_ID, Inject, ContentChild, TemplateRef, ViewChild, Optional, ViewChildren, InjectionToken, Injector } from '@angular/core';
3
3
  import * as i1 from '@angular/common';
4
4
  import { CommonModule, DOCUMENT } from '@angular/common';
5
- import { SlideUpDownAnimation, FadeInOutAnimation, CarouselSlideAnimation } from '@mintplayer/ng-animations';
6
- import { Subject, BehaviorSubject } from 'rxjs';
7
- import { map, takeUntil, take } from 'rxjs/operators';
8
- import { RouterModule } from '@angular/router';
9
- import * as i1$1 from '@mintplayer/ng-click-outside';
10
- import { ClickOutsideModule } from '@mintplayer/ng-click-outside';
11
5
  import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
6
+ import { SlideUpDownAnimation, FadeInOutAnimation, CarouselSlideAnimation, ColorTransitionAnimation } from '@mintplayer/ng-animations';
7
+ import { Subject, BehaviorSubject, map, takeUntil, filter, take, Observable, combineLatest } from 'rxjs';
8
+ import { map as map$1, takeUntil as takeUntil$1, take as take$1 } from 'rxjs/operators';
9
+ import { TemplatePortal, ComponentPortal } from '@angular/cdk/portal';
10
+ import * as i1$1 from '@angular/cdk/overlay';
11
+ import { OverlayModule } from '@angular/cdk/overlay';
12
+ import * as i1$2 from '@mintplayer/ng-click-outside';
13
+ import { ClickOutsideDirective, ClickOutsideModule } from '@mintplayer/ng-click-outside';
14
+ import { FocusOnLoadModule } from '@mintplayer/ng-focus-on-load';
15
+ import { RouterModule, ROUTER_CONFIGURATION } from '@angular/router';
16
+ import * as i3 from '@angular/forms';
17
+ import { FormsModule } from '@angular/forms';
18
+
19
+ class BsAccordionTabComponent {
20
+ constructor(accordion) {
21
+ this.accordion = accordion;
22
+ }
23
+ ngOnInit() {
24
+ }
25
+ headerClicked(event) {
26
+ if (this.accordion.activeTab === this) {
27
+ this.accordion.activeTab = null;
28
+ }
29
+ else {
30
+ this.accordion.activeTab = this;
31
+ }
32
+ }
33
+ }
34
+ BsAccordionTabComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsAccordionTabComponent, deps: [{ token: BsAccordionComponent }], target: i0.ɵɵFactoryTarget.Component });
35
+ BsAccordionTabComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsAccordionTabComponent, selector: "bs-accordion-tab", ngImport: i0, template: "<div class=\"card\">\n <ng-content select=\"bs-accordion-tab-header\"></ng-content>\n <div class=\"card-block overflow-hidden\" [@slideUpDown] *ngIf=\"accordion.activeTab === this\">\n <ng-content></ng-content>\n </div>\n</div>", styles: [".card,.card-header,.card-block{border-radius:0}.card{margin-bottom:-1px}\n"], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], animations: [SlideUpDownAnimation] });
36
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsAccordionTabComponent, decorators: [{
37
+ type: Component,
38
+ args: [{ selector: 'bs-accordion-tab', animations: [SlideUpDownAnimation], template: "<div class=\"card\">\n <ng-content select=\"bs-accordion-tab-header\"></ng-content>\n <div class=\"card-block overflow-hidden\" [@slideUpDown] *ngIf=\"accordion.activeTab === this\">\n <ng-content></ng-content>\n </div>\n</div>", styles: [".card,.card-header,.card-block{border-radius:0}.card{margin-bottom:-1px}\n"] }]
39
+ }], ctorParameters: function () { return [{ type: BsAccordionComponent }]; } });
40
+
41
+ class BsAccordionComponent {
42
+ constructor() {
43
+ this.activeTab = null;
44
+ }
45
+ ngOnInit() {
46
+ }
47
+ }
48
+ BsAccordionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsAccordionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
49
+ BsAccordionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsAccordionComponent, selector: "bs-accordion", queries: [{ propertyName: "tabPages", predicate: BsAccordionTabComponent }], ngImport: i0, template: "<ng-content></ng-content>", styles: [""] });
50
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsAccordionComponent, decorators: [{
51
+ type: Component,
52
+ args: [{ selector: 'bs-accordion', template: "<ng-content></ng-content>", styles: [""] }]
53
+ }], ctorParameters: function () { return []; }, propDecorators: { tabPages: [{
54
+ type: ContentChildren,
55
+ args: [BsAccordionTabComponent]
56
+ }] } });
57
+
58
+ class BsAccordionTabHeaderComponent {
59
+ constructor(accordionTab, accordion) {
60
+ this.accordionTab = accordionTab;
61
+ this.accordion = accordion;
62
+ }
63
+ ngOnInit() {
64
+ }
65
+ headerClicked(event) {
66
+ event.preventDefault();
67
+ if (this.accordion.activeTab === this.accordionTab) {
68
+ this.accordion.activeTab = null;
69
+ }
70
+ else {
71
+ this.accordion.activeTab = this.accordionTab;
72
+ }
73
+ }
74
+ foo(event) {
75
+ event.preventDefault();
76
+ }
77
+ }
78
+ BsAccordionTabHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsAccordionTabHeaderComponent, deps: [{ token: BsAccordionTabComponent }, { token: BsAccordionComponent }], target: i0.ɵɵFactoryTarget.Component });
79
+ BsAccordionTabHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsAccordionTabHeaderComponent, selector: "bs-accordion-tab-header", ngImport: i0, template: "<div class=\"card-header cursor-pointer\" (click)=\"headerClicked($event)\" (contextmenu)=\"foo($event)\">\n <ng-content></ng-content>\n</div>", styles: [""] });
80
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsAccordionTabHeaderComponent, decorators: [{
81
+ type: Component,
82
+ args: [{ selector: 'bs-accordion-tab-header', template: "<div class=\"card-header cursor-pointer\" (click)=\"headerClicked($event)\" (contextmenu)=\"foo($event)\">\n <ng-content></ng-content>\n</div>", styles: [""] }]
83
+ }], ctorParameters: function () { return [{ type: BsAccordionTabComponent }, { type: BsAccordionComponent }]; } });
84
+
85
+ class BsAccordionModule {
86
+ }
87
+ BsAccordionModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsAccordionModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
88
+ BsAccordionModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsAccordionModule, declarations: [BsAccordionComponent,
89
+ BsAccordionTabComponent,
90
+ BsAccordionTabHeaderComponent], imports: [CommonModule,
91
+ BrowserAnimationsModule], exports: [BsAccordionComponent,
92
+ BsAccordionTabComponent,
93
+ BsAccordionTabHeaderComponent] });
94
+ BsAccordionModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsAccordionModule, imports: [[
95
+ CommonModule,
96
+ BrowserAnimationsModule
97
+ ]] });
98
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsAccordionModule, decorators: [{
99
+ type: NgModule,
100
+ args: [{
101
+ declarations: [
102
+ BsAccordionComponent,
103
+ BsAccordionTabComponent,
104
+ BsAccordionTabHeaderComponent
105
+ ],
106
+ imports: [
107
+ CommonModule,
108
+ BrowserAnimationsModule
109
+ ],
110
+ exports: [
111
+ BsAccordionComponent,
112
+ BsAccordionTabComponent,
113
+ BsAccordionTabHeaderComponent
114
+ ]
115
+ }]
116
+ }] });
12
117
 
13
118
  var Color;
14
119
  (function (Color) {
@@ -25,6 +130,14 @@ var Color;
25
130
  Color[Color["transparent"] = 10] = "transparent";
26
131
  })(Color || (Color = {}));
27
132
 
133
+ var Position;
134
+ (function (Position) {
135
+ Position[Position["top"] = 0] = "top";
136
+ Position[Position["left"] = 1] = "left";
137
+ Position[Position["bottom"] = 2] = "bottom";
138
+ Position[Position["right"] = 3] = "right";
139
+ })(Position || (Position = {}));
140
+
28
141
  class BsAlertComponent {
29
142
  constructor() {
30
143
  this.type = Color.primary;
@@ -35,10 +148,10 @@ class BsAlertComponent {
35
148
  }
36
149
  }
37
150
  BsAlertComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsAlertComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
38
- BsAlertComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsAlertComponent, selector: "bs-alert", inputs: { type: "type" }, ngImport: i0, template: "<div class=\"mb-3 overflow-hidden\" *ngIf=\"isVisible\" [@fadeInOut]>\n <div class=\"alert mb-0\" [ngClass]=\"'alert-' + colors[type]\">\n <ng-content></ng-content>\n </div>\n</div>", styles: ["::ng-deep .alert .btn{bottom:0;display:inline-flex;align-items:center}\n"], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], animations: [SlideUpDownAnimation, FadeInOutAnimation] });
151
+ BsAlertComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsAlertComponent, selector: "bs-alert", inputs: { type: "type" }, ngImport: i0, template: "<div class=\"mb-3 overflow-hidden\" *ngIf=\"isVisible\" [@fadeInOut]>\n <div class=\"alert mb-0\" [ngClass]=\"'alert-' + colors[type]\">\n <ng-content></ng-content>\n </div>\n</div>", styles: ["::ng-deep .alert .btn{bottom:0;display:inline-flex;align-items:center}\n"], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], animations: [FadeInOutAnimation] });
39
152
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsAlertComponent, decorators: [{
40
153
  type: Component,
41
- args: [{ selector: 'bs-alert', animations: [SlideUpDownAnimation, FadeInOutAnimation], template: "<div class=\"mb-3 overflow-hidden\" *ngIf=\"isVisible\" [@fadeInOut]>\n <div class=\"alert mb-0\" [ngClass]=\"'alert-' + colors[type]\">\n <ng-content></ng-content>\n </div>\n</div>", styles: ["::ng-deep .alert .btn{bottom:0;display:inline-flex;align-items:center}\n"] }]
154
+ args: [{ selector: 'bs-alert', animations: [FadeInOutAnimation], template: "<div class=\"mb-3 overflow-hidden\" *ngIf=\"isVisible\" [@fadeInOut]>\n <div class=\"alert mb-0\" [ngClass]=\"'alert-' + colors[type]\">\n <ng-content></ng-content>\n </div>\n</div>", styles: ["::ng-deep .alert .btn{bottom:0;display:inline-flex;align-items:center}\n"] }]
42
155
  }], ctorParameters: function () { return []; }, propDecorators: { type: [{
43
156
  type: Input
44
157
  }] } });
@@ -82,64 +195,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
82
195
  }]
83
196
  }] });
84
197
 
85
- class BsCardComponent {
86
- constructor() {
87
- }
88
- ngOnInit() {
89
- }
90
- ngAfterViewInit() {
91
- // console.log('header', this.header);
92
- }
93
- }
94
- BsCardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
95
- BsCardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsCardComponent, selector: "bs-card", ngImport: i0, template: "<div class=\"card\" style=\"width: 18rem;\">\n <ng-content select=\"bs-card-header\"></ng-content>\n <div class=\"card-block\">\n <ng-content></ng-content>\n </div>\n</div>", styles: [".card-block{margin:-1px}\n"] });
96
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsCardComponent, decorators: [{
97
- type: Component,
98
- args: [{ selector: 'bs-card', template: "<div class=\"card\" style=\"width: 18rem;\">\n <ng-content select=\"bs-card-header\"></ng-content>\n <div class=\"card-block\">\n <ng-content></ng-content>\n </div>\n</div>", styles: [".card-block{margin:-1px}\n"] }]
99
- }], ctorParameters: function () { return []; } });
100
-
101
- class BsCardHeaderComponent {
102
- constructor() {
103
- }
104
- ngOnInit() {
105
- }
106
- }
107
- BsCardHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsCardHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
108
- BsCardHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsCardHeaderComponent, selector: "bs-card-header", ngImport: i0, template: "<div class=\"card-header\">\n <ng-content></ng-content>\n</div>", styles: [""] });
109
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsCardHeaderComponent, decorators: [{
110
- type: Component,
111
- args: [{ selector: 'bs-card-header', template: "<div class=\"card-header\">\n <ng-content></ng-content>\n</div>", styles: [""] }]
112
- }], ctorParameters: function () { return []; } });
113
-
114
- class BsCardModule {
115
- }
116
- BsCardModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsCardModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
117
- BsCardModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsCardModule, declarations: [BsCardComponent,
118
- BsCardHeaderComponent], imports: [CommonModule], exports: [BsCardComponent,
119
- BsCardHeaderComponent] });
120
- BsCardModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsCardModule, imports: [[CommonModule]] });
121
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsCardModule, decorators: [{
122
- type: NgModule,
123
- args: [{
124
- imports: [CommonModule],
125
- declarations: [
126
- BsCardComponent,
127
- BsCardHeaderComponent
128
- ],
129
- exports: [
130
- BsCardComponent,
131
- BsCardHeaderComponent
132
- ]
133
- }]
134
- }] });
135
-
136
198
  class BsCalendarMonthService {
137
- constructor() {
138
- }
139
199
  getWeeks(month) {
140
- let firstAndLast = this.getFirstAndLastDayOfMonth(month);
141
- let days = this.dateDiff(firstAndLast.first, firstAndLast.last) + 1;
142
- let allDays = [
200
+ const firstAndLast = this.getFirstAndLastDayOfMonth(month);
201
+ const days = this.dateDiff(firstAndLast.first, firstAndLast.last) + 1;
202
+ const allDays = [
143
203
  ...this.generateList(this.dayOfWeekMondayBased(firstAndLast.first)).map(d => null),
144
204
  ...this.generateList(days).map(d => {
145
205
  return {
@@ -149,8 +209,8 @@ class BsCalendarMonthService {
149
209
  }),
150
210
  ...this.generateList(6 - this.dayOfWeekMondayBased(firstAndLast.last)).map(d => null),
151
211
  ];
152
- let weeks = this.chunk(allDays, 7);
153
- let weeksMapped = weeks.map((w, i) => {
212
+ const weeks = this.chunk(allDays, 7);
213
+ const weeksMapped = weeks.map((w, i) => {
154
214
  var _a;
155
215
  return {
156
216
  number: this.weekOfYear(new Date(month.getFullYear(), month.getMonth(), (_a = w.find(d => d !== null)) === null || _a === void 0 ? void 0 : _a.dayOfMonth)),
@@ -163,7 +223,7 @@ class BsCalendarMonthService {
163
223
  return [...Array(count).keys()];
164
224
  }
165
225
  dayOfWeekMondayBased(date) {
166
- let d = date.getDay() - 1;
226
+ const d = date.getDay() - 1;
167
227
  if (d < 0) {
168
228
  return 6;
169
229
  }
@@ -172,10 +232,10 @@ class BsCalendarMonthService {
172
232
  }
173
233
  }
174
234
  weekOfYear(date) {
175
- let dateClone = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()));
235
+ const dateClone = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()));
176
236
  dateClone.setUTCDate(dateClone.getUTCDate() + 4 - (dateClone.getUTCDay() || 7));
177
- let yearStart = new Date(Date.UTC(dateClone.getUTCFullYear(), 0, 1));
178
- let utcDiff = this.toUTC(dateClone) - this.toUTC(yearStart);
237
+ const yearStart = new Date(Date.UTC(dateClone.getUTCFullYear(), 0, 1));
238
+ const utcDiff = this.toUTC(dateClone) - this.toUTC(yearStart);
179
239
  return Math.ceil((utcDiff / (1000 * 60 * 60 * 24) + 1) / 7);
180
240
  }
181
241
  getFirstAndLastDayOfMonth(date) {
@@ -198,7 +258,7 @@ class BsCalendarMonthService {
198
258
  return Date.UTC(date.getFullYear(), date.getMonth(), date.getDate());
199
259
  }
200
260
  chunk(items, size) {
201
- let result = [];
261
+ const result = [];
202
262
  for (let i = 0; i < items.length; i += size) {
203
263
  result.push(items.slice(i, i + size));
204
264
  }
@@ -212,7 +272,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
212
272
  args: [{
213
273
  providedIn: 'root'
214
274
  }]
215
- }], ctorParameters: function () { return []; } });
275
+ }] });
216
276
 
217
277
  class UcFirstPipe {
218
278
  transform(value, ...args) {
@@ -230,7 +290,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
230
290
 
231
291
  class MonthNamePipe {
232
292
  transform(date, ...args) {
233
- return date.toLocaleString("default", { month: 'long' });
293
+ if (date) {
294
+ return date.toLocaleString("default", { month: 'long' });
295
+ }
296
+ else {
297
+ return '';
298
+ }
234
299
  }
235
300
  }
236
301
  MonthNamePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: MonthNamePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
@@ -243,58 +308,100 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
243
308
  }] });
244
309
 
245
310
  class BsCalendarComponent {
246
- constructor(calendarMonthService) {
311
+ constructor(calendarMonthService, ref) {
247
312
  this.calendarMonthService = calendarMonthService;
248
- this.daysOfWeek = ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su'];
313
+ this.ref = ref;
314
+ this.destroyed$ = new Subject();
315
+ //#region CurrentMonth
316
+ this.currentMonth$ = new BehaviorSubject(new Date());
317
+ this.currentMonthChange = new EventEmitter();
318
+ //#endregion
249
319
  //#region SelectedDate
250
- this.selectedDate = new Date();
320
+ this.selectedDate$ = new BehaviorSubject(new Date());
321
+ this.selectedDateChange = new EventEmitter();
251
322
  //#endregion
252
- //#region Weeks
253
- this._weeks = [];
323
+ this.daysOfWeek = ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su'];
324
+ this.weeks$ = this.currentMonth$
325
+ .pipe(map((month) => this.calendarMonthService.getWeeks(month)))
326
+ .pipe(takeUntil(this.destroyed$));
327
+ this.daysOfWeek$ = this.weeks$
328
+ .pipe(filter((weeks) => weeks.length > 1))
329
+ .pipe(map((weeks) => weeks[1].week))
330
+ .pipe(map((week) => {
331
+ const firstDay = week[0];
332
+ if (firstDay) {
333
+ return week.map((d) => {
334
+ const date = new Date(firstDay.date.getFullYear(), firstDay.date.getMonth(), d === null || d === void 0 ? void 0 : d.dayOfMonth);
335
+ return date.toLocaleString('default', { weekday: 'short' });
336
+ });
337
+ }
338
+ else {
339
+ return [];
340
+ }
341
+ }));
342
+ this.selectedDate$.pipe(takeUntil(this.destroyed$)).subscribe((date) => {
343
+ this.selectedDateChange.emit(date);
344
+ });
345
+ this.currentMonth$.pipe(takeUntil(this.destroyed$)).subscribe((month) => {
346
+ this.currentMonthChange.emit(month);
347
+ });
254
348
  }
255
- ngOnInit() {
256
- this.month = new Date();
349
+ get currentMonth() {
350
+ return this.currentMonth$.value;
257
351
  }
258
- get month() {
259
- return this._month;
352
+ set currentMonth(value) {
353
+ this.currentMonth$.next(value);
260
354
  }
261
- set month(value) {
262
- this._month = value;
263
- this.weeks = this.calendarMonthService.getWeeks(this.month);
355
+ get selectedDate() {
356
+ return this.selectedDate$.value;
264
357
  }
265
- get weeks() {
266
- return this._weeks;
358
+ set selectedDate(value) {
359
+ this.selectedDate$.next(value);
267
360
  }
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
- }
361
+ ngOnDestroy() {
362
+ this.destroyed$.next(true);
276
363
  }
277
- //#endregion
278
364
  previousMonth() {
279
- this.month = new Date(this.month.getFullYear(), this.month.getMonth() - 1, 1);
365
+ this.currentMonth$.pipe(take(1)).subscribe((month) => {
366
+ this.currentMonth$.next(new Date(month.getFullYear(), month.getMonth() - 1, 1));
367
+ });
280
368
  return false;
281
369
  }
282
370
  nextMonth() {
283
- this.month = new Date(this.month.getFullYear(), this.month.getMonth() + 1, 1);
371
+ this.currentMonth$.pipe(take(1)).subscribe((month) => {
372
+ this.currentMonth$.next(new Date(month.getFullYear(), month.getMonth() + 1, 1));
373
+ });
284
374
  return false;
285
375
  }
286
376
  isSameDate(date1, date2) {
287
- return (date1.getFullYear() === date2.getFullYear())
288
- && (date1.getMonth() === date2.getMonth())
289
- && (date1.getDate() === date2.getDate());
377
+ if (date1 === null && date2 === null)
378
+ return true;
379
+ if (date1 === null || date2 === null)
380
+ return false;
381
+ return (date1.getFullYear() === date2.getFullYear() &&
382
+ date1.getMonth() === date2.getMonth() &&
383
+ date1.getDate() === date2.getDate());
384
+ }
385
+ goto(day) {
386
+ if (day) {
387
+ this.selectedDate$.next(day.date);
388
+ }
290
389
  }
291
390
  }
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 } });
391
+ 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 });
392
+ 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
393
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsCalendarComponent, decorators: [{
295
394
  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 }]; } });
395
+ 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"] }]
396
+ }], ctorParameters: function () { return [{ type: BsCalendarMonthService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { currentMonthChange: [{
397
+ type: Output
398
+ }], currentMonth: [{
399
+ type: Input
400
+ }], selectedDateChange: [{
401
+ type: Output
402
+ }], selectedDate: [{
403
+ type: Input
404
+ }] } });
298
405
 
299
406
  class BsMonthNamePipeModule {
300
407
  }
@@ -407,6 +514,56 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
407
514
  }]
408
515
  }] });
409
516
 
517
+ class BsCardComponent {
518
+ constructor() {
519
+ }
520
+ ngOnInit() {
521
+ }
522
+ ngAfterViewInit() {
523
+ }
524
+ }
525
+ BsCardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
526
+ BsCardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsCardComponent, selector: "bs-card", ngImport: i0, template: "<div class=\"card\" style=\"width: 18rem;\">\n <ng-content select=\"bs-card-header\"></ng-content>\n <div class=\"card-block\">\n <ng-content></ng-content>\n </div>\n</div>", styles: [".card-block{margin:-1px}\n"] });
527
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsCardComponent, decorators: [{
528
+ type: Component,
529
+ args: [{ selector: 'bs-card', template: "<div class=\"card\" style=\"width: 18rem;\">\n <ng-content select=\"bs-card-header\"></ng-content>\n <div class=\"card-block\">\n <ng-content></ng-content>\n </div>\n</div>", styles: [".card-block{margin:-1px}\n"] }]
530
+ }], ctorParameters: function () { return []; } });
531
+
532
+ class BsCardHeaderComponent {
533
+ constructor() {
534
+ }
535
+ ngOnInit() {
536
+ }
537
+ }
538
+ BsCardHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsCardHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
539
+ BsCardHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsCardHeaderComponent, selector: "bs-card-header", ngImport: i0, template: "<div class=\"card-header\">\n <ng-content></ng-content>\n</div>", styles: [""] });
540
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsCardHeaderComponent, decorators: [{
541
+ type: Component,
542
+ args: [{ selector: 'bs-card-header', template: "<div class=\"card-header\">\n <ng-content></ng-content>\n</div>", styles: [""] }]
543
+ }], ctorParameters: function () { return []; } });
544
+
545
+ class BsCardModule {
546
+ }
547
+ BsCardModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsCardModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
548
+ BsCardModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsCardModule, declarations: [BsCardComponent,
549
+ BsCardHeaderComponent], imports: [CommonModule], exports: [BsCardComponent,
550
+ BsCardHeaderComponent] });
551
+ BsCardModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsCardModule, imports: [[CommonModule]] });
552
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsCardModule, decorators: [{
553
+ type: NgModule,
554
+ args: [{
555
+ imports: [CommonModule],
556
+ declarations: [
557
+ BsCardComponent,
558
+ BsCardHeaderComponent
559
+ ],
560
+ exports: [
561
+ BsCardComponent,
562
+ BsCardHeaderComponent
563
+ ]
564
+ }]
565
+ }] });
566
+
410
567
  class BsCarouselImageDirective {
411
568
  constructor(templateRef) {
412
569
  this.templateRef = templateRef;
@@ -424,20 +581,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
424
581
 
425
582
  class BsCarouselComponent {
426
583
  constructor() {
427
- // @HostBinding('@.disabled')
428
- // public animationsDisabled = false;
429
- this.animation = 'slide';
584
+ this.animationsDisabled = false;
585
+ //#region Animation
586
+ this._animation = 'slide';
587
+ //#endregion
430
588
  this.destroyed$ = new Subject();
431
589
  this.currentImageCounter$ = new BehaviorSubject(-1);
432
590
  this.currentImageIndex$ = this.currentImageCounter$
433
- .pipe(map((counter) => {
591
+ .pipe(map$1((counter) => {
434
592
  const l = this.images.length;
435
593
  return ((counter % l) + l) % l;
436
594
  }))
437
- .pipe(takeUntil(this.destroyed$));
595
+ .pipe(takeUntil$1(this.destroyed$));
438
596
  this.currentImage$ = this.currentImageIndex$
439
- .pipe(map((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; }))
440
- .pipe(takeUntil(this.destroyed$));
597
+ .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; }))
598
+ .pipe(takeUntil$1(this.destroyed$));
441
599
  }
442
600
  ngOnInit() { }
443
601
  ngOnDestroy() {
@@ -451,16 +609,26 @@ class BsCarouselComponent {
451
609
  this.currentImageCounter$.next(-1);
452
610
  }
453
611
  }
612
+ set animation(value) {
613
+ this.animationsDisabled = true;
614
+ this._animation = value;
615
+ setTimeout(() => {
616
+ this.animationsDisabled = false;
617
+ }, 20);
618
+ }
619
+ get animation() {
620
+ return this._animation;
621
+ }
454
622
  previousImage() {
455
623
  this.currentImageCounter$
456
- .pipe(take(1))
624
+ .pipe(take$1(1))
457
625
  .subscribe((currentImageCounter) => {
458
626
  this.currentImageCounter$.next(currentImageCounter - 1);
459
627
  });
460
628
  }
461
629
  nextImage() {
462
630
  this.currentImageCounter$
463
- .pipe(take(1))
631
+ .pipe(take$1(1))
464
632
  .subscribe((currentImageCounter) => {
465
633
  this.currentImageCounter$.next(currentImageCounter + 1);
466
634
  });
@@ -474,11 +642,14 @@ class BsCarouselComponent {
474
642
  }
475
643
  }
476
644
  BsCarouselComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsCarouselComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
477
- 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\"\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 <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\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] });
645
+ BsCarouselComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsCarouselComponent, selector: "bs-carousel", inputs: { animation: "animation" }, host: { properties: { "@.disabled": "this.animationsDisabled" } }, 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] });
478
646
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsCarouselComponent, decorators: [{
479
647
  type: Component,
480
- 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\"\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 <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\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"] }]
481
- }], ctorParameters: function () { return []; }, propDecorators: { animation: [{
648
+ 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"] }]
649
+ }], ctorParameters: function () { return []; }, propDecorators: { animationsDisabled: [{
650
+ type: HostBinding,
651
+ args: ['@.disabled']
652
+ }], animation: [{
482
653
  type: Input
483
654
  }], images: [{
484
655
  type: ContentChildren,
@@ -511,34 +682,652 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
511
682
  }]
512
683
  }] });
513
684
 
514
- class BsListGroupItemComponent {
515
- constructor() {
516
- }
517
- ngOnInit() {
685
+ class BsContextMenuDirective {
686
+ constructor(overlay, templateRef, viewContainerRef, element) {
687
+ this.overlay = overlay;
688
+ this.templateRef = templateRef;
689
+ this.viewContainerRef = viewContainerRef;
690
+ this.element = element;
691
+ this.overlayRef = null;
692
+ this.templatePortal = null;
693
+ this.element.nativeElement.oncontextmenu = (ev) => {
694
+ ev.preventDefault();
695
+ this.checkAndCloseExisting(ev);
696
+ this.overlayRef = this.overlay.create({
697
+ scrollStrategy: this.overlay.scrollStrategies.noop(),
698
+ positionStrategy: this.overlay.position()
699
+ .global()
700
+ .left(ev.x + 'px')
701
+ .bottom((window.innerHeight - ev.y) + 'px')
702
+ .top(ev.y + 'px')
703
+ });
704
+ this.templatePortal = new TemplatePortal(this.templateRef, this.viewContainerRef);
705
+ this.overlayRef.attach(this.templatePortal);
706
+ };
518
707
  }
519
- }
520
- BsListGroupItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsListGroupItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
521
- BsListGroupItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsListGroupItemComponent, selector: "bs-list-group-item", ngImport: i0, template: "<li class=\"list-group-item\">\n <ng-content></ng-content>\n</li>", styles: [".list-group-item{margin-bottom:-1px}\n"] });
522
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsListGroupItemComponent, decorators: [{
523
- type: Component,
524
- args: [{ selector: 'bs-list-group-item', template: "<li class=\"list-group-item\">\n <ng-content></ng-content>\n</li>", styles: [".list-group-item{margin-bottom:-1px}\n"] }]
525
- }], ctorParameters: function () { return []; } });
526
-
527
- class BsListGroupComponent {
528
- constructor() {
708
+ clickAnywhere(ev) {
709
+ this.checkAndCloseExisting(ev);
529
710
  }
530
- ngOnInit() {
711
+ checkAndCloseExisting(ev) {
712
+ if (this.overlayRef) {
713
+ if (!this.overlayRef.overlayElement.contains(ev.target)) {
714
+ this.overlayRef.detach();
715
+ this.overlayRef.dispose();
716
+ this.overlayRef = null;
717
+ }
718
+ }
531
719
  }
532
720
  }
533
- BsListGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsListGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
534
- BsListGroupComponentcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsListGroupComponent, selector: "bs-list-group", queries: [{ propertyName: "items", predicate: BsListGroupItemComponent }], ngImport: i0, template: "<ul class=\"list-group mt-0\">\n <ng-content></ng-content>\n</ul>", styles: [""] });
535
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsListGroupComponent, decorators: [{
536
- type: Component,
537
- args: [{ selector: 'bs-list-group', template: "<ul class=\"list-group mt-0\">\n <ng-content></ng-content>\n</ul>", styles: [""] }]
538
- }], ctorParameters: function () { return []; }, propDecorators: { items: [{
539
- type: ContentChildren,
540
- args: [BsListGroupItemComponent]
541
- }] } });
721
+ BsContextMenuDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsContextMenuDirective, deps: [{ token: i1$1.Overlay }, { token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: i0.ElementRef, host: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Directive });
722
+ BsContextMenuDirectivedir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: BsContextMenuDirective, selector: "[bsContextMenu]", host: { listeners: { "document:click": "clickAnywhere($event)" } }, ngImport: i0 });
723
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsContextMenuDirective, decorators: [{
724
+ type: Directive,
725
+ args: [{
726
+ selector: '[bsContextMenu]'
727
+ }]
728
+ }], ctorParameters: function () {
729
+ return [{ type: i1$1.Overlay }, { type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: i0.ElementRef, decorators: [{
730
+ type: Host
731
+ }, {
732
+ type: SkipSelf
733
+ }] }];
734
+ }, propDecorators: { clickAnywhere: [{
735
+ type: HostListener,
736
+ args: ['document:click', ['$event']]
737
+ }] } });
738
+
739
+ class BsContextMenuModule {
740
+ }
741
+ BsContextMenuModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsContextMenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
742
+ BsContextMenuModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsContextMenuModule, declarations: [BsContextMenuDirective], imports: [CommonModule], exports: [BsContextMenuDirective] });
743
+ BsContextMenuModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsContextMenuModule, imports: [[
744
+ CommonModule
745
+ ]] });
746
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsContextMenuModule, decorators: [{
747
+ type: NgModule,
748
+ args: [{
749
+ declarations: [
750
+ BsContextMenuDirective
751
+ ],
752
+ imports: [
753
+ CommonModule
754
+ ],
755
+ exports: [
756
+ BsContextMenuDirective
757
+ ]
758
+ }]
759
+ }] });
760
+
761
+ class BsDatatableColumnDirective {
762
+ constructor(templateRef) {
763
+ this.bsDatatableColumn = { name: '', sortable: true };
764
+ this.templateRef = templateRef;
765
+ }
766
+ }
767
+ BsDatatableColumnDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDatatableColumnDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
768
+ BsDatatableColumnDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: BsDatatableColumnDirective, selector: "[bsDatatableColumn]", inputs: { bsDatatableColumn: "bsDatatableColumn" }, ngImport: i0 });
769
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDatatableColumnDirective, decorators: [{
770
+ type: Directive,
771
+ args: [{
772
+ selector: '[bsDatatableColumn]'
773
+ }]
774
+ }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; }, propDecorators: { bsDatatableColumn: [{
775
+ type: Input
776
+ }] } });
777
+
778
+ class DatatableSettings {
779
+ constructor(data) {
780
+ this.sortProperty = '';
781
+ this.sortDirection = 'ascending';
782
+ Object.assign(this, data);
783
+ if (data && data.perPage) {
784
+ this.perPage = data.perPage;
785
+ }
786
+ else {
787
+ // Set default value
788
+ this.perPage = {
789
+ values: [10, 20, 50],
790
+ selected: 20
791
+ };
792
+ }
793
+ if (data && data.page) {
794
+ this.page = data.page;
795
+ }
796
+ else {
797
+ // Set default value
798
+ this.page = {
799
+ values: [1],
800
+ selected: 1
801
+ };
802
+ }
803
+ }
804
+ toPagination() {
805
+ const res = {
806
+ sortProperty: this.sortProperty,
807
+ sortDirection: this.sortDirection,
808
+ perPage: this.perPage.selected,
809
+ page: this.page.selected
810
+ };
811
+ return res;
812
+ }
813
+ }
814
+
815
+ class BsPaginationComponent {
816
+ constructor() {
817
+ /** All page numbers. */
818
+ this.pageNumbers$ = new BehaviorSubject([]);
819
+ /** Selected number. */
820
+ this.selectedPageNumber$ = new BehaviorSubject(1);
821
+ /** Number of boxes. */
822
+ this.numberOfBoxes$ = new BehaviorSubject(0);
823
+ /** Display previous/next arrows. */
824
+ this.showArrows$ = new BehaviorSubject(true);
825
+ /** Indicates if first value is selected. */
826
+ this.isFirstPage$ = new Observable();
827
+ /** Indicates if last value is selected. */
828
+ this.isLastPage$ = new Observable();
829
+ /** The number of boxes (excluding arrows) that's being shown on the pagination component. */
830
+ this.visibleNumberOfNumberBoxes$ = new Observable();
831
+ this._selectedPageNumber = 0;
832
+ this.selectedPageNumberChange = new EventEmitter();
833
+ this._numberOfBoxes = 0;
834
+ this._pageNumbers = [];
835
+ this._showArrows = true;
836
+ this.destroyed$ = new Subject();
837
+ this.visibleNumberOfNumberBoxes$ =
838
+ combineLatest([this.numberOfBoxes$, this.pageNumbers$, this.showArrows$])
839
+ .pipe(takeUntil(this.destroyed$))
840
+ .pipe(map(([numberOfBoxes, pageNumbers, showArrows]) => {
841
+ if (numberOfBoxes <= 0) {
842
+ return pageNumbers.length;
843
+ }
844
+ else if (!showArrows) {
845
+ return Math.min(numberOfBoxes, pageNumbers.length);
846
+ }
847
+ else if (numberOfBoxes <= 2) {
848
+ return Math.min(1, pageNumbers.length);
849
+ }
850
+ else {
851
+ return Math.min(numberOfBoxes - 2, pageNumbers.length);
852
+ }
853
+ }));
854
+ this.shownPageNumbers$ =
855
+ combineLatest([this.pageNumbers$, this.selectedPageNumber$, this.visibleNumberOfNumberBoxes$])
856
+ .pipe(takeUntil(this.destroyed$))
857
+ .pipe(map(([pageNumbers, selectedPageNumber, visibleNumberOfNumberBoxes]) => {
858
+ let startIndex = 0;
859
+ const half = Math.round((visibleNumberOfNumberBoxes - 1) / 2);
860
+ if (pageNumbers.indexOf(selectedPageNumber) < half) {
861
+ startIndex = 0;
862
+ }
863
+ else if (pageNumbers.indexOf(selectedPageNumber) >= (pageNumbers.length - half)) {
864
+ startIndex = pageNumbers.length - visibleNumberOfNumberBoxes;
865
+ }
866
+ else {
867
+ startIndex = pageNumbers.indexOf(selectedPageNumber) - half;
868
+ }
869
+ return [...Array(visibleNumberOfNumberBoxes).keys()]
870
+ .map(p => p + startIndex)
871
+ .map(p => ({
872
+ page: pageNumbers[p],
873
+ selected: pageNumbers[p] === selectedPageNumber
874
+ }));
875
+ }));
876
+ this.isFirstPage$ =
877
+ combineLatest([this.pageNumbers$, this.selectedPageNumber$])
878
+ .pipe(takeUntil(this.destroyed$))
879
+ .pipe(map(([pageNumbers, selectedPageNumber]) => {
880
+ return pageNumbers.indexOf(selectedPageNumber) === 0;
881
+ }));
882
+ this.isLastPage$ =
883
+ combineLatest([this.pageNumbers$, this.selectedPageNumber$])
884
+ .pipe(takeUntil(this.destroyed$))
885
+ .pipe(map(([pageNumbers, selectedPageNumber]) => {
886
+ return pageNumbers.indexOf(selectedPageNumber) === (pageNumbers.length - 1);
887
+ }));
888
+ this.selectedPageNumber$
889
+ .pipe(takeUntil(this.destroyed$))
890
+ .subscribe((selectedPageNumber) => {
891
+ this.selectedPageNumberChange.emit(selectedPageNumber);
892
+ });
893
+ }
894
+ ngOnInit() {
895
+ }
896
+ ngOnDestroy() {
897
+ this.destroyed$.next(true);
898
+ }
899
+ onSelectPage(event, page) {
900
+ this.selectedPageNumber$.next(page);
901
+ return false;
902
+ }
903
+ onPrevious() {
904
+ this.selectedPageNumber$.next(this.selectedPageNumber$.value - 1);
905
+ return false;
906
+ }
907
+ onNext() {
908
+ this.selectedPageNumber$.next(this.selectedPageNumber$.value + 1);
909
+ return false;
910
+ }
911
+ set selectedPageNumber(value) {
912
+ this._selectedPageNumber = value;
913
+ this.selectedPageNumber$.next(value);
914
+ }
915
+ get selectedPageNumber() {
916
+ return this._selectedPageNumber;
917
+ }
918
+ set numberOfBoxes(value) {
919
+ this._numberOfBoxes = value;
920
+ this.numberOfBoxes$.next(value);
921
+ }
922
+ get numberOfBoxes() {
923
+ return this._numberOfBoxes;
924
+ }
925
+ set pageNumbers(value) {
926
+ this._pageNumbers = value;
927
+ this.pageNumbers$.next(value);
928
+ }
929
+ get pageNumbers() {
930
+ return this._pageNumbers;
931
+ }
932
+ set showArrows(value) {
933
+ this._showArrows = value;
934
+ this.showArrows$.next(value);
935
+ }
936
+ get showArrows() {
937
+ return this._showArrows;
938
+ }
939
+ }
940
+ BsPaginationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsPaginationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
941
+ 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 } });
942
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsPaginationComponent, decorators: [{
943
+ type: Component,
944
+ 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"] }]
945
+ }], ctorParameters: function () { return []; }, propDecorators: { selectedPageNumberChange: [{
946
+ type: Output
947
+ }], selectedPageNumber: [{
948
+ type: Input
949
+ }], numberOfBoxes: [{
950
+ type: Input
951
+ }], pageNumbers: [{
952
+ type: Input
953
+ }], showArrows: [{
954
+ type: Input
955
+ }] } });
956
+
957
+ class BsDatatableComponent {
958
+ constructor() {
959
+ this.columns = [];
960
+ this.onReloadData = new EventEmitter();
961
+ this.settings = new DatatableSettings();
962
+ this.settings.sortProperty = '';
963
+ this.settings.sortDirection = 'ascending';
964
+ this.settings.perPage = { values: [10, 20, 50], selected: 20 };
965
+ this.settings.page = { values: [1], selected: 1 };
966
+ }
967
+ columnHeaderClicked(column) {
968
+ if (column.bsDatatableColumn.sortable) {
969
+ if (this.settings.sortProperty !== column.bsDatatableColumn.name) {
970
+ this.settings.sortProperty = column.bsDatatableColumn.name;
971
+ this.settings.sortDirection = 'ascending';
972
+ }
973
+ else if (this.settings.sortDirection === 'descending') {
974
+ this.settings.sortDirection = 'ascending';
975
+ }
976
+ else {
977
+ this.settings.sortDirection = 'descending';
978
+ }
979
+ this.onReloadData.emit();
980
+ }
981
+ }
982
+ ngOnInit() {
983
+ }
984
+ }
985
+ BsDatatableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDatatableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
986
+ 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"] }] });
987
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDatatableComponent, decorators: [{
988
+ type: Component,
989
+ 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"] }]
990
+ }], ctorParameters: function () { return []; }, propDecorators: { columns: [{
991
+ type: ContentChildren,
992
+ args: [BsDatatableColumnDirective]
993
+ }], settings: [{
994
+ type: Input
995
+ }], data: [{
996
+ type: Input
997
+ }], onReloadData: [{
998
+ type: Output
999
+ }] } });
1000
+
1001
+ class BsRowTemplateDirective {
1002
+ constructor(datatableComponent, templateRef) {
1003
+ this.datatableComponent = datatableComponent;
1004
+ this.datatableComponent.rowTemplate = templateRef;
1005
+ }
1006
+ }
1007
+ 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 });
1008
+ BsRowTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: BsRowTemplateDirective, selector: "[rowTemplate]", ngImport: i0 });
1009
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsRowTemplateDirective, decorators: [{
1010
+ type: Directive,
1011
+ args: [{
1012
+ selector: '[rowTemplate]'
1013
+ }]
1014
+ }], ctorParameters: function () { return [{ type: BsDatatableComponent }, { type: i0.TemplateRef }]; } });
1015
+
1016
+ class BsPaginationModule {
1017
+ }
1018
+ BsPaginationModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsPaginationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1019
+ BsPaginationModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsPaginationModule, declarations: [BsPaginationComponent], imports: [CommonModule], exports: [BsPaginationComponent] });
1020
+ BsPaginationModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsPaginationModule, imports: [[
1021
+ CommonModule
1022
+ ]] });
1023
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsPaginationModule, decorators: [{
1024
+ type: NgModule,
1025
+ args: [{
1026
+ declarations: [
1027
+ BsPaginationComponent
1028
+ ],
1029
+ imports: [
1030
+ CommonModule
1031
+ ],
1032
+ exports: [
1033
+ BsPaginationComponent
1034
+ ]
1035
+ }]
1036
+ }] });
1037
+
1038
+ class BsDatatableModule {
1039
+ }
1040
+ BsDatatableModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDatatableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1041
+ BsDatatableModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDatatableModule, declarations: [BsDatatableComponent,
1042
+ BsRowTemplateDirective,
1043
+ BsDatatableColumnDirective], imports: [CommonModule,
1044
+ BsPaginationModule], exports: [BsDatatableComponent,
1045
+ BsRowTemplateDirective,
1046
+ BsDatatableColumnDirective] });
1047
+ BsDatatableModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDatatableModule, imports: [[
1048
+ CommonModule,
1049
+ BsPaginationModule
1050
+ ]] });
1051
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDatatableModule, decorators: [{
1052
+ type: NgModule,
1053
+ args: [{
1054
+ declarations: [
1055
+ BsDatatableComponent,
1056
+ BsRowTemplateDirective,
1057
+ BsDatatableColumnDirective
1058
+ ],
1059
+ imports: [
1060
+ CommonModule,
1061
+ BsPaginationModule
1062
+ ],
1063
+ exports: [
1064
+ BsDatatableComponent,
1065
+ BsRowTemplateDirective,
1066
+ BsDatatableColumnDirective
1067
+ ]
1068
+ }]
1069
+ }] });
1070
+
1071
+ class BsDropdownMenuDirective extends ClickOutsideDirective {
1072
+ constructor(dropdown, document, viewContainerRef, templateRef, overlay, elementRef, zone, platformId) {
1073
+ super(elementRef, zone, platformId);
1074
+ this.dropdown = dropdown;
1075
+ this.viewContainerRef = viewContainerRef;
1076
+ this.templateRef = templateRef;
1077
+ this.overlay = overlay;
1078
+ this.wait = false;
1079
+ this.destroyed$ = new Subject();
1080
+ this.overlayRef = null;
1081
+ this.templatePortal = null;
1082
+ this.document = document;
1083
+ this.dropdown.isOpen$
1084
+ .pipe(takeUntil(this.destroyed$))
1085
+ .subscribe((isOpen) => {
1086
+ if (isOpen) {
1087
+ this.wait = true;
1088
+ setTimeout(() => this.wait = false, 100);
1089
+ this.overlayRef = this.overlay.create({
1090
+ hasBackdrop: this.dropdown.hasBackdrop,
1091
+ scrollStrategy: this.overlay.scrollStrategies.reposition(),
1092
+ positionStrategy: this.overlay.position()
1093
+ .flexibleConnectedTo(!this.dropdown.toggle ? dropdown.elementRef : this.dropdown.toggle.toggleButton)
1094
+ .withPositions([
1095
+ { originX: "start", originY: "bottom", overlayX: "start", overlayY: "top", offsetY: 0 },
1096
+ { originX: "start", originY: "top", overlayX: "start", overlayY: "bottom", offsetY: 0 },
1097
+ ]),
1098
+ });
1099
+ if (this.dropdown.hasBackdrop && this.dropdown.closeOnClickOutside) {
1100
+ this.overlayRef.backdropClick().subscribe(() => {
1101
+ this.dropdown.isOpen = false;
1102
+ });
1103
+ }
1104
+ this.templatePortal = new TemplatePortal(this.templateRef, this.viewContainerRef);
1105
+ this.overlayRef.attach(this.templatePortal);
1106
+ }
1107
+ else {
1108
+ if (this.overlayRef) {
1109
+ this.overlayRef.detach();
1110
+ this.overlayRef.dispose();
1111
+ this.overlayRef = null;
1112
+ }
1113
+ }
1114
+ });
1115
+ }
1116
+ clickedOutside(ev) {
1117
+ var _a;
1118
+ if (!this.wait) {
1119
+ if (!((_a = this.overlayRef) === null || _a === void 0 ? void 0 : _a.overlayElement.contains(ev.target))) {
1120
+ this.dropdown.isOpen$.pipe(take(1)).subscribe((isOpen) => {
1121
+ if (isOpen && !this.dropdown.hasBackdrop && this.dropdown.closeOnClickOutside) {
1122
+ this.dropdown.isOpen = false;
1123
+ }
1124
+ });
1125
+ }
1126
+ }
1127
+ }
1128
+ }
1129
+ 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$1.Overlay }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Directive });
1130
+ BsDropdownMenuDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: BsDropdownMenuDirective, selector: "[bsDropdownMenu]", host: { listeners: { "clickOutside": "clickedOutside($event)" }, properties: { "class.show": "dropdown.isOpen" } }, usesInheritance: true, ngImport: i0 });
1131
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDropdownMenuDirective, decorators: [{
1132
+ type: Directive,
1133
+ args: [{
1134
+ selector: '[bsDropdownMenu]',
1135
+ host: {
1136
+ '[class.show]': 'dropdown.isOpen',
1137
+ },
1138
+ }]
1139
+ }], ctorParameters: function () {
1140
+ return [{ type: BsDropdownDirective, decorators: [{
1141
+ type: Inject,
1142
+ args: [forwardRef(() => BsDropdownDirective)]
1143
+ }] }, { type: undefined, decorators: [{
1144
+ type: Inject,
1145
+ args: [DOCUMENT]
1146
+ }] }, { type: i0.ViewContainerRef }, { type: i0.TemplateRef }, { type: i1$1.Overlay }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: Object, decorators: [{
1147
+ type: Inject,
1148
+ args: [PLATFORM_ID]
1149
+ }] }];
1150
+ }, propDecorators: { clickedOutside: [{
1151
+ type: HostListener,
1152
+ args: ['clickOutside', ['$event']]
1153
+ }] } });
1154
+
1155
+ class BsDropdownToggleDirective {
1156
+ constructor(dropdown, toggleButton) {
1157
+ this.dropdown = dropdown;
1158
+ this.toggleButton = toggleButton;
1159
+ }
1160
+ onClick() {
1161
+ this.dropdown.isOpen$.pipe(take(1)).subscribe((isOpen) => {
1162
+ this.dropdown.isOpen$.next(!isOpen);
1163
+ });
1164
+ }
1165
+ }
1166
+ 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 });
1167
+ BsDropdownToggleDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: BsDropdownToggleDirective, selector: "[bsDropdownToggle]", host: { listeners: { "click": "onClick()" } }, ngImport: i0 });
1168
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDropdownToggleDirective, decorators: [{
1169
+ type: Directive,
1170
+ args: [{
1171
+ selector: '[bsDropdownToggle]'
1172
+ }]
1173
+ }], ctorParameters: function () { return [{ type: BsDropdownDirective }, { type: i0.ElementRef }]; }, propDecorators: { onClick: [{
1174
+ type: HostListener,
1175
+ args: ['click']
1176
+ }] } });
1177
+
1178
+ class BsDropdownDirective {
1179
+ constructor(elementRef) {
1180
+ this.isOpen$ = new BehaviorSubject(false);
1181
+ this.toggle = null;
1182
+ this.hasBackdrop = false;
1183
+ this.sameWidth = false;
1184
+ this.closeOnClickOutside = false;
1185
+ this.isOpenChange = new EventEmitter();
1186
+ this.elementRef = elementRef;
1187
+ }
1188
+ //#region IsOpen
1189
+ get isOpen() {
1190
+ return this.isOpen$.value;
1191
+ }
1192
+ set isOpen(value) {
1193
+ if (this.isOpen$.value !== value) {
1194
+ this.isOpen$.next(value);
1195
+ this.isOpenChange.emit(value);
1196
+ }
1197
+ }
1198
+ }
1199
+ BsDropdownDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDropdownDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
1200
+ BsDropdownDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: BsDropdownDirective, selector: "[bsDropdown]", inputs: { hasBackdrop: "hasBackdrop", sameWidth: "sameWidth", closeOnClickOutside: "closeOnClickOutside", isOpen: "isOpen" }, outputs: { isOpenChange: "isOpenChange" }, queries: [{ propertyName: "menu", first: true, predicate: BsDropdownMenuDirective, descendants: true }, { propertyName: "toggle", first: true, predicate: BsDropdownToggleDirective, descendants: true }], ngImport: i0 });
1201
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDropdownDirective, decorators: [{
1202
+ type: Directive,
1203
+ args: [{
1204
+ selector: '[bsDropdown]'
1205
+ }]
1206
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { menu: [{
1207
+ type: ContentChild,
1208
+ args: [BsDropdownMenuDirective, { static: false }]
1209
+ }], toggle: [{
1210
+ type: ContentChild,
1211
+ args: [BsDropdownToggleDirective, { static: false }]
1212
+ }], hasBackdrop: [{
1213
+ type: Input
1214
+ }], sameWidth: [{
1215
+ type: Input
1216
+ }], closeOnClickOutside: [{
1217
+ type: Input
1218
+ }], isOpenChange: [{
1219
+ type: Output
1220
+ }], isOpen: [{
1221
+ type: Input
1222
+ }] } });
1223
+
1224
+ class BsDatepickerComponent {
1225
+ constructor() {
1226
+ this.selectedDate = new Date();
1227
+ this.currentMonth = new Date();
1228
+ }
1229
+ ngOnInit() {
1230
+ }
1231
+ }
1232
+ BsDatepickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDatepickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1233
+ 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", "sameWidth", "closeOnClickOutside", "isOpen"], outputs: ["isOpenChange"] }, { type: BsDropdownToggleDirective, selector: "[bsDropdownToggle]" }, { type: BsDropdownMenuDirective, selector: "[bsDropdownMenu]" }], pipes: { "date": i1.DatePipe } });
1234
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDatepickerComponent, decorators: [{
1235
+ type: Component,
1236
+ 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: [""] }]
1237
+ }], ctorParameters: function () { return []; } });
1238
+
1239
+ class BsDropdownModule {
1240
+ }
1241
+ BsDropdownModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDropdownModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1242
+ BsDropdownModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDropdownModule, declarations: [BsDropdownDirective,
1243
+ BsDropdownToggleDirective,
1244
+ BsDropdownMenuDirective], imports: [CommonModule,
1245
+ OverlayModule,
1246
+ ClickOutsideModule], exports: [BsDropdownDirective,
1247
+ BsDropdownToggleDirective,
1248
+ BsDropdownMenuDirective] });
1249
+ BsDropdownModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDropdownModule, imports: [[
1250
+ CommonModule,
1251
+ OverlayModule,
1252
+ ClickOutsideModule
1253
+ ]] });
1254
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDropdownModule, decorators: [{
1255
+ type: NgModule,
1256
+ args: [{
1257
+ declarations: [
1258
+ BsDropdownDirective,
1259
+ BsDropdownToggleDirective,
1260
+ BsDropdownMenuDirective
1261
+ ],
1262
+ imports: [
1263
+ CommonModule,
1264
+ OverlayModule,
1265
+ ClickOutsideModule
1266
+ ],
1267
+ exports: [
1268
+ BsDropdownDirective,
1269
+ BsDropdownToggleDirective,
1270
+ BsDropdownMenuDirective
1271
+ ]
1272
+ }]
1273
+ }] });
1274
+
1275
+ class BsDatepickerModule {
1276
+ }
1277
+ BsDatepickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDatepickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1278
+ BsDatepickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDatepickerModule, declarations: [BsDatepickerComponent], imports: [CommonModule,
1279
+ BsCalendarModule,
1280
+ BsDropdownModule], exports: [BsDatepickerComponent] });
1281
+ BsDatepickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDatepickerModule, imports: [[
1282
+ CommonModule,
1283
+ BsCalendarModule,
1284
+ BsDropdownModule
1285
+ ]] });
1286
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDatepickerModule, decorators: [{
1287
+ type: NgModule,
1288
+ args: [{
1289
+ declarations: [
1290
+ BsDatepickerComponent
1291
+ ],
1292
+ imports: [
1293
+ CommonModule,
1294
+ BsCalendarModule,
1295
+ BsDropdownModule
1296
+ ],
1297
+ exports: [
1298
+ BsDatepickerComponent
1299
+ ]
1300
+ }]
1301
+ }] });
1302
+
1303
+ class BsListGroupItemComponent {
1304
+ constructor() {
1305
+ }
1306
+ ngOnInit() {
1307
+ }
1308
+ }
1309
+ BsListGroupItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsListGroupItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1310
+ BsListGroupItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsListGroupItemComponent, selector: "bs-list-group-item", ngImport: i0, template: "<li class=\"list-group-item\">\n <ng-content></ng-content>\n</li>", styles: [".list-group-item{margin-bottom:-1px}\n"] });
1311
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsListGroupItemComponent, decorators: [{
1312
+ type: Component,
1313
+ args: [{ selector: 'bs-list-group-item', template: "<li class=\"list-group-item\">\n <ng-content></ng-content>\n</li>", styles: [".list-group-item{margin-bottom:-1px}\n"] }]
1314
+ }], ctorParameters: function () { return []; } });
1315
+
1316
+ class BsListGroupComponent {
1317
+ constructor() {
1318
+ }
1319
+ ngOnInit() {
1320
+ }
1321
+ }
1322
+ BsListGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsListGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1323
+ BsListGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsListGroupComponent, selector: "bs-list-group", queries: [{ propertyName: "items", predicate: BsListGroupItemComponent }], ngImport: i0, template: "<ul class=\"list-group mt-0\">\n <ng-content></ng-content>\n</ul>", styles: [""] });
1324
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsListGroupComponent, decorators: [{
1325
+ type: Component,
1326
+ args: [{ selector: 'bs-list-group', template: "<ul class=\"list-group mt-0\">\n <ng-content></ng-content>\n</ul>", styles: [""] }]
1327
+ }], ctorParameters: function () { return []; }, propDecorators: { items: [{
1328
+ type: ContentChildren,
1329
+ args: [BsListGroupItemComponent]
1330
+ }] } });
542
1331
 
543
1332
  class BsListGroupModule {
544
1333
  }
@@ -562,6 +1351,64 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
562
1351
  }]
563
1352
  }] });
564
1353
 
1354
+ class BsMultiselectComponent {
1355
+ constructor() {
1356
+ this.items = [];
1357
+ this.selectedItems = [];
1358
+ }
1359
+ itemChange(item, event) {
1360
+ if (!!event.target.checked) {
1361
+ this.selectedItems.push(item);
1362
+ }
1363
+ else {
1364
+ this.selectedItems.splice(this.selectedItems.findIndex((i) => i === item), 1);
1365
+ }
1366
+ }
1367
+ ngOnInit() {
1368
+ }
1369
+ }
1370
+ BsMultiselectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsMultiselectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1371
+ BsMultiselectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsMultiselectComponent, selector: "bs-multiselect", inputs: { items: "items", selectedItems: "selectedItems" }, queries: [{ propertyName: "template", first: true, predicate: TemplateRef, descendants: true }], 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 mw-250px p-3 border rounded shadow\">\n <ng-container *ngTemplateOutlet=\"template\"></ng-container>\n <hr class=\"my-2\">\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: [".mw-250px{min-width:250px}\n"], directives: [{ type: BsDropdownDirective, selector: "[bsDropdown]", inputs: ["hasBackdrop", "sameWidth", "closeOnClickOutside", "isOpen"], outputs: ["isOpenChange"] }, { type: BsDropdownToggleDirective, selector: "[bsDropdownToggle]" }, { type: BsDropdownMenuDirective, selector: "[bsDropdownMenu]" }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
1372
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsMultiselectComponent, decorators: [{
1373
+ type: Component,
1374
+ 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 mw-250px p-3 border rounded shadow\">\n <ng-container *ngTemplateOutlet=\"template\"></ng-container>\n <hr class=\"my-2\">\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: [".mw-250px{min-width:250px}\n"] }]
1375
+ }], ctorParameters: function () { return []; }, propDecorators: { template: [{
1376
+ type: ContentChild,
1377
+ args: [TemplateRef]
1378
+ }], items: [{
1379
+ type: Input
1380
+ }], selectedItems: [{
1381
+ type: Input
1382
+ }] } });
1383
+
1384
+ class BsMultiselectModule {
1385
+ }
1386
+ BsMultiselectModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsMultiselectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1387
+ BsMultiselectModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsMultiselectModule, declarations: [BsMultiselectComponent], imports: [CommonModule,
1388
+ BsDropdownModule,
1389
+ FocusOnLoadModule], exports: [BsMultiselectComponent] });
1390
+ BsMultiselectModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsMultiselectModule, imports: [[
1391
+ CommonModule,
1392
+ BsDropdownModule,
1393
+ FocusOnLoadModule,
1394
+ ]] });
1395
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsMultiselectModule, decorators: [{
1396
+ type: NgModule,
1397
+ args: [{
1398
+ declarations: [
1399
+ BsMultiselectComponent
1400
+ ],
1401
+ imports: [
1402
+ CommonModule,
1403
+ BsDropdownModule,
1404
+ FocusOnLoadModule,
1405
+ ],
1406
+ exports: [
1407
+ BsMultiselectComponent
1408
+ ]
1409
+ }]
1410
+ }] });
1411
+
565
1412
  class BsNavbarComponent {
566
1413
  constructor() {
567
1414
  this.isExpanded = false;
@@ -596,10 +1443,10 @@ class BsNavbarNavComponent {
596
1443
  }
597
1444
  }
598
1445
  BsNavbarNavComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsNavbarNavComponent, deps: [{ token: BsNavbarComponent }], target: i0.ɵɵFactoryTarget.Component });
599
- BsNavbarNavComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsNavbarNavComponent, selector: "bs-navbar-nav", inputs: { collapse: "collapse" }, ngImport: i0, template: "<div class=\"navbar-collapse collapse w-100 show\" [@slideUpDown]=\"bsNavbar.isExpanded ? 'down' : 'up'\">\n <ul class=\"navbar-nav mr-auto\">\n <ng-content></ng-content>\n </ul>\n</div>", styles: [":host{margin-right:auto}@media screen and (max-width: 767px){:host{width:100%!important}.navbar-collapse.collapse{overflow:hidden}}\n"], animations: [SlideUpDownAnimation] });
1446
+ BsNavbarNavComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsNavbarNavComponent, selector: "bs-navbar-nav", inputs: { collapse: "collapse" }, ngImport: i0, template: "<div class=\"navbar-collapse collapse w-100 show\" *ngIf=\"bsNavbar.isExpanded\" [@slideUpDown]>\n <ul class=\"navbar-nav mr-auto\">\n <ng-content></ng-content>\n </ul>\n</div>", styles: [":host{margin-right:auto}@media screen and (max-width: 767px){:host{width:100%!important}.navbar-collapse.collapse{overflow:hidden}}\n"], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], animations: [SlideUpDownAnimation] });
600
1447
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsNavbarNavComponent, decorators: [{
601
1448
  type: Component,
602
- args: [{ selector: 'bs-navbar-nav', animations: [SlideUpDownAnimation], template: "<div class=\"navbar-collapse collapse w-100 show\" [@slideUpDown]=\"bsNavbar.isExpanded ? 'down' : 'up'\">\n <ul class=\"navbar-nav mr-auto\">\n <ng-content></ng-content>\n </ul>\n</div>", styles: [":host{margin-right:auto}@media screen and (max-width: 767px){:host{width:100%!important}.navbar-collapse.collapse{overflow:hidden}}\n"] }]
1449
+ args: [{ selector: 'bs-navbar-nav', animations: [SlideUpDownAnimation], template: "<div class=\"navbar-collapse collapse w-100 show\" *ngIf=\"bsNavbar.isExpanded\" [@slideUpDown]>\n <ul class=\"navbar-nav mr-auto\">\n <ng-content></ng-content>\n </ul>\n</div>", styles: [":host{margin-right:auto}@media screen and (max-width: 767px){:host{width:100%!important}.navbar-collapse.collapse{overflow:hidden}}\n"] }]
603
1450
  }], ctorParameters: function () { return [{ type: BsNavbarComponent }]; }, propDecorators: { collapse: [{
604
1451
  type: Input
605
1452
  }] } });
@@ -662,7 +1509,7 @@ class BsNavbarDropdownComponent {
662
1509
  }
663
1510
  }
664
1511
  BsNavbarDropdownComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsNavbarDropdownComponent, deps: [{ token: BsNavbarDropdownComponent, host: true, optional: true, skipSelf: true }, { token: forwardRef(() => BsNavbarItemComponent), host: true }], target: i0.ɵɵFactoryTarget.Component });
665
- BsNavbarDropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsNavbarDropdownComponent, selector: "bs-navbar-dropdown", queries: [{ propertyName: "childDropdowns", predicate: i0.forwardRef(function () { return BsNavbarDropdownComponent; }), descendants: true }], ngImport: i0, template: "<ul class=\"dropdown-menu\" [class.show]=\"isVisible\" [class.submenu]=\"!!parentDropdown\" (clickOutside)=\"isVisible = false\" [exclude]=\"elementsToExclude\" aria-labelledby=\"navbarDropdown\">\n <ng-content></ng-content>\n</ul>", styles: ["@media (max-width: 767px){.submenu{margin-left:.5rem;margin-right:.5rem}}@media (min-width: 768px){.submenu{position:absolute;left:100%;top:-1px}}\n"], directives: [{ type: i1$1.ClickOutsideDirective, selector: "[clickOutside]", inputs: ["clickOutsideEnabled", "attachOutsideOnClick", "delayClickOutsideInit", "emitOnBlur", "exclude", "excludeBeforeClick", "clickOutsideEvents"], outputs: ["clickOutside"] }] });
1512
+ BsNavbarDropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsNavbarDropdownComponent, selector: "bs-navbar-dropdown", queries: [{ propertyName: "childDropdowns", predicate: i0.forwardRef(function () { return BsNavbarDropdownComponent; }), descendants: true }], ngImport: i0, template: "<ul class=\"dropdown-menu\" [class.show]=\"isVisible\" [class.submenu]=\"!!parentDropdown\" (clickOutside)=\"isVisible = false\" [exclude]=\"elementsToExclude\" aria-labelledby=\"navbarDropdown\">\n <ng-content></ng-content>\n</ul>", styles: ["@media (max-width: 767px){.submenu{margin-left:.5rem;margin-right:.5rem}}@media (min-width: 768px){.submenu{position:absolute;left:100%;top:-1px}}\n"], directives: [{ type: i1$2.ClickOutsideDirective, selector: "[clickOutside]", inputs: ["clickOutsideEnabled", "attachOutsideOnClick", "delayClickOutsideInit", "emitOnBlur", "exclude", "excludeBeforeClick", "clickOutsideEvents"], outputs: ["clickOutside"] }] });
666
1513
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsNavbarDropdownComponent, decorators: [{
667
1514
  type: Component,
668
1515
  args: [{ selector: 'bs-navbar-dropdown', template: "<ul class=\"dropdown-menu\" [class.show]=\"isVisible\" [class.submenu]=\"!!parentDropdown\" (clickOutside)=\"isVisible = false\" [exclude]=\"elementsToExclude\" aria-labelledby=\"navbarDropdown\">\n <ng-content></ng-content>\n</ul>", styles: ["@media (max-width: 767px){.submenu{margin-left:.5rem;margin-right:.5rem}}@media (min-width: 768px){.submenu{position:absolute;left:100%;top:-1px}}\n"] }]
@@ -812,112 +1659,621 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
812
1659
  ],
813
1660
  imports: [
814
1661
  CommonModule,
815
- RouterModule,
816
- ClickOutsideModule
1662
+ RouterModule,
1663
+ ClickOutsideModule
1664
+ ],
1665
+ exports: [
1666
+ BsNavbarComponent,
1667
+ BsNavbarNavComponent,
1668
+ BsNavbarDropdownComponent,
1669
+ BsNavbarItemComponent,
1670
+ DropdownToggleDirective,
1671
+ NavLinkDirective,
1672
+ NavbarContentDirective
1673
+ ]
1674
+ }]
1675
+ }] });
1676
+
1677
+ class BsProgressComponent {
1678
+ constructor() {
1679
+ this.progressClass = true;
1680
+ this.height = null;
1681
+ this.isIndeterminate = false;
1682
+ }
1683
+ }
1684
+ BsProgressComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsProgressComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1685
+ BsProgressComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsProgressComponent, selector: "bs-progress", inputs: { height: "height", isIndeterminate: "isIndeterminate" }, host: { properties: { "class.progress": "this.progressClass", "style.height.px": "this.height" } }, ngImport: i0, template: "<ng-content *ngIf=\"!isIndeterminate\"></ng-content>\n<div *ngIf=\"isIndeterminate\" class=\"progress-bar progress-bar-infinite\" role=\"progressbar\" aria-valuenow=\"infinite\"></div>", styles: ["@keyframes progress-infinite{0%{width:10%;margin-left:0%}25%{width:70%;margin-left:15%}50%{width:10%;margin-left:90%}75%{width:70%;margin-left:15%}to{width:10%;margin-left:0%}}.progress-bar-infinite{animation:progress-infinite 1.5s infinite}\n"], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
1686
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsProgressComponent, decorators: [{
1687
+ type: Component,
1688
+ args: [{ selector: 'bs-progress', template: "<ng-content *ngIf=\"!isIndeterminate\"></ng-content>\n<div *ngIf=\"isIndeterminate\" class=\"progress-bar progress-bar-infinite\" role=\"progressbar\" aria-valuenow=\"infinite\"></div>", styles: ["@keyframes progress-infinite{0%{width:10%;margin-left:0%}25%{width:70%;margin-left:15%}50%{width:10%;margin-left:90%}75%{width:70%;margin-left:15%}to{width:10%;margin-left:0%}}.progress-bar-infinite{animation:progress-infinite 1.5s infinite}\n"] }]
1689
+ }], propDecorators: { progressClass: [{
1690
+ type: HostBinding,
1691
+ args: ['class.progress']
1692
+ }], height: [{
1693
+ type: Input
1694
+ }, {
1695
+ type: HostBinding,
1696
+ args: ['style.height.px']
1697
+ }], isIndeterminate: [{
1698
+ type: Input
1699
+ }] } });
1700
+
1701
+ class BsProgressBarComponent {
1702
+ constructor() {
1703
+ this.destroyed$ = new Subject();
1704
+ this.minimum$ = new BehaviorSubject(0);
1705
+ this.maximum$ = new BehaviorSubject(100);
1706
+ this.value$ = new BehaviorSubject(50);
1707
+ this.color$ = new BehaviorSubject(Color.primary);
1708
+ this.striped = false;
1709
+ this.animated = false;
1710
+ this.progressBar = true;
1711
+ this.colorClass = 'bg-primary';
1712
+ this.widthStyle = '0';
1713
+ this.role = 'progressbar';
1714
+ this.valueNow = 50;
1715
+ this.valueMin = 0;
1716
+ this.valueMax = 100;
1717
+ this.percentage$ = combineLatest([this.minimum$, this.maximum$, this.value$])
1718
+ .pipe(map(([minimum, maximum, value]) => {
1719
+ return (value - minimum) / (maximum - minimum) * 100;
1720
+ }));
1721
+ this.width$ = this.percentage$
1722
+ .pipe(map((width) => {
1723
+ return String(width) + '%';
1724
+ }));
1725
+ this.colorClass$ = this.color$
1726
+ .pipe(map((color) => {
1727
+ const name = Color[color];
1728
+ return `bg-${name}`;
1729
+ }));
1730
+ this.colorClass$
1731
+ .pipe(takeUntil(this.destroyed$))
1732
+ .subscribe((color) => {
1733
+ this.colorClass = color;
1734
+ });
1735
+ this.width$
1736
+ .pipe(takeUntil(this.destroyed$))
1737
+ .subscribe((width) => {
1738
+ this.widthStyle = width;
1739
+ });
1740
+ this.value$
1741
+ .pipe(takeUntil(this.destroyed$))
1742
+ .subscribe((value) => {
1743
+ this.valueNow = value;
1744
+ });
1745
+ this.minimum$
1746
+ .pipe(takeUntil(this.destroyed$))
1747
+ .subscribe((value) => {
1748
+ this.valueMin = value;
1749
+ });
1750
+ this.maximum$
1751
+ .pipe(takeUntil(this.destroyed$))
1752
+ .subscribe((value) => {
1753
+ this.valueMax = value;
1754
+ });
1755
+ }
1756
+ set minimum(value) {
1757
+ this.minimum$.next(value);
1758
+ }
1759
+ set maximum(value) {
1760
+ this.maximum$.next(value);
1761
+ }
1762
+ set value(value) {
1763
+ this.value$.next(value);
1764
+ }
1765
+ set color(value) {
1766
+ this.color$.next(value);
1767
+ }
1768
+ ngOnDestroy() {
1769
+ this.destroyed$.next(true);
1770
+ }
1771
+ }
1772
+ BsProgressBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsProgressBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1773
+ BsProgressBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsProgressBarComponent, selector: "bs-progress-bar", inputs: { minimum: "minimum", maximum: "maximum", value: "value", color: "color", striped: "striped", animated: "animated" }, host: { properties: { "class.progress-bar-striped": "this.striped", "class.progress-bar-animated": "this.animated", "class.progress-bar": "this.progressBar", "class": "this.colorClass", "style.width": "this.widthStyle", "attr.role": "this.role", "attr.aria-valuenow": "this.valueNow", "attr.aria-valuemin": "this.valueMin", "attr.aria-valuemax": "this.valueMax" } }, ngImport: i0, template: "", styles: [""] });
1774
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsProgressBarComponent, decorators: [{
1775
+ type: Component,
1776
+ args: [{ selector: 'bs-progress-bar', template: "", styles: [""] }]
1777
+ }], ctorParameters: function () { return []; }, propDecorators: { minimum: [{
1778
+ type: Input
1779
+ }], maximum: [{
1780
+ type: Input
1781
+ }], value: [{
1782
+ type: Input
1783
+ }], color: [{
1784
+ type: Input
1785
+ }], striped: [{
1786
+ type: Input
1787
+ }, {
1788
+ type: HostBinding,
1789
+ args: ['class.progress-bar-striped']
1790
+ }], animated: [{
1791
+ type: Input
1792
+ }, {
1793
+ type: HostBinding,
1794
+ args: ['class.progress-bar-animated']
1795
+ }], progressBar: [{
1796
+ type: HostBinding,
1797
+ args: ['class.progress-bar']
1798
+ }], colorClass: [{
1799
+ type: HostBinding,
1800
+ args: ['class']
1801
+ }], widthStyle: [{
1802
+ type: HostBinding,
1803
+ args: ['style.width']
1804
+ }], role: [{
1805
+ type: HostBinding,
1806
+ args: ['attr.role']
1807
+ }], valueNow: [{
1808
+ type: HostBinding,
1809
+ args: ['attr.aria-valuenow']
1810
+ }], valueMin: [{
1811
+ type: HostBinding,
1812
+ args: ['attr.aria-valuemin']
1813
+ }], valueMax: [{
1814
+ type: HostBinding,
1815
+ args: ['attr.aria-valuemax']
1816
+ }] } });
1817
+
1818
+ class BsProgressBarModule {
1819
+ }
1820
+ BsProgressBarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsProgressBarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1821
+ BsProgressBarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsProgressBarModule, declarations: [BsProgressBarComponent,
1822
+ BsProgressComponent], imports: [CommonModule], exports: [BsProgressBarComponent,
1823
+ BsProgressComponent] });
1824
+ BsProgressBarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsProgressBarModule, imports: [[
1825
+ CommonModule
1826
+ ]] });
1827
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsProgressBarModule, decorators: [{
1828
+ type: NgModule,
1829
+ args: [{
1830
+ declarations: [
1831
+ BsProgressBarComponent,
1832
+ BsProgressComponent
1833
+ ],
1834
+ imports: [
1835
+ CommonModule
1836
+ ],
1837
+ exports: [
1838
+ BsProgressBarComponent,
1839
+ BsProgressComponent
1840
+ ]
1841
+ }]
1842
+ }] });
1843
+
1844
+ class BsScrollspyDirective {
1845
+ constructor(element) {
1846
+ this.element = element;
1847
+ }
1848
+ }
1849
+ BsScrollspyDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsScrollspyDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
1850
+ BsScrollspyDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: BsScrollspyDirective, selector: "[bsScrollspy]", ngImport: i0 });
1851
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsScrollspyDirective, decorators: [{
1852
+ type: Directive,
1853
+ args: [{
1854
+ selector: '[bsScrollspy]'
1855
+ }]
1856
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; } });
1857
+
1858
+ class BsScrollOffsetService {
1859
+ constructor(routerConfig) {
1860
+ this.routerConfig = routerConfig;
1861
+ }
1862
+ getScrollOffset() {
1863
+ if (!this.routerConfig.scrollOffset) {
1864
+ return [0, 0];
1865
+ }
1866
+ else if (Array.isArray(this.routerConfig.scrollOffset)) {
1867
+ return this.routerConfig.scrollOffset;
1868
+ }
1869
+ else {
1870
+ return this.routerConfig.scrollOffset();
1871
+ }
1872
+ }
1873
+ }
1874
+ BsScrollOffsetService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsScrollOffsetService, deps: [{ token: ROUTER_CONFIGURATION }], target: i0.ɵɵFactoryTarget.Injectable });
1875
+ BsScrollOffsetService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsScrollOffsetService, providedIn: 'root' });
1876
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsScrollOffsetService, decorators: [{
1877
+ type: Injectable,
1878
+ args: [{
1879
+ providedIn: 'root'
1880
+ }]
1881
+ }], ctorParameters: function () {
1882
+ return [{ type: undefined, decorators: [{
1883
+ type: Inject,
1884
+ args: [ROUTER_CONFIGURATION]
1885
+ }] }];
1886
+ } });
1887
+
1888
+ class BsScrollspyComponent {
1889
+ constructor(scrollOffsetService, document) {
1890
+ this.scrollOffsetService = scrollOffsetService;
1891
+ this.activeDirective = null;
1892
+ this.doc = document;
1893
+ }
1894
+ ngAfterViewInit() {
1895
+ this.onWindowScroll();
1896
+ }
1897
+ onWindowScroll() {
1898
+ var _a;
1899
+ const offsetY = this.scrollOffsetService.getScrollOffset()[1];
1900
+ const dirs = this.directives.filter((d) => d.element.nativeElement.getBoundingClientRect().y < offsetY);
1901
+ if (this.directives.length === 0) {
1902
+ this.activeDirective = null;
1903
+ }
1904
+ else if (dirs.length === 0) {
1905
+ this.activeDirective = (_a = this.directives.get(0)) !== null && _a !== void 0 ? _a : null;
1906
+ }
1907
+ else {
1908
+ this.activeDirective = dirs[dirs.length - 1];
1909
+ }
1910
+ if (window && (window.innerWidth >= 768)) {
1911
+ if (this.activeDirective) {
1912
+ const index = this.directives.toArray().findIndex((v, i) => v === this.activeDirective);
1913
+ const anchor = this.anchors.get(index);
1914
+ if (anchor && anchor.nativeElement.parentElement) {
1915
+ anchor.nativeElement.scrollIntoView({ block: 'nearest', inline: 'nearest' });
1916
+ }
1917
+ }
1918
+ }
1919
+ }
1920
+ scrollToHeader(directive) {
1921
+ const header = directive.element.nativeElement;
1922
+ const offsetY = this.scrollOffsetService.getScrollOffset()[1];
1923
+ const y = header.getBoundingClientRect().top + window.scrollY - offsetY + 1;
1924
+ window.scrollTo({ top: y, behavior: 'smooth' });
1925
+ }
1926
+ }
1927
+ BsScrollspyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsScrollspyComponent, deps: [{ token: BsScrollOffsetService }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component });
1928
+ 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 }], viewQueries: [{ propertyName: "anchors", predicate: ["anchor"], descendants: true }], ngImport: i0, template: "<div class=\"spy\">\n <ul class=\"text-muted\">\n <li *ngFor=\"let dir of directives; let i = index\">\n <span [attr.data-index]=\"i\" class=\"cursor-pointer\" [ngClass]=\"'nav' + dir.element.nativeElement.tagName\" [class.fw-bold]=\"activeDirective?.element === dir.element\" (click)=\"scrollToHeader(dir)\" [title]=\"dir.element.nativeElement.textContent\" #anchor>\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:calc(100vh - 7rem);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"] }] });
1929
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsScrollspyComponent, decorators: [{
1930
+ type: Component,
1931
+ args: [{ selector: 'bs-scrollspy', template: "<div class=\"spy\">\n <ul class=\"text-muted\">\n <li *ngFor=\"let dir of directives; let i = index\">\n <span [attr.data-index]=\"i\" class=\"cursor-pointer\" [ngClass]=\"'nav' + dir.element.nativeElement.tagName\" [class.fw-bold]=\"activeDirective?.element === dir.element\" (click)=\"scrollToHeader(dir)\" [title]=\"dir.element.nativeElement.textContent\" #anchor>\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:calc(100vh - 7rem);overflow-y:auto;grid-area:toc}.spy>ul{padding-left:2rem}}.navH2{margin-left:20px}.navH3{margin-left:40px}.navH4{margin-left:60px}\n"] }]
1932
+ }], ctorParameters: function () {
1933
+ return [{ type: BsScrollOffsetService }, { type: undefined, decorators: [{
1934
+ type: Inject,
1935
+ args: [DOCUMENT]
1936
+ }] }];
1937
+ }, propDecorators: { directives: [{
1938
+ type: ContentChildren,
1939
+ args: [BsScrollspyDirective, { descendants: true }]
1940
+ }], anchors: [{
1941
+ type: ViewChildren,
1942
+ args: ['anchor']
1943
+ }], onWindowScroll: [{
1944
+ type: HostListener,
1945
+ args: ['window:scroll', ['$event']]
1946
+ }] } });
1947
+
1948
+ class BsScrollspyModule {
1949
+ }
1950
+ BsScrollspyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsScrollspyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1951
+ BsScrollspyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsScrollspyModule, declarations: [BsScrollspyComponent,
1952
+ BsScrollspyDirective], imports: [CommonModule], exports: [BsScrollspyComponent,
1953
+ BsScrollspyDirective] });
1954
+ BsScrollspyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsScrollspyModule, imports: [[
1955
+ CommonModule
1956
+ ]] });
1957
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsScrollspyModule, decorators: [{
1958
+ type: NgModule,
1959
+ args: [{
1960
+ declarations: [
1961
+ BsScrollspyComponent,
1962
+ BsScrollspyDirective
1963
+ ],
1964
+ imports: [
1965
+ CommonModule
1966
+ ],
1967
+ exports: [
1968
+ BsScrollspyComponent,
1969
+ BsScrollspyDirective
1970
+ ]
1971
+ }]
1972
+ }] });
1973
+
1974
+ class BsInListPipe {
1975
+ transform(items, parameter) {
1976
+ return items.some(item => item.id === parameter);
1977
+ }
1978
+ }
1979
+ BsInListPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsInListPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
1980
+ BsInListPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsInListPipe, name: "inList" });
1981
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsInListPipe, decorators: [{
1982
+ type: Pipe,
1983
+ args: [{
1984
+ name: 'inList'
1985
+ }]
1986
+ }] });
1987
+
1988
+ class BsSelect2Component {
1989
+ constructor() {
1990
+ this.isOpen = false;
1991
+ this.suggestions$ = new BehaviorSubject([]);
1992
+ this.isLoading$ = new BehaviorSubject(false);
1993
+ this.hostWidth$ = new BehaviorSubject(200);
1994
+ this.searchterm = '';
1995
+ this.suggestions = [];
1996
+ this.provideSuggestions = new EventEmitter();
1997
+ this.selectedItems = [];
1998
+ this.isFocused = false;
1999
+ this.charWidth = 10;
2000
+ this.searchWidth = 20;
2001
+ }
2002
+ ngAfterViewInit() {
2003
+ this.onResize();
2004
+ }
2005
+ onProvideSuggestions(value) {
2006
+ this.searchWidth = this.charWidth * (this.searchterm.length + 2);
2007
+ if (value === '') {
2008
+ this.isOpen = false;
2009
+ this.suggestions$.next([]);
2010
+ }
2011
+ else {
2012
+ this.isLoading$.next(true);
2013
+ this.isOpen = true;
2014
+ this.provideSuggestions.emit(value);
2015
+ }
2016
+ }
2017
+ onSuggestionClicked(suggestion) {
2018
+ this.searchterm = '';
2019
+ this.isOpen = false;
2020
+ const existing = this.selectedItems.find((value, index) => value.id === suggestion.id);
2021
+ if (existing === undefined) {
2022
+ this.selectedItems.push(suggestion);
2023
+ }
2024
+ else {
2025
+ this.selectedItems.splice(this.selectedItems.indexOf(existing), 1);
2026
+ }
2027
+ this.searchBox.nativeElement.focus();
2028
+ }
2029
+ onRemoveItem(item, event) {
2030
+ event.stopPropagation();
2031
+ this.selectedItems.splice(this.selectedItems.indexOf(item), 1);
2032
+ this.focus();
2033
+ }
2034
+ ngOnInit() {
2035
+ }
2036
+ onResize() {
2037
+ this.hostWidth$.next(this.itemsBox.nativeElement.offsetWidth);
2038
+ }
2039
+ focus() {
2040
+ this.searchBox.nativeElement.focus();
2041
+ }
2042
+ }
2043
+ BsSelect2Component.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsSelect2Component, deps: [], target: i0.ɵɵFactoryTarget.Component });
2044
+ BsSelect2Component.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsSelect2Component, selector: "bs-select2", inputs: { searchterm: "searchterm", suggestions: "suggestions", selectedItems: "selectedItems" }, outputs: { provideSuggestions: "provideSuggestions" }, host: { listeners: { "window:resize": "onResize()", "click": "focus()" }, properties: { "class.focus": "this.isFocused" } }, viewQueries: [{ propertyName: "searchBox", first: true, predicate: ["searchBox"], descendants: true }, { propertyName: "itemsBox", first: true, predicate: ["itemsBox"], descendants: true }, { propertyName: "defaultItemTemplate", first: true, predicate: ["defaultItemTemplate"], descendants: true, static: true }], ngImport: i0, template: "<div bsDropdown [(isOpen)]=\"isOpen\" [hasBackdrop]=\"false\" [closeOnClickOutside]=\"true\" #itemsBox class=\"items-box\">\n <ng-container *ngFor=\"let item of selectedItems\">\n <ng-container *ngTemplateOutlet=\"itemTemplate ?? defaultItemTemplate; context: { item: item, select2: this }\"></ng-container>\n </ng-container>\n\n <input type=\"text\" autocomplete=\"off\"\n [(ngModel)]=\"searchterm\"\n (ngModelChange)=\"onProvideSuggestions($event)\"\n (focus)=\"isFocused=true\"\n (blur)=\"isFocused=false\"\n [style.width.px]=\"searchWidth\"\n #searchBox />\n <div *bsDropdownMenu>\n <ul class=\"dropdown-menu d-block position-static p-0\" [style.width.px]=\"hostWidth$ | async\">\n <li *ngFor=\"let suggestion of suggestions\" (click)=\"onSuggestionClicked(suggestion)\" [class.selected]=\"selectedItems | inList:suggestion.id\">{{ suggestion.text }}</li>\n </ul>\n </div>\n</div>\n\n<ng-template #defaultItemTemplate let-item=\"item\" let-select2=\"select2\">\n <span class=\"select2-item\">\n <span (click)=\"select2.onRemoveItem(item,$event)\">\u00D7</span>\n {{ item.text }}\n </span>\n</ng-template>\n", styles: [".items-box{display:block;position:relative;width:100%;min-height:38px;padding:0 5px 3px;cursor:text;border:1px solid #ccc}.items-box .select2-item{display:inline-block;background-color:#e4e4e4;color:#1a1a1a;border:1px solid #aaa;border-radius:4px;margin-top:5px;margin-right:5px;padding:0 5px;cursor:default;user-select:none;-webkit-user-select:none}.items-box .select2-item>span{cursor:pointer;color:#999}.items-box .select2-item>span:hover{color:#333}.items-box input{border:none;outline:0;margin:5px 0 2px;background:none}:host{display:block;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}:host.focus{color:#495057;background-color:#fff;border-color:#80bdff!important;outline:0;box-shadow:0 0 0 .2rem #007bff40}ul{max-height:200px;overflow-y:auto}ul>li{padding:10px;cursor:pointer}ul>li.selected{background:#ddd}ul>li:hover{color:#fff;background-color:#5897fb}\n"], directives: [{ type: BsDropdownDirective, selector: "[bsDropdown]", inputs: ["hasBackdrop", "sameWidth", "closeOnClickOutside", "isOpen"], outputs: ["isOpenChange"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: BsDropdownMenuDirective, selector: "[bsDropdownMenu]" }], pipes: { "async": i1.AsyncPipe, "inList": BsInListPipe } });
2045
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsSelect2Component, decorators: [{
2046
+ type: Component,
2047
+ args: [{ selector: 'bs-select2', template: "<div bsDropdown [(isOpen)]=\"isOpen\" [hasBackdrop]=\"false\" [closeOnClickOutside]=\"true\" #itemsBox class=\"items-box\">\n <ng-container *ngFor=\"let item of selectedItems\">\n <ng-container *ngTemplateOutlet=\"itemTemplate ?? defaultItemTemplate; context: { item: item, select2: this }\"></ng-container>\n </ng-container>\n\n <input type=\"text\" autocomplete=\"off\"\n [(ngModel)]=\"searchterm\"\n (ngModelChange)=\"onProvideSuggestions($event)\"\n (focus)=\"isFocused=true\"\n (blur)=\"isFocused=false\"\n [style.width.px]=\"searchWidth\"\n #searchBox />\n <div *bsDropdownMenu>\n <ul class=\"dropdown-menu d-block position-static p-0\" [style.width.px]=\"hostWidth$ | async\">\n <li *ngFor=\"let suggestion of suggestions\" (click)=\"onSuggestionClicked(suggestion)\" [class.selected]=\"selectedItems | inList:suggestion.id\">{{ suggestion.text }}</li>\n </ul>\n </div>\n</div>\n\n<ng-template #defaultItemTemplate let-item=\"item\" let-select2=\"select2\">\n <span class=\"select2-item\">\n <span (click)=\"select2.onRemoveItem(item,$event)\">\u00D7</span>\n {{ item.text }}\n </span>\n</ng-template>\n", styles: [".items-box{display:block;position:relative;width:100%;min-height:38px;padding:0 5px 3px;cursor:text;border:1px solid #ccc}.items-box .select2-item{display:inline-block;background-color:#e4e4e4;color:#1a1a1a;border:1px solid #aaa;border-radius:4px;margin-top:5px;margin-right:5px;padding:0 5px;cursor:default;user-select:none;-webkit-user-select:none}.items-box .select2-item>span{cursor:pointer;color:#999}.items-box .select2-item>span:hover{color:#333}.items-box input{border:none;outline:0;margin:5px 0 2px;background:none}:host{display:block;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}:host.focus{color:#495057;background-color:#fff;border-color:#80bdff!important;outline:0;box-shadow:0 0 0 .2rem #007bff40}ul{max-height:200px;overflow-y:auto}ul>li{padding:10px;cursor:pointer}ul>li.selected{background:#ddd}ul>li:hover{color:#fff;background-color:#5897fb}\n"] }]
2048
+ }], ctorParameters: function () { return []; }, propDecorators: { searchBox: [{
2049
+ type: ViewChild,
2050
+ args: ['searchBox']
2051
+ }], itemsBox: [{
2052
+ type: ViewChild,
2053
+ args: ['itemsBox']
2054
+ }], searchterm: [{
2055
+ type: Input
2056
+ }], suggestions: [{
2057
+ type: Input
2058
+ }], provideSuggestions: [{
2059
+ type: Output
2060
+ }], selectedItems: [{
2061
+ type: Input
2062
+ }], isFocused: [{
2063
+ type: HostBinding,
2064
+ args: ['class.focus']
2065
+ }], onResize: [{
2066
+ type: HostListener,
2067
+ args: ['window:resize']
2068
+ }], focus: [{
2069
+ type: HostListener,
2070
+ args: ['click']
2071
+ }], defaultItemTemplate: [{
2072
+ type: ViewChild,
2073
+ args: ['defaultItemTemplate', { static: true }]
2074
+ }] } });
2075
+
2076
+ class BsItemTemplateDirective {
2077
+ constructor(select2component, templateRef) {
2078
+ this.select2component = select2component;
2079
+ console.log('template', templateRef);
2080
+ this.select2component.itemTemplate = templateRef;
2081
+ }
2082
+ }
2083
+ BsItemTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsItemTemplateDirective, deps: [{ token: BsSelect2Component }, { token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
2084
+ BsItemTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: BsItemTemplateDirective, selector: "[bsItemTemplate]", ngImport: i0 });
2085
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsItemTemplateDirective, decorators: [{
2086
+ type: Directive,
2087
+ args: [{
2088
+ selector: '[bsItemTemplate]'
2089
+ }]
2090
+ }], ctorParameters: function () { return [{ type: BsSelect2Component }, { type: i0.TemplateRef }]; } });
2091
+
2092
+ class BsInListModule {
2093
+ }
2094
+ BsInListModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsInListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2095
+ BsInListModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsInListModule, declarations: [BsInListPipe], imports: [CommonModule], exports: [BsInListPipe] });
2096
+ BsInListModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsInListModule, imports: [[
2097
+ CommonModule
2098
+ ]] });
2099
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsInListModule, decorators: [{
2100
+ type: NgModule,
2101
+ args: [{
2102
+ declarations: [
2103
+ BsInListPipe
2104
+ ],
2105
+ imports: [
2106
+ CommonModule
2107
+ ],
2108
+ exports: [
2109
+ BsInListPipe
2110
+ ]
2111
+ }]
2112
+ }] });
2113
+
2114
+ class BsSelect2Module {
2115
+ }
2116
+ BsSelect2Module.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsSelect2Module, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2117
+ BsSelect2Module.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsSelect2Module, declarations: [BsSelect2Component,
2118
+ BsItemTemplateDirective], imports: [CommonModule,
2119
+ FormsModule,
2120
+ BsDropdownModule,
2121
+ BsInListModule], exports: [BsSelect2Component,
2122
+ BsItemTemplateDirective] });
2123
+ BsSelect2Module.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsSelect2Module, imports: [[
2124
+ CommonModule,
2125
+ FormsModule,
2126
+ BsDropdownModule,
2127
+ BsInListModule
2128
+ ]] });
2129
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsSelect2Module, decorators: [{
2130
+ type: NgModule,
2131
+ args: [{
2132
+ declarations: [
2133
+ BsSelect2Component,
2134
+ BsItemTemplateDirective
2135
+ ],
2136
+ imports: [
2137
+ CommonModule,
2138
+ FormsModule,
2139
+ BsDropdownModule,
2140
+ BsInListModule
817
2141
  ],
818
2142
  exports: [
819
- BsNavbarComponent,
820
- BsNavbarNavComponent,
821
- BsNavbarDropdownComponent,
822
- BsNavbarItemComponent,
823
- DropdownToggleDirective,
824
- NavLinkDirective,
825
- NavbarContentDirective
2143
+ BsSelect2Component,
2144
+ BsItemTemplateDirective
826
2145
  ]
827
2146
  }]
828
2147
  }] });
829
2148
 
830
- class BsAccordionTabComponent {
831
- constructor(accordion) {
832
- this.accordion = accordion;
833
- }
834
- ngOnInit() {
835
- }
836
- headerClicked(event) {
837
- if (this.accordion.activeTab === this) {
838
- this.accordion.activeTab = null;
839
- }
840
- else {
841
- this.accordion.activeTab = this;
842
- }
2149
+ const SNACKBAR_CONTENT = new InjectionToken('SnackbarContent');
2150
+
2151
+ class BsSnackbarComponent {
2152
+ constructor(content) {
2153
+ this.displayBlock = true;
2154
+ this.width100 = true;
2155
+ this.instance = null;
2156
+ //#region Monitor @slideUpDown hooks
2157
+ this.animationState = '';
2158
+ this.animationStateChanged = new EventEmitter();
2159
+ this.content = content;
2160
+ }
2161
+ onAnimationChanged(event) {
2162
+ this.animationStateChanged.emit(event);
843
2163
  }
844
2164
  }
845
- BsAccordionTabComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsAccordionTabComponent, deps: [{ token: BsAccordionComponent }], target: i0.ɵɵFactoryTarget.Component });
846
- BsAccordionTabComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsAccordionTabComponent, selector: "bs-accordion-tab", ngImport: i0, template: "<div class=\"card\">\n <ng-content select=\"bs-accordion-tab-header\"></ng-content>\n <div class=\"card-block overflow-hidden\" [@slideUpDown]=\"(accordion.activeTab === this) ? 'down' : 'up'\">\n <ng-content></ng-content>\n </div>\n</div>", styles: [".card,.card-header,.card-block{border-radius:0}.card{margin-bottom:-1px}\n"], animations: [SlideUpDownAnimation] });
847
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsAccordionTabComponent, decorators: [{
2165
+ BsSnackbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsSnackbarComponent, deps: [{ token: SNACKBAR_CONTENT }], target: i0.ɵɵFactoryTarget.Component });
2166
+ BsSnackbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsSnackbarComponent, selector: "bs-snackbar", host: { properties: { "class.d-block": "this.displayBlock", "class.w-100": "this.width100" } }, ngImport: i0, template: "<div [@slideUpDown]=\"animationState\"\n (@slideUpDown.start)=\"onAnimationChanged($event)\"\n (@slideUpDown.done)=\"onAnimationChanged($event)\">\n\n <ng-container *ngTemplateOutlet=\"content; context: { $implicit: this }\" ></ng-container>\n</div>", styles: [":host{background:#232323;color:rgba(var(--bs-light-rgb))}\n"], directives: [{ type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], animations: [SlideUpDownAnimation] });
2167
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsSnackbarComponent, decorators: [{
848
2168
  type: Component,
849
- args: [{ selector: 'bs-accordion-tab', animations: [SlideUpDownAnimation], template: "<div class=\"card\">\n <ng-content select=\"bs-accordion-tab-header\"></ng-content>\n <div class=\"card-block overflow-hidden\" [@slideUpDown]=\"(accordion.activeTab === this) ? 'down' : 'up'\">\n <ng-content></ng-content>\n </div>\n</div>", styles: [".card,.card-header,.card-block{border-radius:0}.card{margin-bottom:-1px}\n"] }]
850
- }], ctorParameters: function () { return [{ type: BsAccordionComponent }]; } });
2169
+ args: [{ selector: 'bs-snackbar', animations: [SlideUpDownAnimation], template: "<div [@slideUpDown]=\"animationState\"\n (@slideUpDown.start)=\"onAnimationChanged($event)\"\n (@slideUpDown.done)=\"onAnimationChanged($event)\">\n\n <ng-container *ngTemplateOutlet=\"content; context: { $implicit: this }\" ></ng-container>\n</div>", styles: [":host{background:#232323;color:rgba(var(--bs-light-rgb))}\n"] }]
2170
+ }], ctorParameters: function () {
2171
+ return [{ type: i0.TemplateRef, decorators: [{
2172
+ type: Inject,
2173
+ args: [SNACKBAR_CONTENT]
2174
+ }] }];
2175
+ }, propDecorators: { displayBlock: [{
2176
+ type: HostBinding,
2177
+ args: ['class.d-block']
2178
+ }], width100: [{
2179
+ type: HostBinding,
2180
+ args: ['class.w-100']
2181
+ }] } });
851
2182
 
852
- class BsAccordionComponent {
853
- constructor() {
854
- this.activeTab = null;
2183
+ class BsSnackbarService {
2184
+ constructor(overlay, parentInjector, componentFactoryResolver) {
2185
+ this.overlay = overlay;
2186
+ this.parentInjector = parentInjector;
2187
+ this.componentFactoryResolver = componentFactoryResolver;
2188
+ }
2189
+ show(template) {
2190
+ const injector = Injector.create({
2191
+ providers: [{ provide: SNACKBAR_CONTENT, useValue: template }],
2192
+ parent: this.parentInjector
2193
+ });
2194
+ const portal = new ComponentPortal(BsSnackbarComponent, null, injector, this.componentFactoryResolver);
2195
+ const overlayRef = this.overlay.create({
2196
+ scrollStrategy: this.overlay.scrollStrategies.reposition(),
2197
+ positionStrategy: this.overlay.position()
2198
+ .global().centerHorizontally().bottom('0'),
2199
+ width: '100%'
2200
+ });
2201
+ const componentInstance = overlayRef.attach(portal);
2202
+ // componentInstance.
2203
+ componentInstance.instance['instance'] = {
2204
+ component: componentInstance,
2205
+ overlay: overlayRef
2206
+ };
2207
+ return componentInstance.instance;
855
2208
  }
856
- ngOnInit() {
2209
+ hide(snackbar) {
2210
+ snackbar.animationStateChanged.pipe(filter(ev => ev.phaseName === 'done' && ev.toState === 'void'), take(1)).subscribe(() => {
2211
+ var _a;
2212
+ (_a = snackbar['instance']) === null || _a === void 0 ? void 0 : _a.overlay.dispose();
2213
+ });
2214
+ snackbar.animationState = 'void';
857
2215
  }
858
2216
  }
859
- BsAccordionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsAccordionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
860
- BsAccordionComponentcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsAccordionComponent, selector: "bs-accordion", queries: [{ propertyName: "tabPages", predicate: BsAccordionTabComponent }], ngImport: i0, template: "<ng-content></ng-content>", styles: [""] });
861
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsAccordionComponent, decorators: [{
862
- type: Component,
863
- args: [{ selector: 'bs-accordion', template: "<ng-content></ng-content>", styles: [""] }]
864
- }], ctorParameters: function () { return []; }, propDecorators: { tabPages: [{
865
- type: ContentChildren,
866
- args: [BsAccordionTabComponent]
867
- }] } });
2217
+ BsSnackbarService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsSnackbarService, deps: [{ token: i1$1.Overlay }, { token: i0.Injector }, { token: i0.ComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Injectable });
2218
+ BsSnackbarServiceprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsSnackbarService, providedIn: 'root' });
2219
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsSnackbarService, decorators: [{
2220
+ type: Injectable,
2221
+ args: [{
2222
+ providedIn: 'root'
2223
+ }]
2224
+ }], ctorParameters: function () { return [{ type: i1$1.Overlay }, { type: i0.Injector }, { type: i0.ComponentFactoryResolver }]; } });
868
2225
 
869
- class BsAccordionTabHeaderComponent {
870
- constructor(accordionTab, accordion) {
871
- this.accordionTab = accordionTab;
872
- this.accordion = accordion;
2226
+ class BsSnackbarCloseDirective {
2227
+ constructor(snackbarService) {
2228
+ this.snackbarService = snackbarService;
873
2229
  }
874
- ngOnInit() {
875
- }
876
- headerClicked(event) {
877
- if (this.accordion.activeTab === this.accordionTab) {
878
- this.accordion.activeTab = null;
879
- }
880
- else {
881
- this.accordion.activeTab = this.accordionTab;
882
- }
2230
+ onClick() {
2231
+ this.snackbarService.hide(this.bsSnackbarClose);
883
2232
  }
884
2233
  }
885
- BsAccordionTabHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsAccordionTabHeaderComponent, deps: [{ token: BsAccordionTabComponent }, { token: BsAccordionComponent }], target: i0.ɵɵFactoryTarget.Component });
886
- BsAccordionTabHeaderComponentcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsAccordionTabHeaderComponent, selector: "bs-accordion-tab-header", ngImport: i0, template: "<div class=\"card-header cursor-pointer\" (click)=\"headerClicked($event)\">\n <ng-content></ng-content>\n</div>", styles: [""] });
887
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsAccordionTabHeaderComponent, decorators: [{
888
- type: Component,
889
- args: [{ selector: 'bs-accordion-tab-header', template: "<div class=\"card-header cursor-pointer\" (click)=\"headerClicked($event)\">\n <ng-content></ng-content>\n</div>", styles: [""] }]
890
- }], ctorParameters: function () { return [{ type: BsAccordionTabComponent }, { type: BsAccordionComponent }]; } });
2234
+ BsSnackbarCloseDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsSnackbarCloseDirective, deps: [{ token: BsSnackbarService }], target: i0.ɵɵFactoryTarget.Directive });
2235
+ BsSnackbarCloseDirectivedir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: BsSnackbarCloseDirective, selector: "[bsSnackbarClose]", inputs: { bsSnackbarClose: "bsSnackbarClose" }, host: { listeners: { "click": "onClick()" } }, ngImport: i0 });
2236
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsSnackbarCloseDirective, decorators: [{
2237
+ type: Directive,
2238
+ args: [{
2239
+ selector: '[bsSnackbarClose]'
2240
+ }]
2241
+ }], ctorParameters: function () { return [{ type: BsSnackbarService }]; }, propDecorators: { bsSnackbarClose: [{
2242
+ type: Input
2243
+ }], onClick: [{
2244
+ type: HostListener,
2245
+ args: ['click']
2246
+ }] } });
891
2247
 
892
- class BsAccordionModule {
2248
+ class BsSnackbarModule {
893
2249
  }
894
- BsAccordionModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsAccordionModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
895
- BsAccordionModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsAccordionModule, declarations: [BsAccordionComponent,
896
- BsAccordionTabComponent,
897
- BsAccordionTabHeaderComponent], imports: [CommonModule,
898
- BrowserAnimationsModule], exports: [BsAccordionComponent,
899
- BsAccordionTabComponent,
900
- BsAccordionTabHeaderComponent] });
901
- BsAccordionModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsAccordionModule, imports: [[
902
- CommonModule,
903
- BrowserAnimationsModule
2250
+ BsSnackbarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsSnackbarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2251
+ BsSnackbarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsSnackbarModule, declarations: [BsSnackbarComponent,
2252
+ BsSnackbarCloseDirective], imports: [CommonModule], exports: [BsSnackbarComponent,
2253
+ BsSnackbarCloseDirective] });
2254
+ BsSnackbarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsSnackbarModule, providers: [
2255
+ // { provide: BsSnackbarComponent, useExisting: forwardRef(() => BsSnackbarComponent) }
2256
+ // { provide: BsSnackbarComponent, useClass: BsSnackbarComponent }
2257
+ ], imports: [[
2258
+ CommonModule
904
2259
  ]] });
905
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsAccordionModule, decorators: [{
2260
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsSnackbarModule, decorators: [{
906
2261
  type: NgModule,
907
2262
  args: [{
908
2263
  declarations: [
909
- BsAccordionComponent,
910
- BsAccordionTabComponent,
911
- BsAccordionTabHeaderComponent
2264
+ BsSnackbarComponent,
2265
+ BsSnackbarCloseDirective
912
2266
  ],
913
2267
  imports: [
914
- CommonModule,
915
- BrowserAnimationsModule
2268
+ CommonModule
916
2269
  ],
917
2270
  exports: [
918
- BsAccordionComponent,
919
- BsAccordionTabComponent,
920
- BsAccordionTabHeaderComponent
2271
+ BsSnackbarComponent,
2272
+ BsSnackbarCloseDirective
2273
+ ],
2274
+ providers: [
2275
+ // { provide: BsSnackbarComponent, useExisting: forwardRef(() => BsSnackbarComponent) }
2276
+ // { provide: BsSnackbarComponent, useClass: BsSnackbarComponent }
921
2277
  ]
922
2278
  }]
923
2279
  }] });
@@ -991,88 +2347,367 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
991
2347
  }]
992
2348
  }] });
993
2349
 
994
- class BsScrollspyDirective {
995
- constructor(element) {
996
- this.element = element;
2350
+ class BsToggleButtonComponent {
2351
+ constructor() {
2352
+ this.disableAnimations = true;
2353
+ //#region isToggled
2354
+ this._isToggled = false;
2355
+ this.isToggledChange = new EventEmitter();
2356
+ //#endregion
2357
+ this.offColor = '#CCCCCC';
2358
+ this.onColor = '#2196F3';
2359
+ this.round = true;
2360
+ }
2361
+ ngAfterViewInit() {
2362
+ this.disableAnimations = false;
2363
+ }
2364
+ get isToggled() {
2365
+ return this._isToggled;
2366
+ }
2367
+ set isToggled(value) {
2368
+ this._isToggled = value;
2369
+ this.isToggledChange.emit(this._isToggled);
997
2370
  }
998
2371
  }
999
- BsScrollspyDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsScrollspyDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
1000
- BsScrollspyDirectivedir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: BsScrollspyDirective, selector: "[bsScrollspy]", ngImport: i0 });
1001
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsScrollspyDirective, decorators: [{
1002
- type: Directive,
2372
+ BsToggleButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsToggleButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2373
+ BsToggleButtonComponentcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsToggleButtonComponent, selector: "bs-toggle-button", inputs: { isToggled: "isToggled", offColor: "offColor", onColor: "onColor", round: "round" }, outputs: { isToggledChange: "isToggledChange" }, ngImport: i0, template: "<label (click)=\"isToggled = !isToggled\" class=\"switch\" [class.checked]=\"isToggled\">\n <span class=\"slider\" [class.round]=\"round\" [@colorTransition]=\"{ value: isToggled ? 'color2' : 'color1', params: { color1: offColor, color2: onColor, 'duration': '.4s' } }\"></span>\n</label>", styles: [".switch{position:relative;display:inline-block;width:30px;height:17px}.switch>.slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;transition:transform .4s}.switch>.slider.round{border-radius:8.5px}.switch>.slider.round:before{border-radius:50%}.switch>.slider:before{position:absolute;content:\"\";height:13px;width:13px;left:2px;top:0;bottom:0;margin:auto 0;background-color:#fff;transition:transform .4s}.switch.checked .slider:before{transform:translate(13px)}\n"], animations: [ColorTransitionAnimation] });
2374
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsToggleButtonComponent, decorators: [{
2375
+ type: Component,
2376
+ args: [{ selector: 'bs-toggle-button', animations: [ColorTransitionAnimation], template: "<label (click)=\"isToggled = !isToggled\" class=\"switch\" [class.checked]=\"isToggled\">\n <span class=\"slider\" [class.round]=\"round\" [@colorTransition]=\"{ value: isToggled ? 'color2' : 'color1', params: { color1: offColor, color2: onColor, 'duration': '.4s' } }\"></span>\n</label>", styles: [".switch{position:relative;display:inline-block;width:30px;height:17px}.switch>.slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;transition:transform .4s}.switch>.slider.round{border-radius:8.5px}.switch>.slider.round:before{border-radius:50%}.switch>.slider:before{position:absolute;content:\"\";height:13px;width:13px;left:2px;top:0;bottom:0;margin:auto 0;background-color:#fff;transition:transform .4s}.switch.checked .slider:before{transform:translate(13px)}\n"] }]
2377
+ }], propDecorators: { isToggledChange: [{
2378
+ type: Output
2379
+ }], isToggled: [{
2380
+ type: Input
2381
+ }], offColor: [{
2382
+ type: Input
2383
+ }], onColor: [{
2384
+ type: Input
2385
+ }], round: [{
2386
+ type: Input
2387
+ }] } });
2388
+
2389
+ class BsToggleButtonModule {
2390
+ }
2391
+ BsToggleButtonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsToggleButtonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2392
+ BsToggleButtonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsToggleButtonModule, declarations: [BsToggleButtonComponent], imports: [CommonModule], exports: [BsToggleButtonComponent] });
2393
+ BsToggleButtonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsToggleButtonModule, imports: [[
2394
+ CommonModule
2395
+ ]] });
2396
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsToggleButtonModule, decorators: [{
2397
+ type: NgModule,
1003
2398
  args: [{
1004
- selector: '[bsScrollspy]'
2399
+ declarations: [
2400
+ BsToggleButtonComponent
2401
+ ],
2402
+ imports: [
2403
+ CommonModule
2404
+ ],
2405
+ exports: [
2406
+ BsToggleButtonComponent
2407
+ ]
1005
2408
  }]
1006
- }], ctorParameters: function () { return [{ type: i0.ElementRef }]; } });
2409
+ }] });
1007
2410
 
1008
- class BsScrollspyComponent {
1009
- constructor(document) {
1010
- this.activeDirective = null;
1011
- this.doc = document;
2411
+ const TOOLTIP_CONTENT = new InjectionToken('TooltipContent');
2412
+
2413
+ class BsTooltipComponent {
2414
+ constructor(content) {
2415
+ this.positions = Position;
2416
+ this.position = Position.bottom;
2417
+ this.template = content;
1012
2418
  }
1013
- ngOnInit() {
2419
+ }
2420
+ BsTooltipComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsTooltipComponent, deps: [{ token: TOOLTIP_CONTENT }], target: i0.ɵɵFactoryTarget.Component });
2421
+ BsTooltipComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsTooltipComponent, selector: "bs-tooltip", inputs: { position: "position" }, ngImport: i0, template: "<div [@fadeInOut] class=\"tooltip position-relative show\"\n [class.bs-tooltip-bottom]=\"position === positions.bottom\"\n [class.bs-tooltip-top]=\"position === positions.top\"\n [class.bs-tooltip-start]=\"position === positions.left\"\n [class.bs-tooltip-end]=\"position === positions.right\">\n <div class=\"tooltip-arrow\"></div>\n <div class=\"tooltip-inner\">\n <ng-container *ngTemplateOutlet=\"template\"></ng-container>\n </div>\n</div>\n", styles: [".tooltip.bs-tooltip-bottom .tooltip-arrow,.tooltip.bs-tooltip-top .tooltip-arrow{left:50%;transform:translate(-50%)}.tooltip.bs-tooltip-start .tooltip-arrow,.tooltip.bs-tooltip-end .tooltip-arrow{top:50%;transform:translateY(-50%)}\n"], directives: [{ type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], animations: [FadeInOutAnimation] });
2422
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsTooltipComponent, decorators: [{
2423
+ type: Component,
2424
+ args: [{ selector: 'bs-tooltip', animations: [FadeInOutAnimation], template: "<div [@fadeInOut] class=\"tooltip position-relative show\"\n [class.bs-tooltip-bottom]=\"position === positions.bottom\"\n [class.bs-tooltip-top]=\"position === positions.top\"\n [class.bs-tooltip-start]=\"position === positions.left\"\n [class.bs-tooltip-end]=\"position === positions.right\">\n <div class=\"tooltip-arrow\"></div>\n <div class=\"tooltip-inner\">\n <ng-container *ngTemplateOutlet=\"template\"></ng-container>\n </div>\n</div>\n", styles: [".tooltip.bs-tooltip-bottom .tooltip-arrow,.tooltip.bs-tooltip-top .tooltip-arrow{left:50%;transform:translate(-50%)}.tooltip.bs-tooltip-start .tooltip-arrow,.tooltip.bs-tooltip-end .tooltip-arrow{top:50%;transform:translateY(-50%)}\n"] }]
2425
+ }], ctorParameters: function () {
2426
+ return [{ type: i0.TemplateRef, decorators: [{
2427
+ type: Inject,
2428
+ args: [TOOLTIP_CONTENT]
2429
+ }] }];
2430
+ }, propDecorators: { position: [{
2431
+ type: Input
2432
+ }] } });
2433
+
2434
+ class BsTooltipDirective {
2435
+ constructor(overlay, templateRef, componentFactoryResolver, parentInjector, parent) {
2436
+ this.overlay = overlay;
2437
+ this.templateRef = templateRef;
2438
+ this.parentInjector = parentInjector;
2439
+ this.parent = parent;
2440
+ this.bsTooltip = Position.bottom;
2441
+ this.overlayRef = null;
2442
+ this.injector = Injector.create({
2443
+ providers: [{ provide: TOOLTIP_CONTENT, useValue: this.templateRef }],
2444
+ parent: this.parentInjector
2445
+ });
2446
+ this.portal = new ComponentPortal(BsTooltipComponent, null, this.injector, componentFactoryResolver);
2447
+ parent.nativeElement.onmouseenter = () => {
2448
+ this.showTooltip();
2449
+ };
2450
+ parent.nativeElement.onmouseleave = () => {
2451
+ this.hideTooltip();
2452
+ };
2453
+ }
2454
+ showTooltip() {
2455
+ const positions = [];
2456
+ switch (this.bsTooltip) {
2457
+ case Position.bottom:
2458
+ {
2459
+ positions.push({
2460
+ originX: "center",
2461
+ originY: "bottom",
2462
+ overlayX: "center",
2463
+ overlayY: "top"
2464
+ });
2465
+ }
2466
+ break;
2467
+ case Position.top:
2468
+ {
2469
+ positions.push({
2470
+ originX: "center",
2471
+ originY: "top",
2472
+ overlayX: "center",
2473
+ overlayY: "bottom"
2474
+ });
2475
+ }
2476
+ break;
2477
+ case Position.left:
2478
+ {
2479
+ positions.push({
2480
+ originX: "start",
2481
+ originY: "center",
2482
+ overlayX: "end",
2483
+ overlayY: "center",
2484
+ });
2485
+ }
2486
+ break;
2487
+ case Position.right:
2488
+ {
2489
+ positions.push({
2490
+ originX: "end",
2491
+ originY: "center",
2492
+ overlayX: "start",
2493
+ overlayY: "center"
2494
+ });
2495
+ }
2496
+ break;
2497
+ }
2498
+ this.overlayRef = this.overlay.create({
2499
+ scrollStrategy: this.overlay.scrollStrategies.reposition(),
2500
+ positionStrategy: this.overlay.position()
2501
+ .flexibleConnectedTo(this.parent)
2502
+ .withPositions(positions),
2503
+ });
2504
+ const component = this.overlayRef.attach(this.portal);
2505
+ component.instance.position = this.bsTooltip;
2506
+ }
2507
+ hideTooltip() {
2508
+ if (this.overlayRef) {
2509
+ this.overlayRef.detach();
2510
+ this.overlayRef.dispose();
2511
+ this.overlayRef = null;
2512
+ }
2513
+ }
2514
+ }
2515
+ BsTooltipDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsTooltipDirective, deps: [{ token: i1$1.Overlay }, { token: i0.TemplateRef }, { token: i0.ComponentFactoryResolver }, { token: i0.Injector }, { token: i0.ElementRef, host: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Directive });
2516
+ BsTooltipDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: BsTooltipDirective, selector: "*[bsTooltip]", inputs: { bsTooltip: "bsTooltip" }, ngImport: i0 });
2517
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsTooltipDirective, decorators: [{
2518
+ type: Directive,
2519
+ args: [{
2520
+ selector: '*[bsTooltip]'
2521
+ }]
2522
+ }], ctorParameters: function () {
2523
+ return [{ type: i1$1.Overlay }, { type: i0.TemplateRef }, { type: i0.ComponentFactoryResolver }, { type: i0.Injector }, { type: i0.ElementRef, decorators: [{
2524
+ type: Host
2525
+ }, {
2526
+ type: SkipSelf
2527
+ }] }];
2528
+ }, propDecorators: { bsTooltip: [{
2529
+ type: Input
2530
+ }] } });
2531
+
2532
+ class BsTooltipModule {
2533
+ }
2534
+ BsTooltipModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsTooltipModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2535
+ BsTooltipModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsTooltipModule, declarations: [BsTooltipDirective,
2536
+ BsTooltipComponent], imports: [CommonModule], exports: [BsTooltipDirective] });
2537
+ BsTooltipModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsTooltipModule, imports: [[
2538
+ CommonModule
2539
+ ]] });
2540
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsTooltipModule, decorators: [{
2541
+ type: NgModule,
2542
+ args: [{
2543
+ declarations: [
2544
+ BsTooltipDirective,
2545
+ BsTooltipComponent
2546
+ ],
2547
+ imports: [
2548
+ CommonModule
2549
+ ],
2550
+ exports: [
2551
+ BsTooltipDirective
2552
+ ]
2553
+ }]
2554
+ }] });
2555
+
2556
+ class BsTypeaheadComponent {
2557
+ constructor() {
2558
+ this.isOpen = false;
2559
+ this.suggestions$ = new BehaviorSubject([]);
2560
+ this.isLoading$ = new BehaviorSubject(false);
2561
+ this.hostWidth$ = new BehaviorSubject(200);
2562
+ this.destroyed$ = new Subject();
2563
+ this.searchterm = '';
2564
+ this.isLoadingText = 'Loading...';
2565
+ this.noSuggestionsText = 'No suggestions found';
2566
+ this.provideSuggestions = new EventEmitter();
2567
+ this.suggestionSelected = new EventEmitter();
2568
+ this.searchtermChange = new EventEmitter();
2569
+ this.submitted = new EventEmitter();
2570
+ this.showNoSuggestions$ = this.suggestions$
2571
+ .pipe(map(suggestions => suggestions.length === 0));
1014
2572
  }
1015
2573
  ngAfterViewInit() {
1016
- this.onWindowScroll();
2574
+ this.onResize();
1017
2575
  }
1018
- onWindowScroll() {
1019
- var _a;
1020
- const dirs = this.directives.filter((d) => d.element.nativeElement.getBoundingClientRect().y <= 0);
1021
- if (this.directives.length === 0) {
1022
- this.activeDirective = null;
1023
- }
1024
- else if (dirs.length === 0) {
1025
- this.activeDirective = (_a = this.directives.get(0)) !== null && _a !== void 0 ? _a : null;
2576
+ onProvideSuggestions(value) {
2577
+ this.searchtermChange.emit(value);
2578
+ if (value === '') {
2579
+ this.isOpen = false;
2580
+ this.suggestions$.next([]);
1026
2581
  }
1027
2582
  else {
1028
- this.activeDirective = dirs[dirs.length - 1];
2583
+ this.isLoading$.next(true);
2584
+ this.isOpen = true;
2585
+ this.provideSuggestions.emit(value);
1029
2586
  }
1030
2587
  }
1031
- scrollToHeader(directive) {
1032
- const header = directive.element.nativeElement;
1033
- header.scrollIntoView();
2588
+ set suggestions(value) {
2589
+ this.isLoading$.next(false);
2590
+ this.suggestions$.next(value);
2591
+ }
2592
+ suggestionClicked(suggestion) {
2593
+ this.searchterm = suggestion.text;
2594
+ this.searchtermChange.emit(this.searchterm);
2595
+ this.isOpen = false;
2596
+ this.suggestionSelected.emit(suggestion);
2597
+ }
2598
+ onSubmit() {
2599
+ this.isOpen = false;
2600
+ this.submitted.emit(this.searchterm);
2601
+ }
2602
+ focus() {
2603
+ this.textbox.nativeElement.focus();
2604
+ }
2605
+ onResize() {
2606
+ this.hostWidth$.next(this.textbox.nativeElement.offsetWidth);
1034
2607
  }
1035
2608
  }
1036
- BsScrollspyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsScrollspyComponent, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component });
1037
- 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}@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:calc(100% - 60rem);overflow-y:auto;grid-area:toc}.spy>ul{padding-left:2rem}.spy>ul>li{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}.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"] }] });
1038
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsScrollspyComponent, decorators: [{
2609
+ BsTypeaheadComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsTypeaheadComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2610
+ BsTypeaheadComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsTypeaheadComponent, selector: "bs-typeahead", inputs: { searchterm: "searchterm", isLoadingText: "isLoadingText", noSuggestionsText: "noSuggestionsText", suggestions: "suggestions" }, outputs: { provideSuggestions: "provideSuggestions", suggestionSelected: "suggestionSelected", searchtermChange: "searchtermChange", submitted: "submitted" }, host: { listeners: { "window:resize": "onResize()" } }, viewQueries: [{ propertyName: "textbox", first: true, predicate: ["textbox"], descendants: true }], ngImport: i0, template: "<div bsDropdown [(isOpen)]=\"isOpen\" [hasBackdrop]=\"false\" [closeOnClickOutside]=\"true\">\n <input type=\"text\" class=\"form-control\" #textbox [(ngModel)]=\"searchterm\" (ngModelChange)=\"onProvideSuggestions($event)\" (keyup.enter)=\"onSubmit()\" />\n <div *bsDropdownMenu>\n <ul class=\"dropdown-menu d-block position-static\" [style.width.px]=\"hostWidth$ | async\">\n <bs-progress *ngIf=\"isLoading$ | async\" [height]=\"2\" [isIndeterminate]=\"true\"></bs-progress>\n <li *ngIf=\"isLoading$ | async\">\n <a class=\"dropdown-item disabled\">{{ isLoadingText }}</a>\n </li>\n <ng-container *ngIf=\"(isLoading$ | async) === false\">\n <li *ngIf=\"showNoSuggestions$ | async\">\n <a class=\"dropdown-item disabled\">{{ noSuggestionsText }}</a>\n </li>\n <li *ngFor=\"let suggestion of (suggestions$ | async)\" (click)=\"suggestionClicked(suggestion)\">\n <a class=\"dropdown-item cursor-pointer\">{{ suggestion.text }}</a>\n </li>\n </ng-container>\n </ul>\n </div>\n</div>", styles: ["bs-progress{margin-top:-8px;margin-bottom:6px}\n"], components: [{ type: BsProgressComponent, selector: "bs-progress", inputs: ["height", "isIndeterminate"] }], directives: [{ type: BsDropdownDirective, selector: "[bsDropdown]", inputs: ["hasBackdrop", "sameWidth", "closeOnClickOutside", "isOpen"], outputs: ["isOpenChange"] }, { type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: BsDropdownMenuDirective, selector: "[bsDropdownMenu]" }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "async": i1.AsyncPipe } });
2611
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsTypeaheadComponent, decorators: [{
1039
2612
  type: Component,
1040
- 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}@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:calc(100% - 60rem);overflow-y:auto;grid-area:toc}.spy>ul{padding-left:2rem}.spy>ul>li{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}.navH2{margin-left:20px}.navH3{margin-left:40px}.navH4{margin-left:60px}\n"] }]
1041
- }], ctorParameters: function () {
1042
- return [{ type: undefined, decorators: [{
1043
- type: Inject,
1044
- args: [DOCUMENT]
1045
- }] }];
1046
- }, propDecorators: { directives: [{
1047
- type: ContentChildren,
1048
- args: [BsScrollspyDirective, { descendants: true }]
1049
- }], onWindowScroll: [{
2613
+ args: [{ selector: 'bs-typeahead', template: "<div bsDropdown [(isOpen)]=\"isOpen\" [hasBackdrop]=\"false\" [closeOnClickOutside]=\"true\">\n <input type=\"text\" class=\"form-control\" #textbox [(ngModel)]=\"searchterm\" (ngModelChange)=\"onProvideSuggestions($event)\" (keyup.enter)=\"onSubmit()\" />\n <div *bsDropdownMenu>\n <ul class=\"dropdown-menu d-block position-static\" [style.width.px]=\"hostWidth$ | async\">\n <bs-progress *ngIf=\"isLoading$ | async\" [height]=\"2\" [isIndeterminate]=\"true\"></bs-progress>\n <li *ngIf=\"isLoading$ | async\">\n <a class=\"dropdown-item disabled\">{{ isLoadingText }}</a>\n </li>\n <ng-container *ngIf=\"(isLoading$ | async) === false\">\n <li *ngIf=\"showNoSuggestions$ | async\">\n <a class=\"dropdown-item disabled\">{{ noSuggestionsText }}</a>\n </li>\n <li *ngFor=\"let suggestion of (suggestions$ | async)\" (click)=\"suggestionClicked(suggestion)\">\n <a class=\"dropdown-item cursor-pointer\">{{ suggestion.text }}</a>\n </li>\n </ng-container>\n </ul>\n </div>\n</div>", styles: ["bs-progress{margin-top:-8px;margin-bottom:6px}\n"] }]
2614
+ }], ctorParameters: function () { return []; }, propDecorators: { textbox: [{
2615
+ type: ViewChild,
2616
+ args: ['textbox']
2617
+ }], searchterm: [{
2618
+ type: Input
2619
+ }], isLoadingText: [{
2620
+ type: Input
2621
+ }], noSuggestionsText: [{
2622
+ type: Input
2623
+ }], provideSuggestions: [{
2624
+ type: Output
2625
+ }], suggestionSelected: [{
2626
+ type: Output
2627
+ }], searchtermChange: [{
2628
+ type: Output
2629
+ }], submitted: [{
2630
+ type: Output
2631
+ }], suggestions: [{
2632
+ type: Input
2633
+ }], onResize: [{
1050
2634
  type: HostListener,
1051
- args: ['window:scroll', ['$event']]
2635
+ args: ['window:resize']
1052
2636
  }] } });
1053
2637
 
1054
- class BsScrollspyModule {
2638
+ class BsTypeaheadModule {
1055
2639
  }
1056
- BsScrollspyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsScrollspyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1057
- BsScrollspyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsScrollspyModule, declarations: [BsScrollspyComponent,
1058
- BsScrollspyDirective], imports: [CommonModule], exports: [BsScrollspyComponent,
1059
- BsScrollspyDirective] });
1060
- BsScrollspyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsScrollspyModule, imports: [[
2640
+ BsTypeaheadModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsTypeaheadModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2641
+ BsTypeaheadModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsTypeaheadModule, declarations: [BsTypeaheadComponent], imports: [CommonModule,
2642
+ FormsModule,
2643
+ BsDropdownModule,
2644
+ BsProgressBarModule], exports: [BsTypeaheadComponent] });
2645
+ BsTypeaheadModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsTypeaheadModule, imports: [[
2646
+ CommonModule,
2647
+ FormsModule,
2648
+ BsDropdownModule,
2649
+ BsProgressBarModule
2650
+ ]] });
2651
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsTypeaheadModule, decorators: [{
2652
+ type: NgModule,
2653
+ args: [{
2654
+ declarations: [
2655
+ BsTypeaheadComponent
2656
+ ],
2657
+ imports: [
2658
+ CommonModule,
2659
+ FormsModule,
2660
+ BsDropdownModule,
2661
+ BsProgressBarModule
2662
+ ],
2663
+ exports: [
2664
+ BsTypeaheadComponent
2665
+ ]
2666
+ }]
2667
+ }] });
2668
+
2669
+ class BsFontColorPipe {
2670
+ transform(color_hex) {
2671
+ if (color_hex === undefined || color_hex === null || color_hex.length < 7 || typeof (color_hex) !== 'string') {
2672
+ return '#FFFFFF';
2673
+ }
2674
+ const R_HEX = color_hex.substr(1, 2);
2675
+ const G_HEX = color_hex.substr(3, 2);
2676
+ const B_HEX = color_hex.substr(5, 2);
2677
+ const R_DEC = parseInt(R_HEX, 16);
2678
+ const G_DEC = parseInt(G_HEX, 16);
2679
+ const B_DEC = parseInt(B_HEX, 16);
2680
+ const CONTRAST_HEX = R_DEC * 0.299 + G_DEC * 0.587 + B_DEC * 0.114 > 186 ? '#000000' : '#FFFFFF';
2681
+ return CONTRAST_HEX;
2682
+ }
2683
+ }
2684
+ BsFontColorPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsFontColorPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
2685
+ BsFontColorPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsFontColorPipe, name: "bsFontColor" });
2686
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsFontColorPipe, decorators: [{
2687
+ type: Pipe,
2688
+ args: [{
2689
+ name: 'bsFontColor'
2690
+ }]
2691
+ }] });
2692
+
2693
+ class BsFontColorPipeModule {
2694
+ }
2695
+ BsFontColorPipeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsFontColorPipeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2696
+ BsFontColorPipeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsFontColorPipeModule, declarations: [BsFontColorPipe], imports: [CommonModule], exports: [BsFontColorPipe] });
2697
+ BsFontColorPipeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsFontColorPipeModule, imports: [[
1061
2698
  CommonModule
1062
2699
  ]] });
1063
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsScrollspyModule, decorators: [{
2700
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsFontColorPipeModule, decorators: [{
1064
2701
  type: NgModule,
1065
2702
  args: [{
1066
2703
  declarations: [
1067
- BsScrollspyComponent,
1068
- BsScrollspyDirective
2704
+ BsFontColorPipe
1069
2705
  ],
1070
2706
  imports: [
1071
2707
  CommonModule
1072
2708
  ],
1073
2709
  exports: [
1074
- BsScrollspyComponent,
1075
- BsScrollspyDirective
2710
+ BsFontColorPipe
1076
2711
  ]
1077
2712
  }]
1078
2713
  }] });
@@ -1081,5 +2716,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
1081
2716
  * Generated bundle index. Do not edit.
1082
2717
  */
1083
2718
 
1084
- export { BsAccordionComponent, BsAccordionModule, BsAccordionTabComponent, BsAccordionTabHeaderComponent, BsAlertCloseComponent, BsAlertComponent, BsAlertModule, BsCalendarComponent, BsCalendarModule, BsCardComponent, BsCardHeaderComponent, BsCardModule, BsCarouselComponent, BsCarouselImageDirective, BsCarouselModule, BsListGroupComponent, BsListGroupItemComponent, BsListGroupModule, BsNavbarComponent, BsNavbarDropdownComponent, BsNavbarItemComponent, BsNavbarModule, BsNavbarNavComponent, BsScrollspyComponent, BsScrollspyDirective, BsScrollspyModule, BsTabControlComponent, BsTabControlModule, BsTabPageComponent, Color, DropdownToggleDirective, NavLinkDirective, NavbarContentDirective };
2719
+ export { BsAccordionComponent, BsAccordionModule, BsAccordionTabComponent, BsAccordionTabHeaderComponent, BsAlertCloseComponent, BsAlertComponent, BsAlertModule, BsCalendarComponent, BsCalendarModule, BsCardComponent, BsCardHeaderComponent, BsCardModule, BsCarouselComponent, BsCarouselImageDirective, BsCarouselModule, BsContextMenuDirective, BsContextMenuModule, BsDatatableColumnDirective, BsDatatableComponent, BsDatatableModule, BsDatepickerComponent, BsDatepickerModule, BsDropdownDirective, BsDropdownMenuDirective, BsDropdownModule, BsDropdownToggleDirective, BsFontColorPipe, BsFontColorPipeModule, BsItemTemplateDirective, BsListGroupComponent, BsListGroupItemComponent, BsListGroupModule, BsMultiselectComponent, BsMultiselectModule, BsNavbarComponent, BsNavbarDropdownComponent, BsNavbarItemComponent, BsNavbarModule, BsNavbarNavComponent, BsPaginationComponent, BsPaginationModule, BsProgressBarComponent, BsProgressBarModule, BsProgressComponent, BsRowTemplateDirective, BsScrollspyComponent, BsScrollspyDirective, BsScrollspyModule, BsSelect2Component, BsSelect2Module, BsSnackbarCloseDirective, BsSnackbarComponent, BsSnackbarModule, BsSnackbarService, BsTabControlComponent, BsTabControlModule, BsTabPageComponent, BsToggleButtonComponent, BsToggleButtonModule, BsTooltipDirective, BsTooltipModule, BsTypeaheadComponent, BsTypeaheadModule, Color, DatatableSettings, DropdownToggleDirective, NavLinkDirective, NavbarContentDirective, Position };
1085
2720
  //# sourceMappingURL=mintplayer-ng-bootstrap.mjs.map