@mintplayer/ng-bootstrap 21.29.0 → 21.31.0

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 (156) hide show
  1. package/fesm2022/mintplayer-ng-bootstrap-a11y.mjs +455 -0
  2. package/fesm2022/mintplayer-ng-bootstrap-a11y.mjs.map +1 -0
  3. package/fesm2022/mintplayer-ng-bootstrap-accordion.mjs +8 -5
  4. package/fesm2022/mintplayer-ng-bootstrap-accordion.mjs.map +1 -1
  5. package/fesm2022/mintplayer-ng-bootstrap-breadcrumb.mjs +10 -4
  6. package/fesm2022/mintplayer-ng-bootstrap-breadcrumb.mjs.map +1 -1
  7. package/fesm2022/mintplayer-ng-bootstrap-button-group.mjs +7 -4
  8. package/fesm2022/mintplayer-ng-bootstrap-button-group.mjs.map +1 -1
  9. package/fesm2022/mintplayer-ng-bootstrap-calendar.mjs +131 -3
  10. package/fesm2022/mintplayer-ng-bootstrap-calendar.mjs.map +1 -1
  11. package/fesm2022/mintplayer-ng-bootstrap-carousel.mjs +80 -48
  12. package/fesm2022/mintplayer-ng-bootstrap-carousel.mjs.map +1 -1
  13. package/fesm2022/mintplayer-ng-bootstrap-code-snippet.mjs +4 -1
  14. package/fesm2022/mintplayer-ng-bootstrap-code-snippet.mjs.map +1 -1
  15. package/fesm2022/mintplayer-ng-bootstrap-color-picker.mjs +218 -14
  16. package/fesm2022/mintplayer-ng-bootstrap-color-picker.mjs.map +1 -1
  17. package/fesm2022/mintplayer-ng-bootstrap-datatable.mjs +4 -3
  18. package/fesm2022/mintplayer-ng-bootstrap-datatable.mjs.map +1 -1
  19. package/fesm2022/mintplayer-ng-bootstrap-datepicker.mjs +2 -2
  20. package/fesm2022/mintplayer-ng-bootstrap-datepicker.mjs.map +1 -1
  21. package/fesm2022/mintplayer-ng-bootstrap-dock.mjs +294 -3
  22. package/fesm2022/mintplayer-ng-bootstrap-dock.mjs.map +1 -1
  23. package/fesm2022/mintplayer-ng-bootstrap-dropdown-menu.mjs +163 -18
  24. package/fesm2022/mintplayer-ng-bootstrap-dropdown-menu.mjs.map +1 -1
  25. package/fesm2022/mintplayer-ng-bootstrap-dropdown.mjs +179 -7
  26. package/fesm2022/mintplayer-ng-bootstrap-dropdown.mjs.map +1 -1
  27. package/fesm2022/mintplayer-ng-bootstrap-file-upload.mjs +14 -4
  28. package/fesm2022/mintplayer-ng-bootstrap-file-upload.mjs.map +1 -1
  29. package/fesm2022/mintplayer-ng-bootstrap-has-overlay.mjs +14 -0
  30. package/fesm2022/mintplayer-ng-bootstrap-has-overlay.mjs.map +1 -1
  31. package/fesm2022/mintplayer-ng-bootstrap-list-group.mjs +2 -1
  32. package/fesm2022/mintplayer-ng-bootstrap-list-group.mjs.map +1 -1
  33. package/fesm2022/mintplayer-ng-bootstrap-marquee.mjs +7 -4
  34. package/fesm2022/mintplayer-ng-bootstrap-marquee.mjs.map +1 -1
  35. package/fesm2022/mintplayer-ng-bootstrap-modal.mjs +70 -6
  36. package/fesm2022/mintplayer-ng-bootstrap-modal.mjs.map +1 -1
  37. package/fesm2022/mintplayer-ng-bootstrap-multi-range.mjs +693 -0
  38. package/fesm2022/mintplayer-ng-bootstrap-multi-range.mjs.map +1 -0
  39. package/fesm2022/mintplayer-ng-bootstrap-multiselect.mjs +5 -4
  40. package/fesm2022/mintplayer-ng-bootstrap-multiselect.mjs.map +1 -1
  41. package/fesm2022/mintplayer-ng-bootstrap-navbar-toggler.mjs +6 -6
  42. package/fesm2022/mintplayer-ng-bootstrap-navbar-toggler.mjs.map +1 -1
  43. package/fesm2022/mintplayer-ng-bootstrap-navbar.mjs +45 -13
  44. package/fesm2022/mintplayer-ng-bootstrap-navbar.mjs.map +1 -1
  45. package/fesm2022/mintplayer-ng-bootstrap-offcanvas.mjs +51 -5
  46. package/fesm2022/mintplayer-ng-bootstrap-offcanvas.mjs.map +1 -1
  47. package/fesm2022/mintplayer-ng-bootstrap-pagination.mjs +5 -3
  48. package/fesm2022/mintplayer-ng-bootstrap-pagination.mjs.map +1 -1
  49. package/fesm2022/mintplayer-ng-bootstrap-placeholder.mjs +18 -4
  50. package/fesm2022/mintplayer-ng-bootstrap-placeholder.mjs.map +1 -1
  51. package/fesm2022/mintplayer-ng-bootstrap-playlist-toggler.mjs +6 -6
  52. package/fesm2022/mintplayer-ng-bootstrap-playlist-toggler.mjs.map +1 -1
  53. package/fesm2022/mintplayer-ng-bootstrap-popover.mjs +61 -6
  54. package/fesm2022/mintplayer-ng-bootstrap-popover.mjs.map +1 -1
  55. package/fesm2022/mintplayer-ng-bootstrap-priority-nav.mjs +19 -4
  56. package/fesm2022/mintplayer-ng-bootstrap-priority-nav.mjs.map +1 -1
  57. package/fesm2022/mintplayer-ng-bootstrap-progress-bar.mjs +8 -5
  58. package/fesm2022/mintplayer-ng-bootstrap-progress-bar.mjs.map +1 -1
  59. package/fesm2022/mintplayer-ng-bootstrap-range.mjs +4 -3
  60. package/fesm2022/mintplayer-ng-bootstrap-range.mjs.map +1 -1
  61. package/fesm2022/mintplayer-ng-bootstrap-rating.mjs +34 -4
  62. package/fesm2022/mintplayer-ng-bootstrap-rating.mjs.map +1 -1
  63. package/fesm2022/mintplayer-ng-bootstrap-reduced-motion.mjs +59 -0
  64. package/fesm2022/mintplayer-ng-bootstrap-reduced-motion.mjs.map +1 -0
  65. package/fesm2022/mintplayer-ng-bootstrap-resizable.mjs +91 -2
  66. package/fesm2022/mintplayer-ng-bootstrap-resizable.mjs.map +1 -1
  67. package/fesm2022/mintplayer-ng-bootstrap-scheduler.mjs +16 -5
  68. package/fesm2022/mintplayer-ng-bootstrap-scheduler.mjs.map +1 -1
  69. package/fesm2022/mintplayer-ng-bootstrap-scrollspy.mjs +2 -2
  70. package/fesm2022/mintplayer-ng-bootstrap-scrollspy.mjs.map +1 -1
  71. package/fesm2022/mintplayer-ng-bootstrap-searchbox.mjs +28 -5
  72. package/fesm2022/mintplayer-ng-bootstrap-searchbox.mjs.map +1 -1
  73. package/fesm2022/mintplayer-ng-bootstrap-select.mjs +4 -3
  74. package/fesm2022/mintplayer-ng-bootstrap-select.mjs.map +1 -1
  75. package/fesm2022/mintplayer-ng-bootstrap-select2.mjs +18 -4
  76. package/fesm2022/mintplayer-ng-bootstrap-select2.mjs.map +1 -1
  77. package/fesm2022/mintplayer-ng-bootstrap-signature-pad.mjs +4 -3
  78. package/fesm2022/mintplayer-ng-bootstrap-signature-pad.mjs.map +1 -1
  79. package/fesm2022/mintplayer-ng-bootstrap-tab-control.mjs +2 -2
  80. package/fesm2022/mintplayer-ng-bootstrap-tab-control.mjs.map +1 -1
  81. package/fesm2022/mintplayer-ng-bootstrap-table.mjs +10 -3
  82. package/fesm2022/mintplayer-ng-bootstrap-table.mjs.map +1 -1
  83. package/fesm2022/mintplayer-ng-bootstrap-tile-manager.mjs +143 -29
  84. package/fesm2022/mintplayer-ng-bootstrap-tile-manager.mjs.map +1 -1
  85. package/fesm2022/mintplayer-ng-bootstrap-timepicker.mjs +2 -2
  86. package/fesm2022/mintplayer-ng-bootstrap-timepicker.mjs.map +1 -1
  87. package/fesm2022/mintplayer-ng-bootstrap-toast.mjs +7 -4
  88. package/fesm2022/mintplayer-ng-bootstrap-toast.mjs.map +1 -1
  89. package/fesm2022/mintplayer-ng-bootstrap-toggle-button.mjs +42 -21
  90. package/fesm2022/mintplayer-ng-bootstrap-toggle-button.mjs.map +1 -1
  91. package/fesm2022/mintplayer-ng-bootstrap-tooltip.mjs +33 -4
  92. package/fesm2022/mintplayer-ng-bootstrap-tooltip.mjs.map +1 -1
  93. package/fesm2022/mintplayer-ng-bootstrap-treeview.mjs +17 -7
  94. package/fesm2022/mintplayer-ng-bootstrap-treeview.mjs.map +1 -1
  95. package/fesm2022/mintplayer-ng-bootstrap-typeahead.mjs +50 -8
  96. package/fesm2022/mintplayer-ng-bootstrap-typeahead.mjs.map +1 -1
  97. package/fesm2022/mintplayer-ng-bootstrap-virtual-datatable.mjs +34 -12
  98. package/fesm2022/mintplayer-ng-bootstrap-virtual-datatable.mjs.map +1 -1
  99. package/fesm2022/mintplayer-ng-bootstrap-web-components-a11y.mjs +74 -0
  100. package/fesm2022/mintplayer-ng-bootstrap-web-components-a11y.mjs.map +1 -0
  101. package/fesm2022/mintplayer-ng-bootstrap-web-components-scheduler.mjs +1476 -71
  102. package/fesm2022/mintplayer-ng-bootstrap-web-components-scheduler.mjs.map +1 -1
  103. package/fesm2022/mintplayer-ng-bootstrap-web-components-splitter.mjs +194 -2
  104. package/fesm2022/mintplayer-ng-bootstrap-web-components-splitter.mjs.map +1 -1
  105. package/fesm2022/mintplayer-ng-bootstrap-web-components-tab-control.mjs +4 -0
  106. package/fesm2022/mintplayer-ng-bootstrap-web-components-tab-control.mjs.map +1 -1
  107. package/package.json +18 -2
  108. package/types/mintplayer-ng-bootstrap-a11y.d.ts +196 -0
  109. package/types/mintplayer-ng-bootstrap-accordion.d.ts +4 -2
  110. package/types/mintplayer-ng-bootstrap-breadcrumb.d.ts +2 -1
  111. package/types/mintplayer-ng-bootstrap-button-group.d.ts +2 -1
  112. package/types/mintplayer-ng-bootstrap-calendar.d.ts +32 -0
  113. package/types/mintplayer-ng-bootstrap-carousel.d.ts +56 -3
  114. package/types/mintplayer-ng-bootstrap-code-snippet.d.ts +1 -0
  115. package/types/mintplayer-ng-bootstrap-color-picker.d.ts +75 -4
  116. package/types/mintplayer-ng-bootstrap-datatable.d.ts +1 -1
  117. package/types/mintplayer-ng-bootstrap-dock.d.ts +51 -0
  118. package/types/mintplayer-ng-bootstrap-dropdown-menu.d.ts +54 -9
  119. package/types/mintplayer-ng-bootstrap-dropdown.d.ts +57 -2
  120. package/types/mintplayer-ng-bootstrap-file-upload.d.ts +4 -1
  121. package/types/mintplayer-ng-bootstrap-has-overlay.d.ts +14 -0
  122. package/types/mintplayer-ng-bootstrap-marquee.d.ts +2 -1
  123. package/types/mintplayer-ng-bootstrap-modal.d.ts +25 -1
  124. package/types/mintplayer-ng-bootstrap-multi-range.d.ts +170 -0
  125. package/types/mintplayer-ng-bootstrap-multiselect.d.ts +2 -1
  126. package/types/mintplayer-ng-bootstrap-navbar-toggler.d.ts +4 -2
  127. package/types/mintplayer-ng-bootstrap-navbar.d.ts +25 -1
  128. package/types/mintplayer-ng-bootstrap-offcanvas.d.ts +23 -1
  129. package/types/mintplayer-ng-bootstrap-pagination.d.ts +3 -1
  130. package/types/mintplayer-ng-bootstrap-placeholder.d.ts +5 -1
  131. package/types/mintplayer-ng-bootstrap-playlist-toggler.d.ts +4 -2
  132. package/types/mintplayer-ng-bootstrap-popover.d.ts +21 -1
  133. package/types/mintplayer-ng-bootstrap-priority-nav.d.ts +4 -1
  134. package/types/mintplayer-ng-bootstrap-progress-bar.d.ts +4 -2
  135. package/types/mintplayer-ng-bootstrap-range.d.ts +2 -1
  136. package/types/mintplayer-ng-bootstrap-rating.d.ts +3 -0
  137. package/types/mintplayer-ng-bootstrap-reduced-motion.d.ts +36 -0
  138. package/types/mintplayer-ng-bootstrap-resizable.d.ts +4 -0
  139. package/types/mintplayer-ng-bootstrap-scheduler.d.ts +42 -9
  140. package/types/mintplayer-ng-bootstrap-scrollspy.d.ts +1 -1
  141. package/types/mintplayer-ng-bootstrap-searchbox.d.ts +8 -1
  142. package/types/mintplayer-ng-bootstrap-select.d.ts +2 -1
  143. package/types/mintplayer-ng-bootstrap-select2.d.ts +3 -0
  144. package/types/mintplayer-ng-bootstrap-signature-pad.d.ts +2 -1
  145. package/types/mintplayer-ng-bootstrap-table.d.ts +8 -1
  146. package/types/mintplayer-ng-bootstrap-tile-manager.d.ts +21 -2
  147. package/types/mintplayer-ng-bootstrap-toast.d.ts +6 -1
  148. package/types/mintplayer-ng-bootstrap-toggle-button.d.ts +11 -0
  149. package/types/mintplayer-ng-bootstrap-tooltip.d.ts +5 -0
  150. package/types/mintplayer-ng-bootstrap-treeview.d.ts +12 -1
  151. package/types/mintplayer-ng-bootstrap-typeahead.d.ts +11 -3
  152. package/types/mintplayer-ng-bootstrap-virtual-datatable.d.ts +14 -1
  153. package/types/mintplayer-ng-bootstrap-web-components-a11y.d.ts +34 -0
  154. package/types/mintplayer-ng-bootstrap-web-components-scheduler-core.d.ts +35 -11
  155. package/types/mintplayer-ng-bootstrap-web-components-scheduler.d.ts +246 -0
  156. package/types/mintplayer-ng-bootstrap-web-components-splitter.d.ts +95 -37
@@ -1,5 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { inject, signal, computed, contentChildren, forwardRef, model, ChangeDetectionStrategy, Component, input } from '@angular/core';
3
+ import * as i1 from '@mintplayer/ng-bootstrap/reduced-motion';
4
+ import { BsReducedMotionDirective } from '@mintplayer/ng-bootstrap/reduced-motion';
3
5
  import { SlideUpDownAnimation } from '@mintplayer/ng-animations';
4
6
  import { BsNoNoscriptDirective } from '@mintplayer/ng-bootstrap/no-noscript';
5
7
 
@@ -32,19 +34,20 @@ class BsAccordionTabComponent {
32
34
  }
33
35
  }
