ngx-semantic 2.0.9 → 2.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.
Files changed (29) hide show
  1. package/fesm2022/ngx-semantic-collections-grid.mjs +99 -17
  2. package/fesm2022/ngx-semantic-collections-grid.mjs.map +1 -1
  3. package/fesm2022/ngx-semantic-collections-menu.mjs +18 -3
  4. package/fesm2022/ngx-semantic-collections-menu.mjs.map +1 -1
  5. package/fesm2022/ngx-semantic-collections-table.mjs +42 -7
  6. package/fesm2022/ngx-semantic-collections-table.mjs.map +1 -1
  7. package/fesm2022/ngx-semantic-elements-divider.mjs +8 -8
  8. package/fesm2022/ngx-semantic-elements-divider.mjs.map +1 -1
  9. package/fesm2022/ngx-semantic-modules-dimmer.mjs +6 -4
  10. package/fesm2022/ngx-semantic-modules-dimmer.mjs.map +1 -1
  11. package/fesm2022/ngx-semantic-modules-shape.mjs +35 -31
  12. package/fesm2022/ngx-semantic-modules-shape.mjs.map +1 -1
  13. package/fesm2022/ngx-semantic-modules-sidebar.mjs +108 -16
  14. package/fesm2022/ngx-semantic-modules-sidebar.mjs.map +1 -1
  15. package/fesm2022/ngx-semantic-modules-sticky.mjs +13 -2
  16. package/fesm2022/ngx-semantic-modules-sticky.mjs.map +1 -1
  17. package/fesm2022/ngx-semantic-modules-tabs.mjs +1 -1
  18. package/fesm2022/ngx-semantic-modules-tabs.mjs.map +1 -1
  19. package/fesm2022/ngx-semantic-modules-transition.mjs +4 -0
  20. package/fesm2022/ngx-semantic-modules-transition.mjs.map +1 -1
  21. package/package.json +1 -1
  22. package/types/ngx-semantic-collections-grid.d.ts +44 -12
  23. package/types/ngx-semantic-collections-menu.d.ts +7 -3
  24. package/types/ngx-semantic-collections-table.d.ts +14 -6
  25. package/types/ngx-semantic-core-enums.d.ts +1 -1
  26. package/types/ngx-semantic-elements-divider.d.ts +3 -1
  27. package/types/ngx-semantic-modules-dimmer.d.ts +1 -1
  28. package/types/ngx-semantic-modules-shape.d.ts +4 -3
  29. package/types/ngx-semantic-modules-sidebar.d.ts +33 -6
@@ -1,6 +1,6 @@
1
+ import { __decorate } from 'tslib';
1
2
  import * as i0 from '@angular/core';
2
3
  import { EventEmitter, Injectable, inject, HostBinding, Input, Output, ViewEncapsulation, Component, HostListener, ContentChild, NgModule } from '@angular/core';
3
- import { __decorate } from 'tslib';
4
4
  import { ClassUtils, InputBoolean } from 'ngx-semantic/core/util';
5
5
  import { CommonModule } from '@angular/common';
6
6
 
@@ -11,11 +11,17 @@ class SuiSidebarService {
11
11
  constructor() {
12
12
  this.pusherClicked = new EventEmitter();
13
13
  this.visibilityChanged = new EventEmitter();
14
+ this._isVisible = false;
15
+ }
16
+ /** The last visibility reported by the sidebar sharing this service. */
17
+ get isVisible() {
18
+ return this._isVisible;
14
19
  }
15
20
  notifyPusherClicked() {
16
21
  this.pusherClicked.emit();
17
22
  }
18
23
  changeVisibility(isVisible) {
24
+ this._isVisible = isVisible;
19
25
  this.visibilityChanged.emit(isVisible);
20
26
  }
21
27
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.23", ngImport: i0, type: SuiSidebarService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
@@ -25,12 +31,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.23", ngImpo
25
31
  type: Injectable
26
32
  }] });
27
33
 
