ngx-semantic 2.0.9 → 2.1.1
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/ngx-semantic-collections-grid.mjs +99 -17
- package/fesm2022/ngx-semantic-collections-grid.mjs.map +1 -1
- package/fesm2022/ngx-semantic-collections-menu.mjs +18 -3
- package/fesm2022/ngx-semantic-collections-menu.mjs.map +1 -1
- package/fesm2022/ngx-semantic-collections-message.mjs +6 -7
- package/fesm2022/ngx-semantic-collections-message.mjs.map +1 -1
- package/fesm2022/ngx-semantic-collections-table.mjs +42 -7
- package/fesm2022/ngx-semantic-collections-table.mjs.map +1 -1
- package/fesm2022/ngx-semantic-core-base.mjs +41 -11
- package/fesm2022/ngx-semantic-core-base.mjs.map +1 -1
- package/fesm2022/ngx-semantic-elements-container.mjs +6 -7
- package/fesm2022/ngx-semantic-elements-container.mjs.map +1 -1
- package/fesm2022/ngx-semantic-elements-divider.mjs +8 -8
- package/fesm2022/ngx-semantic-elements-divider.mjs.map +1 -1
- package/fesm2022/ngx-semantic-elements-header.mjs +6 -7
- package/fesm2022/ngx-semantic-elements-header.mjs.map +1 -1
- package/fesm2022/ngx-semantic-elements-icon.mjs +6 -8
- package/fesm2022/ngx-semantic-elements-icon.mjs.map +1 -1
- package/fesm2022/ngx-semantic-elements-image.mjs +5 -7
- package/fesm2022/ngx-semantic-elements-image.mjs.map +1 -1
- package/fesm2022/ngx-semantic-elements-label.mjs +5 -7
- package/fesm2022/ngx-semantic-elements-label.mjs.map +1 -1
- package/fesm2022/ngx-semantic-elements-list.mjs +5 -6
- package/fesm2022/ngx-semantic-elements-list.mjs.map +1 -1
- package/fesm2022/ngx-semantic-elements-loader.mjs +6 -7
- package/fesm2022/ngx-semantic-elements-loader.mjs.map +1 -1
- package/fesm2022/ngx-semantic-elements-placeholder.mjs +17 -24
- package/fesm2022/ngx-semantic-elements-placeholder.mjs.map +1 -1
- package/fesm2022/ngx-semantic-elements-rail.mjs +6 -7
- package/fesm2022/ngx-semantic-elements-rail.mjs.map +1 -1
- package/fesm2022/ngx-semantic-elements-reveal.mjs +10 -13
- package/fesm2022/ngx-semantic-elements-reveal.mjs.map +1 -1
- package/fesm2022/ngx-semantic-elements-segment.mjs +4 -6
- package/fesm2022/ngx-semantic-elements-segment.mjs.map +1 -1
- package/fesm2022/ngx-semantic-elements-steps.mjs +4 -6
- package/fesm2022/ngx-semantic-elements-steps.mjs.map +1 -1
- package/fesm2022/ngx-semantic-modules-checkbox.mjs +7 -8
- package/fesm2022/ngx-semantic-modules-checkbox.mjs.map +1 -1
- package/fesm2022/ngx-semantic-modules-dimmer.mjs +11 -10
- package/fesm2022/ngx-semantic-modules-dimmer.mjs.map +1 -1
- package/fesm2022/ngx-semantic-modules-dropdown.mjs +13 -18
- package/fesm2022/ngx-semantic-modules-dropdown.mjs.map +1 -1
- package/fesm2022/ngx-semantic-modules-modal.mjs +5 -6
- package/fesm2022/ngx-semantic-modules-modal.mjs.map +1 -1
- package/fesm2022/ngx-semantic-modules-rating.mjs +6 -7
- package/fesm2022/ngx-semantic-modules-rating.mjs.map +1 -1
- package/fesm2022/ngx-semantic-modules-select.mjs +14 -19
- package/fesm2022/ngx-semantic-modules-select.mjs.map +1 -1
- package/fesm2022/ngx-semantic-modules-shape.mjs +35 -31
- package/fesm2022/ngx-semantic-modules-shape.mjs.map +1 -1
- package/fesm2022/ngx-semantic-modules-sidebar.mjs +115 -26
- package/fesm2022/ngx-semantic-modules-sidebar.mjs.map +1 -1
- package/fesm2022/ngx-semantic-modules-sticky.mjs +13 -2
- package/fesm2022/ngx-semantic-modules-sticky.mjs.map +1 -1
- package/fesm2022/ngx-semantic-modules-tabs.mjs +7 -8
- package/fesm2022/ngx-semantic-modules-tabs.mjs.map +1 -1
- package/fesm2022/ngx-semantic-modules-transition.mjs +14 -7
- package/fesm2022/ngx-semantic-modules-transition.mjs.map +1 -1
- package/fesm2022/ngx-semantic-views-card.mjs +8 -11
- package/fesm2022/ngx-semantic-views-card.mjs.map +1 -1
- package/fesm2022/ngx-semantic-views-comment.mjs +5 -6
- package/fesm2022/ngx-semantic-views-comment.mjs.map +1 -1
- package/package.json +1 -1
- package/types/ngx-semantic-collections-grid.d.ts +44 -12
- package/types/ngx-semantic-collections-menu.d.ts +7 -3
- package/types/ngx-semantic-collections-message.d.ts +2 -1
- package/types/ngx-semantic-collections-table.d.ts +14 -6
- package/types/ngx-semantic-core-base.d.ts +16 -5
- package/types/ngx-semantic-core-enums.d.ts +1 -1
- package/types/ngx-semantic-elements-container.d.ts +2 -1
- package/types/ngx-semantic-elements-divider.d.ts +3 -1
- package/types/ngx-semantic-elements-header.d.ts +2 -1
- package/types/ngx-semantic-elements-icon.d.ts +2 -2
- package/types/ngx-semantic-elements-image.d.ts +1 -1
- package/types/ngx-semantic-elements-label.d.ts +1 -1
- package/types/ngx-semantic-elements-list.d.ts +2 -1
- package/types/ngx-semantic-elements-loader.d.ts +2 -1
- package/types/ngx-semantic-elements-placeholder.d.ts +5 -4
- package/types/ngx-semantic-elements-rail.d.ts +2 -1
- package/types/ngx-semantic-elements-reveal.d.ts +3 -2
- package/types/ngx-semantic-elements-segment.d.ts +2 -2
- package/types/ngx-semantic-elements-steps.d.ts +1 -1
- package/types/ngx-semantic-modules-checkbox.d.ts +2 -1
- package/types/ngx-semantic-modules-dimmer.d.ts +3 -2
- package/types/ngx-semantic-modules-dropdown.d.ts +4 -3
- package/types/ngx-semantic-modules-modal.d.ts +2 -1
- package/types/ngx-semantic-modules-rating.d.ts +2 -1
- package/types/ngx-semantic-modules-select.d.ts +3 -2
- package/types/ngx-semantic-modules-shape.d.ts +4 -3
- package/types/ngx-semantic-modules-sidebar.d.ts +34 -6
- package/types/ngx-semantic-modules-tabs.d.ts +2 -1
- package/types/ngx-semantic-modules-transition.d.ts +3 -1
- package/types/ngx-semantic-views-card.d.ts +3 -2
- package/types/ngx-semantic-views-comment.d.ts +2 -1
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import * as i0 from '@angular/core';
|
|
2
|
-
import { EventEmitter, Injectable, inject, HostBinding, Input, Output, ViewEncapsulation, Component, HostListener, ContentChild, NgModule } from '@angular/core';
|
|
3
1
|
import { __decorate } from 'tslib';
|
|
2
|
+
import * as i0 from '@angular/core';
|
|
3
|
+
import { EventEmitter, Injectable, inject, Input, Output, ViewEncapsulation, Component, HostListener, HostBinding, ContentChild, NgModule } from '@angular/core';
|
|
4
4
|
import { ClassUtils, InputBoolean } from 'ngx-semantic/core/util';
|
|
5
|
+
import { BaseDirective } from 'ngx-semantic/core/base';
|
|
5
6
|
import { CommonModule } from '@angular/common';
|
|
6
7
|
|
|
7
8
|
/**
|
|
@@ -11,11 +12,17 @@ class SuiSidebarService {
|
|
|
11
12
|
constructor() {
|
|
12
13
|
this.pusherClicked = new EventEmitter();
|
|
13
14
|
this.visibilityChanged = new EventEmitter();
|
|
15
|
+
this._isVisible = false;
|
|
16
|
+
}
|
|
17
|
+
/** The last visibility reported by the sidebar sharing this service. */
|
|
18
|
+
get isVisible() {
|
|
19
|
+
return this._isVisible;
|
|
14
20
|
}
|
|
15
21
|
notifyPusherClicked() {
|
|
16
22
|
this.pusherClicked.emit();
|
|
17
23
|
}
|
|
18
24
|
changeVisibility(isVisible) {
|
|
25
|
+
this._isVisible = isVisible;
|
|
19
26
|
this.visibilityChanged.emit(isVisible);
|
|
20
27
|
}
|
|
21
28
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.23", ngImport: i0, type: SuiSidebarService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
@@ -25,12 +32,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.23", ngImpo
|
|
|
25
32
|
type: Injectable
|
|
26
33
|
}] });
|
|
27
34
|
|
|
28
|
-
|
|
35
|
+
/** Matches the Semantic UI sidebar transition duration. */
|
|
36
|
+
const SIDEBAR_ANIMATION_DURATION = 500;
|
|
37
|
+
class SuiSidebarComponent extends BaseDirective {
|
|
29
38
|
get visible() {
|
|
30
39
|
return this._visible;
|
|
31
40
|
}
|
|
32
41
|
set visible(isVisible) {
|
|
33
|
-
|
|
42
|
+
const value = !!isVisible;
|
|
43
|
+
// only animate changes made after the initial binding, so the sidebar does not flash on load
|
|
44
|
+
if (this.initialised && value !== this._visible) {
|
|
45
|
+
this.startAnimating();
|
|
46
|
+
}
|
|
47
|
+
this._visible = value;
|
|
34
48
|
this.visibleChange.emit(this._visible);
|
|
35
49
|
this.sidebarService.changeVisibility(this._visible);
|
|
36
50
|
}
|
|
@@ -42,39 +56,81 @@ class SuiSidebarComponent {
|
|
|
42
56
|
ClassUtils.getPropClass(this.suiInverted, 'inverted'),
|
|
43
57
|
'sidebar',
|
|
44
58
|
this.suiSidebarAnimation,
|
|
59
|
+
ClassUtils.getPropClass(this.animating, 'animating'),
|
|
45
60
|
ClassUtils.getPropClass(this.visible, 'visible')
|
|
46
|
-
].join(' ');
|
|
61
|
+
].join(' ').replace(/\s\s+/g, ' ').trim();
|
|
47
62
|
}
|
|
48
63
|
constructor() {
|
|
64
|
+
super();
|
|
49
65
|
this.sidebarService = inject(SuiSidebarService);
|
|
50
66
|
this.suiSidebarPosition = 'left';
|
|
51
67
|
this.suiSidebarWidth = null;
|
|
52
68
|
this.suiSidebarAnimation = null;
|
|
53
69
|
this.suiInverted = false;
|
|
70
|
+
/** Whether clicking the pusher hides a sidebar whose visibility is two-way bound. */
|
|
71
|
+
this.suiClosable = true;
|
|
54
72
|
this.visibleChange = new EventEmitter();
|
|
73
|
+
this.animating = false;
|
|
55
74
|
this._visible = true;
|
|
56
|
-
|
|
57
|
-
|
|
75
|
+
this.animationTimer = null;
|
|
76
|
+
this.initialised = false;
|
|
77
|
+
this.sidebarService.changeVisibility(this._visible);
|
|
78
|
+
this.subscription = this.sidebarService.pusherClicked
|
|
58
79
|
.subscribe(() => {
|
|
59
|
-
// only close sidebar
|
|
60
|
-
if (this.visibleChange.
|
|
80
|
+
// only close the sidebar from the pusher when its visibility is bound, i.e. [(visible)]
|
|
81
|
+
if (this.suiClosable && this.visibleChange.observed) {
|
|
61
82
|
this.visible = false;
|
|
62
83
|
}
|
|
63
84
|
});
|
|
64
85
|
}
|
|
86
|
+
ngOnInit() {
|
|
87
|
+
this.initialised = true;
|
|
88
|
+
}
|
|
89
|
+
ngOnDestroy() {
|
|
90
|
+
this.subscription.unsubscribe();
|
|
91
|
+
if (this.animationTimer) {
|
|
92
|
+
clearTimeout(this.animationTimer);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/** Mirrors `sidebar('toggle')`. */
|
|
96
|
+
toggle() {
|
|
97
|
+
this.visible = !this.visible;
|
|
98
|
+
}
|
|
99
|
+
/** Mirrors `sidebar('show')`. */
|
|
100
|
+
show() {
|
|
101
|
+
this.visible = true;
|
|
102
|
+
}
|
|
103
|
+
/** Mirrors `sidebar('hide')`. */
|
|
104
|
+
hide() {
|
|
105
|
+
this.visible = false;
|
|
106
|
+
}
|
|
107
|
+
startAnimating() {
|
|
108
|
+
this.animating = true;
|
|
109
|
+
if (this.animationTimer) {
|
|
110
|
+
clearTimeout(this.animationTimer);
|
|
111
|
+
}
|
|
112
|
+
this.animationTimer = setTimeout(() => {
|
|
113
|
+
this.animating = false;
|
|
114
|
+
this.animationTimer = null;
|
|
115
|
+
}, SIDEBAR_ANIMATION_DURATION);
|
|
116
|
+
}
|
|
65
117
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.23", ngImport: i0, type: SuiSidebarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
66
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.23", type: SuiSidebarComponent, isStandalone: true, selector: "sui-sidebar, [sui-sidebar]", inputs: { suiSidebarPosition: "suiSidebarPosition", suiSidebarWidth: "suiSidebarWidth", suiSidebarAnimation: "suiSidebarAnimation", suiInverted: "suiInverted", visible: "visible" }, outputs: { visibleChange: "visibleChange" },
|
|
118
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.23", type: SuiSidebarComponent, isStandalone: true, selector: "sui-sidebar, [sui-sidebar]", inputs: { suiSidebarPosition: "suiSidebarPosition", suiSidebarWidth: "suiSidebarWidth", suiSidebarAnimation: "suiSidebarAnimation", suiInverted: "suiInverted", suiClosable: "suiClosable", visible: "visible" }, outputs: { visibleChange: "visibleChange" }, exportAs: ["suiSidebar"], usesInheritance: true, ngImport: i0, template: `
|
|
67
119
|
<ng-content></ng-content>
|
|
68
120
|
`, isInline: true, encapsulation: i0.ViewEncapsulation.None }); }
|
|
69
121
|
}
|
|
70
122
|
__decorate([
|
|
71
123
|
InputBoolean()
|
|
72
124
|
], SuiSidebarComponent.prototype, "suiInverted", void 0);
|
|
125
|
+
__decorate([
|
|
126
|
+
InputBoolean()
|
|
127
|
+
], SuiSidebarComponent.prototype, "suiClosable", void 0);
|
|
73
128
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.23", ngImport: i0, type: SuiSidebarComponent, decorators: [{
|
|
74
129
|
type: Component,
|
|
75
130
|
args: [{
|
|
76
131
|
standalone: true,
|
|
77
132
|
selector: 'sui-sidebar, [sui-sidebar]',
|
|
133
|
+
exportAs: 'suiSidebar',
|
|
78
134
|
encapsulation: ViewEncapsulation.None,
|
|
79
135
|
template: `
|
|
80
136
|
<ng-content></ng-content>
|
|
@@ -88,40 +144,45 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.23", ngImpo
|
|
|
88
144
|
type: Input
|
|
89
145
|
}], suiInverted: [{
|
|
90
146
|
type: Input
|
|
147
|
+
}], suiClosable: [{
|
|
148
|
+
type: Input
|
|
91
149
|
}], visibleChange: [{
|
|
92
150
|
type: Output
|
|
93
151
|
}], visible: [{
|
|
94
152
|
type: Input
|
|
95
|
-
}], classes: [{
|
|
96
|
-
type: HostBinding,
|
|
97
|
-
args: ['class']
|
|
98
153
|
}] } });
|
|
99
154
|
|
|
100
|
-
class SuiSidebarPusherComponent {
|
|
155
|
+
class SuiSidebarPusherComponent extends BaseDirective {
|
|
101
156
|
constructor() {
|
|
157
|
+
super(...arguments);
|
|
102
158
|
this.sidebarService = inject(SuiSidebarService);
|
|
103
159
|
this.suiDimmable = false;
|
|
104
160
|
this.isSidebarOpen = false;
|
|
161
|
+
this.subscription = null;
|
|
105
162
|
}
|
|
106
163
|
get classes() {
|
|
107
164
|
return [
|
|
108
165
|
ClassUtils.getPropClass(this.isSidebarOpen && this.suiDimmable, 'dimmed'),
|
|
109
166
|
'pusher'
|
|
110
|
-
].join(' ');
|
|
167
|
+
].join(' ').trim();
|
|
111
168
|
}
|
|
112
169
|
ngOnInit() {
|
|
113
|
-
this.sidebarService.
|
|
170
|
+
this.isSidebarOpen = this.isSidebarOpen || this.sidebarService.isVisible;
|
|
171
|
+
this.subscription = this.sidebarService.visibilityChanged
|
|
114
172
|
.subscribe((isVisible) => {
|
|
115
173
|
this.isSidebarOpen = isVisible;
|
|
116
174
|
});
|
|
117
175
|
}
|
|
176
|
+
ngOnDestroy() {
|
|
177
|
+
this.subscription?.unsubscribe();
|
|
178
|
+
}
|
|
118
179
|
onClick() {
|
|
119
180
|
if (this.isSidebarOpen) {
|
|
120
181
|
this.sidebarService.notifyPusherClicked();
|
|
121
182
|
}
|
|
122
183
|
}
|
|
123
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.23", ngImport: i0, type: SuiSidebarPusherComponent, deps:
|
|
124
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.23", type: SuiSidebarPusherComponent, isStandalone: true, selector: "sui-sidebar-pusher", inputs: { suiDimmable: "suiDimmable" }, host: { listeners: { "click": "onClick()" },
|
|
184
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.23", ngImport: i0, type: SuiSidebarPusherComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
185
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.23", type: SuiSidebarPusherComponent, isStandalone: true, selector: "sui-sidebar-pusher", inputs: { suiDimmable: "suiDimmable" }, host: { listeners: { "click": "onClick()" }, styleAttribute: "display: block" }, usesInheritance: true, ngImport: i0, template: `
|
|
125
186
|
<ng-content></ng-content>
|
|
126
187
|
`, isInline: true, encapsulation: i0.ViewEncapsulation.None }); }
|
|
127
188
|
}
|
|
@@ -134,24 +195,34 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.23", ngImpo
|
|
|
134
195
|
standalone: true,
|
|
135
196
|
selector: 'sui-sidebar-pusher',
|
|
136
197
|
encapsulation: ViewEncapsulation.None,
|
|
198
|
+
host: {
|
|
199
|
+
style: 'display: block'
|
|
200
|
+
},
|
|
137
201
|
template: `
|
|
138
202
|
<ng-content></ng-content>
|
|
139
203
|
`
|
|
140
204
|
}]
|
|
141
205
|
}], propDecorators: { suiDimmable: [{
|
|
142
206
|
type: Input
|
|
143
|
-
}], classes: [{
|
|
144
|
-
type: HostBinding,
|
|
145
|
-
args: ['class']
|
|
146
207
|
}], onClick: [{
|
|
147
208
|
type: HostListener,
|
|
148
209
|
args: ['click']
|
|
149
210
|
}] } });
|
|
150
211
|
|
|
151
|
-
/**
|
|
152
|
-
* Created by bolorundurowb on 1/1/2021
|
|
153
|
-
*/
|
|
154
212
|
class SuiSidebarContainerComponent {
|
|
213
|
+
constructor() {
|
|
214
|
+
this.sidebarService = inject(SuiSidebarService);
|
|
215
|
+
/**
|
|
216
|
+
* Makes the container the sidebar's context (Semantic UI `pushable`). The sidebar and dimmer are then
|
|
217
|
+
* positioned inside the container rather than the viewport. Always applied when the pusher is dimmable,
|
|
218
|
+
* since Semantic UI only renders the dimmer inside a pushable context.
|
|
219
|
+
*/
|
|
220
|
+
this.suiPushable = false;
|
|
221
|
+
this.subscription = null;
|
|
222
|
+
}
|
|
223
|
+
get isPushable() {
|
|
224
|
+
return this.suiPushable || !!this.suiPusher?.suiDimmable;
|
|
225
|
+
}
|
|
155
226
|
ngAfterContentInit() {
|
|
156
227
|
if (!this.suiSidebar) {
|
|
157
228
|
throw new Error('You must include a <sui-sidebar> element within the container.');
|
|
@@ -159,22 +230,35 @@ class SuiSidebarContainerComponent {
|
|
|
159
230
|
if (!this.suiPusher) {
|
|
160
231
|
throw new Error('You must include a <sui-sidebar-pusher> element within the container.');
|
|
161
232
|
}
|
|
162
|
-
|
|
233
|
+
// the sidebar reports its initial visibility before the pusher exists, so sync it once here
|
|
234
|
+
this.suiPusher.isSidebarOpen = this.suiSidebar.visible;
|
|
235
|
+
this.subscription = this.sidebarService.visibilityChanged
|
|
163
236
|
.subscribe((isVisible) => {
|
|
164
237
|
this.suiPusher.isSidebarOpen = isVisible;
|
|
165
238
|
});
|
|
166
239
|
}
|
|
240
|
+
ngOnDestroy() {
|
|
241
|
+
this.subscription?.unsubscribe();
|
|
242
|
+
}
|
|
167
243
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.23", ngImport: i0, type: SuiSidebarContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
168
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.23", type: SuiSidebarContainerComponent, isStandalone: true, selector: "sui-sidebar-container", queries: [{ propertyName: "suiSidebar", first: true, predicate: SuiSidebarComponent, descendants: true }, { propertyName: "suiPusher", first: true, predicate: SuiSidebarPusherComponent, descendants: true }], ngImport: i0, template: `
|
|
244
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.23", type: SuiSidebarContainerComponent, isStandalone: true, selector: "sui-sidebar-container", inputs: { suiPushable: "suiPushable" }, host: { properties: { "class.pushable": "this.isPushable" }, styleAttribute: "display: block" }, providers: [SuiSidebarService], queries: [{ propertyName: "suiSidebar", first: true, predicate: SuiSidebarComponent, descendants: true }, { propertyName: "suiPusher", first: true, predicate: SuiSidebarPusherComponent, descendants: true }], ngImport: i0, template: `
|
|
169
245
|
<ng-content></ng-content>
|
|
170
246
|
`, isInline: true, encapsulation: i0.ViewEncapsulation.None }); }
|
|
171
247
|
}
|
|
248
|
+
__decorate([
|
|
249
|
+
InputBoolean()
|
|
250
|
+
], SuiSidebarContainerComponent.prototype, "suiPushable", void 0);
|
|
172
251
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.23", ngImport: i0, type: SuiSidebarContainerComponent, decorators: [{
|
|
173
252
|
type: Component,
|
|
174
253
|
args: [{
|
|
175
254
|
standalone: true,
|
|
176
255
|
selector: 'sui-sidebar-container',
|
|
177
256
|
encapsulation: ViewEncapsulation.None,
|
|
257
|
+
// each container gets its own service so multiple sidebars on a page do not affect one another
|
|
258
|
+
providers: [SuiSidebarService],
|
|
259
|
+
host: {
|
|
260
|
+
style: 'display: block'
|
|
261
|
+
},
|
|
178
262
|
template: `
|
|
179
263
|
<ng-content></ng-content>
|
|
180
264
|
`
|
|
@@ -185,6 +269,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.23", ngImpo
|
|
|
185
269
|
}], suiPusher: [{
|
|
186
270
|
type: ContentChild,
|
|
187
271
|
args: [SuiSidebarPusherComponent]
|
|
272
|
+
}], suiPushable: [{
|
|
273
|
+
type: Input
|
|
274
|
+
}], isPushable: [{
|
|
275
|
+
type: HostBinding,
|
|
276
|
+
args: ['class.pushable']
|
|
188
277
|
}] } });
|
|
189
278
|
|
|
190
279
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-semantic-modules-sidebar.mjs","sources":["../../src/modules/sidebar/sidebar.service.ts","../../src/modules/sidebar/sidebar.component.ts","../../src/modules/sidebar/sidebar-pusher.component.ts","../../src/modules/sidebar/sidebar-container.component.ts","../../src/modules/sidebar/sidebar.module.ts","../../src/modules/sidebar/public-api.ts","../../src/modules/sidebar/ngx-semantic-modules-sidebar.ts"],"sourcesContent":["/**\n * Created by bolorundurowb on 1/1/2021\n */\n\nimport { EventEmitter, Injectable } from '@angular/core';\n\n@Injectable()\nexport class SuiSidebarService {\n public pusherClicked = new EventEmitter<void>();\n public visibilityChanged = new EventEmitter<boolean>();\n\n public notifyPusherClicked(): void {\n this.pusherClicked.emit();\n }\n\n public changeVisibility(isVisible: boolean): void {\n this.visibilityChanged.emit(isVisible);\n }\n}\n","/**\n * Created by bolorundurowb on 12/30/2020\n */\n\nimport { Component, EventEmitter, HostBinding, Input, Output, ViewEncapsulation, inject } from '@angular/core';\nimport { ClassUtils, InputBoolean } from 'ngx-semantic/core/util';\nimport { SuiSidebarService } from './sidebar.service';\n\nexport type SuiSidebarPosition = 'top' | 'bottom' | 'left' | 'right';\nexport type SuiSidebarWidth = 'thin' | 'very thin' | 'wide' | 'very wide' | null;\nexport type SuiSidebarAnimation = 'overlay' | 'push' | 'scale down' | 'uncover' | 'slide along' | 'slide out' | null;\n\n@Component({\n standalone: true,\n selector: 'sui-sidebar, [sui-sidebar]',\n encapsulation: ViewEncapsulation.None,\n template: `\n <ng-content></ng-content>\n `\n})\nexport class SuiSidebarComponent {\n private sidebarService = inject(SuiSidebarService);\n\n @Input() public suiSidebarPosition: SuiSidebarPosition = 'left';\n @Input() public suiSidebarWidth: SuiSidebarWidth = null;\n @Input() public suiSidebarAnimation: SuiSidebarAnimation = null;\n @Input() @InputBoolean() public suiInverted = false;\n @Output() public visibleChange = new EventEmitter<boolean>();\n\n private _visible = true;\n\n @Input()\n get visible(): boolean {\n return this._visible;\n }\n\n set visible(isVisible) {\n this._visible = isVisible;\n this.visibleChange.emit(this._visible);\n this.sidebarService.changeVisibility(this._visible);\n }\n\n @HostBinding('class')\n get classes(): string {\n return [\n 'ui',\n this.suiSidebarPosition,\n this.suiSidebarWidth,\n ClassUtils.getPropClass(this.suiInverted, 'inverted'),\n 'sidebar',\n this.suiSidebarAnimation,\n ClassUtils.getPropClass(this.visible, 'visible')\n ].join(' ');\n }\n\n constructor() {\n const sidebarService = this.sidebarService;\n\n sidebarService.pusherClicked\n .subscribe(() => {\n // only close sidebar on pusher when the visibility is dynamic\n if (this.visibleChange.observers.length > 0) {\n this.visible = false;\n }\n });\n }\n}\n","/**\n * Created by bolorundurowb on 12/30/2020\n */\n\nimport { Component, HostBinding, HostListener, Input, OnInit, ViewEncapsulation, inject } from '@angular/core';\nimport { ClassUtils, InputBoolean } from 'ngx-semantic/core/util';\nimport { SuiSidebarService } from './sidebar.service';\n\n@Component({\n standalone: true,\n selector: 'sui-sidebar-pusher',\n encapsulation: ViewEncapsulation.None,\n template: `\n <ng-content></ng-content>\n `\n})\nexport class SuiSidebarPusherComponent implements OnInit {\n private sidebarService = inject(SuiSidebarService);\n\n @Input() @InputBoolean() public suiDimmable = false;\n public isSidebarOpen = false;\n\n @HostBinding('class')\n get classes(): string {\n return [\n ClassUtils.getPropClass(this.isSidebarOpen && this.suiDimmable, 'dimmed'),\n 'pusher'\n ].join(' ');\n }\n\n public ngOnInit(): void {\n this.sidebarService.visibilityChanged\n .subscribe((isVisible) => {\n this.isSidebarOpen = isVisible;\n });\n }\n\n @HostListener('click')\n public onClick(): void {\n if (this.isSidebarOpen) {\n this.sidebarService.notifyPusherClicked();\n }\n }\n}\n","/**\n * Created by bolorundurowb on 1/1/2021\n */\n\nimport { AfterContentInit, Component, ContentChild, ViewEncapsulation } from '@angular/core';\nimport { SuiSidebarComponent } from './sidebar.component';\nimport { SuiSidebarPusherComponent } from './sidebar-pusher.component';\n\n@Component({\n standalone: true,\n selector: 'sui-sidebar-container',\n encapsulation: ViewEncapsulation.None,\n template: `\n <ng-content></ng-content>\n `\n})\nexport class SuiSidebarContainerComponent implements AfterContentInit {\n @ContentChild(SuiSidebarComponent) public suiSidebar!: SuiSidebarComponent;\n @ContentChild(SuiSidebarPusherComponent) public suiPusher!: SuiSidebarPusherComponent;\n\n public ngAfterContentInit(): void {\n if (!this.suiSidebar) {\n throw new Error('You must include a <sui-sidebar> element within the container.');\n }\n\n if (!this.suiPusher) {\n throw new Error('You must include a <sui-sidebar-pusher> element within the container.');\n }\n\n this.suiSidebar.visibleChange\n .subscribe((isVisible) => {\n this.suiPusher.isSidebarOpen = isVisible;\n });\n }\n}\n","/**\n * Created by bolorundurowb on 12/30/2020\n */\n\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SuiSidebarContainerComponent } from './sidebar-container.component';\nimport { SuiSidebarPusherComponent } from './sidebar-pusher.component';\nimport { SuiSidebarComponent } from './sidebar.component';\nimport { SuiSidebarService } from './sidebar.service';\n\n@NgModule({\n imports: [\n CommonModule,\n SuiSidebarComponent,\n SuiSidebarPusherComponent,\n SuiSidebarContainerComponent\n ],\n exports: [\n SuiSidebarComponent,\n SuiSidebarPusherComponent,\n SuiSidebarContainerComponent\n ],\n providers: [\n SuiSidebarService\n ]\n})\nexport class SuiSidebarModule {\n}\n","/**\n * Created by bolorundurowb on 12/30/2020\n */\n\nexport * from './sidebar-container.component';\nexport * from './sidebar-pusher.component';\nexport * from './sidebar.component';\nexport * from './sidebar.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;AAAA;;AAEG;MAKU,iBAAiB,CAAA;AAD9B,IAAA,WAAA,GAAA;AAES,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAQ;AACxC,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,YAAY,EAAW;AASvD,IAAA;IAPQ,mBAAmB,GAAA;AACxB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;IAC3B;AAEO,IAAA,gBAAgB,CAAC,SAAkB,EAAA;AACxC,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC;IACxC;+GAVW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAjB,iBAAiB,EAAA,CAAA,CAAA;;4FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B;;;MCcY,mBAAmB,CAAA;AAW9B,IAAA,IACI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,QAAQ;IACtB;IAEA,IAAI,OAAO,CAAC,SAAS,EAAA;AACnB,QAAA,IAAI,CAAC,QAAQ,GAAG,SAAS;QACzB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;QACtC,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC;IACrD;AAEA,IAAA,IACI,OAAO,GAAA;QACT,OAAO;YACL,IAAI;AACJ,YAAA,IAAI,CAAC,kBAAkB;AACvB,YAAA,IAAI,CAAC,eAAe;YACpB,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC;YACrD,SAAS;AACT,YAAA,IAAI,CAAC,mBAAmB;YACxB,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS;AAChD,SAAA,CAAC,IAAI,CAAC,GAAG,CAAC;IACb;AAEA,IAAA,WAAA,GAAA;AAlCQ,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC;QAElC,IAAA,CAAA,kBAAkB,GAAuB,MAAM;QAC/C,IAAA,CAAA,eAAe,GAAoB,IAAI;QACvC,IAAA,CAAA,mBAAmB,GAAwB,IAAI;QAC/B,IAAA,CAAA,WAAW,GAAG,KAAK;AAClC,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAW;QAEpD,IAAA,CAAA,QAAQ,GAAG,IAAI;AA2BrB,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc;AAE1C,QAAA,cAAc,CAAC;aACZ,SAAS,CAAC,MAAK;;YAEd,IAAI,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3C,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;YACtB;AACF,QAAA,CAAC,CAAC;IACN;+GA7CW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,cAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAJpB;;AAET,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;AAQ+B,UAAA,CAAA;AAAtB,IAAA,YAAY;AAA8B,CAAA,EAAA,mBAAA,CAAA,SAAA,EAAA,aAAA,EAAA,KAAA,CAAA,CAAA;4FANzC,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAR/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,4BAA4B;oBACtC,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACrC,oBAAA,QAAQ,EAAE;;AAET,EAAA;AACF,iBAAA;;sBAIE;;sBACA;;sBACA;;sBACA;;sBACA;;sBAIA;;sBAWA,WAAW;uBAAC,OAAO;;;MC1BT,yBAAyB,CAAA;AARtC,IAAA,WAAA,GAAA;AASU,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC;QAElB,IAAA,CAAA,WAAW,GAAG,KAAK;QAC5C,IAAA,CAAA,aAAa,GAAG,KAAK;AAuB7B,IAAA;AArBC,IAAA,IACI,OAAO,GAAA;QACT,OAAO;AACL,YAAA,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC;YACzE;AACD,SAAA,CAAC,IAAI,CAAC,GAAG,CAAC;IACb;IAEO,QAAQ,GAAA;QACb,IAAI,CAAC,cAAc,CAAC;AACjB,aAAA,SAAS,CAAC,CAAC,SAAS,KAAI;AACvB,YAAA,IAAI,CAAC,aAAa,GAAG,SAAS;AAChC,QAAA,CAAC,CAAC;IACN;IAGO,OAAO,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,IAAI,CAAC,cAAc,CAAC,mBAAmB,EAAE;QAC3C;IACF;+GA1BW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,WAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,cAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAJ1B;;AAET,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;AAK+B,UAAA,CAAA;AAAtB,IAAA,YAAY;AAA8B,CAAA,EAAA,yBAAA,CAAA,SAAA,EAAA,aAAA,EAAA,KAAA,CAAA,CAAA;4FAHzC,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBARrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,oBAAoB;oBAC9B,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACrC,oBAAA,QAAQ,EAAE;;AAET,EAAA;AACF,iBAAA;;sBAIE;;sBAGA,WAAW;uBAAC,OAAO;;sBAenB,YAAY;uBAAC,OAAO;;;ACrCvB;;AAEG;MAcU,4BAA4B,CAAA;IAIhC,kBAAkB,GAAA;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AACpB,YAAA,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC;QACnF;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACnB,YAAA,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC;QAC1F;QAEA,IAAI,CAAC,UAAU,CAAC;AACb,aAAA,SAAS,CAAC,CAAC,SAAS,KAAI;AACvB,YAAA,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS;AAC1C,QAAA,CAAC,CAAC;IACN;+GAjBW,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,4BAA4B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACzB,mBAAmB,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACnB,yBAAyB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAN7B;;AAET,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAEU,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBARxC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,uBAAuB;oBACjC,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACrC,oBAAA,QAAQ,EAAE;;AAET,EAAA;AACF,iBAAA;;sBAEE,YAAY;uBAAC,mBAAmB;;sBAChC,YAAY;uBAAC,yBAAyB;;;AClBzC;;AAEG;MAyBU,gBAAgB,CAAA;+GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,YAdzB,YAAY;YACZ,mBAAmB;YACnB,yBAAyB;AACzB,YAAA,4BAA4B,aAG5B,mBAAmB;YACnB,yBAAyB;YACzB,4BAA4B,CAAA,EAAA,CAAA,CAAA;AAMnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,SAAA,EAJhB;YACT;AACD,SAAA,EAAA,OAAA,EAAA,CAZC,YAAY,CAAA,EAAA,CAAA,CAAA;;4FAcH,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAhB5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,mBAAmB;wBACnB,yBAAyB;wBACzB;AACD,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,mBAAmB;wBACnB,yBAAyB;wBACzB;AACD,qBAAA;AACD,oBAAA,SAAS,EAAE;wBACT;AACD;AACF,iBAAA;;;AC1BD;;AAEG;;ACFH;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"ngx-semantic-modules-sidebar.mjs","sources":["../../src/modules/sidebar/sidebar.service.ts","../../src/modules/sidebar/sidebar.component.ts","../../src/modules/sidebar/sidebar-pusher.component.ts","../../src/modules/sidebar/sidebar-container.component.ts","../../src/modules/sidebar/sidebar.module.ts","../../src/modules/sidebar/public-api.ts","../../src/modules/sidebar/ngx-semantic-modules-sidebar.ts"],"sourcesContent":["/**\n * Created by bolorundurowb on 1/1/2021\n */\n\nimport { EventEmitter, Injectable } from '@angular/core';\n\n@Injectable()\nexport class SuiSidebarService {\n public pusherClicked = new EventEmitter<void>();\n public visibilityChanged = new EventEmitter<boolean>();\n\n private _isVisible = false;\n\n /** The last visibility reported by the sidebar sharing this service. */\n public get isVisible(): boolean {\n return this._isVisible;\n }\n\n public notifyPusherClicked(): void {\n this.pusherClicked.emit();\n }\n\n public changeVisibility(isVisible: boolean): void {\n this._isVisible = isVisible;\n this.visibilityChanged.emit(isVisible);\n }\n}\n","/**\n * Created by bolorundurowb on 12/30/2020\n */\n\nimport { Component, EventEmitter, Input, OnDestroy, OnInit, Output, ViewEncapsulation, inject } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { ClassUtils, InputBoolean } from 'ngx-semantic/core/util';\nimport { SuiSidebarService } from './sidebar.service';\nimport { BaseDirective } from 'ngx-semantic/core/base';\n\nexport type SuiSidebarPosition = 'top' | 'bottom' | 'left' | 'right';\nexport type SuiSidebarWidth = 'thin' | 'very thin' | 'wide' | 'very wide' | null;\nexport type SuiSidebarAnimation = 'overlay' | 'push' | 'scale down' | 'uncover' | 'slide along' | 'slide out' | null;\n\n/** Matches the Semantic UI sidebar transition duration. */\nconst SIDEBAR_ANIMATION_DURATION = 500;\n\n@Component({\n standalone: true,\n selector: 'sui-sidebar, [sui-sidebar]',\n exportAs: 'suiSidebar',\n encapsulation: ViewEncapsulation.None,\n template: `\n <ng-content></ng-content>\n `\n})\nexport class SuiSidebarComponent extends BaseDirective implements OnInit, OnDestroy {\n private sidebarService = inject(SuiSidebarService);\n\n @Input() public suiSidebarPosition: SuiSidebarPosition = 'left';\n @Input() public suiSidebarWidth: SuiSidebarWidth = null;\n @Input() public suiSidebarAnimation: SuiSidebarAnimation = null;\n @Input() @InputBoolean() public suiInverted = false;\n /** Whether clicking the pusher hides a sidebar whose visibility is two-way bound. */\n @Input() @InputBoolean() public suiClosable = true;\n @Output() public visibleChange = new EventEmitter<boolean>();\n\n public animating = false;\n\n private _visible = true;\n private animationTimer: ReturnType<typeof setTimeout> | null = null;\n private initialised = false;\n private readonly subscription: Subscription;\n\n @Input()\n get visible(): boolean {\n return this._visible;\n }\n\n set visible(isVisible) {\n const value = !!isVisible;\n // only animate changes made after the initial binding, so the sidebar does not flash on load\n if (this.initialised && value !== this._visible) {\n this.startAnimating();\n }\n this._visible = value;\n this.visibleChange.emit(this._visible);\n this.sidebarService.changeVisibility(this._visible);\n }\n\n get classes(): string {\n return [\n 'ui',\n this.suiSidebarPosition,\n this.suiSidebarWidth,\n ClassUtils.getPropClass(this.suiInverted, 'inverted'),\n 'sidebar',\n this.suiSidebarAnimation,\n ClassUtils.getPropClass(this.animating, 'animating'),\n ClassUtils.getPropClass(this.visible, 'visible')\n ].join(' ').replace(/\\s\\s+/g, ' ').trim();\n }\n\n constructor() {\n super();\n this.sidebarService.changeVisibility(this._visible);\n this.subscription = this.sidebarService.pusherClicked\n .subscribe(() => {\n // only close the sidebar from the pusher when its visibility is bound, i.e. [(visible)]\n if (this.suiClosable && this.visibleChange.observed) {\n this.visible = false;\n }\n });\n }\n\n public ngOnInit(): void {\n this.initialised = true;\n }\n\n public ngOnDestroy(): void {\n this.subscription.unsubscribe();\n if (this.animationTimer) {\n clearTimeout(this.animationTimer);\n }\n }\n\n /** Mirrors `sidebar('toggle')`. */\n public toggle(): void {\n this.visible = !this.visible;\n }\n\n /** Mirrors `sidebar('show')`. */\n public show(): void {\n this.visible = true;\n }\n\n /** Mirrors `sidebar('hide')`. */\n public hide(): void {\n this.visible = false;\n }\n\n private startAnimating(): void {\n this.animating = true;\n if (this.animationTimer) {\n clearTimeout(this.animationTimer);\n }\n this.animationTimer = setTimeout(() => {\n this.animating = false;\n this.animationTimer = null;\n }, SIDEBAR_ANIMATION_DURATION);\n }\n}\n","/**\n * Created by bolorundurowb on 12/30/2020\n */\n\nimport { Component, HostListener, Input, OnDestroy, OnInit, ViewEncapsulation, inject } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { ClassUtils, InputBoolean } from 'ngx-semantic/core/util';\nimport { SuiSidebarService } from './sidebar.service';\nimport { BaseDirective } from 'ngx-semantic/core/base';\n\n@Component({\n standalone: true,\n selector: 'sui-sidebar-pusher',\n encapsulation: ViewEncapsulation.None,\n host: {\n style: 'display: block'\n },\n template: `\n <ng-content></ng-content>\n `\n})\nexport class SuiSidebarPusherComponent extends BaseDirective implements OnInit, OnDestroy {\n private sidebarService = inject(SuiSidebarService);\n\n @Input() @InputBoolean() public suiDimmable = false;\n public isSidebarOpen = false;\n\n private subscription: Subscription | null = null;\n\n get classes(): string {\n return [\n ClassUtils.getPropClass(this.isSidebarOpen && this.suiDimmable, 'dimmed'),\n 'pusher'\n ].join(' ').trim();\n }\n\n public ngOnInit(): void {\n this.isSidebarOpen = this.isSidebarOpen || this.sidebarService.isVisible;\n this.subscription = this.sidebarService.visibilityChanged\n .subscribe((isVisible) => {\n this.isSidebarOpen = isVisible;\n });\n }\n\n public ngOnDestroy(): void {\n this.subscription?.unsubscribe();\n }\n\n @HostListener('click')\n public onClick(): void {\n if (this.isSidebarOpen) {\n this.sidebarService.notifyPusherClicked();\n }\n }\n}\n","/**\n * Created by bolorundurowb on 1/1/2021\n */\n\nimport { AfterContentInit, Component, ContentChild, HostBinding, Input, OnDestroy, ViewEncapsulation, inject } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { InputBoolean } from 'ngx-semantic/core/util';\nimport { SuiSidebarComponent } from './sidebar.component';\nimport { SuiSidebarPusherComponent } from './sidebar-pusher.component';\nimport { SuiSidebarService } from './sidebar.service';\n\n@Component({\n standalone: true,\n selector: 'sui-sidebar-container',\n encapsulation: ViewEncapsulation.None,\n // each container gets its own service so multiple sidebars on a page do not affect one another\n providers: [SuiSidebarService],\n host: {\n style: 'display: block'\n },\n template: `\n <ng-content></ng-content>\n `\n})\nexport class SuiSidebarContainerComponent implements AfterContentInit, OnDestroy {\n private sidebarService = inject(SuiSidebarService);\n\n @ContentChild(SuiSidebarComponent) public suiSidebar!: SuiSidebarComponent;\n @ContentChild(SuiSidebarPusherComponent) public suiPusher!: SuiSidebarPusherComponent;\n\n /**\n * Makes the container the sidebar's context (Semantic UI `pushable`). The sidebar and dimmer are then\n * positioned inside the container rather than the viewport. Always applied when the pusher is dimmable,\n * since Semantic UI only renders the dimmer inside a pushable context.\n */\n @Input() @InputBoolean() public suiPushable = false;\n\n private subscription: Subscription | null = null;\n\n @HostBinding('class.pushable')\n get isPushable(): boolean {\n return this.suiPushable || !!this.suiPusher?.suiDimmable;\n }\n\n public ngAfterContentInit(): void {\n if (!this.suiSidebar) {\n throw new Error('You must include a <sui-sidebar> element within the container.');\n }\n\n if (!this.suiPusher) {\n throw new Error('You must include a <sui-sidebar-pusher> element within the container.');\n }\n\n // the sidebar reports its initial visibility before the pusher exists, so sync it once here\n this.suiPusher.isSidebarOpen = this.suiSidebar.visible;\n\n this.subscription = this.sidebarService.visibilityChanged\n .subscribe((isVisible) => {\n this.suiPusher.isSidebarOpen = isVisible;\n });\n }\n\n public ngOnDestroy(): void {\n this.subscription?.unsubscribe();\n }\n}\n","/**\n * Created by bolorundurowb on 12/30/2020\n */\n\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SuiSidebarContainerComponent } from './sidebar-container.component';\nimport { SuiSidebarPusherComponent } from './sidebar-pusher.component';\nimport { SuiSidebarComponent } from './sidebar.component';\nimport { SuiSidebarService } from './sidebar.service';\n\n@NgModule({\n imports: [\n CommonModule,\n SuiSidebarComponent,\n SuiSidebarPusherComponent,\n SuiSidebarContainerComponent\n ],\n exports: [\n SuiSidebarComponent,\n SuiSidebarPusherComponent,\n SuiSidebarContainerComponent\n ],\n providers: [\n SuiSidebarService\n ]\n})\nexport class SuiSidebarModule {\n}\n","/**\n * Created by bolorundurowb on 12/30/2020\n */\n\nexport * from './sidebar-container.component';\nexport * from './sidebar-pusher.component';\nexport * from './sidebar.component';\nexport * from './sidebar.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;AAAA;;AAEG;MAKU,iBAAiB,CAAA;AAD9B,IAAA,WAAA,GAAA;AAES,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAQ;AACxC,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,YAAY,EAAW;QAE9C,IAAA,CAAA,UAAU,GAAG,KAAK;AAe3B,IAAA;;AAZC,IAAA,IAAW,SAAS,GAAA;QAClB,OAAO,IAAI,CAAC,UAAU;IACxB;IAEO,mBAAmB,GAAA;AACxB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;IAC3B;AAEO,IAAA,gBAAgB,CAAC,SAAkB,EAAA;AACxC,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS;AAC3B,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC;IACxC;+GAlBW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAjB,iBAAiB,EAAA,CAAA,CAAA;;4FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B;;;ACQD;AACA,MAAM,0BAA0B,GAAG,GAAG;AAWhC,MAAO,mBAAoB,SAAQ,aAAa,CAAA;AAkBpD,IAAA,IACI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,QAAQ;IACtB;IAEA,IAAI,OAAO,CAAC,SAAS,EAAA;AACnB,QAAA,MAAM,KAAK,GAAG,CAAC,CAAC,SAAS;;QAEzB,IAAI,IAAI,CAAC,WAAW,IAAI,KAAK,KAAK,IAAI,CAAC,QAAQ,EAAE;YAC/C,IAAI,CAAC,cAAc,EAAE;QACvB;AACA,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;QACrB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;QACtC,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC;IACrD;AAEA,IAAA,IAAI,OAAO,GAAA;QACT,OAAO;YACL,IAAI;AACJ,YAAA,IAAI,CAAC,kBAAkB;AACvB,YAAA,IAAI,CAAC,eAAe;YACpB,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC;YACrD,SAAS;AACT,YAAA,IAAI,CAAC,mBAAmB;YACxB,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC;YACpD,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS;AAChD,SAAA,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE;IAC3C;AAEA,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;AA/CD,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC;QAElC,IAAA,CAAA,kBAAkB,GAAuB,MAAM;QAC/C,IAAA,CAAA,eAAe,GAAoB,IAAI;QACvC,IAAA,CAAA,mBAAmB,GAAwB,IAAI;QAC/B,IAAA,CAAA,WAAW,GAAG,KAAK;;QAEnB,IAAA,CAAA,WAAW,GAAG,IAAI;AACjC,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAW;QAErD,IAAA,CAAA,SAAS,GAAG,KAAK;QAEhB,IAAA,CAAA,QAAQ,GAAG,IAAI;QACf,IAAA,CAAA,cAAc,GAAyC,IAAI;QAC3D,IAAA,CAAA,WAAW,GAAG,KAAK;QAkCzB,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC;AACnD,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC;aACrC,SAAS,CAAC,MAAK;;YAEd,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;AACnD,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;YACtB;AACF,QAAA,CAAC,CAAC;IACN;IAEO,QAAQ,GAAA;AACb,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;IACzB;IAEO,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE;AAC/B,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,YAAA,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC;QACnC;IACF;;IAGO,MAAM,GAAA;AACX,QAAA,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO;IAC9B;;IAGO,IAAI,GAAA;AACT,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;IACrB;;IAGO,IAAI,GAAA;AACT,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK;IACtB;IAEQ,cAAc,GAAA;AACpB,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,YAAA,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC;QACnC;AACA,QAAA,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,MAAK;AACpC,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI;QAC5B,CAAC,EAAE,0BAA0B,CAAC;IAChC;+GA9FW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAJpB;;AAET,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;AAQ+B,UAAA,CAAA;AAAtB,IAAA,YAAY;AAA8B,CAAA,EAAA,mBAAA,CAAA,SAAA,EAAA,aAAA,EAAA,KAAA,CAAA,CAAA;AAEpB,UAAA,CAAA;AAAtB,IAAA,YAAY;AAA6B,CAAA,EAAA,mBAAA,CAAA,SAAA,EAAA,aAAA,EAAA,KAAA,CAAA,CAAA;4FARxC,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAT/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,4BAA4B;AACtC,oBAAA,QAAQ,EAAE,YAAY;oBACtB,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACrC,oBAAA,QAAQ,EAAE;;AAET,EAAA;AACF,iBAAA;;sBAIE;;sBACA;;sBACA;;sBACA;;sBAEA;;sBACA;;sBASA;;;ACvBG,MAAO,yBAA0B,SAAQ,aAAa,CAAA;AAX5D,IAAA,WAAA,GAAA;;AAYU,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC;QAElB,IAAA,CAAA,WAAW,GAAG,KAAK;QAC5C,IAAA,CAAA,aAAa,GAAG,KAAK;QAEpB,IAAA,CAAA,YAAY,GAAwB,IAAI;AA2BjD,IAAA;AAzBC,IAAA,IAAI,OAAO,GAAA;QACT,OAAO;AACL,YAAA,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC;YACzE;AACD,SAAA,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;IACpB;IAEO,QAAQ,GAAA;AACb,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,cAAc,CAAC,SAAS;AACxE,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC;AACrC,aAAA,SAAS,CAAC,CAAC,SAAS,KAAI;AACvB,YAAA,IAAI,CAAC,aAAa,GAAG,SAAS;AAChC,QAAA,CAAC,CAAC;IACN;IAEO,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,YAAY,EAAE,WAAW,EAAE;IAClC;IAGO,OAAO,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,IAAI,CAAC,cAAc,CAAC,mBAAmB,EAAE;QAC3C;IACF;+GAhCW,yBAAyB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,WAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAJ1B;;AAET,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;AAK+B,UAAA,CAAA;AAAtB,IAAA,YAAY;AAA8B,CAAA,EAAA,yBAAA,CAAA,SAAA,EAAA,aAAA,EAAA,KAAA,CAAA,CAAA;4FAHzC,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAXrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,oBAAoB;oBAC9B,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACrC,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE;AACR,qBAAA;AACD,oBAAA,QAAQ,EAAE;;AAET,EAAA;AACF,iBAAA;;sBAIE;;sBAwBA,YAAY;uBAAC,OAAO;;;MCxBV,4BAA4B,CAAA;AAbzC,IAAA,WAAA,GAAA;AAcU,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAKlD;;;;AAIG;QAC6B,IAAA,CAAA,WAAW,GAAG,KAAK;QAE3C,IAAA,CAAA,YAAY,GAAwB,IAAI;AA4BjD,IAAA;AA1BC,IAAA,IACI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW;IAC1D;IAEO,kBAAkB,GAAA;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AACpB,YAAA,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC;QACnF;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACnB,YAAA,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC;QAC1F;;QAGA,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO;AAEtD,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC;AACrC,aAAA,SAAS,CAAC,CAAC,SAAS,KAAI;AACvB,YAAA,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS;AAC1C,QAAA,CAAC,CAAC;IACN;IAEO,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,YAAY,EAAE,WAAW,EAAE;IAClC;+GAxCW,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAA5B,4BAA4B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,SAAA,EAR5B,CAAC,iBAAiB,CAAC,kEAWhB,mBAAmB,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACnB,yBAAyB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAR7B;;AAET,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;AAa+B,UAAA,CAAA;AAAtB,IAAA,YAAY;AAA8B,CAAA,EAAA,4BAAA,CAAA,SAAA,EAAA,aAAA,EAAA,KAAA,CAAA,CAAA;4FAXzC,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAbxC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,uBAAuB;oBACjC,aAAa,EAAE,iBAAiB,CAAC,IAAI;;oBAErC,SAAS,EAAE,CAAC,iBAAiB,CAAC;AAC9B,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE;AACR,qBAAA;AACD,oBAAA,QAAQ,EAAE;;AAET,EAAA;AACF,iBAAA;;sBAIE,YAAY;uBAAC,mBAAmB;;sBAChC,YAAY;uBAAC,yBAAyB;;sBAOtC;;sBAIA,WAAW;uBAAC,gBAAgB;;;ACvC/B;;AAEG;MAyBU,gBAAgB,CAAA;+GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,YAdzB,YAAY;YACZ,mBAAmB;YACnB,yBAAyB;AACzB,YAAA,4BAA4B,aAG5B,mBAAmB;YACnB,yBAAyB;YACzB,4BAA4B,CAAA,EAAA,CAAA,CAAA;AAMnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,SAAA,EAJhB;YACT;AACD,SAAA,EAAA,OAAA,EAAA,CAZC,YAAY,CAAA,EAAA,CAAA,CAAA;;4FAcH,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAhB5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,mBAAmB;wBACnB,yBAAyB;wBACzB;AACD,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,mBAAmB;wBACnB,yBAAyB;wBACzB;AACD,qBAAA;AACD,oBAAA,SAAS,EAAE;wBACT;AACD;AACF,iBAAA;;;AC1BD;;AAEG;;ACFH;;AAEG;;;;"}
|
|
@@ -134,11 +134,14 @@ class SuiStickyDirective {
|
|
|
134
134
|
savePositions() {
|
|
135
135
|
const mod = this.el.nativeElement;
|
|
136
136
|
const ctx = this.contextEl;
|
|
137
|
-
const scrollH = window.innerHeight;
|
|
137
|
+
const scrollH = this.scrollEl === window ? window.innerHeight : this.scrollEl.clientHeight;
|
|
138
138
|
const cs = getComputedStyle(mod);
|
|
139
139
|
const marginTop = parseInt(cs.marginTop, 10) || 0;
|
|
140
140
|
const marginBottom = parseInt(cs.marginBottom, 10) || 0;
|
|
141
|
-
|
|
141
|
+
// positions are measured in the coordinate space of the scroll context so they can be compared with its scrollTop
|
|
142
|
+
const scroller = this.scrollEl === window ? null : this.scrollEl;
|
|
143
|
+
const scrollerTop = scroller ? scroller.getBoundingClientRect().top : 0;
|
|
144
|
+
const sy = scroller ? scroller.scrollTop - scrollerTop : window.scrollY;
|
|
142
145
|
const sx = window.scrollX;
|
|
143
146
|
const er = mod.getBoundingClientRect();
|
|
144
147
|
const cr = ctx.getBoundingClientRect();
|
|
@@ -334,6 +337,9 @@ class SuiStickyDirective {
|
|
|
334
337
|
this.renderer.setStyle(this.el.nativeElement, 'left', `${cache.element.left}px`);
|
|
335
338
|
this.renderer.setStyle(this.el.nativeElement, 'bottom', '');
|
|
336
339
|
this.renderer.setStyle(this.el.nativeElement, 'margin-bottom', '');
|
|
340
|
+
if (this.scrollEl !== window) {
|
|
341
|
+
this.renderer.setStyle(this.el.nativeElement, 'top', `${this.scrollEl.getBoundingClientRect().top}px`);
|
|
342
|
+
}
|
|
337
343
|
this.fixed = true;
|
|
338
344
|
this.bound = false;
|
|
339
345
|
this.topState = true;
|
|
@@ -353,6 +359,10 @@ class SuiStickyDirective {
|
|
|
353
359
|
}
|
|
354
360
|
this.renderer.setStyle(this.el.nativeElement, 'margin-top', `${this.suiOffset}px`);
|
|
355
361
|
this.renderer.setStyle(this.el.nativeElement, 'left', `${cache.element.left}px`);
|
|
362
|
+
if (this.scrollEl !== window) {
|
|
363
|
+
const bottom = window.innerHeight - this.scrollEl.getBoundingClientRect().bottom;
|
|
364
|
+
this.renderer.setStyle(this.el.nativeElement, 'bottom', `${bottom}px`);
|
|
365
|
+
}
|
|
356
366
|
this.fixed = true;
|
|
357
367
|
this.bound = false;
|
|
358
368
|
this.topState = false;
|
|
@@ -366,6 +376,7 @@ class SuiStickyDirective {
|
|
|
366
376
|
this.lastScroll = undefined;
|
|
367
377
|
this.elementScroll = 0;
|
|
368
378
|
if (wasStuck) {
|
|
379
|
+
this.suiOnTop.emit();
|
|
369
380
|
this.suiOnUnstick.emit();
|
|
370
381
|
}
|
|
371
382
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-semantic-modules-sticky.mjs","sources":["../../src/modules/sticky/sticky.directive.ts","../../src/modules/sticky/sticky.module.ts","../../src/modules/sticky/ngx-semantic-modules-sticky.ts"],"sourcesContent":["/**\n * Semantic UI [Sticky](https://semantic-ui.com/modules/sticky.html) — Angular port of `$.fn.sticky`.\n * Add `suiSticky` to the element that should stick; set `suiContext` to a selector or element for bounds.\n * Requires Semantic UI sticky CSS (and typically `position: relative` on the rail/column container).\n */\n\nimport { DOCUMENT } from '@angular/common';\nimport { AfterViewInit, ChangeDetectorRef, Directive, ElementRef, EventEmitter, HostBinding, Input, NgZone, OnDestroy, OnInit, Output, Renderer2, inject } from '@angular/core';\nimport { InputBoolean } from 'ngx-semantic/core/util';\nimport { Subject, fromEvent } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\n/** Cached layout (see Semantic UI `save.positions`). */\nexport interface SuiStickyCache {\n fits: boolean;\n sameHeight: boolean;\n scrollContext: {height: number};\n element: {\n margin: {top: number; bottom: number};\n top: number;\n left: number;\n width: number;\n height: number;\n bottom: number;\n };\n context: {\n top: number;\n height: number;\n bottom: number;\n };\n}\n\n@Directive({\n standalone: true,\n selector: '[suiSticky]',\n exportAs: 'suiSticky'\n})\nexport class SuiStickyDirective implements OnInit, AfterViewInit, OnDestroy {\n private readonly document = inject<Document>(DOCUMENT);\n private readonly el = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly renderer = inject(Renderer2);\n private readonly zone = inject(NgZone);\n private readonly cdr = inject(ChangeDetectorRef);\n\n @Input() public suiContext: string | HTMLElement | null = null;\n @Input() public suiScrollContext: 'window' | string = 'window';\n @Input() public suiOffset = 0;\n @Input() public suiBottomOffset = 0;\n @Input() @InputBoolean() public suiPushing = false;\n @Input() @InputBoolean() public suiSetSize = true;\n @Input() public suiJitter = 5;\n @Input() @InputBoolean() public suiObserveChanges = false;\n\n @Output() public readonly suiOnReposition = new EventEmitter<void>();\n @Output() public readonly suiOnScroll = new EventEmitter<void>();\n @Output() public readonly suiOnStick = new EventEmitter<void>();\n @Output() public readonly suiOnUnstick = new EventEmitter<void>();\n @Output() public readonly suiOnTop = new EventEmitter<void>();\n @Output() public readonly suiOnBottom = new EventEmitter<void>();\n\n public cache: SuiStickyCache | null = null;\n\n @HostBinding('class.ui') protected readonly classUi = true;\n @HostBinding('class.sticky') protected readonly classSticky = true;\n @HostBinding('class.fixed') fixed = false;\n @HostBinding('class.bound') bound = false;\n @HostBinding('class.top') topState = false;\n @HostBinding('class.bottom') bottomState = false;\n\n private readonly destroy$ = new Subject<void>();\n private lastScroll?: number;\n private elementScroll = 0;\n private scrollEl: Window | HTMLElement = window;\n private contextEl: HTMLElement | null = null;\n private containerEl: HTMLElement | null = null;\n private mutationObserver: MutationObserver | null = null;\n private refreshTimer: ReturnType<typeof setTimeout> | null = null;\n\n public ngOnInit(): void {\n this.scrollEl = this.resolveScrollElement();\n const win = this.document.defaultView!;\n this.zone.runOutsideAngular(() => {\n const scrollTarget = this.scrollEl === window ? win : this.scrollEl;\n fromEvent(scrollTarget, 'scroll', { passive: true })\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n requestAnimationFrame(() => {\n const top = this.readScrollTop();\n this.zone.run(() => {\n this.stick(top);\n this.suiOnScroll.emit();\n });\n });\n });\n fromEvent(win, 'resize', { passive: true })\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n requestAnimationFrame(() => this.zone.run(() => this.refresh(false)));\n });\n });\n }\n\n public ngAfterViewInit(): void {\n queueMicrotask(() => this.refresh(true));\n }\n\n public ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n this.mutationObserver?.disconnect();\n if (this.refreshTimer) {\n clearTimeout(this.refreshTimer);\n }\n this.reset();\n }\n\n /** Mirrors `sticky('refresh')`. */\n public refresh(hardRefresh = false): void {\n this.resetLayout();\n this.determineContainer();\n this.determineContext();\n if (!this.contextEl) {\n return;\n }\n if (hardRefresh) {\n this.determineContainer();\n }\n this.savePositions();\n this.suiOnReposition.emit();\n this.cdr.markForCheck();\n if (this.suiObserveChanges && typeof MutationObserver !== 'undefined' && !this.mutationObserver) {\n this.mutationObserver = new MutationObserver(() => this.scheduleRefresh());\n this.mutationObserver.observe(this.contextEl, { childList: true, subtree: true });\n this.mutationObserver.observe(this.el.nativeElement, { childList: true, subtree: true });\n }\n }\n\n private scheduleRefresh(): void {\n if (this.refreshTimer) {\n clearTimeout(this.refreshTimer);\n }\n this.refreshTimer = setTimeout(() => {\n this.refreshTimer = null;\n this.refresh(false);\n }, 100);\n }\n\n private resolveScrollElement(): Window | HTMLElement {\n if (this.suiScrollContext === 'window') {\n return window;\n }\n const found = this.document.querySelector(this.suiScrollContext);\n return (found as HTMLElement) || window;\n }\n\n private readScrollTop(): number {\n return this.scrollEl === window ? window.scrollY : (this.scrollEl as HTMLElement).scrollTop;\n }\n\n private determineContainer(): void {\n const host = this.el.nativeElement;\n this.containerEl = (host.offsetParent as HTMLElement) || host.parentElement;\n }\n\n private determineContext(): void {\n if (this.suiContext === null) {\n this.contextEl = this.containerEl;\n return;\n }\n if (typeof this.suiContext === 'string') {\n this.contextEl = this.document.querySelector(this.suiContext) as HTMLElement | null;\n return;\n }\n this.contextEl = this.suiContext;\n }\n\n private savePositions(): void {\n const mod = this.el.nativeElement;\n const ctx = this.contextEl!;\n const scrollH = window.innerHeight;\n\n const cs = getComputedStyle(mod);\n const marginTop = parseInt(cs.marginTop, 10) || 0;\n const marginBottom = parseInt(cs.marginBottom, 10) || 0;\n\n const sy = window.scrollY;\n const sx = window.scrollX;\n const er = mod.getBoundingClientRect();\n const cr = ctx.getBoundingClientRect();\n\n const elementOffsetTop = er.top + sy;\n const contextOffsetTop = cr.top + sy;\n const elementOffsetLeft = er.left + sx;\n\n const elementHeight = mod.offsetHeight;\n const contextHeight = ctx.offsetHeight;\n\n const elementTop = elementOffsetTop - marginTop;\n const contextBottom = contextOffsetTop + contextHeight;\n\n this.cache = {\n fits: elementHeight + this.suiOffset <= scrollH,\n sameHeight: elementHeight === contextHeight,\n scrollContext: { height: scrollH },\n element: {\n margin: { top: marginTop, bottom: marginBottom },\n top: elementTop,\n left: elementOffsetLeft,\n width: mod.offsetWidth,\n height: elementHeight,\n bottom: elementOffsetTop + elementHeight\n },\n context: {\n top: contextOffsetTop,\n height: contextHeight,\n bottom: contextBottom\n }\n };\n\n this.setContainerSize();\n if (!this.isCacheValid()) {\n this.cache = null;\n this.resetLayout();\n return;\n }\n this.stick(this.readScrollTop());\n }\n\n private isCacheValid(): boolean {\n if (!this.cache) {\n return false;\n }\n const style = getComputedStyle(this.el.nativeElement);\n if (style.display === 'none' || style.visibility === 'hidden') {\n return false;\n }\n return this.cache.element.height <= this.cache.context.height;\n }\n\n private setContainerSize(): void {\n if (!this.cache || !this.containerEl) {\n return;\n }\n const tag = this.containerEl.tagName;\n if (tag === 'HTML' || tag === 'BODY') {\n return;\n }\n const ch = this.containerEl.offsetHeight;\n const ctxH = this.cache.context.height;\n if (Math.abs(ch - ctxH) > this.suiJitter) {\n this.renderer.setStyle(this.containerEl, 'height', `${ctxH}px`);\n }\n }\n\n /**\n * Port of Semantic UI `module.stick` — initial / fixed-top / bound-bottom transitions\n * (simplified: no oversized inner scroll in this version).\n */\n private stick(cachedPosition: number): void {\n const cache = this.cache;\n if (!cache || cache.sameHeight) {\n return;\n }\n\n const offset = this.bottomState && this.suiPushing ? this.suiBottomOffset : this.suiOffset;\n const scroll = {\n top: cachedPosition + offset,\n bottom: cachedPosition + offset + cache.scrollContext.height\n };\n\n const element = cache.element;\n const context = cache.context;\n const elementScroll = cache.fits ? 0 : this.computeElementScroll(cachedPosition);\n\n if (this.isInitialPosition()) {\n if (scroll.top >= context.bottom) {\n this.bindBottom();\n } else if (scroll.top > element.top) {\n if (element.height + scroll.top - elementScroll >= context.bottom) {\n this.bindBottom();\n } else {\n this.fixTop();\n }\n }\n } else if (this.fixed) {\n if (this.topState) {\n if (scroll.top <= element.top) {\n this.setInitialPosition();\n } else if (element.height + scroll.top - elementScroll >= context.bottom) {\n this.bindBottom();\n } else if (!cache.fits) {\n this.applyElementScroll(elementScroll);\n this.lastScroll = scroll.top;\n }\n } else if (this.bottomState) {\n if (scroll.bottom - element.height <= element.top) {\n this.setInitialPosition();\n } else if (scroll.bottom >= context.bottom) {\n this.bindBottom();\n } else if (!cache.fits) {\n this.applyElementScroll(elementScroll);\n this.lastScroll = scroll.top;\n }\n }\n } else if (this.bound && this.bottomState) {\n if (scroll.top <= element.top) {\n this.setInitialPosition();\n } else if (this.suiPushing) {\n if (this.bound && scroll.bottom <= context.bottom) {\n this.fixBottom();\n }\n } else {\n if (this.bound && scroll.top <= context.bottom - element.height) {\n this.fixTop();\n }\n }\n }\n\n this.lastScroll = cachedPosition;\n this.cdr.markForCheck();\n }\n\n private isInitialPosition(): boolean {\n return !this.fixed && !this.bound;\n }\n\n private computeElementScroll(scroll: number): number {\n const cache = this.cache!;\n const delta = this.lastScroll === undefined ? 0 : scroll - this.lastScroll;\n const maxScroll = cache.element.height - cache.scrollContext.height + this.suiOffset;\n let es = this.elementScroll;\n if (this.topState) {\n es = Math.abs(parseInt(this.el.nativeElement.style.top || '0', 10)) || 0;\n } else if (this.bottomState) {\n es = Math.abs(parseInt(this.el.nativeElement.style.bottom || '0', 10)) || 0;\n }\n const possible = es + delta;\n if (cache.fits || possible < 0) {\n return 0;\n }\n if (possible > maxScroll) {\n return maxScroll;\n }\n return possible;\n }\n\n private applyElementScroll(scroll: number): void {\n this.elementScroll = scroll;\n if (this.topState) {\n this.renderer.setStyle(this.el.nativeElement, 'bottom', '');\n this.renderer.setStyle(this.el.nativeElement, 'top', `${-scroll}px`);\n }\n if (this.bottomState) {\n this.renderer.setStyle(this.el.nativeElement, 'top', '');\n this.renderer.setStyle(this.el.nativeElement, 'bottom', `${scroll}px`);\n }\n }\n\n private bindBottom(): void {\n this.unfix();\n this.unbind();\n this.clearPositionStyles();\n this.renderer.removeStyle(this.el.nativeElement, 'margin-top');\n this.fixed = false;\n this.bound = true;\n this.topState = false;\n this.bottomState = true;\n this.suiOnBottom.emit();\n this.suiOnUnstick.emit();\n }\n\n private fixTop(): void {\n this.unfix();\n this.unbind();\n const cache = this.cache!;\n if (this.suiSetSize) {\n this.renderer.setStyle(this.el.nativeElement, 'width', `${cache.element.width}px`, 2);\n this.renderer.setStyle(this.el.nativeElement, 'height', `${cache.element.height}px`, 2);\n }\n if (this.containerEl) {\n this.renderer.setStyle(this.containerEl, 'min-height', `${cache.element.height}px`);\n }\n this.renderer.setStyle(this.el.nativeElement, 'margin-top', `${this.suiOffset}px`);\n this.renderer.setStyle(this.el.nativeElement, 'left', `${cache.element.left}px`);\n this.renderer.setStyle(this.el.nativeElement, 'bottom', '');\n this.renderer.setStyle(this.el.nativeElement, 'margin-bottom', '');\n this.fixed = true;\n this.bound = false;\n this.topState = true;\n this.bottomState = false;\n this.suiOnStick.emit();\n }\n\n private fixBottom(): void {\n this.unfix();\n this.unbind();\n const cache = this.cache!;\n if (this.suiSetSize) {\n this.renderer.setStyle(this.el.nativeElement, 'width', `${cache.element.width}px`, 2);\n this.renderer.setStyle(this.el.nativeElement, 'height', `${cache.element.height}px`, 2);\n }\n if (this.containerEl) {\n this.renderer.setStyle(this.containerEl, 'min-height', `${cache.element.height}px`);\n }\n this.renderer.setStyle(this.el.nativeElement, 'margin-top', `${this.suiOffset}px`);\n this.renderer.setStyle(this.el.nativeElement, 'left', `${cache.element.left}px`);\n this.fixed = true;\n this.bound = false;\n this.topState = false;\n this.bottomState = true;\n this.suiOnStick.emit();\n }\n\n private setInitialPosition(): void {\n const wasStuck = this.fixed || this.bound;\n this.unfix();\n this.unbind();\n this.lastScroll = undefined;\n this.elementScroll = 0;\n if (wasStuck) {\n this.suiOnUnstick.emit();\n }\n }\n\n private unbind(): void {\n if (!this.bound) {\n return;\n }\n this.bound = false;\n this.topState = false;\n this.bottomState = false;\n }\n\n private unfix(): void {\n if (!this.fixed) {\n return;\n }\n if (this.containerEl) {\n this.renderer.removeStyle(this.containerEl, 'min-height');\n }\n this.renderer.removeStyle(this.el.nativeElement, 'margin-top');\n this.renderer.removeStyle(this.el.nativeElement, 'left');\n this.renderer.removeStyle(this.el.nativeElement, 'width');\n this.renderer.removeStyle(this.el.nativeElement, 'height');\n this.renderer.removeStyle(this.el.nativeElement, 'top');\n this.renderer.removeStyle(this.el.nativeElement, 'bottom');\n this.fixed = false;\n this.topState = false;\n this.bottomState = false;\n }\n\n private clearPositionStyles(): void {\n this.renderer.removeStyle(this.el.nativeElement, 'left');\n this.renderer.removeStyle(this.el.nativeElement, 'top');\n this.renderer.removeStyle(this.el.nativeElement, 'bottom');\n this.renderer.removeStyle(this.el.nativeElement, 'margin-bottom');\n }\n\n private resetLayout(): void {\n this.unfix();\n this.unbind();\n this.clearPositionStyles();\n this.renderer.removeStyle(this.el.nativeElement, 'margin-top');\n if (this.containerEl) {\n this.renderer.removeStyle(this.containerEl, 'height');\n this.renderer.removeStyle(this.containerEl, 'min-height');\n }\n this.renderer.removeStyle(this.el.nativeElement, 'width');\n this.renderer.removeStyle(this.el.nativeElement, 'height');\n this.fixed = false;\n this.bound = false;\n this.topState = false;\n this.bottomState = false;\n }\n\n private reset(): void {\n this.resetLayout();\n this.cache = null;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SuiStickyDirective } from './sticky.directive';\n\n@NgModule({\n imports: [CommonModule, SuiStickyDirective],\n exports: [SuiStickyDirective]\n})\nexport class SuiStickyModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngx-semantic-modules-sticky.mjs","sources":["../../src/modules/sticky/sticky.directive.ts","../../src/modules/sticky/sticky.module.ts","../../src/modules/sticky/ngx-semantic-modules-sticky.ts"],"sourcesContent":["/**\n * Semantic UI [Sticky](https://semantic-ui.com/modules/sticky.html) — Angular port of `$.fn.sticky`.\n * Add `suiSticky` to the element that should stick; set `suiContext` to a selector or element for bounds.\n * Requires Semantic UI sticky CSS (and typically `position: relative` on the rail/column container).\n */\n\nimport { DOCUMENT } from '@angular/common';\nimport { AfterViewInit, ChangeDetectorRef, Directive, ElementRef, EventEmitter, HostBinding, Input, NgZone, OnDestroy, OnInit, Output, Renderer2, inject } from '@angular/core';\nimport { InputBoolean } from 'ngx-semantic/core/util';\nimport { Subject, fromEvent } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\n/** Cached layout (see Semantic UI `save.positions`). */\nexport interface SuiStickyCache {\n fits: boolean;\n sameHeight: boolean;\n scrollContext: {height: number};\n element: {\n margin: {top: number; bottom: number};\n top: number;\n left: number;\n width: number;\n height: number;\n bottom: number;\n };\n context: {\n top: number;\n height: number;\n bottom: number;\n };\n}\n\n@Directive({\n standalone: true,\n selector: '[suiSticky]',\n exportAs: 'suiSticky'\n})\nexport class SuiStickyDirective implements OnInit, AfterViewInit, OnDestroy {\n private readonly document = inject<Document>(DOCUMENT);\n private readonly el = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly renderer = inject(Renderer2);\n private readonly zone = inject(NgZone);\n private readonly cdr = inject(ChangeDetectorRef);\n\n @Input() public suiContext: string | HTMLElement | null = null;\n @Input() public suiScrollContext: 'window' | string = 'window';\n @Input() public suiOffset = 0;\n @Input() public suiBottomOffset = 0;\n @Input() @InputBoolean() public suiPushing = false;\n @Input() @InputBoolean() public suiSetSize = true;\n @Input() public suiJitter = 5;\n @Input() @InputBoolean() public suiObserveChanges = false;\n\n @Output() public readonly suiOnReposition = new EventEmitter<void>();\n @Output() public readonly suiOnScroll = new EventEmitter<void>();\n @Output() public readonly suiOnStick = new EventEmitter<void>();\n @Output() public readonly suiOnUnstick = new EventEmitter<void>();\n @Output() public readonly suiOnTop = new EventEmitter<void>();\n @Output() public readonly suiOnBottom = new EventEmitter<void>();\n\n public cache: SuiStickyCache | null = null;\n\n @HostBinding('class.ui') protected readonly classUi = true;\n @HostBinding('class.sticky') protected readonly classSticky = true;\n @HostBinding('class.fixed') fixed = false;\n @HostBinding('class.bound') bound = false;\n @HostBinding('class.top') topState = false;\n @HostBinding('class.bottom') bottomState = false;\n\n private readonly destroy$ = new Subject<void>();\n private lastScroll?: number;\n private elementScroll = 0;\n private scrollEl: Window | HTMLElement = window;\n private contextEl: HTMLElement | null = null;\n private containerEl: HTMLElement | null = null;\n private mutationObserver: MutationObserver | null = null;\n private refreshTimer: ReturnType<typeof setTimeout> | null = null;\n\n public ngOnInit(): void {\n this.scrollEl = this.resolveScrollElement();\n const win = this.document.defaultView!;\n this.zone.runOutsideAngular(() => {\n const scrollTarget = this.scrollEl === window ? win : this.scrollEl;\n fromEvent(scrollTarget, 'scroll', { passive: true })\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n requestAnimationFrame(() => {\n const top = this.readScrollTop();\n this.zone.run(() => {\n this.stick(top);\n this.suiOnScroll.emit();\n });\n });\n });\n fromEvent(win, 'resize', { passive: true })\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n requestAnimationFrame(() => this.zone.run(() => this.refresh(false)));\n });\n });\n }\n\n public ngAfterViewInit(): void {\n queueMicrotask(() => this.refresh(true));\n }\n\n public ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n this.mutationObserver?.disconnect();\n if (this.refreshTimer) {\n clearTimeout(this.refreshTimer);\n }\n this.reset();\n }\n\n /** Mirrors `sticky('refresh')`. */\n public refresh(hardRefresh = false): void {\n this.resetLayout();\n this.determineContainer();\n this.determineContext();\n if (!this.contextEl) {\n return;\n }\n if (hardRefresh) {\n this.determineContainer();\n }\n this.savePositions();\n this.suiOnReposition.emit();\n this.cdr.markForCheck();\n if (this.suiObserveChanges && typeof MutationObserver !== 'undefined' && !this.mutationObserver) {\n this.mutationObserver = new MutationObserver(() => this.scheduleRefresh());\n this.mutationObserver.observe(this.contextEl, { childList: true, subtree: true });\n this.mutationObserver.observe(this.el.nativeElement, { childList: true, subtree: true });\n }\n }\n\n private scheduleRefresh(): void {\n if (this.refreshTimer) {\n clearTimeout(this.refreshTimer);\n }\n this.refreshTimer = setTimeout(() => {\n this.refreshTimer = null;\n this.refresh(false);\n }, 100);\n }\n\n private resolveScrollElement(): Window | HTMLElement {\n if (this.suiScrollContext === 'window') {\n return window;\n }\n const found = this.document.querySelector(this.suiScrollContext);\n return (found as HTMLElement) || window;\n }\n\n private readScrollTop(): number {\n return this.scrollEl === window ? window.scrollY : (this.scrollEl as HTMLElement).scrollTop;\n }\n\n private determineContainer(): void {\n const host = this.el.nativeElement;\n this.containerEl = (host.offsetParent as HTMLElement) || host.parentElement;\n }\n\n private determineContext(): void {\n if (this.suiContext === null) {\n this.contextEl = this.containerEl;\n return;\n }\n if (typeof this.suiContext === 'string') {\n this.contextEl = this.document.querySelector(this.suiContext) as HTMLElement | null;\n return;\n }\n this.contextEl = this.suiContext;\n }\n\n private savePositions(): void {\n const mod = this.el.nativeElement;\n const ctx = this.contextEl!;\n const scrollH = this.scrollEl === window ? window.innerHeight : (this.scrollEl as HTMLElement).clientHeight;\n\n const cs = getComputedStyle(mod);\n const marginTop = parseInt(cs.marginTop, 10) || 0;\n const marginBottom = parseInt(cs.marginBottom, 10) || 0;\n\n // positions are measured in the coordinate space of the scroll context so they can be compared with its scrollTop\n const scroller = this.scrollEl === window ? null : this.scrollEl as HTMLElement;\n const scrollerTop = scroller ? scroller.getBoundingClientRect().top : 0;\n const sy = scroller ? scroller.scrollTop - scrollerTop : window.scrollY;\n const sx = window.scrollX;\n const er = mod.getBoundingClientRect();\n const cr = ctx.getBoundingClientRect();\n\n const elementOffsetTop = er.top + sy;\n const contextOffsetTop = cr.top + sy;\n const elementOffsetLeft = er.left + sx;\n\n const elementHeight = mod.offsetHeight;\n const contextHeight = ctx.offsetHeight;\n\n const elementTop = elementOffsetTop - marginTop;\n const contextBottom = contextOffsetTop + contextHeight;\n\n this.cache = {\n fits: elementHeight + this.suiOffset <= scrollH,\n sameHeight: elementHeight === contextHeight,\n scrollContext: { height: scrollH },\n element: {\n margin: { top: marginTop, bottom: marginBottom },\n top: elementTop,\n left: elementOffsetLeft,\n width: mod.offsetWidth,\n height: elementHeight,\n bottom: elementOffsetTop + elementHeight\n },\n context: {\n top: contextOffsetTop,\n height: contextHeight,\n bottom: contextBottom\n }\n };\n\n this.setContainerSize();\n if (!this.isCacheValid()) {\n this.cache = null;\n this.resetLayout();\n return;\n }\n this.stick(this.readScrollTop());\n }\n\n private isCacheValid(): boolean {\n if (!this.cache) {\n return false;\n }\n const style = getComputedStyle(this.el.nativeElement);\n if (style.display === 'none' || style.visibility === 'hidden') {\n return false;\n }\n return this.cache.element.height <= this.cache.context.height;\n }\n\n private setContainerSize(): void {\n if (!this.cache || !this.containerEl) {\n return;\n }\n const tag = this.containerEl.tagName;\n if (tag === 'HTML' || tag === 'BODY') {\n return;\n }\n const ch = this.containerEl.offsetHeight;\n const ctxH = this.cache.context.height;\n if (Math.abs(ch - ctxH) > this.suiJitter) {\n this.renderer.setStyle(this.containerEl, 'height', `${ctxH}px`);\n }\n }\n\n /**\n * Port of Semantic UI `module.stick` — initial / fixed-top / bound-bottom transitions\n * (simplified: no oversized inner scroll in this version).\n */\n private stick(cachedPosition: number): void {\n const cache = this.cache;\n if (!cache || cache.sameHeight) {\n return;\n }\n\n const offset = this.bottomState && this.suiPushing ? this.suiBottomOffset : this.suiOffset;\n const scroll = {\n top: cachedPosition + offset,\n bottom: cachedPosition + offset + cache.scrollContext.height\n };\n\n const element = cache.element;\n const context = cache.context;\n const elementScroll = cache.fits ? 0 : this.computeElementScroll(cachedPosition);\n\n if (this.isInitialPosition()) {\n if (scroll.top >= context.bottom) {\n this.bindBottom();\n } else if (scroll.top > element.top) {\n if (element.height + scroll.top - elementScroll >= context.bottom) {\n this.bindBottom();\n } else {\n this.fixTop();\n }\n }\n } else if (this.fixed) {\n if (this.topState) {\n if (scroll.top <= element.top) {\n this.setInitialPosition();\n } else if (element.height + scroll.top - elementScroll >= context.bottom) {\n this.bindBottom();\n } else if (!cache.fits) {\n this.applyElementScroll(elementScroll);\n this.lastScroll = scroll.top;\n }\n } else if (this.bottomState) {\n if (scroll.bottom - element.height <= element.top) {\n this.setInitialPosition();\n } else if (scroll.bottom >= context.bottom) {\n this.bindBottom();\n } else if (!cache.fits) {\n this.applyElementScroll(elementScroll);\n this.lastScroll = scroll.top;\n }\n }\n } else if (this.bound && this.bottomState) {\n if (scroll.top <= element.top) {\n this.setInitialPosition();\n } else if (this.suiPushing) {\n if (this.bound && scroll.bottom <= context.bottom) {\n this.fixBottom();\n }\n } else {\n if (this.bound && scroll.top <= context.bottom - element.height) {\n this.fixTop();\n }\n }\n }\n\n this.lastScroll = cachedPosition;\n this.cdr.markForCheck();\n }\n\n private isInitialPosition(): boolean {\n return !this.fixed && !this.bound;\n }\n\n private computeElementScroll(scroll: number): number {\n const cache = this.cache!;\n const delta = this.lastScroll === undefined ? 0 : scroll - this.lastScroll;\n const maxScroll = cache.element.height - cache.scrollContext.height + this.suiOffset;\n let es = this.elementScroll;\n if (this.topState) {\n es = Math.abs(parseInt(this.el.nativeElement.style.top || '0', 10)) || 0;\n } else if (this.bottomState) {\n es = Math.abs(parseInt(this.el.nativeElement.style.bottom || '0', 10)) || 0;\n }\n const possible = es + delta;\n if (cache.fits || possible < 0) {\n return 0;\n }\n if (possible > maxScroll) {\n return maxScroll;\n }\n return possible;\n }\n\n private applyElementScroll(scroll: number): void {\n this.elementScroll = scroll;\n if (this.topState) {\n this.renderer.setStyle(this.el.nativeElement, 'bottom', '');\n this.renderer.setStyle(this.el.nativeElement, 'top', `${-scroll}px`);\n }\n if (this.bottomState) {\n this.renderer.setStyle(this.el.nativeElement, 'top', '');\n this.renderer.setStyle(this.el.nativeElement, 'bottom', `${scroll}px`);\n }\n }\n\n private bindBottom(): void {\n this.unfix();\n this.unbind();\n this.clearPositionStyles();\n this.renderer.removeStyle(this.el.nativeElement, 'margin-top');\n this.fixed = false;\n this.bound = true;\n this.topState = false;\n this.bottomState = true;\n this.suiOnBottom.emit();\n this.suiOnUnstick.emit();\n }\n\n private fixTop(): void {\n this.unfix();\n this.unbind();\n const cache = this.cache!;\n if (this.suiSetSize) {\n this.renderer.setStyle(this.el.nativeElement, 'width', `${cache.element.width}px`, 2);\n this.renderer.setStyle(this.el.nativeElement, 'height', `${cache.element.height}px`, 2);\n }\n if (this.containerEl) {\n this.renderer.setStyle(this.containerEl, 'min-height', `${cache.element.height}px`);\n }\n this.renderer.setStyle(this.el.nativeElement, 'margin-top', `${this.suiOffset}px`);\n this.renderer.setStyle(this.el.nativeElement, 'left', `${cache.element.left}px`);\n this.renderer.setStyle(this.el.nativeElement, 'bottom', '');\n this.renderer.setStyle(this.el.nativeElement, 'margin-bottom', '');\n if (this.scrollEl !== window) {\n this.renderer.setStyle(this.el.nativeElement, 'top', `${(this.scrollEl as HTMLElement).getBoundingClientRect().top}px`);\n }\n this.fixed = true;\n this.bound = false;\n this.topState = true;\n this.bottomState = false;\n this.suiOnStick.emit();\n }\n\n private fixBottom(): void {\n this.unfix();\n this.unbind();\n const cache = this.cache!;\n if (this.suiSetSize) {\n this.renderer.setStyle(this.el.nativeElement, 'width', `${cache.element.width}px`, 2);\n this.renderer.setStyle(this.el.nativeElement, 'height', `${cache.element.height}px`, 2);\n }\n if (this.containerEl) {\n this.renderer.setStyle(this.containerEl, 'min-height', `${cache.element.height}px`);\n }\n this.renderer.setStyle(this.el.nativeElement, 'margin-top', `${this.suiOffset}px`);\n this.renderer.setStyle(this.el.nativeElement, 'left', `${cache.element.left}px`);\n if (this.scrollEl !== window) {\n const bottom = window.innerHeight - (this.scrollEl as HTMLElement).getBoundingClientRect().bottom;\n this.renderer.setStyle(this.el.nativeElement, 'bottom', `${bottom}px`);\n }\n this.fixed = true;\n this.bound = false;\n this.topState = false;\n this.bottomState = true;\n this.suiOnStick.emit();\n }\n\n private setInitialPosition(): void {\n const wasStuck = this.fixed || this.bound;\n this.unfix();\n this.unbind();\n this.lastScroll = undefined;\n this.elementScroll = 0;\n if (wasStuck) {\n this.suiOnTop.emit();\n this.suiOnUnstick.emit();\n }\n }\n\n private unbind(): void {\n if (!this.bound) {\n return;\n }\n this.bound = false;\n this.topState = false;\n this.bottomState = false;\n }\n\n private unfix(): void {\n if (!this.fixed) {\n return;\n }\n if (this.containerEl) {\n this.renderer.removeStyle(this.containerEl, 'min-height');\n }\n this.renderer.removeStyle(this.el.nativeElement, 'margin-top');\n this.renderer.removeStyle(this.el.nativeElement, 'left');\n this.renderer.removeStyle(this.el.nativeElement, 'width');\n this.renderer.removeStyle(this.el.nativeElement, 'height');\n this.renderer.removeStyle(this.el.nativeElement, 'top');\n this.renderer.removeStyle(this.el.nativeElement, 'bottom');\n this.fixed = false;\n this.topState = false;\n this.bottomState = false;\n }\n\n private clearPositionStyles(): void {\n this.renderer.removeStyle(this.el.nativeElement, 'left');\n this.renderer.removeStyle(this.el.nativeElement, 'top');\n this.renderer.removeStyle(this.el.nativeElement, 'bottom');\n this.renderer.removeStyle(this.el.nativeElement, 'margin-bottom');\n }\n\n private resetLayout(): void {\n this.unfix();\n this.unbind();\n this.clearPositionStyles();\n this.renderer.removeStyle(this.el.nativeElement, 'margin-top');\n if (this.containerEl) {\n this.renderer.removeStyle(this.containerEl, 'height');\n this.renderer.removeStyle(this.containerEl, 'min-height');\n }\n this.renderer.removeStyle(this.el.nativeElement, 'width');\n this.renderer.removeStyle(this.el.nativeElement, 'height');\n this.fixed = false;\n this.bound = false;\n this.topState = false;\n this.bottomState = false;\n }\n\n private reset(): void {\n this.resetLayout();\n this.cache = null;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SuiStickyDirective } from './sticky.directive';\n\n@NgModule({\n imports: [CommonModule, SuiStickyDirective],\n exports: [SuiStickyDirective]\n})\nexport class SuiStickyModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|