@mintplayer/ng-bootstrap 13.1.11 → 13.1.16

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 (172) hide show
  1. package/_bootstrap.scss +14 -0
  2. package/esm2020/lib/components/accordion/accordion/accordion.component.mjs +2 -4
  3. package/esm2020/lib/components/accordion/accordion-tab/accordion-tab.component.mjs +1 -11
  4. package/esm2020/lib/components/accordion/accordion-tab-header/accordion-tab-header.component.mjs +3 -8
  5. package/esm2020/lib/components/accordion/accordion.module.mjs +4 -8
  6. package/esm2020/lib/components/alert/alert/alert.component.mjs +2 -4
  7. package/esm2020/lib/components/alert/alert-close/alert-close.component.mjs +1 -3
  8. package/esm2020/lib/components/calendar/calendar.component.mjs +16 -15
  9. package/esm2020/lib/components/card/card/card.component.mjs +4 -10
  10. package/esm2020/lib/components/card/card-header/card-header.component.mjs +2 -6
  11. package/esm2020/lib/components/carousel/carousel/carousel.component.mjs +9 -7
  12. package/esm2020/lib/components/carousel/carousel-image/carousel-image.directive.mjs +1 -1
  13. package/esm2020/lib/components/code-snippet/code-snippet.component.mjs +28 -0
  14. package/esm2020/lib/components/code-snippet/code-snippet.module.mjs +34 -0
  15. package/esm2020/lib/components/code-snippet/index.mjs +3 -0
  16. package/esm2020/lib/components/context-menu/context-menu.directive.mjs +23 -9
  17. package/esm2020/lib/components/context-menu/context-menu.module.mjs +8 -4
  18. package/esm2020/lib/components/copy/copy.directive.mjs +45 -0
  19. package/esm2020/lib/components/copy/copy.module.mjs +26 -0
  20. package/esm2020/lib/components/copy/index.mjs +3 -0
  21. package/esm2020/lib/components/datatable/datatable/datatable.component.mjs +6 -8
  22. package/esm2020/lib/components/datatable/datatable-settings.mjs +1 -1
  23. package/esm2020/lib/components/datatable/datatable.module.mjs +1 -1
  24. package/esm2020/lib/components/datatable/row-template/row-template.directive.mjs +3 -3
  25. package/esm2020/lib/components/datepicker/datepicker.component.mjs +32 -7
  26. package/esm2020/lib/components/dropdown/dropdown/dropdown.directive.mjs +1 -1
  27. package/esm2020/lib/components/dropdown/dropdown-menu/dropdown-menu.directive.mjs +14 -16
  28. package/esm2020/lib/components/file-upload/component/file-upload.component.mjs +85 -0
  29. package/esm2020/lib/components/file-upload/directive/file-upload-template.directive.mjs +18 -0
  30. package/esm2020/lib/components/file-upload/file-upload.mjs +2 -0
  31. package/esm2020/lib/components/file-upload/file-upload.module.mjs +43 -0
  32. package/esm2020/lib/components/file-upload/index.mjs +5 -0
  33. package/esm2020/lib/components/for/for.directive.mjs +38 -0
  34. package/esm2020/lib/components/for/for.module.mjs +26 -0
  35. package/esm2020/lib/components/for/index.mjs +3 -0
  36. package/esm2020/lib/components/index.mjs +7 -1
  37. package/esm2020/lib/components/modal/component/index.mjs +3 -0
  38. package/esm2020/lib/components/modal/component/modal/modal.component.mjs +13 -0
  39. package/esm2020/lib/components/modal/component/modal-content/modal-content.component.mjs +27 -0
  40. package/esm2020/lib/components/modal/directives/index.mjs +4 -0
  41. package/esm2020/lib/components/modal/directives/modal-body/modal-body.directive.mjs +18 -0
  42. package/esm2020/lib/components/modal/directives/modal-footer/modal-footer.directive.mjs +18 -0
  43. package/esm2020/lib/components/modal/directives/modal-header/modal-header.directive.mjs +18 -0
  44. package/esm2020/lib/components/modal/index.mjs +5 -0
  45. package/esm2020/lib/components/modal/interfaces/index.mjs +2 -0
  46. package/esm2020/lib/components/modal/interfaces/modal-animation-meta.mjs +2 -0
  47. package/esm2020/lib/components/modal/modal.module.mjs +48 -0
  48. package/esm2020/lib/components/modal/providers/modal-content.provider.mjs +3 -0
  49. package/esm2020/lib/components/modal/service/modal.service.mjs +52 -0
  50. package/esm2020/lib/components/multiselect/component/multiselect.component.mjs +34 -0
  51. package/esm2020/lib/components/multiselect/directives/button-template/button-template.directive.mjs +18 -0
  52. package/esm2020/lib/components/multiselect/directives/footer-template/footer-template.directive.mjs +18 -0
  53. package/esm2020/lib/components/multiselect/directives/header-template/header-template.directive.mjs +18 -0
  54. package/esm2020/lib/components/multiselect/directives/index.mjs +4 -0
  55. package/esm2020/lib/components/multiselect/index.mjs +3 -2
  56. package/esm2020/lib/components/multiselect/multiselect.module.mjs +21 -6
  57. package/esm2020/lib/components/navbar/index.mjs +2 -1
  58. package/esm2020/lib/components/navbar/navbar/navbar.component.mjs +3 -3
  59. package/esm2020/lib/components/navbar/navbar-brand/navbar-brand.component.mjs +22 -0
  60. package/esm2020/lib/components/navbar/navbar-dropdown/navbar-dropdown.component.mjs +7 -6
  61. package/esm2020/lib/components/navbar/navbar-item/navbar-item.component.mjs +16 -5
  62. package/esm2020/lib/components/navbar/navbar-nav/navbar-nav.component.mjs +1 -1
  63. package/esm2020/lib/components/navbar/navbar.module.mjs +10 -5
  64. package/esm2020/lib/components/pagination/pagination/pagination.component.mjs +88 -71
  65. package/esm2020/lib/components/rating/index.mjs +3 -0
  66. package/esm2020/lib/components/rating/rating.component.mjs +72 -0
  67. package/esm2020/lib/components/rating/rating.module.mjs +26 -0
  68. package/esm2020/lib/components/select2/component/select2.component.mjs +7 -9
  69. package/esm2020/lib/components/snackbar/service/snackbar.service.mjs +4 -3
  70. package/esm2020/lib/components/snackbar/snackbar.module.mjs +8 -4
  71. package/esm2020/lib/components/tab-control/tab-control/tab-control.component.mjs +8 -7
  72. package/esm2020/lib/components/tab-control/tab-page/tab-page.component.mjs +4 -6
  73. package/esm2020/lib/components/toggle-button/toggle-button.component.mjs +19 -15
  74. package/esm2020/lib/components/tooltip/directive/tooltip.directive.mjs +4 -4
  75. package/esm2020/lib/components/tooltip/tooltip.module.mjs +8 -4
  76. package/esm2020/lib/interfaces/date-day-of-month.mjs +1 -1
  77. package/esm2020/lib/interfaces/index.mjs +2 -1
  78. package/esm2020/lib/interfaces/week.mjs +1 -1
  79. package/esm2020/lib/interfaces/weekday.mjs +2 -0
  80. package/esm2020/lib/pipes/format-bytes/format-bytes.module.mjs +26 -0
  81. package/esm2020/lib/pipes/format-bytes/format-bytes.pipe.mjs +23 -0
  82. package/esm2020/lib/pipes/format-bytes/index.mjs +3 -0
  83. package/esm2020/lib/pipes/index.mjs +2 -1
  84. package/esm2020/lib/services/calendar-month/calendar-month.service.mjs +34 -18
  85. package/fesm2015/mintplayer-ng-bootstrap.mjs +1299 -567
  86. package/fesm2015/mintplayer-ng-bootstrap.mjs.map +1 -1
  87. package/fesm2020/mintplayer-ng-bootstrap.mjs +1297 -571
  88. package/fesm2020/mintplayer-ng-bootstrap.mjs.map +1 -1
  89. package/lib/components/accordion/accordion/accordion.component.d.ts +1 -4
  90. package/lib/components/accordion/accordion-tab/accordion-tab.component.d.ts +1 -4
  91. package/lib/components/accordion/accordion-tab-header/accordion-tab-header.component.d.ts +1 -4
  92. package/lib/components/accordion/accordion.module.d.ts +1 -2
  93. package/lib/components/alert/alert/alert.component.d.ts +1 -4
  94. package/lib/components/alert/alert-close/alert-close.component.d.ts +1 -3
  95. package/lib/components/calendar/calendar.component.d.ts +4 -5
  96. package/lib/components/card/card/card.component.d.ts +1 -6
  97. package/lib/components/card/card-header/card-header.component.d.ts +1 -4
  98. package/lib/components/carousel/carousel/carousel.component.d.ts +9 -9
  99. package/lib/components/code-snippet/code-snippet.component.d.ts +12 -0
  100. package/lib/components/code-snippet/code-snippet.module.d.ts +10 -0
  101. package/lib/components/code-snippet/index.d.ts +2 -0
  102. package/lib/components/context-menu/context-menu.directive.d.ts +3 -2
  103. package/lib/components/context-menu/context-menu.module.d.ts +2 -1
  104. package/lib/components/copy/copy.directive.d.ts +11 -0
  105. package/lib/components/copy/copy.module.d.ts +8 -0
  106. package/lib/components/copy/index.d.ts +2 -0
  107. package/lib/components/datatable/datatable/datatable.component.d.ts +4 -5
  108. package/lib/components/datatable/row-template/row-template.directive.d.ts +1 -1
  109. package/lib/components/datepicker/datepicker.component.d.ts +11 -7
  110. package/lib/components/dropdown/dropdown-menu/dropdown-menu.directive.d.ts +3 -3
  111. package/lib/components/file-upload/component/file-upload.component.d.ts +19 -0
  112. package/lib/components/file-upload/directive/file-upload-template.directive.d.ts +8 -0
  113. package/lib/components/file-upload/file-upload.d.ts +4 -0
  114. package/lib/components/file-upload/file-upload.module.d.ts +12 -0
  115. package/lib/components/file-upload/index.d.ts +4 -0
  116. package/lib/components/for/for.directive.d.ts +8 -0
  117. package/lib/components/for/for.module.d.ts +8 -0
  118. package/lib/components/for/index.d.ts +2 -0
  119. package/lib/components/index.d.ts +6 -0
  120. package/lib/components/modal/component/index.d.ts +2 -0
  121. package/lib/components/modal/component/modal/modal.component.d.ts +10 -0
  122. package/lib/components/modal/component/modal-content/modal-content.component.d.ts +13 -0
  123. package/lib/components/modal/directives/index.d.ts +3 -0
  124. package/lib/components/modal/directives/modal-body/modal-body.directive.d.ts +8 -0
  125. package/lib/components/modal/directives/modal-footer/modal-footer.directive.d.ts +8 -0
  126. package/lib/components/modal/directives/modal-header/modal-header.directive.d.ts +8 -0
  127. package/lib/components/modal/index.d.ts +4 -0
  128. package/lib/components/modal/interfaces/index.d.ts +1 -0
  129. package/lib/components/modal/interfaces/modal-animation-meta.d.ts +7 -0
  130. package/lib/components/modal/modal.module.d.ts +13 -0
  131. package/lib/components/modal/providers/modal-content.provider.d.ts +2 -0
  132. package/lib/components/modal/service/modal.service.d.ts +14 -0
  133. package/lib/components/multiselect/{multiselect.component.d.ts → component/multiselect.component.d.ts} +7 -6
  134. package/lib/components/multiselect/directives/button-template/button-template.directive.d.ts +8 -0
  135. package/lib/components/multiselect/directives/footer-template/footer-template.directive.d.ts +8 -0
  136. package/lib/components/multiselect/directives/header-template/header-template.directive.d.ts +8 -0
  137. package/lib/components/multiselect/directives/index.d.ts +3 -0
  138. package/lib/components/multiselect/index.d.ts +2 -1
  139. package/lib/components/multiselect/multiselect.module.d.ts +8 -5
  140. package/lib/components/navbar/index.d.ts +1 -0
  141. package/lib/components/navbar/navbar/navbar.component.d.ts +1 -1
  142. package/lib/components/navbar/navbar-brand/navbar-brand.component.d.ts +7 -0
  143. package/lib/components/navbar/navbar-dropdown/navbar-dropdown.component.d.ts +4 -4
  144. package/lib/components/navbar/navbar-item/navbar-item.component.d.ts +3 -4
  145. package/lib/components/navbar/navbar.module.d.ts +5 -4
  146. package/lib/components/pagination/pagination/pagination.component.d.ts +9 -10
  147. package/lib/components/rating/index.d.ts +2 -0
  148. package/lib/components/rating/rating.component.d.ts +22 -0
  149. package/lib/components/rating/rating.module.d.ts +8 -0
  150. package/lib/components/select2/component/select2.component.d.ts +4 -6
  151. package/lib/components/snackbar/snackbar.module.d.ts +2 -1
  152. package/lib/components/tab-control/tab-control/tab-control.component.d.ts +4 -6
  153. package/lib/components/tab-control/tab-page/tab-page.component.d.ts +3 -4
  154. package/lib/components/toggle-button/toggle-button.component.d.ts +5 -5
  155. package/lib/components/tooltip/directive/tooltip.directive.d.ts +1 -1
  156. package/lib/components/tooltip/tooltip.module.d.ts +2 -1
  157. package/lib/interfaces/date-day-of-month.d.ts +1 -0
  158. package/lib/interfaces/index.d.ts +1 -0
  159. package/lib/interfaces/week.d.ts +1 -1
  160. package/lib/interfaces/weekday.d.ts +4 -0
  161. package/lib/pipes/format-bytes/format-bytes.module.d.ts +8 -0
  162. package/lib/pipes/format-bytes/format-bytes.pipe.d.ts +7 -0
  163. package/lib/pipes/format-bytes/index.d.ts +2 -0
  164. package/lib/pipes/index.d.ts +1 -0
  165. package/lib/services/calendar-month/calendar-month.service.d.ts +2 -0
  166. package/package.json +3 -2
  167. package/src/assets/ic-upload-file.svg +7 -0
  168. package/src/styles/custom.scss +12 -0
  169. package/src/styles/ngx-highlight-themes/solarized-dark.scss +89 -0
  170. package/src/styles/utilities/cursor.scss +10 -0
  171. package/src/styles/utilities/white-space.scss +10 -0
  172. package/esm2020/lib/components/multiselect/multiselect.component.mjs +0 -36
@@ -1,36 +1,28 @@
1
1
  import * as i0 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';
2
+ import { Component, ContentChildren, NgModule, Input, Injectable, Pipe, EventEmitter, Output, Directive, HostBinding, InjectionToken, Inject, HostListener, Injector, ViewChild, Host, SkipSelf, forwardRef, PLATFORM_ID, ContentChild, Optional, ViewChildren, TemplateRef } from '@angular/core';
3
3
  import * as i1 from '@angular/common';
4
4
  import { CommonModule, DOCUMENT } from '@angular/common';
5
- import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
6
5
  import { SlideUpDownAnimation, FadeInOutAnimation, CarouselSlideAnimation, ColorTransitionAnimation } from '@mintplayer/ng-animations';
7
6
  import { Subject, BehaviorSubject, map, takeUntil, filter, take, Observable, combineLatest, debounceTime } from 'rxjs';
8
7
  import { map as map$1, takeUntil as takeUntil$1, take as take$1 } from 'rxjs/operators';
9
8
  import * as i1$1 from '@angular/cdk/overlay';
10
9
  import { OverlayModule } from '@angular/cdk/overlay';
11
- import { TemplatePortal, ComponentPortal } from '@angular/cdk/portal';
10
+ import { ComponentPortal, TemplatePortal } from '@angular/cdk/portal';
11
+ import * as i3 from 'ngx-highlightjs';
12
+ import { HighlightModule } from 'ngx-highlightjs';
12
13
  import '@mintplayer/ng-pagination';
13
14
  import * as i1$2 from '@mintplayer/ng-click-outside';
14
15
  import { ClickOutsideDirective, ClickOutsideModule } from '@mintplayer/ng-click-outside';
15
16
  import { FocusOnLoadModule } from '@mintplayer/ng-focus-on-load';
17
+ import * as i1$3 from '@angular/router';
16
18
  import { RouterModule, ROUTER_CONFIGURATION } from '@angular/router';
17
- import * as i3 from '@angular/forms';
19
+ import * as i3$1 from '@angular/forms';
18
20
  import { FormsModule } from '@angular/forms';
19
21
 
20
22
  class BsAccordionTabComponent {
21
23
  constructor(accordion) {
22
24
  this.accordion = accordion;
23
25
  }
24
- ngOnInit() {
25
- }
26
- headerClicked(event) {
27
- if (this.accordion.activeTab === this) {
28
- this.accordion.activeTab = null;
29
- }
30
- else {
31
- this.accordion.activeTab = this;
32
- }
33
- }
34
26
  }
35
27
  BsAccordionTabComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsAccordionTabComponent, deps: [{ token: BsAccordionComponent }], target: i0.ɵɵFactoryTarget.Component });
36
28
  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] });
@@ -43,15 +35,13 @@ class BsAccordionComponent {
43
35
  constructor() {
44
36
  this.activeTab = null;
45
37
  }
46
- ngOnInit() {
47
- }
48
38
  }
49
39
  BsAccordionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsAccordionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
50
40
  BsAccordionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsAccordionComponent, selector: "bs-accordion", queries: [{ propertyName: "tabPages", predicate: BsAccordionTabComponent }], ngImport: i0, template: "<ng-content></ng-content>", styles: [""] });
51
41
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsAccordionComponent, decorators: [{
52
42
  type: Component,
53
43
  args: [{ selector: 'bs-accordion', template: "<ng-content></ng-content>", styles: [""] }]
54
- }], ctorParameters: function () { return []; }, propDecorators: { tabPages: [{
44
+ }], propDecorators: { tabPages: [{
55
45
  type: ContentChildren,
56
46
  args: [BsAccordionTabComponent]
57
47
  }] } });
@@ -61,8 +51,6 @@ class BsAccordionTabHeaderComponent {
61
51
  this.accordionTab = accordionTab;
62
52
  this.accordion = accordion;
63
53
  }
64
- ngOnInit() {
65
- }
66
54
  headerClicked(event) {
67
55
  event.preventDefault();
68
56
  if (this.accordion.activeTab === this.accordionTab) {
@@ -72,15 +60,12 @@ class BsAccordionTabHeaderComponent {
72
60
  this.accordion.activeTab = this.accordionTab;
73
61
  }
74
62
  }
75
- foo(event) {
76
- event.preventDefault();
77
- }
78
63
  }
79
64
  BsAccordionTabHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsAccordionTabHeaderComponent, deps: [{ token: BsAccordionTabComponent }, { token: BsAccordionComponent }], target: i0.ɵɵFactoryTarget.Component });
80
- BsAccordionTabHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsAccordionTabHeaderComponent, selector: "bs-accordion-tab-header", ngImport: i0, template: "<div class=\"card-header cursor-pointer\" (click)=\"headerClicked($event)\" (contextmenu)=\"foo($event)\">\n <ng-content></ng-content>\n</div>", styles: [""] });
65
+ 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: [""] });
81
66
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsAccordionTabHeaderComponent, decorators: [{
82
67
  type: Component,
83
- args: [{ selector: 'bs-accordion-tab-header', template: "<div class=\"card-header cursor-pointer\" (click)=\"headerClicked($event)\" (contextmenu)=\"foo($event)\">\n <ng-content></ng-content>\n</div>", styles: [""] }]
68
+ args: [{ selector: 'bs-accordion-tab-header', template: "<div class=\"card-header cursor-pointer\" (click)=\"headerClicked($event)\">\n <ng-content></ng-content>\n</div>", styles: [""] }]
84
69
  }], ctorParameters: function () { return [{ type: BsAccordionTabComponent }, { type: BsAccordionComponent }]; } });
85
70
 
86
71
  class BsAccordionModule {
@@ -88,13 +73,11 @@ class BsAccordionModule {
88
73
  BsAccordionModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsAccordionModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
89
74
  BsAccordionModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsAccordionModule, declarations: [BsAccordionComponent,
90
75
  BsAccordionTabComponent,
91
- BsAccordionTabHeaderComponent], imports: [CommonModule,
92
- BrowserAnimationsModule], exports: [BsAccordionComponent,
76
+ BsAccordionTabHeaderComponent], imports: [CommonModule], exports: [BsAccordionComponent,
93
77
  BsAccordionTabComponent,
94
78
  BsAccordionTabHeaderComponent] });
95
79
  BsAccordionModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsAccordionModule, imports: [[
96
- CommonModule,
97
- BrowserAnimationsModule
80
+ CommonModule
98
81
  ]] });
99
82
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsAccordionModule, decorators: [{
100
83
  type: NgModule,
@@ -105,8 +88,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
105
88
  BsAccordionTabHeaderComponent
106
89
  ],
107
90
  imports: [
108
- CommonModule,
109
- BrowserAnimationsModule
91
+ CommonModule
110
92
  ],
111
93
  exports: [
112
94
  BsAccordionComponent,
@@ -145,15 +127,13 @@ class BsAlertComponent {
145
127
  this.colors = Color;
146
128
  this.isVisible = true;
147
129
  }
148
- ngOnInit() {
149
- }
150
130
  }
151
131
  BsAlertComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsAlertComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
152
132
  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] });
153
133
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsAlertComponent, decorators: [{
154
134
  type: Component,
155
135
  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"] }]
156
- }], ctorParameters: function () { return []; }, propDecorators: { type: [{
136
+ }], propDecorators: { type: [{
157
137
  type: Input
158
138
  }] } });
159
139
 