34
+ /** Matches the Semantic UI sidebar transition duration. */
35
+ const SIDEBAR_ANIMATION_DURATION = 500;
28
36
  class SuiSidebarComponent {
29
37
  get visible() {
30
38
  return this._visible;
31
39
  }
32
40
  set visible(isVisible) {
33
- this._visible = isVisible;
41
+ const value = !!isVisible;
42
+ // only animate changes made after the initial binding, so the sidebar does not flash on load
43
+ if (this.initialised && value !== this._visible) {
44
+ this.startAnimating();
45
+ }
46
+ this._visible = value;
34
47
  this.visibleChange.emit(this._visible);
35
48
  this.sidebarService.changeVisibility(this._visible);
36
49
  }
@@ -42,8 +55,9 @@ class SuiSidebarComponent {
42
55
  ClassUtils.getPropClass(this.suiInverted, 'inverted'),
43
56
  'sidebar',
44
57
  this.suiSidebarAnimation,
58
+ ClassUtils.getPropClass(this.animating, 'animating'),
45
59
  ClassUtils.getPropClass(this.visible, 'visible')
46
- ].join(' ');
60
+ ].join(' ').replace(/\s\s+/g, ' ').trim();
47
61
  }
48
62
  constructor() {
49
63
  this.sidebarService = inject(SuiSidebarService);
@@ -51,30 +65,70 @@ class SuiSidebarComponent {
51
65
  this.suiSidebarWidth = null;
52
66
  this.suiSidebarAnimation = null;
53
67
  this.suiInverted = false;
68
+ /** Whether clicking the pusher hides a sidebar whose visibility is two-way bound. */
69
+ this.suiClosable = true;
54
70
  this.visibleChange = new EventEmitter();
71
+ this.animating = false;
55
72
  this._visible = true;
56
- const sidebarService = this.sidebarService;
57
- sidebarService.pusherClicked
73
+ this.animationTimer = null;
74
+ this.initialised = false;
75
+ this.sidebarService.changeVisibility(this._visible);
76
+ this.subscription = this.sidebarService.pusherClicked
58
77
  .subscribe(() => {
59
- // only close sidebar on pusher when the visibility is dynamic
60
- if (this.visibleChange.observers.length > 0) {
78
+ // only close the sidebar from the pusher when its visibility is bound, i.e. [(visible)]
79
+ if (this.suiClosable && this.visibleChange.observed) {
61
80
  this.visible = false;
62
81
  }
63
82
  });
64
83
  }
84
+ ngOnInit() {
85
+ this.initialised = true;
86
+ }
87
+ ngOnDestroy() {
88
+ this.subscription.unsubscribe();
89
+ if (this.animationTimer) {
90
+ clearTimeout(this.animationTimer);
91
+ }
92
+ }
93
+ /** Mirrors `sidebar('toggle')`. */
94
+ toggle() {
95
+ this.visible = !this.visible;
96
+ }
97
+ /** Mirrors `sidebar('show')`. */
98
+ show() {
99
+ this.visible = true;
100
+ }
101
+ /** Mirrors `sidebar('hide')`. */
102
+ hide() {
103
+ this.visible = false;
104
+ }
105
+ startAnimating() {
106
+ this.animating = true;
107
+ if (this.animationTimer) {
108
+ clearTimeout(this.animationTimer);
109
+ }
110
+ this.animationTimer = setTimeout(() => {
111
+ this.animating = false;
112
+ this.animationTimer = null;
113
+ }, SIDEBAR_ANIMATION_DURATION);
114
+ }
65
115
  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" }, host: { properties: { "class": "this.classes" } }, ngImport: i0, template: `
116
+ 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" }, host: { properties: { "class": "this.classes" } }, exportAs: ["suiSidebar"], ngImport: i0, template: `
67
117
  <ng-content></ng-content>
68
118
  `, isInline: true, encapsulation: i0.ViewEncapsulation.None }); }
69
119
  }
70
120
  __decorate([
71
121
  InputBoolean()
72
122
  ], SuiSidebarComponent.prototype, "suiInverted", void 0);
123
+ __decorate([
124
+ InputBoolean()
125
+ ], SuiSidebarComponent.prototype, "suiClosable", void 0);
73
126
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.23", ngImport: i0, type: SuiSidebarComponent, decorators: [{
74
127
  type: Component,
75
128
  args: [{
76
129
  standalone: true,
77
130
  selector: 'sui-sidebar, [sui-sidebar]',
131
+ exportAs: 'suiSidebar',
78
132
  encapsulation: ViewEncapsulation.None,
79
133
  template: `
80
134
  <ng-content></ng-content>
@@ -88,6 +142,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.23", ngImpo
88
142
  type: Input
89
143
  }], suiInverted: [{
90
144
  type: Input
145
+ }], suiClosable: [{
146
+ type: Input
91
147
  }], visibleChange: [{
92
148
  type: Output
93
149
  }], visible: [{
@@ -102,26 +158,31 @@ class SuiSidebarPusherComponent {
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.visibilityChanged
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
184
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.23", ngImport: i0, type: SuiSidebarPusherComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
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()" }, properties: { "class": "this.classes" } }, ngImport: i0, template: `
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()" }, properties: { "class": "this.classes" }, styleAttribute: "display: block" }, ngImport: i0, template: `
125
186
  <ng-content></ng-content>
126
187
  `, isInline: true, encapsulation: i0.ViewEncapsulation.None }); }
127
188
  }
@@ -134,6 +195,9 @@ 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
  `
@@ -148,10 +212,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.23", ngImpo
148
212
  args: ['click']
149
213
  }] } });
