@mintplayer/ng-bootstrap 20.0.0 → 20.1.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/calendar/index.d.ts +3 -2
- package/code-snippet/index.d.ts +6 -6
- package/color-picker/index.d.ts +3 -2
- package/dock/index.d.ts +3 -2
- package/dropdown/index.d.ts +4 -3
- package/fesm2022/mintplayer-ng-bootstrap-accordion.mjs +13 -13
- package/fesm2022/mintplayer-ng-bootstrap-accordion.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-alert.mjs +10 -10
- package/fesm2022/mintplayer-ng-bootstrap-alert.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-badge.mjs +3 -3
- package/fesm2022/mintplayer-ng-bootstrap-badge.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-breadcrumb.mjs +10 -10
- package/fesm2022/mintplayer-ng-bootstrap-breadcrumb.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-button-group.mjs +3 -3
- package/fesm2022/mintplayer-ng-bootstrap-button-group.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-button-type.mjs +3 -3
- package/fesm2022/mintplayer-ng-bootstrap-button-type.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-calendar-month.mjs +9 -9
- package/fesm2022/mintplayer-ng-bootstrap-calendar-month.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-calendar.mjs +8 -7
- package/fesm2022/mintplayer-ng-bootstrap-calendar.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-card.mjs +10 -10
- package/fesm2022/mintplayer-ng-bootstrap-card.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-carousel.mjs +13 -13
- package/fesm2022/mintplayer-ng-bootstrap-carousel.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-close.mjs +3 -3
- package/fesm2022/mintplayer-ng-bootstrap-close.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-code-snippet.mjs +9 -11
- package/fesm2022/mintplayer-ng-bootstrap-code-snippet.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-color-picker.mjs +41 -34
- package/fesm2022/mintplayer-ng-bootstrap-color-picker.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-container.mjs +3 -3
- package/fesm2022/mintplayer-ng-bootstrap-container.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-context-menu.mjs +7 -7
- package/fesm2022/mintplayer-ng-bootstrap-context-menu.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-copy.mjs +3 -3
- package/fesm2022/mintplayer-ng-bootstrap-copy.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-datatable.mjs +13 -13
- package/fesm2022/mintplayer-ng-bootstrap-datatable.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-datepicker.mjs +3 -3
- package/fesm2022/mintplayer-ng-bootstrap-datepicker.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-dock.mjs +23 -22
- package/fesm2022/mintplayer-ng-bootstrap-dock.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-dropdown-divider.mjs +3 -3
- package/fesm2022/mintplayer-ng-bootstrap-dropdown-divider.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-dropdown-menu.mjs +10 -10
- package/fesm2022/mintplayer-ng-bootstrap-dropdown-menu.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-dropdown.mjs +18 -17
- package/fesm2022/mintplayer-ng-bootstrap-dropdown.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-enhanced-paste.mjs +3 -3
- 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-enum.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-file-upload.mjs +13 -13
- package/fesm2022/mintplayer-ng-bootstrap-file-upload.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-floating-labels.mjs +3 -3
- package/fesm2022/mintplayer-ng-bootstrap-floating-labels.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-font-color.mjs +3 -3
- package/fesm2022/mintplayer-ng-bootstrap-font-color.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-for.mjs +3 -3
- package/fesm2022/mintplayer-ng-bootstrap-for.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-form.mjs +13 -13
- package/fesm2022/mintplayer-ng-bootstrap-form.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-grid.mjs +19 -19
- package/fesm2022/mintplayer-ng-bootstrap-grid.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-has-overlay.mjs +3 -3
- package/fesm2022/mintplayer-ng-bootstrap-has-overlay.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-has-property.mjs +3 -3
- package/fesm2022/mintplayer-ng-bootstrap-has-property.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-in-list.mjs +3 -3
- package/fesm2022/mintplayer-ng-bootstrap-in-list.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-input-group.mjs +3 -3
- package/fesm2022/mintplayer-ng-bootstrap-input-group.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-instance-of.mjs +16 -16
- package/fesm2022/mintplayer-ng-bootstrap-instance-of.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-let.mjs +3 -3
- package/fesm2022/mintplayer-ng-bootstrap-let.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-linify.mjs +3 -3
- package/fesm2022/mintplayer-ng-bootstrap-linify.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-list-group.mjs +10 -10
- package/fesm2022/mintplayer-ng-bootstrap-list-group.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-markdown.mjs +12 -12
- package/fesm2022/mintplayer-ng-bootstrap-markdown.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-marquee.mjs +3 -3
- package/fesm2022/mintplayer-ng-bootstrap-marquee.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-modal.mjs +25 -25
- package/fesm2022/mintplayer-ng-bootstrap-modal.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-multiselect.mjs +16 -16
- package/fesm2022/mintplayer-ng-bootstrap-multiselect.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-navbar-toggler.mjs +3 -3
- package/fesm2022/mintplayer-ng-bootstrap-navbar-toggler.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-navbar.mjs +38 -39
- package/fesm2022/mintplayer-ng-bootstrap-navbar.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-navigation-lock.mjs +15 -13
- package/fesm2022/mintplayer-ng-bootstrap-navigation-lock.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-no-noscript.mjs +3 -3
- package/fesm2022/mintplayer-ng-bootstrap-no-noscript.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-offcanvas.mjs +25 -25
- package/fesm2022/mintplayer-ng-bootstrap-offcanvas.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-ordinal-number.mjs +3 -3
- package/fesm2022/mintplayer-ng-bootstrap-ordinal-number.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-pagination.mjs +3 -3
- package/fesm2022/mintplayer-ng-bootstrap-pagination.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-parallax.mjs +6 -6
- package/fesm2022/mintplayer-ng-bootstrap-parallax.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-placeholder.mjs +10 -10
- package/fesm2022/mintplayer-ng-bootstrap-placeholder.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-playlist-toggler.mjs +3 -3
- package/fesm2022/mintplayer-ng-bootstrap-playlist-toggler.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-popover.mjs +20 -19
- package/fesm2022/mintplayer-ng-bootstrap-popover.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-progress-bar.mjs +10 -10
- package/fesm2022/mintplayer-ng-bootstrap-progress-bar.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-range.mjs +10 -10
- package/fesm2022/mintplayer-ng-bootstrap-range.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-rating.mjs +3 -3
- package/fesm2022/mintplayer-ng-bootstrap-rating.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-resizable.mjs +10 -10
- package/fesm2022/mintplayer-ng-bootstrap-resizable.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-scheduler.mjs +38 -36
- package/fesm2022/mintplayer-ng-bootstrap-scheduler.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-scrollspy.mjs +13 -13
- package/fesm2022/mintplayer-ng-bootstrap-scrollspy.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-searchbox.mjs +16 -16
- package/fesm2022/mintplayer-ng-bootstrap-searchbox.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-select.mjs +13 -13
- package/fesm2022/mintplayer-ng-bootstrap-select.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-select2.mjs +13 -13
- package/fesm2022/mintplayer-ng-bootstrap-select2.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-shell.mjs +10 -10
- package/fesm2022/mintplayer-ng-bootstrap-shell.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-signature-pad.mjs +6 -4
- package/fesm2022/mintplayer-ng-bootstrap-signature-pad.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-slugify.mjs +3 -3
- package/fesm2022/mintplayer-ng-bootstrap-slugify.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-spinner.mjs +3 -3
- package/fesm2022/mintplayer-ng-bootstrap-spinner.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-split-string.mjs +3 -3
- package/fesm2022/mintplayer-ng-bootstrap-split-string.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-splitter.mjs +18 -16
- package/fesm2022/mintplayer-ng-bootstrap-splitter.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-sticky-footer.mjs +10 -10
- package/fesm2022/mintplayer-ng-bootstrap-sticky-footer.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-tab-control.mjs +14 -14
- package/fesm2022/mintplayer-ng-bootstrap-tab-control.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-table.mjs +3 -3
- package/fesm2022/mintplayer-ng-bootstrap-table.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-timepicker.mjs +3 -3
- package/fesm2022/mintplayer-ng-bootstrap-timepicker.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-toast.mjs +25 -25
- package/fesm2022/mintplayer-ng-bootstrap-toast.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-toggle-button.mjs +13 -13
- package/fesm2022/mintplayer-ng-bootstrap-toggle-button.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-tooltip.mjs +10 -10
- package/fesm2022/mintplayer-ng-bootstrap-tooltip.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-treeview.mjs +10 -10
- package/fesm2022/mintplayer-ng-bootstrap-treeview.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-trust-html.mjs +3 -3
- package/fesm2022/mintplayer-ng-bootstrap-trust-html.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-typeahead.mjs +3 -3
- package/fesm2022/mintplayer-ng-bootstrap-typeahead.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-uc-first.mjs +3 -3
- package/fesm2022/mintplayer-ng-bootstrap-uc-first.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-user-agent.mjs +3 -3
- package/fesm2022/mintplayer-ng-bootstrap-user-agent.mjs.map +1 -1
- package/fesm2022/mintplayer-ng-bootstrap-word-count.mjs +3 -3
- package/fesm2022/mintplayer-ng-bootstrap-word-count.mjs.map +1 -1
- package/navbar/index.d.ts +3 -2
- package/navigation-lock/index.d.ts +3 -1
- package/package.json +5 -5
- package/popover/index.d.ts +4 -3
- package/scheduler/index.d.ts +3 -2
- package/splitter/index.d.ts +3 -2
- package/src/styles/utilities/cursor.scss +3 -1
- package/src/styles/utilities/overflow.scss +3 -1
- package/src/styles/utilities/white-space.scss +3 -1
- package/src/styles/utilities/width.scss +3 -1
|
@@ -74,10 +74,10 @@ class BsTimelineService {
|
|
|
74
74
|
return false;
|
|
75
75
|
}
|
|
76
76
|
}
|
|
77
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.
|
|
78
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.
|
|
77
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: BsTimelineService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
78
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: BsTimelineService, providedIn: 'root' }); }
|
|
79
79
|
}
|
|
80
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
80
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: BsTimelineService, decorators: [{
|
|
81
81
|
type: Injectable,
|
|
82
82
|
args: [{
|
|
83
83
|
providedIn: 'root'
|
|
@@ -149,10 +149,10 @@ class ResourceGroupPresenterComponent {
|
|
|
149
149
|
toggleExpanded() {
|
|
150
150
|
this.isExpanded$.next(!this.isExpanded$.value);
|
|
151
151
|
}
|
|
152
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.
|
|
153
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.
|
|
152
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: ResourceGroupPresenterComponent, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
153
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.7", type: ResourceGroupPresenterComponent, isStandalone: false, selector: "bs-resource-group-presenter", inputs: { level: "level", resourceGroup: "resourceGroup", timeSlots: "timeSlots", isExpanded: "isExpanded" }, ngImport: i0, template: "@if (data$ | async; as data) {\n\n <!-- Data is a resource group -->\n @if (data.resourceGroup) {\n <!-- Header -->\n @if (timeSlots$ | async; as timeSlots) {\n <tr class=\"p-0 cursor-pointer\" [title]=\"data.resourceGroup.description\">\n @if (colSpan$ | async; as colspan) {\n <td class=\"p-2 cursor-pointer\" [colSpan]=\"colspan + 1\" (click)=\"toggleExpanded()\">\n <span class=\"p-2 align-middle position-sticky\">\n @if (isExpanded$ | async) {\n <span [innerHTML]=\"chevronDown\" [style.padding-left.px]=\"level * 20\"></span>\n } @else {\n <span [innerHTML]=\"chevronRight\" [style.padding-left.px]=\"level * 20\"></span>\n }\n {{ data.resourceGroup.description }}\n </span>\n </td>\n }\n </tr>\n }\n\n <!-- Subgroups or resources -->\n @if (isExpanded$ | async) {\n @if (timeSlots$ | async; as timeSlots) {\n @for (child of data.resourceGroup.children; track child) {\n <bs-resource-group-presenter [resourceGroup]=\"child\" [timeSlots]=\"timeSlots\" [level]=\"level + 1\"></bs-resource-group-presenter>\n }\n }\n }\n }\n\n <!-- Data is a resource -->\n @if (data.resource) {\n <tr class=\"p-0 bordered\" [title]=\"data.resource.description\">\n <td class=\"p-0 bg-white\">\n <div class=\"p-2\">{{ data.resource.description }}</div>\n </td>\n @for (slots of (timeSlots$ | async); track $index) {\n @for (slot of slots.slots; track slot) {\n <td class=\"bg-white border-1\">\n <!-- {{ slot.start | date: 'dd/MM/yyyy HH:mm:ss' }} -->\n </td>\n }\n }\n </tr>\n }\n}", styles: [":host{display:contents}tr{border-bottom-width:1px}tr:not(.bordered) td span.position-sticky{left:0;right:0}\n"], dependencies: [{ kind: "component", type: ResourceGroupPresenterComponent, selector: "bs-resource-group-presenter", inputs: ["level", "resourceGroup", "timeSlots", "isExpanded"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }] }); }
|
|
154
154
|
}
|
|
155
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
155
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: ResourceGroupPresenterComponent, decorators: [{
|
|
156
156
|
type: Component,
|
|
157
157
|
args: [{ selector: 'bs-resource-group-presenter', standalone: false, template: "@if (data$ | async; as data) {\n\n <!-- Data is a resource group -->\n @if (data.resourceGroup) {\n <!-- Header -->\n @if (timeSlots$ | async; as timeSlots) {\n <tr class=\"p-0 cursor-pointer\" [title]=\"data.resourceGroup.description\">\n @if (colSpan$ | async; as colspan) {\n <td class=\"p-2 cursor-pointer\" [colSpan]=\"colspan + 1\" (click)=\"toggleExpanded()\">\n <span class=\"p-2 align-middle position-sticky\">\n @if (isExpanded$ | async) {\n <span [innerHTML]=\"chevronDown\" [style.padding-left.px]=\"level * 20\"></span>\n } @else {\n <span [innerHTML]=\"chevronRight\" [style.padding-left.px]=\"level * 20\"></span>\n }\n {{ data.resourceGroup.description }}\n </span>\n </td>\n }\n </tr>\n }\n\n <!-- Subgroups or resources -->\n @if (isExpanded$ | async) {\n @if (timeSlots$ | async; as timeSlots) {\n @for (child of data.resourceGroup.children; track child) {\n <bs-resource-group-presenter [resourceGroup]=\"child\" [timeSlots]=\"timeSlots\" [level]=\"level + 1\"></bs-resource-group-presenter>\n }\n }\n }\n }\n\n <!-- Data is a resource -->\n @if (data.resource) {\n <tr class=\"p-0 bordered\" [title]=\"data.resource.description\">\n <td class=\"p-0 bg-white\">\n <div class=\"p-2\">{{ data.resource.description }}</div>\n </td>\n @for (slots of (timeSlots$ | async); track $index) {\n @for (slot of slots.slots; track slot) {\n <td class=\"bg-white border-1\">\n <!-- {{ slot.start | date: 'dd/MM/yyyy HH:mm:ss' }} -->\n </td>\n }\n }\n </tr>\n }\n}", styles: [":host{display:contents}tr{border-bottom-width:1px}tr:not(.bordered) td span.position-sticky{left:0;right:0}\n"] }]
|
|
158
158
|
}], ctorParameters: () => [{ type: i1.DomSanitizer }], propDecorators: { level: [{
|
|
@@ -169,10 +169,10 @@ class BsSecondsTimespanPipe {
|
|
|
169
169
|
transform(value) {
|
|
170
170
|
return (value.end.getTime() - value.start.getTime()) / 1000;
|
|
171
171
|
}
|
|
172
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.
|
|
173
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.
|
|
172
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: BsSecondsTimespanPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
173
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.1.7", ngImport: i0, type: BsSecondsTimespanPipe, isStandalone: false, name: "bsSecondsTimespan" }); }
|
|
174
174
|
}
|
|
175
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
175
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: BsSecondsTimespanPipe, decorators: [{
|
|
176
176
|
type: Pipe,
|
|
177
177
|
args: [{
|
|
178
178
|
name: 'bsSecondsTimespan',
|
|
@@ -188,10 +188,10 @@ class BsSecondsTodayOffsetPipe {
|
|
|
188
188
|
today.setSeconds(0);
|
|
189
189
|
return (value.start.getTime() - today.getTime()) / 1000;
|
|
190
190
|
}
|
|
191
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.
|
|
192
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.
|
|
191
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: BsSecondsTodayOffsetPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
192
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.1.7", ngImport: i0, type: BsSecondsTodayOffsetPipe, isStandalone: false, name: "bsSecondsTodayOffset" }); }
|
|
193
193
|
}
|
|
194
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
194
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: BsSecondsTodayOffsetPipe, decorators: [{
|
|
195
195
|
type: Pipe,
|
|
196
196
|
args: [{
|
|
197
197
|
name: 'bsSecondsTodayOffset',
|
|
@@ -209,10 +209,10 @@ class DayOfWeekPipe {
|
|
|
209
209
|
return dayOfWeek;
|
|
210
210
|
}
|
|
211
211
|
}
|
|
212
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.
|
|
213
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.
|
|
212
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: DayOfWeekPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
213
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.1.7", ngImport: i0, type: DayOfWeekPipe, isStandalone: false, name: "dayOfWeek" }); }
|
|
214
214
|
}
|
|
215
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
215
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: DayOfWeekPipe, decorators: [{
|
|
216
216
|
type: Pipe,
|
|
217
217
|
args: [{
|
|
218
218
|
name: 'dayOfWeek',
|
|
@@ -222,10 +222,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
|
|
|
222
222
|
|
|
223
223
|
/// <reference types="../../types" />
|
|
224
224
|
class BsSchedulerComponent {
|
|
225
|
-
constructor(sanitizer, calendarMonthService, timelineService) {
|
|
225
|
+
constructor(sanitizer, calendarMonthService, timelineService, destroy) {
|
|
226
226
|
this.sanitizer = sanitizer;
|
|
227
227
|
this.calendarMonthService = calendarMonthService;
|
|
228
228
|
this.timelineService = timelineService;
|
|
229
|
+
this.destroy = destroy;
|
|
229
230
|
this.resources$ = new BehaviorSubject([]);
|
|
230
231
|
this.weekOptions$ = new BehaviorSubject({ unitHeight: 30 });
|
|
231
232
|
this.timelineOptions$ = new BehaviorSubject({ unitWidth: 50 });
|
|
@@ -380,6 +381,7 @@ class BsSchedulerComponent {
|
|
|
380
381
|
}
|
|
381
382
|
}
|
|
382
383
|
}))
|
|
384
|
+
.pipe(takeUntilDestroyed(this.destroy))
|
|
383
385
|
.subscribe((timeslots) => {
|
|
384
386
|
// For performance reasons, we're not using an observable here, but persist the timeslots in a BehaviorSubject.
|
|
385
387
|
this.timeSlots$.next(timeslots);
|
|
@@ -463,7 +465,7 @@ class BsSchedulerComponent {
|
|
|
463
465
|
return new Date(currentWeekOrMonth.getFullYear(), currentWeekOrMonth.getMonth() + (next ? 1 : -1), 1);
|
|
464
466
|
}
|
|
465
467
|
}
|
|
466
|
-
}), take(1))
|
|
468
|
+
}), take(1), takeUntilDestroyed(this.destroy))
|
|
467
469
|
.subscribe((w) => this.currentWeekOrMonth$.next(w));
|
|
468
470
|
}
|
|
469
471
|
onHoverEvent(ev) {
|
|
@@ -500,7 +502,7 @@ class BsSchedulerComponent {
|
|
|
500
502
|
}
|
|
501
503
|
onStartDragEvent(eventPart, ev) {
|
|
502
504
|
ev.preventDefault();
|
|
503
|
-
this.hoveredTimeSlot$.pipe(take(1)).subscribe((hoveredTimeSlot) => {
|
|
505
|
+
this.hoveredTimeSlot$.pipe(take(1), takeUntilDestroyed(this.destroy)).subscribe((hoveredTimeSlot) => {
|
|
504
506
|
if (eventPart.event) {
|
|
505
507
|
this.dragStartTimeslot = hoveredTimeSlot;
|
|
506
508
|
this.operation = {
|
|
@@ -567,7 +569,7 @@ class BsSchedulerComponent {
|
|
|
567
569
|
return slot;
|
|
568
570
|
}
|
|
569
571
|
onMousemove(ev) {
|
|
570
|
-
this.timeSlots$.pipe(take(1)).subscribe((timeSlots) => {
|
|
572
|
+
this.timeSlots$.pipe(take(1), takeUntilDestroyed(this.destroy)).subscribe((timeSlots) => {
|
|
571
573
|
const hovered = this.getHoveredTimeslot(ev, timeSlots);
|
|
572
574
|
this.hoveredTimeSlot$.next(hovered);
|
|
573
575
|
if (this.operation) {
|
|
@@ -589,7 +591,7 @@ class BsSchedulerComponent {
|
|
|
589
591
|
}
|
|
590
592
|
return ev;
|
|
591
593
|
}))
|
|
592
|
-
.pipe(take(1))
|
|
594
|
+
.pipe(take(1), takeUntilDestroyed(this.destroy))
|
|
593
595
|
.subscribe((ev) => this.previewEvent$.next(ev));
|
|
594
596
|
}
|
|
595
597
|
else if (this.dragStartTimeslot.start.getTime() > hovered.start.getTime()) {
|
|
@@ -603,7 +605,7 @@ class BsSchedulerComponent {
|
|
|
603
605
|
}
|
|
604
606
|
return ev;
|
|
605
607
|
}))
|
|
606
|
-
.pipe(take(1))
|
|
608
|
+
.pipe(take(1), takeUntilDestroyed(this.destroy))
|
|
607
609
|
.subscribe((ev) => this.previewEvent$.next(ev));
|
|
608
610
|
}
|
|
609
611
|
}
|
|
@@ -627,7 +629,7 @@ class BsSchedulerComponent {
|
|
|
627
629
|
return ev;
|
|
628
630
|
}
|
|
629
631
|
}))
|
|
630
|
-
.pipe(take(1))
|
|
632
|
+
.pipe(take(1), takeUntilDestroyed(this.destroy))
|
|
631
633
|
.subscribe(ev => this.previewEvent$.next(ev));
|
|
632
634
|
}
|
|
633
635
|
}
|
|
@@ -650,7 +652,7 @@ class BsSchedulerComponent {
|
|
|
650
652
|
}
|
|
651
653
|
return ev;
|
|
652
654
|
}))
|
|
653
|
-
.pipe(take(1))
|
|
655
|
+
.pipe(take(1), takeUntilDestroyed(this.destroy))
|
|
654
656
|
.subscribe((ev) => this.previewEvent$.next(ev));
|
|
655
657
|
}
|
|
656
658
|
}
|
|
@@ -666,7 +668,7 @@ class BsSchedulerComponent {
|
|
|
666
668
|
case EDragOperation.createEvent:
|
|
667
669
|
{
|
|
668
670
|
combineLatest([this.previewEvent$])
|
|
669
|
-
.pipe(take(1))
|
|
671
|
+
.pipe(take(1), takeUntilDestroyed(this.destroy))
|
|
670
672
|
.subscribe(([previewEvent]) => {
|
|
671
673
|
if (previewEvent) {
|
|
672
674
|
this.operation = null;
|
|
@@ -693,7 +695,7 @@ class BsSchedulerComponent {
|
|
|
693
695
|
{
|
|
694
696
|
this.previewEvent$
|
|
695
697
|
.pipe(filter((ev) => !!ev))
|
|
696
|
-
.pipe(take(1))
|
|
698
|
+
.pipe(take(1), takeUntilDestroyed(this.destroy))
|
|
697
699
|
.subscribe((previewEvent) => {
|
|
698
700
|
if (this.operation && this.operation.event && previewEvent) {
|
|
699
701
|
this.operation.event.start = previewEvent.start;
|
|
@@ -709,13 +711,13 @@ class BsSchedulerComponent {
|
|
|
709
711
|
}
|
|
710
712
|
}
|
|
711
713
|
}
|
|
712
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.
|
|
713
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.0", type: BsSchedulerComponent, isStandalone: false, selector: "bs-scheduler", inputs: { mode: "mode", weekOptions: "weekOptions", timelineOptions: "timelineOptions", maxInnerHeight: "maxInnerHeight", resources: "resources" }, outputs: { modeChange: "modeChange", weekOptionsChange: "weekOptionsChange", timelineOptionsChange: "timelineOptionsChange" }, host: { listeners: { "document:mousemove": "onMousemove($event)", "document:mouseup": "onMouseUp($event)" } }, viewQueries: [{ propertyName: "timeSlotElements", predicate: ["slot"], descendants: true }], ngImport: i0, template: "@switch (mode$ | async) {\n @case (modes.week) {\n <div class=\"d-flex flex-column w-100 overflow-y-auto mb-0 week-schedule\" [style.max-height.px]=\"null\">\n <div class=\"calendar-head\">\n <div class=\"w-100 d-flex flex-row\">\n <div class=\"d-flex calendar-left justify-content-between\">\n <button class=\"btn btn-default flex-start\" (click)=\"onPreviousWeekOrMonth()\">\n <span [innerHTML]=\"chevronLeft\" class=\"px-0\"></span>\n </button>\n <button class=\"btn btn-default flex-end\" (click)=\"onNextWeekOrMonth()\">\n <span [innerHTML]=\"chevronRight\" class=\"px-0\"></span>\n </button>\n </div>\n @for (day of (shownDays$ | async); track day) {\n <div class=\"flex-grow-1 calendar-head-cell\">\n <span class=\"d-block col-form-label text-center text-nowrap\">\n <span>{{ day | date: 'dd-MM' }}</span><span class=\"d-none d-lg-inline-block\">-{{ day | date: 'yyyy' }}</span>\n </span>\n </div>\n }\n </div>\n </div>\n <div class=\"calendar-body\" [style.height.px]=\"maxInnerHeight\">\n @if (timeSlots$ | async; as row) {\n <div class=\"position-relative\">\n @if (weekOptions$ | async; as weekOptions) {\n <!-- Timeslots -->\n @for (timeslots of row; track timeslots; let i = $index) {\n <div class=\"d-flex flex-row p-0 timeslot\" [style.height.px]=\"weekOptions.unitHeight\">\n <div class=\"calendar-cell calendar-left align-top px-2 py-0\">{{ timeslots.slots[0].start | date: 'HH:mm:ss' }}</div>\n @for (slot of timeslots.slots; track slot.start; let j = $index) {\n <div class=\"calendar-cell flex-grow-1\" #slot (mousedown)=\"onCreateEvent($event, slot)\" [attr.data-row]=\"i\" [attr.data-column]=\"j\"></div>\n }\n </div>\n }\n \n <!-- Events -->\n @if (timeSlotDuration$ | async; as timeSlotDuration) {\n @if (timelinedEventPartsForThisWeek$ | async; as partData) {\n @for (eventPart of partData.parts; track eventPart) {\n <div class=\"event p-0\"\n [style.top.px]=\"(eventPart.part | bsSecondsTodayOffset) / timeSlotDuration * weekOptions.unitHeight\"\n [style.height.px]=\"(eventPart.part | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\"\n [style.left]=\"'calc(90px + ((100% - 90px) / 7 * ' + ((eventPart.part | dayOfWeek) - 1) + '))'\">\n <div class=\"event-inner\" [class.hover]=\"(hoveredEvent$ | async) === eventPart.part.event\"\n [style.width]=\"'calc(100% / ' + partData.total + ')'\"\n [style.height.px]=\"(eventPart.part | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\"\n [style.margin-left]=\"'calc(100% / ' + partData.total + ' * ' + eventPart.index + ')'\">\n \n @if (eventPart.part.start === eventPart.part.event?.start) {\n <div class=\"event-resize top\" (mousedown)=\"onStartResizeEvent(eventPart.part.event, 'top')\"></div>\n }\n <div class=\"event-border\"></div>\n @if (eventPart.part.event) {\n <div class=\"event-wrapper\"\n (mousedown)=\"onStartDragEvent(eventPart.part, $event)\"\n (mouseenter)=\"onHoverEvent(eventPart.part.event)\"\n (mouseleave)=\"onLeaveEvent(eventPart.part.event)\">\n <div class=\"event-bg\" [style.background-color]=\"eventPart.part.event.color\"></div>\n <div class=\"event-label\">{{ eventPart.part.event.description }}</div>\n </div>\n }\n @if (eventPart.part.end === eventPart.part.event?.end) {\n <div class=\"event-resize bottom\" (mousedown)=\"onStartResizeEvent(eventPart.part.event, 'bottom')\"></div>\n }\n </div>\n </div>\n }\n }\n @if (previewEventPartsForThisWeek$ | async; as previewPartData) {\n @for (eventPart of previewPartData; track eventPart) {\n <div class=\"event preview p-0\"\n [style.top.px]=\"(eventPart | bsSecondsTodayOffset) / timeSlotDuration * weekOptions.unitHeight\"\n [style.height.px]=\"(eventPart | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\"\n [style.left]=\"'calc(90px + ((100% - 90px) / 7 * ' + ((eventPart | dayOfWeek) - 1) + '))'\">\n <div class=\"event-inner w-100\"\n [style.height.px]=\"(eventPart | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\">\n </div>\n </div>\n }\n }\n }\n }\n </div>\n }\n </div>\n </div>\n }\n @case (modes.timeline) {\n <div class=\"d-flex flex-column-100 overflow-y-auto mb-0 bg-white timeline\">\n <div class=\"calendar-head d-flex\">\n <button class=\"btn flex-start\" (click)=\"onPreviousWeekOrMonth()\">\n <span [innerHTML]=\"chevronLeft\" class=\"px-0\"></span>\n </button>\n <div class=\"flex-grow-1 h3 py-2 mb-0 text-center\">{{ currentWeekOrMonth$ | async | date: 'MMMM yyyy' }}</div>\n <button class=\"btn flex-start\" (click)=\"onNextWeekOrMonth()\">\n <span [innerHTML]=\"chevronRight\" class=\"px-0\"></span>\n </button>\n </div>\n \n <div class=\"calendar-body table-responsive overflow-x-auto\">\n <table class=\"table mb-0\">\n @if (timeSlots$ | async; as timeSlots) {\n <tr>\n <td></td>\n @for (day of timeSlots; track day) {\n <td [attr.colspan]=\"day.slots.length\" class=\"text-center px-2\">\n <span class=\"position-sticky day-label\">{{ day.stamp | date: 'd EE' }}</span>\n </td>\n }\n </tr>\n <tr>\n <td></td>\n @if (timelineOptions$ | async; as timelineOptions) {\n @for (day of timeSlots; track day) {\n @for (slot of day.slots; track slot) {\n <td>\n <span class=\"d-block p-0 text-center\" [style.width.px]=\"timelineOptions.unitWidth\">\n {{ slot.start | date: 'HH:mm' }}\n </span>\n </td>\n }\n }\n }\n </tr>\n @for (group of (resources$ | async); track group) {\n <bs-resource-group-presenter [resourceGroup]=\"group\" [timeSlots]=\"timeSlots\"></bs-resource-group-presenter>\n }\n }\n </table>\n </div>\n </div>\n }\n}", styles: [":host{display:block;border:1px solid #333;border-top-right-radius:10px;border-top-left-radius:10px;overflow:hidden}.calendar-head{background:#f7f7f7;color:#007aff}.tabel .calendar-head{flex:0 0 auto}.tabel .calendar-body{display:block;flex:1 1 auto}.week-schedule .calendar-head>div{padding-right:18px}.week-schedule .calendar-body{overflow-y:scroll;overflow-x:hidden}.week-schedule .calendar-body .calendar-cell{border-right:1px solid #DEE2E6;border-bottom:1px solid #DEE2E6;cursor:default}.week-schedule .calendar-body .calendar-cell.hover{border-top-width:3px}.week-schedule .calendar-left{width:90px}.week-schedule .event{z-index:5;width:calc((100% - 90px) / 7);height:100px;overflow:hidden;position:absolute;-webkit-user-select:none;user-select:none;pointer-events:none}.week-schedule .event.preview{background:#666;opacity:.6}.week-schedule .event .event-border{background:#000;top:0;left:0;bottom:3px;width:3px;position:absolute;z-index:10;opacity:.3}.week-schedule .event .event-inner{position:relative;inset:0 5px 5px 0;cursor:move;pointer-events:all;overflow:hidden}.week-schedule .event .event-inner .event-wrapper{width:calc(100% - 2px);margin:1px auto 1px 0;height:calc(100% - 3px)}.week-schedule .event .event-inner .event-wrapper .event-bg{opacity:.5;height:100%;transition:opacity .15s ease-in-out}.week-schedule .event .event-inner .event-wrapper .event-label{position:absolute;top:0;font-size:12px;font-weight:600;padding:4px}.week-schedule .event .event-inner .event-resize{position:absolute;cursor:ns-resize;height:4px;left:0;right:0;z-index:400}.week-schedule .event .event-inner .event-resize.top{top:0}.week-schedule .event .event-inner .event-resize.bottom{bottom:0}.week-schedule .event .event-inner .event-resize:hover{background:#ddd}.week-schedule .event .event-inner.hover .event-bg{opacity:.7!important}@media (max-width: 767px){.week-schedule.tabel .calendar-head .calendar-head-cell{text-orientation:sideways;writing-mode:vertical-rl}}.timeline.tabel{flex-flow:column}.timeline .calendar-body .tabel{background-color:#f7f7f7}.timeline .calendar-body .tabel tr:first-child td{background-color:#fff;border:1px solid #000}.timeline .calendar-body .tabel tr:first-child td:first-child{min-width:10rem}.timeline .calendar-body .tabel tr:first-child span.day-label{left:0;right:0}.timeline .calendar-body .tabel tr:nth-child(2) td{border-width:1px;border-color:inherit}.timeline .calendar-body .tabel>:not(:first-child){border-top:none!important}\n"], dependencies: [{ kind: "component", type: ResourceGroupPresenterComponent, selector: "bs-resource-group-presenter", inputs: ["level", "resourceGroup", "timeSlots", "isExpanded"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.DatePipe, name: "date" }, { kind: "pipe", type: BsSecondsTimespanPipe, name: "bsSecondsTimespan" }, { kind: "pipe", type: BsSecondsTodayOffsetPipe, name: "bsSecondsTodayOffset" }, { kind: "pipe", type: DayOfWeekPipe, name: "dayOfWeek" }] }); }
|
|
714
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: BsSchedulerComponent, deps: [{ token: i1.DomSanitizer }, { token: i2.BsCalendarMonthService }, { token: BsTimelineService }, { token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
715
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.7", type: BsSchedulerComponent, isStandalone: false, selector: "bs-scheduler", inputs: { mode: "mode", weekOptions: "weekOptions", timelineOptions: "timelineOptions", maxInnerHeight: "maxInnerHeight", resources: "resources" }, outputs: { modeChange: "modeChange", weekOptionsChange: "weekOptionsChange", timelineOptionsChange: "timelineOptionsChange" }, host: { listeners: { "document:mousemove": "onMousemove($event)", "document:mouseup": "onMouseUp($event)" } }, viewQueries: [{ propertyName: "timeSlotElements", predicate: ["slot"], descendants: true }], ngImport: i0, template: "@switch (mode$ | async) {\n @case (modes.week) {\n <div class=\"d-flex flex-column w-100 overflow-y-auto mb-0 week-schedule\" [style.max-height.px]=\"null\">\n <div class=\"calendar-head\">\n <div class=\"w-100 d-flex flex-row\">\n <div class=\"d-flex calendar-left justify-content-between\">\n <button class=\"btn btn-default flex-start\" (click)=\"onPreviousWeekOrMonth()\">\n <span [innerHTML]=\"chevronLeft\" class=\"px-0\"></span>\n </button>\n <button class=\"btn btn-default flex-end\" (click)=\"onNextWeekOrMonth()\">\n <span [innerHTML]=\"chevronRight\" class=\"px-0\"></span>\n </button>\n </div>\n @for (day of (shownDays$ | async); track day) {\n <div class=\"flex-grow-1 calendar-head-cell\">\n <span class=\"d-block col-form-label text-center text-nowrap\">\n <span>{{ day | date: 'dd-MM' }}</span><span class=\"d-none d-lg-inline-block\">-{{ day | date: 'yyyy' }}</span>\n </span>\n </div>\n }\n </div>\n </div>\n <div class=\"calendar-body\" [style.height.px]=\"maxInnerHeight\">\n @if (timeSlots$ | async; as row) {\n <div class=\"position-relative\">\n @if (weekOptions$ | async; as weekOptions) {\n <!-- Timeslots -->\n @for (timeslots of row; track timeslots; let i = $index) {\n <div class=\"d-flex flex-row p-0 timeslot\" [style.height.px]=\"weekOptions.unitHeight\">\n <div class=\"calendar-cell calendar-left align-top px-2 py-0\">{{ timeslots.slots[0].start | date: 'HH:mm:ss' }}</div>\n @for (slot of timeslots.slots; track slot.start; let j = $index) {\n <div class=\"calendar-cell flex-grow-1\" #slot (mousedown)=\"onCreateEvent($event, slot)\" [attr.data-row]=\"i\" [attr.data-column]=\"j\"></div>\n }\n </div>\n }\n \n <!-- Events -->\n @if (timeSlotDuration$ | async; as timeSlotDuration) {\n @if (timelinedEventPartsForThisWeek$ | async; as partData) {\n @for (eventPart of partData.parts; track eventPart) {\n <div class=\"event p-0\"\n [style.top.px]=\"(eventPart.part | bsSecondsTodayOffset) / timeSlotDuration * weekOptions.unitHeight\"\n [style.height.px]=\"(eventPart.part | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\"\n [style.left]=\"'calc(90px + ((100% - 90px) / 7 * ' + ((eventPart.part | dayOfWeek) - 1) + '))'\">\n <div class=\"event-inner\" [class.hover]=\"(hoveredEvent$ | async) === eventPart.part.event\"\n [style.width]=\"'calc(100% / ' + partData.total + ')'\"\n [style.height.px]=\"(eventPart.part | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\"\n [style.margin-left]=\"'calc(100% / ' + partData.total + ' * ' + eventPart.index + ')'\">\n \n @if (eventPart.part.start === eventPart.part.event?.start) {\n <div class=\"event-resize top\" (mousedown)=\"onStartResizeEvent(eventPart.part.event, 'top')\"></div>\n }\n <div class=\"event-border\"></div>\n @if (eventPart.part.event) {\n <div class=\"event-wrapper\"\n (mousedown)=\"onStartDragEvent(eventPart.part, $event)\"\n (mouseenter)=\"onHoverEvent(eventPart.part.event)\"\n (mouseleave)=\"onLeaveEvent(eventPart.part.event)\">\n <div class=\"event-bg\" [style.background-color]=\"eventPart.part.event.color\"></div>\n <div class=\"event-label\">{{ eventPart.part.event.description }}</div>\n </div>\n }\n @if (eventPart.part.end === eventPart.part.event?.end) {\n <div class=\"event-resize bottom\" (mousedown)=\"onStartResizeEvent(eventPart.part.event, 'bottom')\"></div>\n }\n </div>\n </div>\n }\n }\n @if (previewEventPartsForThisWeek$ | async; as previewPartData) {\n @for (eventPart of previewPartData; track eventPart) {\n <div class=\"event preview p-0\"\n [style.top.px]=\"(eventPart | bsSecondsTodayOffset) / timeSlotDuration * weekOptions.unitHeight\"\n [style.height.px]=\"(eventPart | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\"\n [style.left]=\"'calc(90px + ((100% - 90px) / 7 * ' + ((eventPart | dayOfWeek) - 1) + '))'\">\n <div class=\"event-inner w-100\"\n [style.height.px]=\"(eventPart | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\">\n </div>\n </div>\n }\n }\n }\n }\n </div>\n }\n </div>\n </div>\n }\n @case (modes.timeline) {\n <div class=\"d-flex flex-column-100 overflow-y-auto mb-0 bg-white timeline\">\n <div class=\"calendar-head d-flex\">\n <button class=\"btn flex-start\" (click)=\"onPreviousWeekOrMonth()\">\n <span [innerHTML]=\"chevronLeft\" class=\"px-0\"></span>\n </button>\n <div class=\"flex-grow-1 h3 py-2 mb-0 text-center\">{{ currentWeekOrMonth$ | async | date: 'MMMM yyyy' }}</div>\n <button class=\"btn flex-start\" (click)=\"onNextWeekOrMonth()\">\n <span [innerHTML]=\"chevronRight\" class=\"px-0\"></span>\n </button>\n </div>\n \n <div class=\"calendar-body table-responsive overflow-x-auto\">\n <table class=\"table mb-0\">\n @if (timeSlots$ | async; as timeSlots) {\n <tr>\n <td></td>\n @for (day of timeSlots; track day) {\n <td [attr.colspan]=\"day.slots.length\" class=\"text-center px-2\">\n <span class=\"position-sticky day-label\">{{ day.stamp | date: 'd EE' }}</span>\n </td>\n }\n </tr>\n <tr>\n <td></td>\n @if (timelineOptions$ | async; as timelineOptions) {\n @for (day of timeSlots; track day) {\n @for (slot of day.slots; track slot) {\n <td>\n <span class=\"d-block p-0 text-center\" [style.width.px]=\"timelineOptions.unitWidth\">\n {{ slot.start | date: 'HH:mm' }}\n </span>\n </td>\n }\n }\n }\n </tr>\n @for (group of (resources$ | async); track group) {\n <bs-resource-group-presenter [resourceGroup]=\"group\" [timeSlots]=\"timeSlots\"></bs-resource-group-presenter>\n }\n }\n </table>\n </div>\n </div>\n }\n}", styles: [":host{display:block;border:1px solid #333;border-top-right-radius:10px;border-top-left-radius:10px;overflow:hidden}.calendar-head{background:#f7f7f7;color:#007aff}.tabel .calendar-head{flex:0 0 auto}.tabel .calendar-body{display:block;flex:1 1 auto}.week-schedule .calendar-head>div{padding-right:18px}.week-schedule .calendar-body{overflow-y:scroll;overflow-x:hidden}.week-schedule .calendar-body .calendar-cell{border-right:1px solid #DEE2E6;border-bottom:1px solid #DEE2E6;cursor:default}.week-schedule .calendar-body .calendar-cell.hover{border-top-width:3px}.week-schedule .calendar-left{width:90px}.week-schedule .event{z-index:5;width:calc((100% - 90px) / 7);height:100px;overflow:hidden;position:absolute;-webkit-user-select:none;user-select:none;pointer-events:none}.week-schedule .event.preview{background:#666;opacity:.6}.week-schedule .event .event-border{background:#000;top:0;left:0;bottom:3px;width:3px;position:absolute;z-index:10;opacity:.3}.week-schedule .event .event-inner{position:relative;inset:0 5px 5px 0;cursor:move;pointer-events:all;overflow:hidden}.week-schedule .event .event-inner .event-wrapper{width:calc(100% - 2px);margin:1px auto 1px 0;height:calc(100% - 3px)}.week-schedule .event .event-inner .event-wrapper .event-bg{opacity:.5;height:100%;transition:opacity .15s ease-in-out}.week-schedule .event .event-inner .event-wrapper .event-label{position:absolute;top:0;font-size:12px;font-weight:600;padding:4px}.week-schedule .event .event-inner .event-resize{position:absolute;cursor:ns-resize;height:4px;left:0;right:0;z-index:400}.week-schedule .event .event-inner .event-resize.top{top:0}.week-schedule .event .event-inner .event-resize.bottom{bottom:0}.week-schedule .event .event-inner .event-resize:hover{background:#ddd}.week-schedule .event .event-inner.hover .event-bg{opacity:.7!important}@media (max-width: 767px){.week-schedule.tabel .calendar-head .calendar-head-cell{text-orientation:sideways;writing-mode:vertical-rl}}.timeline.tabel{flex-flow:column}.timeline .calendar-body .tabel{background-color:#f7f7f7}.timeline .calendar-body .tabel tr:first-child td{background-color:#fff;border:1px solid #000}.timeline .calendar-body .tabel tr:first-child td:first-child{min-width:10rem}.timeline .calendar-body .tabel tr:first-child span.day-label{left:0;right:0}.timeline .calendar-body .tabel tr:nth-child(2) td{border-width:1px;border-color:inherit}.timeline .calendar-body .tabel>:not(:first-child){border-top:none!important}\n"], dependencies: [{ kind: "component", type: ResourceGroupPresenterComponent, selector: "bs-resource-group-presenter", inputs: ["level", "resourceGroup", "timeSlots", "isExpanded"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.DatePipe, name: "date" }, { kind: "pipe", type: BsSecondsTimespanPipe, name: "bsSecondsTimespan" }, { kind: "pipe", type: BsSecondsTodayOffsetPipe, name: "bsSecondsTodayOffset" }, { kind: "pipe", type: DayOfWeekPipe, name: "dayOfWeek" }] }); }
|
|
714
716
|
}
|
|
715
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
717
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: BsSchedulerComponent, decorators: [{
|
|
716
718
|
type: Component,
|
|
717
719
|
args: [{ selector: 'bs-scheduler', standalone: false, template: "@switch (mode$ | async) {\n @case (modes.week) {\n <div class=\"d-flex flex-column w-100 overflow-y-auto mb-0 week-schedule\" [style.max-height.px]=\"null\">\n <div class=\"calendar-head\">\n <div class=\"w-100 d-flex flex-row\">\n <div class=\"d-flex calendar-left justify-content-between\">\n <button class=\"btn btn-default flex-start\" (click)=\"onPreviousWeekOrMonth()\">\n <span [innerHTML]=\"chevronLeft\" class=\"px-0\"></span>\n </button>\n <button class=\"btn btn-default flex-end\" (click)=\"onNextWeekOrMonth()\">\n <span [innerHTML]=\"chevronRight\" class=\"px-0\"></span>\n </button>\n </div>\n @for (day of (shownDays$ | async); track day) {\n <div class=\"flex-grow-1 calendar-head-cell\">\n <span class=\"d-block col-form-label text-center text-nowrap\">\n <span>{{ day | date: 'dd-MM' }}</span><span class=\"d-none d-lg-inline-block\">-{{ day | date: 'yyyy' }}</span>\n </span>\n </div>\n }\n </div>\n </div>\n <div class=\"calendar-body\" [style.height.px]=\"maxInnerHeight\">\n @if (timeSlots$ | async; as row) {\n <div class=\"position-relative\">\n @if (weekOptions$ | async; as weekOptions) {\n <!-- Timeslots -->\n @for (timeslots of row; track timeslots; let i = $index) {\n <div class=\"d-flex flex-row p-0 timeslot\" [style.height.px]=\"weekOptions.unitHeight\">\n <div class=\"calendar-cell calendar-left align-top px-2 py-0\">{{ timeslots.slots[0].start | date: 'HH:mm:ss' }}</div>\n @for (slot of timeslots.slots; track slot.start; let j = $index) {\n <div class=\"calendar-cell flex-grow-1\" #slot (mousedown)=\"onCreateEvent($event, slot)\" [attr.data-row]=\"i\" [attr.data-column]=\"j\"></div>\n }\n </div>\n }\n \n <!-- Events -->\n @if (timeSlotDuration$ | async; as timeSlotDuration) {\n @if (timelinedEventPartsForThisWeek$ | async; as partData) {\n @for (eventPart of partData.parts; track eventPart) {\n <div class=\"event p-0\"\n [style.top.px]=\"(eventPart.part | bsSecondsTodayOffset) / timeSlotDuration * weekOptions.unitHeight\"\n [style.height.px]=\"(eventPart.part | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\"\n [style.left]=\"'calc(90px + ((100% - 90px) / 7 * ' + ((eventPart.part | dayOfWeek) - 1) + '))'\">\n <div class=\"event-inner\" [class.hover]=\"(hoveredEvent$ | async) === eventPart.part.event\"\n [style.width]=\"'calc(100% / ' + partData.total + ')'\"\n [style.height.px]=\"(eventPart.part | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\"\n [style.margin-left]=\"'calc(100% / ' + partData.total + ' * ' + eventPart.index + ')'\">\n \n @if (eventPart.part.start === eventPart.part.event?.start) {\n <div class=\"event-resize top\" (mousedown)=\"onStartResizeEvent(eventPart.part.event, 'top')\"></div>\n }\n <div class=\"event-border\"></div>\n @if (eventPart.part.event) {\n <div class=\"event-wrapper\"\n (mousedown)=\"onStartDragEvent(eventPart.part, $event)\"\n (mouseenter)=\"onHoverEvent(eventPart.part.event)\"\n (mouseleave)=\"onLeaveEvent(eventPart.part.event)\">\n <div class=\"event-bg\" [style.background-color]=\"eventPart.part.event.color\"></div>\n <div class=\"event-label\">{{ eventPart.part.event.description }}</div>\n </div>\n }\n @if (eventPart.part.end === eventPart.part.event?.end) {\n <div class=\"event-resize bottom\" (mousedown)=\"onStartResizeEvent(eventPart.part.event, 'bottom')\"></div>\n }\n </div>\n </div>\n }\n }\n @if (previewEventPartsForThisWeek$ | async; as previewPartData) {\n @for (eventPart of previewPartData; track eventPart) {\n <div class=\"event preview p-0\"\n [style.top.px]=\"(eventPart | bsSecondsTodayOffset) / timeSlotDuration * weekOptions.unitHeight\"\n [style.height.px]=\"(eventPart | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\"\n [style.left]=\"'calc(90px + ((100% - 90px) / 7 * ' + ((eventPart | dayOfWeek) - 1) + '))'\">\n <div class=\"event-inner w-100\"\n [style.height.px]=\"(eventPart | bsSecondsTimespan) / timeSlotDuration * weekOptions.unitHeight\">\n </div>\n </div>\n }\n }\n }\n }\n </div>\n }\n </div>\n </div>\n }\n @case (modes.timeline) {\n <div class=\"d-flex flex-column-100 overflow-y-auto mb-0 bg-white timeline\">\n <div class=\"calendar-head d-flex\">\n <button class=\"btn flex-start\" (click)=\"onPreviousWeekOrMonth()\">\n <span [innerHTML]=\"chevronLeft\" class=\"px-0\"></span>\n </button>\n <div class=\"flex-grow-1 h3 py-2 mb-0 text-center\">{{ currentWeekOrMonth$ | async | date: 'MMMM yyyy' }}</div>\n <button class=\"btn flex-start\" (click)=\"onNextWeekOrMonth()\">\n <span [innerHTML]=\"chevronRight\" class=\"px-0\"></span>\n </button>\n </div>\n \n <div class=\"calendar-body table-responsive overflow-x-auto\">\n <table class=\"table mb-0\">\n @if (timeSlots$ | async; as timeSlots) {\n <tr>\n <td></td>\n @for (day of timeSlots; track day) {\n <td [attr.colspan]=\"day.slots.length\" class=\"text-center px-2\">\n <span class=\"position-sticky day-label\">{{ day.stamp | date: 'd EE' }}</span>\n </td>\n }\n </tr>\n <tr>\n <td></td>\n @if (timelineOptions$ | async; as timelineOptions) {\n @for (day of timeSlots; track day) {\n @for (slot of day.slots; track slot) {\n <td>\n <span class=\"d-block p-0 text-center\" [style.width.px]=\"timelineOptions.unitWidth\">\n {{ slot.start | date: 'HH:mm' }}\n </span>\n </td>\n }\n }\n }\n </tr>\n @for (group of (resources$ | async); track group) {\n <bs-resource-group-presenter [resourceGroup]=\"group\" [timeSlots]=\"timeSlots\"></bs-resource-group-presenter>\n }\n }\n </table>\n </div>\n </div>\n }\n}", styles: [":host{display:block;border:1px solid #333;border-top-right-radius:10px;border-top-left-radius:10px;overflow:hidden}.calendar-head{background:#f7f7f7;color:#007aff}.tabel .calendar-head{flex:0 0 auto}.tabel .calendar-body{display:block;flex:1 1 auto}.week-schedule .calendar-head>div{padding-right:18px}.week-schedule .calendar-body{overflow-y:scroll;overflow-x:hidden}.week-schedule .calendar-body .calendar-cell{border-right:1px solid #DEE2E6;border-bottom:1px solid #DEE2E6;cursor:default}.week-schedule .calendar-body .calendar-cell.hover{border-top-width:3px}.week-schedule .calendar-left{width:90px}.week-schedule .event{z-index:5;width:calc((100% - 90px) / 7);height:100px;overflow:hidden;position:absolute;-webkit-user-select:none;user-select:none;pointer-events:none}.week-schedule .event.preview{background:#666;opacity:.6}.week-schedule .event .event-border{background:#000;top:0;left:0;bottom:3px;width:3px;position:absolute;z-index:10;opacity:.3}.week-schedule .event .event-inner{position:relative;inset:0 5px 5px 0;cursor:move;pointer-events:all;overflow:hidden}.week-schedule .event .event-inner .event-wrapper{width:calc(100% - 2px);margin:1px auto 1px 0;height:calc(100% - 3px)}.week-schedule .event .event-inner .event-wrapper .event-bg{opacity:.5;height:100%;transition:opacity .15s ease-in-out}.week-schedule .event .event-inner .event-wrapper .event-label{position:absolute;top:0;font-size:12px;font-weight:600;padding:4px}.week-schedule .event .event-inner .event-resize{position:absolute;cursor:ns-resize;height:4px;left:0;right:0;z-index:400}.week-schedule .event .event-inner .event-resize.top{top:0}.week-schedule .event .event-inner .event-resize.bottom{bottom:0}.week-schedule .event .event-inner .event-resize:hover{background:#ddd}.week-schedule .event .event-inner.hover .event-bg{opacity:.7!important}@media (max-width: 767px){.week-schedule.tabel .calendar-head .calendar-head-cell{text-orientation:sideways;writing-mode:vertical-rl}}.timeline.tabel{flex-flow:column}.timeline .calendar-body .tabel{background-color:#f7f7f7}.timeline .calendar-body .tabel tr:first-child td{background-color:#fff;border:1px solid #000}.timeline .calendar-body .tabel tr:first-child td:first-child{min-width:10rem}.timeline .calendar-body .tabel tr:first-child span.day-label{left:0;right:0}.timeline .calendar-body .tabel tr:nth-child(2) td{border-width:1px;border-color:inherit}.timeline .calendar-body .tabel>:not(:first-child){border-top:none!important}\n"] }]
|
|
718
|
-
}], ctorParameters: () => [{ type: i1.DomSanitizer }, { type: i2.BsCalendarMonthService }, { type: BsTimelineService }], propDecorators: { timeSlotElements: [{
|
|
720
|
+
}], ctorParameters: () => [{ type: i1.DomSanitizer }, { type: i2.BsCalendarMonthService }, { type: BsTimelineService }, { type: i0.DestroyRef }], propDecorators: { timeSlotElements: [{
|
|
719
721
|
type: ViewChildren,
|
|
720
722
|
args: ['slot']
|
|
721
723
|
}], modeChange: [{
|
|
@@ -762,10 +764,10 @@ class DateOffsetPipe {
|
|
|
762
764
|
today.setSeconds(0);
|
|
763
765
|
return (value.start.getTime() - today.getTime()) / 1000;
|
|
764
766
|
}
|
|
765
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.
|
|
766
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.
|
|
767
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: DateOffsetPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
768
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.1.7", ngImport: i0, type: DateOffsetPipe, isStandalone: false, name: "dateOffset" }); }
|
|
767
769
|
}
|
|
768
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
770
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: DateOffsetPipe, decorators: [{
|
|
769
771
|
type: Pipe,
|
|
770
772
|
args: [{
|
|
771
773
|
name: 'dateOffset',
|
|
@@ -774,17 +776,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.0", ngImpor
|
|
|
774
776
|
}] });
|
|
775
777
|
|
|
776
778
|
class BsSchedulerModule {
|
|
777
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.
|
|
778
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.
|
|
779
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: BsSchedulerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
780
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.1.7", ngImport: i0, type: BsSchedulerModule, declarations: [BsSchedulerComponent,
|
|
779
781
|
BsSecondsTimespanPipe,
|
|
780
782
|
BsSecondsTodayOffsetPipe,
|
|
781
783
|
DateOffsetPipe,
|
|
782
784
|
DayOfWeekPipe,
|
|
783
785
|
ResourceGroupPresenterComponent], imports: [CommonModule], exports: [BsSchedulerComponent,
|
|
784
786
|
ResourceGroupPresenterComponent] }); }
|
|
785
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.
|
|
787
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: BsSchedulerModule, imports: [CommonModule] }); }
|
|
786
788
|
}
|
|
787
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
789
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: BsSchedulerModule, decorators: [{
|
|
788
790
|
type: NgModule,
|
|
789
791
|
args: [{
|
|
790
792
|
declarations: [
|