34
36
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: BsAccordionTabComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
35
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.11", type: BsAccordionTabComponent, isStandalone: true, selector: "bs-accordion-tab", inputs: { isActive: { classPropertyName: "isActive", publicName: "isActive", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { isActive: "isActiveChange" }, host: { classAttribute: "accordion-item d-block" }, queries: [{ propertyName: "childAccordions", predicate: i0.forwardRef(() => BsAccordionComponent), isSignal: true }], ngImport: i0, template: "<div [@.disabled]=\"accordion.disableAnimations()\" bsNoNoscript>\n @if (accordion.multi()) {\n <input type=\"checkbox\" class=\"d-none\"\n [id]=\"accordionTabName()\"\n [checked]=\"isActive()\">\n } @else {\n <input type=\"radio\" class=\"d-none\"\n [name]=\"accordion.accordionName()\"\n [id]=\"accordionTabName()\"\n [checked]=\"isActive()\">\n }\n <ng-content select=\"bs-accordion-tab-header\"></ng-content>\n <div [id]=\"accordionTabName() + '-content'\"\n class=\"accordion-collapse collapse show overflow-hidden\"\n role=\"region\"\n [attr.aria-labelledby]=\"accordionTabName() + '-header'\"\n [@slideUpDown]=\"isActive()\">\n <div class=\"accordion-body p-0\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n", styles: [".card,.card-header,.card-block{border-radius:0}.card{margin-bottom:-1px}:host ::ng-deep .noscript>.accordion-collapse{height:0!important}:host ::ng-deep .noscript>input[type=radio]:checked+bs-accordion-tab-header>h2>label,:host ::ng-deep .noscript>input[type=checkbox]:checked+bs-accordion-tab-header>h2>label{background-color:#e7f1ff}:host ::ng-deep .noscript>input[type=radio]:checked+bs-accordion-tab-header>h2>label:after,:host ::ng-deep .noscript>input[type=checkbox]:checked+bs-accordion-tab-header>h2>label:after{transform:var(--bs-accordion-btn-icon-transform)}:host ::ng-deep .noscript>input[type=radio]:checked~.accordion-collapse,:host ::ng-deep .noscript>input[type=checkbox]:checked~.accordion-collapse{height:auto!important}\n"], dependencies: [{ kind: "directive", type: BsNoNoscriptDirective, selector: "[bsNoNoscript]" }], animations: [SlideUpDownAnimation], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
37
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.11", type: BsAccordionTabComponent, isStandalone: true, selector: "bs-accordion-tab", inputs: { isActive: { classPropertyName: "isActive", publicName: "isActive", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { isActive: "isActiveChange" }, host: { classAttribute: "accordion-item d-block" }, queries: [{ propertyName: "childAccordions", predicate: i0.forwardRef(() => BsAccordionComponent), isSignal: true }], ngImport: i0, template: "<div [@.disabled]=\"accordion.animationsDisabled()\" bsNoNoscript>\n @if (accordion.multi()) {\n <input type=\"checkbox\" class=\"d-none\"\n [id]=\"accordionTabName()\"\n [checked]=\"isActive()\">\n } @else {\n <input type=\"radio\" class=\"d-none\"\n [name]=\"accordion.accordionName()\"\n [id]=\"accordionTabName()\"\n [checked]=\"isActive()\">\n }\n <ng-content select=\"bs-accordion-tab-header\"></ng-content>\n <div [id]=\"accordionTabName() + '-content'\"\n class=\"accordion-collapse collapse show overflow-hidden\"\n role=\"region\"\n [attr.aria-labelledby]=\"accordionTabName() + '-header'\"\n [@slideUpDown]=\"isActive()\">\n <div class=\"accordion-body p-0\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n", styles: [".card,.card-header,.card-block{border-radius:0}.card{margin-bottom:-1px}:host ::ng-deep .noscript>.accordion-collapse{height:0!important}:host ::ng-deep .noscript>input[type=radio]:checked+bs-accordion-tab-header>h2>label,:host ::ng-deep .noscript>input[type=checkbox]:checked+bs-accordion-tab-header>h2>label{background-color:#e7f1ff}:host ::ng-deep .noscript>input[type=radio]:checked+bs-accordion-tab-header>h2>label:after,:host ::ng-deep .noscript>input[type=checkbox]:checked+bs-accordion-tab-header>h2>label:after{transform:var(--bs-accordion-btn-icon-transform)}:host ::ng-deep .noscript>input[type=radio]:checked~.accordion-collapse,:host ::ng-deep .noscript>input[type=checkbox]:checked~.accordion-collapse{height:auto!important}\n"], dependencies: [{ kind: "directive", type: BsNoNoscriptDirective, selector: "[bsNoNoscript]" }], animations: [SlideUpDownAnimation], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
36
38
  }
37
39
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: BsAccordionTabComponent, decorators: [{
38
40
  type: Component,
39
41
  args: [{ selector: 'bs-accordion-tab', imports: [BsNoNoscriptDirective], animations: [SlideUpDownAnimation], changeDetection: ChangeDetectionStrategy.OnPush, host: {
40
42
  'class': 'accordion-item d-block',
41
- }, template: "<div [@.disabled]=\"accordion.disableAnimations()\" bsNoNoscript>\n @if (accordion.multi()) {\n <input type=\"checkbox\" class=\"d-none\"\n [id]=\"accordionTabName()\"\n [checked]=\"isActive()\">\n } @else {\n <input type=\"radio\" class=\"d-none\"\n [name]=\"accordion.accordionName()\"\n [id]=\"accordionTabName()\"\n [checked]=\"isActive()\">\n }\n <ng-content select=\"bs-accordion-tab-header\"></ng-content>\n <div [id]=\"accordionTabName() + '-content'\"\n class=\"accordion-collapse collapse show overflow-hidden\"\n role=\"region\"\n [attr.aria-labelledby]=\"accordionTabName() + '-header'\"\n [@slideUpDown]=\"isActive()\">\n <div class=\"accordion-body p-0\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n", styles: [".card,.card-header,.card-block{border-radius:0}.card{margin-bottom:-1px}:host ::ng-deep .noscript>.accordion-collapse{height:0!important}:host ::ng-deep .noscript>input[type=radio]:checked+bs-accordion-tab-header>h2>label,:host ::ng-deep .noscript>input[type=checkbox]:checked+bs-accordion-tab-header>h2>label{background-color:#e7f1ff}:host ::ng-deep .noscript>input[type=radio]:checked+bs-accordion-tab-header>h2>label:after,:host ::ng-deep .noscript>input[type=checkbox]:checked+bs-accordion-tab-header>h2>label:after{transform:var(--bs-accordion-btn-icon-transform)}:host ::ng-deep .noscript>input[type=radio]:checked~.accordion-collapse,:host ::ng-deep .noscript>input[type=checkbox]:checked~.accordion-collapse{height:auto!important}\n"] }]
43
+ }, template: "<div [@.disabled]=\"accordion.animationsDisabled()\" bsNoNoscript>\n @if (accordion.multi()) {\n <input type=\"checkbox\" class=\"d-none\"\n [id]=\"accordionTabName()\"\n [checked]=\"isActive()\">\n } @else {\n <input type=\"radio\" class=\"d-none\"\n [name]=\"accordion.accordionName()\"\n [id]=\"accordionTabName()\"\n [checked]=\"isActive()\">\n }\n <ng-content select=\"bs-accordion-tab-header\"></ng-content>\n <div [id]=\"accordionTabName() + '-content'\"\n class=\"accordion-collapse collapse show overflow-hidden\"\n role=\"region\"\n [attr.aria-labelledby]=\"accordionTabName() + '-header'\"\n [@slideUpDown]=\"isActive()\">\n <div class=\"accordion-body p-0\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n", styles: [".card,.card-header,.card-block{border-radius:0}.card{margin-bottom:-1px}:host ::ng-deep .noscript>.accordion-collapse{height:0!important}:host ::ng-deep .noscript>input[type=radio]:checked+bs-accordion-tab-header>h2>label,:host ::ng-deep .noscript>input[type=checkbox]:checked+bs-accordion-tab-header>h2>label{background-color:#e7f1ff}:host ::ng-deep .noscript>input[type=radio]:checked+bs-accordion-tab-header>h2>label:after,:host ::ng-deep .noscript>input[type=checkbox]:checked+bs-accordion-tab-header>h2>label:after{transform:var(--bs-accordion-btn-icon-transform)}:host ::ng-deep .noscript>input[type=radio]:checked~.accordion-collapse,:host ::ng-deep .noscript>input[type=checkbox]:checked~.accordion-collapse{height:auto!important}\n"] }]
42
44
  }], ctorParameters: () => [], propDecorators: { childAccordions: [{ type: i0.ContentChildren, args: [forwardRef(() => BsAccordionComponent), { isSignal: true }] }], isActive: [{ type: i0.Input, args: [{ isSignal: true, alias: "isActive", required: false }] }, { type: i0.Output, args: ["isActiveChange"] }] } });
43
45
 
