@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.
- package/fesm2022/mintplayer-ng-bootstrap-a11y.mjs +455 -0
- package/fesm2022/mintplayer-ng-bootstrap-a11y.mjs.map +1 -0
- package/fesm2022/mintplayer-ng-bootstrap-accordion.mjs +8 -5
- package/fesm2022/mintplayer-ng-bootstrap-accordion.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-breadcrumb.mjs +10 -4
- package/fesm2022/mintplayer-ng-bootstrap-breadcrumb.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-button-group.mjs +7 -4
- package/fesm2022/mintplayer-ng-bootstrap-button-group.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-calendar.mjs +131 -3
- package/fesm2022/mintplayer-ng-bootstrap-calendar.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-carousel.mjs +80 -48
- package/fesm2022/mintplayer-ng-bootstrap-carousel.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-code-snippet.mjs +4 -1
- package/fesm2022/mintplayer-ng-bootstrap-code-snippet.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-color-picker.mjs +218 -14
- package/fesm2022/mintplayer-ng-bootstrap-color-picker.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-datatable.mjs +4 -3
- package/fesm2022/mintplayer-ng-bootstrap-datatable.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-datepicker.mjs +2 -2
- package/fesm2022/mintplayer-ng-bootstrap-datepicker.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-dock.mjs +294 -3
- package/fesm2022/mintplayer-ng-bootstrap-dock.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-dropdown-menu.mjs +163 -18
- package/fesm2022/mintplayer-ng-bootstrap-dropdown-menu.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-dropdown.mjs +179 -7
- package/fesm2022/mintplayer-ng-bootstrap-dropdown.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-file-upload.mjs +14 -4
- package/fesm2022/mintplayer-ng-bootstrap-file-upload.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-has-overlay.mjs +14 -0
- package/fesm2022/mintplayer-ng-bootstrap-has-overlay.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-list-group.mjs +2 -1
- package/fesm2022/mintplayer-ng-bootstrap-list-group.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-marquee.mjs +7 -4
- package/fesm2022/mintplayer-ng-bootstrap-marquee.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-modal.mjs +70 -6
- package/fesm2022/mintplayer-ng-bootstrap-modal.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-multi-range.mjs +693 -0
- package/fesm2022/mintplayer-ng-bootstrap-multi-range.mjs.map +1 -0
- package/fesm2022/mintplayer-ng-bootstrap-multiselect.mjs +5 -4
- package/fesm2022/mintplayer-ng-bootstrap-multiselect.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-navbar-toggler.mjs +6 -6
- package/fesm2022/mintplayer-ng-bootstrap-navbar-toggler.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-navbar.mjs +45 -13
- package/fesm2022/mintplayer-ng-bootstrap-navbar.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-offcanvas.mjs +51 -5
- package/fesm2022/mintplayer-ng-bootstrap-offcanvas.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-pagination.mjs +5 -3
- package/fesm2022/mintplayer-ng-bootstrap-pagination.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-placeholder.mjs +18 -4
- package/fesm2022/mintplayer-ng-bootstrap-placeholder.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-playlist-toggler.mjs +6 -6
- package/fesm2022/mintplayer-ng-bootstrap-playlist-toggler.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-popover.mjs +61 -6
- package/fesm2022/mintplayer-ng-bootstrap-popover.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-priority-nav.mjs +19 -4
- package/fesm2022/mintplayer-ng-bootstrap-priority-nav.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-progress-bar.mjs +8 -5
- package/fesm2022/mintplayer-ng-bootstrap-progress-bar.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-range.mjs +4 -3
- package/fesm2022/mintplayer-ng-bootstrap-range.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-rating.mjs +34 -4
- package/fesm2022/mintplayer-ng-bootstrap-rating.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-reduced-motion.mjs +59 -0
- package/fesm2022/mintplayer-ng-bootstrap-reduced-motion.mjs.map +1 -0
- package/fesm2022/mintplayer-ng-bootstrap-resizable.mjs +91 -2
- package/fesm2022/mintplayer-ng-bootstrap-resizable.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-scheduler.mjs +16 -5
- package/fesm2022/mintplayer-ng-bootstrap-scheduler.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-scrollspy.mjs +2 -2
- package/fesm2022/mintplayer-ng-bootstrap-scrollspy.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-searchbox.mjs +28 -5
- package/fesm2022/mintplayer-ng-bootstrap-searchbox.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-select.mjs +4 -3
- package/fesm2022/mintplayer-ng-bootstrap-select.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-select2.mjs +18 -4
- package/fesm2022/mintplayer-ng-bootstrap-select2.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-signature-pad.mjs +4 -3
- package/fesm2022/mintplayer-ng-bootstrap-signature-pad.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-tab-control.mjs +2 -2
- package/fesm2022/mintplayer-ng-bootstrap-tab-control.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-table.mjs +10 -3
- package/fesm2022/mintplayer-ng-bootstrap-table.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-tile-manager.mjs +143 -29
- package/fesm2022/mintplayer-ng-bootstrap-tile-manager.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-timepicker.mjs +2 -2
- package/fesm2022/mintplayer-ng-bootstrap-timepicker.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-toast.mjs +7 -4
- package/fesm2022/mintplayer-ng-bootstrap-toast.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-toggle-button.mjs +42 -21
- package/fesm2022/mintplayer-ng-bootstrap-toggle-button.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-tooltip.mjs +33 -4
- package/fesm2022/mintplayer-ng-bootstrap-tooltip.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-treeview.mjs +17 -7
- package/fesm2022/mintplayer-ng-bootstrap-treeview.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-typeahead.mjs +50 -8
- package/fesm2022/mintplayer-ng-bootstrap-typeahead.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-virtual-datatable.mjs +34 -12
- package/fesm2022/mintplayer-ng-bootstrap-virtual-datatable.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-web-components-a11y.mjs +74 -0
- package/fesm2022/mintplayer-ng-bootstrap-web-components-a11y.mjs.map +1 -0
- package/fesm2022/mintplayer-ng-bootstrap-web-components-scheduler.mjs +1476 -71
- package/fesm2022/mintplayer-ng-bootstrap-web-components-scheduler.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-web-components-splitter.mjs +194 -2
- package/fesm2022/mintplayer-ng-bootstrap-web-components-splitter.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-web-components-tab-control.mjs +4 -0
- package/fesm2022/mintplayer-ng-bootstrap-web-components-tab-control.mjs.map +1 -1
- package/package.json +18 -2
- package/types/mintplayer-ng-bootstrap-a11y.d.ts +196 -0
- package/types/mintplayer-ng-bootstrap-accordion.d.ts +4 -2
- package/types/mintplayer-ng-bootstrap-breadcrumb.d.ts +2 -1
- package/types/mintplayer-ng-bootstrap-button-group.d.ts +2 -1
- package/types/mintplayer-ng-bootstrap-calendar.d.ts +32 -0
- package/types/mintplayer-ng-bootstrap-carousel.d.ts +56 -3
- package/types/mintplayer-ng-bootstrap-code-snippet.d.ts +1 -0
- package/types/mintplayer-ng-bootstrap-color-picker.d.ts +75 -4
- package/types/mintplayer-ng-bootstrap-datatable.d.ts +1 -1
- package/types/mintplayer-ng-bootstrap-dock.d.ts +51 -0
- package/types/mintplayer-ng-bootstrap-dropdown-menu.d.ts +54 -9
- package/types/mintplayer-ng-bootstrap-dropdown.d.ts +57 -2
- package/types/mintplayer-ng-bootstrap-file-upload.d.ts +4 -1
- package/types/mintplayer-ng-bootstrap-has-overlay.d.ts +14 -0
- package/types/mintplayer-ng-bootstrap-marquee.d.ts +2 -1
- package/types/mintplayer-ng-bootstrap-modal.d.ts +25 -1
- package/types/mintplayer-ng-bootstrap-multi-range.d.ts +170 -0
- package/types/mintplayer-ng-bootstrap-multiselect.d.ts +2 -1
- package/types/mintplayer-ng-bootstrap-navbar-toggler.d.ts +4 -2
- package/types/mintplayer-ng-bootstrap-navbar.d.ts +25 -1
- package/types/mintplayer-ng-bootstrap-offcanvas.d.ts +23 -1
- package/types/mintplayer-ng-bootstrap-pagination.d.ts +3 -1
- package/types/mintplayer-ng-bootstrap-placeholder.d.ts +5 -1
- package/types/mintplayer-ng-bootstrap-playlist-toggler.d.ts +4 -2
- package/types/mintplayer-ng-bootstrap-popover.d.ts +21 -1
- package/types/mintplayer-ng-bootstrap-priority-nav.d.ts +4 -1
- package/types/mintplayer-ng-bootstrap-progress-bar.d.ts +4 -2
- package/types/mintplayer-ng-bootstrap-range.d.ts +2 -1
- package/types/mintplayer-ng-bootstrap-rating.d.ts +3 -0
- package/types/mintplayer-ng-bootstrap-reduced-motion.d.ts +36 -0
- package/types/mintplayer-ng-bootstrap-resizable.d.ts +4 -0
- package/types/mintplayer-ng-bootstrap-scheduler.d.ts +42 -9
- package/types/mintplayer-ng-bootstrap-scrollspy.d.ts +1 -1
- package/types/mintplayer-ng-bootstrap-searchbox.d.ts +8 -1
- package/types/mintplayer-ng-bootstrap-select.d.ts +2 -1
- package/types/mintplayer-ng-bootstrap-select2.d.ts +3 -0
- package/types/mintplayer-ng-bootstrap-signature-pad.d.ts +2 -1
- package/types/mintplayer-ng-bootstrap-table.d.ts +8 -1
- package/types/mintplayer-ng-bootstrap-tile-manager.d.ts +21 -2
- package/types/mintplayer-ng-bootstrap-toast.d.ts +6 -1
- package/types/mintplayer-ng-bootstrap-toggle-button.d.ts +11 -0
- package/types/mintplayer-ng-bootstrap-tooltip.d.ts +5 -0
- package/types/mintplayer-ng-bootstrap-treeview.d.ts +12 -1
- package/types/mintplayer-ng-bootstrap-typeahead.d.ts +11 -3
- package/types/mintplayer-ng-bootstrap-virtual-datatable.d.ts +14 -1
- package/types/mintplayer-ng-bootstrap-web-components-a11y.d.ts +34 -0
- package/types/mintplayer-ng-bootstrap-web-components-scheduler-core.d.ts +35 -11
- package/types/mintplayer-ng-bootstrap-web-components-scheduler.d.ts +246 -0
- 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.
|
|
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.
|
|
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.
|
|
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: "
|
|
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
|
-
|
|
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","
|
|
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: "
|
|
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=\"
|
|
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=\"
|
|
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-
|
|
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-
|
|
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":"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"}
|