@@ -161,8 +141,6 @@ class BsAlertCloseComponent {
161
141
  constructor(alert) {
162
142
  this.alert = alert;
163
143
  }
164
- ngOnInit() {
165
- }
166
144
  closeAlert() {
167
145
  this.alert.isVisible = false;
168
146
  }
@@ -199,22 +177,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
199
177
  class BsCalendarMonthService {
200
178
  getWeeks(month) {
201
179
  const firstAndLast = this.getFirstAndLastDayOfMonth(month);
202
- const days = this.dateDiff(firstAndLast.first, firstAndLast.last) + 1;
203
- const allDays = [
204
- ...this.generateList(this.dayOfWeekMondayBased(firstAndLast.first)).map(d => null),
205
- ...this.generateList(days).map(d => {
206
- return {
207
- date: new Date(firstAndLast.first.getFullYear(), firstAndLast.first.getMonth(), firstAndLast.first.getDate() + d),
208
- dayOfMonth: d + 1,
209
- };
210
- }),
211
- ...this.generateList(6 - this.dayOfWeekMondayBased(firstAndLast.last)).map(d => null),
212
- ];
180
+ const firstOfMonth = this.getMondayBefore(firstAndLast.first);
181
+ const lastOfMonth = this.getSundayAfter(firstAndLast.last);
182
+ const days = this.dateDiff(firstOfMonth, lastOfMonth) + 1;
183
+ const firstDayOffset = (firstAndLast.first.getDay() + 7 - 1) % 7;
184
+ const allDays = this.generateList(days).map(d => d - firstDayOffset).map(d => {
185
+ const wrongDate = new Date(firstAndLast.first.getFullYear(), firstAndLast.first.getMonth(), firstAndLast.first.getDate() + d);
186
+ const correctDate = new Date(wrongDate.getFullYear(), wrongDate.getMonth(), wrongDate.getDate());
187
+ return {
188
+ date: correctDate,
189
+ dayOfMonth: correctDate.getDate(),
190
+ isInMonth: (correctDate.getFullYear() === month.getFullYear()) && (correctDate.getMonth() === month.getMonth())
191
+ };
192
+ });
213
193
  const weeks = this.chunk(allDays, 7);
214
194
  const weeksMapped = weeks.map((w, i) => {
215
195
  return {
216
- number: this.weekOfYear(new Date(month.getFullYear(), month.getMonth(), w.find(d => d !== null)?.dayOfMonth)),
217
- week: w
196
+ number: this.weekOfYear(new Date(month.getFullYear(), month.getMonth(), w.find(d => d.isInMonth)?.dayOfMonth)),
197
+ days: w
218
198
  };
219
199
  });
220
200
  return weeksMapped;
@@ -239,10 +219,9 @@ class BsCalendarMonthService {
239
219
  return Math.ceil((utcDiff / (1000 * 60 * 60 * 24) + 1) / 7);
240
220
  }
241
221
  getFirstAndLastDayOfMonth(date) {
242
- return {
243
- first: new Date(date.getFullYear(), date.getMonth(), 1),
244
- last: new Date(date.getFullYear(), date.getMonth() + 1, 0)
245
- };
222
+ const first = new Date(date.getFullYear(), date.getMonth(), 1);
223
+ const last = new Date(date.getFullYear(), date.getMonth() + 1, 0);
224
+ return { first, last };
246
225
  }
247
226
  dateDiff(date1, date2) {
248
227
  const utc1 = this.toUTC(date1);
@@ -264,6 +243,21 @@ class BsCalendarMonthService {
264
243
  }
265
244
  return result;
266
245
  }
246
+ getMondayBefore(date) {
247
+ const day = date.getDay(), diff = date.getDate() - day + (day == 0 ? -6 : 1); // adjust when day is sunday
248
+ const monday = new Date(date);
249
+ monday.setDate(diff);
250
+ return monday;
251
+ }
252
+ getSundayAfter(date) {
253
+ const day = date.getDay();
254
+ const sunday = new Date(date);
255
+ if (day !== 0) {
256
+ const diff = date.getDate() + 7 - day;
257
+ sunday.setDate(diff);
258
+ }
259
+ return sunday;
260
+ }
267
261
  }
268
262
  BsCalendarMonthService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsCalendarMonthService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
269
263
  BsCalendarMonthService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsCalendarMonthService, providedIn: 'root' });
@@ -308,9 +302,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
308
302
  }] });
309
303
 
310
304
  class BsCalendarComponent {
311
- constructor(calendarMonthService, ref) {
305
+ constructor(calendarMonthService) {
312
306
  this.calendarMonthService = calendarMonthService;
313
- this.ref = ref;
314
307
  this.destroyed$ = new Subject();
315
308
  //#region CurrentMonth
316
309
  this.currentMonth$ = new BehaviorSubject(new Date());
@@ -319,20 +312,21 @@ class BsCalendarComponent {
319
312
  //#region SelectedDate
320
313
  this.selectedDate$ = new BehaviorSubject(new Date());
321
314
  this.selectedDateChange = new EventEmitter();
322
- //#endregion
323
- this.daysOfWeek = ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su'];
324
315
  this.weeks$ = this.currentMonth$
325
316
  .pipe(map((month) => this.calendarMonthService.getWeeks(month)))
326
317
  .pipe(takeUntil(this.destroyed$));
327
318
  this.daysOfWeek$ = this.weeks$
328
319
  .pipe(filter((weeks) => weeks.length > 1))
329
- .pipe(map((weeks) => weeks[1].week))
330
- .pipe(map((week) => {
331
- const firstDay = week[0];
320
+ .pipe(map((weeks) => weeks[1].days))
321
+ .pipe(map((days) => {
322
+ const firstDay = days[0];
332
323
  if (firstDay) {
333
- return week.map((d) => {
324
+ return days.map((d) => {
334
325
  const date = new Date(firstDay.date.getFullYear(), firstDay.date.getMonth(), d?.dayOfMonth);
335
- return date.toLocaleString('default', { weekday: 'short' });
326
+ return {
327
+ short: date.toLocaleString('default', { weekday: 'short' }),
328
+ long: date.toLocaleString('default', { weekday: 'long' })
329
+ };
336
330
  });
337
331
  }
338
332
  else {
@@ -358,6 +352,7 @@ class BsCalendarComponent {
358
352
  set selectedDate(value) {
359
353
  this.selectedDate$.next(value);
360
354
  }
355
+ //#endregion
361
356
  ngOnDestroy() {
362
357
  this.destroyed$.next(true);
363
358
  }
@@ -388,12 +383,12 @@ class BsCalendarComponent {
388
383
  }
389
384
  }
390
385
  }
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 } });
386
+ BsCalendarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsCalendarComponent, deps: [{ token: BsCalendarMonthService }], target: i0.ɵɵFactoryTarget.Component });
387
+ 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$ | async\" [title]=\"dayOfWeek.long\">\n {{ dayOfWeek.short }}\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.days\" (click)=\"goto(day)\">\n <span *ngIf=\"day !== null\" [class.text-muted]=\"!day.isInMonth\">{{ day.dayOfMonth }}</span>\n </td>\n </tr>\n</table>", styles: [".text-muted{color:#9ea7af!important}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 } });
393
388
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsCalendarComponent, decorators: [{
394
389
  type: Component,
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: [{
390
+ 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$ | async\" [title]=\"dayOfWeek.long\">\n {{ dayOfWeek.short }}\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.days\" (click)=\"goto(day)\">\n <span *ngIf=\"day !== null\" [class.text-muted]=\"!day.isInMonth\">{{ day.dayOfMonth }}</span>\n </td>\n </tr>\n</table>", styles: [".text-muted{color:#9ea7af!important}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"] }]
391
+ }], ctorParameters: function () { return [{ type: BsCalendarMonthService }]; }, propDecorators: { currentMonthChange: [{
397
392
  type: Output
398
393
  }], currentMonth: [{
399
394
  type: Input
@@ -515,32 +510,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
515
510
  }] });
516
511
 
517
512
  class BsCardComponent {
518
- constructor() {
519
- }
520
- ngOnInit() {
521
- }
522
- ngAfterViewInit() {
523
- }
524
513
  }
525
514
  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"] });
515
+ BsCardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsCardComponent, selector: "bs-card", ngImport: i0, template: "<div class=\"card\">\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
516
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsCardComponent, decorators: [{
528
517
  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 []; } });
518
+ args: [{ selector: 'bs-card', template: "<div class=\"card\">\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"] }]
519
+ }] });
531
520
 
532
521
  class BsCardHeaderComponent {
533
- constructor() {
534
- }
535
- ngOnInit() {
536
- }
537
522
  }
538
523
  BsCardHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsCardHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
539
524
  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
525
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsCardHeaderComponent, decorators: [{
541
526
  type: Component,
542
527
  args: [{ selector: 'bs-card-header', template: "<div class=\"card-header\">\n <ng-content></ng-content>\n</div>", styles: [""] }]
543
- }], ctorParameters: function () { return []; } });
528
+ }] });
544
529
 
545
530
  class BsCardModule {
546
531
  }
@@ -582,9 +567,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
582
567
  class BsCarouselComponent {
583
568
  constructor() {
584
569
  this.animationsDisabled = false;
585
- //#region Animation
570
+ this.indicators = true;
586
571
  this._animation = 'slide';
587
- //#endregion
588
572
  this.destroyed$ = new Subject();
589
573
  this.currentImageCounter$ = new BehaviorSubject(-1);
590
574
  this.currentImageIndex$ = this.currentImageCounter$
@@ -597,7 +581,6 @@ class BsCarouselComponent {
597
581
  .pipe(map$1((index) => this.images.get(index)?.itemTemplate ?? null))
598
582
  .pipe(takeUntil$1(this.destroyed$));
599
583
  }
600
- ngOnInit() { }
601
584
  ngOnDestroy() {
602
585
  this.destroyed$.next(true);
603
586
  }
@@ -609,6 +592,7 @@ class BsCarouselComponent {
609
592
  this.currentImageCounter$.next(-1);
610
593
  }
611
594
  }
595
+ //#region Animation
612
596
  set animation(value) {
613
597
  this.animationsDisabled = true;
614
598
  this._animation = value;
@@ -619,6 +603,7 @@ class BsCarouselComponent {
619
603
  get animation() {
620
604
  return this._animation;
621
605
  }
606
+ //#endregion
622
607
  previousImage() {
623
608
  this.currentImageCounter$
624
609
  .pipe(take$1(1))
@@ -642,18 +627,20 @@ class BsCarouselComponent {
642
627
  }
643
628
  }
644
629
  BsCarouselComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsCarouselComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
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] });
630
+ BsCarouselComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsCarouselComponent, selector: "bs-carousel", inputs: { indicators: "indicators", animation: "animation" }, host: { properties: { "@.disabled": "this.animationsDisabled" } }, queries: [{ propertyName: "images", predicate: BsCarouselImageDirective }], ngImport: i0, template: "<div class=\"carousel slide\">\n <div *ngIf=\"indicators\" 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.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], pipes: { "async": i1.AsyncPipe }, animations: [FadeInOutAnimation, CarouselSlideAnimation] });
646
631
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsCarouselComponent, decorators: [{
647
632
  type: Component,
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"] }]
633
+ args: [{ selector: 'bs-carousel', animations: [FadeInOutAnimation, CarouselSlideAnimation], template: "<div class=\"carousel slide\">\n <div *ngIf=\"indicators\" class=\"carousel-indicators\">\n <button *ngFor=\"let image of images; let i = index\" type=\"button\" (click)=\"setCurrentImage(i)\"\n [class.active]=\"(currentImageIndex$ | async) === i\" data-bs-target\n [attr.aria-current]=\"(currentImageIndex$ | async) === i ? true : null\"\n [attr.aria-label]=\"'Slide ' + i\"></button>\n </div>\n\n <div class=\"carousel-inner\" [@carouselSlide]=\"currentImageCounter$ | async\" *ngIf=\"animation === 'slide'\">\n <ng-container *ngFor=\"let image of images; let i = index\">\n <div class=\"carousel-item\" [class.active]=\"true\" *ngIf=\"(currentImageIndex$ | async) === i\">\n <ng-container [ngTemplateOutlet]=\"image.itemTemplate\"></ng-container> \n </div>\n </ng-container>\n </div>\n <div class=\"carousel-inner\" *ngIf=\"animation === 'fade'\">\n <ng-container *ngFor=\"let image of images; let i = index\">\n <div class=\"carousel-item\" [class.active]=\"true\" @fadeInOut *ngIf=\"(currentImageIndex$ | async) === i\">\n <ng-container [ngTemplateOutlet]=\"image.itemTemplate\"></ng-container> \n </div>\n </ng-container>\n </div>\n\n <button class=\"carousel-control-prev\" type=\"button\" (click)=\"previousImage()\">\n <span class=\"carousel-control-prev-icon\" aria-hidden=\"true\"></span>\n <span class=\"visually-hidden\">Previous</span>\n </button>\n <button class=\"carousel-control-next\" type=\"button\" (click)=\"nextImage()\">\n <span class=\"carousel-control-next-icon\" aria-hidden=\"true\"></span>\n <span class=\"visually-hidden\">Next</span>\n </button>\n</div>", styles: [".carousel{min-height:100px}\n"] }]
649
634
  }], ctorParameters: function () { return []; }, propDecorators: { animationsDisabled: [{
650
635
  type: HostBinding,
651
636
  args: ['@.disabled']
652
- }], animation: [{
637
+ }], indicators: [{
653
638
  type: Input
654
639
  }], images: [{
655
640
  type: ContentChildren,
656
641
  args: [BsCarouselImageDirective]
642
+ }], animation: [{
643
+ type: Input
657
644
  }] } });
658
645
 
659
646
  class BsCarouselModule {
@@ -682,6 +669,251 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
682
669
  }]
683
670
  }] });
684
671
 
672
+ const SNACKBAR_CONTENT = new InjectionToken('SnackbarContent');
673
+
674
+ class BsSnackbarComponent {
675
+ constructor(content) {
676
+ this.displayBlock = true;
677
+ this.width100 = true;
678
+ this.instance = null;
679
+ //#region Monitor @slideUpDown hooks
680
+ this.animationState = '';
681
+ this.animationStateChanged = new EventEmitter();
682
+ this.content = content;
683
+ }
684
+ onAnimationChanged(event) {
685
+ this.animationStateChanged.emit(event);
686
+ }
687
+ }
688
+ BsSnackbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsSnackbarComponent, deps: [{ token: SNACKBAR_CONTENT }], target: i0.ɵɵFactoryTarget.Component });
689
+ 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] });
690
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsSnackbarComponent, decorators: [{
691
+ type: Component,
692
+ 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"] }]
693
+ }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{
694
+ type: Inject,
695
+ args: [SNACKBAR_CONTENT]
696
+ }] }]; }, propDecorators: { displayBlock: [{
697
+ type: HostBinding,
698
+ args: ['class.d-block']
699
+ }], width100: [{
700
+ type: HostBinding,
701
+ args: ['class.w-100']
702
+ }] } });
703
+
704
+ class BsSnackbarCloseDirective {
705
+ constructor(snackbarService) {
706
+ this.snackbarService = snackbarService;
707
+ }
708
+ onClick() {
709
+ this.snackbarService.hide(this.bsSnackbarClose);
710
+ }
711
+ }
712
+ BsSnackbarCloseDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsSnackbarCloseDirective, deps: [{ token: BsSnackbarService }], target: i0.ɵɵFactoryTarget.Directive });
713
+ 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 });
714
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsSnackbarCloseDirective, decorators: [{
715
+ type: Directive,
716
+ args: [{
717
+ selector: '[bsSnackbarClose]'
718
+ }]
719
+ }], ctorParameters: function () { return [{ type: BsSnackbarService }]; }, propDecorators: { bsSnackbarClose: [{
720
+ type: Input
721
+ }], onClick: [{
722
+ type: HostListener,
723
+ args: ['click']
724
+ }] } });
725
+
726
+ class BsSnackbarModule {
727
+ }
728
+ BsSnackbarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsSnackbarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
729
+ BsSnackbarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsSnackbarModule, declarations: [BsSnackbarComponent,
730
+ BsSnackbarCloseDirective], imports: [CommonModule,
731
+ OverlayModule], exports: [BsSnackbarComponent,
732
+ BsSnackbarCloseDirective] });
733
+ BsSnackbarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsSnackbarModule, providers: [
734
+ // { provide: BsSnackbarComponent, useExisting: forwardRef(() => BsSnackbarComponent) }
735
+ // { provide: BsSnackbarComponent, useClass: BsSnackbarComponent }
736
+ ], imports: [[
737
+ CommonModule,
738
+ OverlayModule
739
+ ]] });
740
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsSnackbarModule, decorators: [{
741
+ type: NgModule,
742
+ args: [{
743
+ declarations: [
744
+ BsSnackbarComponent,
745
+ BsSnackbarCloseDirective
746
+ ],
747
+ imports: [
748
+ CommonModule,
749
+ OverlayModule
750
+ ],
751
+ exports: [
752
+ BsSnackbarComponent,
753
+ BsSnackbarCloseDirective
754
+ ],
755
+ providers: [
756
+ // { provide: BsSnackbarComponent, useExisting: forwardRef(() => BsSnackbarComponent) }
757
+ // { provide: BsSnackbarComponent, useClass: BsSnackbarComponent }
758
+ ]
759
+ }]
760
+ }] });
761
+
762
+ class BsSnackbarService {
763
+ constructor(overlay, parentInjector, componentFactoryResolver) {
764
+ this.overlay = overlay;
765
+ this.parentInjector = parentInjector;
766
+ this.componentFactoryResolver = componentFactoryResolver;
767
+ }
768
+ show(template) {
769
+ const injector = Injector.create({
770
+ providers: [{ provide: SNACKBAR_CONTENT, useValue: template }],
771
+ parent: this.parentInjector
772
+ });
773
+ const portal = new ComponentPortal(BsSnackbarComponent, null, injector, this.componentFactoryResolver);
774
+ const overlayRef = this.overlay.create({
775
+ scrollStrategy: this.overlay.scrollStrategies.reposition(),
776
+ positionStrategy: this.overlay.position()
777
+ .global().centerHorizontally().bottom('0'),
778
+ width: '100%'
779
+ });
780
+ const componentInstance = overlayRef.attach(portal);
781
+ componentInstance.instance['instance'] = {
782
+ component: componentInstance,
783
+ overlay: overlayRef
784
+ };
785
+ return componentInstance.instance;
786
+ }
787
+ hide(snackbar) {
788
+ snackbar.animationStateChanged.pipe(filter(ev => ev.phaseName === 'done' && ev.toState === 'void'), take(1)).subscribe(() => {
789
+ snackbar['instance']?.overlay.dispose();
790
+ });
791
+ snackbar.animationState = 'void';
792
+ }
793
+ }
794
+ 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 });
795
+ BsSnackbarService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsSnackbarService, providedIn: BsSnackbarModule });
796
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsSnackbarService, decorators: [{
797
+ type: Injectable,
798
+ args: [{
799
+ providedIn: BsSnackbarModule
800
+ }]
801
+ }], ctorParameters: function () { return [{ type: i1$1.Overlay }, { type: i0.Injector }, { type: i0.ComponentFactoryResolver }]; } });
802
+
803
+ class BsCopyDirective {
804
+ constructor(doc) {
805
+ this.bsCopy = null;
806
+ this.bsCopied = new EventEmitter();
807
+ this.doc = doc;
808
+ }
809
+ click(event) {
810
+ event.preventDefault();
811
+ const listener = (e) => {
812
+ if (!!this.bsCopy && !!window) {
813
+ const clipboard = e.clipboardData || window['clipboardData'] || null;
814
+ if (clipboard) {
815
+ clipboard.setData('text', this.bsCopy?.toString());
816
+ e.preventDefault();
817
+ this.bsCopied.emit(this.bsCopy);
818
+ }
819
+ }
820
+ };
821
+ this.doc.addEventListener('copy', listener, false);
822
+ this.doc.execCommand('copy');
823
+ this.doc.removeEventListener('copy', listener, false);
824
+ }
825
+ }
826
+ BsCopyDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsCopyDirective, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Directive });
827
+ BsCopyDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: BsCopyDirective, selector: "[bsCopy]", inputs: { bsCopy: "bsCopy" }, outputs: { bsCopied: "bsCopied" }, host: { listeners: { "click": "click($event)" } }, ngImport: i0 });
828
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsCopyDirective, decorators: [{
829
+ type: Directive,
830
+ args: [{
831
+ selector: '[bsCopy]',
832
+ }]
833
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
834
+ type: Inject,
835
+ args: [DOCUMENT]
836
+ }] }]; }, propDecorators: { bsCopy: [{
837
+ type: Input
838
+ }], bsCopied: [{
839
+ type: Output
840
+ }], click: [{
841
+ type: HostListener,
842
+ args: ['click', ['$event']]
843
+ }] } });
844
+
845
+ class BsCodeSnippetComponent {
846
+ constructor(snackbarService) {
847
+ this.snackbarService = snackbarService;
848
+ this.htmlToCopy = '';
849
+ }
850
+ copiedHtml() {
851
+ const snackbar = this.snackbarService.show(this.copiedTemplate);
852
+ setTimeout(() => this.snackbarService.hide(snackbar), 3000);
853
+ }
854
+ }
855
+ BsCodeSnippetComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsCodeSnippetComponent, deps: [{ token: BsSnackbarService }], target: i0.ɵɵFactoryTarget.Component });
856
+ BsCodeSnippetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsCodeSnippetComponent, selector: "bs-code-snippet", inputs: { htmlToCopy: "htmlToCopy" }, viewQueries: [{ propertyName: "copiedTemplate", first: true, predicate: ["copiedTemplate"], descendants: true }], ngImport: i0, template: "<div class=\"position-relative\">\n <button #copyBtn [bsCopy]=\"htmlToCopy\" (bsCopied)=\"copiedHtml()\" class=\"btn btn-link rounded-0 text-light position-absolute copy-btn\">\n Copy html\n </button>\n <pre class=\"white-space-normal\">\n <code class=\"d-block white-space-pre\" [highlight]=\"htmlToCopy\"></code>\n </pre>\n <ng-template #copiedTemplate>\n <div class=\"p-3\">Copied!</div>\n </ng-template>\n</div>", styles: [".copy-btn{right:0}\n"], directives: [{ type: BsCopyDirective, selector: "[bsCopy]", inputs: ["bsCopy"], outputs: ["bsCopied"] }, { type: i3.Highlight, selector: "[highlight]", inputs: ["highlight", "languages", "lineNumbers"], outputs: ["highlighted"] }] });
857
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsCodeSnippetComponent, decorators: [{
858
+ type: Component,
859
+ args: [{ selector: 'bs-code-snippet', template: "<div class=\"position-relative\">\n <button #copyBtn [bsCopy]=\"htmlToCopy\" (bsCopied)=\"copiedHtml()\" class=\"btn btn-link rounded-0 text-light position-absolute copy-btn\">\n Copy html\n </button>\n <pre class=\"white-space-normal\">\n <code class=\"d-block white-space-pre\" [highlight]=\"htmlToCopy\"></code>\n </pre>\n <ng-template #copiedTemplate>\n <div class=\"p-3\">Copied!</div>\n </ng-template>\n</div>", styles: [".copy-btn{right:0}\n"] }]
860
+ }], ctorParameters: function () { return [{ type: BsSnackbarService }]; }, propDecorators: { htmlToCopy: [{
861
+ type: Input
862
+ }], copiedTemplate: [{
863
+ type: ViewChild,
864
+ args: ['copiedTemplate']
865
+ }] } });
866
+
867
+ class BsCopyModule {
868
+ }
869
+ BsCopyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsCopyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
870
+ BsCopyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsCopyModule, declarations: [BsCopyDirective], imports: [CommonModule], exports: [BsCopyDirective] });
871
+ BsCopyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsCopyModule, imports: [[
872
+ CommonModule
873
+ ]] });
874
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsCopyModule, decorators: [{
875
+ type: NgModule,
876
+ args: [{
877
+ declarations: [
878
+ BsCopyDirective
879
+ ],
880
+ imports: [
881
+ CommonModule
882
+ ],
883
+ exports: [
884
+ BsCopyDirective
885
+ ]
886
+ }]
887
+ }] });
888
+
889
+ class BsCodeSnippetModule {
890
+ }
891
+ BsCodeSnippetModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsCodeSnippetModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
892
+ BsCodeSnippetModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsCodeSnippetModule, declarations: [BsCodeSnippetComponent], imports: [CommonModule,
893
+ BsCopyModule,
894
+ HighlightModule], exports: [BsCodeSnippetComponent] });
895
+ BsCodeSnippetModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsCodeSnippetModule, imports: [[
896
+ CommonModule,
897
+ BsCopyModule,
898
+ HighlightModule
899
+ ]] });
900
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsCodeSnippetModule, decorators: [{
901
+ type: NgModule,
902
+ args: [{
903
+ declarations: [
904
+ BsCodeSnippetComponent
905
+ ],
906
+ imports: [
907
+ CommonModule,
908
+ BsCopyModule,
909
+ HighlightModule
910
+ ],
911
+ exports: [
912
+ BsCodeSnippetComponent
913
+ ]
914
+ }]
915
+ }] });
916
+
685
917
  class BsContextMenuDirective {
686
918
  constructor(overlay, templateRef, viewContainerRef, element) {
687
919
  this.overlay = overlay;
@@ -693,21 +925,35 @@ class BsContextMenuDirective {
693
925
  this.element.nativeElement.oncontextmenu = (ev) => {
694
926
  ev.preventDefault();
695
927
  this.checkAndCloseExisting(ev);
928
+ console.log('d', element.nativeElement);
696
929
  this.overlayRef = this.overlay.create({
697
- scrollStrategy: this.overlay.scrollStrategies.noop(),
930
+ hasBackdrop: false,
931
+ scrollStrategy: this.overlay.scrollStrategies.reposition(),
698
932
  positionStrategy: this.overlay.position()
699
- .global()
700
- .left(ev.x + 'px')
701
- .bottom((window.innerHeight - ev.y) + 'px')
702
- .top(ev.y + 'px')
933
+ // .flexibleConnectedTo({ x: ev.x, y: ev.y })
934
+ .flexibleConnectedTo(this.element)
935
+ .withPositions([
936
+ // element: TopLeft - dropdown: TopLeft
937
+ { originX: "start", originY: "top", overlayX: "start", overlayY: "top", offsetX: ev.offsetX, offsetY: ev.offsetY },
938
+ // // element: TopLeft - dropdown: BottomLeft
939
+ // { originX: "start", originY: "top", overlayX: "start", overlayY: "bottom", offsetX: ev.offsetX, offsetY: ev.offsetY },
940
+ // // element: TopLeft - dropdown: TopRight
941
+ // { originX: "start", originY: "top", overlayX: "end", overlayY: "top", offsetX: ev.offsetX, offsetY: ev.offsetY },
942
+ // // element: TopLeft - dropdown: BottomRight
943
+ // { originX: "start", originY: "top", overlayX: "end", overlayY: "bottom", offsetX: ev.offsetX, offsetY: ev.offsetY },
944
+ ])
703
945
  });
704
946
  this.templatePortal = new TemplatePortal(this.templateRef, this.viewContainerRef);
705
- this.overlayRef.attach(this.templatePortal);
947
+ const view = this.overlayRef.attach(this.templatePortal);
948
+ view.rootNodes.forEach(node => node.classList.add('position-static'));
706
949
  };
707
950
  }
708
951
  clickAnywhere(ev) {
709
952
  this.checkAndCloseExisting(ev);
710
953
  }
954
+ onBlur() {
955
+ this.close();
956
+ }
711
957
  close() {
712
958
  if (this.overlayRef) {
713
959
  this.overlayRef.detach();
@@ -722,7 +968,7 @@ class BsContextMenuDirective {
722
968
  }
723
969
  }
724
970
  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 });
971
+ BsContextMenuDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: BsContextMenuDirective, selector: "[bsContextMenu]", host: { listeners: { "document:click": "clickAnywhere($event)", "window:blur": "onBlur()" } }, ngImport: i0 });
726
972
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsContextMenuDirective, decorators: [{
727
973
  type: Directive,
728
974
  args: [{
@@ -735,7 +981,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
735
981
  }] }]; }, propDecorators: { clickAnywhere: [{
736
982
  type: HostListener,
737
983
  args: ['document:click', ['$event']]
738
- }], close: [{
984
+ }], onBlur: [{
739
985
  type: HostListener,
740
986
  args: ['window:blur']
741
987
  }] } });