44
46
  class BsAccordionComponent {
45
47
  constructor() {
48
+ this.reducedMotion = inject(BsReducedMotionDirective);
46
49
  this.tabPages = contentChildren(forwardRef(() => BsAccordionTabComponent), ...(ngDevMode ? [{ debugName: "tabPages" }] : /* istanbul ignore next */ []));
47
- this.disableAnimations = signal(false, ...(ngDevMode ? [{ debugName: "disableAnimations" }] : /* istanbul ignore next */ []));
50
+ this.animationsDisabled = computed(() => this.reducedMotion.matches(), ...(ngDevMode ? [{ debugName: "animationsDisabled" }] : /* istanbul ignore next */ []));
48
51
  this.highlightActiveTab = input(false, ...(ngDevMode ? [{ debugName: "highlightActiveTab" }] : /* istanbul ignore next */ []));
49
52
  this.multi = input(false, ...(ngDevMode ? [{ debugName: "multi" }] : /* istanbul ignore next */ []));
50
53
  this.accordionId = signal(0, ...(ngDevMode ? [{ debugName: "accordionId" }] : /* istanbul ignore next */ []));
@@ -54,11 +57,11 @@ class BsAccordionComponent {
54
57
  }
55
58
  static { this.accordionCounter = 0; }
56
59
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: BsAccordionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
57
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.11", type: BsAccordionComponent, isStandalone: true, selector: "bs-accordion", inputs: { highlightActiveTab: { classPropertyName: "highlightActiveTab", publicName: "highlightActiveTab", isSignal: true, isRequired: false, transformFunction: null }, multi: { classPropertyName: "multi", publicName: "multi", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "tabPages", predicate: i0.forwardRef(() => BsAccordionTabComponent), isSignal: true }], ngImport: i0, template: "<div class=\"accordion\">\n <ng-content></ng-content>\n</div>", styles: [":host ::ng-deep .accordion{--bs-accordion-color: var(--bs-body-color);--bs-accordion-bg: var(--bs-body-bg);--bs-accordion-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out, border-radius .15s ease;--bs-accordion-border-color: var(--bs-border-color);--bs-accordion-border-width: var(--bs-border-width);--bs-accordion-border-radius: var(--bs-border-radius);--bs-accordion-inner-border-radius: calc(var(--bs-border-radius) - (var(--bs-border-width)));--bs-accordion-btn-padding-x: 1.25rem;--bs-accordion-btn-padding-y: 1rem;--bs-accordion-btn-color: var(--bs-body-color);--bs-accordion-btn-bg: var(--bs-accordion-bg);--bs-accordion-btn-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23212529' stroke-linecap='round' stroke-linejoin='round'%3e%3cpath d='m2 5 6 6 6-6'/%3e%3c/svg%3e\");--bs-accordion-btn-icon-width: 1.25rem;--bs-accordion-btn-icon-transform: rotate(-180deg);--bs-accordion-btn-icon-transition: transform .2s ease-in-out;--bs-accordion-btn-active-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='rgb%285.2, 44, 101.2%29' stroke-linecap='round' stroke-linejoin='round'%3e%3cpath d='m2 5 6 6 6-6'/%3e%3c/svg%3e\");--bs-accordion-btn-focus-box-shadow: 0 0 0 .25rem rgba(13, 110, 253, .25);--bs-accordion-body-padding-x: 1.25rem;--bs-accordion-body-padding-y: 1rem;--bs-accordion-active-color: var(--bs-primary-text-emphasis);--bs-accordion-active-bg: var(--bs-primary-bg-subtle)}:host ::ng-deep .accordion-button{position:relative;display:flex;align-items:center;width:100%;padding:var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x);font-size:1rem;color:var(--bs-accordion-btn-color);text-align:left;background-color:var(--bs-accordion-btn-bg);border:0;border-radius:0;overflow-anchor:none;transition:var(--bs-accordion-transition)}@media(prefers-reduced-motion:reduce){:host ::ng-deep .accordion-button{transition:none}}:host ::ng-deep .accordion-button:not(.collapsed){color:var(--bs-accordion-active-color);background-color:var(--bs-accordion-active-bg);box-shadow:inset 0 calc(-1 * var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color)}:host ::ng-deep .accordion-button:not(.collapsed):after{background-image:var(--bs-accordion-btn-active-icon);transform:var(--bs-accordion-btn-icon-transform)}:host ::ng-deep .accordion-button:after{flex-shrink:0;width:var(--bs-accordion-btn-icon-width);height:var(--bs-accordion-btn-icon-width);margin-left:auto;content:\"\";background-image:var(--bs-accordion-btn-icon);background-repeat:no-repeat;background-size:var(--bs-accordion-btn-icon-width);transition:var(--bs-accordion-btn-icon-transition)}@media(prefers-reduced-motion:reduce){:host ::ng-deep .accordion-button:after{transition:none}}:host ::ng-deep .accordion-button:hover{z-index:2}:host ::ng-deep .accordion-button:focus{z-index:3;outline:0;box-shadow:var(--bs-accordion-btn-focus-box-shadow)}:host ::ng-deep .accordion-header{margin-bottom:0}:host ::ng-deep .accordion-item{color:var(--bs-accordion-color);background-color:var(--bs-accordion-bg);border:var(--bs-accordion-border-width) solid var(--bs-accordion-border-color)}:host ::ng-deep .accordion-item:first-of-type{border-top-left-radius:var(--bs-accordion-border-radius);border-top-right-radius:var(--bs-accordion-border-radius)}:host ::ng-deep .accordion-item:first-of-type>.accordion-header .accordion-button{border-top-left-radius:var(--bs-accordion-inner-border-radius);border-top-right-radius:var(--bs-accordion-inner-border-radius)}:host ::ng-deep .accordion-item:not(:first-of-type){border-top:0}:host ::ng-deep .accordion-item:last-of-type{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}:host ::ng-deep .accordion-item:last-of-type>.accordion-header .accordion-button.collapsed{border-bottom-right-radius:var(--bs-accordion-inner-border-radius);border-bottom-left-radius:var(--bs-accordion-inner-border-radius)}:host ::ng-deep .accordion-item:last-of-type>.accordion-collapse{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}:host ::ng-deep .accordion-body{padding:var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x)}:host ::ng-deep .accordion-flush>.accordion-item{border-right:0;border-left:0;border-radius:0}:host ::ng-deep .accordion-flush>.accordion-item:first-child{border-top:0}:host ::ng-deep .accordion-flush>.accordion-item:last-child{border-bottom:0}:host ::ng-deep .accordion-flush>.accordion-item>.accordion-collapse,:host ::ng-deep .accordion-flush>.accordion-item>.accordion-header .accordion-button,:host ::ng-deep .accordion-flush>.accordion-item>.accordion-header .accordion-button.collapsed{border-radius:0}:host ::ng-deep [data-bs-theme=dark] .accordion-button:after{--bs-accordion-btn-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='rgb%28109.8, 168, 253.8%29'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708'/%3e%3c/svg%3e\");--bs-accordion-btn-active-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='rgb%28109.8, 168, 253.8%29'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708'/%3e%3c/svg%3e\")}:host ::ng-deep bs-accordion{margin:-1px}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
60
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.11", type: BsAccordionComponent, isStandalone: true, selector: "bs-accordion", inputs: { highlightActiveTab: { classPropertyName: "highlightActiveTab", publicName: "highlightActiveTab", isSignal: true, isRequired: false, transformFunction: null }, multi: { classPropertyName: "multi", publicName: "multi", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "tabPages", predicate: i0.forwardRef(() => BsAccordionTabComponent), isSignal: true }], hostDirectives: [{ directive: i1.BsReducedMotionDirective }], ngImport: i0, template: "<div class=\"accordion\">\n <ng-content></ng-content>\n</div>", styles: [":host ::ng-deep .accordion{--bs-accordion-color: var(--bs-body-color);--bs-accordion-bg: var(--bs-body-bg);--bs-accordion-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out, border-radius .15s ease;--bs-accordion-border-color: var(--bs-border-color);--bs-accordion-border-width: var(--bs-border-width);--bs-accordion-border-radius: var(--bs-border-radius);--bs-accordion-inner-border-radius: calc(var(--bs-border-radius) - (var(--bs-border-width)));--bs-accordion-btn-padding-x: 1.25rem;--bs-accordion-btn-padding-y: 1rem;--bs-accordion-btn-color: var(--bs-body-color);--bs-accordion-btn-bg: var(--bs-accordion-bg);--bs-accordion-btn-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23212529' stroke-linecap='round' stroke-linejoin='round'%3e%3cpath d='m2 5 6 6 6-6'/%3e%3c/svg%3e\");--bs-accordion-btn-icon-width: 1.25rem;--bs-accordion-btn-icon-transform: rotate(-180deg);--bs-accordion-btn-icon-transition: transform .2s ease-in-out;--bs-accordion-btn-active-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='rgb%285.2, 44, 101.2%29' stroke-linecap='round' stroke-linejoin='round'%3e%3cpath d='m2 5 6 6 6-6'/%3e%3c/svg%3e\");--bs-accordion-btn-focus-box-shadow: 0 0 0 .25rem rgba(13, 110, 253, .25);--bs-accordion-body-padding-x: 1.25rem;--bs-accordion-body-padding-y: 1rem;--bs-accordion-active-color: var(--bs-primary-text-emphasis);--bs-accordion-active-bg: var(--bs-primary-bg-subtle)}:host ::ng-deep .accordion-button{position:relative;display:flex;align-items:center;width:100%;padding:var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x);font-size:1rem;color:var(--bs-accordion-btn-color);text-align:left;background-color:var(--bs-accordion-btn-bg);border:0;border-radius:0;overflow-anchor:none;transition:var(--bs-accordion-transition)}@media(prefers-reduced-motion:reduce){:host ::ng-deep .accordion-button{transition:none}}:host ::ng-deep .accordion-button:not(.collapsed){color:var(--bs-accordion-active-color);background-color:var(--bs-accordion-active-bg);box-shadow:inset 0 calc(-1 * var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color)}:host ::ng-deep .accordion-button:not(.collapsed):after{background-image:var(--bs-accordion-btn-active-icon);transform:var(--bs-accordion-btn-icon-transform)}:host ::ng-deep .accordion-button:after{flex-shrink:0;width:var(--bs-accordion-btn-icon-width);height:var(--bs-accordion-btn-icon-width);margin-left:auto;content:\"\";background-image:var(--bs-accordion-btn-icon);background-repeat:no-repeat;background-size:var(--bs-accordion-btn-icon-width);transition:var(--bs-accordion-btn-icon-transition)}@media(prefers-reduced-motion:reduce){:host ::ng-deep .accordion-button:after{transition:none}}:host ::ng-deep .accordion-button:hover{z-index:2}:host ::ng-deep .accordion-button:focus{z-index:3;outline:0;box-shadow:var(--bs-accordion-btn-focus-box-shadow)}:host ::ng-deep .accordion-header{margin-bottom:0}:host ::ng-deep .accordion-item{color:var(--bs-accordion-color);background-color:var(--bs-accordion-bg);border:var(--bs-accordion-border-width) solid var(--bs-accordion-border-color)}:host ::ng-deep .accordion-item:first-of-type{border-top-left-radius:var(--bs-accordion-border-radius);border-top-right-radius:var(--bs-accordion-border-radius)}:host ::ng-deep .accordion-item:first-of-type>.accordion-header .accordion-button{border-top-left-radius:var(--bs-accordion-inner-border-radius);border-top-right-radius:var(--bs-accordion-inner-border-radius)}:host ::ng-deep .accordion-item:not(:first-of-type){border-top:0}:host ::ng-deep .accordion-item:last-of-type{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}:host ::ng-deep .accordion-item:last-of-type>.accordion-header .accordion-button.collapsed{border-bottom-right-radius:var(--bs-accordion-inner-border-radius);border-bottom-left-radius:var(--bs-accordion-inner-border-radius)}:host ::ng-deep .accordion-item:last-of-type>.accordion-collapse{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}:host ::ng-deep .accordion-body{padding:var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x)}:host ::ng-deep .accordion-flush>.accordion-item{border-right:0;border-left:0;border-radius:0}:host ::ng-deep .accordion-flush>.accordion-item:first-child{border-top:0}:host ::ng-deep .accordion-flush>.accordion-item:last-child{border-bottom:0}:host ::ng-deep .accordion-flush>.accordion-item>.accordion-collapse,:host ::ng-deep .accordion-flush>.accordion-item>.accordion-header .accordion-button,:host ::ng-deep .accordion-flush>.accordion-item>.accordion-header .accordion-button.collapsed{border-radius:0}:host ::ng-deep [data-bs-theme=dark] .accordion-button:after{--bs-accordion-btn-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='rgb%28109.8, 168, 253.8%29'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708'/%3e%3c/svg%3e\");--bs-accordion-btn-active-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='rgb%28109.8, 168, 253.8%29'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708'/%3e%3c/svg%3e\")}:host ::ng-deep bs-accordion{margin:-1px}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
58
61
  }
59
62
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: BsAccordionComponent, decorators: [{
60
63
  type: Component,
61
- args: [{ selector: 'bs-accordion', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"accordion\">\n <ng-content></ng-content>\n</div>", styles: [":host ::ng-deep .accordion{--bs-accordion-color: var(--bs-body-color);--bs-accordion-bg: var(--bs-body-bg);--bs-accordion-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out, border-radius .15s ease;--bs-accordion-border-color: var(--bs-border-color);--bs-accordion-border-width: var(--bs-border-width);--bs-accordion-border-radius: var(--bs-border-radius);--bs-accordion-inner-border-radius: calc(var(--bs-border-radius) - (var(--bs-border-width)));--bs-accordion-btn-padding-x: 1.25rem;--bs-accordion-btn-padding-y: 1rem;--bs-accordion-btn-color: var(--bs-body-color);--bs-accordion-btn-bg: var(--bs-accordion-bg);--bs-accordion-btn-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23212529' stroke-linecap='round' stroke-linejoin='round'%3e%3cpath d='m2 5 6 6 6-6'/%3e%3c/svg%3e\");--bs-accordion-btn-icon-width: 1.25rem;--bs-accordion-btn-icon-transform: rotate(-180deg);--bs-accordion-btn-icon-transition: transform .2s ease-in-out;--bs-accordion-btn-active-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='rgb%285.2, 44, 101.2%29' stroke-linecap='round' stroke-linejoin='round'%3e%3cpath d='m2 5 6 6 6-6'/%3e%3c/svg%3e\");--bs-accordion-btn-focus-box-shadow: 0 0 0 .25rem rgba(13, 110, 253, .25);--bs-accordion-body-padding-x: 1.25rem;--bs-accordion-body-padding-y: 1rem;--bs-accordion-active-color: var(--bs-primary-text-emphasis);--bs-accordion-active-bg: var(--bs-primary-bg-subtle)}:host ::ng-deep .accordion-button{position:relative;display:flex;align-items:center;width:100%;padding:var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x);font-size:1rem;color:var(--bs-accordion-btn-color);text-align:left;background-color:var(--bs-accordion-btn-bg);border:0;border-radius:0;overflow-anchor:none;transition:var(--bs-accordion-transition)}@media(prefers-reduced-motion:reduce){:host ::ng-deep .accordion-button{transition:none}}:host ::ng-deep .accordion-button:not(.collapsed){color:var(--bs-accordion-active-color);background-color:var(--bs-accordion-active-bg);box-shadow:inset 0 calc(-1 * var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color)}:host ::ng-deep .accordion-button:not(.collapsed):after{background-image:var(--bs-accordion-btn-active-icon);transform:var(--bs-accordion-btn-icon-transform)}:host ::ng-deep .accordion-button:after{flex-shrink:0;width:var(--bs-accordion-btn-icon-width);height:var(--bs-accordion-btn-icon-width);margin-left:auto;content:\"\";background-image:var(--bs-accordion-btn-icon);background-repeat:no-repeat;background-size:var(--bs-accordion-btn-icon-width);transition:var(--bs-accordion-btn-icon-transition)}@media(prefers-reduced-motion:reduce){:host ::ng-deep .accordion-button:after{transition:none}}:host ::ng-deep .accordion-button:hover{z-index:2}:host ::ng-deep .accordion-button:focus{z-index:3;outline:0;box-shadow:var(--bs-accordion-btn-focus-box-shadow)}:host ::ng-deep .accordion-header{margin-bottom:0}:host ::ng-deep .accordion-item{color:var(--bs-accordion-color);background-color:var(--bs-accordion-bg);border:var(--bs-accordion-border-width) solid var(--bs-accordion-border-color)}:host ::ng-deep .accordion-item:first-of-type{border-top-left-radius:var(--bs-accordion-border-radius);border-top-right-radius:var(--bs-accordion-border-radius)}:host ::ng-deep .accordion-item:first-of-type>.accordion-header .accordion-button{border-top-left-radius:var(--bs-accordion-inner-border-radius);border-top-right-radius:var(--bs-accordion-inner-border-radius)}:host ::ng-deep .accordion-item:not(:first-of-type){border-top:0}:host ::ng-deep .accordion-item:last-of-type{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}:host ::ng-deep .accordion-item:last-of-type>.accordion-header .accordion-button.collapsed{border-bottom-right-radius:var(--bs-accordion-inner-border-radius);border-bottom-left-radius:var(--bs-accordion-inner-border-radius)}:host ::ng-deep .accordion-item:last-of-type>.accordion-collapse{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}:host ::ng-deep .accordion-body{padding:var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x)}:host ::ng-deep .accordion-flush>.accordion-item{border-right:0;border-left:0;border-radius:0}:host ::ng-deep .accordion-flush>.accordion-item:first-child{border-top:0}:host ::ng-deep .accordion-flush>.accordion-item:last-child{border-bottom:0}:host ::ng-deep .accordion-flush>.accordion-item>.accordion-collapse,:host ::ng-deep .accordion-flush>.accordion-item>.accordion-header .accordion-button,:host ::ng-deep .accordion-flush>.accordion-item>.accordion-header .accordion-button.collapsed{border-radius:0}:host ::ng-deep [data-bs-theme=dark] .accordion-button:after{--bs-accordion-btn-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='rgb%28109.8, 168, 253.8%29'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708'/%3e%3c/svg%3e\");--bs-accordion-btn-active-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='rgb%28109.8, 168, 253.8%29'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708'/%3e%3c/svg%3e\")}:host ::ng-deep bs-accordion{margin:-1px}\n"] }]
64
+ args: [{ selector: 'bs-accordion', changeDetection: ChangeDetectionStrategy.OnPush, hostDirectives: [BsReducedMotionDirective], template: "<div class=\"accordion\">\n <ng-content></ng-content>\n</div>", styles: [":host ::ng-deep .accordion{--bs-accordion-color: var(--bs-body-color);--bs-accordion-bg: var(--bs-body-bg);--bs-accordion-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out, border-radius .15s ease;--bs-accordion-border-color: var(--bs-border-color);--bs-accordion-border-width: var(--bs-border-width);--bs-accordion-border-radius: var(--bs-border-radius);--bs-accordion-inner-border-radius: calc(var(--bs-border-radius) - (var(--bs-border-width)));--bs-accordion-btn-padding-x: 1.25rem;--bs-accordion-btn-padding-y: 1rem;--bs-accordion-btn-color: var(--bs-body-color);--bs-accordion-btn-bg: var(--bs-accordion-bg);--bs-accordion-btn-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23212529' stroke-linecap='round' stroke-linejoin='round'%3e%3cpath d='m2 5 6 6 6-6'/%3e%3c/svg%3e\");--bs-accordion-btn-icon-width: 1.25rem;--bs-accordion-btn-icon-transform: rotate(-180deg);--bs-accordion-btn-icon-transition: transform .2s ease-in-out;--bs-accordion-btn-active-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='rgb%285.2, 44, 101.2%29' stroke-linecap='round' stroke-linejoin='round'%3e%3cpath d='m2 5 6 6 6-6'/%3e%3c/svg%3e\");--bs-accordion-btn-focus-box-shadow: 0 0 0 .25rem rgba(13, 110, 253, .25);--bs-accordion-body-padding-x: 1.25rem;--bs-accordion-body-padding-y: 1rem;--bs-accordion-active-color: var(--bs-primary-text-emphasis);--bs-accordion-active-bg: var(--bs-primary-bg-subtle)}:host ::ng-deep .accordion-button{position:relative;display:flex;align-items:center;width:100%;padding:var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x);font-size:1rem;color:var(--bs-accordion-btn-color);text-align:left;background-color:var(--bs-accordion-btn-bg);border:0;border-radius:0;overflow-anchor:none;transition:var(--bs-accordion-transition)}@media(prefers-reduced-motion:reduce){:host ::ng-deep .accordion-button{transition:none}}:host ::ng-deep .accordion-button:not(.collapsed){color:var(--bs-accordion-active-color);background-color:var(--bs-accordion-active-bg);box-shadow:inset 0 calc(-1 * var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color)}:host ::ng-deep .accordion-button:not(.collapsed):after{background-image:var(--bs-accordion-btn-active-icon);transform:var(--bs-accordion-btn-icon-transform)}:host ::ng-deep .accordion-button:after{flex-shrink:0;width:var(--bs-accordion-btn-icon-width);height:var(--bs-accordion-btn-icon-width);margin-left:auto;content:\"\";background-image:var(--bs-accordion-btn-icon);background-repeat:no-repeat;background-size:var(--bs-accordion-btn-icon-width);transition:var(--bs-accordion-btn-icon-transition)}@media(prefers-reduced-motion:reduce){:host ::ng-deep .accordion-button:after{transition:none}}:host ::ng-deep .accordion-button:hover{z-index:2}:host ::ng-deep .accordion-button:focus{z-index:3;outline:0;box-shadow:var(--bs-accordion-btn-focus-box-shadow)}:host ::ng-deep .accordion-header{margin-bottom:0}:host ::ng-deep .accordion-item{color:var(--bs-accordion-color);background-color:var(--bs-accordion-bg);border:var(--bs-accordion-border-width) solid var(--bs-accordion-border-color)}:host ::ng-deep .accordion-item:first-of-type{border-top-left-radius:var(--bs-accordion-border-radius);border-top-right-radius:var(--bs-accordion-border-radius)}:host ::ng-deep .accordion-item:first-of-type>.accordion-header .accordion-button{border-top-left-radius:var(--bs-accordion-inner-border-radius);border-top-right-radius:var(--bs-accordion-inner-border-radius)}:host ::ng-deep .accordion-item:not(:first-of-type){border-top:0}:host ::ng-deep .accordion-item:last-of-type{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}:host ::ng-deep .accordion-item:last-of-type>.accordion-header .accordion-button.collapsed{border-bottom-right-radius:var(--bs-accordion-inner-border-radius);border-bottom-left-radius:var(--bs-accordion-inner-border-radius)}:host ::ng-deep .accordion-item:last-of-type>.accordion-collapse{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}:host ::ng-deep .accordion-body{padding:var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x)}:host ::ng-deep .accordion-flush>.accordion-item{border-right:0;border-left:0;border-radius:0}:host ::ng-deep .accordion-flush>.accordion-item:first-child{border-top:0}:host ::ng-deep .accordion-flush>.accordion-item:last-child{border-bottom:0}:host ::ng-deep .accordion-flush>.accordion-item>.accordion-collapse,:host ::ng-deep .accordion-flush>.accordion-item>.accordion-header .accordion-button,:host ::ng-deep .accordion-flush>.accordion-item>.accordion-header .accordion-button.collapsed{border-radius:0}:host ::ng-deep [data-bs-theme=dark] .accordion-button:after{--bs-accordion-btn-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='rgb%28109.8, 168, 253.8%29'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708'/%3e%3c/svg%3e\");--bs-accordion-btn-active-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='rgb%28109.8, 168, 253.8%29'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708'/%3e%3c/svg%3e\")}:host ::ng-deep bs-accordion{margin:-1px}\n"] }]
62
65
  }], ctorParameters: () => [], propDecorators: { tabPages: [{ type: i0.ContentChildren, args: [forwardRef(() => BsAccordionTabComponent), { isSignal: true }] }], highlightActiveTab: [{ type: i0.Input, args: [{ isSignal: true, alias: "highlightActiveTab", required: false }] }], multi: [{ type: i0.Input, args: [{ isSignal: true, alias: "multi", required: false }] }] } });
63
66
 
64
67
  class BsAccordionTabHeaderComponent {
@@ -1 +1 @@
1
- {"version":3,"file":"mintplayer-ng-bootstrap-accordion.mjs","sources":["../../../../libs/mintplayer-ng-bootstrap/accordion/src/accordion-tab/accordion-tab.component.ts","../../../../libs/mintplayer-ng-bootstrap/accordion/src/accordion-tab/accordion-tab.component.html","../../../../libs/mintplayer-ng-bootstrap/accordion/src/accordion/accordion.component.ts","../../../../libs/mintplayer-ng-bootstrap/accordion/src/accordion/accordion.component.html","../../../../libs/mintplayer-ng-bootstrap/accordion/src/accordion-tab-header/accordion-tab-header.component.ts","../../../../libs/mintplayer-ng-bootstrap/accordion/src/accordion-tab-header/accordion-tab-header.component.html","../../../../libs/mintplayer-ng-bootstrap/accordion/mintplayer-ng-bootstrap-accordion.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, contentChildren, forwardRef, inject, model, computed, signal } from '@angular/core';\nimport { SlideUpDownAnimation } from '@mintplayer/ng-animations';\nimport { BsNoNoscriptDirective } from '@mintplayer/ng-bootstrap/no-noscript';\nimport { BsAccordionComponent } from '../accordion/accordion.component';\n\n@Component({\n selector: 'bs-accordion-tab',\n templateUrl: './accordion-tab.component.html',\n styleUrls: ['./accordion-tab.component.scss'],\n imports: [BsNoNoscriptDirective],\n animations: [SlideUpDownAnimation],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'accordion-item d-block',\n },\n})\nexport class BsAccordionTabComponent {\n accordion = inject(BsAccordionComponent);\n accordionTabId = signal<number>(0);\n accordionTabName = computed(() => `${this.accordion.accordionName()}-${this.accordionTabId()}`);\n readonly childAccordions = contentChildren<BsAccordionComponent>(forwardRef(() => BsAccordionComponent));\n\n constructor() {\n this.accordionTabId.set(++this.accordion.accordionTabCounter);\n }\n\n isActive = model<boolean>(false);\n\n setActive(value: boolean) {\n if (this.isActive() !== value) {\n this.isActive.set(value);\n if (value && !this.accordion.multi()) {\n this.accordion.tabPages().filter((tab) => {\n return tab !== this;\n }).forEach((tab) => {\n tab.isActive.set(false);\n });\n }\n if (!value) {\n this.childAccordions().forEach((accordion) => {\n accordion.tabPages().forEach((tab: BsAccordionTabComponent) => {\n tab.isActive.set(false);\n });\n });\n }\n }\n }\n}\n","<div [@.disabled]=\"accordion.disableAnimations()\" bsNoNoscript>\n @if (accordion.multi()) {\n <input type=\"checkbox\" class=\"d-none\"\n [id]=\"accordionTabName()\"\n [checked]=\"isActive()\">\n } @else {\n <input type=\"radio\" class=\"d-none\"\n [name]=\"accordion.accordionName()\"\n [id]=\"accordionTabName()\"\n [checked]=\"isActive()\">\n }\n <ng-content select=\"bs-accordion-tab-header\"></ng-content>\n <div [id]=\"accordionTabName() + '-content'\"\n class=\"accordion-collapse collapse show overflow-hidden\"\n role=\"region\"\n [attr.aria-labelledby]=\"accordionTabName() + '-header'\"\n [@slideUpDown]=\"isActive()\">\n <div class=\"accordion-body p-0\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, contentChildren, forwardRef, input, signal, computed } from '@angular/core';\nimport { BsAccordionTabComponent } from '../accordion-tab/accordion-tab.component';\n\n@Component({\n selector: 'bs-accordion',\n templateUrl: './accordion.component.html',\n styleUrls: ['./accordion.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BsAccordionComponent {\n\n constructor() {\n this.accordionId = signal(++BsAccordionComponent.accordionCounter);\n }\n\n readonly tabPages = contentChildren<BsAccordionTabComponent>(forwardRef(() => BsAccordionTabComponent));\n disableAnimations = signal(false);\n highlightActiveTab = input(false);\n multi = input(false);\n\n accordionId = signal<number>(0);\n accordionName = computed(() => `bs-accordion-${this.accordionId()}`);\n accordionTabCounter = 0;\n static accordionCounter = 0;\n}\n","<div class=\"accordion\">\n <ng-content></ng-content>\n</div>","import { Component, inject, ChangeDetectionStrategy} from '@angular/core';\nimport { BsAccordionTabComponent } from '../accordion-tab/accordion-tab.component';\n\n@Component({\n selector: 'bs-accordion-tab-header',\n templateUrl: './accordion-tab-header.component.html',\n styleUrls: ['./accordion-tab-header.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BsAccordionTabHeaderComponent {\n accordionTab = inject(BsAccordionTabComponent);\n\n headerClicked(event: Event) {\n event.preventDefault();\n this.accordionTab.setActive(!this.accordionTab.isActive());\n }\n\n headerKeydown(event: KeyboardEvent) {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.accordionTab.setActive(!this.accordionTab.isActive());\n }\n }\n}\n","<h2 class=\"accordion-header\">\n <label role=\"button\"\n tabindex=\"0\"\n class=\"accordion-button\"\n [for]=\"accordionTab.accordionTabName()\"\n [id]=\"accordionTab.accordionTabName() + '-header'\"\n [class.collapsed]=\"!accordionTab.isActive()\"\n [class.bg-unset]=\"!accordionTab.accordion.highlightActiveTab()\"\n [attr.aria-expanded]=\"accordionTab.isActive()\"\n [attr.aria-controls]=\"accordionTab.accordionTabName() + '-content'\"\n (click)=\"headerClicked($event)\"\n (keydown)=\"headerKeydown($event)\">\n <ng-content></ng-content>\n </label>\n</h2>","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mintplayer-ng-bootstrap-accordion.mjs","sources":["../../../../libs/mintplayer-ng-bootstrap/accordion/src/accordion-tab/accordion-tab.component.ts","../../../../libs/mintplayer-ng-bootstrap/accordion/src/accordion-tab/accordion-tab.component.html","../../../../libs/mintplayer-ng-bootstrap/accordion/src/accordion/accordion.component.ts","../../../../libs/mintplayer-ng-bootstrap/accordion/src/accordion/accordion.component.html","../../../../libs/mintplayer-ng-bootstrap/accordion/src/accordion-tab-header/accordion-tab-header.component.ts","../../../../libs/mintplayer-ng-bootstrap/accordion/src/accordion-tab-header/accordion-tab-header.component.html","../../../../libs/mintplayer-ng-bootstrap/accordion/mintplayer-ng-bootstrap-accordion.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, contentChildren, forwardRef, inject, model, computed, signal } from '@angular/core';\nimport { SlideUpDownAnimation } from '@mintplayer/ng-animations';\nimport { BsNoNoscriptDirective } from '@mintplayer/ng-bootstrap/no-noscript';\nimport { BsAccordionComponent } from '../accordion/accordion.component';\n\n@Component({\n selector: 'bs-accordion-tab',\n templateUrl: './accordion-tab.component.html',\n styleUrls: ['./accordion-tab.component.scss'],\n imports: [BsNoNoscriptDirective],\n animations: [SlideUpDownAnimation],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'accordion-item d-block',\n },\n})\nexport class BsAccordionTabComponent {\n accordion = inject(BsAccordionComponent);\n accordionTabId = signal<number>(0);\n accordionTabName = computed(() => `${this.accordion.accordionName()}-${this.accordionTabId()}`);\n readonly childAccordions = contentChildren<BsAccordionComponent>(forwardRef(() => BsAccordionComponent));\n\n constructor() {\n this.accordionTabId.set(++this.accordion.accordionTabCounter);\n }\n\n isActive = model<boolean>(false);\n\n setActive(value: boolean) {\n if (this.isActive() !== value) {\n this.isActive.set(value);\n if (value && !this.accordion.multi()) {\n this.accordion.tabPages().filter((tab) => {\n return tab !== this;\n }).forEach((tab) => {\n tab.isActive.set(false);\n });\n }\n if (!value) {\n this.childAccordions().forEach((accordion) => {\n accordion.tabPages().forEach((tab: BsAccordionTabComponent) => {\n tab.isActive.set(false);\n });\n });\n }\n }\n }\n}\n","<div [@.disabled]=\"accordion.animationsDisabled()\" bsNoNoscript>\n @if (accordion.multi()) {\n <input type=\"checkbox\" class=\"d-none\"\n [id]=\"accordionTabName()\"\n [checked]=\"isActive()\">\n } @else {\n <input type=\"radio\" class=\"d-none\"\n [name]=\"accordion.accordionName()\"\n [id]=\"accordionTabName()\"\n [checked]=\"isActive()\">\n }\n <ng-content select=\"bs-accordion-tab-header\"></ng-content>\n <div [id]=\"accordionTabName() + '-content'\"\n class=\"accordion-collapse collapse show overflow-hidden\"\n role=\"region\"\n [attr.aria-labelledby]=\"accordionTabName() + '-header'\"\n [@slideUpDown]=\"isActive()\">\n <div class=\"accordion-body p-0\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, contentChildren, forwardRef, inject, input, signal, computed } from '@angular/core';\nimport { BsReducedMotionDirective } from '@mintplayer/ng-bootstrap/reduced-motion';\nimport { BsAccordionTabComponent } from '../accordion-tab/accordion-tab.component';\n\n@Component({\n selector: 'bs-accordion',\n templateUrl: './accordion.component.html',\n styleUrls: ['./accordion.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [BsReducedMotionDirective],\n})\nexport class BsAccordionComponent {\n private readonly reducedMotion = inject(BsReducedMotionDirective);\n\n constructor() {\n this.accordionId = signal(++BsAccordionComponent.accordionCounter);\n }\n\n readonly tabPages = contentChildren<BsAccordionTabComponent>(forwardRef(() => BsAccordionTabComponent));\n readonly animationsDisabled = computed(() => this.reducedMotion.matches());\n highlightActiveTab = input(false);\n multi = input(false);\n\n accordionId = signal<number>(0);\n accordionName = computed(() => `bs-accordion-${this.accordionId()}`);\n accordionTabCounter = 0;\n static accordionCounter = 0;\n}\n","<div class=\"accordion\">\n <ng-content></ng-content>\n</div>","import { Component, inject, ChangeDetectionStrategy} from '@angular/core';\nimport { BsAccordionTabComponent } from '../accordion-tab/accordion-tab.component';\n\n@Component({\n selector: 'bs-accordion-tab-header',\n templateUrl: './accordion-tab-header.component.html',\n styleUrls: ['./accordion-tab-header.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BsAccordionTabHeaderComponent {\n accordionTab = inject(BsAccordionTabComponent);\n\n headerClicked(event: Event) {\n event.preventDefault();\n this.accordionTab.setActive(!this.accordionTab.isActive());\n }\n\n headerKeydown(event: KeyboardEvent) {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.accordionTab.setActive(!this.accordionTab.isActive());\n }\n }\n}\n","<h2 class=\"accordion-header\">\n <label role=\"button\"\n tabindex=\"0\"\n class=\"accordion-button\"\n [for]=\"accordionTab.accordionTabName()\"\n [id]=\"accordionTab.accordionTabName() + '-header'\"\n [class.collapsed]=\"!accordionTab.isActive()\"\n [class.bg-unset]=\"!accordionTab.accordion.highlightActiveTab()\"\n [attr.aria-expanded]=\"accordionTab.isActive()\"\n [attr.aria-controls]=\"accordionTab.accordionTabName() + '-content'\"\n (click)=\"headerClicked($event)\"\n (keydown)=\"headerKeydown($event)\">\n <ng-content></ng-content>\n </label>\n</h2>","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { ChangeDetectionStrategy, Component } from '@angular/core';
2
+ import { ChangeDetectionStrategy, Component, input } from '@angular/core';
3
3
 
4
4
  class BsBreadcrumbComponent {
5
5
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: BsBreadcrumbComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
@@ -11,15 +11,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImpo
11
11
  }] });
12
12
 
13
13
  class BsBreadcrumbItemComponent {
14
+ constructor() {
15
+ this.active = input(false, ...(ngDevMode ? [{ debugName: "active" }] : /* istanbul ignore next */ []));
16
+ }
14
17
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: BsBreadcrumbItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
15
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.11", type: BsBreadcrumbItemComponent, isStandalone: true, selector: "bs-breadcrumb-item", host: { properties: { "class.breadcrumb-item": "true" } }, ngImport: i0, template: "<!-- <li class=\"breadcrumb-item\"> -->\n <ng-content></ng-content>\n<!-- </li> -->", styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
18
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.11", type: BsBreadcrumbItemComponent, isStandalone: true, selector: "bs-breadcrumb-item", inputs: { active: { classPropertyName: "active", publicName: "active", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "listitem" }, properties: { "class.breadcrumb-item": "true", "class.active": "active()", "attr.aria-current": "active() ? \"page\" : null" } }, ngImport: i0, template: "<ng-content></ng-content>\n", styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
16
19
  }
