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