@mintplayer/ng-bootstrap 13.1.6 → 13.1.11

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 (132) hide show
  1. package/esm2020/index.mjs +2 -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/carousel/carousel/carousel.component.mjs +21 -7
  7. package/esm2020/lib/components/context-menu/context-menu.directive.mjs +63 -0
  8. package/esm2020/lib/components/context-menu/context-menu.module.mjs +26 -0
  9. package/esm2020/lib/components/context-menu/index.mjs +3 -0
  10. package/esm2020/lib/components/datepicker/datepicker.component.mjs +22 -0
  11. package/esm2020/lib/components/datepicker/datepicker.module.mjs +34 -0
  12. package/esm2020/lib/components/datepicker/index.mjs +3 -0
  13. package/esm2020/lib/components/dropdown/dropdown/dropdown.directive.mjs +58 -0
  14. package/esm2020/lib/components/dropdown/dropdown-menu/dropdown-menu.directive.mjs +91 -0
  15. package/esm2020/lib/components/dropdown/dropdown-toggle/dropdown-toggle.directive.mjs +28 -0
  16. package/esm2020/lib/components/dropdown/dropdown.module.mjs +44 -0
  17. package/esm2020/lib/components/dropdown/index.mjs +5 -0
  18. package/esm2020/lib/components/index.mjs +15 -4
  19. package/esm2020/lib/components/multiselect/index.mjs +3 -0
  20. package/esm2020/lib/components/multiselect/multiselect.component.mjs +36 -0
  21. package/esm2020/lib/components/multiselect/multiselect.module.mjs +34 -0
  22. package/esm2020/lib/components/navbar/nav-link/nav-link.directive.mjs +1 -1
  23. package/esm2020/lib/components/navbar/navbar/navbar.component.mjs +9 -6
  24. package/esm2020/lib/components/navbar/navbar-nav/navbar-nav.component.mjs +47 -9
  25. package/esm2020/lib/components/pagination/index.mjs +3 -0
  26. package/esm2020/lib/components/progress-bar/index.mjs +4 -0
  27. package/esm2020/lib/components/progress-bar/progress/progress.component.mjs +27 -0
  28. package/esm2020/lib/components/progress-bar/progress-bar/progress-bar.component.mjs +121 -0
  29. package/esm2020/lib/components/progress-bar/progress-bar.module.mjs +31 -0
  30. package/esm2020/lib/components/scrollspy/component/scrollspy.component.mjs +54 -14
  31. package/esm2020/lib/components/select2/component/select2.component.mjs +96 -0
  32. package/esm2020/lib/components/select2/directive/item-template.directive.mjs +19 -0
  33. package/esm2020/lib/components/select2/index.mjs +4 -0
  34. package/esm2020/lib/components/select2/select2.module.mjs +43 -0
  35. package/esm2020/lib/components/snackbar/component/snackbar.component.mjs +35 -0
  36. package/esm2020/lib/components/snackbar/directives/index.mjs +2 -0
  37. package/esm2020/lib/components/snackbar/directives/snackbar-close/snackbar-close.directive.mjs +27 -0
  38. package/esm2020/lib/components/snackbar/index.mjs +6 -0
  39. package/esm2020/lib/components/snackbar/interfaces/index.mjs +2 -0
  40. package/esm2020/lib/components/snackbar/interfaces/snackbar-animation-meta.mjs +2 -0
  41. package/esm2020/lib/components/snackbar/providers/snackbar-content.provider.mjs +3 -0
  42. package/esm2020/lib/components/snackbar/service/snackbar.service.mjs +49 -0
  43. package/esm2020/lib/components/snackbar/snackbar.module.mjs +38 -0
  44. package/esm2020/lib/components/toggle-button/index.mjs +3 -0
  45. package/esm2020/lib/components/toggle-button/toggle-button.component.mjs +42 -0
  46. package/esm2020/lib/components/toggle-button/toggle-button.module.mjs +26 -0
  47. package/esm2020/lib/components/tooltip/component/tooltip.component.mjs +25 -0
  48. package/esm2020/lib/components/tooltip/directive/tooltip.directive.mjs +110 -0
  49. package/esm2020/lib/components/tooltip/index.mjs +4 -0
  50. package/esm2020/lib/components/tooltip/providers/tooltip-content.provider.mjs +3 -0
  51. package/esm2020/lib/components/tooltip/tooltip.module.mjs +29 -0
  52. package/esm2020/lib/components/typeahead/index.mjs +3 -0
  53. package/esm2020/lib/components/typeahead/typeahead.component.mjs +90 -0
  54. package/esm2020/lib/components/typeahead/typeahead.module.mjs +38 -0
  55. package/esm2020/lib/enums/index.mjs +2 -1
  56. package/esm2020/lib/enums/position.enum.mjs +8 -0
  57. package/esm2020/lib/pipes/font-color/font-color.module.mjs +26 -0
  58. package/esm2020/lib/pipes/font-color/font-color.pipe.mjs +26 -0
  59. package/esm2020/lib/pipes/font-color/index.mjs +3 -0
  60. package/esm2020/lib/pipes/in-list/in-list.module.mjs +26 -0
  61. package/esm2020/lib/pipes/in-list/in-list.pipe.mjs +16 -0
  62. package/esm2020/lib/pipes/index.mjs +2 -0
  63. package/esm2020/lib/pipes/month-name/month-name.pipe.mjs +7 -2
  64. package/esm2020/lib/services/calendar-month/calendar-month.service.mjs +12 -14
  65. package/esm2020/lib/services/scroll-offset/scroll-offset.service.mjs +31 -0
  66. package/fesm2015/mintplayer-ng-bootstrap.mjs +1674 -270
  67. package/fesm2015/mintplayer-ng-bootstrap.mjs.map +1 -1
  68. package/fesm2020/mintplayer-ng-bootstrap.mjs +1658 -268
  69. package/fesm2020/mintplayer-ng-bootstrap.mjs.map +1 -1
  70. package/index.d.ts +1 -0
  71. package/lib/components/accordion/accordion-tab-header/accordion-tab-header.component.d.ts +1 -0
  72. package/lib/components/calendar/calendar.component.d.ts +21 -13
  73. package/lib/components/carousel/carousel/carousel.component.d.ts +4 -1
  74. package/lib/components/context-menu/context-menu.directive.d.ts +17 -0
  75. package/lib/components/context-menu/context-menu.module.d.ts +8 -0
  76. package/lib/components/context-menu/index.d.ts +2 -0
  77. package/lib/components/datepicker/datepicker.component.d.ts +10 -0
  78. package/lib/components/datepicker/datepicker.module.d.ts +10 -0
  79. package/lib/components/datepicker/index.d.ts +2 -0
  80. package/lib/components/dropdown/dropdown/dropdown.directive.d.ts +21 -0
  81. package/lib/components/dropdown/dropdown-menu/dropdown-menu.directive.d.ts +20 -0
  82. package/lib/components/dropdown/dropdown-toggle/dropdown-toggle.directive.d.ts +11 -0
  83. package/lib/components/dropdown/dropdown.module.d.ts +12 -0
  84. package/lib/components/dropdown/index.d.ts +4 -0
  85. package/lib/components/index.d.ts +14 -3
  86. package/lib/components/multiselect/index.d.ts +2 -0
  87. package/lib/components/multiselect/multiselect.component.d.ts +12 -0
  88. package/lib/components/multiselect/multiselect.module.d.ts +10 -0
  89. package/lib/components/navbar/navbar/navbar.component.d.ts +3 -3
  90. package/lib/components/navbar/navbar-nav/navbar-nav.component.d.ts +10 -4
  91. package/lib/components/pagination/index.d.ts +2 -0
  92. package/lib/components/progress-bar/index.d.ts +3 -0
  93. package/lib/components/progress-bar/progress/progress.component.d.ts +8 -0
  94. package/lib/components/progress-bar/progress-bar/progress-bar.component.d.ts +31 -0
  95. package/lib/components/progress-bar/progress-bar.module.d.ts +9 -0
  96. package/lib/components/scrollspy/component/scrollspy.component.d.ts +14 -4
  97. package/lib/components/select2/component/select2.component.d.ts +30 -0
  98. package/lib/components/select2/directive/item-template.directive.d.ts +9 -0
  99. package/lib/components/select2/index.d.ts +3 -0
  100. package/lib/components/select2/select2.module.d.ts +12 -0
  101. package/lib/components/snackbar/component/snackbar.component.d.ts +15 -0
  102. package/lib/components/snackbar/directives/index.d.ts +1 -0
  103. package/lib/components/snackbar/directives/snackbar-close/snackbar-close.directive.d.ts +11 -0
  104. package/lib/components/snackbar/index.d.ts +5 -0
  105. package/lib/components/snackbar/interfaces/index.d.ts +1 -0
  106. package/lib/components/snackbar/interfaces/snackbar-animation-meta.d.ts +7 -0
  107. package/lib/components/snackbar/providers/snackbar-content.provider.d.ts +2 -0
  108. package/lib/components/snackbar/service/snackbar.service.d.ts +14 -0
  109. package/lib/components/snackbar/snackbar.module.d.ts +9 -0
  110. package/lib/components/toggle-button/index.d.ts +2 -0
  111. package/lib/components/toggle-button/toggle-button.component.d.ts +15 -0
  112. package/lib/components/toggle-button/toggle-button.module.d.ts +8 -0
  113. package/lib/components/tooltip/component/tooltip.component.d.ts +11 -0
  114. package/lib/components/tooltip/directive/tooltip.directive.d.ts +20 -0
  115. package/lib/components/tooltip/index.d.ts +2 -0
  116. package/lib/components/tooltip/providers/tooltip-content.provider.d.ts +2 -0
  117. package/lib/components/tooltip/tooltip.module.d.ts +9 -0
  118. package/lib/components/typeahead/index.d.ts +2 -0
  119. package/lib/components/typeahead/typeahead.component.d.ts +29 -0
  120. package/lib/components/typeahead/typeahead.module.d.ts +11 -0
  121. package/lib/enums/index.d.ts +1 -0
  122. package/lib/enums/position.enum.d.ts +6 -0
  123. package/lib/pipes/font-color/font-color.module.d.ts +8 -0
  124. package/lib/pipes/font-color/font-color.pipe.d.ts +7 -0
  125. package/lib/pipes/font-color/index.d.ts +2 -0
  126. package/lib/pipes/in-list/in-list.module.d.ts +8 -0
  127. package/lib/pipes/in-list/in-list.pipe.d.ts +7 -0
  128. package/lib/pipes/index.d.ts +1 -0
  129. package/lib/pipes/month-name/month-name.pipe.d.ts +1 -1
  130. package/lib/services/calendar-month/calendar-month.service.d.ts +0 -1
  131. package/lib/services/scroll-offset/scroll-offset.service.d.ts +9 -0
  132. package/package.json +5 -2