17
20
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: BsBreadcrumbItemComponent, decorators: [{
18
21
  type: Component,
19
22
  args: [{ selector: 'bs-breadcrumb-item', changeDetection: ChangeDetectionStrategy.OnPush, host: {
20
23
  '[class.breadcrumb-item]': 'true',
21
- }, template: "<!-- <li class=\"breadcrumb-item\"> -->\n <ng-content></ng-content>\n<!-- </li> -->" }]
22
- }] });
24
+ '[class.active]': 'active()',
25
+ 'role': 'listitem',
26
+ '[attr.aria-current]': 'active() ? "page" : null',
27
+ }, template: "<ng-content></ng-content>\n" }]
28
+ }], propDecorators: { active: [{ type: i0.Input, args: [{ isSignal: true, alias: "active", required: false }] }] } });
23
29
 
24
30
  /**
25
31
  * Generated bundle index. Do not edit.
@@ -1 +1 @@
1
- {"version":3,"file":"mintplayer-ng-bootstrap-breadcrumb.mjs","sources":["../../../../libs/mintplayer-ng-bootstrap/breadcrumb/src/breadcrumb/breadcrumb.component.ts","../../../../libs/mintplayer-ng-bootstrap/breadcrumb/src/breadcrumb/breadcrumb.component.html","../../../../libs/mintplayer-ng-bootstrap/breadcrumb/src/breadcrumb-item/breadcrumb-item.component.ts","../../../../libs/mintplayer-ng-bootstrap/breadcrumb/src/breadcrumb-item/breadcrumb-item.component.html","../../../../libs/mintplayer-ng-bootstrap/breadcrumb/mintplayer-ng-bootstrap-breadcrumb.ts"],"sourcesContent":["import { Component, ChangeDetectionStrategy} from '@angular/core';\n\n@Component({\n selector: 'bs-breadcrumb',\n templateUrl: './breadcrumb.component.html',\n styleUrls: ['./breadcrumb.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BsBreadcrumbComponent {}\n","<nav aria-label=\"breadcrumb\">\n <ol class=\"breadcrumb\">\n <ng-content></ng-content>\n </ol>\n</nav>","import { Component, ChangeDetectionStrategy} from '@angular/core';\n\n@Component({\n selector: 'bs-breadcrumb-item',\n templateUrl: './breadcrumb-item.component.html',\n styleUrls: ['./breadcrumb-item.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.breadcrumb-item]': 'true',\n },\n})\nexport class BsBreadcrumbItemComponent {\n}\n","<!-- <li class=\"breadcrumb-item\"> -->\n <ng-content></ng-content>\n<!-- </li> -->","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;MAQa,qBAAqB,CAAA;+GAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,yECRlC,sHAIM,EAAA,MAAA,EAAA,CAAA,w/BAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FDIO,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;+BACE,eAAe,EAAA,eAAA,EAGR,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,sHAAA,EAAA,MAAA,EAAA,CAAA,w/BAAA,CAAA,EAAA;;;MEKpC,yBAAyB,CAAA;+GAAzB,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,yICXtC,wFAEc,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FDSD,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBATrC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,EAAA,eAAA,EAGb,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,yBAAyB,EAAE,MAAM;AAClC,qBAAA,EAAA,QAAA,EAAA,wFAAA,EAAA;;;AETH;;AAEG;;;;"}
1
+ {"version":3,"file":"mintplayer-ng-bootstrap-breadcrumb.mjs","sources":["../../../../libs/mintplayer-ng-bootstrap/breadcrumb/src/breadcrumb/breadcrumb.component.ts","../../../../libs/mintplayer-ng-bootstrap/breadcrumb/src/breadcrumb/breadcrumb.component.html","../../../../libs/mintplayer-ng-bootstrap/breadcrumb/src/breadcrumb-item/breadcrumb-item.component.ts","../../../../libs/mintplayer-ng-bootstrap/breadcrumb/src/breadcrumb-item/breadcrumb-item.component.html","../../../../libs/mintplayer-ng-bootstrap/breadcrumb/mintplayer-ng-bootstrap-breadcrumb.ts"],"sourcesContent":["import { Component, ChangeDetectionStrategy} from '@angular/core';\n\n@Component({\n selector: 'bs-breadcrumb',\n templateUrl: './breadcrumb.component.html',\n styleUrls: ['./breadcrumb.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BsBreadcrumbComponent {}\n","<nav aria-label=\"breadcrumb\">\n <ol class=\"breadcrumb\">\n <ng-content></ng-content>\n </ol>\n</nav>","import { Component, ChangeDetectionStrategy, input } from '@angular/core';\n\n@Component({\n selector: 'bs-breadcrumb-item',\n templateUrl: './breadcrumb-item.component.html',\n styleUrls: ['./breadcrumb-item.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.breadcrumb-item]': 'true',\n '[class.active]': 'active()',\n 'role': 'listitem',\n '[attr.aria-current]': 'active() ? \"page\" : null',\n },\n})\nexport class BsBreadcrumbItemComponent {\n readonly active = input(false);\n}\n","<ng-content></ng-content>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;MAQa,qBAAqB,CAAA;+GAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,yECRlC,sHAIM,EAAA,MAAA,EAAA,CAAA,w/BAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FDIO,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;+BACE,eAAe,EAAA,eAAA,EAGR,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,sHAAA,EAAA,MAAA,EAAA,CAAA,w/BAAA,CAAA,EAAA;;;MEQpC,yBAAyB,CAAA;AAZtC,IAAA,WAAA,GAAA;AAaW,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAC,KAAK,6EAAC;AAC/B,IAAA;+GAFY,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,mYCdtC,6BACA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FDaa,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAZrC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,EAAA,eAAA,EAGb,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,yBAAyB,EAAE,MAAM;AACjC,wBAAA,gBAAgB,EAAE,UAAU;AAC5B,wBAAA,MAAM,EAAE,UAAU;AAClB,wBAAA,qBAAqB,EAAE,0BAA0B;AAClD,qBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA;;;AEZH;;AAEG;;;;"}
@@ -1,14 +1,17 @@
1
1
  import * as i0 from '@angular/core';
2
- import { ChangeDetectionStrategy, Component } from '@angular/core';
2
+ import { input, ChangeDetectionStrategy, Component } from '@angular/core';
3
3
 
4
4
  class BsButtonGroupComponent {
5
+ constructor() {
6
+ this.ariaLabel = input(null, ...(ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []));
7
+ }
5
8
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: BsButtonGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.11", type: BsButtonGroupComponent, isStandalone: true, selector: "bs-button-group", ngImport: i0, template: "<div class=\"btn-group\" role=\"group\" aria-label=\"Basic example\">\n <ng-content></ng-content>\n</div>", styles: [":host ::ng-deep .btn-group,:host ::ng-deep .btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}:host ::ng-deep .btn-group>.btn,:host ::ng-deep .btn-group-vertical>.btn{position:relative;flex:1 1 auto}:host ::ng-deep .btn-group>.btn-check:checked+.btn,:host ::ng-deep .btn-group>.btn-check:focus+.btn,:host ::ng-deep .btn-group>.btn:hover,:host ::ng-deep .btn-group>.btn:focus,:host ::ng-deep .btn-group>.btn:active,:host ::ng-deep .btn-group>.btn.active,:host ::ng-deep .btn-group-vertical>.btn-check:checked+.btn,:host ::ng-deep .btn-group-vertical>.btn-check:focus+.btn,:host ::ng-deep .btn-group-vertical>.btn:hover,:host ::ng-deep .btn-group-vertical>.btn:focus,:host ::ng-deep .btn-group-vertical>.btn:active,:host ::ng-deep .btn-group-vertical>.btn.active{z-index:1}:host ::ng-deep .btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}:host ::ng-deep .btn-toolbar .input-group{width:auto}:host ::ng-deep .btn-group{border-radius:var(--bs-border-radius)}:host ::ng-deep .btn-group>:not(.btn-check:first-child)+.btn,:host ::ng-deep .btn-group>.btn-group:not(:first-child){margin-left:calc(-1 * var(--bs-border-width))}:host ::ng-deep .btn-group>.btn:not(:last-child):not(.dropdown-toggle),:host ::ng-deep .btn-group>.btn.dropdown-toggle-split:first-child,:host ::ng-deep .btn-group>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}:host ::ng-deep .btn-group>.btn:nth-child(n+3),:host ::ng-deep .btn-group>:not(.btn-check)+.btn,:host ::ng-deep .btn-group>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}:host ::ng-deep .dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}:host ::ng-deep .dropdown-toggle-split:after,.dropup :host ::ng-deep .dropdown-toggle-split:after,.dropend :host ::ng-deep .dropdown-toggle-split:after{margin-left:0}.dropstart :host ::ng-deep .dropdown-toggle-split:before{margin-right:0}:host ::ng-deep .btn-sm+.dropdown-toggle-split,:host ::ng-deep .btn-group-sm>.btn+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}:host ::ng-deep .btn-lg+.dropdown-toggle-split,:host ::ng-deep .btn-group-lg>.btn+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}:host ::ng-deep .btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}:host ::ng-deep .btn-group-vertical>.btn,:host ::ng-deep .btn-group-vertical>.btn-group{width:100%}:host ::ng-deep .btn-group-vertical>.btn:not(:first-child),:host ::ng-deep .btn-group-vertical>.btn-group:not(:first-child){margin-top:calc(-1 * var(--bs-border-width))}:host ::ng-deep .btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),:host ::ng-deep .btn-group-vertical>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-bottom-left-radius:0}:host ::ng-deep .btn-group-vertical>.btn:nth-child(n+3),:host ::ng-deep .btn-group-vertical>:not(.btn-check)+.btn,:host ::ng-deep .btn-group-vertical>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-top-right-radius:0}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
9
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.11", type: BsButtonGroupComponent, isStandalone: true, selector: "bs-button-group", inputs: { ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"btn-group\" role=\"group\" [attr.aria-label]=\"ariaLabel()\">\n <ng-content></ng-content>\n</div>\n", styles: [":host ::ng-deep .btn-group,:host ::ng-deep .btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}:host ::ng-deep .btn-group>.btn,:host ::ng-deep .btn-group-vertical>.btn{position:relative;flex:1 1 auto}:host ::ng-deep .btn-group>.btn-check:checked+.btn,:host ::ng-deep .btn-group>.btn-check:focus+.btn,:host ::ng-deep .btn-group>.btn:hover,:host ::ng-deep .btn-group>.btn:focus,:host ::ng-deep .btn-group>.btn:active,:host ::ng-deep .btn-group>.btn.active,:host ::ng-deep .btn-group-vertical>.btn-check:checked+.btn,:host ::ng-deep .btn-group-vertical>.btn-check:focus+.btn,:host ::ng-deep .btn-group-vertical>.btn:hover,:host ::ng-deep .btn-group-vertical>.btn:focus,:host ::ng-deep .btn-group-vertical>.btn:active,:host ::ng-deep .btn-group-vertical>.btn.active{z-index:1}:host ::ng-deep .btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}:host ::ng-deep .btn-toolbar .input-group{width:auto}:host ::ng-deep .btn-group{border-radius:var(--bs-border-radius)}:host ::ng-deep .btn-group>:not(.btn-check:first-child)+.btn,:host ::ng-deep .btn-group>.btn-group:not(:first-child){margin-left:calc(-1 * var(--bs-border-width))}:host ::ng-deep .btn-group>.btn:not(:last-child):not(.dropdown-toggle),:host ::ng-deep .btn-group>.btn.dropdown-toggle-split:first-child,:host ::ng-deep .btn-group>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}:host ::ng-deep .btn-group>.btn:nth-child(n+3),:host ::ng-deep .btn-group>:not(.btn-check)+.btn,:host ::ng-deep .btn-group>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}:host ::ng-deep .dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}:host ::ng-deep .dropdown-toggle-split:after,.dropup :host ::ng-deep .dropdown-toggle-split:after,.dropend :host ::ng-deep .dropdown-toggle-split:after{margin-left:0}.dropstart :host ::ng-deep .dropdown-toggle-split:before{margin-right:0}:host ::ng-deep .btn-sm+.dropdown-toggle-split,:host ::ng-deep .btn-group-sm>.btn+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}:host ::ng-deep .btn-lg+.dropdown-toggle-split,:host ::ng-deep .btn-group-lg>.btn+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}:host ::ng-deep .btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}:host ::ng-deep .btn-group-vertical>.btn,:host ::ng-deep .btn-group-vertical>.btn-group{width:100%}:host ::ng-deep .btn-group-vertical>.btn:not(:first-child),:host ::ng-deep .btn-group-vertical>.btn-group:not(:first-child){margin-top:calc(-1 * var(--bs-border-width))}:host ::ng-deep .btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),:host ::ng-deep .btn-group-vertical>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-bottom-left-radius:0}:host ::ng-deep .btn-group-vertical>.btn:nth-child(n+3),:host ::ng-deep .btn-group-vertical>:not(.btn-check)+.btn,:host ::ng-deep .btn-group-vertical>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-top-right-radius:0}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7
10
  }
8
11
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: BsButtonGroupComponent, decorators: [{
9
12
  type: Component,
10
- args: [{ selector: 'bs-button-group', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"btn-group\" role=\"group\" aria-label=\"Basic example\">\n <ng-content></ng-content>\n</div>", styles: [":host ::ng-deep .btn-group,:host ::ng-deep .btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}:host ::ng-deep .btn-group>.btn,:host ::ng-deep .btn-group-vertical>.btn{position:relative;flex:1 1 auto}:host ::ng-deep .btn-group>.btn-check:checked+.btn,:host ::ng-deep .btn-group>.btn-check:focus+.btn,:host ::ng-deep .btn-group>.btn:hover,:host ::ng-deep .btn-group>.btn:focus,:host ::ng-deep .btn-group>.btn:active,:host ::ng-deep .btn-group>.btn.active,:host ::ng-deep .btn-group-vertical>.btn-check:checked+.btn,:host ::ng-deep .btn-group-vertical>.btn-check:focus+.btn,:host ::ng-deep .btn-group-vertical>.btn:hover,:host ::ng-deep .btn-group-vertical>.btn:focus,:host ::ng-deep .btn-group-vertical>.btn:active,:host ::ng-deep .btn-group-vertical>.btn.active{z-index:1}:host ::ng-deep .btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}:host ::ng-deep .btn-toolbar .input-group{width:auto}:host ::ng-deep .btn-group{border-radius:var(--bs-border-radius)}:host ::ng-deep .btn-group>:not(.btn-check:first-child)+.btn,:host ::ng-deep .btn-group>.btn-group:not(:first-child){margin-left:calc(-1 * var(--bs-border-width))}:host ::ng-deep .btn-group>.btn:not(:last-child):not(.dropdown-toggle),:host ::ng-deep .btn-group>.btn.dropdown-toggle-split:first-child,:host ::ng-deep .btn-group>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}:host ::ng-deep .btn-group>.btn:nth-child(n+3),:host ::ng-deep .btn-group>:not(.btn-check)+.btn,:host ::ng-deep .btn-group>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}:host ::ng-deep .dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}:host ::ng-deep .dropdown-toggle-split:after,.dropup :host ::ng-deep .dropdown-toggle-split:after,.dropend :host ::ng-deep .dropdown-toggle-split:after{margin-left:0}.dropstart :host ::ng-deep .dropdown-toggle-split:before{margin-right:0}:host ::ng-deep .btn-sm+.dropdown-toggle-split,:host ::ng-deep .btn-group-sm>.btn+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}:host ::ng-deep .btn-lg+.dropdown-toggle-split,:host ::ng-deep .btn-group-lg>.btn+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}:host ::ng-deep .btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}:host ::ng-deep .btn-group-vertical>.btn,:host ::ng-deep .btn-group-vertical>.btn-group{width:100%}:host ::ng-deep .btn-group-vertical>.btn:not(:first-child),:host ::ng-deep .btn-group-vertical>.btn-group:not(:first-child){margin-top:calc(-1 * var(--bs-border-width))}:host ::ng-deep .btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),:host ::ng-deep .btn-group-vertical>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-bottom-left-radius:0}:host ::ng-deep .btn-group-vertical>.btn:nth-child(n+3),:host ::ng-deep .btn-group-vertical>:not(.btn-check)+.btn,:host ::ng-deep .btn-group-vertical>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-top-right-radius:0}\n"] }]
11
- }] });
13
+ args: [{ selector: 'bs-button-group', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"btn-group\" role=\"group\" [attr.aria-label]=\"ariaLabel()\">\n <ng-content></ng-content>\n</div>\n", styles: [":host ::ng-deep .btn-group,:host ::ng-deep .btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}:host ::ng-deep .btn-group>.btn,:host ::ng-deep .btn-group-vertical>.btn{position:relative;flex:1 1 auto}:host ::ng-deep .btn-group>.btn-check:checked+.btn,:host ::ng-deep .btn-group>.btn-check:focus+.btn,:host ::ng-deep .btn-group>.btn:hover,:host ::ng-deep .btn-group>.btn:focus,:host ::ng-deep .btn-group>.btn:active,:host ::ng-deep .btn-group>.btn.active,:host ::ng-deep .btn-group-vertical>.btn-check:checked+.btn,:host ::ng-deep .btn-group-vertical>.btn-check:focus+.btn,:host ::ng-deep .btn-group-vertical>.btn:hover,:host ::ng-deep .btn-group-vertical>.btn:focus,:host ::ng-deep .btn-group-vertical>.btn:active,:host ::ng-deep .btn-group-vertical>.btn.active{z-index:1}:host ::ng-deep .btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}:host ::ng-deep .btn-toolbar .input-group{width:auto}:host ::ng-deep .btn-group{border-radius:var(--bs-border-radius)}:host ::ng-deep .btn-group>:not(.btn-check:first-child)+.btn,:host ::ng-deep .btn-group>.btn-group:not(:first-child){margin-left:calc(-1 * var(--bs-border-width))}:host ::ng-deep .btn-group>.btn:not(:last-child):not(.dropdown-toggle),:host ::ng-deep .btn-group>.btn.dropdown-toggle-split:first-child,:host ::ng-deep .btn-group>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}:host ::ng-deep .btn-group>.btn:nth-child(n+3),:host ::ng-deep .btn-group>:not(.btn-check)+.btn,:host ::ng-deep .btn-group>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}:host ::ng-deep .dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}:host ::ng-deep .dropdown-toggle-split:after,.dropup :host ::ng-deep .dropdown-toggle-split:after,.dropend :host ::ng-deep .dropdown-toggle-split:after{margin-left:0}.dropstart :host ::ng-deep .dropdown-toggle-split:before{margin-right:0}:host ::ng-deep .btn-sm+.dropdown-toggle-split,:host ::ng-deep .btn-group-sm>.btn+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}:host ::ng-deep .btn-lg+.dropdown-toggle-split,:host ::ng-deep .btn-group-lg>.btn+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}:host ::ng-deep .btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}:host ::ng-deep .btn-group-vertical>.btn,:host ::ng-deep .btn-group-vertical>.btn-group{width:100%}:host ::ng-deep .btn-group-vertical>.btn:not(:first-child),:host ::ng-deep .btn-group-vertical>.btn-group:not(:first-child){margin-top:calc(-1 * var(--bs-border-width))}:host ::ng-deep .btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),:host ::ng-deep .btn-group-vertical>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-bottom-left-radius:0}:host ::ng-deep .btn-group-vertical>.btn:nth-child(n+3),:host ::ng-deep .btn-group-vertical>:not(.btn-check)+.btn,:host ::ng-deep .btn-group-vertical>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-top-right-radius:0}\n"] }]
14
+ }], propDecorators: { ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }] } });
12
15
 
13
16
  /**
14
17
  * Generated bundle index. Do not edit.
@@ -1 +1 @@
1
- {"version":3,"file":"mintplayer-ng-bootstrap-button-group.mjs","sources":["../../../../libs/mintplayer-ng-bootstrap/button-group/src/button-group/button-group.component.ts","../../../../libs/mintplayer-ng-bootstrap/button-group/src/button-group/button-group.component.html","../../../../libs/mintplayer-ng-bootstrap/button-group/mintplayer-ng-bootstrap-button-group.ts"],"sourcesContent":["import { Component, ChangeDetectionStrategy} from '@angular/core';\n\n@Component({\n selector: 'bs-button-group',\n templateUrl: './button-group.component.html',\n styleUrls: ['./button-group.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BsButtonGroupComponent {}\n","<div class=\"btn-group\" role=\"group\" aria-label=\"Basic example\">\n <ng-content></ng-content>\n</div>","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;MAQa,sBAAsB,CAAA;+GAAtB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,2ECRnC,8GAEM,EAAA,MAAA,EAAA,CAAA,o/FAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FDMO,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBANlC,SAAS;+BACE,iBAAiB,EAAA,eAAA,EAGV,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,8GAAA,EAAA,MAAA,EAAA,CAAA,o/FAAA,CAAA,EAAA;;;AENjD;;AAEG;;;;"}
1
+ {"version":3,"file":"mintplayer-ng-bootstrap-button-group.mjs","sources":["../../../../libs/mintplayer-ng-bootstrap/button-group/src/button-group/button-group.component.ts","../../../../libs/mintplayer-ng-bootstrap/button-group/src/button-group/button-group.component.html","../../../../libs/mintplayer-ng-bootstrap/button-group/mintplayer-ng-bootstrap-button-group.ts"],"sourcesContent":["import { Component, ChangeDetectionStrategy, input } from '@angular/core';\n\n@Component({\n selector: 'bs-button-group',\n templateUrl: './button-group.component.html',\n styleUrls: ['./button-group.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BsButtonGroupComponent {\n ariaLabel = input<string | null>(null);\n}\n","<div class=\"btn-group\" role=\"group\" [attr.aria-label]=\"ariaLabel()\">\n <ng-content></ng-content>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;MAQa,sBAAsB,CAAA;AANnC,IAAA,WAAA,GAAA;AAOE,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAgB,IAAI,gFAAC;AACvC,IAAA;+GAFY,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,2NCRnC,qHAGA,EAAA,MAAA,EAAA,CAAA,o/FAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FDKa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBANlC,SAAS;+BACE,iBAAiB,EAAA,eAAA,EAGV,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,qHAAA,EAAA,MAAA,EAAA,CAAA,o/FAAA,CAAA,EAAA;;;AENjD;;AAEG;;;;"}
@@ -1,6 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
- import { inject, signal, model, input, computed, ChangeDetectionStrategy, Component } from '@angular/core';
2
+ import { inject, ElementRef, Injector, signal, model, input, computed, afterNextRender, ChangeDetectionStrategy, Component } from '@angular/core';
3
3
  import { BsCalendarMonthService, BsMonthNamePipe } from '@mintplayer/ng-bootstrap/calendar-month';
4
+ import { BsIdService } from '@mintplayer/ng-bootstrap/a11y';
4
5
  import { DomSanitizer } from '@angular/platform-browser';
5
6
  import { BsUcFirstPipe } from '@mintplayer/ng-bootstrap/uc-first';
6
7
 
@@ -9,11 +10,26 @@ class BsCalendarComponent {
9
10
  constructor() {
10
11
  this.sanitizer = inject(DomSanitizer);
11
12
  this.calendarMonthService = inject(BsCalendarMonthService);
13
+ this.elementRef = inject(ElementRef);
14
+ this.idService = inject(BsIdService);
15
+ this.injector = inject(Injector);
12
16
  this.chevronLeft = signal(undefined, ...(ngDevMode ? [{ debugName: "chevronLeft" }] : /* istanbul ignore next */ []));