@@ -743,9 +989,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
743
989
  class BsContextMenuModule {
744
990
  }
745
991
  BsContextMenuModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsContextMenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
746
- BsContextMenuModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsContextMenuModule, declarations: [BsContextMenuDirective], imports: [CommonModule], exports: [BsContextMenuDirective] });
992
+ BsContextMenuModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsContextMenuModule, declarations: [BsContextMenuDirective], imports: [CommonModule,
993
+ OverlayModule], exports: [BsContextMenuDirective] });
747
994
  BsContextMenuModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsContextMenuModule, imports: [[
748
- CommonModule
995
+ CommonModule,
996
+ OverlayModule
749
997
  ]] });
750
998
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsContextMenuModule, decorators: [{
751
999
  type: NgModule,
@@ -754,7 +1002,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
754
1002
  BsContextMenuDirective
755
1003
  ],
756
1004
  imports: [
757
- CommonModule
1005
+ CommonModule,
1006
+ OverlayModule
758
1007
  ],
759
1008
  exports: [
760
1009
  BsContextMenuDirective
@@ -833,85 +1082,80 @@ class BsPaginationComponent {
833
1082
  /** The number of boxes (excluding arrows) that's being shown on the pagination component. */
834
1083
  this.visibleNumberOfNumberBoxes$ = new Observable();
835
1084
  this._selectedPageNumber = 0;
836
- this.selectedPageNumberChange = new EventEmitter();
837
1085
  this._numberOfBoxes = 0;
838
1086
  this._pageNumbers = [];
839
1087
  this._showArrows = true;
1088
+ //#region SelectedPageNumber
1089
+ this.selectedPageNumberChange = new EventEmitter();
840
1090
  this.destroyed$ = new Subject();
841
- this.visibleNumberOfNumberBoxes$ =
842
- combineLatest([this.numberOfBoxes$, this.pageNumbers$, this.showArrows$])
843
- .pipe(takeUntil(this.destroyed$))
844
- .pipe(map(([numberOfBoxes, pageNumbers, showArrows]) => {
845
- if (numberOfBoxes <= 0) {
846
- return pageNumbers.length;
847
- }
848
- else if (!showArrows) {
849
- return Math.min(numberOfBoxes, pageNumbers.length);
850
- }
851
- else if (numberOfBoxes <= 2) {
852
- return Math.min(1, pageNumbers.length);
853
- }
854
- else {
855
- return Math.min(numberOfBoxes - 2, pageNumbers.length);
856
- }
857
- }));
858
- this.shownPageNumbers$ =
859
- combineLatest([this.pageNumbers$, this.selectedPageNumber$, this.visibleNumberOfNumberBoxes$])
860
- .pipe(takeUntil(this.destroyed$))
861
- .pipe(map(([pageNumbers, selectedPageNumber, visibleNumberOfNumberBoxes]) => {
862
- let startIndex = 0;
863
- const half = Math.round((visibleNumberOfNumberBoxes - 1) / 2);
864
- if (pageNumbers.indexOf(selectedPageNumber) < half) {
865
- startIndex = 0;
866
- }
867
- else if (pageNumbers.indexOf(selectedPageNumber) >= (pageNumbers.length - half)) {
868
- startIndex = pageNumbers.length - visibleNumberOfNumberBoxes;
869
- }
870
- else {
871
- startIndex = pageNumbers.indexOf(selectedPageNumber) - half;
872
- }
873
- return [...Array(visibleNumberOfNumberBoxes).keys()]
874
- .map(p => p + startIndex)
875
- .map(p => ({
876
- page: pageNumbers[p],
877
- selected: pageNumbers[p] === selectedPageNumber
878
- }));
879
- }));
880
- this.isFirstPage$ =
881
- combineLatest([this.pageNumbers$, this.selectedPageNumber$])
882
- .pipe(takeUntil(this.destroyed$))
883
- .pipe(map(([pageNumbers, selectedPageNumber]) => {
884
- return pageNumbers.indexOf(selectedPageNumber) === 0;
885
- }));
886
- this.isLastPage$ =
887
- combineLatest([this.pageNumbers$, this.selectedPageNumber$])
888
- .pipe(takeUntil(this.destroyed$))
889
- .pipe(map(([pageNumbers, selectedPageNumber]) => {
890
- return pageNumbers.indexOf(selectedPageNumber) === (pageNumbers.length - 1);
891
- }));
892
- this.selectedPageNumber$
1091
+ this.visibleNumberOfNumberBoxes$ = combineLatest([
1092
+ this.numberOfBoxes$,
1093
+ this.pageNumbers$,
1094
+ this.showArrows$,
1095
+ ])
893
1096
  .pipe(takeUntil(this.destroyed$))
894
- .subscribe((selectedPageNumber) => {
895
- this.selectedPageNumberChange.emit(selectedPageNumber);
1097
+ .pipe(map(([numberOfBoxes, pageNumbers, showArrows]) => {
1098
+ if (numberOfBoxes <= 0) {
1099
+ return pageNumbers.length;
1100
+ }
1101
+ else if (!showArrows) {
1102
+ return Math.min(numberOfBoxes, pageNumbers.length);
1103
+ }
1104
+ else if (numberOfBoxes <= 2) {
1105
+ return Math.min(1, pageNumbers.length);
1106
+ }
1107
+ else {
1108
+ return Math.min(numberOfBoxes - 2, pageNumbers.length);
1109
+ }
1110
+ }));
1111
+ this.shownPageNumbers$ = combineLatest([
1112
+ this.pageNumbers$,
1113
+ this.selectedPageNumber$,
1114
+ this.visibleNumberOfNumberBoxes$,
1115
+ ])
1116
+ .pipe(takeUntil(this.destroyed$))
1117
+ .pipe(map(([pageNumbers, selectedPageNumber, visibleNumberOfNumberBoxes]) => {
1118
+ let startIndex = 0;
1119
+ const half = Math.round((visibleNumberOfNumberBoxes - 1) / 2);
1120
+ if (pageNumbers.indexOf(selectedPageNumber) < half) {
1121
+ startIndex = 0;
1122
+ }
1123
+ else if (pageNumbers.indexOf(selectedPageNumber) >=
1124
+ pageNumbers.length - half) {
1125
+ startIndex = pageNumbers.length - visibleNumberOfNumberBoxes;
1126
+ }
1127
+ else {
1128
+ startIndex = pageNumbers.indexOf(selectedPageNumber) - half;
1129
+ }
1130
+ return [...Array(visibleNumberOfNumberBoxes).keys()]
1131
+ .map((p) => p + startIndex)
1132
+ .map((p) => ({
1133
+ page: pageNumbers[p],
1134
+ selected: pageNumbers[p] === selectedPageNumber,
1135
+ }));
1136
+ }));
1137
+ this.isFirstPage$ = combineLatest([
1138
+ this.pageNumbers$,
1139
+ this.selectedPageNumber$,
1140
+ ])
1141
+ .pipe(takeUntil(this.destroyed$))
1142
+ .pipe(map(([pageNumbers, selectedPageNumber]) => {
1143
+ return pageNumbers.indexOf(selectedPageNumber) === 0;
1144
+ }));
1145
+ this.isLastPage$ = combineLatest([
1146
+ this.pageNumbers$,
1147
+ this.selectedPageNumber$,
1148
+ ])
1149
+ .pipe(takeUntil(this.destroyed$))
1150
+ .pipe(map(([pageNumbers, selectedPageNumber]) => {
1151
+ return (pageNumbers.indexOf(selectedPageNumber) === pageNumbers.length - 1);
1152
+ }));
1153
+ this.selectedPageNumber$
1154
+ .pipe(takeUntil(this.destroyed$))
1155
+ .subscribe((selectedPageNumber) => {
1156
+ this.selectedPageNumberChange.emit(selectedPageNumber);
896
1157
  });
897
1158
  }
898
- ngOnInit() {
899
- }
900
- ngOnDestroy() {
901
- this.destroyed$.next(true);
902
- }
903
- onSelectPage(event, page) {
904
- this.selectedPageNumber$.next(page);
905
- return false;
906
- }
907
- onPrevious() {
908
- this.selectedPageNumber$.next(this.selectedPageNumber$.value - 1);
909
- return false;
910
- }
911
- onNext() {
912
- this.selectedPageNumber$.next(this.selectedPageNumber$.value + 1);
913
- return false;
914
- }
915
1159
  set selectedPageNumber(value) {
916
1160
  this._selectedPageNumber = value;
917
1161
  this.selectedPageNumber$.next(value);
@@ -919,6 +1163,8 @@ class BsPaginationComponent {
919
1163
  get selectedPageNumber() {
920
1164
  return this._selectedPageNumber;
921
1165
  }
1166
+ //#endregion
1167
+ //#region NumberOfBoxes
922
1168
  set numberOfBoxes(value) {
923
1169
  this._numberOfBoxes = value;
924
1170
  this.numberOfBoxes$.next(value);
@@ -926,6 +1172,8 @@ class BsPaginationComponent {
926
1172
  get numberOfBoxes() {
927
1173
  return this._numberOfBoxes;
928
1174
  }
1175
+ //#endregion
1176
+ //#region PageNumbers
929
1177
  set pageNumbers(value) {
930
1178
  this._pageNumbers = value;
931
1179
  this.pageNumbers$.next(value);
@@ -933,6 +1181,8 @@ class BsPaginationComponent {
933
1181
  get pageNumbers() {
934
1182
  return this._pageNumbers;
935
1183
  }
1184
+ //#endregion
1185
+ //#region ShowArrows
936
1186
  set showArrows(value) {
937
1187
  this._showArrows = value;
938
1188
  this.showArrows$.next(value);
@@ -940,6 +1190,22 @@ class BsPaginationComponent {
940
1190
  get showArrows() {
941
1191
  return this._showArrows;
942
1192
  }
1193
+ //#endregion
1194
+ ngOnDestroy() {
1195
+ this.destroyed$.next(true);
1196
+ }
1197
+ onSelectPage(event, page) {
1198
+ this.selectedPageNumber$.next(page);
1199
+ return false;
1200
+ }
1201
+ onPrevious() {
1202
+ this.selectedPageNumber$.next(this.selectedPageNumber$.value - 1);
1203
+ return false;
1204
+ }
1205
+ onNext() {
1206
+ this.selectedPageNumber$.next(this.selectedPageNumber$.value + 1);
1207
+ return false;
1208
+ }
943
1209
  }
944
1210
  BsPaginationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsPaginationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
945
1211
  BsPaginationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsPaginationComponent, selector: "bs-pagination", inputs: { selectedPageNumber: "selectedPageNumber", numberOfBoxes: "numberOfBoxes", pageNumbers: "pageNumbers", showArrows: "showArrows" }, outputs: { selectedPageNumberChange: "selectedPageNumberChange" }, ngImport: i0, template: "<ul class=\"pagination\">\n <li class=\"page-item\" *ngIf=\"showArrows$ | async\" [class.disabled]=\"isFirstPage$ | async\">\n <a class=\"page-link\" href=\"\" (click)=\"onPrevious()\" aria-label=\"Previous\">\n <span aria-hidden=\"true\">&laquo;</span>\n <span class=\"visually-hidden\">Previous</span>\n </a>\n </li>\n <li *ngFor=\"let pageNumber of (shownPageNumbers$ | async)\" class=\"page-item\"\n [ngClass]=\"{ 'active': pageNumber.selected }\">\n <a class=\"page-link\" href=\"\" (click)=\"onSelectPage($event, pageNumber.page)\" *ngIf=\"pageNumber.page != '...'\">\n {{ pageNumber.page }}\n <span class=\"visually-hidden\" *ngIf=\"pageNumber.selected\">(current)</span>\n </a>\n </li>\n <li class=\"page-item\" *ngIf=\"showArrows$ | async\" [class.disabled]=\"isLastPage$ | async\">\n <a class=\"page-link\" href=\"\" (click)=\"onNext()\" aria-label=\"Next\">\n <span aria-hidden=\"true\">&raquo;</span>\n <span class=\"visually-hidden\">Next</span>\n </a>\n </li>\n</ul>", styles: [":host{display:inline-block}\n"], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], pipes: { "async": i1.AsyncPipe } });
@@ -961,7 +1227,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
961
1227
  class BsDatatableComponent {
962
1228
  constructor() {
963
1229
  this.columns = [];
964
- this.onReloadData = new EventEmitter();
1230
+ this.reloadData = new EventEmitter();
965
1231
  this.settings = new DatatableSettings();
966
1232
  this.settings.sortProperty = '';
967
1233
  this.settings.sortDirection = 'ascending';
@@ -980,17 +1246,15 @@ class BsDatatableComponent {
980
1246
  else {
981
1247
  this.settings.sortDirection = 'descending';
982
1248
  }
983
- this.onReloadData.emit();
1249
+ this.reloadData.emit();
984
1250
  }
985
1251
  }
986
- ngOnInit() {
987
- }
988
1252
  }
989
1253
  BsDatatableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDatatableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
990
- BsDatatableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsDatatableComponent, selector: "bs-datatable", inputs: { settings: "settings", data: "data" }, outputs: { onReloadData: "onReloadData" }, queries: [{ propertyName: "columns", predicate: BsDatatableColumnDirective }], ngImport: i0, template: "<div class=\"table-responsive overflow-y-hidden mb-3\">\n <table class=\"table table-striped table-hover w-100 mb-0\" cellspacing=\"0\" role=\"grid\">\n <thead>\n <tr>\n <th *ngFor=\"let column of columns\" class=\"text-nowrap\"\n [class.sort]=\"column.bsDatatableColumn.sortable\"\n [class.sort-asc]=\"column.bsDatatableColumn.sortable && (settings.sortProperty === column.bsDatatableColumn.name) && (settings.sortDirection === 'ascending')\"\n [class.sort-desc]=\"column.bsDatatableColumn.sortable && (settings.sortProperty === column.bsDatatableColumn.name) && (settings.sortDirection === 'descending')\"\n (click)=\"columnHeaderClicked(column)\">\n <ng-container *ngTemplateOutlet=\"column.templateRef\"></ng-container>\n </th>\n </tr>\n </thead>\n <tbody>\n <ng-container *ngIf=\"!!data && !!rowTemplate\">\n <ng-container *ngFor=\"let item of data.data\">\n <ng-container *ngTemplateOutlet=\"rowTemplate; context: { $implicit: item }\"></ng-container>\n </ng-container>\n </ng-container>\n </tbody>\n </table>\n</div>\n<div class=\"container-fluid\">\n <div class=\"row\">\n <div class=\"col-md-12\">\n <bs-pagination class=\"float-start\" [pageNumbers]=\"settings.perPage.values\"\n [(selectedPageNumber)]=\"settings.perPage.selected\" (selectedPageNumberChange)=\"onReloadData.emit()\"\n [showArrows]=\"false\"></bs-pagination>\n <bs-pagination class=\"float-end\" [pageNumbers]=\"settings.page.values\"\n [(selectedPageNumber)]=\"settings.page.selected\" (selectedPageNumberChange)=\"onReloadData.emit()\"\n [showArrows]=\"true\"></bs-pagination>\n </div>\n </div>\n</div>", styles: ["@charset \"UTF-8\";.overflow-y-hidden{overflow-y:hidden}.table thead th.sort{position:relative;cursor:pointer}.table thead th.sort:before,.table thead th.sort:after{position:absolute;display:block;opacity:.3;bottom:.5em}.table thead th.sort:before{content:\"\\2191\";right:1em}.table thead th.sort:after{content:\"\\2193\";right:.5em}.table thead th.sort.sort-asc:after{opacity:1}.table thead th.sort.sort-desc:before{opacity:1}\n"], components: [{ type: BsPaginationComponent, selector: "bs-pagination", inputs: ["selectedPageNumber", "numberOfBoxes", "pageNumbers", "showArrows"], outputs: ["selectedPageNumberChange"] }], directives: [{ type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
1254
+ BsDatatableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsDatatableComponent, selector: "bs-datatable", inputs: { settings: "settings", data: "data" }, outputs: { reloadData: "reloadData" }, queries: [{ propertyName: "columns", predicate: BsDatatableColumnDirective }], ngImport: i0, template: "<div class=\"table-responsive overflow-y-hidden mb-3\">\n <table class=\"table table-striped table-hover w-100 mb-0\" cellspacing=\"0\" role=\"grid\">\n <thead>\n <tr>\n <th *ngFor=\"let column of columns\" class=\"text-nowrap\"\n [class.sort]=\"column.bsDatatableColumn.sortable\"\n [class.sort-asc]=\"column.bsDatatableColumn.sortable && (settings.sortProperty === column.bsDatatableColumn.name) && (settings.sortDirection === 'ascending')\"\n [class.sort-desc]=\"column.bsDatatableColumn.sortable && (settings.sortProperty === column.bsDatatableColumn.name) && (settings.sortDirection === 'descending')\"\n (click)=\"columnHeaderClicked(column)\">\n <ng-container *ngTemplateOutlet=\"column.templateRef\"></ng-container>\n </th>\n </tr>\n </thead>\n <tbody>\n <ng-container *ngIf=\"!!data && !!rowTemplate\">\n <ng-container *ngFor=\"let item of data.data\">\n <ng-container *ngTemplateOutlet=\"rowTemplate; context: { $implicit: item }\"></ng-container>\n </ng-container>\n </ng-container>\n </tbody>\n </table>\n</div>\n<div class=\"container-fluid\">\n <div class=\"row\">\n <div class=\"col-md-12\">\n <bs-pagination class=\"float-start\" [pageNumbers]=\"settings.perPage.values\"\n [(selectedPageNumber)]=\"settings.perPage.selected\" (selectedPageNumberChange)=\"reloadData.emit()\"\n [showArrows]=\"false\"></bs-pagination>\n <bs-pagination class=\"float-end\" [pageNumbers]=\"settings.page.values\"\n [(selectedPageNumber)]=\"settings.page.selected\" (selectedPageNumberChange)=\"reloadData.emit()\"\n [showArrows]=\"true\"></bs-pagination>\n </div>\n </div>\n</div>", styles: ["@charset \"UTF-8\";.overflow-y-hidden{overflow-y:hidden}.table thead th.sort{position:relative;cursor:pointer}.table thead th.sort:before,.table thead th.sort:after{position:absolute;display:block;opacity:.3;bottom:.5em}.table thead th.sort:before{content:\"\\2191\";right:1em}.table thead th.sort:after{content:\"\\2193\";right:.5em}.table thead th.sort.sort-asc:after{opacity:1}.table thead th.sort.sort-desc:before{opacity:1}\n"], components: [{ type: BsPaginationComponent, selector: "bs-pagination", inputs: ["selectedPageNumber", "numberOfBoxes", "pageNumbers", "showArrows"], outputs: ["selectedPageNumberChange"] }], directives: [{ type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
991
1255
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDatatableComponent, decorators: [{
992
1256
  type: Component,
993
- args: [{ selector: 'bs-datatable', template: "<div class=\"table-responsive overflow-y-hidden mb-3\">\n <table class=\"table table-striped table-hover w-100 mb-0\" cellspacing=\"0\" role=\"grid\">\n <thead>\n <tr>\n <th *ngFor=\"let column of columns\" class=\"text-nowrap\"\n [class.sort]=\"column.bsDatatableColumn.sortable\"\n [class.sort-asc]=\"column.bsDatatableColumn.sortable && (settings.sortProperty === column.bsDatatableColumn.name) && (settings.sortDirection === 'ascending')\"\n [class.sort-desc]=\"column.bsDatatableColumn.sortable && (settings.sortProperty === column.bsDatatableColumn.name) && (settings.sortDirection === 'descending')\"\n (click)=\"columnHeaderClicked(column)\">\n <ng-container *ngTemplateOutlet=\"column.templateRef\"></ng-container>\n </th>\n </tr>\n </thead>\n <tbody>\n <ng-container *ngIf=\"!!data && !!rowTemplate\">\n <ng-container *ngFor=\"let item of data.data\">\n <ng-container *ngTemplateOutlet=\"rowTemplate; context: { $implicit: item }\"></ng-container>\n </ng-container>\n </ng-container>\n </tbody>\n </table>\n</div>\n<div class=\"container-fluid\">\n <div class=\"row\">\n <div class=\"col-md-12\">\n <bs-pagination class=\"float-start\" [pageNumbers]=\"settings.perPage.values\"\n [(selectedPageNumber)]=\"settings.perPage.selected\" (selectedPageNumberChange)=\"onReloadData.emit()\"\n [showArrows]=\"false\"></bs-pagination>\n <bs-pagination class=\"float-end\" [pageNumbers]=\"settings.page.values\"\n [(selectedPageNumber)]=\"settings.page.selected\" (selectedPageNumberChange)=\"onReloadData.emit()\"\n [showArrows]=\"true\"></bs-pagination>\n </div>\n </div>\n</div>", styles: ["@charset \"UTF-8\";.overflow-y-hidden{overflow-y:hidden}.table thead th.sort{position:relative;cursor:pointer}.table thead th.sort:before,.table thead th.sort:after{position:absolute;display:block;opacity:.3;bottom:.5em}.table thead th.sort:before{content:\"\\2191\";right:1em}.table thead th.sort:after{content:\"\\2193\";right:.5em}.table thead th.sort.sort-asc:after{opacity:1}.table thead th.sort.sort-desc:before{opacity:1}\n"] }]
1257
+ args: [{ selector: 'bs-datatable', template: "<div class=\"table-responsive overflow-y-hidden mb-3\">\n <table class=\"table table-striped table-hover w-100 mb-0\" cellspacing=\"0\" role=\"grid\">\n <thead>\n <tr>\n <th *ngFor=\"let column of columns\" class=\"text-nowrap\"\n [class.sort]=\"column.bsDatatableColumn.sortable\"\n [class.sort-asc]=\"column.bsDatatableColumn.sortable && (settings.sortProperty === column.bsDatatableColumn.name) && (settings.sortDirection === 'ascending')\"\n [class.sort-desc]=\"column.bsDatatableColumn.sortable && (settings.sortProperty === column.bsDatatableColumn.name) && (settings.sortDirection === 'descending')\"\n (click)=\"columnHeaderClicked(column)\">\n <ng-container *ngTemplateOutlet=\"column.templateRef\"></ng-container>\n </th>\n </tr>\n </thead>\n <tbody>\n <ng-container *ngIf=\"!!data && !!rowTemplate\">\n <ng-container *ngFor=\"let item of data.data\">\n <ng-container *ngTemplateOutlet=\"rowTemplate; context: { $implicit: item }\"></ng-container>\n </ng-container>\n </ng-container>\n </tbody>\n </table>\n</div>\n<div class=\"container-fluid\">\n <div class=\"row\">\n <div class=\"col-md-12\">\n <bs-pagination class=\"float-start\" [pageNumbers]=\"settings.perPage.values\"\n [(selectedPageNumber)]=\"settings.perPage.selected\" (selectedPageNumberChange)=\"reloadData.emit()\"\n [showArrows]=\"false\"></bs-pagination>\n <bs-pagination class=\"float-end\" [pageNumbers]=\"settings.page.values\"\n [(selectedPageNumber)]=\"settings.page.selected\" (selectedPageNumberChange)=\"reloadData.emit()\"\n [showArrows]=\"true\"></bs-pagination>\n </div>\n </div>\n</div>", styles: ["@charset \"UTF-8\";.overflow-y-hidden{overflow-y:hidden}.table thead th.sort{position:relative;cursor:pointer}.table thead th.sort:before,.table thead th.sort:after{position:absolute;display:block;opacity:.3;bottom:.5em}.table thead th.sort:before{content:\"\\2191\";right:1em}.table thead th.sort:after{content:\"\\2193\";right:.5em}.table thead th.sort.sort-asc:after{opacity:1}.table thead th.sort.sort-desc:before{opacity:1}\n"] }]
994
1258
  }], ctorParameters: function () { return []; }, propDecorators: { columns: [{
995
1259
  type: ContentChildren,
996
1260
  args: [BsDatatableColumnDirective]
@@ -998,7 +1262,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
998
1262
  type: Input
999
1263
  }], data: [{
1000
1264
  type: Input
1001
- }], onReloadData: [{
1265
+ }], reloadData: [{
1002
1266
  type: Output
1003
1267
  }] } });
1004
1268
 
@@ -1009,11 +1273,11 @@ class BsRowTemplateDirective {
1009
1273
  }
1010
1274
  }
1011
1275
  BsRowTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsRowTemplateDirective, deps: [{ token: BsDatatableComponent }, { token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
1012
- BsRowTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: BsRowTemplateDirective, selector: "[rowTemplate]", ngImport: i0 });
1276
+ BsRowTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: BsRowTemplateDirective, selector: "[bsRowTemplate]", ngImport: i0 });
1013
1277
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsRowTemplateDirective, decorators: [{
1014
1278
  type: Directive,
1015
1279
  args: [{
1016
- selector: '[rowTemplate]'
1280
+ selector: '[bsRowTemplate]'
1017
1281
  }]
1018
1282
  }], ctorParameters: function () { return [{ type: BsDatatableComponent }, { type: i0.TemplateRef }]; } });
1019
1283
 
@@ -1073,7 +1337,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
1073
1337
  }] });
1074
1338
 
1075
1339
  class BsDropdownMenuDirective extends ClickOutsideDirective {
1076
- constructor(dropdown, document, viewContainerRef, templateRef, overlay, elementRef, zone, platformId) {
1340
+ constructor(dropdown, viewContainerRef, templateRef, overlay, elementRef, zone, platformId) {
1077
1341
  super(elementRef, zone, platformId);
1078
1342
  this.dropdown = dropdown;
1079
1343
  this.viewContainerRef = viewContainerRef;
@@ -1083,7 +1347,6 @@ class BsDropdownMenuDirective extends ClickOutsideDirective {
1083
1347
  this.destroyed$ = new Subject();
1084
1348
  this.overlayRef = null;
1085
1349
  this.templatePortal = null;
1086
- this.document = document;
1087
1350
  this.dropdown.isOpen$
1088
1351
  .pipe(takeUntil(this.destroyed$))
1089
1352
  .subscribe((isOpen) => {
@@ -1096,7 +1359,9 @@ class BsDropdownMenuDirective extends ClickOutsideDirective {
1096
1359
  positionStrategy: this.overlay.position()
1097
1360
  .flexibleConnectedTo(!this.dropdown.toggle ? dropdown.elementRef : this.dropdown.toggle.toggleButton)
1098
1361
  .withPositions([
1362
+ // element: BottomLeft - dropdown: TopLeft
1099
1363
  { originX: "start", originY: "bottom", overlayX: "start", overlayY: "top", offsetY: 0 },
1364
+ // element: TopLeft - dropdown: BottomLeft
1100
1365
  { originX: "start", originY: "top", overlayX: "start", overlayY: "bottom", offsetY: 0 },
1101
1366
  ]),
1102
1367
  });
@@ -1117,6 +1382,7 @@ class BsDropdownMenuDirective extends ClickOutsideDirective {
1117
1382
  }
1118
1383
  });
1119
1384
  }
1385
+ get show() { return this.dropdown.isOpen; }
1120
1386
  clickedOutside(ev) {
1121
1387
  if (!this.wait) {
1122
1388
  if (!this.overlayRef?.overlayElement.contains(ev.target)) {
@@ -1129,26 +1395,23 @@ class BsDropdownMenuDirective extends ClickOutsideDirective {
1129
1395
  }
1130
1396
  }
1131
1397
  }
1132
- BsDropdownMenuDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDropdownMenuDirective, deps: [{ token: forwardRef(() => BsDropdownDirective) }, { token: DOCUMENT }, { token: i0.ViewContainerRef }, { token: i0.TemplateRef }, { token: i1$1.Overlay }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Directive });
1133
- BsDropdownMenuDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: BsDropdownMenuDirective, selector: "[bsDropdownMenu]", host: { listeners: { "clickOutside": "clickedOutside($event)" }, properties: { "class.show": "dropdown.isOpen" } }, usesInheritance: true, ngImport: i0 });
1398
+ BsDropdownMenuDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDropdownMenuDirective, deps: [{ token: forwardRef(() => BsDropdownDirective) }, { token: i0.ViewContainerRef }, { token: i0.TemplateRef }, { token: i1$1.Overlay }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Directive });
1399
+ BsDropdownMenuDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: BsDropdownMenuDirective, selector: "[bsDropdownMenu]", host: { listeners: { "clickOutside": "clickedOutside($event)" }, properties: { "class.show": "this.show" } }, usesInheritance: true, ngImport: i0 });
1134
1400
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDropdownMenuDirective, decorators: [{
1135
1401
  type: Directive,
1136
1402
  args: [{
1137
- selector: '[bsDropdownMenu]',
1138
- host: {
1139
- '[class.show]': 'dropdown.isOpen',
1140
- },
1403
+ selector: '[bsDropdownMenu]'
1141
1404
  }]
1142
1405
  }], ctorParameters: function () { return [{ type: BsDropdownDirective, decorators: [{
1143
1406
  type: Inject,
1144
1407
  args: [forwardRef(() => BsDropdownDirective)]
1145
- }] }, { type: undefined, decorators: [{
1146
- type: Inject,
1147
- args: [DOCUMENT]
1148
- }] }, { type: i0.ViewContainerRef }, { type: i0.TemplateRef }, { type: i1$1.Overlay }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: Object, decorators: [{
1408
+ }] }, { type: i0.ViewContainerRef }, { type: i0.TemplateRef }, { type: i1$1.Overlay }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: undefined, decorators: [{
1149
1409
  type: Inject,
1150
1410
  args: [PLATFORM_ID]
1151
- }] }]; }, propDecorators: { clickedOutside: [{
1411
+ }] }]; }, propDecorators: { show: [{
1412
+ type: HostBinding,
1413
+ args: ['class.show']
1414
+ }], clickedOutside: [{
1152
1415
  type: HostListener,
1153
1416
  args: ['clickOutside', ['$event']]
1154
1417
  }] } });