150
214
 
151
- /**
152
- * Created by bolorundurowb on 1/1/2021
153
- */
154
215
  class SuiSidebarContainerComponent {
216
+ constructor() {
217
+ this.sidebarService = inject(SuiSidebarService);
218
+ /**
219
+ * Makes the container the sidebar's context (Semantic UI `pushable`). The sidebar and dimmer are then
220
+ * positioned inside the container rather than the viewport. Always applied when the pusher is dimmable,
221
+ * since Semantic UI only renders the dimmer inside a pushable context.
222
+ */
223
+ this.suiPushable = false;
224
+ this.subscription = null;
225
+ }
226
+ get isPushable() {
227
+ return this.suiPushable || !!this.suiPusher?.suiDimmable;
228
+ }
155
229
  ngAfterContentInit() {
156
230
  if (!this.suiSidebar) {
157
231
  throw new Error('You must include a <sui-sidebar> element within the container.');
@@ -159,22 +233,35 @@ class SuiSidebarContainerComponent {
159
233
  if (!this.suiPusher) {
160
234
  throw new Error('You must include a <sui-sidebar-pusher> element within the container.');
161
235
  }
162
- this.suiSidebar.visibleChange
236
+ // the sidebar reports its initial visibility before the pusher exists, so sync it once here
237
+ this.suiPusher.isSidebarOpen = this.suiSidebar.visible;
238
+ this.subscription = this.sidebarService.visibilityChanged
163
239
  .subscribe((isVisible) => {
164
240
  this.suiPusher.isSidebarOpen = isVisible;
165
241
  });
166
242
  }
243
+ ngOnDestroy() {
244
+ this.subscription?.unsubscribe();
245
+ }
167
246
  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: `
247
+ 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
248
  <ng-content></ng-content>
170
249
  `, isInline: true, encapsulation: i0.ViewEncapsulation.None }); }
171
250
  }
251
+ __decorate([
252
+ InputBoolean()
253
+ ], SuiSidebarContainerComponent.prototype, "suiPushable", void 0);
172
254
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.23", ngImport: i0, type: SuiSidebarContainerComponent, decorators: [{
173
255
  type: Component,
174
256
  args: [{
175
257
  standalone: true,
176
258
  selector: 'sui-sidebar-container',
177
259
  encapsulation: ViewEncapsulation.None,
260
+ // each container gets its own service so multiple sidebars on a page do not affect one another
261
+ providers: [SuiSidebarService],
262
+ host: {
263
+ style: 'display: block'
264
+ },
178
265
  template: `
179
266
  <ng-content></ng-content>
180
267
  `
@@ -185,6 +272,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.23", ngImpo
185
272
  }], suiPusher: [{
186
273
  type: ContentChild,
187
274
  args: [SuiSidebarPusherComponent]
275
+ }], suiPushable: [{
276
+ type: Input
277
+ }], isPushable: [{
278
+ type: HostBinding,
279
+ args: ['class.pushable']
188
280
  }] } });
189
281
 