13
17
  this.chevronRight = signal(undefined, ...(ngDevMode ? [{ debugName: "chevronRight" }] : /* istanbul ignore next */ []));
14
18
  this.currentMonth = model(new Date(), ...(ngDevMode ? [{ debugName: "currentMonth" }] : /* istanbul ignore next */ []));
15
19
  this.selectedDate = model(new Date(), ...(ngDevMode ? [{ debugName: "selectedDate" }] : /* istanbul ignore next */ []));
16
20
  this.disableDateFn = input(undefined, ...(ngDevMode ? [{ debugName: "disableDateFn" }] : /* istanbul ignore next */ []));
21
+ /**
22
+ * The date that owns the grid's single tab stop (roving tabindex). Defaults
23
+ * to selectedDate when it lands inside currentMonth, then today, then the
24
+ * first enabled day of the month — matching APG Date Picker Dialog
25
+ * convention. Set imperatively by the keymap; re-focused after Angular
26
+ * re-renders via afterNextRender.
27
+ */
28
+ this.focusedDate = signal(null, ...(ngDevMode ? [{ debugName: "focusedDate" }] : /* istanbul ignore next */ []));
29
+ /** Whether to push focus to the focused cell after the next render. */
30
+ this.pendingFocusMove = false;
31
+ /** Stable id for the month-title cell, used by the grid's aria-labelledby. */
32
+ this.monthLabelId = this.idService.next('bs-calendar-month');
17
33
  this.weeks = computed(() => this.calendarMonthService.getWeeks(this.currentMonth()), ...(ngDevMode ? [{ debugName: "weeks" }] : /* istanbul ignore next */ []));