@@ -1,15 +1,120 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Component, Input, NgModule, Injectable, Pipe, Directive, ContentChildren, EventEmitter, Output, 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, Observable, combineLatest, takeUntil as takeUntil$1, map as map$1 } from 'rxjs';
7
- import { map, takeUntil, take } from 'rxjs/operators';
8
- import '@mintplayer/ng-pagination';
9
- import { RouterModule } from '@angular/router';
10
- import * as i1$1 from '@mintplayer/ng-click-outside';
11
- import { ClickOutsideModule } from '@mintplayer/ng-click-outside';
12
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
+ }] });
13
118
 
14
119
  var Color;
15
120
  (function (Color) {
@@ -26,6 +131,14 @@ var Color;
26
131
  Color[Color["transparent"] = 10] = "transparent";
27
132
  })(Color || (Color = {}));
28
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
+
29
142
  class BsAlertComponent {
30
143
  constructor() {
31
144
  this.type = Color.primary;
@@ -36,10 +149,10 @@ class BsAlertComponent {
36
149
  }
37
150
  }
38
151
  BsAlertComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsAlertComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
39
- 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] });
40
153
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsAlertComponent, decorators: [{
41
154
  type: Component,
42
- 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"] }]
43
156
  }], ctorParameters: function () { return []; }, propDecorators: { type: [{
44
157
  type: Input
45
158
  }] } });
@@ -83,63 +196,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
83
196
  }]
84
197
  }] });
85
198
 
86
- class BsCardComponent {
87
- constructor() {
88
- }
89
- ngOnInit() {
90
- }
91
- ngAfterViewInit() {
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,25 +682,105 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
510
682
  }]
511
683
  }] });
512
684
 
513
- class BsDatatableColumnDirective {
514
- constructor(templateRef) {
515
- this.bsDatatableColumn = { name: '', sortable: true };
685
+ class BsContextMenuDirective {
686
+ constructor(overlay, templateRef, viewContainerRef, element) {
687
+ this.overlay = overlay;
516
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
+ };
707
+ }
708
+ clickAnywhere(ev) {
709
+ this.checkAndCloseExisting(ev);
710
+ }
711
+ close() {
712
+ if (this.overlayRef) {
713
+ this.overlayRef.detach();
714
+ this.overlayRef.dispose();
715
+ this.overlayRef = null;
716
+ }
717
+ }
718
+ checkAndCloseExisting(ev) {
719
+ if (this.overlayRef && !this.overlayRef.overlayElement.contains(ev.target)) {
720
+ this.close();
721
+ }
517
722
  }
518
723
  }
519
- BsDatatableColumnDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDatatableColumnDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
520
- BsDatatableColumnDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: BsDatatableColumnDirective, selector: "[bsDatatableColumn]", inputs: { bsDatatableColumn: "bsDatatableColumn" }, ngImport: i0 });
521
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDatatableColumnDirective, decorators: [{
724
+ 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 });
725
+ BsContextMenuDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: BsContextMenuDirective, selector: "[bsContextMenu]", host: { listeners: { "document:click": "clickAnywhere($event)", "window:blur": "close()" } }, ngImport: i0 });
726
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsContextMenuDirective, decorators: [{
522
727
  type: Directive,
523
728
  args: [{
524
- selector: '[bsDatatableColumn]'
729
+ selector: '[bsContextMenu]'
525
730
  }]
526
- }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; }, propDecorators: { bsDatatableColumn: [{
527
- type: Input
731
+ }], ctorParameters: function () { return [{ type: i1$1.Overlay }, { type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: i0.ElementRef, decorators: [{
732
+ type: Host
733
+ }, {
734
+ type: SkipSelf
735
+ }] }]; }, propDecorators: { clickAnywhere: [{
736
+ type: HostListener,
737
+ args: ['document:click', ['$event']]
738
+ }], close: [{
739
+ type: HostListener,
740
+ args: ['window:blur']
528
741
  }] } });
529
742
 
