@mintplayer/ng-bootstrap 13.1.5 → 13.1.10

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