@mintplayer/ng-bootstrap 21.6.0 → 21.8.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-accordion.mjs +34 -73
- package/fesm2022/mintplayer-ng-bootstrap-accordion.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-alert.mjs +10 -31
- package/fesm2022/mintplayer-ng-bootstrap-alert.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-badge.mjs +4 -4
- package/fesm2022/mintplayer-ng-bootstrap-badge.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-breadcrumb.mjs +12 -29
- package/fesm2022/mintplayer-ng-bootstrap-breadcrumb.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-button-group.mjs +5 -5
- package/fesm2022/mintplayer-ng-bootstrap-button-group.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-button-type.mjs +17 -19
- package/fesm2022/mintplayer-ng-bootstrap-button-type.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-calendar-month.mjs +9 -11
- package/fesm2022/mintplayer-ng-bootstrap-calendar-month.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-calendar.mjs +5 -5
- package/fesm2022/mintplayer-ng-bootstrap-calendar.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-card.mjs +14 -41
- package/fesm2022/mintplayer-ng-bootstrap-card.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-carousel.mjs +47 -89
- package/fesm2022/mintplayer-ng-bootstrap-carousel.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-close.mjs +4 -4
- package/fesm2022/mintplayer-ng-bootstrap-close.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-code-snippet.mjs +10 -13
- package/fesm2022/mintplayer-ng-bootstrap-code-snippet.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-color-picker.mjs +294 -383
- package/fesm2022/mintplayer-ng-bootstrap-color-picker.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-container.mjs +5 -5
- package/fesm2022/mintplayer-ng-bootstrap-container.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-context-menu.mjs +10 -44
- package/fesm2022/mintplayer-ng-bootstrap-context-menu.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-copy.mjs +16 -23
- package/fesm2022/mintplayer-ng-bootstrap-copy.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-datatable.mjs +24 -74
- package/fesm2022/mintplayer-ng-bootstrap-datatable.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-datepicker.mjs +6 -8
- package/fesm2022/mintplayer-ng-bootstrap-datepicker.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-dock.mjs +43 -73
- package/fesm2022/mintplayer-ng-bootstrap-dock.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-dropdown-divider.mjs +8 -12
- package/fesm2022/mintplayer-ng-bootstrap-dropdown-divider.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-dropdown-menu.mjs +23 -60
- package/fesm2022/mintplayer-ng-bootstrap-dropdown-menu.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-dropdown.mjs +34 -86
- package/fesm2022/mintplayer-ng-bootstrap-dropdown.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-enhanced-paste.mjs +9 -12
- package/fesm2022/mintplayer-ng-bootstrap-enhanced-paste.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-enum.mjs +3 -3
- package/fesm2022/mintplayer-ng-bootstrap-file-upload.mjs +35 -96
- package/fesm2022/mintplayer-ng-bootstrap-file-upload.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-floating-labels.mjs +9 -10
- package/fesm2022/mintplayer-ng-bootstrap-floating-labels.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-font-color.mjs +3 -4
- package/fesm2022/mintplayer-ng-bootstrap-font-color.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-for.mjs +23 -26
- package/fesm2022/mintplayer-ng-bootstrap-for.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-form.mjs +29 -54
- package/fesm2022/mintplayer-ng-bootstrap-form.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-grid.mjs +35 -67
- package/fesm2022/mintplayer-ng-bootstrap-grid.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-has-overlay.mjs +5 -5
- package/fesm2022/mintplayer-ng-bootstrap-has-overlay.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-has-property.mjs +3 -4
- package/fesm2022/mintplayer-ng-bootstrap-has-property.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-in-list.mjs +3 -4
- package/fesm2022/mintplayer-ng-bootstrap-in-list.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-input-group.mjs +5 -5
- package/fesm2022/mintplayer-ng-bootstrap-input-group.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-instance-of.mjs +75 -114
- package/fesm2022/mintplayer-ng-bootstrap-instance-of.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-let.mjs +16 -15
- package/fesm2022/mintplayer-ng-bootstrap-let.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-linify.mjs +3 -4
- package/fesm2022/mintplayer-ng-bootstrap-linify.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-list-group.mjs +17 -44
- package/fesm2022/mintplayer-ng-bootstrap-list-group.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-markdown.mjs +12 -16
- package/fesm2022/mintplayer-ng-bootstrap-markdown.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-marquee.mjs +5 -5
- package/fesm2022/mintplayer-ng-bootstrap-marquee.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-modal.mjs +74 -160
- package/fesm2022/mintplayer-ng-bootstrap-modal.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-multiselect.mjs +25 -87
- package/fesm2022/mintplayer-ng-bootstrap-multiselect.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-navbar-toggler.mjs +8 -9
- package/fesm2022/mintplayer-ng-bootstrap-navbar-toggler.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-navbar.mjs +136 -232
- package/fesm2022/mintplayer-ng-bootstrap-navbar.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-navigation-lock.mjs +40 -68
- package/fesm2022/mintplayer-ng-bootstrap-navigation-lock.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-no-noscript.mjs +11 -15
- package/fesm2022/mintplayer-ng-bootstrap-no-noscript.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-offcanvas.mjs +70 -138
- package/fesm2022/mintplayer-ng-bootstrap-offcanvas.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-ordinal-number.mjs +3 -4
- package/fesm2022/mintplayer-ng-bootstrap-ordinal-number.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-pagination.mjs +4 -4
- package/fesm2022/mintplayer-ng-bootstrap-pagination.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-parallax.mjs +5 -5
- package/fesm2022/mintplayer-ng-bootstrap-parallax.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-placeholder.mjs +16 -39
- package/fesm2022/mintplayer-ng-bootstrap-placeholder.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-playlist-toggler.mjs +8 -9
- package/fesm2022/mintplayer-ng-bootstrap-playlist-toggler.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-popover.mjs +40 -70
- package/fesm2022/mintplayer-ng-bootstrap-popover.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-progress-bar.mjs +28 -97
- package/fesm2022/mintplayer-ng-bootstrap-progress-bar.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-range.mjs +30 -58
- package/fesm2022/mintplayer-ng-bootstrap-range.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-rating.mjs +10 -17
- package/fesm2022/mintplayer-ng-bootstrap-rating.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-resizable.mjs +96 -153
- package/fesm2022/mintplayer-ng-bootstrap-resizable.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-scheduler.mjs +26 -41
- package/fesm2022/mintplayer-ng-bootstrap-scheduler.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-scrollspy.mjs +30 -61
- package/fesm2022/mintplayer-ng-bootstrap-scrollspy.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-searchbox.mjs +59 -108
- package/fesm2022/mintplayer-ng-bootstrap-searchbox.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-select.mjs +99 -131
- package/fesm2022/mintplayer-ng-bootstrap-select.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-select2.mjs +63 -106
- package/fesm2022/mintplayer-ng-bootstrap-select2.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-shell.mjs +15 -33
- package/fesm2022/mintplayer-ng-bootstrap-shell.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-signature-pad.mjs +16 -33
- package/fesm2022/mintplayer-ng-bootstrap-signature-pad.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-slugify.mjs +3 -4
- package/fesm2022/mintplayer-ng-bootstrap-slugify.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-spinner.mjs +4 -4
- package/fesm2022/mintplayer-ng-bootstrap-spinner.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-split-string.mjs +3 -4
- package/fesm2022/mintplayer-ng-bootstrap-split-string.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-sticky-footer.mjs +16 -35
- package/fesm2022/mintplayer-ng-bootstrap-sticky-footer.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-tab-control.mjs +39 -81
- package/fesm2022/mintplayer-ng-bootstrap-tab-control.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-table.mjs +4 -4
- package/fesm2022/mintplayer-ng-bootstrap-table.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-timepicker.mjs +13 -17
- package/fesm2022/mintplayer-ng-bootstrap-timepicker.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-toast.mjs +80 -154
- package/fesm2022/mintplayer-ng-bootstrap-toast.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-toggle-button.mjs +116 -153
- package/fesm2022/mintplayer-ng-bootstrap-toggle-button.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-tooltip.mjs +25 -62
- package/fesm2022/mintplayer-ng-bootstrap-tooltip.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-treeview.mjs +16 -33
- package/fesm2022/mintplayer-ng-bootstrap-treeview.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-trust-html.mjs +3 -4
- package/fesm2022/mintplayer-ng-bootstrap-trust-html.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-typeahead.mjs +13 -20
- package/fesm2022/mintplayer-ng-bootstrap-typeahead.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-uc-first.mjs +3 -4
- package/fesm2022/mintplayer-ng-bootstrap-uc-first.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-user-agent.mjs +14 -26
- package/fesm2022/mintplayer-ng-bootstrap-user-agent.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-viewport.mjs +6 -9
- package/fesm2022/mintplayer-ng-bootstrap-viewport.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-word-count.mjs +3 -4
- package/fesm2022/mintplayer-ng-bootstrap-word-count.mjs.map +1 -1
- package/package.json +4 -4
- package/types/mintplayer-ng-bootstrap-accordion.d.ts +20 -30
- package/types/mintplayer-ng-bootstrap-alert.d.ts +3 -9
- package/types/mintplayer-ng-bootstrap-breadcrumb.d.ts +3 -10
- package/types/mintplayer-ng-bootstrap-button-type.d.ts +4 -4
- package/types/mintplayer-ng-bootstrap-card.d.ts +5 -12
- package/types/mintplayer-ng-bootstrap-carousel.d.ts +6 -14
- package/types/mintplayer-ng-bootstrap-code-snippet.d.ts +3 -3
- package/types/mintplayer-ng-bootstrap-color-picker.d.ts +43 -54
- package/types/mintplayer-ng-bootstrap-context-menu.d.ts +2 -11
- package/types/mintplayer-ng-bootstrap-copy.d.ts +5 -7
- package/types/mintplayer-ng-bootstrap-datatable.d.ts +7 -18
- package/types/mintplayer-ng-bootstrap-dock.d.ts +18 -31
- package/types/mintplayer-ng-bootstrap-dropdown-divider.d.ts +0 -1
- package/types/mintplayer-ng-bootstrap-dropdown-menu.d.ts +11 -22
- package/types/mintplayer-ng-bootstrap-dropdown.d.ts +16 -28
- package/types/mintplayer-ng-bootstrap-enhanced-paste.d.ts +1 -2
- package/types/mintplayer-ng-bootstrap-file-upload.d.ts +16 -27
- package/types/mintplayer-ng-bootstrap-floating-labels.d.ts +2 -3
- package/types/mintplayer-ng-bootstrap-for.d.ts +3 -3
- package/types/mintplayer-ng-bootstrap-form.d.ts +11 -20
- package/types/mintplayer-ng-bootstrap-grid.d.ts +23 -35
- package/types/mintplayer-ng-bootstrap-instance-of.d.ts +34 -41
- package/types/mintplayer-ng-bootstrap-let.d.ts +3 -2
- package/types/mintplayer-ng-bootstrap-list-group.d.ts +4 -13
- package/types/mintplayer-ng-bootstrap-modal.d.ts +13 -29
- package/types/mintplayer-ng-bootstrap-multiselect.d.ts +8 -21
- package/types/mintplayer-ng-bootstrap-navbar.d.ts +38 -51
- package/types/mintplayer-ng-bootstrap-navigation-lock.d.ts +8 -15
- package/types/mintplayer-ng-bootstrap-no-noscript.d.ts +1 -1
- package/types/mintplayer-ng-bootstrap-offcanvas.d.ts +20 -30
- package/types/mintplayer-ng-bootstrap-placeholder.d.ts +3 -11
- package/types/mintplayer-ng-bootstrap-popover.d.ts +18 -31
- package/types/mintplayer-ng-bootstrap-progress-bar.d.ts +9 -27
- package/types/mintplayer-ng-bootstrap-range.d.ts +14 -22
- package/types/mintplayer-ng-bootstrap-rating.d.ts +0 -2
- package/types/mintplayer-ng-bootstrap-resizable.d.ts +23 -32
- package/types/mintplayer-ng-bootstrap-scheduler.d.ts +3 -9
- package/types/mintplayer-ng-bootstrap-scrollspy.d.ts +7 -16
- package/types/mintplayer-ng-bootstrap-searchbox.d.ts +20 -34
- package/types/mintplayer-ng-bootstrap-select.d.ts +24 -30
- package/types/mintplayer-ng-bootstrap-select2.d.ts +21 -33
- package/types/mintplayer-ng-bootstrap-shell.d.ts +12 -19
- package/types/mintplayer-ng-bootstrap-signature-pad.d.ts +2 -3
- package/types/mintplayer-ng-bootstrap-sticky-footer.d.ts +4 -12
- package/types/mintplayer-ng-bootstrap-tab-control.d.ts +9 -21
- package/types/mintplayer-ng-bootstrap-timepicker.d.ts +3 -3
- package/types/mintplayer-ng-bootstrap-toast.d.ts +12 -20
- package/types/mintplayer-ng-bootstrap-toggle-button.d.ts +20 -29
- package/types/mintplayer-ng-bootstrap-tooltip.d.ts +4 -24
- package/types/mintplayer-ng-bootstrap-treeview.d.ts +13 -21
- package/types/mintplayer-ng-bootstrap-typeahead.d.ts +3 -3
- package/types/mintplayer-ng-bootstrap-user-agent.d.ts +2 -3
- package/types/mintplayer-ng-bootstrap-viewport.d.ts +2 -2
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { inject, Injector, input, model, output, computed, signal, runInInjectionContext, effect,
|
|
2
|
+
import { inject, Injector, viewChild, input, model, output, computed, signal, runInInjectionContext, effect, CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
3
3
|
import '@mintplayer/scheduler-wc';
|
|
4
4
|
export { generateEventId, generateGroupId, generateResourceId } from '@mintplayer/scheduler-core';
|
|
5
5
|
|
|
@@ -9,6 +9,7 @@ export { generateEventId, generateGroupId, generateResourceId } from '@mintplaye
|
|
|
9
9
|
class BsSchedulerComponent {
|
|
10
10
|
constructor() {
|
|
11
11
|
this.injector = inject(Injector);
|
|
12
|
+
this.schedulerRef = viewChild.required('scheduler');
|
|
12
13
|
// Input signals
|
|
13
14
|
this.view = input('week', ...(ngDevMode ? [{ debugName: "view" }] : []));
|
|
14
15
|
this.date = input(new Date(), ...(ngDevMode ? [{ debugName: "date" }] : []));
|
|
@@ -56,38 +57,38 @@ class BsSchedulerComponent {
|
|
|
56
57
|
runInInjectionContext(this.injector, () => {
|
|
57
58
|
// Set up effects to sync inputs to web component
|
|
58
59
|
effect(() => {
|
|
59
|
-
const el = this.schedulerRef?.nativeElement;
|
|
60
|
+
const el = this.schedulerRef()?.nativeElement;
|
|
60
61
|
if (el) {
|
|
61
62
|
el.view = this.view();
|
|
62
63
|
}
|
|
63
64
|
});
|
|
64
65
|
effect(() => {
|
|
65
|
-
const el = this.schedulerRef?.nativeElement;
|
|
66
|
+
const el = this.schedulerRef()?.nativeElement;
|
|
66
67
|
if (el) {
|
|
67
68
|
el.date = this.date();
|
|
68
69
|
}
|
|
69
70
|
});
|
|
70
71
|
effect(() => {
|
|
71
|
-
const el = this.schedulerRef?.nativeElement;
|
|
72
|
+
const el = this.schedulerRef()?.nativeElement;
|
|
72
73
|
if (el) {
|
|
73
74
|
el.events = this.events();
|
|
74
75
|
}
|
|
75
76
|
});
|
|
76
77
|
effect(() => {
|
|
77
|
-
const el = this.schedulerRef?.nativeElement;
|
|
78
|
+
const el = this.schedulerRef()?.nativeElement;
|
|
78
79
|
if (el) {
|
|
79
80
|
el.resources = this.resources();
|
|
80
81
|
}
|
|
81
82
|
});
|
|
82
83
|
effect(() => {
|
|
83
|
-
const el = this.schedulerRef?.nativeElement;
|
|
84
|
+
const el = this.schedulerRef()?.nativeElement;
|
|
84
85
|
if (el) {
|
|
85
86
|
el.options = this.options();
|
|
86
87
|
}
|
|
87
88
|
});
|
|
88
89
|
// Sync selectedEvent to web component
|
|
89
90
|
effect(() => {
|
|
90
|
-
const el = this.schedulerRef?.nativeElement;
|
|
91
|
+
const el = this.schedulerRef()?.nativeElement;
|
|
91
92
|
if (el) {
|
|
92
93
|
el.selectedEvent = this.selectedEvent();
|
|
93
94
|
}
|
|
@@ -101,7 +102,7 @@ class BsSchedulerComponent {
|
|
|
101
102
|
this.removeEventListeners();
|
|
102
103
|
}
|
|
103
104
|
setupEventListeners() {
|
|
104
|
-
const el = this.schedulerRef?.nativeElement;
|
|
105
|
+
const el = this.schedulerRef()?.nativeElement;
|
|
105
106
|
if (!el)
|
|
106
107
|
return;
|
|
107
108
|
const addListener = (type, handler) => {
|
|
@@ -140,7 +141,7 @@ class BsSchedulerComponent {
|
|
|
140
141
|
});
|
|
141
142
|
}
|
|
142
143
|
removeEventListeners() {
|
|
143
|
-
const el = this.schedulerRef?.nativeElement;
|
|
144
|
+
const el = this.schedulerRef()?.nativeElement;
|
|
144
145
|
if (!el)
|
|
145
146
|
return;
|
|
146
147
|
for (const { type, listener } of this.eventListeners) {
|
|
@@ -153,89 +154,73 @@ class BsSchedulerComponent {
|
|
|
153
154
|
* Navigate to next period
|
|
154
155
|
*/
|
|
155
156
|
next() {
|
|
156
|
-
this.schedulerRef?.nativeElement?.next();
|
|
157
|
+
this.schedulerRef()?.nativeElement?.next();
|
|
157
158
|
}
|
|
158
159
|
/**
|
|
159
160
|
* Navigate to previous period
|
|
160
161
|
*/
|
|
161
162
|
prev() {
|
|
162
|
-
this.schedulerRef?.nativeElement?.prev();
|
|
163
|
+
this.schedulerRef()?.nativeElement?.prev();
|
|
163
164
|
}
|
|
164
165
|
/**
|
|
165
166
|
* Navigate to today
|
|
166
167
|
*/
|
|
167
168
|
today() {
|
|
168
|
-
this.schedulerRef?.nativeElement?.today();
|
|
169
|
+
this.schedulerRef()?.nativeElement?.today();
|
|
169
170
|
}
|
|
170
171
|
/**
|
|
171
172
|
* Navigate to a specific date
|
|
172
173
|
*/
|
|
173
174
|
gotoDate(date) {
|
|
174
|
-
this.schedulerRef?.nativeElement?.gotoDate(date);
|
|
175
|
+
this.schedulerRef()?.nativeElement?.gotoDate(date);
|
|
175
176
|
}
|
|
176
177
|
/**
|
|
177
178
|
* Change the current view
|
|
178
179
|
*/
|
|
179
180
|
changeView(view) {
|
|
180
|
-
this.schedulerRef?.nativeElement?.changeView(view);
|
|
181
|
+
this.schedulerRef()?.nativeElement?.changeView(view);
|
|
181
182
|
}
|
|
182
183
|
/**
|
|
183
184
|
* Add an event
|
|
184
185
|
*/
|
|
185
186
|
addEvent(event) {
|
|
186
|
-
this.schedulerRef?.nativeElement?.addEvent(event);
|
|
187
|
+
this.schedulerRef()?.nativeElement?.addEvent(event);
|
|
187
188
|
}
|
|
188
189
|
/**
|
|
189
190
|
* Update an event
|
|
190
191
|
*/
|
|
191
192
|
updateEvent(event) {
|
|
192
|
-
this.schedulerRef?.nativeElement?.updateEvent(event);
|
|
193
|
+
this.schedulerRef()?.nativeElement?.updateEvent(event);
|
|
193
194
|
}
|
|
194
195
|
/**
|
|
195
196
|
* Remove an event
|
|
196
197
|
*/
|
|
197
198
|
removeEvent(eventId) {
|
|
198
|
-
this.schedulerRef?.nativeElement?.removeEvent(eventId);
|
|
199
|
+
this.schedulerRef()?.nativeElement?.removeEvent(eventId);
|
|
199
200
|
}
|
|
200
201
|
/**
|
|
201
202
|
* Get an event by ID
|
|
202
203
|
*/
|
|
203
204
|
getEventById(eventId) {
|
|
204
|
-
return this.schedulerRef?.nativeElement?.getEventById(eventId) ?? null;
|
|
205
|
+
return this.schedulerRef()?.nativeElement?.getEventById(eventId) ?? null;
|
|
205
206
|
}
|
|
206
207
|
/**
|
|
207
208
|
* Refetch/refresh events
|
|
208
209
|
*/
|
|
209
210
|
refetchEvents() {
|
|
210
|
-
this.schedulerRef?.nativeElement?.refetchEvents();
|
|
211
|
+
this.schedulerRef()?.nativeElement?.refetchEvents();
|
|
211
212
|
}
|
|
212
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
213
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.
|
|
213
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: BsSchedulerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
214
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.1.6", type: BsSchedulerComponent, isStandalone: true, selector: "bs-scheduler", inputs: { view: { classPropertyName: "view", publicName: "view", isSignal: true, isRequired: false, transformFunction: null }, date: { classPropertyName: "date", publicName: "date", isSignal: true, isRequired: false, transformFunction: null }, events: { classPropertyName: "events", publicName: "events", isSignal: true, isRequired: false, transformFunction: null }, resources: { classPropertyName: "resources", publicName: "resources", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, selectedEvent: { classPropertyName: "selectedEvent", publicName: "selectedEvent", isSignal: true, isRequired: false, transformFunction: null }, selectedRange: { classPropertyName: "selectedRange", publicName: "selectedRange", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectedEvent: "selectedEventChange", selectedRange: "selectedRangeChange", eventClick: "eventClick", eventDblClick: "eventDblClick", eventCreate: "eventCreate", eventUpdate: "eventUpdate", eventDelete: "eventDelete", dateClick: "dateClick", dateSelect: "dateSelect", viewChange: "viewChange" }, viewQueries: [{ propertyName: "schedulerRef", first: true, predicate: ["scheduler"], descendants: true, isSignal: true }], ngImport: i0, template: `<mp-scheduler #scheduler></mp-scheduler>`, isInline: true, styles: [":host{display:block;height:100%}mp-scheduler{display:block;height:100%}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
214
215
|
}
|
|
215
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
216
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: BsSchedulerComponent, decorators: [{
|
|
216
217
|
type: Component,
|
|
217
|
-
args: [{ selector: 'bs-scheduler',
|
|
218
|
-
}], propDecorators: { schedulerRef: [{
|
|
219
|
-
type: ViewChild,
|
|
220
|
-
args: ['scheduler', { static: true }]
|
|
221
|
-
}], view: [{ type: i0.Input, args: [{ isSignal: true, alias: "view", required: false }] }], date: [{ type: i0.Input, args: [{ isSignal: true, alias: "date", required: false }] }], events: [{ type: i0.Input, args: [{ isSignal: true, alias: "events", required: false }] }], resources: [{ type: i0.Input, args: [{ isSignal: true, alias: "resources", required: false }] }], options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }], selectedEvent: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedEvent", required: false }] }, { type: i0.Output, args: ["selectedEventChange"] }], selectedRange: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedRange", required: false }] }, { type: i0.Output, args: ["selectedRangeChange"] }], eventClick: [{ type: i0.Output, args: ["eventClick"] }], eventDblClick: [{ type: i0.Output, args: ["eventDblClick"] }], eventCreate: [{ type: i0.Output, args: ["eventCreate"] }], eventUpdate: [{ type: i0.Output, args: ["eventUpdate"] }], eventDelete: [{ type: i0.Output, args: ["eventDelete"] }], dateClick: [{ type: i0.Output, args: ["dateClick"] }], dateSelect: [{ type: i0.Output, args: ["dateSelect"] }], viewChange: [{ type: i0.Output, args: ["viewChange"] }] } });
|
|
222
|
-
|
|
223
|
-
class BsSchedulerModule {
|
|
224
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: BsSchedulerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
225
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.6", ngImport: i0, type: BsSchedulerModule, imports: [BsSchedulerComponent], exports: [BsSchedulerComponent] }); }
|
|
226
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: BsSchedulerModule }); }
|
|
227
|
-
}
|
|
228
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: BsSchedulerModule, decorators: [{
|
|
229
|
-
type: NgModule,
|
|
230
|
-
args: [{
|
|
231
|
-
imports: [BsSchedulerComponent],
|
|
232
|
-
exports: [BsSchedulerComponent],
|
|
233
|
-
}]
|
|
234
|
-
}] });
|
|
218
|
+
args: [{ selector: 'bs-scheduler', template: `<mp-scheduler #scheduler></mp-scheduler>`, changeDetection: ChangeDetectionStrategy.OnPush, schemas: [CUSTOM_ELEMENTS_SCHEMA], styles: [":host{display:block;height:100%}mp-scheduler{display:block;height:100%}\n"] }]
|
|
219
|
+
}], propDecorators: { schedulerRef: [{ type: i0.ViewChild, args: ['scheduler', { isSignal: true }] }], view: [{ type: i0.Input, args: [{ isSignal: true, alias: "view", required: false }] }], date: [{ type: i0.Input, args: [{ isSignal: true, alias: "date", required: false }] }], events: [{ type: i0.Input, args: [{ isSignal: true, alias: "events", required: false }] }], resources: [{ type: i0.Input, args: [{ isSignal: true, alias: "resources", required: false }] }], options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }], selectedEvent: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedEvent", required: false }] }, { type: i0.Output, args: ["selectedEventChange"] }], selectedRange: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedRange", required: false }] }, { type: i0.Output, args: ["selectedRangeChange"] }], eventClick: [{ type: i0.Output, args: ["eventClick"] }], eventDblClick: [{ type: i0.Output, args: ["eventDblClick"] }], eventCreate: [{ type: i0.Output, args: ["eventCreate"] }], eventUpdate: [{ type: i0.Output, args: ["eventUpdate"] }], eventDelete: [{ type: i0.Output, args: ["eventDelete"] }], dateClick: [{ type: i0.Output, args: ["dateClick"] }], dateSelect: [{ type: i0.Output, args: ["dateSelect"] }], viewChange: [{ type: i0.Output, args: ["viewChange"] }] } });
|
|
235
220
|
|
|
236
221
|
/**
|
|
237
222
|
* Generated bundle index. Do not edit.
|
|
238
223
|
*/
|
|
239
224
|
|
|
240
|
-
export { BsSchedulerComponent
|
|
225
|
+
export { BsSchedulerComponent };
|
|
241
226
|
//# sourceMappingURL=mintplayer-ng-bootstrap-scheduler.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mintplayer-ng-bootstrap-scheduler.mjs","sources":["../../../../libs/mintplayer-ng-bootstrap/scheduler/src/components/scheduler/scheduler.component.ts","../../../../libs/mintplayer-ng-bootstrap/scheduler/src/scheduler.module.ts","../../../../libs/mintplayer-ng-bootstrap/scheduler/mintplayer-ng-bootstrap-scheduler.ts"],"sourcesContent":["import {\n Component,\n ElementRef,\n ViewChild,\n AfterViewInit,\n OnDestroy,\n ChangeDetectionStrategy,\n CUSTOM_ELEMENTS_SCHEMA,\n input,\n output,\n model,\n computed,\n effect,\n signal,\n Injector,\n inject,\n runInInjectionContext,\n} from '@angular/core';\n\nimport {\n ViewType,\n SchedulerEvent,\n Resource,\n ResourceGroup,\n SchedulerOptions,\n} from '@mintplayer/scheduler-core';\n\n// Import the web component to ensure it gets registered\nimport '@mintplayer/scheduler-wc';\n\n/**\n * Interface for the mp-scheduler web component element\n */\ninterface MpSchedulerElement extends HTMLElement {\n view: ViewType;\n date: Date;\n events: SchedulerEvent[];\n resources: (Resource | ResourceGroup)[];\n options: Partial<SchedulerOptions>;\n selectedEvent: SchedulerEvent | null;\n selectedRange: { start: Date; end: Date } | null;\n next(): void;\n prev(): void;\n today(): void;\n gotoDate(date: Date): void;\n changeView(view: ViewType): void;\n addEvent(event: SchedulerEvent): void;\n updateEvent(event: SchedulerEvent): void;\n removeEvent(eventId: string): void;\n getEventById(eventId: string): SchedulerEvent | null;\n refetchEvents(): void;\n}\n\n/**\n * Event click event detail\n */\nexport interface SchedulerEventClickEvent {\n event: SchedulerEvent;\n originalEvent?: Event;\n}\n\n/**\n * Event create event detail\n */\nexport interface SchedulerEventCreateEvent {\n event: SchedulerEvent;\n resource?: Resource;\n originalEvent?: Event;\n}\n\n/**\n * Event update event detail\n */\nexport interface SchedulerEventUpdateEvent {\n event: SchedulerEvent;\n oldEvent: SchedulerEvent;\n originalEvent?: Event;\n}\n\n/**\n * Event delete event detail\n */\nexport interface SchedulerEventDeleteEvent {\n event: SchedulerEvent;\n originalEvent?: Event;\n}\n\n/**\n * Date click event detail\n */\nexport interface DateClickEvent {\n date: Date;\n resource?: Resource;\n originalEvent?: Event;\n}\n\n/**\n * Date select event detail\n */\nexport interface DateSelectEvent {\n start: Date;\n end: Date;\n resource?: Resource;\n originalEvent?: Event;\n}\n\n/**\n * View change event detail\n */\nexport interface ViewChangeEvent {\n view: ViewType;\n date: Date;\n}\n\n/**\n * Angular wrapper for the mp-scheduler web component using signals\n */\n@Component({\n selector: 'bs-scheduler',\n standalone: true,\n template: `<mp-scheduler #scheduler></mp-scheduler>`,\n styles: [`\n :host {\n display: block;\n height: 100%;\n }\n mp-scheduler {\n display: block;\n height: 100%;\n }\n `],\n changeDetection: ChangeDetectionStrategy.OnPush,\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class BsSchedulerComponent implements AfterViewInit, OnDestroy {\n private readonly injector = inject(Injector);\n\n @ViewChild('scheduler', { static: true })\n private schedulerRef!: ElementRef<MpSchedulerElement>;\n\n // Input signals\n readonly view = input<ViewType>('week');\n readonly date = input<Date>(new Date());\n readonly events = input<SchedulerEvent[]>([]);\n readonly resources = input<(Resource | ResourceGroup)[]>([]);\n readonly options = input<Partial<SchedulerOptions>>({});\n\n // Two-way binding model signals\n readonly selectedEvent = model<SchedulerEvent | null>(null);\n readonly selectedRange = model<{ start: Date; end: Date } | null>(null);\n\n // Output signals (events)\n readonly eventClick = output<SchedulerEventClickEvent>();\n readonly eventDblClick = output<SchedulerEventClickEvent>();\n readonly eventCreate = output<SchedulerEventCreateEvent>();\n readonly eventUpdate = output<SchedulerEventUpdateEvent>();\n readonly eventDelete = output<SchedulerEventDeleteEvent>();\n readonly dateClick = output<DateClickEvent>();\n readonly dateSelect = output<DateSelectEvent>();\n readonly viewChange = output<ViewChangeEvent>();\n\n // Computed signals\n readonly currentWeekStart = computed(() => {\n const d = new Date(this.date());\n const day = d.getDay();\n const diff = (day === 0 ? 6 : day - 1); // Adjust for Monday start\n d.setDate(d.getDate() - diff);\n d.setHours(0, 0, 0, 0);\n return d;\n });\n\n readonly currentWeekEnd = computed(() => {\n const start = this.currentWeekStart();\n const end = new Date(start);\n end.setDate(end.getDate() + 6);\n end.setHours(23, 59, 59, 999);\n return end;\n });\n\n readonly visibleEvents = computed(() => {\n const start = this.currentWeekStart();\n const end = this.currentWeekEnd();\n return this.events().filter(\n (e) => e.start < end && e.end > start\n );\n });\n\n // Internal state\n private readonly initialized = signal(false);\n private eventListeners: Array<{ type: string; listener: EventListener }> = [];\n\n ngAfterViewInit(): void {\n runInInjectionContext(this.injector, () => {\n // Set up effects to sync inputs to web component\n effect(() => {\n const el = this.schedulerRef?.nativeElement;\n if (el) {\n el.view = this.view();\n }\n });\n\n effect(() => {\n const el = this.schedulerRef?.nativeElement;\n if (el) {\n el.date = this.date();\n }\n });\n\n effect(() => {\n const el = this.schedulerRef?.nativeElement;\n if (el) {\n el.events = this.events();\n }\n });\n\n effect(() => {\n const el = this.schedulerRef?.nativeElement;\n if (el) {\n el.resources = this.resources();\n }\n });\n\n effect(() => {\n const el = this.schedulerRef?.nativeElement;\n if (el) {\n el.options = this.options();\n }\n });\n\n // Sync selectedEvent to web component\n effect(() => {\n const el = this.schedulerRef?.nativeElement;\n if (el) {\n el.selectedEvent = this.selectedEvent();\n }\n });\n });\n\n // Set up event listeners\n this.setupEventListeners();\n this.initialized.set(true);\n }\n\n ngOnDestroy(): void {\n this.removeEventListeners();\n }\n\n private setupEventListeners(): void {\n const el = this.schedulerRef?.nativeElement;\n if (!el) return;\n\n const addListener = (type: string, handler: (e: CustomEvent) => void) => {\n const listener = (e: Event) => handler(e as CustomEvent);\n el.addEventListener(type, listener);\n this.eventListeners.push({ type, listener });\n };\n\n addListener('event-click', (e) => {\n this.eventClick.emit(e.detail);\n this.selectedEvent.set(e.detail.event);\n });\n\n addListener('event-dblclick', (e) => {\n this.eventDblClick.emit(e.detail);\n });\n\n addListener('event-create', (e) => {\n this.eventCreate.emit(e.detail);\n });\n\n addListener('event-update', (e) => {\n this.eventUpdate.emit(e.detail);\n });\n\n addListener('event-delete', (e) => {\n this.eventDelete.emit(e.detail);\n });\n\n addListener('date-click', (e) => {\n this.dateClick.emit(e.detail);\n });\n\n addListener('date-select', (e) => {\n this.dateSelect.emit(e.detail);\n this.selectedRange.set({ start: e.detail.start, end: e.detail.end });\n });\n\n addListener('view-change', (e) => {\n this.viewChange.emit(e.detail);\n });\n\n addListener('selection-change', (e) => {\n this.selectedEvent.set(e.detail.selectedEvent);\n });\n }\n\n private removeEventListeners(): void {\n const el = this.schedulerRef?.nativeElement;\n if (!el) return;\n\n for (const { type, listener } of this.eventListeners) {\n el.removeEventListener(type, listener);\n }\n this.eventListeners = [];\n }\n\n // Public API methods (delegate to web component)\n\n /**\n * Navigate to next period\n */\n next(): void {\n this.schedulerRef?.nativeElement?.next();\n }\n\n /**\n * Navigate to previous period\n */\n prev(): void {\n this.schedulerRef?.nativeElement?.prev();\n }\n\n /**\n * Navigate to today\n */\n today(): void {\n this.schedulerRef?.nativeElement?.today();\n }\n\n /**\n * Navigate to a specific date\n */\n gotoDate(date: Date): void {\n this.schedulerRef?.nativeElement?.gotoDate(date);\n }\n\n /**\n * Change the current view\n */\n changeView(view: ViewType): void {\n this.schedulerRef?.nativeElement?.changeView(view);\n }\n\n /**\n * Add an event\n */\n addEvent(event: SchedulerEvent): void {\n this.schedulerRef?.nativeElement?.addEvent(event);\n }\n\n /**\n * Update an event\n */\n updateEvent(event: SchedulerEvent): void {\n this.schedulerRef?.nativeElement?.updateEvent(event);\n }\n\n /**\n * Remove an event\n */\n removeEvent(eventId: string): void {\n this.schedulerRef?.nativeElement?.removeEvent(eventId);\n }\n\n /**\n * Get an event by ID\n */\n getEventById(eventId: string): SchedulerEvent | null {\n return this.schedulerRef?.nativeElement?.getEventById(eventId) ?? null;\n }\n\n /**\n * Refetch/refresh events\n */\n refetchEvents(): void {\n this.schedulerRef?.nativeElement?.refetchEvents();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { BsSchedulerComponent } from './components/scheduler/scheduler.component';\n\n@NgModule({\n imports: [BsSchedulerComponent],\n exports: [BsSchedulerComponent],\n})\nexport class BsSchedulerModule {}\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-scheduler.mjs","sources":["../../../../libs/mintplayer-ng-bootstrap/scheduler/src/components/scheduler/scheduler.component.ts","../../../../libs/mintplayer-ng-bootstrap/scheduler/mintplayer-ng-bootstrap-scheduler.ts"],"sourcesContent":["import {\n Component,\n ElementRef,\n viewChild,\n AfterViewInit,\n OnDestroy,\n ChangeDetectionStrategy,\n CUSTOM_ELEMENTS_SCHEMA,\n input,\n output,\n model,\n computed,\n effect,\n signal,\n Injector,\n inject,\n runInInjectionContext,\n} from '@angular/core';\n\nimport {\n ViewType,\n SchedulerEvent,\n Resource,\n ResourceGroup,\n SchedulerOptions,\n} from '@mintplayer/scheduler-core';\n\n// Import the web component to ensure it gets registered\nimport '@mintplayer/scheduler-wc';\n\n/**\n * Interface for the mp-scheduler web component element\n */\ninterface MpSchedulerElement extends HTMLElement {\n view: ViewType;\n date: Date;\n events: SchedulerEvent[];\n resources: (Resource | ResourceGroup)[];\n options: Partial<SchedulerOptions>;\n selectedEvent: SchedulerEvent | null;\n selectedRange: { start: Date; end: Date } | null;\n next(): void;\n prev(): void;\n today(): void;\n gotoDate(date: Date): void;\n changeView(view: ViewType): void;\n addEvent(event: SchedulerEvent): void;\n updateEvent(event: SchedulerEvent): void;\n removeEvent(eventId: string): void;\n getEventById(eventId: string): SchedulerEvent | null;\n refetchEvents(): void;\n}\n\n/**\n * Event click event detail\n */\nexport interface SchedulerEventClickEvent {\n event: SchedulerEvent;\n originalEvent?: Event;\n}\n\n/**\n * Event create event detail\n */\nexport interface SchedulerEventCreateEvent {\n event: SchedulerEvent;\n resource?: Resource;\n originalEvent?: Event;\n}\n\n/**\n * Event update event detail\n */\nexport interface SchedulerEventUpdateEvent {\n event: SchedulerEvent;\n oldEvent: SchedulerEvent;\n originalEvent?: Event;\n}\n\n/**\n * Event delete event detail\n */\nexport interface SchedulerEventDeleteEvent {\n event: SchedulerEvent;\n originalEvent?: Event;\n}\n\n/**\n * Date click event detail\n */\nexport interface DateClickEvent {\n date: Date;\n resource?: Resource;\n originalEvent?: Event;\n}\n\n/**\n * Date select event detail\n */\nexport interface DateSelectEvent {\n start: Date;\n end: Date;\n resource?: Resource;\n originalEvent?: Event;\n}\n\n/**\n * View change event detail\n */\nexport interface ViewChangeEvent {\n view: ViewType;\n date: Date;\n}\n\n/**\n * Angular wrapper for the mp-scheduler web component using signals\n */\n@Component({\n selector: 'bs-scheduler',\n template: `<mp-scheduler #scheduler></mp-scheduler>`,\n styles: [`\n :host {\n display: block;\n height: 100%;\n }\n mp-scheduler {\n display: block;\n height: 100%;\n }\n `],\n changeDetection: ChangeDetectionStrategy.OnPush,\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class BsSchedulerComponent implements AfterViewInit, OnDestroy {\n private readonly injector = inject(Injector);\n\n private readonly schedulerRef = viewChild.required<ElementRef<MpSchedulerElement>>('scheduler');\n\n // Input signals\n readonly view = input<ViewType>('week');\n readonly date = input<Date>(new Date());\n readonly events = input<SchedulerEvent[]>([]);\n readonly resources = input<(Resource | ResourceGroup)[]>([]);\n readonly options = input<Partial<SchedulerOptions>>({});\n\n // Two-way binding model signals\n readonly selectedEvent = model<SchedulerEvent | null>(null);\n readonly selectedRange = model<{ start: Date; end: Date } | null>(null);\n\n // Output signals (events)\n readonly eventClick = output<SchedulerEventClickEvent>();\n readonly eventDblClick = output<SchedulerEventClickEvent>();\n readonly eventCreate = output<SchedulerEventCreateEvent>();\n readonly eventUpdate = output<SchedulerEventUpdateEvent>();\n readonly eventDelete = output<SchedulerEventDeleteEvent>();\n readonly dateClick = output<DateClickEvent>();\n readonly dateSelect = output<DateSelectEvent>();\n readonly viewChange = output<ViewChangeEvent>();\n\n // Computed signals\n readonly currentWeekStart = computed(() => {\n const d = new Date(this.date());\n const day = d.getDay();\n const diff = (day === 0 ? 6 : day - 1); // Adjust for Monday start\n d.setDate(d.getDate() - diff);\n d.setHours(0, 0, 0, 0);\n return d;\n });\n\n readonly currentWeekEnd = computed(() => {\n const start = this.currentWeekStart();\n const end = new Date(start);\n end.setDate(end.getDate() + 6);\n end.setHours(23, 59, 59, 999);\n return end;\n });\n\n readonly visibleEvents = computed(() => {\n const start = this.currentWeekStart();\n const end = this.currentWeekEnd();\n return this.events().filter(\n (e) => e.start < end && e.end > start\n );\n });\n\n // Internal state\n private readonly initialized = signal(false);\n private eventListeners: Array<{ type: string; listener: EventListener }> = [];\n\n ngAfterViewInit(): void {\n runInInjectionContext(this.injector, () => {\n // Set up effects to sync inputs to web component\n effect(() => {\n const el = this.schedulerRef()?.nativeElement;\n if (el) {\n el.view = this.view();\n }\n });\n\n effect(() => {\n const el = this.schedulerRef()?.nativeElement;\n if (el) {\n el.date = this.date();\n }\n });\n\n effect(() => {\n const el = this.schedulerRef()?.nativeElement;\n if (el) {\n el.events = this.events();\n }\n });\n\n effect(() => {\n const el = this.schedulerRef()?.nativeElement;\n if (el) {\n el.resources = this.resources();\n }\n });\n\n effect(() => {\n const el = this.schedulerRef()?.nativeElement;\n if (el) {\n el.options = this.options();\n }\n });\n\n // Sync selectedEvent to web component\n effect(() => {\n const el = this.schedulerRef()?.nativeElement;\n if (el) {\n el.selectedEvent = this.selectedEvent();\n }\n });\n });\n\n // Set up event listeners\n this.setupEventListeners();\n this.initialized.set(true);\n }\n\n ngOnDestroy(): void {\n this.removeEventListeners();\n }\n\n private setupEventListeners(): void {\n const el = this.schedulerRef()?.nativeElement;\n if (!el) return;\n\n const addListener = (type: string, handler: (e: CustomEvent) => void) => {\n const listener = (e: Event) => handler(e as CustomEvent);\n el.addEventListener(type, listener);\n this.eventListeners.push({ type, listener });\n };\n\n addListener('event-click', (e) => {\n this.eventClick.emit(e.detail);\n this.selectedEvent.set(e.detail.event);\n });\n\n addListener('event-dblclick', (e) => {\n this.eventDblClick.emit(e.detail);\n });\n\n addListener('event-create', (e) => {\n this.eventCreate.emit(e.detail);\n });\n\n addListener('event-update', (e) => {\n this.eventUpdate.emit(e.detail);\n });\n\n addListener('event-delete', (e) => {\n this.eventDelete.emit(e.detail);\n });\n\n addListener('date-click', (e) => {\n this.dateClick.emit(e.detail);\n });\n\n addListener('date-select', (e) => {\n this.dateSelect.emit(e.detail);\n this.selectedRange.set({ start: e.detail.start, end: e.detail.end });\n });\n\n addListener('view-change', (e) => {\n this.viewChange.emit(e.detail);\n });\n\n addListener('selection-change', (e) => {\n this.selectedEvent.set(e.detail.selectedEvent);\n });\n }\n\n private removeEventListeners(): void {\n const el = this.schedulerRef()?.nativeElement;\n if (!el) return;\n\n for (const { type, listener } of this.eventListeners) {\n el.removeEventListener(type, listener);\n }\n this.eventListeners = [];\n }\n\n // Public API methods (delegate to web component)\n\n /**\n * Navigate to next period\n */\n next(): void {\n this.schedulerRef()?.nativeElement?.next();\n }\n\n /**\n * Navigate to previous period\n */\n prev(): void {\n this.schedulerRef()?.nativeElement?.prev();\n }\n\n /**\n * Navigate to today\n */\n today(): void {\n this.schedulerRef()?.nativeElement?.today();\n }\n\n /**\n * Navigate to a specific date\n */\n gotoDate(date: Date): void {\n this.schedulerRef()?.nativeElement?.gotoDate(date);\n }\n\n /**\n * Change the current view\n */\n changeView(view: ViewType): void {\n this.schedulerRef()?.nativeElement?.changeView(view);\n }\n\n /**\n * Add an event\n */\n addEvent(event: SchedulerEvent): void {\n this.schedulerRef()?.nativeElement?.addEvent(event);\n }\n\n /**\n * Update an event\n */\n updateEvent(event: SchedulerEvent): void {\n this.schedulerRef()?.nativeElement?.updateEvent(event);\n }\n\n /**\n * Remove an event\n */\n removeEvent(eventId: string): void {\n this.schedulerRef()?.nativeElement?.removeEvent(eventId);\n }\n\n /**\n * Get an event by ID\n */\n getEventById(eventId: string): SchedulerEvent | null {\n return this.schedulerRef()?.nativeElement?.getEventById(eventId) ?? null;\n }\n\n /**\n * Refetch/refresh events\n */\n refetchEvents(): void {\n this.schedulerRef()?.nativeElement?.refetchEvents();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { DOCUMENT } from '@angular/common';
|
|
2
2
|
import * as i0 from '@angular/core';
|
|
3
|
-
import {
|
|
3
|
+
import { inject, Injectable, ElementRef, Directive, signal, contentChildren, viewChildren, effect, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
4
4
|
import { ROUTER_CONFIGURATION } from '@angular/router';
|
|
5
5
|
|
|
6
6
|
class BsScrollOffsetService {
|
|
7
|
-
constructor(
|
|
8
|
-
this.routerConfig =
|
|
7
|
+
constructor() {
|
|
8
|
+
this.routerConfig = inject(ROUTER_CONFIGURATION);
|
|
9
9
|
}
|
|
10
10
|
getScrollOffset() {
|
|
11
11
|
if (!this.routerConfig.scrollOffset) {
|
|
@@ -18,42 +18,39 @@ class BsScrollOffsetService {
|
|
|
18
18
|
return this.routerConfig.scrollOffset();
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
22
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.
|
|
21
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: BsScrollOffsetService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
22
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: BsScrollOffsetService, providedIn: 'root' }); }
|
|
23
23
|
}
|
|
24
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
24
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: BsScrollOffsetService, decorators: [{
|
|
25
25
|
type: Injectable,
|
|
26
26
|
args: [{
|
|
27
27
|
providedIn: 'root'
|
|
28
28
|
}]
|
|
29
|
-
}]
|
|
30
|
-
type: Inject,
|
|
31
|
-
args: [ROUTER_CONFIGURATION]
|
|
32
|
-
}] }] });
|
|
29
|
+
}] });
|
|
33
30
|
|
|
34
31
|
class BsScrollspyDirective {
|
|
35
32
|
constructor() {
|
|
36
33
|
this.element = inject(ElementRef);
|
|
37
34
|
}
|
|
38
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
39
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.
|
|
35
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: BsScrollspyDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
36
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.6", type: BsScrollspyDirective, isStandalone: true, selector: "[bsScrollspy]", ngImport: i0 }); }
|
|
40
37
|
}
|
|
41
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
38
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: BsScrollspyDirective, decorators: [{
|
|
42
39
|
type: Directive,
|
|
43
40
|
args: [{
|
|
44
41
|
selector: '[bsScrollspy]',
|
|
45
|
-
standalone: false,
|
|
46
42
|
}]
|
|
47
43
|
}] });
|
|
48
44
|
|
|
49
45
|
class BsScrollspyComponent {
|
|
50
46
|
constructor() {
|
|
51
47
|
this.scrollOffsetService = inject(BsScrollOffsetService);
|
|
52
|
-
this.zone = inject(NgZone);
|
|
53
48
|
this.doc = inject(DOCUMENT);
|
|
54
49
|
this.viewInit = signal(false, ...(ngDevMode ? [{ debugName: "viewInit" }] : []));
|
|
55
50
|
this.contentInit = signal(false, ...(ngDevMode ? [{ debugName: "contentInit" }] : []));
|
|
56
|
-
this.
|
|
51
|
+
this.directives = contentChildren(BsScrollspyDirective, { ...(ngDevMode ? { debugName: "directives" } : {}), descendants: true });
|
|
52
|
+
this.anchors = viewChildren('anchor', ...(ngDevMode ? [{ debugName: "anchors" }] : []));
|
|
53
|
+
this.activeDirective = signal(null, ...(ngDevMode ? [{ debugName: "activeDirective" }] : []));
|
|
57
54
|
effect(() => {
|
|
58
55
|
const viewInit = this.viewInit();
|
|
59
56
|
const contentInit = this.contentInit();
|
|
@@ -74,22 +71,23 @@ class BsScrollspyComponent {
|
|
|
74
71
|
}
|
|
75
72
|
setActiveDirective() {
|
|
76
73
|
const offsetY = this.scrollOffsetService.getScrollOffset()[1];
|
|
77
|
-
const
|
|
78
|
-
|
|
79
|
-
|
|
74
|
+
const allDirectives = this.directives();
|
|
75
|
+
const dirs = allDirectives.filter((d) => d.element.nativeElement.getBoundingClientRect().y < offsetY);
|
|
76
|
+
if (allDirectives.length === 0) {
|
|
77
|
+
this.activeDirective.set(null);
|
|
80
78
|
}
|
|
81
79
|
else if (dirs.length === 0) {
|
|
82
|
-
this.activeDirective
|
|
80
|
+
this.activeDirective.set(allDirectives[0] ?? null);
|
|
83
81
|
}
|
|
84
82
|
else {
|
|
85
|
-
this.activeDirective
|
|
83
|
+
this.activeDirective.set(dirs[dirs.length - 1]);
|
|
86
84
|
}
|
|
87
85
|
}
|
|
88
86
|
scrollToCurrentInSpy() {
|
|
89
87
|
if ((typeof window !== 'undefined') && (window.innerWidth >= 768)) {
|
|
90
|
-
if (this.activeDirective) {
|
|
91
|
-
const index = this.directives
|
|
92
|
-
const anchor = this.anchors
|
|
88
|
+
if (this.activeDirective()) {
|
|
89
|
+
const index = this.directives().findIndex((v, i) => v === this.activeDirective());
|
|
90
|
+
const anchor = this.anchors()[index];
|
|
93
91
|
if (anchor && anchor.nativeElement.parentElement) {
|
|
94
92
|
anchor.nativeElement.scrollIntoView({ block: 'nearest', inline: 'nearest' });
|
|
95
93
|
}
|
|
@@ -104,48 +102,19 @@ class BsScrollspyComponent {
|
|
|
104
102
|
window.scrollTo({ top: y, behavior: 'smooth' });
|
|
105
103
|
}
|
|
106
104
|
}
|
|
107
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
108
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.
|
|
105
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: BsScrollspyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
106
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.6", type: BsScrollspyComponent, isStandalone: true, selector: "bs-scrollspy", host: { listeners: { "window:scroll": "onWindowScroll()" } }, queries: [{ propertyName: "directives", predicate: BsScrollspyDirective, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "anchors", predicate: ["anchor"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"spy\">\n <ul class=\"text-muted\">\n @for (dir of directives(); track dir; let i = $index) {\n <li>\n <span [attr.data-index]=\"i\" class=\"cursor-pointer\" [class]=\"'nav' + dir.element.nativeElement.tagName\" [class.fw-bold]=\"activeDirective()?.element === dir.element\" (click)=\"scrollToHeader(dir)\" [title]=\"dir.element.nativeElement.textContent\" #anchor>\n {{ dir.element.nativeElement.textContent }}\n </span>\n </li>\n }\n </ul>\n</div>\n<div class=\"content\">\n <ng-content></ng-content>\n</div>", styles: [":host{display:block}.spy>ul{list-style-type:none;padding-left:0}.spy>ul>li:hover{color:rgba(var(--bs-dark-rgb),var(--bs-text-opacity))!important}.spy>ul>li{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media(min-width:768px){:host{display:grid;grid-template-areas:\"content toc\";grid-template-columns:auto 200px;grid-template-rows:auto;gap:inherit;grid-area:main}.spy{position:sticky;top:5rem;right:0;z-index:2;height:calc(100vh - 7rem);overflow-y:auto;grid-area:toc}.spy>ul{padding-left:2rem}}.navH2{margin-left:20px}.navH3{margin-left:40px}.navH4{margin-left:60px}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
109
107
|
}
|
|
110
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
108
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: BsScrollspyComponent, decorators: [{
|
|
111
109
|
type: Component,
|
|
112
|
-
args: [{ selector: 'bs-scrollspy',
|
|
113
|
-
|
|
114
|
-
type:
|
|
115
|
-
|
|
116
|
-
}], anchors: [{
|
|
117
|
-
type: ViewChildren,
|
|
118
|
-
args: ['anchor']
|
|
119
|
-
}], onWindowScroll: [{
|
|
120
|
-
type: HostListener,
|
|
121
|
-
args: ['window:scroll']
|
|
122
|
-
}] } });
|
|
123
|
-
|
|
124
|
-
class BsScrollspyModule {
|
|
125
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: BsScrollspyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
126
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.6", ngImport: i0, type: BsScrollspyModule, declarations: [BsScrollspyComponent,
|
|
127
|
-
BsScrollspyDirective], exports: [BsScrollspyComponent,
|
|
128
|
-
BsScrollspyDirective] }); }
|
|
129
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: BsScrollspyModule }); }
|
|
130
|
-
}
|
|
131
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: BsScrollspyModule, decorators: [{
|
|
132
|
-
type: NgModule,
|
|
133
|
-
args: [{
|
|
134
|
-
declarations: [
|
|
135
|
-
BsScrollspyComponent,
|
|
136
|
-
BsScrollspyDirective
|
|
137
|
-
],
|
|
138
|
-
imports: [],
|
|
139
|
-
exports: [
|
|
140
|
-
BsScrollspyComponent,
|
|
141
|
-
BsScrollspyDirective
|
|
142
|
-
]
|
|
143
|
-
}]
|
|
144
|
-
}] });
|
|
110
|
+
args: [{ selector: 'bs-scrollspy', changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
111
|
+
'(window:scroll)': 'onWindowScroll()',
|
|
112
|
+
}, template: "<div class=\"spy\">\n <ul class=\"text-muted\">\n @for (dir of directives(); track dir; let i = $index) {\n <li>\n <span [attr.data-index]=\"i\" class=\"cursor-pointer\" [class]=\"'nav' + dir.element.nativeElement.tagName\" [class.fw-bold]=\"activeDirective()?.element === dir.element\" (click)=\"scrollToHeader(dir)\" [title]=\"dir.element.nativeElement.textContent\" #anchor>\n {{ dir.element.nativeElement.textContent }}\n </span>\n </li>\n }\n </ul>\n</div>\n<div class=\"content\">\n <ng-content></ng-content>\n</div>", styles: [":host{display:block}.spy>ul{list-style-type:none;padding-left:0}.spy>ul>li:hover{color:rgba(var(--bs-dark-rgb),var(--bs-text-opacity))!important}.spy>ul>li{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media(min-width:768px){:host{display:grid;grid-template-areas:\"content toc\";grid-template-columns:auto 200px;grid-template-rows:auto;gap:inherit;grid-area:main}.spy{position:sticky;top:5rem;right:0;z-index:2;height:calc(100vh - 7rem);overflow-y:auto;grid-area:toc}.spy>ul{padding-left:2rem}}.navH2{margin-left:20px}.navH3{margin-left:40px}.navH4{margin-left:60px}\n"] }]
|
|
113
|
+
}], ctorParameters: () => [], propDecorators: { directives: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => BsScrollspyDirective), { ...{ descendants: true }, isSignal: true }] }], anchors: [{ type: i0.ViewChildren, args: ['anchor', { isSignal: true }] }] } });
|
|
145
114
|
|
|
146
115
|
/**
|
|
147
116
|
* Generated bundle index. Do not edit.
|
|
148
117
|
*/
|
|
149
118
|
|
|
150
|
-
export { BsScrollOffsetService, BsScrollspyComponent, BsScrollspyDirective
|
|
119
|
+
export { BsScrollOffsetService, BsScrollspyComponent, BsScrollspyDirective };
|
|
151
120
|
//# sourceMappingURL=mintplayer-ng-bootstrap-scrollspy.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mintplayer-ng-bootstrap-scrollspy.mjs","sources":["../../../../libs/mintplayer-ng-bootstrap/scrollspy/src/services/scroll-offset/scroll-offset.service.ts","../../../../libs/mintplayer-ng-bootstrap/scrollspy/src/directives/scrollspy.directive.ts","../../../../libs/mintplayer-ng-bootstrap/scrollspy/src/component/scrollspy.component.ts","../../../../libs/mintplayer-ng-bootstrap/scrollspy/src/component/scrollspy.component.html","../../../../libs/mintplayer-ng-bootstrap/scrollspy/src/scrollspy.module.ts","../../../../libs/mintplayer-ng-bootstrap/scrollspy/mintplayer-ng-bootstrap-scrollspy.ts"],"sourcesContent":["import { Inject, Injectable } from '@angular/core';\nimport { ExtraOptions, ROUTER_CONFIGURATION } from '@angular/router';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BsScrollOffsetService {\n\n constructor(\n @Inject(ROUTER_CONFIGURATION) private routerConfig: ExtraOptions\n ) { }\n\n getScrollOffset(): [number, number] {\n if (!this.routerConfig.scrollOffset) {\n return [0, 0];\n } else if (Array.isArray(this.routerConfig.scrollOffset)) {\n return this.routerConfig.scrollOffset\n } else {\n return this.routerConfig.scrollOffset();\n }\n }\n}\n","import { Directive, ElementRef, inject } from '@angular/core';\n\n@Directive({\n selector: '[bsScrollspy]',\n standalone: false,\n})\nexport class BsScrollspyDirective {\n element = inject(ElementRef);\n}\n","import { DOCUMENT } from '@angular/common';\nimport { AfterContentInit, AfterViewInit, ChangeDetectionStrategy, Component, ContentChildren, effect, ElementRef, HostListener, inject, NgZone, QueryList, signal, ViewChildren } from '@angular/core';\nimport { BsScrollOffsetService } from '../services/scroll-offset/scroll-offset.service';\nimport { BsScrollspyDirective } from '../directives/scrollspy.directive';\n\n@Component({\n selector: 'bs-scrollspy',\n templateUrl: './scrollspy.component.html',\n styleUrls: ['./scrollspy.component.scss'],\n standalone: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BsScrollspyComponent implements AfterViewInit, AfterContentInit {\n\n private scrollOffsetService = inject(BsScrollOffsetService);\n private zone = inject(NgZone);\n doc = inject<Document>(DOCUMENT);\n\n private viewInit = signal<boolean>(false);\n private contentInit = signal<boolean>(false);\n\n @ContentChildren(BsScrollspyDirective, { descendants: true }) directives!: QueryList<BsScrollspyDirective>;\n @ViewChildren('anchor') anchors!: QueryList<ElementRef<HTMLSpanElement>>;\n\n activeDirective: BsScrollspyDirective | null = null;\n\n constructor() {\n effect(() => {\n const viewInit = this.viewInit();\n const contentInit = this.contentInit();\n if (viewInit && contentInit) {\n this.scrollToCurrentInSpy();\n }\n });\n }\n\n ngAfterViewInit() {\n this.viewInit.set(true);\n }\n\n ngAfterContentInit() {\n this.contentInit.set(true);\n }\n\n @HostListener('window:scroll')\n onWindowScroll() {\n this.setActiveDirective();\n this.scrollToCurrentInSpy();\n }\n\n setActiveDirective() {\n const offsetY = this.scrollOffsetService.getScrollOffset()[1];\n const dirs = this.directives.filter((d) => d.element.nativeElement.getBoundingClientRect().y < offsetY);\n\n if (this.directives.length === 0) {\n this.activeDirective = null;\n } else if (dirs.length === 0) {\n this.activeDirective = this.directives.get(0) ?? null;\n } else {\n this.activeDirective = dirs[dirs.length - 1];\n }\n }\n\n scrollToCurrentInSpy() {\n if ((typeof window !== 'undefined') && (window.innerWidth >= 768)) {\n if (this.activeDirective) {\n const index = this.directives.toArray().findIndex((v, i) => v === this.activeDirective);\n const anchor = this.anchors.get(index);\n if (anchor && anchor.nativeElement.parentElement) {\n anchor.nativeElement.scrollIntoView({ block: 'nearest', inline: 'nearest' });\n }\n }\n }\n }\n\n scrollToHeader(directive: BsScrollspyDirective) {\n if (typeof window !== 'undefined') {\n const header = directive.element.nativeElement;\n const offsetY = this.scrollOffsetService.getScrollOffset()[1];\n const y = header.getBoundingClientRect().top + window.scrollY - offsetY + 1;\n window.scrollTo({top: y, behavior: 'smooth'});\n }\n }\n}\n","<div class=\"spy\">\n <ul class=\"text-muted\">\n @for (dir of directives; track dir; let i = $index) {\n <li>\n <span [attr.data-index]=\"i\" class=\"cursor-pointer\" [class]=\"'nav' + dir.element.nativeElement.tagName\" [class.fw-bold]=\"activeDirective?.element === dir.element\" (click)=\"scrollToHeader(dir)\" [title]=\"dir.element.nativeElement.textContent\" #anchor>\n {{ dir.element.nativeElement.textContent }}\n </span>\n </li>\n }\n </ul>\n</div>\n<div class=\"content\">\n <ng-content></ng-content>\n</div>","import { NgModule } from '@angular/core';\nimport { BsScrollspyComponent } from './component/scrollspy.component';\nimport { BsScrollspyDirective } from './directives/scrollspy.directive';\n\n\n\n@NgModule({\n declarations: [\n BsScrollspyComponent,\n BsScrollspyDirective\n ],\n imports: [],\n exports: [\n BsScrollspyComponent,\n BsScrollspyDirective\n ]\n})\nexport class BsScrollspyModule { }\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-scrollspy.mjs","sources":["../../../../libs/mintplayer-ng-bootstrap/scrollspy/src/services/scroll-offset/scroll-offset.service.ts","../../../../libs/mintplayer-ng-bootstrap/scrollspy/src/directives/scrollspy.directive.ts","../../../../libs/mintplayer-ng-bootstrap/scrollspy/src/component/scrollspy.component.ts","../../../../libs/mintplayer-ng-bootstrap/scrollspy/src/component/scrollspy.component.html","../../../../libs/mintplayer-ng-bootstrap/scrollspy/mintplayer-ng-bootstrap-scrollspy.ts"],"sourcesContent":["import { inject, Injectable } from '@angular/core';\nimport { ExtraOptions, ROUTER_CONFIGURATION } from '@angular/router';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BsScrollOffsetService {\n\n private routerConfig = inject<ExtraOptions>(ROUTER_CONFIGURATION);\n\n getScrollOffset(): [number, number] {\n if (!this.routerConfig.scrollOffset) {\n return [0, 0];\n } else if (Array.isArray(this.routerConfig.scrollOffset)) {\n return this.routerConfig.scrollOffset\n } else {\n return this.routerConfig.scrollOffset();\n }\n }\n}\n","import { Directive, ElementRef, inject } from '@angular/core';\n\n@Directive({\n selector: '[bsScrollspy]',\n})\nexport class BsScrollspyDirective {\n element = inject(ElementRef);\n}\n","import { DOCUMENT } from '@angular/common';\nimport { AfterContentInit, AfterViewInit, ChangeDetectionStrategy, Component, contentChildren, effect, ElementRef, inject, signal, viewChildren } from '@angular/core';\nimport { BsScrollOffsetService } from '../services/scroll-offset/scroll-offset.service';\nimport { BsScrollspyDirective } from '../directives/scrollspy.directive';\n\n@Component({\n selector: 'bs-scrollspy',\n templateUrl: './scrollspy.component.html',\n styleUrls: ['./scrollspy.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '(window:scroll)': 'onWindowScroll()',\n },\n})\nexport class BsScrollspyComponent implements AfterViewInit, AfterContentInit {\n\n private scrollOffsetService = inject(BsScrollOffsetService);\n doc = inject<Document>(DOCUMENT);\n\n private viewInit = signal<boolean>(false);\n private contentInit = signal<boolean>(false);\n\n readonly directives = contentChildren(BsScrollspyDirective, { descendants: true });\n readonly anchors = viewChildren<ElementRef<HTMLSpanElement>>('anchor');\n\n activeDirective = signal<BsScrollspyDirective | null>(null);\n\n constructor() {\n effect(() => {\n const viewInit = this.viewInit();\n const contentInit = this.contentInit();\n if (viewInit && contentInit) {\n this.scrollToCurrentInSpy();\n }\n });\n }\n\n ngAfterViewInit() {\n this.viewInit.set(true);\n }\n\n ngAfterContentInit() {\n this.contentInit.set(true);\n }\n\n onWindowScroll() {\n this.setActiveDirective();\n this.scrollToCurrentInSpy();\n }\n\n setActiveDirective() {\n const offsetY = this.scrollOffsetService.getScrollOffset()[1];\n const allDirectives = this.directives();\n const dirs = allDirectives.filter((d) => d.element.nativeElement.getBoundingClientRect().y < offsetY);\n\n if (allDirectives.length === 0) {\n this.activeDirective.set(null);\n } else if (dirs.length === 0) {\n this.activeDirective.set(allDirectives[0] ?? null);\n } else {\n this.activeDirective.set(dirs[dirs.length - 1]);\n }\n }\n\n scrollToCurrentInSpy() {\n if ((typeof window !== 'undefined') && (window.innerWidth >= 768)) {\n if (this.activeDirective()) {\n const index = this.directives().findIndex((v, i) => v === this.activeDirective());\n const anchor = this.anchors()[index];\n if (anchor && anchor.nativeElement.parentElement) {\n anchor.nativeElement.scrollIntoView({ block: 'nearest', inline: 'nearest' });\n }\n }\n }\n }\n\n scrollToHeader(directive: BsScrollspyDirective) {\n if (typeof window !== 'undefined') {\n const header = directive.element.nativeElement;\n const offsetY = this.scrollOffsetService.getScrollOffset()[1];\n const y = header.getBoundingClientRect().top + window.scrollY - offsetY + 1;\n window.scrollTo({top: y, behavior: 'smooth'});\n }\n }\n}\n","<div class=\"spy\">\n <ul class=\"text-muted\">\n @for (dir of directives(); track dir; let i = $index) {\n <li>\n <span [attr.data-index]=\"i\" class=\"cursor-pointer\" [class]=\"'nav' + dir.element.nativeElement.tagName\" [class.fw-bold]=\"activeDirective()?.element === dir.element\" (click)=\"scrollToHeader(dir)\" [title]=\"dir.element.nativeElement.textContent\" #anchor>\n {{ dir.element.nativeElement.textContent }}\n </span>\n </li>\n }\n </ul>\n</div>\n<div class=\"content\">\n <ng-content></ng-content>\n</div>","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|