530
- class DatatableSettings {
531
- constructor(data) {
743
+ class BsContextMenuModule {
744
+ }
745
+ BsContextMenuModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsContextMenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
746
+ BsContextMenuModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsContextMenuModule, declarations: [BsContextMenuDirective], imports: [CommonModule], exports: [BsContextMenuDirective] });
747
+ BsContextMenuModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsContextMenuModule, imports: [[
748
+ CommonModule
749
+ ]] });
750
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsContextMenuModule, decorators: [{
751
+ type: NgModule,
752
+ args: [{
753
+ declarations: [
754
+ BsContextMenuDirective
755
+ ],
756
+ imports: [
757
+ CommonModule
758
+ ],
759
+ exports: [
760
+ BsContextMenuDirective
761
+ ]
762
+ }]
763
+ }] });
764
+
765
+ class BsDatatableColumnDirective {
766
+ constructor(templateRef) {
767
+ this.bsDatatableColumn = { name: '', sortable: true };
768
+ this.templateRef = templateRef;
769
+ }
770
+ }
771
+ BsDatatableColumnDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDatatableColumnDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
772
+ BsDatatableColumnDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: BsDatatableColumnDirective, selector: "[bsDatatableColumn]", inputs: { bsDatatableColumn: "bsDatatableColumn" }, ngImport: i0 });
773
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDatatableColumnDirective, decorators: [{
774
+ type: Directive,
775
+ args: [{
776
+ selector: '[bsDatatableColumn]'
777
+ }]
778
+ }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; }, propDecorators: { bsDatatableColumn: [{
779
+ type: Input
780
+ }] } });
781
+
782
+ class DatatableSettings {
783
+ constructor(data) {
532
784
  this.sortProperty = '';
533
785
  this.sortDirection = 'ascending';
534
786
  Object.assign(this, data);
@@ -588,8 +840,8 @@ class BsPaginationComponent {
588
840
  this.destroyed$ = new Subject();
589
841
  this.visibleNumberOfNumberBoxes$ =
590
842
  combineLatest([this.numberOfBoxes$, this.pageNumbers$, this.showArrows$])
591
- .pipe(takeUntil$1(this.destroyed$))
592
- .pipe(map$1(([numberOfBoxes, pageNumbers, showArrows]) => {
843
+ .pipe(takeUntil(this.destroyed$))
844
+ .pipe(map(([numberOfBoxes, pageNumbers, showArrows]) => {
593
845
  if (numberOfBoxes <= 0) {
594
846
  return pageNumbers.length;
595
847
  }
@@ -605,8 +857,8 @@ class BsPaginationComponent {
605
857
  }));
606
858
  this.shownPageNumbers$ =
607
859
  combineLatest([this.pageNumbers$, this.selectedPageNumber$, this.visibleNumberOfNumberBoxes$])
608
- .pipe(takeUntil$1(this.destroyed$))
609
- .pipe(map$1(([pageNumbers, selectedPageNumber, visibleNumberOfNumberBoxes]) => {
860
+ .pipe(takeUntil(this.destroyed$))
861
+ .pipe(map(([pageNumbers, selectedPageNumber, visibleNumberOfNumberBoxes]) => {
610
862
  let startIndex = 0;
611
863
  const half = Math.round((visibleNumberOfNumberBoxes - 1) / 2);
612
864
  if (pageNumbers.indexOf(selectedPageNumber) < half) {
@@ -627,18 +879,18 @@ class BsPaginationComponent {
627
879
  }));
628
880
  this.isFirstPage$ =
629
881
  combineLatest([this.pageNumbers$, this.selectedPageNumber$])
630
- .pipe(takeUntil$1(this.destroyed$))
631
- .pipe(map$1(([pageNumbers, selectedPageNumber]) => {
882
+ .pipe(takeUntil(this.destroyed$))
883
+ .pipe(map(([pageNumbers, selectedPageNumber]) => {
632
884
  return pageNumbers.indexOf(selectedPageNumber) === 0;
633
885
  }));
634
886
  this.isLastPage$ =
635
887
  combineLatest([this.pageNumbers$, this.selectedPageNumber$])
636
- .pipe(takeUntil$1(this.destroyed$))
637
- .pipe(map$1(([pageNumbers, selectedPageNumber]) => {
888
+ .pipe(takeUntil(this.destroyed$))
889
+ .pipe(map(([pageNumbers, selectedPageNumber]) => {
638
890
  return pageNumbers.indexOf(selectedPageNumber) === (pageNumbers.length - 1);
639
891
  }));
640
892
  this.selectedPageNumber$
641
- .pipe(takeUntil$1(this.destroyed$))
893
+ .pipe(takeUntil(this.destroyed$))
642
894
  .subscribe((selectedPageNumber) => {
643
895
  this.selectedPageNumberChange.emit(selectedPageNumber);
644
896
  });
@@ -820,6 +1072,242 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
820
1072
  }]
821
1073
  }] });
822
1074
 
1075
+ class BsDropdownMenuDirective extends ClickOutsideDirective {
1076
+ constructor(dropdown, document, viewContainerRef, templateRef, overlay, elementRef, zone, platformId) {
1077
+ super(elementRef, zone, platformId);
1078
+ this.dropdown = dropdown;
1079
+ this.viewContainerRef = viewContainerRef;
1080
+ this.templateRef = templateRef;
1081
+ this.overlay = overlay;
1082
+ this.wait = false;
1083
+ this.destroyed$ = new Subject();
1084
+ this.overlayRef = null;
1085
+ this.templatePortal = null;
1086
+ this.document = document;
1087
+ this.dropdown.isOpen$
1088
+ .pipe(takeUntil(this.destroyed$))
1089
+ .subscribe((isOpen) => {
1090
+ if (isOpen) {
1091
+ this.wait = true;
1092
+ setTimeout(() => this.wait = false, 100);
1093
+ this.overlayRef = this.overlay.create({
1094
+ hasBackdrop: this.dropdown.hasBackdrop,
1095
+ scrollStrategy: this.overlay.scrollStrategies.reposition(),
1096
+ positionStrategy: this.overlay.position()
1097
+ .flexibleConnectedTo(!this.dropdown.toggle ? dropdown.elementRef : this.dropdown.toggle.toggleButton)
1098
+ .withPositions([
1099
+ { originX: "start", originY: "bottom", overlayX: "start", overlayY: "top", offsetY: 0 },
1100
+ { originX: "start", originY: "top", overlayX: "start", overlayY: "bottom", offsetY: 0 },
1101
+ ]),
1102
+ });
1103
+ if (this.dropdown.hasBackdrop && this.dropdown.closeOnClickOutside) {
1104
+ this.overlayRef.backdropClick().subscribe(() => {
1105
+ this.dropdown.isOpen = false;
1106
+ });
1107
+ }
1108
+ this.templatePortal = new TemplatePortal(this.templateRef, this.viewContainerRef);
1109
+ this.overlayRef.attach(this.templatePortal);
1110
+ }
1111
+ else {
1112
+ if (this.overlayRef) {
1113
+ this.overlayRef.detach();
1114
+ this.overlayRef.dispose();
1115
+ this.overlayRef = null;
1116
+ }
1117
+ }
1118
+ });
1119
+ }
1120
+ clickedOutside(ev) {
1121
+ if (!this.wait) {
1122
+ if (!this.overlayRef?.overlayElement.contains(ev.target)) {
1123
+ this.dropdown.isOpen$.pipe(take(1)).subscribe((isOpen) => {
1124
+ if (isOpen && !this.dropdown.hasBackdrop && this.dropdown.closeOnClickOutside) {
1125
+ this.dropdown.isOpen = false;
1126
+ }
1127
+ });
1128
+ }
1129
+ }
1130
+ }
1131
+ }
1132
+ 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 });
1133
+ 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 });
1134
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDropdownMenuDirective, decorators: [{
1135
+ type: Directive,
1136
+ args: [{
1137
+ selector: '[bsDropdownMenu]',
1138
+ host: {
1139
+ '[class.show]': 'dropdown.isOpen',
1140
+ },
1141
+ }]
1142
+ }], ctorParameters: function () { return [{ type: BsDropdownDirective, decorators: [{
1143
+ type: Inject,
1144
+ args: [forwardRef(() => BsDropdownDirective)]
1145
+ }] }, { type: undefined, decorators: [{
1146
+ type: Inject,
1147
+ args: [DOCUMENT]
1148
+ }] }, { type: i0.ViewContainerRef }, { type: i0.TemplateRef }, { type: i1$1.Overlay }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: Object, decorators: [{
1149
+ type: Inject,
1150
+ args: [PLATFORM_ID]
1151
+ }] }]; }, propDecorators: { clickedOutside: [{
1152
+ type: HostListener,
1153
+ args: ['clickOutside', ['$event']]
1154
+ }] } });
1155
+
1156
+ class BsDropdownToggleDirective {
1157
+ constructor(dropdown, toggleButton) {
1158
+ this.dropdown = dropdown;
1159
+ this.toggleButton = toggleButton;
1160
+ }
1161
+ onClick() {
1162
+ this.dropdown.isOpen$.pipe(take(1)).subscribe((isOpen) => {
1163
+ this.dropdown.isOpen$.next(!isOpen);
1164
+ });
1165
+ }
1166
+ }
1167
+ 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 });
1168
+ BsDropdownToggleDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: BsDropdownToggleDirective, selector: "[bsDropdownToggle]", host: { listeners: { "click": "onClick()" } }, ngImport: i0 });
1169
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDropdownToggleDirective, decorators: [{
1170
+ type: Directive,
1171
+ args: [{
1172
+ selector: '[bsDropdownToggle]'
1173
+ }]
1174
+ }], ctorParameters: function () { return [{ type: BsDropdownDirective }, { type: i0.ElementRef }]; }, propDecorators: { onClick: [{
1175
+ type: HostListener,
1176
+ args: ['click']
1177
+ }] } });
1178
+
1179
+ class BsDropdownDirective {
1180
+ constructor(elementRef) {
1181
+ this.isOpen$ = new BehaviorSubject(false);
1182
+ this.toggle = null;
1183
+ this.hasBackdrop = false;
1184
+ this.sameWidth = false;
1185
+ this.closeOnClickOutside = false;
1186
+ this.isOpenChange = new EventEmitter();
1187
+ this.elementRef = elementRef;
1188
+ }
1189
+ //#region IsOpen
1190
+ get isOpen() {
1191
+ return this.isOpen$.value;
1192
+ }
1193
+ set isOpen(value) {
1194
+ if (this.isOpen$.value !== value) {
1195
+ this.isOpen$.next(value);
1196
+ this.isOpenChange.emit(value);
1197
+ }
1198
+ }
1199
+ //#endregion
1200
+ onBlur() {
1201
+ this.isOpen = false;
1202
+ }
1203
+ }
1204
+ BsDropdownDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDropdownDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
1205
+ 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" }, host: { listeners: { "window:blur": "onBlur()" } }, queries: [{ propertyName: "menu", first: true, predicate: BsDropdownMenuDirective, descendants: true }, { propertyName: "toggle", first: true, predicate: BsDropdownToggleDirective, descendants: true }], ngImport: i0 });
1206
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDropdownDirective, decorators: [{
1207
+ type: Directive,
1208
+ args: [{
1209
+ selector: '[bsDropdown]'
1210
+ }]
1211
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { menu: [{
1212
+ type: ContentChild,
1213
+ args: [BsDropdownMenuDirective, { static: false }]
1214
+ }], toggle: [{
1215
+ type: ContentChild,
1216
+ args: [BsDropdownToggleDirective, { static: false }]
1217
+ }], hasBackdrop: [{
1218
+ type: Input
1219
+ }], sameWidth: [{
1220
+ type: Input
1221
+ }], closeOnClickOutside: [{
1222
+ type: Input
1223
+ }], isOpenChange: [{
1224
+ type: Output
1225
+ }], isOpen: [{
1226
+ type: Input
1227
+ }], onBlur: [{
1228
+ type: HostListener,
1229
+ args: ['window:blur']
1230
+ }] } });
1231
+
1232
+ class BsDatepickerComponent {
1233
+ constructor() {
1234
+ this.selectedDate = new Date();
1235
+ this.currentMonth = new Date();
1236
+ }
1237
+ ngOnInit() {
1238
+ }
1239
+ }
1240
+ BsDatepickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDatepickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1241
+ 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 } });
1242
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDatepickerComponent, decorators: [{
1243
+ type: Component,
1244
+ 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: [""] }]
1245
+ }], ctorParameters: function () { return []; } });
1246
+
1247
+ class BsDropdownModule {
1248
+ }
1249
+ BsDropdownModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDropdownModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1250
+ BsDropdownModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDropdownModule, declarations: [BsDropdownDirective,
1251
+ BsDropdownToggleDirective,
1252
+ BsDropdownMenuDirective], imports: [CommonModule,
1253
+ OverlayModule,
1254
+ ClickOutsideModule], exports: [BsDropdownDirective,
1255
+ BsDropdownToggleDirective,
1256
+ BsDropdownMenuDirective] });
1257
+ BsDropdownModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDropdownModule, imports: [[
1258
+ CommonModule,
1259
+ OverlayModule,
1260
+ ClickOutsideModule
1261
+ ]] });
1262
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDropdownModule, decorators: [{
1263
+ type: NgModule,
1264
+ args: [{
1265
+ declarations: [
1266
+ BsDropdownDirective,
1267
+ BsDropdownToggleDirective,
1268
+ BsDropdownMenuDirective
1269
+ ],
1270
+ imports: [
1271
+ CommonModule,
1272
+ OverlayModule,
1273
+ ClickOutsideModule
1274
+ ],
1275
+ exports: [
1276
+ BsDropdownDirective,
1277
+ BsDropdownToggleDirective,
1278
+ BsDropdownMenuDirective
1279
+ ]
1280
+ }]
1281
+ }] });
1282
+
1283
+ class BsDatepickerModule {
1284
+ }
1285
+ BsDatepickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDatepickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1286
+ BsDatepickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDatepickerModule, declarations: [BsDatepickerComponent], imports: [CommonModule,
1287
+ BsCalendarModule,
1288
+ BsDropdownModule], exports: [BsDatepickerComponent] });
1289
+ BsDatepickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDatepickerModule, imports: [[
1290
+ CommonModule,
1291
+ BsCalendarModule,
1292
+ BsDropdownModule
1293
+ ]] });
1294
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDatepickerModule, decorators: [{
1295
+ type: NgModule,
1296
+ args: [{
1297
+ declarations: [
1298
+ BsDatepickerComponent
1299
+ ],
1300
+ imports: [
1301
+ CommonModule,
1302
+ BsCalendarModule,
1303
+ BsDropdownModule
1304
+ ],
1305
+ exports: [
1306
+ BsDatepickerComponent
1307
+ ]
1308
+ }]
1309
+ }] });
1310
+
823
1311
  class BsListGroupItemComponent {
824
1312
  constructor() {
825
1313
  }
@@ -871,46 +1359,142 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
871
1359
  }]
872
1360
  }] });
873
1361
 