@@ -1229,81 +1492,501 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
1229
1492
  args: ['window:blur']
1230
1493
  }] } });
1231
1494
 
1232
- class BsDatepickerComponent {
1233
- constructor() {
1234
- this.selectedDate = new Date();
1235
- this.currentMonth = new Date();
1236
- }
1237
- ngOnInit() {
1238
- }
1495
+ class BsDatepickerComponent {
1496
+ constructor() {
1497
+ //#region SelectedDate
1498
+ this._selectedDate = new Date();
1499
+ this.selectedDateChange = new EventEmitter();
1500
+ //#endregion
1501
+ //#region CurrentMonth
1502
+ this._currentMonth = new Date();
1503
+ this.currentMonthChange = new EventEmitter();
1504
+ }
1505
+ get selectedDate() {
1506
+ return this._selectedDate;
1507
+ }
1508
+ set selectedDate(value) {
1509
+ this._selectedDate = value;
1510
+ this.selectedDateChange.emit(value);
1511
+ }
1512
+ get currentMonth() {
1513
+ return this._currentMonth;
1514
+ }
1515
+ set currentMonth(value) {
1516
+ this._currentMonth = value;
1517
+ this.currentMonthChange.emit(value);
1518
+ }
1519
+ }
1520
+ BsDatepickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDatepickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1521
+ BsDatepickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsDatepickerComponent, selector: "bs-datepicker", inputs: { selectedDate: "selectedDate", currentMonth: "currentMonth" }, outputs: { selectedDateChange: "selectedDateChange", currentMonthChange: "currentMonthChange" }, 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 } });
1522
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDatepickerComponent, decorators: [{
1523
+ type: Component,
1524
+ 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: [""] }]
1525
+ }], propDecorators: { selectedDateChange: [{
1526
+ type: Output
1527
+ }], selectedDate: [{
1528
+ type: Input
1529
+ }], currentMonthChange: [{
1530
+ type: Output
1531
+ }], currentMonth: [{
1532
+ type: Input
1533
+ }] } });
1534
+
1535
+ class BsDropdownModule {
1536
+ }
1537
+ BsDropdownModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDropdownModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1538
+ BsDropdownModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDropdownModule, declarations: [BsDropdownDirective,
1539
+ BsDropdownToggleDirective,
1540
+ BsDropdownMenuDirective], imports: [CommonModule,
1541
+ OverlayModule,
1542
+ ClickOutsideModule], exports: [BsDropdownDirective,
1543
+ BsDropdownToggleDirective,
1544
+ BsDropdownMenuDirective] });
1545
+ BsDropdownModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDropdownModule, imports: [[
1546
+ CommonModule,
1547
+ OverlayModule,
1548
+ ClickOutsideModule
1549
+ ]] });
1550
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDropdownModule, decorators: [{
1551
+ type: NgModule,
1552
+ args: [{
1553
+ declarations: [
1554
+ BsDropdownDirective,
1555
+ BsDropdownToggleDirective,
1556
+ BsDropdownMenuDirective
1557
+ ],
1558
+ imports: [
1559
+ CommonModule,
1560
+ OverlayModule,
1561
+ ClickOutsideModule
1562
+ ],
1563
+ exports: [
1564
+ BsDropdownDirective,
1565
+ BsDropdownToggleDirective,
1566
+ BsDropdownMenuDirective
1567
+ ]
1568
+ }]
1569
+ }] });
1570
+
1571
+ class BsDatepickerModule {
1572
+ }
1573
+ BsDatepickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDatepickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1574
+ BsDatepickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDatepickerModule, declarations: [BsDatepickerComponent], imports: [CommonModule,
1575
+ BsCalendarModule,
1576
+ BsDropdownModule], exports: [BsDatepickerComponent] });
1577
+ BsDatepickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDatepickerModule, imports: [[
1578
+ CommonModule,
1579
+ BsCalendarModule,
1580
+ BsDropdownModule
1581
+ ]] });
1582
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDatepickerModule, decorators: [{
1583
+ type: NgModule,
1584
+ args: [{
1585
+ declarations: [
1586
+ BsDatepickerComponent
1587
+ ],
1588
+ imports: [
1589
+ CommonModule,
1590
+ BsCalendarModule,
1591
+ BsDropdownModule
1592
+ ],
1593
+ exports: [
1594
+ BsDatepickerComponent
1595
+ ]
1596
+ }]
1597
+ }] });
1598
+
1599
+ class BsProgressComponent {
1600
+ constructor() {
1601
+ this.progressClass = true;
1602
+ this.height = null;
1603
+ this.isIndeterminate = false;
1604
+ }
1605
+ }
1606
+ BsProgressComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsProgressComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1607
+ 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"] }] });
1608
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsProgressComponent, decorators: [{
1609
+ type: Component,
1610
+ 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"] }]
1611
+ }], propDecorators: { progressClass: [{
1612
+ type: HostBinding,
1613
+ args: ['class.progress']
1614
+ }], height: [{
1615
+ type: Input
1616
+ }, {
1617
+ type: HostBinding,
1618
+ args: ['style.height.px']
1619
+ }], isIndeterminate: [{
1620
+ type: Input
1621
+ }] } });
1622
+
1623
+ class BsProgressBarComponent {
1624
+ constructor() {
1625
+ this.destroyed$ = new Subject();
1626
+ this.minimum$ = new BehaviorSubject(0);
1627
+ this.maximum$ = new BehaviorSubject(100);
1628
+ this.value$ = new BehaviorSubject(50);
1629
+ this.color$ = new BehaviorSubject(Color.primary);
1630
+ this.striped = false;
1631
+ this.animated = false;
1632
+ this.progressBar = true;
1633
+ this.colorClass = 'bg-primary';
1634
+ this.widthStyle = '0';
1635
+ this.role = 'progressbar';
1636
+ this.valueNow = 50;
1637
+ this.valueMin = 0;
1638
+ this.valueMax = 100;
1639
+ this.percentage$ = combineLatest([this.minimum$, this.maximum$, this.value$])
1640
+ .pipe(map(([minimum, maximum, value]) => {
1641
+ return (value - minimum) / (maximum - minimum) * 100;
1642
+ }));
1643
+ this.width$ = this.percentage$
1644
+ .pipe(map((width) => {
1645
+ return String(width) + '%';
1646
+ }));
1647
+ this.colorClass$ = this.color$
1648
+ .pipe(map((color) => {
1649
+ const name = Color[color];
1650
+ return `bg-${name}`;
1651
+ }));
1652
+ this.colorClass$
1653
+ .pipe(takeUntil(this.destroyed$))
1654
+ .subscribe((color) => {
1655
+ this.colorClass = color;
1656
+ });
1657
+ this.width$
1658
+ .pipe(takeUntil(this.destroyed$))
1659
+ .subscribe((width) => {
1660
+ this.widthStyle = width;
1661
+ });
1662
+ this.value$
1663
+ .pipe(takeUntil(this.destroyed$))
1664
+ .subscribe((value) => {
1665
+ this.valueNow = value;
1666
+ });
1667
+ this.minimum$
1668
+ .pipe(takeUntil(this.destroyed$))
1669
+ .subscribe((value) => {
1670
+ this.valueMin = value;
1671
+ });
1672
+ this.maximum$
1673
+ .pipe(takeUntil(this.destroyed$))
1674
+ .subscribe((value) => {
1675
+ this.valueMax = value;
1676
+ });
1677
+ }
1678
+ set minimum(value) {
1679
+ this.minimum$.next(value);
1680
+ }
1681
+ set maximum(value) {
1682
+ this.maximum$.next(value);
1683
+ }
1684
+ set value(value) {
1685
+ this.value$.next(value);
1686
+ }
1687
+ set color(value) {
1688
+ this.color$.next(value);
1689
+ }
1690
+ ngOnDestroy() {
1691
+ this.destroyed$.next(true);
1692
+ }
1693
+ }
1694
+ BsProgressBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsProgressBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1695
+ 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: [""] });
1696
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsProgressBarComponent, decorators: [{
1697
+ type: Component,
1698
+ args: [{ selector: 'bs-progress-bar', template: "", styles: [""] }]
1699
+ }], ctorParameters: function () { return []; }, propDecorators: { minimum: [{
1700
+ type: Input
1701
+ }], maximum: [{
1702
+ type: Input
1703
+ }], value: [{
1704
+ type: Input
1705
+ }], color: [{
1706
+ type: Input
1707
+ }], striped: [{
1708
+ type: Input
1709
+ }, {
1710
+ type: HostBinding,
1711
+ args: ['class.progress-bar-striped']
1712
+ }], animated: [{
1713
+ type: Input
1714
+ }, {
1715
+ type: HostBinding,
1716
+ args: ['class.progress-bar-animated']
1717
+ }], progressBar: [{
1718
+ type: HostBinding,
1719
+ args: ['class.progress-bar']
1720
+ }], colorClass: [{
1721
+ type: HostBinding,
1722
+ args: ['class']
1723
+ }], widthStyle: [{
1724
+ type: HostBinding,
1725
+ args: ['style.width']
1726
+ }], role: [{
1727
+ type: HostBinding,
1728
+ args: ['attr.role']
1729
+ }], valueNow: [{
1730
+ type: HostBinding,
1731
+ args: ['attr.aria-valuenow']
1732
+ }], valueMin: [{
1733
+ type: HostBinding,
1734
+ args: ['attr.aria-valuemin']
1735
+ }], valueMax: [{
1736
+ type: HostBinding,
1737
+ args: ['attr.aria-valuemax']
1738
+ }] } });
1739
+
1740
+ class BsForDirective {
1741
+ constructor() {
1742
+ this.defaultCursor = true;
1743
+ }
1744
+ onMouseClick() {
1745
+ if (!('tagName' in this.bsFor)) {
1746
+ this.bsFor.focus();
1747
+ }
1748
+ else if (this.bsFor.tagName.toLowerCase() !== 'input') {
1749
+ this.bsFor.focus();
1750
+ }
1751
+ else if (this.bsFor.type.toLowerCase() === 'file') {
1752
+ this.bsFor.click();
1753
+ }
1754
+ else {
1755
+ this.bsFor.focus();
1756
+ }
1757
+ }
1758
+ }
1759
+ BsForDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsForDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
1760
+ BsForDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: BsForDirective, selector: "[bsFor]", inputs: { bsFor: "bsFor" }, host: { listeners: { "click": "onMouseClick()" }, properties: { "class.cursor-default": "this.defaultCursor" } }, ngImport: i0 });
1761
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsForDirective, decorators: [{
1762
+ type: Directive,
1763
+ args: [{
1764
+ selector: '[bsFor]'
1765
+ }]
1766
+ }], propDecorators: { defaultCursor: [{
1767
+ type: HostBinding,
1768
+ args: ['class.cursor-default']
1769
+ }], bsFor: [{
1770
+ type: Input
1771
+ }], onMouseClick: [{
1772
+ type: HostListener,
1773
+ args: ['click']
1774
+ }] } });
1775
+
1776
+ class BsFormatBytesPipe {
1777
+ transform(value, decimals = 2) {
1778
+ if (value === 0) {
1779
+ return "0 Bytes";
1780
+ }
1781
+ const k = 1024;
1782
+ const dm = decimals <= 0 ? 0 : decimals;
1783
+ const sizes = ["Bytes", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"];
1784
+ const i = Math.floor(Math.log(value) / Math.log(k));
1785
+ return parseFloat((value / Math.pow(k, i)).toFixed(dm)) + " " + sizes[i];
1786
+ }
1787
+ }
1788
+ BsFormatBytesPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsFormatBytesPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
1789
+ BsFormatBytesPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsFormatBytesPipe, name: "bsFormatBytes" });
1790
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsFormatBytesPipe, decorators: [{
1791
+ type: Pipe,
1792
+ args: [{
1793
+ name: 'bsFormatBytes'
1794
+ }]
1795
+ }] });
1796
+
1797
+ class BsFileUploadComponent {
1798
+ constructor() {
1799
+ this.dropFilesCaption = 'Drop your files here';
1800
+ this.browseFilesCaption = 'Browse for files';
1801
+ this.placeholder = 'Drop files to upload';
1802
+ this.isDraggingFile = false;
1803
+ this.files = [];
1804
+ this.filesDropped = new EventEmitter();
1805
+ }
1806
+ onChange(event) {
1807
+ console.log('event', event);
1808
+ if (!event.target)
1809
+ return;
1810
+ if (!('files' in event.target))
1811
+ return;
1812
+ if (!event.target['files'])
1813
+ return;
1814
+ const files = event.target.files;
1815
+ if (!files)
1816
+ return;
1817
+ this.processDroppedFiles(files);
1818
+ }
1819
+ onDragOver(event) {
1820
+ event.preventDefault();
1821
+ event.stopPropagation();
1822
+ if (event.dataTransfer) {
1823
+ this.isDraggingFile = true;
1824
+ event.dataTransfer.effectAllowed = "copy";
1825
+ }
1826
+ }
1827
+ onDragLeave(event) {
1828
+ event.preventDefault();
1829
+ event.stopPropagation();
1830
+ this.isDraggingFile = false;
1831
+ }
1832
+ onDrop(event) {
1833
+ event.preventDefault();
1834
+ event.stopPropagation();
1835
+ this.isDraggingFile = false;
1836
+ if (event.dataTransfer && event.dataTransfer.files) {
1837
+ this.processDroppedFiles(event.dataTransfer.files);
1838
+ }
1839
+ }
1840
+ processDroppedFiles(fileList) {
1841
+ const newFiles = [...Array(fileList.length).keys()]
1842
+ .map(i => fileList.item(i))
1843
+ .filter(f => !!f)
1844
+ .map(f => ({ file: f, progress: 0 }));
1845
+ this.files.push(...newFiles);
1846
+ this.filesDropped.emit(newFiles);
1847
+ }
1848
+ }
1849
+ BsFileUploadComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsFileUploadComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1850
+ BsFileUploadComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsFileUploadComponent, selector: "bs-file-upload", inputs: { dropFilesCaption: "dropFilesCaption", browseFilesCaption: "browseFilesCaption", placeholder: "placeholder", files: "files" }, outputs: { filesDropped: "filesDropped" }, host: { listeners: { "dragover": "onDragOver($event)", "dragleave": "onDragLeave($event)", "drop": "onDrop($event)" } }, ngImport: i0, template: "<div class=\"dropzone border position-relative p-5\" [class.dragging]=\"isDraggingFile\">\n <input type=\"file\" multiple #fileUpload (change)=\"onChange($event)\" [title]=\"placeholder\" [placeholder]=\"placeholder\" class=\"position-absolute w-100 h-100\">\n <!-- <img src=\"/assets/ic-file-upload.svg\" [alt]=\"placeholder\"> -->\n <span class=\"h3 d-block\">{{ dropFilesCaption }}</span>\n <label class=\"btn btn-primary position-relative\" [bsFor]=\"fileUpload\">{{ browseFilesCaption }}</label>\n</div>\n<ul class=\"list-group files-list\">\n <li class=\"list-group-item\" *ngFor=\"let upload of files\">\n <ng-container *ngTemplateOutlet=\"fileTemplate ?? defaultFileTemplate; context: { $implicit: upload }\"></ng-container>\n </li>\n</ul>\n\n<ng-template #defaultFileTemplate let-upload>\n <div class=\"d-flex flex-row mx-auto\">\n <div class=\"file-img\"></div>\n <div class=\"flex-grow-1 text-start px-2\">\n <span class=\"d-block text-truncate text-secondary\">{{ upload.file.name }}</span>\n <span class=\"d-block text-grey mb-0\">{{ upload.file.size | bsFormatBytes }}</span>\n <bs-progress [height]=\"4\">\n <bs-progress-bar [minimum]=\"0\" [maximum]=\"upload.file.size\" [value]=\"upload.progress\"></bs-progress-bar>\n </bs-progress>\n </div>\n </div>\n</ng-template>", styles: [".dropzone{z-index:1}.dropzone.dragging{border:4px solid #CB1535!important;background:#DC88A8;margin:-3px -3px -4px}.dropzone input{opacity:0;z-index:2;top:0;left:0}.dropzone .btn{z-index:5}.files-list{margin-top:-1px}.files-list .d-flex{max-width:400px}.text-grey{color:#999}.list-group span{margin:-5px auto}\n"], components: [{ type: BsProgressComponent, selector: "bs-progress", inputs: ["height", "isIndeterminate"] }, { type: BsProgressBarComponent, selector: "bs-progress-bar", inputs: ["minimum", "maximum", "value", "color", "striped", "animated"] }], directives: [{ type: BsForDirective, selector: "[bsFor]", inputs: ["bsFor"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], pipes: { "bsFormatBytes": BsFormatBytesPipe } });
1851
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsFileUploadComponent, decorators: [{
1852
+ type: Component,
1853
+ args: [{ selector: 'bs-file-upload', template: "<div class=\"dropzone border position-relative p-5\" [class.dragging]=\"isDraggingFile\">\n <input type=\"file\" multiple #fileUpload (change)=\"onChange($event)\" [title]=\"placeholder\" [placeholder]=\"placeholder\" class=\"position-absolute w-100 h-100\">\n <!-- <img src=\"/assets/ic-file-upload.svg\" [alt]=\"placeholder\"> -->\n <span class=\"h3 d-block\">{{ dropFilesCaption }}</span>\n <label class=\"btn btn-primary position-relative\" [bsFor]=\"fileUpload\">{{ browseFilesCaption }}</label>\n</div>\n<ul class=\"list-group files-list\">\n <li class=\"list-group-item\" *ngFor=\"let upload of files\">\n <ng-container *ngTemplateOutlet=\"fileTemplate ?? defaultFileTemplate; context: { $implicit: upload }\"></ng-container>\n </li>\n</ul>\n\n<ng-template #defaultFileTemplate let-upload>\n <div class=\"d-flex flex-row mx-auto\">\n <div class=\"file-img\"></div>\n <div class=\"flex-grow-1 text-start px-2\">\n <span class=\"d-block text-truncate text-secondary\">{{ upload.file.name }}</span>\n <span class=\"d-block text-grey mb-0\">{{ upload.file.size | bsFormatBytes }}</span>\n <bs-progress [height]=\"4\">\n <bs-progress-bar [minimum]=\"0\" [maximum]=\"upload.file.size\" [value]=\"upload.progress\"></bs-progress-bar>\n </bs-progress>\n </div>\n </div>\n</ng-template>", styles: [".dropzone{z-index:1}.dropzone.dragging{border:4px solid #CB1535!important;background:#DC88A8;margin:-3px -3px -4px}.dropzone input{opacity:0;z-index:2;top:0;left:0}.dropzone .btn{z-index:5}.files-list{margin-top:-1px}.files-list .d-flex{max-width:400px}.text-grey{color:#999}.list-group span{margin:-5px auto}\n"] }]
1854
+ }], propDecorators: { dropFilesCaption: [{
1855
+ type: Input
1856
+ }], browseFilesCaption: [{
1857
+ type: Input
1858
+ }], placeholder: [{
1859
+ type: Input
1860
+ }], files: [{
1861
+ type: Input
1862
+ }], filesDropped: [{
1863
+ type: Output
1864
+ }], onDragOver: [{
1865
+ type: HostListener,
1866
+ args: ['dragover', ['$event']]
1867
+ }], onDragLeave: [{
1868
+ type: HostListener,
1869
+ args: ['dragleave', ['$event']]
1870
+ }], onDrop: [{
1871
+ type: HostListener,
1872
+ args: ['drop', ['$event']]
1873
+ }] } });
1874
+
1875
+ class BsFileUploadTemplateDirective {
1876
+ constructor(fileUploadComponent, templateRef) {
1877
+ fileUploadComponent.fileTemplate = templateRef;
1878
+ }
1879
+ }
1880
+ BsFileUploadTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsFileUploadTemplateDirective, deps: [{ token: BsFileUploadComponent }, { token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
1881
+ BsFileUploadTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: BsFileUploadTemplateDirective, selector: "[bsFileUploadTemplate]", ngImport: i0 });
1882
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsFileUploadTemplateDirective, decorators: [{
1883
+ type: Directive,
1884
+ args: [{
1885
+ selector: '[bsFileUploadTemplate]'
1886
+ }]
1887
+ }], ctorParameters: function () { return [{ type: BsFileUploadComponent }, { type: i0.TemplateRef }]; } });
1888
+
1889
+ class BsForModule {
1890
+ }
1891
+ BsForModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsForModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1892
+ BsForModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsForModule, declarations: [BsForDirective], imports: [CommonModule], exports: [BsForDirective] });
1893
+ BsForModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsForModule, imports: [[
1894
+ CommonModule
1895
+ ]] });
1896
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsForModule, decorators: [{
1897
+ type: NgModule,
1898
+ args: [{
1899
+ declarations: [
1900
+ BsForDirective
1901
+ ],
1902
+ imports: [
1903
+ CommonModule
1904
+ ],
1905
+ exports: [
1906
+ BsForDirective
1907
+ ]
1908
+ }]
1909
+ }] });
1910
+
1911
+ class BsProgressBarModule {
1239
1912
  }