18
34
  this.shownDays = computed(() => {
19
35
  const weeks = this.weeks();
@@ -34,6 +50,36 @@ class BsCalendarComponent {
34
50
  return [];
35
51
  }
36
52
  }, ...(ngDevMode ? [{ debugName: "shownDays" }] : /* istanbul ignore next */ []));
53
+ /**
54
+ * Compute the cell that should carry tabindex="0". One per month — the
55
+ * focused-date if it's inside this month, else the selected date, else
56
+ * today, else the first enabled day. Mirrors APG Date Picker convention.
57
+ */
58
+ this.focusableDate = computed(() => {
59
+ const month = this.currentMonth();
60
+ const inMonth = (d) => d.getFullYear() === month.getFullYear() && d.getMonth() === month.getMonth();
61
+ const candidate = (d) => (d && inMonth(d) ? d : null);
62
+ const focused = candidate(this.focusedDate());
63
+ if (focused)
64
+ return focused;
65
+ const selected = candidate(this.selectedDate());
66
+ if (selected)
67
+ return selected;
68
+ const today = new Date();
69
+ const todayInMonth = candidate(today);
70
+ if (todayInMonth)
71
+ return todayInMonth;
72
+ // Fall back to first enabled day of the month.
73
+ const disableFn = this.disableDateFn();
74
+ for (const week of this.weeks()) {
75
+ for (const day of week.days) {
76
+ if (day && day.isInMonth && (!disableFn || !disableFn(day.date))) {
77
+ return day.date;
78
+ }
79
+ }
80
+ }
81
+ return null;
82
+ }, ...(ngDevMode ? [{ debugName: "focusableDate" }] : /* istanbul ignore next */ []));
37
83
  import('bootstrap-icons/icons/chevron-left.svg').then((icon) => {
38
84
  this.chevronLeft.set(this.sanitizer.bypassSecurityTrustHtml(icon.default));
39
85
  });
@@ -41,6 +87,14 @@ class BsCalendarComponent {
41
87
  this.chevronRight.set(this.sanitizer.bypassSecurityTrustHtml(icon.default));
42
88
  });
43
89
  }