1362
+ class BsMultiselectComponent {
1363
+ constructor() {
1364
+ this.items = [];
1365
+ this.selectedItems = [];
1366
+ }
1367
+ itemChange(item, event) {
1368
+ if (!!event.target.checked) {
1369
+ this.selectedItems.push(item);
1370
+ }
1371
+ else {
1372
+ this.selectedItems.splice(this.selectedItems.findIndex((i) => i === item), 1);
1373
+ }
1374
+ }
1375
+ ngOnInit() {
1376
+ }
1377
+ }
1378
+ BsMultiselectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsMultiselectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1379
+ 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"] }] });
1380
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsMultiselectComponent, decorators: [{
1381
+ type: Component,
1382
+ 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"] }]
1383
+ }], ctorParameters: function () { return []; }, propDecorators: { template: [{
1384
+ type: ContentChild,
1385
+ args: [TemplateRef]
1386
+ }], items: [{
1387
+ type: Input
1388
+ }], selectedItems: [{
1389
+ type: Input
1390
+ }] } });
1391
+
1392
+ class BsMultiselectModule {
1393
+ }
1394
+ BsMultiselectModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsMultiselectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1395
+ BsMultiselectModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsMultiselectModule, declarations: [BsMultiselectComponent], imports: [CommonModule,
1396
+ BsDropdownModule,
1397
+ FocusOnLoadModule], exports: [BsMultiselectComponent] });
1398
+ BsMultiselectModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsMultiselectModule, imports: [[
1399
+ CommonModule,
1400
+ BsDropdownModule,
1401
+ FocusOnLoadModule,
1402
+ ]] });
1403
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsMultiselectModule, decorators: [{
1404
+ type: NgModule,
1405
+ args: [{
1406
+ declarations: [
1407
+ BsMultiselectComponent
1408
+ ],
1409
+ imports: [
1410
+ CommonModule,
1411
+ BsDropdownModule,
1412
+ FocusOnLoadModule,
1413
+ ],
1414
+ exports: [
1415
+ BsMultiselectComponent
1416
+ ]
1417
+ }]
1418
+ }] });
1419
+
874
1420
  class BsNavbarComponent {
875
1421
  constructor() {
876
- this.isExpanded = false;
1422
+ this.isExpanded$ = new BehaviorSubject(false);
877
1423
  }
878
1424
  toggleExpanded() {
879
- this.isExpanded = !this.isExpanded;
1425
+ this.isExpanded$.pipe(take(1)).subscribe((isExpanded) => {
1426
+ this.isExpanded$.next(!isExpanded);
1427
+ });
880
1428
  }
881
1429
  }
882
1430
  BsNavbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsNavbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
883
- 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"] });
1431
+ 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"] });
884
1432
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsNavbarComponent, decorators: [{
885
1433
  type: Component,
886
- 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"] }]
887
- }], ctorParameters: function () { return []; }, propDecorators: { nav: [{
1434
+ 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"] }]
1435
+ }], propDecorators: { nav: [{
888
1436
  type: ViewChild,
889
1437
  args: ['nav']
890
1438
  }] } });
891
1439
 
892
1440
  class BsNavbarNavComponent {
893
1441
  constructor(bsNavbar) {
894
- //#region collapse
895
- this._collapse = true;
1442
+ this.collapse$ = new BehaviorSubject(true);
1443
+ this.windowWidth$ = new BehaviorSubject(null);
1444
+ this.isResizing$ = new BehaviorSubject(false);
1445
+ this.destroyed$ = new Subject();
896
1446
  this.bsNavbar = bsNavbar;
1447
+ this.showNavs$ = combineLatest([this.bsNavbar.isExpanded$, this.windowWidth$])
1448
+ .pipe(filter(([isExpanded, windowWidth]) => {
1449
+ return windowWidth !== null;
1450
+ }))
1451
+ .pipe(map(([isExpanded, windowWidth]) => {
1452
+ if (windowWidth === null) {
1453
+ throw 'windowWidth should not be null here';
1454
+ }
1455
+ else if (windowWidth >= 768) {
1456
+ return true;
1457
+ }
1458
+ else if (isExpanded) {
1459
+ return true;
1460
+ }
1461
+ else {
1462
+ return false;
1463
+ }
1464
+ }));
1465
+ this.windowWidth$
1466
+ .pipe(debounceTime(300), takeUntil(this.destroyed$))
1467
+ .subscribe(() => {
1468
+ this.isResizing$.next(false);
1469
+ });
1470
+ this.onWindowResize();
897
1471
  }
898
- ngOnInit() {
1472
+ ngOnDestroy() {
1473
+ this.destroyed$.next(true);
899
1474
  }
1475
+ //#region collapse
900
1476
  set collapse(value) {
901
- this._collapse = value;
1477
+ this.collapse$.next(value);
902
1478
  }
903
1479
  get collapse() {
904
- return this._collapse;
1480
+ return this.collapse$.value;
1481
+ }
1482
+ //#endregion
1483
+ onWindowResize() {
1484
+ this.isResizing$.next(true);
1485
+ this.windowWidth$.next(window.innerWidth);
905
1486
  }
906
1487
  }
907
1488
  BsNavbarNavComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsNavbarNavComponent, deps: [{ token: BsNavbarComponent }], target: i0.ɵɵFactoryTarget.Component });
908
- 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] });
1489
+ 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] });
909
1490
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsNavbarNavComponent, decorators: [{
910
1491
  type: Component,
911
- 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"] }]
1492
+ 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"] }]
912
1493
  }], ctorParameters: function () { return [{ type: BsNavbarComponent }]; }, propDecorators: { collapse: [{
913
1494
  type: Input
1495
+ }], onWindowResize: [{
1496
+ type: HostListener,
1497
+ args: ['window:resize']
914
1498
  }] } });
915
1499
 
916
1500
  class BsNavbarItemComponent {
@@ -969,7 +1553,7 @@ class BsNavbarDropdownComponent {
969
1553
  }
970
1554
  }
971
1555
  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 });
972
- 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"] }] });
1556
+ 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"] }] });
973
1557
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsNavbarDropdownComponent, decorators: [{
974
1558
  type: Component,
975
1559
  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"] }]
@@ -1128,97 +1712,619 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
1128
1712
  }]
1129
1713
  }] });
1130
1714
 
1131
- class BsAccordionTabComponent {
1132
- constructor(accordion) {
1133
- this.accordion = accordion;
1134
- }
1135
- ngOnInit() {
1136
- }
1137
- headerClicked(event) {
1138
- if (this.accordion.activeTab === this) {
1139
- this.accordion.activeTab = null;
1140
- }
1141
- else {
1142
- this.accordion.activeTab = this;
1143
- }
1715
+ class BsProgressComponent {
1716
+ constructor() {
1717
+ this.progressClass = true;
1718
+ this.height = null;
1719
+ this.isIndeterminate = false;
1144
1720
  }
1145
1721
  }
1146
- BsAccordionTabComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsAccordionTabComponent, deps: [{ token: BsAccordionComponent }], target: i0.ɵɵFactoryTarget.Component });
1147
- 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] });
1148
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsAccordionTabComponent, decorators: [{
1722
+ BsProgressComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsProgressComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1723
+ 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"] }] });
1724
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsProgressComponent, decorators: [{
1149
1725
  type: Component,
1150
- 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"] }]
1151
- }], ctorParameters: function () { return [{ type: BsAccordionComponent }]; } });
1726
+ 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"] }]
1727
+ }], propDecorators: { progressClass: [{
1728
+ type: HostBinding,
1729
+ args: ['class.progress']
1730
+ }], height: [{
1731
+ type: Input
1732
+ }, {
1733
+ type: HostBinding,
1734
+ args: ['style.height.px']
1735
+ }], isIndeterminate: [{
1736
+ type: Input
1737
+ }] } });
1152
1738
 
1153
- class BsAccordionComponent {
1739
+ class BsProgressBarComponent {
1154
1740
  constructor() {
1155
- this.activeTab = null;
1741
+ this.destroyed$ = new Subject();
1742
+ this.minimum$ = new BehaviorSubject(0);
1743
+ this.maximum$ = new BehaviorSubject(100);
1744
+ this.value$ = new BehaviorSubject(50);
1745
+ this.color$ = new BehaviorSubject(Color.primary);
1746
+ this.striped = false;
1747
+ this.animated = false;
1748
+ this.progressBar = true;
1749
+ this.colorClass = 'bg-primary';
1750
+ this.widthStyle = '0';
1751
+ this.role = 'progressbar';
1752
+ this.valueNow = 50;
1753
+ this.valueMin = 0;
1754
+ this.valueMax = 100;
1755
+ this.percentage$ = combineLatest([this.minimum$, this.maximum$, this.value$])
1756
+ .pipe(map(([minimum, maximum, value]) => {
1757
+ return (value - minimum) / (maximum - minimum) * 100;
1758
+ }));
1759
+ this.width$ = this.percentage$
1760
+ .pipe(map((width) => {
1761
+ return String(width) + '%';
1762
+ }));
1763
+ this.colorClass$ = this.color$
1764
+ .pipe(map((color) => {
1765
+ const name = Color[color];
1766
+ return `bg-${name}`;
1767
+ }));
1768
+ this.colorClass$
1769
+ .pipe(takeUntil(this.destroyed$))
1770
+ .subscribe((color) => {
1771
+ this.colorClass = color;
1772
+ });
1773
+ this.width$
1774
+ .pipe(takeUntil(this.destroyed$))
1775
+ .subscribe((width) => {
1776
+ this.widthStyle = width;
1777
+ });
1778
+ this.value$
1779
+ .pipe(takeUntil(this.destroyed$))
1780
+ .subscribe((value) => {
1781
+ this.valueNow = value;
1782
+ });
1783
+ this.minimum$
1784
+ .pipe(takeUntil(this.destroyed$))
1785
+ .subscribe((value) => {
1786
+ this.valueMin = value;
1787
+ });
1788
+ this.maximum$
1789
+ .pipe(takeUntil(this.destroyed$))
1790
+ .subscribe((value) => {
1791
+ this.valueMax = value;
1792
+ });
1156
1793
  }
1157
- ngOnInit() {
1794
+ set minimum(value) {
1795
+ this.minimum$.next(value);
1158
1796
  }
1159
- }
1160
- BsAccordionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsAccordionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1161
- 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: [""] });
1162
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsAccordionComponent, decorators: [{
1163
- type: Component,
1164
- args: [{ selector: 'bs-accordion', template: "<ng-content></ng-content>", styles: [""] }]
1165
- }], ctorParameters: function () { return []; }, propDecorators: { tabPages: [{
1166
- type: ContentChildren,
1167
- args: [BsAccordionTabComponent]
1168
- }] } });
1169
-
1170
- class BsAccordionTabHeaderComponent {
1171
- constructor(accordionTab, accordion) {
1172
- this.accordionTab = accordionTab;
1173
- this.accordion = accordion;
1797
+ set maximum(value) {
1798
+ this.maximum$.next(value);
1174
1799
  }
1175
- ngOnInit() {
1800
+ set value(value) {
1801
+ this.value$.next(value);
1176
1802
  }
1177
- headerClicked(event) {
1178
- if (this.accordion.activeTab === this.accordionTab) {
1179
- this.accordion.activeTab = null;
1180
- }
1181
- else {
1182
- this.accordion.activeTab = this.accordionTab;
1183
- }
1803
+ set color(value) {
1804
+ this.color$.next(value);
1805
+ }
1806
+ ngOnDestroy() {
1807
+ this.destroyed$.next(true);
1184
1808
  }
1185
1809
  }
1186
- 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 });
1187
- 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)\">\n <ng-content></ng-content>\n</div>", styles: [""] });
1188
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsAccordionTabHeaderComponent, decorators: [{
1810
+ BsProgressBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsProgressBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1811
+ 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: [""] });
1812
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsProgressBarComponent, decorators: [{
1189
1813
  type: Component,
1190
- args: [{ selector: 'bs-accordion-tab-header', template: "<div class=\"card-header cursor-pointer\" (click)=\"headerClicked($event)\">\n <ng-content></ng-content>\n</div>", styles: [""] }]
1191
- }], ctorParameters: function () { return [{ type: BsAccordionTabComponent }, { type: BsAccordionComponent }]; } });
1814
+ args: [{ selector: 'bs-progress-bar', template: "", styles: [""] }]
1815
+ }], ctorParameters: function () { return []; }, propDecorators: { minimum: [{
1816
+ type: Input
1817
+ }], maximum: [{
1818
+ type: Input
1819
+ }], value: [{
1820
+ type: Input
1821
+ }], color: [{
1822
+ type: Input
1823
+ }], striped: [{
1824
+ type: Input
1825
+ }, {
1826
+ type: HostBinding,
1827
+ args: ['class.progress-bar-striped']
1828
+ }], animated: [{
1829
+ type: Input
1830
+ }, {
1831
+ type: HostBinding,
1832
+ args: ['class.progress-bar-animated']
1833
+ }], progressBar: [{
1834
+ type: HostBinding,
1835
+ args: ['class.progress-bar']
1836
+ }], colorClass: [{
1837
+ type: HostBinding,
1838
+ args: ['class']
1839
+ }], widthStyle: [{
1840
+ type: HostBinding,
1841
+ args: ['style.width']
1842
+ }], role: [{
1843
+ type: HostBinding,
1844
+ args: ['attr.role']
1845
+ }], valueNow: [{
1846
+ type: HostBinding,
1847
+ args: ['attr.aria-valuenow']
1848
+ }], valueMin: [{
1849
+ type: HostBinding,
1850
+ args: ['attr.aria-valuemin']
1851
+ }], valueMax: [{
1852
+ type: HostBinding,
1853
+ args: ['attr.aria-valuemax']
1854
+ }] } });
1192
1855
 