1240
- BsDatepickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDatepickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1241
- BsDatepickerComponentcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsDatepickerComponent, selector: "bs-datepicker", ngImport: i0, template: "<div bsDropdown [hasBackdrop]=\"true\" [closeOnClickOutside]=\"true\">\n <button bsDropdownToggle class=\"btn btn-primary\">{{ selectedDate | date }}</button>\n <div *bsDropdownMenu>\n <bs-calendar [(selectedDate)]=\"selectedDate\" [(currentMonth)]=\"currentMonth\"></bs-calendar>\n </div>\n</div>", styles: [""], components: [{ type: BsCalendarComponent, selector: "bs-calendar", inputs: ["currentMonth", "selectedDate"], outputs: ["currentMonthChange", "selectedDateChange"] }], directives: [{ type: BsDropdownDirective, selector: "[bsDropdown]", inputs: ["hasBackdrop", "sameWidth", "closeOnClickOutside", "isOpen"], outputs: ["isOpenChange"] }, { type: BsDropdownToggleDirective, selector: "[bsDropdownToggle]" }, { type: BsDropdownMenuDirective, selector: "[bsDropdownMenu]" }], pipes: { "date": i1.DatePipe } });
1242
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDatepickerComponent, decorators: [{
1243
- type: Component,
1244
- args: [{ selector: 'bs-datepicker', template: "<div bsDropdown [hasBackdrop]=\"true\" [closeOnClickOutside]=\"true\">\n <button bsDropdownToggle class=\"btn btn-primary\">{{ selectedDate | date }}</button>\n <div *bsDropdownMenu>\n <bs-calendar [(selectedDate)]=\"selectedDate\" [(currentMonth)]=\"currentMonth\"></bs-calendar>\n </div>\n</div>", styles: [""] }]
1245
- }], ctorParameters: function () { return []; } });
1913
+ BsProgressBarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsProgressBarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1914
+ BsProgressBarModulemod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsProgressBarModule, declarations: [BsProgressBarComponent,
1915
+ BsProgressComponent], imports: [CommonModule], exports: [BsProgressBarComponent,
1916
+ BsProgressComponent] });
1917
+ BsProgressBarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsProgressBarModule, imports: [[
1918
+ CommonModule
1919
+ ]] });
1920
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsProgressBarModule, decorators: [{
1921
+ type: NgModule,
1922
+ args: [{
1923
+ declarations: [
1924
+ BsProgressBarComponent,
1925
+ BsProgressComponent
1926
+ ],
1927
+ imports: [
1928
+ CommonModule
1929
+ ],
1930
+ exports: [
1931
+ BsProgressBarComponent,
1932
+ BsProgressComponent
1933
+ ]
1934
+ }]
1935
+ }] });
1246
1936
 
1247
- class BsDropdownModule {
1937
+ class BsFormatBytesModule {
1248
1938
  }
1249
- BsDropdownModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDropdownModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1250
- BsDropdownModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDropdownModule, declarations: [BsDropdownDirective,
1251
- BsDropdownToggleDirective,
1252
- BsDropdownMenuDirective], imports: [CommonModule,
1253
- OverlayModule,
1254
- ClickOutsideModule], exports: [BsDropdownDirective,
1255
- BsDropdownToggleDirective,
1256
- BsDropdownMenuDirective] });
1257
- BsDropdownModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDropdownModule, imports: [[
1258
- CommonModule,
1259
- OverlayModule,
1260
- ClickOutsideModule
1939
+ BsFormatBytesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsFormatBytesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1940
+ BsFormatBytesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsFormatBytesModule, declarations: [BsFormatBytesPipe], imports: [CommonModule], exports: [BsFormatBytesPipe] });
1941
+ BsFormatBytesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsFormatBytesModule, imports: [[
1942
+ CommonModule
1261
1943
  ]] });
1262
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDropdownModule, decorators: [{
1944
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsFormatBytesModule, decorators: [{
1263
1945
  type: NgModule,
1264
1946
  args: [{
1265
1947
  declarations: [
1266
- BsDropdownDirective,
1267
- BsDropdownToggleDirective,
1268
- BsDropdownMenuDirective
1948
+ BsFormatBytesPipe
1269
1949
  ],
1270
1950
  imports: [
1271
- CommonModule,
1272
- OverlayModule,
1273
- ClickOutsideModule
1951
+ CommonModule
1274
1952
  ],
1275
1953
  exports: [
1276
- BsDropdownDirective,
1277
- BsDropdownToggleDirective,
1278
- BsDropdownMenuDirective
1954
+ BsFormatBytesPipe
1279
1955
  ]
1280
1956
  }]
1281
1957
  }] });
1282
1958
 
1283
- class BsDatepickerModule {
1959
+ class BsFileUploadModule {
1284
1960
  }
1285
- BsDatepickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDatepickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1286
- BsDatepickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDatepickerModule, declarations: [BsDatepickerComponent], imports: [CommonModule,
1287
- BsCalendarModule,
1288
- BsDropdownModule], exports: [BsDatepickerComponent] });
1289
- BsDatepickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDatepickerModule, imports: [[
1961
+ BsFileUploadModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsFileUploadModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1962
+ BsFileUploadModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsFileUploadModule, declarations: [BsFileUploadComponent,
1963
+ BsFileUploadTemplateDirective], imports: [CommonModule,
1964
+ BsForModule,
1965
+ BsFormatBytesModule,
1966
+ BsProgressBarModule], exports: [BsFileUploadComponent,
1967
+ BsFileUploadTemplateDirective] });
1968
+ BsFileUploadModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsFileUploadModule, imports: [[
1290
1969
  CommonModule,
1291
- BsCalendarModule,
1292
- BsDropdownModule
1970
+ BsForModule,
1971
+ BsFormatBytesModule,
1972
+ BsProgressBarModule
1293
1973
  ]] });
1294
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsDatepickerModule, decorators: [{
1974
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsFileUploadModule, decorators: [{
1295
1975
  type: NgModule,
1296
1976
  args: [{
1297
1977
  declarations: [
1298
- BsDatepickerComponent
1978
+ BsFileUploadComponent,
1979
+ BsFileUploadTemplateDirective
1299
1980
  ],
1300
1981
  imports: [
1301
1982
  CommonModule,
1302
- BsCalendarModule,
1303
- BsDropdownModule
1983
+ BsForModule,
1984
+ BsFormatBytesModule,
1985
+ BsProgressBarModule
1304
1986
  ],
1305
1987
  exports: [
1306
- BsDatepickerComponent
1988
+ BsFileUploadComponent,
1989
+ BsFileUploadTemplateDirective
1307
1990
  ]
1308
1991
  }]
1309
1992
  }] });
@@ -1359,42 +2042,246 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
1359
2042
  }]
1360
2043
  }] });
1361
2044
 