90
+ /** Stable id-per-cell so afterNextRender focus restoration can find the new cell. */
91
+ cellId(date) {
92
+ return `${this.monthLabelId}-cell-${date.getFullYear()}-${date.getMonth()}-${date.getDate()}`;
93
+ }
94
+ isToday(date) {
95
+ const now = new Date();
96
+ return this.isSameDate(date, now);
97
+ }
44
98
  previousMonth() {
45
99
  const month = this.currentMonth();
46
100
  this.currentMonth.set(new Date(month.getFullYear(), month.getMonth() - 1, 1));
@@ -64,14 +118,88 @@ class BsCalendarComponent {
64
118
  const disableFn = this.disableDateFn();
65
119
  if (day && day.isInMonth && (!disableFn || !disableFn(day.date))) {
66
120
  this.selectedDate.set(day.date);
121
+ this.focusedDate.set(day.date);
122
+ }
123
+ }
124
+ /**
125
+ * APG Date Picker keymap. Tab into the grid lands on the focusableDate
126
+ * cell; arrow keys then navigate days/weeks; PageUp/Down change month;
127
+ * Ctrl+PageUp/Down change year; Home/End jump to week edges; Enter/Space
128
+ * selects.
129
+ */
130
+ onCellKeyDown(event, day) {
131
+ if (!day || !day.isInMonth)
132
+ return;
133
+ const isNav = event.key === 'ArrowLeft' || event.key === 'ArrowRight' ||
134
+ event.key === 'ArrowUp' || event.key === 'ArrowDown' ||
135
+ event.key === 'Home' || event.key === 'End' ||
136
+ event.key === 'PageUp' || event.key === 'PageDown';
137
+ const isSelect = event.key === 'Enter' || event.key === ' ';
138
+ if (!isNav && !isSelect)
139
+ return;
140
+ event.preventDefault();
141
+ if (isSelect) {
142
+ this.goto(day);
143
+ return;
144
+ }
145
+ const current = day.date;
146
+ let target = new Date(current);
147
+ switch (event.key) {
148
+ case 'ArrowLeft':
149
+ target.setDate(current.getDate() - 1);
150
+ break;
151
+ case 'ArrowRight':
152
+ target.setDate(current.getDate() + 1);
153
+ break;
154
+ case 'ArrowUp':
155
+ target.setDate(current.getDate() - 7);
156
+ break;
157
+ case 'ArrowDown':
158
+ target.setDate(current.getDate() + 7);
159
+ break;
160
+ case 'Home':
161
+ target.setDate(current.getDate() - current.getDay());
162
+ break;
163
+ case 'End':
164
+ target.setDate(current.getDate() + (6 - current.getDay()));
165
+ break;
166
+ case 'PageUp':
167
+ target = event.ctrlKey
168
+ ? new Date(current.getFullYear() - 1, current.getMonth(), current.getDate())
169
+ : new Date(current.getFullYear(), current.getMonth() - 1, current.getDate());
170
+ break;
171
+ case 'PageDown':
172
+ target = event.ctrlKey
173
+ ? new Date(current.getFullYear() + 1, current.getMonth(), current.getDate())
174
+ : new Date(current.getFullYear(), current.getMonth() + 1, current.getDate());
175
+ break;
176
+ }
177
+ this.moveFocusTo(target);
178
+ }
179
+ moveFocusTo(target) {
180
+ const month = this.currentMonth();
181
+ const sameMonth = target.getFullYear() === month.getFullYear() && target.getMonth() === month.getMonth();
182
+ if (!sameMonth) {
183
+ // Switch month; the cell will be in the next render.
184
+ this.currentMonth.set(new Date(target.getFullYear(), target.getMonth(), 1));
67
185
  }
186
+ this.focusedDate.set(target);
187
+ this.pendingFocusMove = true;
188
+ afterNextRender(() => {
189
+ if (!this.pendingFocusMove)
190
+ return;
191
+ this.pendingFocusMove = false;
192
+ const id = this.cellId(target);
193
+ const cell = this.elementRef.nativeElement.querySelector(`[id="${id}"]`);
194
+ cell?.focus();
195
+ }, { injector: this.injector });
68
196
  }
69
197
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: BsCalendarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
70
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.11", type: BsCalendarComponent, isStandalone: true, selector: "bs-calendar", inputs: { currentMonth: { classPropertyName: "currentMonth", publicName: "currentMonth", isSignal: true, isRequired: false, transformFunction: null }, selectedDate: { classPropertyName: "selectedDate", publicName: "selectedDate", isSignal: true, isRequired: false, transformFunction: null }, disableDateFn: { classPropertyName: "disableDateFn", publicName: "disableDateFn", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { currentMonth: "currentMonthChange", selectedDate: "selectedDateChange" }, ngImport: i0, template: "<table class=\"table w-auto mb-0\">\n <tr>\n <td>\n <button type=\"button\" class=\"btn btn-default\" (click)=\"previousMonth()\">\n <span [innerHTML]=\"chevronLeft()\" class=\"fw-bolder\"></span>\n </button>\n </td>\n <td colspan=\"6\" class=\"fw-bolder\">\n {{ currentMonth() | monthName | bsUcFirst }}\n {{ currentMonth().getFullYear() }}\n </td>\n <td>\n <button type=\"button\" class=\"btn btn-default border-bottom-0\" (click)=\"nextMonth()\">\n <span [innerHTML]=\"chevronRight()\" class=\"fw-bolder\"></span>\n </button>\n </td>\n </tr>\n <tr>\n <th></th>\n @for (dayOfWeek of shownDays(); track dayOfWeek.long) {\n <th [title]=\"dayOfWeek.long\">\n {{ dayOfWeek.short }}\n </th>\n }\n </tr>\n @for (week of weeks(); track week.number) {\n <tr>\n <th>\n {{ week.number }}\n </th>\n @for (day of week.days; track day?.date) {\n @let showSpan = (day !== null) && day.isInMonth;\n @let disableFn = disableDateFn();\n @let disabled = disableFn && day && disableFn(day.date);\n <td [class.selected]=\"day === null ? false : !day.isInMonth ? false : isSameDate(selectedDate(), day.date)\" [class.cursor-pointer]=\"showSpan && !disabled\" (click)=\"goto(day)\">\n @if (showSpan) {\n <span [class.text-muted]=\"disabled\">{{ day.dayOfMonth }}</span>\n }\n </td>\n }\n </tr>\n }\n</table>\n", styles: [".text-muted{color:#9ea7af!important}table{border-collapse:collapse;border:1px solid var(--bs-border-color);background:#fff}table td,table th{width:40px;height:40px;text-align:center;cursor:default}table td span,table th span{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 var(--bs-border-color)}table tr:nth-of-type(2)>th:not(:nth-of-type(1)){border-bottom:1px solid var(--bs-border-color)}table tr:not(:nth-of-type(2))>th:nth-of-type(1){border-right:1px solid var(--bs-border-color)}\n"], dependencies: [{ kind: "pipe", type: BsUcFirstPipe, name: "bsUcFirst" }, { kind: "pipe", type: BsMonthNamePipe, name: "monthName" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
198
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.11", type: BsCalendarComponent, isStandalone: true, selector: "bs-calendar", inputs: { currentMonth: { classPropertyName: "currentMonth", publicName: "currentMonth", isSignal: true, isRequired: false, transformFunction: null }, selectedDate: { classPropertyName: "selectedDate", publicName: "selectedDate", isSignal: true, isRequired: false, transformFunction: null }, disableDateFn: { classPropertyName: "disableDateFn", publicName: "disableDateFn", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { currentMonth: "currentMonthChange", selectedDate: "selectedDateChange" }, ngImport: i0, template: "<table class=\"table w-auto mb-0\" role=\"grid\" [attr.aria-labelledby]=\"monthLabelId\">\n <tr>\n <td>\n <button type=\"button\" class=\"btn btn-light\" (click)=\"previousMonth()\" aria-label=\"Previous month\">\n <span [innerHTML]=\"chevronLeft()\" class=\"fw-bolder\" aria-hidden=\"true\"></span>\n </button>\n </td>\n <td colspan=\"6\" [id]=\"monthLabelId\" class=\"fw-bolder\" aria-live=\"polite\">\n {{ currentMonth() | monthName | bsUcFirst }}\n {{ currentMonth().getFullYear() }}\n </td>\n <td>\n <button type=\"button\" class=\"btn btn-light\" (click)=\"nextMonth()\" aria-label=\"Next month\">\n <span [innerHTML]=\"chevronRight()\" class=\"fw-bolder\" aria-hidden=\"true\"></span>\n </button>\n </td>\n </tr>\n <tr role=\"row\">\n <th aria-hidden=\"true\"></th>\n @for (dayOfWeek of shownDays(); track dayOfWeek.long) {\n <th scope=\"col\" role=\"columnheader\" [title]=\"dayOfWeek.long\">\n {{ dayOfWeek.short }}\n </th>\n }\n </tr>\n @for (week of weeks(); track week.number) {\n <tr role=\"row\">\n <th scope=\"row\" role=\"rowheader\">\n {{ week.number }}\n </th>\n @for (day of week.days; track day?.date) {\n @let showSpan = (day !== null) && day.isInMonth;\n @let disableFn = disableDateFn();\n @let disabled = disableFn && day && disableFn(day.date);\n @let selected = (day !== null) && day.isInMonth && isSameDate(selectedDate(), day.date);\n @let todayCell = (day !== null) && day.isInMonth && isToday(day.date);\n @let isFocusable = (day !== null) && day.isInMonth && isSameDate(focusableDate(), day.date);\n <td role=\"gridcell\"\n [id]=\"day && day.isInMonth ? cellId(day.date) : null\"\n [attr.tabindex]=\"showSpan ? (isFocusable ? 0 : -1) : null\"\n [class.selected]=\"selected\"\n [class.cursor-pointer]=\"showSpan && !disabled\"\n [attr.aria-selected]=\"showSpan ? (selected ? 'true' : 'false') : null\"\n [attr.aria-current]=\"todayCell ? 'date' : null\"\n [attr.aria-disabled]=\"disabled ? 'true' : null\"\n (click)=\"goto(day)\"\n (keydown)=\"onCellKeyDown($event, day)\">\n @if (showSpan) {\n <span [class.text-muted]=\"disabled\">{{ day.dayOfMonth }}</span>\n }\n </td>\n }\n </tr>\n }\n</table>\n", styles: [".text-muted{color:#9ea7af!important}table{border-collapse:collapse;border:1px solid var(--bs-border-color);background:#fff}table td,table th{width:40px;height:40px;text-align:center;cursor:default}table td span,table th span{white-space:nowrap}table td.selected{background-color:#0d6efd;color:#fff}table td:focus{outline:none}table td:focus-visible{outline:2px solid #0d6efd;outline-offset:-2px}table th{background-color:#f8f9fa}table tr{border-top:none}table tr:first-child>td{border-bottom:1px solid var(--bs-border-color)}table tr:nth-of-type(2)>th:not(:nth-of-type(1)){border-bottom:1px solid var(--bs-border-color)}table tr:not(:nth-of-type(2))>th:nth-of-type(1){border-right:1px solid var(--bs-border-color)}\n"], dependencies: [{ kind: "pipe", type: BsUcFirstPipe, name: "bsUcFirst" }, { kind: "pipe", type: BsMonthNamePipe, name: "monthName" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
71
199
  }
72
200
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: BsCalendarComponent, decorators: [{
73
201
  type: Component,
74
- args: [{ selector: 'bs-calendar', imports: [BsUcFirstPipe, BsMonthNamePipe], changeDetection: ChangeDetectionStrategy.OnPush, template: "<table class=\"table w-auto mb-0\">\n <tr>\n <td>\n <button type=\"button\" class=\"btn btn-default\" (click)=\"previousMonth()\">\n <span [innerHTML]=\"chevronLeft()\" class=\"fw-bolder\"></span>\n </button>\n </td>\n <td colspan=\"6\" class=\"fw-bolder\">\n {{ currentMonth() | monthName | bsUcFirst }}\n {{ currentMonth().getFullYear() }}\n </td>\n <td>\n <button type=\"button\" class=\"btn btn-default border-bottom-0\" (click)=\"nextMonth()\">\n <span [innerHTML]=\"chevronRight()\" class=\"fw-bolder\"></span>\n </button>\n </td>\n </tr>\n <tr>\n <th></th>\n @for (dayOfWeek of shownDays(); track dayOfWeek.long) {\n <th [title]=\"dayOfWeek.long\">\n {{ dayOfWeek.short }}\n </th>\n }\n </tr>\n @for (week of weeks(); track week.number) {\n <tr>\n <th>\n {{ week.number }}\n </th>\n @for (day of week.days; track day?.date) {\n @let showSpan = (day !== null) && day.isInMonth;\n @let disableFn = disableDateFn();\n @let disabled = disableFn && day && disableFn(day.date);\n <td [class.selected]=\"day === null ? false : !day.isInMonth ? false : isSameDate(selectedDate(), day.date)\" [class.cursor-pointer]=\"showSpan && !disabled\" (click)=\"goto(day)\">\n @if (showSpan) {\n <span [class.text-muted]=\"disabled\">{{ day.dayOfMonth }}</span>\n }\n </td>\n }\n </tr>\n }\n</table>\n", styles: [".text-muted{color:#9ea7af!important}table{border-collapse:collapse;border:1px solid var(--bs-border-color);background:#fff}table td,table th{width:40px;height:40px;text-align:center;cursor:default}table td span,table th span{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 var(--bs-border-color)}table tr:nth-of-type(2)>th:not(:nth-of-type(1)){border-bottom:1px solid var(--bs-border-color)}table tr:not(:nth-of-type(2))>th:nth-of-type(1){border-right:1px solid var(--bs-border-color)}\n"] }]
202
+ args: [{ selector: 'bs-calendar', imports: [BsUcFirstPipe, BsMonthNamePipe], changeDetection: ChangeDetectionStrategy.OnPush, template: "<table class=\"table w-auto mb-0\" role=\"grid\" [attr.aria-labelledby]=\"monthLabelId\">\n <tr>\n <td>\n <button type=\"button\" class=\"btn btn-light\" (click)=\"previousMonth()\" aria-label=\"Previous month\">\n <span [innerHTML]=\"chevronLeft()\" class=\"fw-bolder\" aria-hidden=\"true\"></span>\n </button>\n </td>\n <td colspan=\"6\" [id]=\"monthLabelId\" class=\"fw-bolder\" aria-live=\"polite\">\n {{ currentMonth() | monthName | bsUcFirst }}\n {{ currentMonth().getFullYear() }}\n </td>\n <td>\n <button type=\"button\" class=\"btn btn-light\" (click)=\"nextMonth()\" aria-label=\"Next month\">\n <span [innerHTML]=\"chevronRight()\" class=\"fw-bolder\" aria-hidden=\"true\"></span>\n </button>\n </td>\n </tr>\n <tr role=\"row\">\n <th aria-hidden=\"true\"></th>\n @for (dayOfWeek of shownDays(); track dayOfWeek.long) {\n <th scope=\"col\" role=\"columnheader\" [title]=\"dayOfWeek.long\">\n {{ dayOfWeek.short }}\n </th>\n }\n </tr>\n @for (week of weeks(); track week.number) {\n <tr role=\"row\">\n <th scope=\"row\" role=\"rowheader\">\n {{ week.number }}\n </th>\n @for (day of week.days; track day?.date) {\n @let showSpan = (day !== null) && day.isInMonth;\n @let disableFn = disableDateFn();\n @let disabled = disableFn && day && disableFn(day.date);\n @let selected = (day !== null) && day.isInMonth && isSameDate(selectedDate(), day.date);\n @let todayCell = (day !== null) && day.isInMonth && isToday(day.date);\n @let isFocusable = (day !== null) && day.isInMonth && isSameDate(focusableDate(), day.date);\n <td role=\"gridcell\"\n [id]=\"day && day.isInMonth ? cellId(day.date) : null\"\n [attr.tabindex]=\"showSpan ? (isFocusable ? 0 : -1) : null\"\n [class.selected]=\"selected\"\n [class.cursor-pointer]=\"showSpan && !disabled\"\n [attr.aria-selected]=\"showSpan ? (selected ? 'true' : 'false') : null\"\n [attr.aria-current]=\"todayCell ? 'date' : null\"\n [attr.aria-disabled]=\"disabled ? 'true' : null\"\n (click)=\"goto(day)\"\n (keydown)=\"onCellKeyDown($event, day)\">\n @if (showSpan) {\n <span [class.text-muted]=\"disabled\">{{ day.dayOfMonth }}</span>\n }\n </td>\n }\n </tr>\n }\n</table>\n", styles: [".text-muted{color:#9ea7af!important}table{border-collapse:collapse;border:1px solid var(--bs-border-color);background:#fff}table td,table th{width:40px;height:40px;text-align:center;cursor:default}table td span,table th span{white-space:nowrap}table td.selected{background-color:#0d6efd;color:#fff}table td:focus{outline:none}table td:focus-visible{outline:2px solid #0d6efd;outline-offset:-2px}table th{background-color:#f8f9fa}table tr{border-top:none}table tr:first-child>td{border-bottom:1px solid var(--bs-border-color)}table tr:nth-of-type(2)>th:not(:nth-of-type(1)){border-bottom:1px solid var(--bs-border-color)}table tr:not(:nth-of-type(2))>th:nth-of-type(1){border-right:1px solid var(--bs-border-color)}\n"] }]
75
203
  }], ctorParameters: () => [], propDecorators: { currentMonth: [{ type: i0.Input, args: [{ isSignal: true, alias: "currentMonth", required: false }] }, { type: i0.Output, args: ["currentMonthChange"] }], selectedDate: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedDate", required: false }] }, { type: i0.Output, args: ["selectedDateChange"] }], disableDateFn: [{ type: i0.Input, args: [{ isSignal: true, alias: "disableDateFn", required: false }] }] } });
76
204
 
77
205
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"mintplayer-ng-bootstrap-calendar.mjs","sources":["../../../../libs/mintplayer-ng-bootstrap/calendar/src/calendar.component.ts","../../../../libs/mintplayer-ng-bootstrap/calendar/src/calendar.component.html","../../../../libs/mintplayer-ng-bootstrap/calendar/mintplayer-ng-bootstrap-calendar.ts"],"sourcesContent":["/// <reference types=\"./types\" />\n\nimport { ChangeDetectionStrategy, Component, computed, inject, input, model, signal } from '@angular/core';\nimport { BsCalendarMonthService, BsMonthNamePipe, DateDayOfMonth, WeekDay } from '@mintplayer/ng-bootstrap/calendar-month';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { BsUcFirstPipe } from '@mintplayer/ng-bootstrap/uc-first';\n\n@Component({\n selector: 'bs-calendar',\n templateUrl: './calendar.component.html',\n styleUrls: ['./calendar.component.scss'],\n imports: [BsUcFirstPipe, BsMonthNamePipe],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BsCalendarComponent {\n private sanitizer = inject(DomSanitizer);\n private calendarMonthService = inject(BsCalendarMonthService);\n\n constructor() {\n import('bootstrap-icons/icons/chevron-left.svg').then((icon) => {\n this.chevronLeft.set(this.sanitizer.bypassSecurityTrustHtml(icon.default));\n });\n import('bootstrap-icons/icons/chevron-right.svg').then((icon) => {\n this.chevronRight.set(this.sanitizer.bypassSecurityTrustHtml(icon.default));\n });\n }\n\n chevronLeft = signal<SafeHtml | undefined>(undefined);\n chevronRight = signal<SafeHtml | undefined>(undefined);\n\n currentMonth = model<Date>(new Date());\n selectedDate = model<Date>(new Date());\n disableDateFn = input<((date: Date) => boolean) | undefined>(undefined);\n\n weeks = computed(() => this.calendarMonthService.getWeeks(this.currentMonth()));\n\n shownDays = computed<WeekDay[]>(() => {\n const weeks = this.weeks();\n if (weeks.length <= 1) return [];\n const days = weeks[1].days;\n const firstDay = days[0];\n if (firstDay) {\n return days.map((d) => {\n const date = new Date(\n firstDay.date.getFullYear(),\n firstDay.date.getMonth(),\n d?.dayOfMonth\n );\n return <WeekDay>{\n short: date.toLocaleString('default', { weekday: 'short' }),\n long: date.toLocaleString('default', { weekday: 'long' })\n };\n });\n } else {\n return [];\n }\n });\n\n previousMonth() {\n const month = this.currentMonth();\n this.currentMonth.set(new Date(month.getFullYear(), month.getMonth() - 1, 1));\n return false;\n }\n\n nextMonth() {\n const month = this.currentMonth();\n this.currentMonth.set(new Date(month.getFullYear(), month.getMonth() + 1, 1));\n return false;\n }\n\n isSameDate(date1: Date | null, date2: Date | null) {\n if (date1 === null && date2 === null) return true;\n if (date1 === null || date2 === null) return false;\n\n return (\n date1.getFullYear() === date2.getFullYear() &&\n date1.getMonth() === date2.getMonth() &&\n date1.getDate() === date2.getDate()\n );\n }\n\n goto(day: DateDayOfMonth | null) {\n const disableFn = this.disableDateFn();\n if (day && day.isInMonth && (!disableFn || !disableFn(day.date))) {\n this.selectedDate.set(day.date);\n }\n }\n}\n","<table class=\"table w-auto mb-0\">\n <tr>\n <td>\n <button type=\"button\" class=\"btn btn-default\" (click)=\"previousMonth()\">\n <span [innerHTML]=\"chevronLeft()\" class=\"fw-bolder\"></span>\n </button>\n </td>\n <td colspan=\"6\" class=\"fw-bolder\">\n {{ currentMonth() | monthName | bsUcFirst }}\n {{ currentMonth().getFullYear() }}\n </td>\n <td>\n <button type=\"button\" class=\"btn btn-default border-bottom-0\" (click)=\"nextMonth()\">\n <span [innerHTML]=\"chevronRight()\" class=\"fw-bolder\"></span>\n </button>\n </td>\n </tr>\n <tr>\n <th></th>\n @for (dayOfWeek of shownDays(); track dayOfWeek.long) {\n <th [title]=\"dayOfWeek.long\">\n {{ dayOfWeek.short }}\n </th>\n }\n </tr>\n @for (week of weeks(); track week.number) {\n <tr>\n <th>\n {{ week.number }}\n </th>\n @for (day of week.days; track day?.date) {\n @let showSpan = (day !== null) && day.isInMonth;\n @let disableFn = disableDateFn();\n @let disabled = disableFn && day && disableFn(day.date);\n <td [class.selected]=\"day === null ? false : !day.isInMonth ? false : isSameDate(selectedDate(), day.date)\" [class.cursor-pointer]=\"showSpan && !disabled\" (click)=\"goto(day)\">\n @if (showSpan) {\n <span [class.text-muted]=\"disabled\">{{ day.dayOfMonth }}</span>\n }\n </td>\n }\n </tr>\n }\n</table>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mintplayer-ng-bootstrap-calendar.mjs","sources":["../../../../libs/mintplayer-ng-bootstrap/calendar/src/calendar.component.ts","../../../../libs/mintplayer-ng-bootstrap/calendar/src/calendar.component.html","../../../../libs/mintplayer-ng-bootstrap/calendar/mintplayer-ng-bootstrap-calendar.ts"],"sourcesContent":["/// <reference types=\"./types\" />\n\nimport { afterNextRender, ChangeDetectionStrategy, Component, computed, ElementRef, inject, Injector, input, model, signal } from '@angular/core';\nimport { BsCalendarMonthService, BsMonthNamePipe, DateDayOfMonth, WeekDay } from '@mintplayer/ng-bootstrap/calendar-month';\nimport { BsIdService } from '@mintplayer/ng-bootstrap/a11y';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { BsUcFirstPipe } from '@mintplayer/ng-bootstrap/uc-first';\n\n@Component({\n selector: 'bs-calendar',\n templateUrl: './calendar.component.html',\n styleUrls: ['./calendar.component.scss'],\n imports: [BsUcFirstPipe, BsMonthNamePipe],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BsCalendarComponent {\n private sanitizer = inject(DomSanitizer);\n private calendarMonthService = inject(BsCalendarMonthService);\n private elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private idService = inject(BsIdService);\n private injector = inject(Injector);\n\n constructor() {\n import('bootstrap-icons/icons/chevron-left.svg').then((icon) => {\n this.chevronLeft.set(this.sanitizer.bypassSecurityTrustHtml(icon.default));\n });\n import('bootstrap-icons/icons/chevron-right.svg').then((icon) => {\n this.chevronRight.set(this.sanitizer.bypassSecurityTrustHtml(icon.default));\n });\n }\n\n chevronLeft = signal<SafeHtml | undefined>(undefined);\n chevronRight = signal<SafeHtml | undefined>(undefined);\n\n currentMonth = model<Date>(new Date());\n selectedDate = model<Date>(new Date());\n disableDateFn = input<((date: Date) => boolean) | undefined>(undefined);\n\n /**\n * The date that owns the grid's single tab stop (roving tabindex). Defaults\n * to selectedDate when it lands inside currentMonth, then today, then the\n * first enabled day of the month — matching APG Date Picker Dialog\n * convention. Set imperatively by the keymap; re-focused after Angular\n * re-renders via afterNextRender.\n */\n readonly focusedDate = signal<Date | null>(null);\n\n /** Whether to push focus to the focused cell after the next render. */\n private pendingFocusMove = false;\n\n /** Stable id for the month-title cell, used by the grid's aria-labelledby. */\n readonly monthLabelId = this.idService.next('bs-calendar-month');\n\n /** Stable id-per-cell so afterNextRender focus restoration can find the new cell. */\n cellId(date: Date): string {\n return `${this.monthLabelId}-cell-${date.getFullYear()}-${date.getMonth()}-${date.getDate()}`;\n }\n\n weeks = computed(() => this.calendarMonthService.getWeeks(this.currentMonth()));\n\n isToday(date: Date): boolean {\n const now = new Date();\n return this.isSameDate(date, now);\n }\n\n shownDays = computed<WeekDay[]>(() => {\n const weeks = this.weeks();\n if (weeks.length <= 1) return [];\n const days = weeks[1].days;\n const firstDay = days[0];\n if (firstDay) {\n return days.map((d) => {\n const date = new Date(\n firstDay.date.getFullYear(),\n firstDay.date.getMonth(),\n d?.dayOfMonth\n );\n return <WeekDay>{\n short: date.toLocaleString('default', { weekday: 'short' }),\n long: date.toLocaleString('default', { weekday: 'long' })\n };\n });\n } else {\n return [];\n }\n });\n\n previousMonth() {\n const month = this.currentMonth();\n this.currentMonth.set(new Date(month.getFullYear(), month.getMonth() - 1, 1));\n return false;\n }\n\n nextMonth() {\n const month = this.currentMonth();\n this.currentMonth.set(new Date(month.getFullYear(), month.getMonth() + 1, 1));\n return false;\n }\n\n isSameDate(date1: Date | null, date2: Date | null) {\n if (date1 === null && date2 === null) return true;\n if (date1 === null || date2 === null) return false;\n\n return (\n date1.getFullYear() === date2.getFullYear() &&\n date1.getMonth() === date2.getMonth() &&\n date1.getDate() === date2.getDate()\n );\n }\n\n goto(day: DateDayOfMonth | null) {\n const disableFn = this.disableDateFn();\n if (day && day.isInMonth && (!disableFn || !disableFn(day.date))) {\n this.selectedDate.set(day.date);\n this.focusedDate.set(day.date);\n }\n }\n\n /**\n * Compute the cell that should carry tabindex=\"0\". One per month — the\n * focused-date if it's inside this month, else the selected date, else\n * today, else the first enabled day. Mirrors APG Date Picker convention.\n */\n readonly focusableDate = computed(() => {\n const month = this.currentMonth();\n const inMonth = (d: Date) => d.getFullYear() === month.getFullYear() && d.getMonth() === month.getMonth();\n const candidate = (d: Date | null): Date | null => (d && inMonth(d) ? d : null);\n\n const focused = candidate(this.focusedDate());\n if (focused) return focused;\n\n const selected = candidate(this.selectedDate());\n if (selected) return selected;\n\n const today = new Date();\n const todayInMonth = candidate(today);\n if (todayInMonth) return todayInMonth;\n\n // Fall back to first enabled day of the month.\n const disableFn = this.disableDateFn();\n for (const week of this.weeks()) {\n for (const day of week.days) {\n if (day && day.isInMonth && (!disableFn || !disableFn(day.date))) {\n return day.date;\n }\n }\n }\n return null;\n });\n\n /**\n * APG Date Picker keymap. Tab into the grid lands on the focusableDate\n * cell; arrow keys then navigate days/weeks; PageUp/Down change month;\n * Ctrl+PageUp/Down change year; Home/End jump to week edges; Enter/Space\n * selects.\n */\n onCellKeyDown(event: KeyboardEvent, day: DateDayOfMonth | null): void {\n if (!day || !day.isInMonth) return;\n\n const isNav =\n event.key === 'ArrowLeft' || event.key === 'ArrowRight' ||\n event.key === 'ArrowUp' || event.key === 'ArrowDown' ||\n event.key === 'Home' || event.key === 'End' ||\n event.key === 'PageUp' || event.key === 'PageDown';\n const isSelect = event.key === 'Enter' || event.key === ' ';\n if (!isNav && !isSelect) return;\n\n event.preventDefault();\n\n if (isSelect) {\n this.goto(day);\n return;\n }\n\n const current = day.date;\n let target = new Date(current);\n switch (event.key) {\n case 'ArrowLeft': target.setDate(current.getDate() - 1); break;\n case 'ArrowRight': target.setDate(current.getDate() + 1); break;\n case 'ArrowUp': target.setDate(current.getDate() - 7); break;\n case 'ArrowDown': target.setDate(current.getDate() + 7); break;\n case 'Home': target.setDate(current.getDate() - current.getDay()); break;\n case 'End': target.setDate(current.getDate() + (6 - current.getDay())); break;\n case 'PageUp':\n target = event.ctrlKey\n ? new Date(current.getFullYear() - 1, current.getMonth(), current.getDate())\n : new Date(current.getFullYear(), current.getMonth() - 1, current.getDate());\n break;\n case 'PageDown':\n target = event.ctrlKey\n ? new Date(current.getFullYear() + 1, current.getMonth(), current.getDate())\n : new Date(current.getFullYear(), current.getMonth() + 1, current.getDate());\n break;\n }\n\n this.moveFocusTo(target);\n }\n\n private moveFocusTo(target: Date): void {\n const month = this.currentMonth();\n const sameMonth =\n target.getFullYear() === month.getFullYear() && target.getMonth() === month.getMonth();\n if (!sameMonth) {\n // Switch month; the cell will be in the next render.\n this.currentMonth.set(new Date(target.getFullYear(), target.getMonth(), 1));\n }\n this.focusedDate.set(target);\n this.pendingFocusMove = true;\n afterNextRender(\n () => {\n if (!this.pendingFocusMove) return;\n this.pendingFocusMove = false;\n const id = this.cellId(target);\n const cell = this.elementRef.nativeElement.querySelector<HTMLElement>(`[id=\"${id}\"]`);\n cell?.focus();\n },\n { injector: this.injector },\n );\n }\n\n}\n","<table class=\"table w-auto mb-0\" role=\"grid\" [attr.aria-labelledby]=\"monthLabelId\">\n <tr>\n <td>\n <button type=\"button\" class=\"btn btn-light\" (click)=\"previousMonth()\" aria-label=\"Previous month\">\n <span [innerHTML]=\"chevronLeft()\" class=\"fw-bolder\" aria-hidden=\"true\"></span>\n </button>\n </td>\n <td colspan=\"6\" [id]=\"monthLabelId\" class=\"fw-bolder\" aria-live=\"polite\">\n {{ currentMonth() | monthName | bsUcFirst }}\n {{ currentMonth().getFullYear() }}\n </td>\n <td>\n <button type=\"button\" class=\"btn btn-light\" (click)=\"nextMonth()\" aria-label=\"Next month\">\n <span [innerHTML]=\"chevronRight()\" class=\"fw-bolder\" aria-hidden=\"true\"></span>\n </button>\n </td>\n </tr>\n <tr role=\"row\">\n <th aria-hidden=\"true\"></th>\n @for (dayOfWeek of shownDays(); track dayOfWeek.long) {\n <th scope=\"col\" role=\"columnheader\" [title]=\"dayOfWeek.long\">\n {{ dayOfWeek.short }}\n </th>\n }\n </tr>\n @for (week of weeks(); track week.number) {\n <tr role=\"row\">\n <th scope=\"row\" role=\"rowheader\">\n {{ week.number }}\n </th>\n @for (day of week.days; track day?.date) {\n @let showSpan = (day !== null) && day.isInMonth;\n @let disableFn = disableDateFn();\n @let disabled = disableFn && day && disableFn(day.date);\n @let selected = (day !== null) && day.isInMonth && isSameDate(selectedDate(), day.date);\n @let todayCell = (day !== null) && day.isInMonth && isToday(day.date);\n @let isFocusable = (day !== null) && day.isInMonth && isSameDate(focusableDate(), day.date);\n <td role=\"gridcell\"\n [id]=\"day && day.isInMonth ? cellId(day.date) : null\"\n [attr.tabindex]=\"showSpan ? (isFocusable ? 0 : -1) : null\"\n [class.selected]=\"selected\"\n [class.cursor-pointer]=\"showSpan && !disabled\"\n [attr.aria-selected]=\"showSpan ? (selected ? 'true' : 'false') : null\"\n [attr.aria-current]=\"todayCell ? 'date' : null\"\n [attr.aria-disabled]=\"disabled ? 'true' : null\"\n (click)=\"goto(day)\"\n (keydown)=\"onCellKeyDown($event, day)\">\n @if (showSpan) {\n <span [class.text-muted]=\"disabled\">{{ day.dayOfMonth }}</span>\n }\n </td>\n }\n </tr>\n }\n</table>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;AAAA;MAea,mBAAmB,CAAA;AAO9B,IAAA,WAAA,GAAA;AANQ,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC;AAChC,QAAA,IAAA,CAAA,oBAAoB,GAAG,MAAM,CAAC,sBAAsB,CAAC;AACrD,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAA0B,UAAU,CAAC;AACxD,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC;AAC/B,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAWnC,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAuB,SAAS,kFAAC;AACrD,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAuB,SAAS,mFAAC;AAEtD,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAO,IAAI,IAAI,EAAE,mFAAC;AACtC,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAO,IAAI,IAAI,EAAE,mFAAC;AACtC,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAwC,SAAS,oFAAC;AAEvE;;;;;;AAMG;AACM,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAc,IAAI,kFAAC;;QAGxC,IAAA,CAAA,gBAAgB,GAAG,KAAK;;QAGvB,IAAA,CAAA,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,mBAAmB,CAAC;AAOhE,QAAA,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,4EAAC;AAO/E,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAY,MAAK;AACnC,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,YAAA,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC;AAAE,gBAAA,OAAO,EAAE;YAChC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI;AAC1B,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC;YACxB,IAAI,QAAQ,EAAE;AACZ,gBAAA,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAI;oBACpB,MAAM,IAAI,GAAG,IAAI,IAAI,CACnB,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,EAC3B,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,EACxB,CAAC,EAAE,UAAU,CACd;oBACD,OAAgB;AACd,wBAAA,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AAC3D,wBAAA,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;qBACzD;AACH,gBAAA,CAAC,CAAC;YACJ;iBAAO;AACL,gBAAA,OAAO,EAAE;YACX;AACF,QAAA,CAAC,gFAAC;AAiCF;;;;AAIG;AACM,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AACrC,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE;YACjC,MAAM,OAAO,GAAG,CAAC,CAAO,KAAK,CAAC,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,QAAQ,EAAE,KAAK,KAAK,CAAC,QAAQ,EAAE;YACzG,MAAM,SAAS,GAAG,CAAC,CAAc,MAAmB,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;YAE/E,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;AAC7C,YAAA,IAAI,OAAO;AAAE,gBAAA,OAAO,OAAO;YAE3B,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;AAC/C,YAAA,IAAI,QAAQ;AAAE,gBAAA,OAAO,QAAQ;AAE7B,YAAA,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE;AACxB,YAAA,MAAM,YAAY,GAAG,SAAS,CAAC,KAAK,CAAC;AACrC,YAAA,IAAI,YAAY;AAAE,gBAAA,OAAO,YAAY;;AAGrC,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE;YACtC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE;AAC/B,gBAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE;AAC3B,oBAAA,IAAI,GAAG,IAAI,GAAG,CAAC,SAAS,KAAK,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE;wBAChE,OAAO,GAAG,CAAC,IAAI;oBACjB;gBACF;YACF;AACA,YAAA,OAAO,IAAI;AACb,QAAA,CAAC,oFAAC;QA7HA,OAAO,wCAAwC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAI;AAC7D,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC5E,QAAA,CAAC,CAAC;QACF,OAAO,yCAAyC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAI;AAC9D,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC7E,QAAA,CAAC,CAAC;IACJ;;AAyBA,IAAA,MAAM,CAAC,IAAU,EAAA;QACf,OAAO,CAAA,EAAG,IAAI,CAAC,YAAY,SAAS,IAAI,CAAC,WAAW,EAAE,CAAA,CAAA,EAAI,IAAI,CAAC,QAAQ,EAAE,CAAA,CAAA,EAAI,IAAI,CAAC,OAAO,EAAE,EAAE;IAC/F;AAIA,IAAA,OAAO,CAAC,IAAU,EAAA;AAChB,QAAA,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE;QACtB,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC;IACnC;IAwBA,aAAa,GAAA;AACX,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE;QACjC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7E,QAAA,OAAO,KAAK;IACd;IAEA,SAAS,GAAA;AACP,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE;QACjC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7E,QAAA,OAAO,KAAK;IACd;IAEA,UAAU,CAAC,KAAkB,EAAE,KAAkB,EAAA;AAC/C,QAAA,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,IAAI;AAAE,YAAA,OAAO,IAAI;AACjD,QAAA,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,IAAI;AAAE,YAAA,OAAO,KAAK;QAElD,QACE,KAAK,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,WAAW,EAAE;AAC3C,YAAA,KAAK,CAAC,QAAQ,EAAE,KAAK,KAAK,CAAC,QAAQ,EAAE;YACrC,KAAK,CAAC,OAAO,EAAE,KAAK,KAAK,CAAC,OAAO,EAAE;IAEvC;AAEA,IAAA,IAAI,CAAC,GAA0B,EAAA;AAC7B,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE;AACtC,QAAA,IAAI,GAAG,IAAI,GAAG,CAAC,SAAS,KAAK,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE;YAChE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;YAC/B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;QAChC;IACF;AAkCA;;;;;AAKG;IACH,aAAa,CAAC,KAAoB,EAAE,GAA0B,EAAA;AAC5D,QAAA,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS;YAAE;AAE5B,QAAA,MAAM,KAAK,GACT,KAAK,CAAC,GAAG,KAAK,WAAW,IAAI,KAAK,CAAC,GAAG,KAAK,YAAY;YACvD,KAAK,CAAC,GAAG,KAAK,SAAS,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW;YACpD,KAAK,CAAC,GAAG,KAAK,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK;YAC3C,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,GAAG,KAAK,UAAU;AACpD,QAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG;AAC3D,QAAA,IAAI,CAAC,KAAK,IAAI,CAAC,QAAQ;YAAE;QAEzB,KAAK,CAAC,cAAc,EAAE;QAEtB,IAAI,QAAQ,EAAE;AACZ,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;YACd;QACF;AAEA,QAAA,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI;AACxB,QAAA,IAAI,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC;AAC9B,QAAA,QAAQ,KAAK,CAAC,GAAG;AACf,YAAA,KAAK,WAAW;gBAAE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;gBAAE;AACzD,YAAA,KAAK,YAAY;gBAAE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;gBAAE;AAC1D,YAAA,KAAK,SAAS;gBAAE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;gBAAE;AACvD,YAAA,KAAK,WAAW;gBAAE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;gBAAE;AACzD,YAAA,KAAK,MAAM;AAAE,gBAAA,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;gBAAE;AACnE,YAAA,KAAK,KAAK;AAAE,gBAAA,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;gBAAE;AACxE,YAAA,KAAK,QAAQ;gBACX,MAAM,GAAG,KAAK,CAAC;sBACX,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,OAAO,CAAC,OAAO,EAAE;sBACzE,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;gBAC9E;AACF,YAAA,KAAK,UAAU;gBACb,MAAM,GAAG,KAAK,CAAC;sBACX,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,OAAO,CAAC,OAAO,EAAE;sBACzE,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;gBAC9E;;AAGJ,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;IAC1B;AAEQ,IAAA,WAAW,CAAC,MAAY,EAAA;AAC9B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE;QACjC,MAAM,SAAS,GACb,MAAM,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,WAAW,EAAE,IAAI,MAAM,CAAC,QAAQ,EAAE,KAAK,KAAK,CAAC,QAAQ,EAAE;QACxF,IAAI,CAAC,SAAS,EAAE;;YAEd,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;QAC7E;AACA,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC;AAC5B,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;QAC5B,eAAe,CACb,MAAK;YACH,IAAI,CAAC,IAAI,CAAC,gBAAgB;gBAAE;AAC5B,YAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK;YAC7B,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;AAC9B,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAc,CAAA,KAAA,EAAQ,EAAE,CAAA,EAAA,CAAI,CAAC;YACrF,IAAI,EAAE,KAAK,EAAE;QACf,CAAC,EACD,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAC5B;IACH;+GA3MW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECfhC,mtFAuDA,EAAA,MAAA,EAAA,CAAA,8sBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,ED3CY,aAAa,6CAAE,eAAe,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAG7B,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAP/B,SAAS;+BACE,aAAa,EAAA,OAAA,EAGd,CAAC,aAAa,EAAE,eAAe,CAAC,EAAA,eAAA,EACxB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,mtFAAA,EAAA,MAAA,EAAA,CAAA,8sBAAA,CAAA,EAAA;;;AEbjD;;AAEG;;;;"}