1193
- class BsAccordionModule {
1856
+ class BsProgressBarModule {
1194
1857
  }
1195
- BsAccordionModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsAccordionModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1196
- BsAccordionModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsAccordionModule, declarations: [BsAccordionComponent,
1197
- BsAccordionTabComponent,
1198
- BsAccordionTabHeaderComponent], imports: [CommonModule,
1199
- BrowserAnimationsModule], exports: [BsAccordionComponent,
1200
- BsAccordionTabComponent,
1201
- BsAccordionTabHeaderComponent] });
1202
- BsAccordionModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsAccordionModule, imports: [[
1203
- CommonModule,
1204
- BrowserAnimationsModule
1858
+ BsProgressBarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsProgressBarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1859
+ BsProgressBarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsProgressBarModule, declarations: [BsProgressBarComponent,
1860
+ BsProgressComponent], imports: [CommonModule], exports: [BsProgressBarComponent,
1861
+ BsProgressComponent] });
1862
+ BsProgressBarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsProgressBarModule, imports: [[
1863
+ CommonModule
1205
1864
  ]] });
1206
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsAccordionModule, decorators: [{
1865
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsProgressBarModule, decorators: [{
1207
1866
  type: NgModule,
1208
1867
  args: [{
1209
1868
  declarations: [
1210
- BsAccordionComponent,
1211
- BsAccordionTabComponent,
1212
- BsAccordionTabHeaderComponent
1869
+ BsProgressBarComponent,
1870
+ BsProgressComponent
1871
+ ],
1872
+ imports: [
1873
+ CommonModule
1874
+ ],
1875
+ exports: [
1876
+ BsProgressBarComponent,
1877
+ BsProgressComponent
1878
+ ]
1879
+ }]
1880
+ }] });
1881
+
1882
+ class BsScrollOffsetService {
1883
+ constructor(routerConfig) {
1884
+ this.routerConfig = routerConfig;
1885
+ }
1886
+ getScrollOffset() {
1887
+ if (!this.routerConfig.scrollOffset) {
1888
+ return [0, 0];
1889
+ }
1890
+ else if (Array.isArray(this.routerConfig.scrollOffset)) {
1891
+ return this.routerConfig.scrollOffset;
1892
+ }
1893
+ else {
1894
+ return this.routerConfig.scrollOffset();
1895
+ }
1896
+ }
1897
+ }
1898
+ BsScrollOffsetService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsScrollOffsetService, deps: [{ token: ROUTER_CONFIGURATION }], target: i0.ɵɵFactoryTarget.Injectable });
1899
+ BsScrollOffsetService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsScrollOffsetService, providedIn: 'root' });
1900
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsScrollOffsetService, decorators: [{
1901
+ type: Injectable,
1902
+ args: [{
1903
+ providedIn: 'root'
1904
+ }]
1905
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
1906
+ type: Inject,
1907
+ args: [ROUTER_CONFIGURATION]
1908
+ }] }]; } });
1909
+
1910
+ class BsScrollspyDirective {
1911
+ constructor(element) {
1912
+ this.element = element;
1913
+ }
1914
+ }
1915
+ BsScrollspyDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsScrollspyDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
1916
+ BsScrollspyDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: BsScrollspyDirective, selector: "[bsScrollspy]", ngImport: i0 });
1917
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsScrollspyDirective, decorators: [{
1918
+ type: Directive,
1919
+ args: [{
1920
+ selector: '[bsScrollspy]'
1921
+ }]
1922
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; } });
1923
+
1924
+ class BsScrollspyComponent {
1925
+ constructor(scrollOffsetService, document, zone) {
1926
+ this.scrollOffsetService = scrollOffsetService;
1927
+ this.zone = zone;
1928
+ this.destroyed$ = new Subject();
1929
+ this.viewInit$ = new BehaviorSubject(false);
1930
+ this.contentInit$ = new BehaviorSubject(false);
1931
+ this.activeDirective = null;
1932
+ this.doc = document;
1933
+ combineLatest([this.viewInit$, this.contentInit$])
1934
+ .pipe(filter(([viewInit, contentInit]) => viewInit && contentInit), take(1))
1935
+ .pipe(takeUntil(this.destroyed$))
1936
+ .subscribe(() => {
1937
+ // this.setActiveDirective();
1938
+ this.scrollToCurrentInSpy();
1939
+ });
1940
+ }
1941
+ ngAfterViewInit() {
1942
+ this.viewInit$.next(true);
1943
+ }
1944
+ ngAfterContentInit() {
1945
+ this.contentInit$.next(true);
1946
+ }
1947
+ ngOnDestroy() {
1948
+ this.destroyed$.next(true);
1949
+ }
1950
+ onWindowScroll() {
1951
+ this.setActiveDirective();
1952
+ this.scrollToCurrentInSpy();
1953
+ }
1954
+ setActiveDirective() {
1955
+ const offsetY = this.scrollOffsetService.getScrollOffset()[1];
1956
+ const dirs = this.directives.filter((d) => d.element.nativeElement.getBoundingClientRect().y < offsetY);
1957
+ if (this.directives.length === 0) {
1958
+ this.activeDirective = null;
1959
+ }
1960
+ else if (dirs.length === 0) {
1961
+ this.activeDirective = this.directives.get(0) ?? null;
1962
+ }
1963
+ else {
1964
+ this.activeDirective = dirs[dirs.length - 1];
1965
+ }
1966
+ }
1967
+ scrollToCurrentInSpy() {
1968
+ if (window && (window.innerWidth >= 768)) {
1969
+ if (this.activeDirective) {
1970
+ const index = this.directives.toArray().findIndex((v, i) => v === this.activeDirective);
1971
+ const anchor = this.anchors.get(index);
1972
+ if (anchor && anchor.nativeElement.parentElement) {
1973
+ anchor.nativeElement.scrollIntoView({ block: 'nearest', inline: 'nearest' });
1974
+ }
1975
+ }
1976
+ }
1977
+ }
1978
+ scrollToHeader(directive) {
1979
+ const header = directive.element.nativeElement;
1980
+ const offsetY = this.scrollOffsetService.getScrollOffset()[1];
1981
+ const y = header.getBoundingClientRect().top + window.scrollY - offsetY + 1;
1982
+ window.scrollTo({ top: y, behavior: 'smooth' });
1983
+ }
1984
+ }
1985
+ BsScrollspyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsScrollspyComponent, deps: [{ token: BsScrollOffsetService }, { token: DOCUMENT }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
1986
+ 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"] }] });
1987
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsScrollspyComponent, decorators: [{
1988
+ type: Component,
1989
+ 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"] }]
1990
+ }], ctorParameters: function () { return [{ type: BsScrollOffsetService }, { type: undefined, decorators: [{
1991
+ type: Inject,
1992
+ args: [DOCUMENT]
1993
+ }] }, { type: i0.NgZone }]; }, propDecorators: { directives: [{
1994
+ type: ContentChildren,
1995
+ args: [BsScrollspyDirective, { descendants: true }]
1996
+ }], anchors: [{
1997
+ type: ViewChildren,
1998
+ args: ['anchor']
1999
+ }], onWindowScroll: [{
2000
+ type: HostListener,
2001
+ args: ['window:scroll', ['$event']]
2002
+ }] } });
2003
+
2004
+ class BsScrollspyModule {
2005
+ }
2006
+ BsScrollspyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsScrollspyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2007
+ BsScrollspyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsScrollspyModule, declarations: [BsScrollspyComponent,
2008
+ BsScrollspyDirective], imports: [CommonModule], exports: [BsScrollspyComponent,
2009
+ BsScrollspyDirective] });
2010
+ BsScrollspyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsScrollspyModule, imports: [[
2011
+ CommonModule
2012
+ ]] });
2013
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsScrollspyModule, decorators: [{
2014
+ type: NgModule,
2015
+ args: [{
2016
+ declarations: [
2017
+ BsScrollspyComponent,
2018
+ BsScrollspyDirective
2019
+ ],
2020
+ imports: [
2021
+ CommonModule
2022
+ ],
2023
+ exports: [
2024
+ BsScrollspyComponent,
2025
+ BsScrollspyDirective
2026
+ ]
2027
+ }]
2028
+ }] });
2029
+
2030
+ class BsInListPipe {
2031
+ transform(items, parameter) {
2032
+ return items.some(item => item.id === parameter);
2033
+ }
2034
+ }
2035
+ BsInListPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsInListPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
2036
+ BsInListPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsInListPipe, name: "inList" });
2037
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsInListPipe, decorators: [{
2038
+ type: Pipe,
2039
+ args: [{
2040
+ name: 'inList'
2041
+ }]
2042
+ }] });
2043
+
2044
+ class BsSelect2Component {
2045
+ constructor() {
2046
+ this.isOpen = false;
2047
+ this.suggestions$ = new BehaviorSubject([]);
2048
+ this.isLoading$ = new BehaviorSubject(false);
2049
+ this.hostWidth$ = new BehaviorSubject(200);
2050
+ this.searchterm = '';
2051
+ this.suggestions = [];
2052
+ this.provideSuggestions = new EventEmitter();
2053
+ this.selectedItems = [];
2054
+ this.isFocused = false;
2055
+ this.charWidth = 10;
2056
+ this.searchWidth = 20;
2057
+ }
2058
+ ngAfterViewInit() {
2059
+ this.onResize();
2060
+ }
2061
+ onProvideSuggestions(value) {
2062
+ this.searchWidth = this.charWidth * (this.searchterm.length + 2);
2063
+ if (value === '') {
2064
+ this.isOpen = false;
2065
+ this.suggestions$.next([]);
2066
+ }
2067
+ else {
2068
+ this.isLoading$.next(true);
2069
+ this.isOpen = true;
2070
+ this.provideSuggestions.emit(value);
2071
+ }
2072
+ }
2073
+ onSuggestionClicked(suggestion) {
2074
+ this.searchterm = '';
2075
+ this.isOpen = false;
2076
+ const existing = this.selectedItems.find((value, index) => value.id === suggestion.id);
2077
+ if (existing === undefined) {
2078
+ this.selectedItems.push(suggestion);
2079
+ }
2080
+ else {
2081
+ this.selectedItems.splice(this.selectedItems.indexOf(existing), 1);
2082
+ }
2083
+ this.searchBox.nativeElement.focus();
2084
+ }
2085
+ onRemoveItem(item, event) {
2086
+ event.stopPropagation();
2087
+ this.selectedItems.splice(this.selectedItems.indexOf(item), 1);
2088
+ this.focus();
2089
+ }
2090
+ ngOnInit() {
2091
+ }
2092
+ onResize() {
2093
+ this.hostWidth$.next(this.itemsBox.nativeElement.offsetWidth);
2094
+ }
2095
+ focus() {
2096
+ this.searchBox.nativeElement.focus();
2097
+ }
2098
+ }
2099
+ BsSelect2Component.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsSelect2Component, deps: [], target: i0.ɵɵFactoryTarget.Component });
2100
+ 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 } });
2101
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsSelect2Component, decorators: [{
2102
+ type: Component,
2103
+ 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"] }]
2104
+ }], ctorParameters: function () { return []; }, propDecorators: { searchBox: [{
2105
+ type: ViewChild,
2106
+ args: ['searchBox']
2107
+ }], itemsBox: [{
2108
+ type: ViewChild,
2109
+ args: ['itemsBox']
2110
+ }], searchterm: [{
2111
+ type: Input
2112
+ }], suggestions: [{
2113
+ type: Input
2114
+ }], provideSuggestions: [{
2115
+ type: Output
2116
+ }], selectedItems: [{
2117
+ type: Input
2118
+ }], isFocused: [{
2119
+ type: HostBinding,
2120
+ args: ['class.focus']
2121
+ }], onResize: [{
2122
+ type: HostListener,
2123
+ args: ['window:resize']
2124
+ }], focus: [{
2125
+ type: HostListener,
2126
+ args: ['click']
2127
+ }], defaultItemTemplate: [{
2128
+ type: ViewChild,
2129
+ args: ['defaultItemTemplate', { static: true }]
2130
+ }] } });
2131
+
2132
+ class BsItemTemplateDirective {
2133
+ constructor(select2component, templateRef) {
2134
+ this.select2component = select2component;
2135
+ this.select2component.itemTemplate = templateRef;
2136
+ }
2137
+ }
2138
+ 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 });
2139
+ BsItemTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: BsItemTemplateDirective, selector: "[bsItemTemplate]", ngImport: i0 });
2140
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsItemTemplateDirective, decorators: [{
2141
+ type: Directive,
2142
+ args: [{
2143
+ selector: '[bsItemTemplate]'
2144
+ }]
2145
+ }], ctorParameters: function () { return [{ type: BsSelect2Component }, { type: i0.TemplateRef }]; } });
2146
+
2147
+ class BsInListModule {
2148
+ }
2149
+ BsInListModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsInListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2150
+ BsInListModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsInListModule, declarations: [BsInListPipe], imports: [CommonModule], exports: [BsInListPipe] });
2151
+ BsInListModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsInListModule, imports: [[
2152
+ CommonModule
2153
+ ]] });
2154
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsInListModule, decorators: [{
2155
+ type: NgModule,
2156
+ args: [{
2157
+ declarations: [
2158
+ BsInListPipe
2159
+ ],
2160
+ imports: [
2161
+ CommonModule
2162
+ ],
2163
+ exports: [
2164
+ BsInListPipe
2165
+ ]
2166
+ }]
2167
+ }] });
2168
+
2169
+ class BsSelect2Module {
2170
+ }
2171
+ BsSelect2Module.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsSelect2Module, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2172
+ BsSelect2Module.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsSelect2Module, declarations: [BsSelect2Component,
2173
+ BsItemTemplateDirective], imports: [CommonModule,
2174
+ FormsModule,
2175
+ BsDropdownModule,
2176
+ BsInListModule], exports: [BsSelect2Component,
2177
+ BsItemTemplateDirective] });
2178
+ BsSelect2Module.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsSelect2Module, imports: [[
2179
+ CommonModule,
2180
+ FormsModule,
2181
+ BsDropdownModule,
2182
+ BsInListModule
2183
+ ]] });
2184
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsSelect2Module, decorators: [{
2185
+ type: NgModule,
2186
+ args: [{
2187
+ declarations: [
2188
+ BsSelect2Component,
2189
+ BsItemTemplateDirective
1213
2190
  ],
1214
2191
  imports: [
1215
2192
  CommonModule,
1216
- BrowserAnimationsModule
2193
+ FormsModule,
2194
+ BsDropdownModule,
2195
+ BsInListModule
1217
2196
  ],
1218
2197
  exports: [
1219
- BsAccordionComponent,
1220
- BsAccordionTabComponent,
1221
- BsAccordionTabHeaderComponent
2198
+ BsSelect2Component,
2199
+ BsItemTemplateDirective
2200
+ ]
2201
+ }]
2202
+ }] });
2203
+
2204
+ const SNACKBAR_CONTENT = new InjectionToken('SnackbarContent');
2205
+
2206
+ class BsSnackbarComponent {
2207
+ constructor(content) {
2208
+ this.displayBlock = true;
2209
+ this.width100 = true;
2210
+ this.instance = null;
2211
+ //#region Monitor @slideUpDown hooks
2212
+ this.animationState = '';
2213
+ this.animationStateChanged = new EventEmitter();
2214
+ this.content = content;
2215
+ }
2216
+ onAnimationChanged(event) {
2217
+ this.animationStateChanged.emit(event);
2218
+ }
2219
+ }
2220
+ BsSnackbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsSnackbarComponent, deps: [{ token: SNACKBAR_CONTENT }], target: i0.ɵɵFactoryTarget.Component });
2221
+ 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] });
2222
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsSnackbarComponent, decorators: [{
2223
+ type: Component,
2224
+ 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"] }]
2225
+ }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{
2226
+ type: Inject,
2227
+ args: [SNACKBAR_CONTENT]
2228
+ }] }]; }, propDecorators: { displayBlock: [{
2229
+ type: HostBinding,
2230
+ args: ['class.d-block']
2231
+ }], width100: [{
2232
+ type: HostBinding,
2233
+ args: ['class.w-100']
2234
+ }] } });
2235
+
2236
+ class BsSnackbarService {
2237
+ constructor(overlay, parentInjector, componentFactoryResolver) {
2238
+ this.overlay = overlay;
2239
+ this.parentInjector = parentInjector;
2240
+ this.componentFactoryResolver = componentFactoryResolver;
2241
+ }
2242
+ show(template) {
2243
+ const injector = Injector.create({
2244
+ providers: [{ provide: SNACKBAR_CONTENT, useValue: template }],
2245
+ parent: this.parentInjector
2246
+ });
2247
+ const portal = new ComponentPortal(BsSnackbarComponent, null, injector, this.componentFactoryResolver);
2248
+ const overlayRef = this.overlay.create({
2249
+ scrollStrategy: this.overlay.scrollStrategies.reposition(),
2250
+ positionStrategy: this.overlay.position()
2251
+ .global().centerHorizontally().bottom('0'),
2252
+ width: '100%'
2253
+ });
2254
+ const componentInstance = overlayRef.attach(portal);
2255
+ componentInstance.instance['instance'] = {
2256
+ component: componentInstance,
2257
+ overlay: overlayRef
2258
+ };
2259
+ return componentInstance.instance;
2260
+ }
2261
+ hide(snackbar) {
2262
+ snackbar.animationStateChanged.pipe(filter(ev => ev.phaseName === 'done' && ev.toState === 'void'), take(1)).subscribe(() => {
2263
+ snackbar['instance']?.overlay.dispose();
2264
+ });
2265
+ snackbar.animationState = 'void';
2266
+ }
2267
+ }
2268
+ 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 });
2269
+ BsSnackbarService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsSnackbarService, providedIn: 'root' });
2270
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsSnackbarService, decorators: [{
2271
+ type: Injectable,
2272
+ args: [{
2273
+ providedIn: 'root'
2274
+ }]
2275
+ }], ctorParameters: function () { return [{ type: i1$1.Overlay }, { type: i0.Injector }, { type: i0.ComponentFactoryResolver }]; } });
2276
+
2277
+ class BsSnackbarCloseDirective {
2278
+ constructor(snackbarService) {
2279
+ this.snackbarService = snackbarService;
2280
+ }
2281
+ onClick() {
2282
+ this.snackbarService.hide(this.bsSnackbarClose);
2283
+ }
2284
+ }
2285
+ BsSnackbarCloseDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsSnackbarCloseDirective, deps: [{ token: BsSnackbarService }], target: i0.ɵɵFactoryTarget.Directive });
2286
+ BsSnackbarCloseDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: BsSnackbarCloseDirective, selector: "[bsSnackbarClose]", inputs: { bsSnackbarClose: "bsSnackbarClose" }, host: { listeners: { "click": "onClick()" } }, ngImport: i0 });
2287
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsSnackbarCloseDirective, decorators: [{
2288
+ type: Directive,
2289
+ args: [{
2290
+ selector: '[bsSnackbarClose]'
2291
+ }]
2292
+ }], ctorParameters: function () { return [{ type: BsSnackbarService }]; }, propDecorators: { bsSnackbarClose: [{
2293
+ type: Input
2294
+ }], onClick: [{
2295
+ type: HostListener,
2296
+ args: ['click']
2297
+ }] } });
2298
+
2299
+ class BsSnackbarModule {
2300
+ }
2301
+ BsSnackbarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsSnackbarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2302
+ BsSnackbarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsSnackbarModule, declarations: [BsSnackbarComponent,
2303
+ BsSnackbarCloseDirective], imports: [CommonModule], exports: [BsSnackbarComponent,
2304
+ BsSnackbarCloseDirective] });
2305
+ BsSnackbarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsSnackbarModule, providers: [
2306
+ // { provide: BsSnackbarComponent, useExisting: forwardRef(() => BsSnackbarComponent) }
2307
+ // { provide: BsSnackbarComponent, useClass: BsSnackbarComponent }
2308
+ ], imports: [[
2309
+ CommonModule
2310
+ ]] });
2311
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsSnackbarModule, decorators: [{
2312
+ type: NgModule,
2313
+ args: [{
2314
+ declarations: [
2315
+ BsSnackbarComponent,
2316
+ BsSnackbarCloseDirective
2317
+ ],
2318
+ imports: [
2319
+ CommonModule
2320
+ ],
2321
+ exports: [
2322
+ BsSnackbarComponent,
2323
+ BsSnackbarCloseDirective
2324
+ ],
2325
+ providers: [
2326
+ // { provide: BsSnackbarComponent, useExisting: forwardRef(() => BsSnackbarComponent) }
2327
+ // { provide: BsSnackbarComponent, useClass: BsSnackbarComponent }
1222
2328
  ]
1223
2329
  }]
1224
2330
  }] });