2045
+ class BsModalComponent {
2046
+ constructor() { }
2047
+ }
2048
+ BsModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2049
+ BsModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsModalComponent, selector: "bs-modal", ngImport: i0, template: "<div class=\"modal-dialog\">\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <ng-container *ngTemplateOutlet=\"header\"></ng-container>\n </div>\n <div class=\"modal-body\">\n <ng-container *ngTemplateOutlet=\"body\"></ng-container>\n </div>\n <div class=\"modal-footer\">\n <ng-container *ngTemplateOutlet=\"footer\"></ng-container>\n </div>\n </div>\n</div>", styles: [""], directives: [{ type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
2050
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsModalComponent, decorators: [{
2051
+ type: Component,
2052
+ args: [{ selector: 'bs-modal', template: "<div class=\"modal-dialog\">\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <ng-container *ngTemplateOutlet=\"header\"></ng-container>\n </div>\n <div class=\"modal-body\">\n <ng-container *ngTemplateOutlet=\"body\"></ng-container>\n </div>\n <div class=\"modal-footer\">\n <ng-container *ngTemplateOutlet=\"footer\"></ng-container>\n </div>\n </div>\n</div>", styles: [""] }]
2053
+ }], ctorParameters: function () { return []; } });
2054
+
2055
+ const MODAL_CONTENT = new InjectionToken('ModalContent');
2056
+
2057
+ class BsModalContentComponent {
2058
+ constructor(content) {
2059
+ this.instance = null;
2060
+ //#region Monitor @slideUpDown hooks
2061
+ this.animationState = '';
2062
+ this.animationStateChanged = new EventEmitter();
2063
+ this.content = content;
2064
+ }
2065
+ onAnimationChanged(event) {
2066
+ this.animationStateChanged.emit(event);
2067
+ }
2068
+ }
2069
+ BsModalContentComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsModalContentComponent, deps: [{ token: MODAL_CONTENT }], target: i0.ɵɵFactoryTarget.Component });
2070
+ BsModalContentComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsModalContentComponent, selector: "bs-modal-content", ngImport: i0, template: "<div class=\"modal d-block\" tabindex=\"-1\"\n [@fadeInOut]=\"animationState\"\n (@fadeInOut.start)=\"onAnimationChanged($event)\"\n (@fadeInOut.done)=\"onAnimationChanged($event)\">\n\n <ng-container *ngTemplateOutlet=\"content; context: { $implicit: this }\" ></ng-container>\n\n</div>", styles: [""], directives: [{ type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], animations: [FadeInOutAnimation] });
2071
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsModalContentComponent, decorators: [{
2072
+ type: Component,
2073
+ args: [{ selector: 'bs-modal-content', animations: [FadeInOutAnimation], template: "<div class=\"modal d-block\" tabindex=\"-1\"\n [@fadeInOut]=\"animationState\"\n (@fadeInOut.start)=\"onAnimationChanged($event)\"\n (@fadeInOut.done)=\"onAnimationChanged($event)\">\n\n <ng-container *ngTemplateOutlet=\"content; context: { $implicit: this }\" ></ng-container>\n\n</div>", styles: [""] }]
2074
+ }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{
2075
+ type: Inject,
2076
+ args: [MODAL_CONTENT]
2077
+ }] }]; } });
2078
+
2079
+ class BsModalHeaderDirective {
2080
+ constructor(modal, template) {
2081
+ modal.header = template;
2082
+ }
2083
+ }
2084
+ BsModalHeaderDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsModalHeaderDirective, deps: [{ token: BsModalComponent }, { token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
2085
+ BsModalHeaderDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: BsModalHeaderDirective, selector: "[bsModalHeader]", ngImport: i0 });
2086
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsModalHeaderDirective, decorators: [{
2087
+ type: Directive,
2088
+ args: [{
2089
+ selector: '[bsModalHeader]'
2090
+ }]
2091
+ }], ctorParameters: function () { return [{ type: BsModalComponent }, { type: i0.TemplateRef }]; } });
2092
+
2093
+ class BsModalBodyDirective {
2094
+ constructor(modal, template) {
2095
+ modal.body = template;
2096
+ }
2097
+ }
2098
+ BsModalBodyDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsModalBodyDirective, deps: [{ token: BsModalComponent }, { token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
2099
+ BsModalBodyDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: BsModalBodyDirective, selector: "[bsModalBody]", ngImport: i0 });
2100
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsModalBodyDirective, decorators: [{
2101
+ type: Directive,
2102
+ args: [{
2103
+ selector: '[bsModalBody]'
2104
+ }]
2105
+ }], ctorParameters: function () { return [{ type: BsModalComponent }, { type: i0.TemplateRef }]; } });
2106
+
2107
+ class BsModalFooterDirective {
2108
+ constructor(modal, template) {
2109
+ modal.footer = template;
2110
+ }
2111
+ }
2112
+ BsModalFooterDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsModalFooterDirective, deps: [{ token: BsModalComponent }, { token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
2113
+ BsModalFooterDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: BsModalFooterDirective, selector: "[bsModalFooter]", ngImport: i0 });
2114
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsModalFooterDirective, decorators: [{
2115
+ type: Directive,
2116
+ args: [{
2117
+ selector: '[bsModalFooter]'
2118
+ }]
2119
+ }], ctorParameters: function () { return [{ type: BsModalComponent }, { type: i0.TemplateRef }]; } });
2120
+
2121
+ class BsModalModule {
2122
+ }
2123
+ BsModalModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsModalModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2124
+ BsModalModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsModalModule, declarations: [BsModalHeaderDirective,
2125
+ BsModalBodyDirective,
2126
+ BsModalFooterDirective,
2127
+ BsModalComponent,
2128
+ BsModalContentComponent], imports: [CommonModule,
2129
+ OverlayModule], exports: [BsModalHeaderDirective,
2130
+ BsModalBodyDirective,
2131
+ BsModalFooterDirective,
2132
+ BsModalComponent] });
2133
+ BsModalModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsModalModule, imports: [[
2134
+ CommonModule,
2135
+ OverlayModule
2136
+ ]] });
2137
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsModalModule, decorators: [{
2138
+ type: NgModule,
2139
+ args: [{
2140
+ declarations: [
2141
+ BsModalHeaderDirective,
2142
+ BsModalBodyDirective,
2143
+ BsModalFooterDirective,
2144
+ BsModalComponent,
2145
+ BsModalContentComponent
2146
+ ],
2147
+ imports: [
2148
+ CommonModule,
2149
+ OverlayModule
2150
+ ],
2151
+ exports: [
2152
+ BsModalHeaderDirective,
2153
+ BsModalBodyDirective,
2154
+ BsModalFooterDirective,
2155
+ BsModalComponent
2156
+ ]
2157
+ }]
2158
+ }] });
2159
+
2160
+ class BsModalService {
2161
+ constructor(overlay, parentInjector, componentFactoryResolver) {
2162
+ this.overlay = overlay;
2163
+ this.parentInjector = parentInjector;
2164
+ this.componentFactoryResolver = componentFactoryResolver;
2165
+ }
2166
+ show(template) {
2167
+ const injector = Injector.create({
2168
+ providers: [{ provide: MODAL_CONTENT, useValue: template }],
2169
+ parent: this.parentInjector
2170
+ });
2171
+ const portal = new ComponentPortal(BsModalContentComponent, null, injector, this.componentFactoryResolver);
2172
+ const overlayRef = this.overlay.create({
2173
+ scrollStrategy: this.overlay.scrollStrategies.reposition(),
2174
+ positionStrategy: this.overlay.position()
2175
+ .global().centerHorizontally().bottom('0').top('0').left('0').right('0'),
2176
+ width: '100%',
2177
+ hasBackdrop: true
2178
+ });
2179
+ const componentInstance = overlayRef.attach(portal);
2180
+ console.log('instance', componentInstance);
2181
+ componentInstance.instance['instance'] = {
2182
+ component: componentInstance,
2183
+ overlay: overlayRef
2184
+ };
2185
+ return componentInstance.instance;
2186
+ }
2187
+ hide(modal) {
2188
+ modal.animationStateChanged.pipe(filter(ev => ev.phaseName === 'done' && ev.toState === 'void'), take(1)).subscribe(() => {
2189
+ modal['instance']?.overlay.dispose();
2190
+ });
2191
+ modal.animationState = 'void';
2192
+ }
2193
+ }
2194
+ BsModalService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsModalService, deps: [{ token: i1$1.Overlay }, { token: i0.Injector }, { token: i0.ComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Injectable });
2195
+ BsModalService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsModalService, providedIn: BsModalModule });
2196
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsModalService, decorators: [{
2197
+ type: Injectable,
2198
+ args: [{
2199
+ providedIn: BsModalModule
2200
+ }]
2201
+ }], ctorParameters: function () { return [{ type: i1$1.Overlay }, { type: i0.Injector }, { type: i0.ComponentFactoryResolver }]; } });
2202
+
1362
2203
  class BsMultiselectComponent {
1363
2204
  constructor() {
1364
2205
  this.items = [];
1365
2206
  this.selectedItems = [];
1366
2207
  }
1367
2208
  itemChange(item, event) {
1368
- if (!!event.target.checked) {
2209
+ if (event.target.checked) {
1369
2210
  this.selectedItems.push(item);
1370
2211
  }
1371
2212
  else {
1372
2213
  this.selectedItems.splice(this.selectedItems.findIndex((i) => i === item), 1);
1373
2214
  }
1374
2215
  }
1375
- ngOnInit() {
1376
- }
1377
2216
  }
1378
2217
  BsMultiselectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsMultiselectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1379
- BsMultiselectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsMultiselectComponent, selector: "bs-multiselect", inputs: { items: "items", selectedItems: "selectedItems" }, queries: [{ propertyName: "template", first: true, predicate: TemplateRef, descendants: true }], ngImport: i0, template: "<div bsDropdown [hasBackdrop]=\"true\" [closeOnClickOutside]=\"true\">\n <button bsDropdownToggle class=\"btn btn-primary\">{{ selectedItems.length }} selected</button>\n <div *bsDropdownMenu class=\"bg-white mw-250px p-3 border rounded shadow\">\n <ng-container *ngTemplateOutlet=\"template\"></ng-container>\n <hr class=\"my-2\">\n <label *ngFor=\"let item of items\" class=\"form-check\">\n <input type=\"checkbox\" [checked]=\"selectedItems.indexOf(item) > -1\" (change)=\"itemChange(item, $event)\" class=\"form-check-input\">\n <span class=\"form-check-label\">{{ item }}</span>\n </label>\n </div>\n</div>", styles: [".mw-250px{min-width:250px}\n"], directives: [{ type: BsDropdownDirective, selector: "[bsDropdown]", inputs: ["hasBackdrop", "sameWidth", "closeOnClickOutside", "isOpen"], outputs: ["isOpenChange"] }, { type: BsDropdownToggleDirective, selector: "[bsDropdownToggle]" }, { type: BsDropdownMenuDirective, selector: "[bsDropdownMenu]" }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
2218
+ BsMultiselectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsMultiselectComponent, selector: "bs-multiselect", inputs: { items: "items", selectedItems: "selectedItems" }, viewQueries: [{ propertyName: "defaultButtonTemplate", first: true, predicate: ["defaultButtonTemplate"], descendants: true }], ngImport: i0, template: "<div bsDropdown [hasBackdrop]=\"true\" [closeOnClickOutside]=\"true\">\n <button bsDropdownToggle class=\"btn btn-primary\">\n <ng-container *ngTemplateOutlet=\"buttonTemplate ?? defaultButtonTemplate; context: { $implicit: selectedItems.length }\"></ng-container>\n </button>\n <div *bsDropdownMenu class=\"bg-white mw-250px p-3 border rounded shadow\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n <hr class=\"my-2\" *ngIf=\"headerTemplate\">\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 <hr class=\"my-2\" *ngIf=\"footerTemplate\">\n <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n </div>\n</div>\n<ng-template #defaultButtonTemplate let-count>\n {{ count }} selected\n</ng-template>", styles: [".mw-250px{min-width:250px}\n"], directives: [{ type: BsDropdownDirective, selector: "[bsDropdown]", inputs: ["hasBackdrop", "sameWidth", "closeOnClickOutside", "isOpen"], outputs: ["isOpenChange"] }, { type: BsDropdownToggleDirective, selector: "[bsDropdownToggle]" }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: BsDropdownMenuDirective, selector: "[bsDropdownMenu]" }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
1380
2219
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsMultiselectComponent, decorators: [{
1381
2220
  type: Component,
1382
- args: [{ selector: 'bs-multiselect', template: "<div bsDropdown [hasBackdrop]=\"true\" [closeOnClickOutside]=\"true\">\n <button bsDropdownToggle class=\"btn btn-primary\">{{ selectedItems.length }} selected</button>\n <div *bsDropdownMenu class=\"bg-white mw-250px p-3 border rounded shadow\">\n <ng-container *ngTemplateOutlet=\"template\"></ng-container>\n <hr class=\"my-2\">\n <label *ngFor=\"let item of items\" class=\"form-check\">\n <input type=\"checkbox\" [checked]=\"selectedItems.indexOf(item) > -1\" (change)=\"itemChange(item, $event)\" class=\"form-check-input\">\n <span class=\"form-check-label\">{{ item }}</span>\n </label>\n </div>\n</div>", styles: [".mw-250px{min-width:250px}\n"] }]
1383
- }], ctorParameters: function () { return []; }, propDecorators: { template: [{
1384
- type: ContentChild,
1385
- args: [TemplateRef]
1386
- }], items: [{
2221
+ args: [{ selector: 'bs-multiselect', template: "<div bsDropdown [hasBackdrop]=\"true\" [closeOnClickOutside]=\"true\">\n <button bsDropdownToggle class=\"btn btn-primary\">\n <ng-container *ngTemplateOutlet=\"buttonTemplate ?? defaultButtonTemplate; context: { $implicit: selectedItems.length }\"></ng-container>\n </button>\n <div *bsDropdownMenu class=\"bg-white mw-250px p-3 border rounded shadow\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n <hr class=\"my-2\" *ngIf=\"headerTemplate\">\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 <hr class=\"my-2\" *ngIf=\"footerTemplate\">\n <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n </div>\n</div>\n<ng-template #defaultButtonTemplate let-count>\n {{ count }} selected\n</ng-template>", styles: [".mw-250px{min-width:250px}\n"] }]
2222
+ }], propDecorators: { items: [{
1387
2223
  type: Input
1388
2224
  }], selectedItems: [{
1389
2225
  type: Input
2226
+ }], defaultButtonTemplate: [{
2227
+ type: ViewChild,
2228
+ args: ['defaultButtonTemplate']
1390
2229
  }] } });
1391
2230
 
2231
+ class BsHeaderTemplateDirective {
2232
+ constructor(template, multiselect) {
2233
+ multiselect.headerTemplate = template;
2234
+ }
2235
+ }
2236
+ BsHeaderTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsHeaderTemplateDirective, deps: [{ token: i0.TemplateRef }, { token: BsMultiselectComponent }], target: i0.ɵɵFactoryTarget.Directive });
2237
+ BsHeaderTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: BsHeaderTemplateDirective, selector: "[bsHeaderTemplate]", ngImport: i0 });
2238
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsHeaderTemplateDirective, decorators: [{
2239
+ type: Directive,
2240
+ args: [{
2241
+ selector: '[bsHeaderTemplate]'
2242
+ }]
2243
+ }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: BsMultiselectComponent }]; } });
2244
+
2245
+ class BsFooterTemplateDirective {
2246
+ constructor(template, multiselect) {
2247
+ multiselect.footerTemplate = template;
2248
+ }
2249
+ }
2250
+ BsFooterTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsFooterTemplateDirective, deps: [{ token: i0.TemplateRef }, { token: BsMultiselectComponent }], target: i0.ɵɵFactoryTarget.Directive });
2251
+ BsFooterTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: BsFooterTemplateDirective, selector: "[bsFooterTemplate]", ngImport: i0 });
2252
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsFooterTemplateDirective, decorators: [{
2253
+ type: Directive,
2254
+ args: [{
2255
+ selector: '[bsFooterTemplate]'
2256
+ }]
2257
+ }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: BsMultiselectComponent }]; } });
2258
+
2259
+ class BsButtonTemplateDirective {
2260
+ constructor(template, multiselect) {
2261
+ multiselect.buttonTemplate = template;
2262
+ }
2263
+ }
2264
+ BsButtonTemplateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsButtonTemplateDirective, deps: [{ token: i0.TemplateRef }, { token: BsMultiselectComponent }], target: i0.ɵɵFactoryTarget.Directive });
2265
+ BsButtonTemplateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: BsButtonTemplateDirective, selector: "[bsButtonTemplate]", ngImport: i0 });
2266
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsButtonTemplateDirective, decorators: [{
2267
+ type: Directive,
2268
+ args: [{
2269
+ selector: '[bsButtonTemplate]'
2270
+ }]
2271
+ }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: BsMultiselectComponent }]; } });
2272
+
1392
2273
  class BsMultiselectModule {
1393
2274
  }
1394
2275
  BsMultiselectModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsMultiselectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1395
- BsMultiselectModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsMultiselectModule, declarations: [BsMultiselectComponent], imports: [CommonModule,
2276
+ BsMultiselectModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsMultiselectModule, declarations: [BsMultiselectComponent,
2277
+ BsHeaderTemplateDirective,
2278
+ BsFooterTemplateDirective,
2279
+ BsButtonTemplateDirective], imports: [CommonModule,
1396
2280
  BsDropdownModule,
1397
- FocusOnLoadModule], exports: [BsMultiselectComponent] });
2281
+ FocusOnLoadModule], exports: [BsMultiselectComponent,
2282
+ BsHeaderTemplateDirective,
2283
+ BsFooterTemplateDirective,
2284
+ BsButtonTemplateDirective] });
1398
2285
  BsMultiselectModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsMultiselectModule, imports: [[
1399
2286
  CommonModule,
1400
2287
  BsDropdownModule,
@@ -1404,7 +2291,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
1404
2291
  type: NgModule,
1405
2292
  args: [{
1406
2293
  declarations: [
1407
- BsMultiselectComponent
2294
+ BsMultiselectComponent,
2295
+ BsHeaderTemplateDirective,
2296
+ BsFooterTemplateDirective,
2297
+ BsButtonTemplateDirective
1408
2298
  ],
1409
2299
  imports: [
1410
2300
  CommonModule,
@@ -1412,7 +2302,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
1412
2302
  FocusOnLoadModule,
1413
2303
  ],
1414
2304
  exports: [
1415
- BsMultiselectComponent
2305
+ BsMultiselectComponent,
2306
+ BsHeaderTemplateDirective,
2307
+ BsFooterTemplateDirective,
2308
+ BsButtonTemplateDirective
1416
2309
  ]
1417
2310
  }]
1418
2311
  }] });
@@ -1428,10 +2321,10 @@ class BsNavbarComponent {
1428
2321
  }
1429
2322
  }
1430
2323
  BsNavbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsNavbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1431
- BsNavbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsNavbarComponent, selector: "bs-navbar", viewQueries: [{ propertyName: "nav", first: true, predicate: ["nav"], descendants: true }], ngImport: i0, template: "<nav #nav class=\"navbar navbar-expand-md position-fixed navbar-dark bg-dark\">\n <div class=\"container-fluid\">\n <div class=\"d-flex w-100 w-md-auto\">\n <a class=\"navbar-brand mx-auto mx-md-unset\" href=\"#\">Navbar 2</a>\n <button (click)=\"toggleExpanded()\" class=\"navbar-toggler align-self-end\" type=\"button\">\n <span class=\"navbar-toggler-icon\"></span>\n </button>\n </div>\n <ng-content></ng-content>\n </div>\n</nav>", styles: [":host ::ng-deep+*{padding-top:56px}nav{left:0;top:0;right:0;z-index:10}@media (min-width: 768px){.mx-md-unset{margin-left:0!important;margin-right:0!important}.w-md-auto{width:auto!important}}\n"] });
2324
+ 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 <ng-content select=\"bs-navbar-brand\"></ng-content>\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"] });
1432
2325
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsNavbarComponent, decorators: [{
1433
2326
  type: Component,
1434
- args: [{ selector: 'bs-navbar', template: "<nav #nav class=\"navbar navbar-expand-md position-fixed navbar-dark bg-dark\">\n <div class=\"container-fluid\">\n <div class=\"d-flex w-100 w-md-auto\">\n <a class=\"navbar-brand mx-auto mx-md-unset\" href=\"#\">Navbar 2</a>\n <button (click)=\"toggleExpanded()\" class=\"navbar-toggler align-self-end\" type=\"button\">\n <span class=\"navbar-toggler-icon\"></span>\n </button>\n </div>\n <ng-content></ng-content>\n </div>\n</nav>", styles: [":host ::ng-deep+*{padding-top:56px}nav{left:0;top:0;right:0;z-index:10}@media (min-width: 768px){.mx-md-unset{margin-left:0!important;margin-right:0!important}.w-md-auto{width:auto!important}}\n"] }]
2327
+ 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 <ng-content select=\"bs-navbar-brand\"></ng-content>\n <button (click)=\"toggleExpanded()\" class=\"navbar-toggler align-self-end\" type=\"button\">\n <span class=\"navbar-toggler-icon\"></span>\n </button>\n </div>\n <ng-content></ng-content>\n </div>\n</nav>", styles: [":host ::ng-deep+*{padding-top:56px}nav{left:0;top:0;right:0;z-index:10}@media (min-width: 768px){.mx-md-unset{margin-left:0!important;margin-right:0!important}.w-md-auto{width:auto!important}}\n"] }]
1435
2328
  }], propDecorators: { nav: [{
1436
2329
  type: ViewChild,
1437
2330
  args: ['nav']
@@ -1504,12 +2397,9 @@ class BsNavbarItemComponent {
1504
2397
  this.anchorTag = null;
1505
2398
  this.parentDropdown = parentDropdown;
1506
2399
  }
1507
- ngOnInit() {
1508
- }
1509
2400
  ngAfterContentChecked() {
2401
+ this.anchorTag = this.element.nativeElement.querySelector('li a');
1510
2402
  if (this.hasDropdown) {
1511
- window.element = this.element.nativeElement;
1512
- this.anchorTag = this.element.nativeElement.querySelector('li a');
1513
2403
  (this.anchorTag) && this.anchorTag.classList.add('dropdown-toggle');
1514
2404
  if (this.anchorTag && !this.anchorTag.onclick) {
1515
2405
  this.anchorTag.onclick = (ev) => {
@@ -1526,6 +2416,20 @@ class BsNavbarItemComponent {
1526
2416
  };
1527
2417
  }
1528
2418
  }
2419
+ else {
2420
+ // Close if this is a link
2421
+ if (this.parentDropdown && this.dropdowns.length === 0) {
2422
+ if (this.anchorTag && !this.anchorTag.onclick) {
2423
+ this.anchorTag.onclick = (ev) => {
2424
+ let d = this.parentDropdown;
2425
+ while (d && d.autoclose) {
2426
+ d.isVisible = false;
2427
+ d = d.parentDropdown;
2428
+ }
2429
+ };
2430
+ }
2431
+ }
2432
+ }
1529
2433
  }
1530
2434
  }
1531
2435
  BsNavbarItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsNavbarItemComponent, deps: [{ token: BsNavbarDropdownComponent, optional: true }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
@@ -1542,6 +2446,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
1542
2446
 
1543
2447
  class BsNavbarDropdownComponent {
1544
2448
  constructor(parentDropdown, navbarItem) {
2449
+ this.autoclose = true;
1545
2450
  this.isVisible = false;
1546
2451
  this.parentDropdown = parentDropdown;
1547
2452
  this.navbarItem = navbarItem;
@@ -1549,11 +2454,9 @@ class BsNavbarDropdownComponent {
1549
2454
  get elementsToExclude() {
1550
2455
  return [this.navbarItem.anchorTag].filter((a) => a).map((a) => a);
1551
2456
  }
1552
- ngOnInit() {
1553
- }
1554
2457
  }
1555
2458
  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 });
1556
- BsNavbarDropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsNavbarDropdownComponent, selector: "bs-navbar-dropdown", queries: [{ propertyName: "childDropdowns", predicate: i0.forwardRef(function () { return BsNavbarDropdownComponent; }), descendants: true }], ngImport: i0, template: "<ul class=\"dropdown-menu\" [class.show]=\"isVisible\" [class.submenu]=\"!!parentDropdown\" (clickOutside)=\"isVisible = false\" [exclude]=\"elementsToExclude\" aria-labelledby=\"navbarDropdown\">\n <ng-content></ng-content>\n</ul>", styles: ["@media (max-width: 767px){.submenu{margin-left:.5rem;margin-right:.5rem}}@media (min-width: 768px){.submenu{position:absolute;left:100%;top:-1px}}\n"], directives: [{ type: i1$2.ClickOutsideDirective, selector: "[clickOutside]", inputs: ["clickOutsideEnabled", "attachOutsideOnClick", "delayClickOutsideInit", "emitOnBlur", "exclude", "excludeBeforeClick", "clickOutsideEvents"], outputs: ["clickOutside"] }] });
2459
+ BsNavbarDropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsNavbarDropdownComponent, selector: "bs-navbar-dropdown", inputs: { autoclose: "autoclose" }, 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"] }] });
1557
2460
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsNavbarDropdownComponent, decorators: [{
1558
2461
  type: Component,
1559
2462
  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"] }]
@@ -1568,7 +2471,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
1568
2471
  }, {
1569
2472
  type: Inject,
1570
2473
  args: [forwardRef(() => BsNavbarItemComponent)]
1571
- }] }]; }, propDecorators: { childDropdowns: [{
2474
+ }] }]; }, propDecorators: { autoclose: [{
2475
+ type: Input
2476
+ }], childDropdowns: [{
1572
2477
  type: ContentChildren,
1573
2478
  args: [forwardRef(() => BsNavbarDropdownComponent), { descendants: true }]
1574
2479
  }] } });
@@ -1660,6 +2565,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
1660
2565
  args: ['navbarContent']
1661
2566
  }] } });
1662
2567
 
2568
+ class BsNavbarBrandComponent {
2569
+ constructor() {
2570
+ this.routerLink = [];
2571
+ this.mxAuto = true;
2572
+ }
2573
+ }
2574
+ BsNavbarBrandComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsNavbarBrandComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2575
+ BsNavbarBrandComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsNavbarBrandComponent, selector: "bs-navbar-brand", inputs: { routerLink: "routerLink" }, host: { properties: { "class.mx-auto": "this.mxAuto" } }, ngImport: i0, template: "<a class=\"navbar-brand mx-auto mx-md-unset\" [routerLink]=\"routerLink\">\n <ng-content></ng-content>\n</a>", styles: [""], directives: [{ type: i1$3.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: NavLinkDirective, selector: "bs-navbar-item > a[routerLink]" }] });
2576
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsNavbarBrandComponent, decorators: [{
2577
+ type: Component,
2578
+ args: [{ selector: 'bs-navbar-brand', template: "<a class=\"navbar-brand mx-auto mx-md-unset\" [routerLink]=\"routerLink\">\n <ng-content></ng-content>\n</a>", styles: [""] }]
2579
+ }], propDecorators: { routerLink: [{
2580
+ type: Input
2581
+ }], mxAuto: [{
2582
+ type: HostBinding,
2583
+ args: ['class.mx-auto']
2584
+ }] } });
2585
+
1663
2586
  class BsNavbarModule {
1664
2587
  }
1665
2588
  BsNavbarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsNavbarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
@@ -1669,7 +2592,8 @@ BsNavbarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version:
1669
2592
  BsNavbarItemComponent,
1670
2593
  DropdownToggleDirective,
1671
2594
  NavLinkDirective,