190
282
  /**
@@ -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":"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"}
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, HostBinding, 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';\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 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 @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.animating, 'animating'),\n ClassUtils.getPropClass(this.visible, 'visible')\n ].join(' ').replace(/\\s\\s+/g, ' ').trim();\n }\n\n constructor() {\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, HostBinding, 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';\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 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 @HostBinding('class')\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;;;ACOD;AACA,MAAM,0BAA0B,GAAG,GAAG;MAWzB,mBAAmB,CAAA;AAkB9B,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,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,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;AA/CQ,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,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,cAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,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;;sBAgBA,WAAW;uBAAC,OAAO;;;MCvCT,yBAAyB,CAAA;AAXtC,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;AA4BjD,IAAA;AA1BC,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,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;+GAjCW,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,cAAA,EAAA,gBAAA,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;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;;sBAKA,WAAW;uBAAC,OAAO;;sBAoBnB,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
- const sy = window.scrollY;
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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"}
@@ -209,7 +209,7 @@ class SuiTabsComponent {
209
209
  }
210
210
  </div>
211
211
  </ng-template>
212
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: SuiSegmentDirective, selector: "[sui-segment]", inputs: ["suiColour", "suiAttached", "suiStacked", "suiPadding", "suiTextAlignment", "suiFloated", "suiPlaceholder", "suiRaised", "suiPiled", "suiVertical", "suiInverted", "disabled", "suiLoading", "suiCompact", "suiCircular", "suiBasic", "suiClearing", "suiSecondary", "suiTertiary"], exportAs: ["suiSegment"] }, { kind: "directive", type: SuiMenuDirective, selector: "[sui-menu]", inputs: ["suiWidth", "suiAttached", "suiFixed", "suiColour", "suiIcon", "suiSize", "suiText", "suiSecondary", "suiPointing", "suiTabular", "suiVertical", "suiFluid", "suiRight", "suiPagination", "suiCompact", "suiStackable", "suiInverted", "suiBorderless"], exportAs: ["suiMenu"] }, { kind: "directive", type: SuiMenuItemDirective, selector: "[suiMenuItem]", inputs: ["suiLink", "suiActive", "suiBrowser", "disabled"], exportAs: ["suiMenuItem"] }, { kind: "directive", type: SuiIconDirective, selector: "i[sui-icon]", inputs: ["suiSize", "suiFlip", "suiRotation", "suiColour", "suiCorner", "suiIconType", "disabled", "suiLoading", "suiFitted", "suiLink", "suiCircular", "suiBordered", "suiInverted", "suiOutline"], exportAs: ["suiIcon"] }, { kind: "directive", type: SuiLabelDirective, selector: "[sui-label]", inputs: ["suiColour", "suiPointing", "suiCorner", "suiRibbon", "suiAttached", "suiSize", "suiImage", "suiBasic", "suiTag", "suiHorizontal", "suiFloating", "suiCircular", "suiEmpty"], exportAs: ["suiLabel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
212
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: SuiSegmentDirective, selector: "[sui-segment]", inputs: ["suiColour", "suiAttached", "suiStacked", "suiPadding", "suiTextAlignment", "suiFloated", "suiPlaceholder", "suiRaised", "suiPiled", "suiVertical", "suiInverted", "disabled", "suiLoading", "suiCompact", "suiCircular", "suiBasic", "suiClearing", "suiSecondary", "suiTertiary"], exportAs: ["suiSegment"] }, { kind: "directive", type: SuiMenuDirective, selector: "[sui-menu]", inputs: ["suiWidth", "suiAttached", "suiFixed", "suiColour", "suiIcon", "suiSize", "suiText", "suiSecondary", "suiPointing", "suiTabular", "suiVertical", "suiFluid", "suiRight", "suiPagination", "suiCompact", "suiStackable", "suiInverted", "suiBorderless"], exportAs: ["suiMenu"] }, { kind: "directive", type: SuiMenuItemDirective, selector: "[suiMenuItem]", inputs: ["suiColour", "suiFitted", "suiLink", "suiActive", "suiBrowser", "suiHeader", "disabled"], exportAs: ["suiMenuItem"] }, { kind: "directive", type: SuiIconDirective, selector: "i[sui-icon]", inputs: ["suiSize", "suiFlip", "suiRotation", "suiColour", "suiCorner", "suiIconType", "disabled", "suiLoading", "suiFitted", "suiLink", "suiCircular", "suiBordered", "suiInverted", "suiOutline"], exportAs: ["suiIcon"] }, { kind: "directive", type: SuiLabelDirective, selector: "[sui-label]", inputs: ["suiColour", "suiPointing", "suiCorner", "suiRibbon", "suiAttached", "suiSize", "suiImage", "suiBasic", "suiTag", "suiHorizontal", "suiFloating", "suiCircular", "suiEmpty"], exportAs: ["suiLabel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
213
213
  }
214
214
  __decorate([
215
215
  InputBoolean()