@@ -1292,85 +2398,369 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
1292
2398
  }]
1293
2399
  }] });
1294
2400
 
1295
- class BsScrollspyDirective {
1296
- constructor(element) {
1297
- this.element = element;
2401
+ class BsToggleButtonComponent {
2402
+ constructor() {
2403
+ this.disableAnimations = true;
2404
+ //#region isToggled
2405
+ this._isToggled = false;
2406
+ this.isToggledChange = new EventEmitter();
2407
+ //#endregion
2408
+ this.offColor = '#CCCCCC';
2409
+ this.onColor = '#2196F3';
2410
+ this.round = true;
2411
+ }
2412
+ ngAfterViewInit() {
2413
+ this.disableAnimations = false;
2414
+ }
2415
+ get isToggled() {
2416
+ return this._isToggled;
2417
+ }
2418
+ set isToggled(value) {
2419
+ this._isToggled = value;
2420
+ this.isToggledChange.emit(this._isToggled);
1298
2421
  }
1299
2422
  }
1300
- BsScrollspyDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsScrollspyDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
1301
- BsScrollspyDirectivedir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: BsScrollspyDirective, selector: "[bsScrollspy]", ngImport: i0 });
1302
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsScrollspyDirective, decorators: [{
1303
- type: Directive,
2423
+ BsToggleButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsToggleButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2424
+ 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] });
2425
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsToggleButtonComponent, decorators: [{
2426
+ type: Component,
2427
+ 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"] }]
2428
+ }], propDecorators: { isToggledChange: [{
2429
+ type: Output
2430
+ }], isToggled: [{
2431
+ type: Input
2432
+ }], offColor: [{
2433
+ type: Input
2434
+ }], onColor: [{
2435
+ type: Input
2436
+ }], round: [{
2437
+ type: Input
2438
+ }] } });
2439
+
2440
+ class BsToggleButtonModule {
2441
+ }
2442
+ BsToggleButtonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsToggleButtonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2443
+ BsToggleButtonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsToggleButtonModule, declarations: [BsToggleButtonComponent], imports: [CommonModule], exports: [BsToggleButtonComponent] });
2444
+ BsToggleButtonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsToggleButtonModule, imports: [[
2445
+ CommonModule
2446
+ ]] });
2447
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsToggleButtonModule, decorators: [{
2448
+ type: NgModule,
1304
2449
  args: [{
1305
- selector: '[bsScrollspy]'
2450
+ declarations: [
2451
+ BsToggleButtonComponent
2452
+ ],
2453
+ imports: [
2454
+ CommonModule
2455
+ ],
2456
+ exports: [
2457
+ BsToggleButtonComponent
2458
+ ]
1306
2459
  }]
1307
- }], ctorParameters: function () { return [{ type: i0.ElementRef }]; } });
2460
+ }] });
1308
2461
 