1672
- NavbarContentDirective], imports: [CommonModule,
2595
+ NavbarContentDirective,
2596
+ BsNavbarBrandComponent], imports: [CommonModule,
1673
2597
  RouterModule,
1674
2598
  ClickOutsideModule], exports: [BsNavbarComponent,
1675
2599
  BsNavbarNavComponent,
@@ -1677,7 +2601,8 @@ BsNavbarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version:
1677
2601
  BsNavbarItemComponent,
1678
2602
  DropdownToggleDirective,
1679
2603
  NavLinkDirective,
1680
- NavbarContentDirective] });
2604
+ NavbarContentDirective,
2605
+ BsNavbarBrandComponent] });
1681
2606
  BsNavbarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsNavbarModule, imports: [[
1682
2607
  CommonModule,
1683
2608
  RouterModule,
@@ -1693,7 +2618,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
1693
2618
  BsNavbarItemComponent,
1694
2619
  DropdownToggleDirective,
1695
2620
  NavLinkDirective,
1696
- NavbarContentDirective
2621
+ NavbarContentDirective,
2622
+ BsNavbarBrandComponent
1697
2623
  ],
1698
2624
  imports: [
1699
2625
  CommonModule,
@@ -1706,175 +2632,99 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
1706
2632
  BsNavbarDropdownComponent,
1707
2633
  BsNavbarItemComponent,
1708
2634
  DropdownToggleDirective,
1709
- NavLinkDirective,
1710
- NavbarContentDirective
1711
- ]
1712
- }]
1713
- }] });
1714
-
1715
- class BsProgressComponent {
1716
- constructor() {
1717
- this.progressClass = true;
1718
- this.height = null;
1719
- this.isIndeterminate = false;
1720
- }
1721
- }
1722
- BsProgressComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsProgressComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1723
- BsProgressComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsProgressComponent, selector: "bs-progress", inputs: { height: "height", isIndeterminate: "isIndeterminate" }, host: { properties: { "class.progress": "this.progressClass", "style.height.px": "this.height" } }, ngImport: i0, template: "<ng-content *ngIf=\"!isIndeterminate\"></ng-content>\n<div *ngIf=\"isIndeterminate\" class=\"progress-bar progress-bar-infinite\" role=\"progressbar\" aria-valuenow=\"infinite\"></div>", styles: ["@keyframes progress-infinite{0%{width:10%;margin-left:0%}25%{width:70%;margin-left:15%}50%{width:10%;margin-left:90%}75%{width:70%;margin-left:15%}to{width:10%;margin-left:0%}}.progress-bar-infinite{animation:progress-infinite 1.5s infinite}\n"], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
1724
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsProgressComponent, decorators: [{
1725
- type: Component,
1726
- args: [{ selector: 'bs-progress', template: "<ng-content *ngIf=\"!isIndeterminate\"></ng-content>\n<div *ngIf=\"isIndeterminate\" class=\"progress-bar progress-bar-infinite\" role=\"progressbar\" aria-valuenow=\"infinite\"></div>", styles: ["@keyframes progress-infinite{0%{width:10%;margin-left:0%}25%{width:70%;margin-left:15%}50%{width:10%;margin-left:90%}75%{width:70%;margin-left:15%}to{width:10%;margin-left:0%}}.progress-bar-infinite{animation:progress-infinite 1.5s infinite}\n"] }]
1727
- }], propDecorators: { progressClass: [{
1728
- type: HostBinding,
1729
- args: ['class.progress']
1730
- }], height: [{
1731
- type: Input
1732
- }, {
1733
- type: HostBinding,
1734
- args: ['style.height.px']
1735
- }], isIndeterminate: [{
1736
- type: Input
1737
- }] } });
1738
-
1739
- class BsProgressBarComponent {
1740
- constructor() {
1741
- this.destroyed$ = new Subject();
1742
- this.minimum$ = new BehaviorSubject(0);
1743
- this.maximum$ = new BehaviorSubject(100);
1744
- this.value$ = new BehaviorSubject(50);
1745
- this.color$ = new BehaviorSubject(Color.primary);
1746
- this.striped = false;
1747
- this.animated = false;
1748
- this.progressBar = true;
1749
- this.colorClass = 'bg-primary';
1750
- this.widthStyle = '0';
1751
- this.role = 'progressbar';
1752
- this.valueNow = 50;
1753
- this.valueMin = 0;
1754
- this.valueMax = 100;
1755
- this.percentage$ = combineLatest([this.minimum$, this.maximum$, this.value$])
1756
- .pipe(map(([minimum, maximum, value]) => {
1757
- return (value - minimum) / (maximum - minimum) * 100;
1758
- }));
1759
- this.width$ = this.percentage$
1760
- .pipe(map((width) => {
1761
- return String(width) + '%';
1762
- }));
1763
- this.colorClass$ = this.color$
1764
- .pipe(map((color) => {
1765
- const name = Color[color];
1766
- return `bg-${name}`;
2635
+ NavLinkDirective,
2636
+ NavbarContentDirective,
2637
+ BsNavbarBrandComponent
2638
+ ]
2639
+ }]
2640
+ }] });
2641
+
2642
+ class BsRatingComponent {
2643
+ constructor() {
2644
+ this.destroyed$ = new Subject();
2645
+ this.maximum$ = new BehaviorSubject(5);
2646
+ this.value$ = new BehaviorSubject(3);
2647
+ this.previewValue$ = new BehaviorSubject(null);
2648
+ //#endregion
2649
+ //#region Value
2650
+ this.valueChange = new EventEmitter();
2651
+ this.starsChange = new EventEmitter();
2652
+ this.stars$ = combineLatest([this.maximum$, this.previewValue$, this.value$])
2653
+ .pipe(map(([maximum, previewValue, value]) => {
2654
+ const v = previewValue ?? value;
2655
+ return [
2656
+ ...[...Array(v).keys()].map(i => true),
2657
+ ...[...Array(maximum - v).keys()].map(i => false)
2658
+ ];
1767
2659
  }));
1768
- this.colorClass$
1769
- .pipe(takeUntil(this.destroyed$))
1770
- .subscribe((color) => {
1771
- this.colorClass = color;
1772
- });
1773
- this.width$
1774
- .pipe(takeUntil(this.destroyed$))
1775
- .subscribe((width) => {
1776
- this.widthStyle = width;
1777
- });
1778
- this.value$
1779
- .pipe(takeUntil(this.destroyed$))
1780
- .subscribe((value) => {
1781
- this.valueNow = value;
1782
- });
1783
- this.minimum$
2660
+ combineLatest([this.previewValue$, this.value$])
1784
2661
  .pipe(takeUntil(this.destroyed$))
1785
- .subscribe((value) => {
1786
- this.valueMin = value;
1787
- });
1788
- this.maximum$
1789
- .pipe(takeUntil(this.destroyed$))
1790
- .subscribe((value) => {
1791
- this.valueMax = value;
2662
+ .subscribe(([previewValue, value]) => {
2663
+ const v = previewValue ?? value;
2664
+ this.starsChange.emit(v);
1792
2665
  });
1793
2666
  }
1794
- set minimum(value) {
1795
- this.minimum$.next(value);
1796
- }
2667
+ //#region Maximum
1797
2668
  set maximum(value) {
1798
2669
  this.maximum$.next(value);
1799
2670
  }
2671
+ get value() {
2672
+ return this.value$.value;
2673
+ }
1800
2674
  set value(value) {
1801
2675
  this.value$.next(value);
2676
+ this.valueChange.emit(value);
1802
2677
  }
1803
- set color(value) {
1804
- this.color$.next(value);
1805
- }
2678
+ //#endregion
1806
2679
  ngOnDestroy() {
1807
2680
  this.destroyed$.next(true);
1808
2681
  }
2682
+ hoverValue(index) {
2683
+ this.previewValue$.next(index + 1);
2684
+ }
2685
+ selectValue(index) {
2686
+ this.value = index + 1;
2687
+ }
2688
+ onMouseLeave() {
2689
+ this.previewValue$.next(null);
2690
+ }
1809
2691
  }
1810
- BsProgressBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsProgressBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1811
- BsProgressBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsProgressBarComponent, selector: "bs-progress-bar", inputs: { minimum: "minimum", maximum: "maximum", value: "value", color: "color", striped: "striped", animated: "animated" }, host: { properties: { "class.progress-bar-striped": "this.striped", "class.progress-bar-animated": "this.animated", "class.progress-bar": "this.progressBar", "class": "this.colorClass", "style.width": "this.widthStyle", "attr.role": "this.role", "attr.aria-valuenow": "this.valueNow", "attr.aria-valuemin": "this.valueMin", "attr.aria-valuemax": "this.valueMax" } }, ngImport: i0, template: "", styles: [""] });
1812
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsProgressBarComponent, decorators: [{
2692
+ BsRatingComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsRatingComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2693
+ BsRatingComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsRatingComponent, selector: "bs-rating", inputs: { maximum: "maximum", value: "value" }, outputs: { valueChange: "valueChange", starsChange: "starsChange" }, host: { listeners: { "mouseleave": "onMouseLeave()" } }, ngImport: i0, template: "<span class=\"cursor-pointer\" *ngFor=\"let star of (stars$ | async), let i = index\" (mouseenter)=\"hoverValue(i)\" (click)=\"selectValue(i)\">\n {{ star ? '&#9733;' : '&#9734;' }}\n</span>", styles: [""], directives: [{ type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "async": i1.AsyncPipe } });
2694
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsRatingComponent, decorators: [{
1813
2695
  type: Component,
1814
- args: [{ selector: 'bs-progress-bar', template: "", styles: [""] }]
1815
- }], ctorParameters: function () { return []; }, propDecorators: { minimum: [{
1816
- type: Input
1817
- }], maximum: [{
2696
+ args: [{ selector: 'bs-rating', template: "<span class=\"cursor-pointer\" *ngFor=\"let star of (stars$ | async), let i = index\" (mouseenter)=\"hoverValue(i)\" (click)=\"selectValue(i)\">\n {{ star ? '&#9733;' : '&#9734;' }}\n</span>", styles: [""] }]
2697
+ }], ctorParameters: function () { return []; }, propDecorators: { maximum: [{
1818
2698
  type: Input
2699
+ }], valueChange: [{
2700
+ type: Output
2701
+ }], starsChange: [{
2702
+ type: Output
1819
2703
  }], value: [{
1820
2704
  type: Input
1821
- }], color: [{
1822
- type: Input
1823
- }], striped: [{
1824
- type: Input
1825
- }, {
1826
- type: HostBinding,
1827
- args: ['class.progress-bar-striped']
1828
- }], animated: [{
1829
- type: Input
1830
- }, {
1831
- type: HostBinding,
1832
- args: ['class.progress-bar-animated']
1833
- }], progressBar: [{
1834
- type: HostBinding,
1835
- args: ['class.progress-bar']
1836
- }], colorClass: [{
1837
- type: HostBinding,
1838
- args: ['class']
1839
- }], widthStyle: [{
1840
- type: HostBinding,
1841
- args: ['style.width']
1842
- }], role: [{
1843
- type: HostBinding,
1844
- args: ['attr.role']
1845
- }], valueNow: [{
1846
- type: HostBinding,
1847
- args: ['attr.aria-valuenow']
1848
- }], valueMin: [{
1849
- type: HostBinding,
1850
- args: ['attr.aria-valuemin']
1851
- }], valueMax: [{
1852
- type: HostBinding,
1853
- args: ['attr.aria-valuemax']
2705
+ }], onMouseLeave: [{
2706
+ type: HostListener,
2707
+ args: ['mouseleave']
1854
2708
  }] } });
1855
2709
 
1856
- class BsProgressBarModule {
2710
+ class BsRatingModule {
1857
2711
  }
1858
- BsProgressBarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsProgressBarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1859
- BsProgressBarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsProgressBarModule, declarations: [BsProgressBarComponent,
1860
- BsProgressComponent], imports: [CommonModule], exports: [BsProgressBarComponent,
1861
- BsProgressComponent] });
1862
- BsProgressBarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsProgressBarModule, imports: [[
2712
+ BsRatingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsRatingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2713
+ BsRatingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsRatingModule, declarations: [BsRatingComponent], imports: [CommonModule], exports: [BsRatingComponent] });
2714
+ BsRatingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsRatingModule, imports: [[
1863
2715
  CommonModule
1864
2716
  ]] });
1865
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsProgressBarModule, decorators: [{
2717
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsRatingModule, decorators: [{
1866
2718
  type: NgModule,
1867
2719
  args: [{
1868
2720
  declarations: [
1869
- BsProgressBarComponent,
1870
- BsProgressComponent
2721
+ BsRatingComponent
1871
2722
  ],
1872
2723
  imports: [
1873
2724
  CommonModule
1874
2725
  ],
1875
2726
  exports: [
1876
- BsProgressBarComponent,
1877
- BsProgressComponent
2727
+ BsRatingComponent
1878
2728
  ]
1879
2729
  }]
1880
2730
  }] });
@@ -2087,8 +2937,6 @@ class BsSelect2Component {
2087
2937
  this.selectedItems.splice(this.selectedItems.indexOf(item), 1);
2088
2938
  this.focus();
2089
2939
  }
2090
- ngOnInit() {
2091
- }
2092
2940
  onResize() {
2093
2941
  this.hostWidth$.next(this.itemsBox.nativeElement.offsetWidth);
2094
2942
  }
@@ -2097,11 +2945,14 @@ class BsSelect2Component {
2097
2945
  }
2098
2946
  }
2099
2947
  BsSelect2Component.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsSelect2Component, deps: [], target: i0.ɵɵFactoryTarget.Component });
2100
- BsSelect2Component.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsSelect2Component, selector: "bs-select2", inputs: { searchterm: "searchterm", suggestions: "suggestions", selectedItems: "selectedItems" }, outputs: { provideSuggestions: "provideSuggestions" }, host: { listeners: { "window:resize": "onResize()", "click": "focus()" }, properties: { "class.focus": "this.isFocused" } }, viewQueries: [{ propertyName: "searchBox", first: true, predicate: ["searchBox"], descendants: true }, { propertyName: "itemsBox", first: true, predicate: ["itemsBox"], descendants: true }, { propertyName: "defaultItemTemplate", first: true, predicate: ["defaultItemTemplate"], descendants: true, static: true }], ngImport: i0, template: "<div bsDropdown [(isOpen)]=\"isOpen\" [hasBackdrop]=\"false\" [closeOnClickOutside]=\"true\" #itemsBox class=\"items-box\">\n <ng-container *ngFor=\"let item of selectedItems\">\n <ng-container *ngTemplateOutlet=\"itemTemplate ?? defaultItemTemplate; context: { item: item, select2: this }\"></ng-container>\n </ng-container>\n\n <input type=\"text\" autocomplete=\"off\"\n [(ngModel)]=\"searchterm\"\n (ngModelChange)=\"onProvideSuggestions($event)\"\n (focus)=\"isFocused=true\"\n (blur)=\"isFocused=false\"\n [style.width.px]=\"searchWidth\"\n #searchBox />\n <div *bsDropdownMenu>\n <ul class=\"dropdown-menu d-block position-static p-0\" [style.width.px]=\"hostWidth$ | async\">\n <li *ngFor=\"let suggestion of suggestions\" (click)=\"onSuggestionClicked(suggestion)\" [class.selected]=\"selectedItems | inList:suggestion.id\">{{ suggestion.text }}</li>\n </ul>\n </div>\n</div>\n\n<ng-template #defaultItemTemplate let-item=\"item\" let-select2=\"select2\">\n <span class=\"select2-item\">\n <span (click)=\"select2.onRemoveItem(item,$event)\">\u00D7</span>\n {{ item.text }}\n </span>\n</ng-template>\n", styles: [".items-box{display:block;position:relative;width:100%;min-height:38px;padding:0 5px 3px;cursor:text;border:1px solid #ccc}.items-box .select2-item{display:inline-block;background-color:#e4e4e4;color:#1a1a1a;border:1px solid #aaa;border-radius:4px;margin-top:5px;margin-right:5px;padding:0 5px;cursor:default;user-select:none;-webkit-user-select:none}.items-box .select2-item>span{cursor:pointer;color:#999}.items-box .select2-item>span:hover{color:#333}.items-box input{border:none;outline:0;margin:5px 0 2px;background:none}:host{display:block;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}:host.focus{color:#495057;background-color:#fff;border-color:#80bdff!important;outline:0;box-shadow:0 0 0 .2rem #007bff40}ul{max-height:200px;overflow-y:auto}ul>li{padding:10px;cursor:pointer}ul>li.selected{background:#ddd}ul>li:hover{color:#fff;background-color:#5897fb}\n"], directives: [{ type: BsDropdownDirective, selector: "[bsDropdown]", inputs: ["hasBackdrop", "sameWidth", "closeOnClickOutside", "isOpen"], outputs: ["isOpenChange"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: BsDropdownMenuDirective, selector: "[bsDropdownMenu]" }], pipes: { "async": i1.AsyncPipe, "inList": BsInListPipe } });
2948
+ 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: "defaultItemTemplate", first: true, predicate: ["defaultItemTemplate"], descendants: true, static: true }, { propertyName: "searchBox", first: true, predicate: ["searchBox"], descendants: true }, { propertyName: "itemsBox", first: true, predicate: ["itemsBox"], descendants: true }], ngImport: i0, template: "<div bsDropdown [(isOpen)]=\"isOpen\" [hasBackdrop]=\"false\" [closeOnClickOutside]=\"true\" #itemsBox class=\"items-box text-wrap\">\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$1.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$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: BsDropdownMenuDirective, selector: "[bsDropdownMenu]" }], pipes: { "async": i1.AsyncPipe, "inList": BsInListPipe } });
2101
2949
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsSelect2Component, decorators: [{
2102
2950
  type: Component,
2103
- args: [{ selector: 'bs-select2', template: "<div bsDropdown [(isOpen)]=\"isOpen\" [hasBackdrop]=\"false\" [closeOnClickOutside]=\"true\" #itemsBox class=\"items-box\">\n <ng-container *ngFor=\"let item of selectedItems\">\n <ng-container *ngTemplateOutlet=\"itemTemplate ?? defaultItemTemplate; context: { item: item, select2: this }\"></ng-container>\n </ng-container>\n\n <input type=\"text\" autocomplete=\"off\"\n [(ngModel)]=\"searchterm\"\n (ngModelChange)=\"onProvideSuggestions($event)\"\n (focus)=\"isFocused=true\"\n (blur)=\"isFocused=false\"\n [style.width.px]=\"searchWidth\"\n #searchBox />\n <div *bsDropdownMenu>\n <ul class=\"dropdown-menu d-block position-static p-0\" [style.width.px]=\"hostWidth$ | async\">\n <li *ngFor=\"let suggestion of suggestions\" (click)=\"onSuggestionClicked(suggestion)\" [class.selected]=\"selectedItems | inList:suggestion.id\">{{ suggestion.text }}</li>\n </ul>\n </div>\n</div>\n\n<ng-template #defaultItemTemplate let-item=\"item\" let-select2=\"select2\">\n <span class=\"select2-item\">\n <span (click)=\"select2.onRemoveItem(item,$event)\">\u00D7</span>\n {{ item.text }}\n </span>\n</ng-template>\n", styles: [".items-box{display:block;position:relative;width:100%;min-height:38px;padding:0 5px 3px;cursor:text;border:1px solid #ccc}.items-box .select2-item{display:inline-block;background-color:#e4e4e4;color:#1a1a1a;border:1px solid #aaa;border-radius:4px;margin-top:5px;margin-right:5px;padding:0 5px;cursor:default;user-select:none;-webkit-user-select:none}.items-box .select2-item>span{cursor:pointer;color:#999}.items-box .select2-item>span:hover{color:#333}.items-box input{border:none;outline:0;margin:5px 0 2px;background:none}:host{display:block;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}:host.focus{color:#495057;background-color:#fff;border-color:#80bdff!important;outline:0;box-shadow:0 0 0 .2rem #007bff40}ul{max-height:200px;overflow-y:auto}ul>li{padding:10px;cursor:pointer}ul>li.selected{background:#ddd}ul>li:hover{color:#fff;background-color:#5897fb}\n"] }]
2104
- }], ctorParameters: function () { return []; }, propDecorators: { searchBox: [{
2951
+ args: [{ selector: 'bs-select2', template: "<div bsDropdown [(isOpen)]=\"isOpen\" [hasBackdrop]=\"false\" [closeOnClickOutside]=\"true\" #itemsBox class=\"items-box text-wrap\">\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"] }]
2952
+ }], propDecorators: { defaultItemTemplate: [{
2953
+ type: ViewChild,
2954
+ args: ['defaultItemTemplate', { static: true }]
2955
+ }], searchBox: [{
2105
2956
  type: ViewChild,
2106
2957
  args: ['searchBox']
2107
2958
  }], itemsBox: [{
@@ -2124,9 +2975,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
2124
2975
  }], focus: [{
2125
2976
  type: HostListener,
2126
2977
  args: ['click']
2127
- }], defaultItemTemplate: [{
2128
- type: ViewChild,
2129
- args: ['defaultItemTemplate', { static: true }]
2130
2978
  }] } });
2131
2979
 
2132
2980
  class BsItemTemplateDirective {
@@ -2201,160 +3049,29 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
2201
3049
  }]
2202
3050
  }] });
2203
3051
 