1309
- class BsScrollspyComponent {
1310
- constructor(document) {
1311
- this.activeDirective = null;
1312
- this.doc = document;
2462
+ const TOOLTIP_CONTENT = new InjectionToken('TooltipContent');
2463
+
2464
+ class BsTooltipComponent {
2465
+ constructor(content) {
2466
+ this.positions = Position;
2467
+ this.position = Position.bottom;
2468
+ this.template = content;
1313
2469
  }
1314
- ngOnInit() {
2470
+ }
2471
+ BsTooltipComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsTooltipComponent, deps: [{ token: TOOLTIP_CONTENT }], target: i0.ɵɵFactoryTarget.Component });
2472
+ 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] });
2473
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsTooltipComponent, decorators: [{
2474
+ type: Component,
2475
+ 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"] }]
2476
+ }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{
2477
+ type: Inject,
2478
+ args: [TOOLTIP_CONTENT]
2479
+ }] }]; }, propDecorators: { position: [{
2480
+ type: Input
2481
+ }] } });
2482
+
2483
+ class BsTooltipDirective {
2484
+ constructor(overlay, templateRef, componentFactoryResolver, parentInjector, parent) {
2485
+ this.overlay = overlay;
2486
+ this.templateRef = templateRef;
2487
+ this.parentInjector = parentInjector;
2488
+ this.parent = parent;
2489
+ this.bsTooltip = Position.bottom;
2490
+ this.overlayRef = null;
2491
+ this.injector = Injector.create({
2492
+ providers: [{ provide: TOOLTIP_CONTENT, useValue: this.templateRef }],
2493
+ parent: this.parentInjector
2494
+ });
2495
+ this.portal = new ComponentPortal(BsTooltipComponent, null, this.injector, componentFactoryResolver);
2496
+ parent.nativeElement.onmouseenter = () => {
2497
+ this.showTooltip();
2498
+ };
2499
+ parent.nativeElement.onmouseleave = () => {
2500
+ this.hideTooltip();
2501
+ };
2502
+ }
2503
+ onBlur() {
2504
+ this.hideTooltip();
2505
+ }
2506
+ showTooltip() {
2507
+ const positions = [];
2508
+ switch (this.bsTooltip) {
2509
+ case Position.bottom:
2510
+ {
2511
+ positions.push({
2512
+ originX: "center",
2513
+ originY: "bottom",
2514
+ overlayX: "center",
2515
+ overlayY: "top"
2516
+ });
2517
+ }
2518
+ break;
2519
+ case Position.top:
2520
+ {
2521
+ positions.push({
2522
+ originX: "center",
2523
+ originY: "top",
2524
+ overlayX: "center",
2525
+ overlayY: "bottom"
2526
+ });
2527
+ }
2528
+ break;
2529
+ case Position.left:
2530
+ {
2531
+ positions.push({
2532
+ originX: "start",
2533
+ originY: "center",
2534
+ overlayX: "end",
2535
+ overlayY: "center",
2536
+ });
2537
+ }
2538
+ break;
2539
+ case Position.right:
2540
+ {
2541
+ positions.push({
2542
+ originX: "end",
2543
+ originY: "center",
2544
+ overlayX: "start",
2545
+ overlayY: "center"
2546
+ });
2547
+ }
2548
+ break;
2549
+ }
2550
+ this.overlayRef = this.overlay.create({
2551
+ scrollStrategy: this.overlay.scrollStrategies.reposition(),
2552
+ positionStrategy: this.overlay.position()
2553
+ .flexibleConnectedTo(this.parent)
2554
+ .withPositions(positions),
2555
+ });
2556
+ const component = this.overlayRef.attach(this.portal);
2557
+ component.instance.position = this.bsTooltip;
2558
+ }
2559
+ hideTooltip() {
2560
+ if (this.overlayRef) {
2561
+ this.overlayRef.detach();
2562
+ this.overlayRef.dispose();
2563
+ this.overlayRef = null;
2564
+ }
2565
+ }
2566
+ }
2567
+ 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 });
2568
+ BsTooltipDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: BsTooltipDirective, selector: "*[bsTooltip]", inputs: { bsTooltip: "bsTooltip" }, host: { listeners: { "window:blur": "onBlur()" } }, ngImport: i0 });
2569
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsTooltipDirective, decorators: [{
2570
+ type: Directive,
2571
+ args: [{
2572
+ selector: '*[bsTooltip]'
2573
+ }]
2574
+ }], ctorParameters: function () { return [{ type: i1$1.Overlay }, { type: i0.TemplateRef }, { type: i0.ComponentFactoryResolver }, { type: i0.Injector }, { type: i0.ElementRef, decorators: [{
2575
+ type: Host
2576
+ }, {
2577
+ type: SkipSelf
2578
+ }] }]; }, propDecorators: { onBlur: [{
2579
+ type: HostListener,
2580
+ args: ['window:blur']
2581
+ }], bsTooltip: [{
2582
+ type: Input
2583
+ }] } });
2584
+
2585
+ class BsTooltipModule {
2586
+ }
2587
+ BsTooltipModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsTooltipModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2588
+ BsTooltipModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsTooltipModule, declarations: [BsTooltipDirective,
2589
+ BsTooltipComponent], imports: [CommonModule], exports: [BsTooltipDirective] });
2590
+ BsTooltipModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsTooltipModule, imports: [[
2591
+ CommonModule
2592
+ ]] });
2593
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsTooltipModule, decorators: [{
2594
+ type: NgModule,
2595
+ args: [{
2596
+ declarations: [
2597
+ BsTooltipDirective,
2598
+ BsTooltipComponent
2599
+ ],
2600
+ imports: [
2601
+ CommonModule
2602
+ ],
2603
+ exports: [
2604
+ BsTooltipDirective
2605
+ ]
2606
+ }]
2607
+ }] });
2608
+
2609
+ class BsTypeaheadComponent {
2610
+ constructor() {
2611
+ this.isOpen = false;
2612
+ this.suggestions$ = new BehaviorSubject([]);
2613
+ this.isLoading$ = new BehaviorSubject(false);
2614
+ this.hostWidth$ = new BehaviorSubject(200);
2615
+ this.destroyed$ = new Subject();
2616
+ this.searchterm = '';
2617
+ this.isLoadingText = 'Loading...';
2618
+ this.noSuggestionsText = 'No suggestions found';
2619
+ this.provideSuggestions = new EventEmitter();
2620
+ this.suggestionSelected = new EventEmitter();
2621
+ this.searchtermChange = new EventEmitter();
2622
+ this.submitted = new EventEmitter();
2623
+ this.showNoSuggestions$ = this.suggestions$
2624
+ .pipe(map(suggestions => suggestions.length === 0));
1315
2625
  }
1316
2626
  ngAfterViewInit() {
1317
- this.onWindowScroll();
2627
+ this.onResize();
1318
2628
  }
1319
- onWindowScroll() {
1320
- const dirs = this.directives.filter((d) => d.element.nativeElement.getBoundingClientRect().y <= 0);
1321
- if (this.directives.length === 0) {
1322
- this.activeDirective = null;
1323
- }
1324
- else if (dirs.length === 0) {
1325
- this.activeDirective = this.directives.get(0) ?? null;
2629
+ onProvideSuggestions(value) {
2630
+ this.searchtermChange.emit(value);
2631
+ if (value === '') {
2632
+ this.isOpen = false;
2633
+ this.suggestions$.next([]);
1326
2634
  }
1327
2635
  else {
1328
- this.activeDirective = dirs[dirs.length - 1];
2636
+ this.isLoading$.next(true);
2637
+ this.isOpen = true;
2638
+ this.provideSuggestions.emit(value);
1329
2639
  }
1330
2640
  }
1331
- scrollToHeader(directive) {
1332
- const header = directive.element.nativeElement;
1333
- header.scrollIntoView();
2641
+ set suggestions(value) {
2642
+ this.isLoading$.next(false);
2643
+ this.suggestions$.next(value);
2644
+ }
2645
+ suggestionClicked(suggestion) {
2646
+ this.searchterm = suggestion.text;
2647
+ this.searchtermChange.emit(this.searchterm);
2648
+ this.isOpen = false;
2649
+ this.suggestionSelected.emit(suggestion);
2650
+ }
2651
+ onSubmit() {
2652
+ this.isOpen = false;
2653
+ this.submitted.emit(this.searchterm);
2654
+ }
2655
+ focus() {
2656
+ this.textbox.nativeElement.focus();
2657
+ }
2658
+ onResize() {
2659
+ this.hostWidth$.next(this.textbox.nativeElement.offsetWidth);
1334
2660
  }
1335
2661
  }
1336
- BsScrollspyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsScrollspyComponent, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component });
1337
- 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:25%;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"] }] });
1338
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsScrollspyComponent, decorators: [{
2662
+ BsTypeaheadComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsTypeaheadComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2663
+ 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 } });
2664
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsTypeaheadComponent, decorators: [{
1339
2665
  type: Component,
1340
- 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:25%;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"] }]
1341
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
1342
- type: Inject,
1343
- args: [DOCUMENT]
1344
- }] }]; }, propDecorators: { directives: [{
1345
- type: ContentChildren,
1346
- args: [BsScrollspyDirective, { descendants: true }]
1347
- }], onWindowScroll: [{
2666
+ 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"] }]
2667
+ }], ctorParameters: function () { return []; }, propDecorators: { textbox: [{
2668
+ type: ViewChild,
2669
+ args: ['textbox']
2670
+ }], searchterm: [{
2671
+ type: Input
2672
+ }], isLoadingText: [{
2673
+ type: Input
2674
+ }], noSuggestionsText: [{
2675
+ type: Input
2676
+ }], provideSuggestions: [{
2677
+ type: Output
2678
+ }], suggestionSelected: [{
2679
+ type: Output
2680
+ }], searchtermChange: [{
2681
+ type: Output
2682
+ }], submitted: [{
2683
+ type: Output
2684
+ }], suggestions: [{
2685
+ type: Input
2686
+ }], onResize: [{
1348
2687
  type: HostListener,
1349
- args: ['window:scroll', ['$event']]
2688
+ args: ['window:resize']
1350
2689
  }] } });
1351
2690
 
1352
- class BsScrollspyModule {
2691
+ class BsTypeaheadModule {
1353
2692
  }
1354
- BsScrollspyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsScrollspyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1355
- BsScrollspyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsScrollspyModule, declarations: [BsScrollspyComponent,
1356
- BsScrollspyDirective], imports: [CommonModule], exports: [BsScrollspyComponent,
1357
- BsScrollspyDirective] });
1358
- BsScrollspyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsScrollspyModule, imports: [[
2693
+ BsTypeaheadModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsTypeaheadModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2694
+ BsTypeaheadModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsTypeaheadModule, declarations: [BsTypeaheadComponent], imports: [CommonModule,
2695
+ FormsModule,
2696
+ BsDropdownModule,
2697
+ BsProgressBarModule], exports: [BsTypeaheadComponent] });
2698
+ BsTypeaheadModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsTypeaheadModule, imports: [[
2699
+ CommonModule,
2700
+ FormsModule,
2701
+ BsDropdownModule,
2702
+ BsProgressBarModule
2703
+ ]] });
2704
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsTypeaheadModule, decorators: [{
2705
+ type: NgModule,
2706
+ args: [{
2707
+ declarations: [
2708
+ BsTypeaheadComponent
2709
+ ],
2710
+ imports: [
2711
+ CommonModule,
2712
+ FormsModule,
2713
+ BsDropdownModule,
2714
+ BsProgressBarModule
2715
+ ],
2716
+ exports: [
2717
+ BsTypeaheadComponent
2718
+ ]
2719
+ }]
2720
+ }] });
2721
+
2722
+ class BsFontColorPipe {
2723
+ transform(color_hex) {
2724
+ if (color_hex === undefined || color_hex === null || color_hex.length < 7 || typeof (color_hex) !== 'string') {
2725
+ return '#FFFFFF';
2726
+ }
2727
+ const R_HEX = color_hex.substr(1, 2);
2728
+ const G_HEX = color_hex.substr(3, 2);
2729
+ const B_HEX = color_hex.substr(5, 2);
2730
+ const R_DEC = parseInt(R_HEX, 16);
2731
+ const G_DEC = parseInt(G_HEX, 16);
2732
+ const B_DEC = parseInt(B_HEX, 16);
2733
+ const CONTRAST_HEX = R_DEC * 0.299 + G_DEC * 0.587 + B_DEC * 0.114 > 186 ? '#000000' : '#FFFFFF';
2734
+ return CONTRAST_HEX;
2735
+ }
2736
+ }
2737
+ BsFontColorPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsFontColorPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
2738
+ BsFontColorPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsFontColorPipe, name: "bsFontColor" });
2739
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsFontColorPipe, decorators: [{
2740
+ type: Pipe,
2741
+ args: [{
2742
+ name: 'bsFontColor'
2743
+ }]
2744
+ }] });
2745
+
2746
+ class BsFontColorPipeModule {
2747
+ }
2748
+ BsFontColorPipeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsFontColorPipeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2749
+ BsFontColorPipeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsFontColorPipeModule, declarations: [BsFontColorPipe], imports: [CommonModule], exports: [BsFontColorPipe] });
2750
+ BsFontColorPipeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsFontColorPipeModule, imports: [[
1359
2751
  CommonModule
1360
2752
  ]] });
1361
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsScrollspyModule, decorators: [{
2753
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsFontColorPipeModule, decorators: [{
1362
2754
  type: NgModule,
1363
2755
  args: [{
1364
2756
  declarations: [
1365
- BsScrollspyComponent,
1366
- BsScrollspyDirective
2757
+ BsFontColorPipe
1367
2758
  ],
1368
2759
  imports: [
1369
2760
  CommonModule
1370
2761
  ],
1371
2762
  exports: [
1372
- BsScrollspyComponent,
1373
- BsScrollspyDirective
2763
+ BsFontColorPipe
1374
2764
  ]
1375
2765
  }]
1376
2766
  }] });
@@ -1379,5 +2769,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
1379
2769
  * Generated bundle index. Do not edit.
1380
2770
  */
1381
2771
 
1382
- export { BsAccordionComponent, BsAccordionModule, BsAccordionTabComponent, BsAccordionTabHeaderComponent, BsAlertCloseComponent, BsAlertComponent, BsAlertModule, BsCalendarComponent, BsCalendarModule, BsCardComponent, BsCardHeaderComponent, BsCardModule, BsCarouselComponent, BsCarouselImageDirective, BsCarouselModule, BsDatatableColumnDirective, BsDatatableComponent, BsDatatableModule, BsListGroupComponent, BsListGroupItemComponent, BsListGroupModule, BsNavbarComponent, BsNavbarDropdownComponent, BsNavbarItemComponent, BsNavbarModule, BsNavbarNavComponent, BsRowTemplateDirective, BsScrollspyComponent, BsScrollspyDirective, BsScrollspyModule, BsTabControlComponent, BsTabControlModule, BsTabPageComponent, Color, DatatableSettings, DropdownToggleDirective, NavLinkDirective, NavbarContentDirective };
2772
+ 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 };
1383
2773
  //# sourceMappingURL=mintplayer-ng-bootstrap.mjs.map