2204
- const SNACKBAR_CONTENT = new InjectionToken('SnackbarContent');
2205
-
2206
- class BsSnackbarComponent {
2207
- constructor(content) {
2208
- this.displayBlock = true;
2209
- this.width100 = true;
2210
- this.instance = null;
2211
- //#region Monitor @slideUpDown hooks
2212
- this.animationState = '';
2213
- this.animationStateChanged = new EventEmitter();
2214
- this.content = content;
2215
- }
2216
- onAnimationChanged(event) {
2217
- this.animationStateChanged.emit(event);
2218
- }
2219
- }
2220
- BsSnackbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsSnackbarComponent, deps: [{ token: SNACKBAR_CONTENT }], target: i0.ɵɵFactoryTarget.Component });
2221
- BsSnackbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsSnackbarComponent, selector: "bs-snackbar", host: { properties: { "class.d-block": "this.displayBlock", "class.w-100": "this.width100" } }, ngImport: i0, template: "<div [@slideUpDown]=\"animationState\"\n (@slideUpDown.start)=\"onAnimationChanged($event)\"\n (@slideUpDown.done)=\"onAnimationChanged($event)\">\n\n <ng-container *ngTemplateOutlet=\"content; context: { $implicit: this }\" ></ng-container>\n</div>", styles: [":host{background:#232323;color:rgba(var(--bs-light-rgb))}\n"], directives: [{ type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], animations: [SlideUpDownAnimation] });
2222
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsSnackbarComponent, decorators: [{
2223
- type: Component,
2224
- args: [{ selector: 'bs-snackbar', animations: [SlideUpDownAnimation], template: "<div [@slideUpDown]=\"animationState\"\n (@slideUpDown.start)=\"onAnimationChanged($event)\"\n (@slideUpDown.done)=\"onAnimationChanged($event)\">\n\n <ng-container *ngTemplateOutlet=\"content; context: { $implicit: this }\" ></ng-container>\n</div>", styles: [":host{background:#232323;color:rgba(var(--bs-light-rgb))}\n"] }]
2225
- }], ctorParameters: function () { return [{ type: i0.TemplateRef, decorators: [{
2226
- type: Inject,
2227
- args: [SNACKBAR_CONTENT]
2228
- }] }]; }, propDecorators: { displayBlock: [{
2229
- type: HostBinding,
2230
- args: ['class.d-block']
2231
- }], width100: [{
2232
- type: HostBinding,
2233
- args: ['class.w-100']
2234
- }] } });
2235
-
2236
- class BsSnackbarService {
2237
- constructor(overlay, parentInjector, componentFactoryResolver) {
2238
- this.overlay = overlay;
2239
- this.parentInjector = parentInjector;
2240
- this.componentFactoryResolver = componentFactoryResolver;
2241
- }
2242
- show(template) {
2243
- const injector = Injector.create({
2244
- providers: [{ provide: SNACKBAR_CONTENT, useValue: template }],
2245
- parent: this.parentInjector
2246
- });
2247
- const portal = new ComponentPortal(BsSnackbarComponent, null, injector, this.componentFactoryResolver);
2248
- const overlayRef = this.overlay.create({
2249
- scrollStrategy: this.overlay.scrollStrategies.reposition(),
2250
- positionStrategy: this.overlay.position()
2251
- .global().centerHorizontally().bottom('0'),
2252
- width: '100%'
2253
- });
2254
- const componentInstance = overlayRef.attach(portal);
2255
- componentInstance.instance['instance'] = {
2256
- component: componentInstance,
2257
- overlay: overlayRef
2258
- };
2259
- return componentInstance.instance;
2260
- }
2261
- hide(snackbar) {
2262
- snackbar.animationStateChanged.pipe(filter(ev => ev.phaseName === 'done' && ev.toState === 'void'), take(1)).subscribe(() => {
2263
- snackbar['instance']?.overlay.dispose();
2264
- });
2265
- snackbar.animationState = 'void';
2266
- }
2267
- }
2268
- BsSnackbarService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsSnackbarService, deps: [{ token: i1$1.Overlay }, { token: i0.Injector }, { token: i0.ComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Injectable });
2269
- BsSnackbarService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsSnackbarService, providedIn: 'root' });
2270
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsSnackbarService, decorators: [{
2271
- type: Injectable,
2272
- args: [{
2273
- providedIn: 'root'
2274
- }]
2275
- }], ctorParameters: function () { return [{ type: i1$1.Overlay }, { type: i0.Injector }, { type: i0.ComponentFactoryResolver }]; } });
2276
-
2277
- class BsSnackbarCloseDirective {
2278
- constructor(snackbarService) {
2279
- this.snackbarService = snackbarService;
2280
- }
2281
- onClick() {
2282
- this.snackbarService.hide(this.bsSnackbarClose);
2283
- }
2284
- }
2285
- BsSnackbarCloseDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsSnackbarCloseDirective, deps: [{ token: BsSnackbarService }], target: i0.ɵɵFactoryTarget.Directive });
2286
- BsSnackbarCloseDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: BsSnackbarCloseDirective, selector: "[bsSnackbarClose]", inputs: { bsSnackbarClose: "bsSnackbarClose" }, host: { listeners: { "click": "onClick()" } }, ngImport: i0 });
2287
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsSnackbarCloseDirective, decorators: [{
2288
- type: Directive,
2289
- args: [{
2290
- selector: '[bsSnackbarClose]'
2291
- }]
2292
- }], ctorParameters: function () { return [{ type: BsSnackbarService }]; }, propDecorators: { bsSnackbarClose: [{
2293
- type: Input
2294
- }], onClick: [{
2295
- type: HostListener,
2296
- args: ['click']
2297
- }] } });
2298
-
2299
- class BsSnackbarModule {
2300
- }
2301
- BsSnackbarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsSnackbarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2302
- BsSnackbarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsSnackbarModule, declarations: [BsSnackbarComponent,
2303
- BsSnackbarCloseDirective], imports: [CommonModule], exports: [BsSnackbarComponent,
2304
- BsSnackbarCloseDirective] });
2305
- BsSnackbarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsSnackbarModule, providers: [
2306
- // { provide: BsSnackbarComponent, useExisting: forwardRef(() => BsSnackbarComponent) }
2307
- // { provide: BsSnackbarComponent, useClass: BsSnackbarComponent }
2308
- ], imports: [[
2309
- CommonModule
2310
- ]] });
2311
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsSnackbarModule, decorators: [{
2312
- type: NgModule,
2313
- args: [{
2314
- declarations: [
2315
- BsSnackbarComponent,
2316
- BsSnackbarCloseDirective
2317
- ],
2318
- imports: [
2319
- CommonModule
2320
- ],
2321
- exports: [
2322
- BsSnackbarComponent,
2323
- BsSnackbarCloseDirective
2324
- ],
2325
- providers: [
2326
- // { provide: BsSnackbarComponent, useExisting: forwardRef(() => BsSnackbarComponent) }
2327
- // { provide: BsSnackbarComponent, useClass: BsSnackbarComponent }
2328
- ]
2329
- }]
2330
- }] });
2331
-
2332
3052
  class BsTabPageComponent {
2333
3053
  constructor(tabControl) {
2334
3054
  this.disabled = false;
2335
3055
  this.tabControl = tabControl;
2336
3056
  }
2337
- ngOnInit() {
2338
- }
2339
3057
  }
2340
3058
  BsTabPageComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsTabPageComponent, deps: [{ token: BsTabControlComponent }], target: i0.ɵɵFactoryTarget.Component });
2341
3059
  BsTabPageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsTabPageComponent, selector: "bs-tab-page", inputs: { disabled: "disabled" }, queries: [{ propertyName: "headerTemplate", first: true, predicate: TemplateRef, descendants: true }], ngImport: i0, template: "<ng-content *ngIf=\"tabControl.activeTab === this\"></ng-content>", styles: [""], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
2342
3060
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsTabPageComponent, decorators: [{
2343
3061
  type: Component,
2344
3062
  args: [{ selector: 'bs-tab-page', template: "<ng-content *ngIf=\"tabControl.activeTab === this\"></ng-content>", styles: [""] }]
2345
- }], ctorParameters: function () { return [{ type: BsTabControlComponent }]; }, propDecorators: { headerTemplate: [{
3063
+ }], ctorParameters: function () { return [{ type: BsTabControlComponent }]; }, propDecorators: { disabled: [{
3064
+ type: Input
3065
+ }], headerTemplate: [{
2346
3066
  type: ContentChild,
2347
3067
  args: [TemplateRef]
2348
- }], disabled: [{
2349
- type: Input
2350
3068
  }] } });
2351
3069
 
2352
3070
  class BsTabControlComponent {
2353
3071
  constructor() {
3072
+ this.border = true;
2354
3073
  this.activeTab = null;
2355
3074
  }
2356
- ngOnInit() {
2357
- }
2358
3075
  setActiveTab(tab) {
2359
3076
  if (!tab.disabled) {
2360
3077
  this.activeTab = tab;
@@ -2363,13 +3080,15 @@ class BsTabControlComponent {
2363
3080
  }
2364
3081
  }
2365
3082
  BsTabControlComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsTabControlComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2366
- BsTabControlComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsTabControlComponent, selector: "bs-tab-control", queries: [{ propertyName: "tabPages", predicate: BsTabPageComponent }], ngImport: i0, template: "<ul class=\"nav nav-tabs\">\n <ng-container *ngFor=\"let tab of tabPages\">\n <li class=\"nav-item\" (click)=\"setActiveTab(tab)\" *ngIf=\"!!tab.headerTemplate\">\n <a class=\"nav-link\" [class.active]=\"activeTab === tab\" [class.disabled]=\"tab.disabled\" [attr.aria-current]=\"activeTab === tab ? 'page' : null\" [attr.aria-disabled]=\"tab.disabled\" href=\"\">\n <ng-container [ngTemplateOutlet]=\"tab.headerTemplate\"></ng-container>\n </a>\n </li>\n </ng-container>\n</ul>\n<!-- <div class=\"container\"> -->\n <ng-content></ng-content>\n<!-- </div> -->", styles: [""], 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"] }] });
3083
+ BsTabControlComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsTabControlComponent, selector: "bs-tab-control", inputs: { border: "border" }, queries: [{ propertyName: "tabPages", predicate: BsTabPageComponent }], ngImport: i0, template: "<ul class=\"nav nav-tabs\">\n <ng-container *ngFor=\"let tab of tabPages\">\n <li class=\"nav-item\" (click)=\"setActiveTab(tab)\" *ngIf=\"!!tab.headerTemplate\">\n <a class=\"nav-link\" [class.active]=\"activeTab === tab\" [class.disabled]=\"tab.disabled\" [attr.aria-current]=\"activeTab === tab ? 'page' : null\" [attr.aria-disabled]=\"tab.disabled\" href=\"\">\n <ng-container [ngTemplateOutlet]=\"tab.headerTemplate\"></ng-container>\n </a>\n </li>\n </ng-container>\n</ul>\n<div class=\"tab-content\" [class.border]=\"border && activeTab\">\n <ng-content></ng-content>\n</div>", styles: [".tab-content{margin-top:-1px}\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"] }] });
2367
3084
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsTabControlComponent, decorators: [{
2368
3085
  type: Component,
2369
- args: [{ selector: 'bs-tab-control', template: "<ul class=\"nav nav-tabs\">\n <ng-container *ngFor=\"let tab of tabPages\">\n <li class=\"nav-item\" (click)=\"setActiveTab(tab)\" *ngIf=\"!!tab.headerTemplate\">\n <a class=\"nav-link\" [class.active]=\"activeTab === tab\" [class.disabled]=\"tab.disabled\" [attr.aria-current]=\"activeTab === tab ? 'page' : null\" [attr.aria-disabled]=\"tab.disabled\" href=\"\">\n <ng-container [ngTemplateOutlet]=\"tab.headerTemplate\"></ng-container>\n </a>\n </li>\n </ng-container>\n</ul>\n<!-- <div class=\"container\"> -->\n <ng-content></ng-content>\n<!-- </div> -->", styles: [""] }]
2370
- }], ctorParameters: function () { return []; }, propDecorators: { tabPages: [{
3086
+ args: [{ selector: 'bs-tab-control', template: "<ul class=\"nav nav-tabs\">\n <ng-container *ngFor=\"let tab of tabPages\">\n <li class=\"nav-item\" (click)=\"setActiveTab(tab)\" *ngIf=\"!!tab.headerTemplate\">\n <a class=\"nav-link\" [class.active]=\"activeTab === tab\" [class.disabled]=\"tab.disabled\" [attr.aria-current]=\"activeTab === tab ? 'page' : null\" [attr.aria-disabled]=\"tab.disabled\" href=\"\">\n <ng-container [ngTemplateOutlet]=\"tab.headerTemplate\"></ng-container>\n </a>\n </li>\n </ng-container>\n</ul>\n<div class=\"tab-content\" [class.border]=\"border && activeTab\">\n <ng-content></ng-content>\n</div>", styles: [".tab-content{margin-top:-1px}\n"] }]
3087
+ }], propDecorators: { tabPages: [{
2371
3088
  type: ContentChildren,
2372
3089
  args: [BsTabPageComponent]
3090
+ }], border: [{
3091
+ type: Input
2373
3092
  }] } });
2374
3093
 
2375
3094
  class BsTabControlModule {
@@ -2403,14 +3122,11 @@ class BsToggleButtonComponent {
2403
3122
  this.disableAnimations = true;
2404
3123
  //#region isToggled
2405
3124
  this._isToggled = false;
3125
+ this.change = new EventEmitter();
2406
3126
  this.isToggledChange = new EventEmitter();
2407
3127
  //#endregion
2408
- this.offColor = '#CCCCCC';
2409
- this.onColor = '#2196F3';
2410
- this.round = true;
2411
- }
2412
- ngAfterViewInit() {
2413
- this.disableAnimations = false;
3128
+ //#region disabled
3129
+ this.disabled = false;
2414
3130
  }
2415
3131
  get isToggled() {
2416
3132
  return this._isToggled;
@@ -2419,21 +3135,28 @@ class BsToggleButtonComponent {
2419
3135
  this._isToggled = value;
2420
3136
  this.isToggledChange.emit(this._isToggled);
2421
3137
  }
3138
+ //#endregion
3139
+ onChange(event) {
3140
+ const val = event.target.checked;
3141
+ this.isToggled = val;
3142
+ this.change.emit(val);
3143
+ }
3144
+ ngAfterViewInit() {
3145
+ this.disableAnimations = false;
3146
+ }
2422
3147
  }
2423
3148
  BsToggleButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsToggleButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2424
- BsToggleButtonComponent.ɵcmp = 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] });
3149
+ BsToggleButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsToggleButtonComponent, selector: "bs-toggle-button", inputs: { isToggled: "isToggled", disabled: "disabled" }, outputs: { change: "change", isToggledChange: "isToggledChange" }, ngImport: i0, template: "<label class=\"form-check form-switch\">\n <input class=\"form-check-input\" type=\"checkbox\" [checked]=\"isToggled\" (change)=\"onChange($event)\" [disabled]=\"disabled\">\n <span class=\"form-check-label\">\n <ng-content></ng-content>\n </span>\n</label>", styles: [""], animations: [ColorTransitionAnimation] });
2425
3150
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsToggleButtonComponent, decorators: [{
2426
3151
  type: Component,
2427
- args: [{ selector: 'bs-toggle-button', animations: [ColorTransitionAnimation], template: "<label (click)=\"isToggled = !isToggled\" class=\"switch\" [class.checked]=\"isToggled\">\n <span class=\"slider\" [class.round]=\"round\" [@colorTransition]=\"{ value: isToggled ? 'color2' : 'color1', params: { color1: offColor, color2: onColor, 'duration': '.4s' } }\"></span>\n</label>", styles: [".switch{position:relative;display:inline-block;width:30px;height:17px}.switch>.slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;transition:transform .4s}.switch>.slider.round{border-radius:8.5px}.switch>.slider.round:before{border-radius:50%}.switch>.slider:before{position:absolute;content:\"\";height:13px;width:13px;left:2px;top:0;bottom:0;margin:auto 0;background-color:#fff;transition:transform .4s}.switch.checked .slider:before{transform:translate(13px)}\n"] }]
2428
- }], propDecorators: { isToggledChange: [{
3152
+ args: [{ selector: 'bs-toggle-button', animations: [ColorTransitionAnimation], template: "<label class=\"form-check form-switch\">\n <input class=\"form-check-input\" type=\"checkbox\" [checked]=\"isToggled\" (change)=\"onChange($event)\" [disabled]=\"disabled\">\n <span class=\"form-check-label\">\n <ng-content></ng-content>\n </span>\n</label>", styles: [""] }]
3153
+ }], propDecorators: { change: [{
3154
+ type: Output
3155
+ }], isToggledChange: [{
2429
3156
  type: Output
2430
3157
  }], isToggled: [{
2431
3158
  type: Input
2432
- }], offColor: [{
2433
- type: Input
2434
- }], onColor: [{
2435
- type: Input
2436
- }], round: [{
3159
+ }], disabled: [{
2437
3160
  type: Input
2438
3161
  }] } });
2439
3162
 
@@ -2575,20 +3298,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
2575
3298
  type: Host
2576
3299
  }, {
2577
3300
  type: SkipSelf
2578
- }] }]; }, propDecorators: { onBlur: [{
3301
+ }] }]; }, propDecorators: { bsTooltip: [{
3302
+ type: Input
3303
+ }], onBlur: [{
2579
3304
  type: HostListener,
2580
3305
  args: ['window:blur']
2581
- }], bsTooltip: [{
2582
- type: Input
2583
3306
  }] } });
2584
3307
 
2585
3308
  class BsTooltipModule {
2586
3309
  }
2587
3310
  BsTooltipModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsTooltipModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2588
3311
  BsTooltipModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsTooltipModule, declarations: [BsTooltipDirective,
2589
- BsTooltipComponent], imports: [CommonModule], exports: [BsTooltipDirective] });
3312
+ BsTooltipComponent], imports: [CommonModule,
3313
+ OverlayModule], exports: [BsTooltipDirective] });
2590
3314
  BsTooltipModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsTooltipModule, imports: [[
2591
- CommonModule
3315
+ CommonModule,
3316
+ OverlayModule
2592
3317
  ]] });
2593
3318
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsTooltipModule, decorators: [{
2594
3319
  type: NgModule,
@@ -2598,7 +3323,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
2598
3323
  BsTooltipComponent
2599
3324
  ],
2600
3325
  imports: [
2601
- CommonModule
3326
+ CommonModule,
3327
+ OverlayModule
2602
3328
  ],
2603
3329
  exports: [
2604
3330
  BsTooltipDirective
@@ -2660,7 +3386,7 @@ class BsTypeaheadComponent {
2660
3386
  }
2661
3387
  }
2662
3388
  BsTypeaheadComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsTypeaheadComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2663
- BsTypeaheadComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: BsTypeaheadComponent, selector: "bs-typeahead", inputs: { searchterm: "searchterm", isLoadingText: "isLoadingText", noSuggestionsText: "noSuggestionsText", suggestions: "suggestions" }, outputs: { provideSuggestions: "provideSuggestions", suggestionSelected: "suggestionSelected", searchtermChange: "searchtermChange", submitted: "submitted" }, host: { listeners: { "window:resize": "onResize()" } }, viewQueries: [{ propertyName: "textbox", first: true, predicate: ["textbox"], descendants: true }], ngImport: i0, template: "<div bsDropdown [(isOpen)]=\"isOpen\" [hasBackdrop]=\"false\" [closeOnClickOutside]=\"true\">\n <input type=\"text\" class=\"form-control\" #textbox [(ngModel)]=\"searchterm\" (ngModelChange)=\"onProvideSuggestions($event)\" (keyup.enter)=\"onSubmit()\" />\n <div *bsDropdownMenu>\n <ul class=\"dropdown-menu d-block position-static\" [style.width.px]=\"hostWidth$ | async\">\n <bs-progress *ngIf=\"isLoading$ | async\" [height]=\"2\" [isIndeterminate]=\"true\"></bs-progress>\n <li *ngIf=\"isLoading$ | async\">\n <a class=\"dropdown-item disabled\">{{ isLoadingText }}</a>\n </li>\n <ng-container *ngIf=\"(isLoading$ | async) === false\">\n <li *ngIf=\"showNoSuggestions$ | async\">\n <a class=\"dropdown-item disabled\">{{ noSuggestionsText }}</a>\n </li>\n <li *ngFor=\"let suggestion of (suggestions$ | async)\" (click)=\"suggestionClicked(suggestion)\">\n <a class=\"dropdown-item cursor-pointer\">{{ suggestion.text }}</a>\n </li>\n </ng-container>\n </ul>\n </div>\n</div>", styles: ["bs-progress{margin-top:-8px;margin-bottom:6px}\n"], components: [{ type: BsProgressComponent, selector: "bs-progress", inputs: ["height", "isIndeterminate"] }], directives: [{ type: BsDropdownDirective, selector: "[bsDropdown]", inputs: ["hasBackdrop", "sameWidth", "closeOnClickOutside", "isOpen"], outputs: ["isOpenChange"] }, { type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: BsDropdownMenuDirective, selector: "[bsDropdownMenu]" }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "async": i1.AsyncPipe } });
3389
+ 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$1.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$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: BsDropdownMenuDirective, selector: "[bsDropdownMenu]" }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "async": i1.AsyncPipe } });
2664
3390
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BsTypeaheadComponent, decorators: [{
2665
3391
  type: Component,
2666
3392
  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"] }]
@@ -2769,5 +3495,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImpor
2769
3495
  * Generated bundle index. Do not edit.
2770
3496
  */
2771
3497
 
2772
- export { BsAccordionComponent, BsAccordionModule, BsAccordionTabComponent, BsAccordionTabHeaderComponent, BsAlertCloseComponent, BsAlertComponent, BsAlertModule, BsCalendarComponent, BsCalendarModule, BsCardComponent, BsCardHeaderComponent, BsCardModule, BsCarouselComponent, BsCarouselImageDirective, BsCarouselModule, BsContextMenuDirective, BsContextMenuModule, BsDatatableColumnDirective, BsDatatableComponent, BsDatatableModule, BsDatepickerComponent, BsDatepickerModule, BsDropdownDirective, BsDropdownMenuDirective, BsDropdownModule, BsDropdownToggleDirective, BsFontColorPipe, BsFontColorPipeModule, BsItemTemplateDirective, BsListGroupComponent, BsListGroupItemComponent, BsListGroupModule, BsMultiselectComponent, BsMultiselectModule, BsNavbarComponent, BsNavbarDropdownComponent, BsNavbarItemComponent, BsNavbarModule, BsNavbarNavComponent, BsPaginationComponent, BsPaginationModule, BsProgressBarComponent, BsProgressBarModule, BsProgressComponent, BsRowTemplateDirective, BsScrollspyComponent, BsScrollspyDirective, BsScrollspyModule, BsSelect2Component, BsSelect2Module, BsSnackbarCloseDirective, BsSnackbarComponent, BsSnackbarModule, BsSnackbarService, BsTabControlComponent, BsTabControlModule, BsTabPageComponent, BsToggleButtonComponent, BsToggleButtonModule, BsTooltipDirective, BsTooltipModule, BsTypeaheadComponent, BsTypeaheadModule, Color, DatatableSettings, DropdownToggleDirective, NavLinkDirective, NavbarContentDirective, Position };
3498
+ export { BsAccordionComponent, BsAccordionModule, BsAccordionTabComponent, BsAccordionTabHeaderComponent, BsAlertCloseComponent, BsAlertComponent, BsAlertModule, BsButtonTemplateDirective, BsCalendarComponent, BsCalendarModule, BsCardComponent, BsCardHeaderComponent, BsCardModule, BsCarouselComponent, BsCarouselImageDirective, BsCarouselModule, BsCodeSnippetComponent, BsCodeSnippetModule, BsContextMenuDirective, BsContextMenuModule, BsCopyDirective, BsCopyModule, BsDatatableColumnDirective, BsDatatableComponent, BsDatatableModule, BsDatepickerComponent, BsDatepickerModule, BsDropdownDirective, BsDropdownMenuDirective, BsDropdownModule, BsDropdownToggleDirective, BsFileUploadComponent, BsFileUploadModule, BsFileUploadTemplateDirective, BsFontColorPipe, BsFontColorPipeModule, BsFooterTemplateDirective, BsForDirective, BsForModule, BsFormatBytesModule, BsFormatBytesPipe, BsHeaderTemplateDirective, BsItemTemplateDirective, BsListGroupComponent, BsListGroupItemComponent, BsListGroupModule, BsModalBodyDirective, BsModalComponent, BsModalContentComponent, BsModalFooterDirective, BsModalHeaderDirective, BsModalModule, BsModalService, BsMultiselectComponent, BsMultiselectModule, BsNavbarBrandComponent, BsNavbarComponent, BsNavbarDropdownComponent, BsNavbarItemComponent, BsNavbarModule, BsNavbarNavComponent, BsPaginationComponent, BsPaginationModule, BsProgressBarComponent, BsProgressBarModule, BsProgressComponent, BsRatingComponent, BsRatingModule, 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 };
2773
3499
  //# sourceMappingURL=mintplayer-ng-bootstrap.mjs.map