@ng-nest/ui 20.3.0 → 20.3.2

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 (106) hide show
  1. package/attachments/index.d.ts +4 -5
  2. package/auto-complete/index.d.ts +52 -15
  3. package/base-form/index.d.ts +8 -9
  4. package/bubble/index.d.ts +12 -7
  5. package/cascade/index.d.ts +8 -9
  6. package/checkbox/index.d.ts +5 -6
  7. package/color-picker/index.d.ts +8 -9
  8. package/contextmenu/index.d.ts +176 -0
  9. package/core/index.d.ts +37 -1
  10. package/coversations/index.d.ts +4 -5
  11. package/date-picker/index.d.ts +16 -18
  12. package/dialog/index.d.ts +182 -102
  13. package/divider/index.d.ts +113 -0
  14. package/fesm2022/ng-nest-ui-auto-complete.mjs +65 -17
  15. package/fesm2022/ng-nest-ui-auto-complete.mjs.map +1 -1
  16. package/fesm2022/ng-nest-ui-base-form.mjs +27 -46
  17. package/fesm2022/ng-nest-ui-base-form.mjs.map +1 -1
  18. package/fesm2022/ng-nest-ui-bubble.mjs +141 -129
  19. package/fesm2022/ng-nest-ui-bubble.mjs.map +1 -1
  20. package/fesm2022/ng-nest-ui-cascade.mjs +1 -1
  21. package/fesm2022/ng-nest-ui-cascade.mjs.map +1 -1
  22. package/fesm2022/ng-nest-ui-color-picker.mjs +3 -3
  23. package/fesm2022/ng-nest-ui-color-picker.mjs.map +1 -1
  24. package/fesm2022/ng-nest-ui-contextmenu.mjs +445 -0
  25. package/fesm2022/ng-nest-ui-contextmenu.mjs.map +1 -0
  26. package/fesm2022/ng-nest-ui-core.mjs +2 -2
  27. package/fesm2022/ng-nest-ui-core.mjs.map +1 -1
  28. package/fesm2022/ng-nest-ui-date-picker.mjs +2 -2
  29. package/fesm2022/ng-nest-ui-date-picker.mjs.map +1 -1
  30. package/fesm2022/ng-nest-ui-dialog.mjs +51 -46
  31. package/fesm2022/ng-nest-ui-dialog.mjs.map +1 -1
  32. package/fesm2022/ng-nest-ui-divider.mjs +124 -0
  33. package/fesm2022/ng-nest-ui-divider.mjs.map +1 -0
  34. package/fesm2022/ng-nest-ui-find.mjs.map +1 -1
  35. package/fesm2022/ng-nest-ui-form.mjs +26 -20
  36. package/fesm2022/ng-nest-ui-form.mjs.map +1 -1
  37. package/fesm2022/ng-nest-ui-i18n.mjs +19 -18
  38. package/fesm2022/ng-nest-ui-i18n.mjs.map +1 -1
  39. package/fesm2022/ng-nest-ui-image.mjs +108 -69
  40. package/fesm2022/ng-nest-ui-image.mjs.map +1 -1
  41. package/fesm2022/ng-nest-ui-input-number.mjs +1 -1
  42. package/fesm2022/ng-nest-ui-input-number.mjs.map +1 -1
  43. package/fesm2022/ng-nest-ui-input.mjs +1 -1
  44. package/fesm2022/ng-nest-ui-input.mjs.map +1 -1
  45. package/fesm2022/ng-nest-ui-menu.mjs +16 -4
  46. package/fesm2022/ng-nest-ui-menu.mjs.map +1 -1
  47. package/fesm2022/ng-nest-ui-message-box.mjs.map +1 -1
  48. package/fesm2022/ng-nest-ui-message.mjs.map +1 -1
  49. package/fesm2022/ng-nest-ui-notification.mjs.map +1 -1
  50. package/fesm2022/ng-nest-ui-scrollable.mjs +81 -9
  51. package/fesm2022/ng-nest-ui-scrollable.mjs.map +1 -1
  52. package/fesm2022/ng-nest-ui-select.mjs +1 -1
  53. package/fesm2022/ng-nest-ui-select.mjs.map +1 -1
  54. package/fesm2022/ng-nest-ui-sender.mjs +1 -1
  55. package/fesm2022/ng-nest-ui-sender.mjs.map +1 -1
  56. package/fesm2022/ng-nest-ui-slider-select.mjs +0 -1
  57. package/fesm2022/ng-nest-ui-slider-select.mjs.map +1 -1
  58. package/fesm2022/ng-nest-ui-splitter.mjs +407 -0
  59. package/fesm2022/ng-nest-ui-splitter.mjs.map +1 -0
  60. package/fesm2022/ng-nest-ui-table-view.mjs +277 -248
  61. package/fesm2022/ng-nest-ui-table-view.mjs.map +1 -1
  62. package/fesm2022/ng-nest-ui-table.mjs +18 -6
  63. package/fesm2022/ng-nest-ui-table.mjs.map +1 -1
  64. package/fesm2022/ng-nest-ui-textarea.mjs +1 -1
  65. package/fesm2022/ng-nest-ui-textarea.mjs.map +1 -1
  66. package/fesm2022/ng-nest-ui-time-picker.mjs +40 -21
  67. package/fesm2022/ng-nest-ui-time-picker.mjs.map +1 -1
  68. package/fesm2022/ng-nest-ui-tree-select.mjs +1 -1
  69. package/fesm2022/ng-nest-ui-tree-select.mjs.map +1 -1
  70. package/fesm2022/ng-nest-ui-tree.mjs +16 -4
  71. package/fesm2022/ng-nest-ui-tree.mjs.map +1 -1
  72. package/fesm2022/ng-nest-ui-watermark.mjs +378 -0
  73. package/fesm2022/ng-nest-ui-watermark.mjs.map +1 -0
  74. package/fesm2022/ng-nest-ui.mjs +4 -0
  75. package/fesm2022/ng-nest-ui.mjs.map +1 -1
  76. package/find/index.d.ts +6 -7
  77. package/form/index.d.ts +24 -13
  78. package/i18n/index.d.ts +29 -28
  79. package/image/index.d.ts +30 -14
  80. package/index.d.ts +4 -0
  81. package/input/index.d.ts +8 -9
  82. package/input-number/index.d.ts +8 -9
  83. package/list/index.d.ts +4 -5
  84. package/menu/index.d.ts +15 -3
  85. package/message/index.d.ts +15 -3
  86. package/message-box/index.d.ts +18 -5
  87. package/notification/index.d.ts +15 -3
  88. package/package.json +91 -75
  89. package/radio/index.d.ts +5 -6
  90. package/rate/index.d.ts +4 -5
  91. package/scrollable/index.d.ts +14 -2
  92. package/select/index.d.ts +8 -9
  93. package/sender/index.d.ts +6 -7
  94. package/slider-select/index.d.ts +4 -6
  95. package/splitter/index.d.ts +163 -0
  96. package/switch/index.d.ts +4 -5
  97. package/table/index.d.ts +60 -5
  98. package/table-view/index.d.ts +99 -65
  99. package/textarea/index.d.ts +8 -9
  100. package/theme/index.d.ts +4 -5
  101. package/time-picker/index.d.ts +15 -14
  102. package/transfer/index.d.ts +4 -5
  103. package/tree/index.d.ts +29 -3
  104. package/tree-select/index.d.ts +8 -9
  105. package/upload/index.d.ts +4 -5
  106. package/watermark/index.d.ts +267 -0
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { input, viewChild, signal, ChangeDetectionStrategy, ViewEncapsulation, Component, NgModule } from '@angular/core';
2
+ import { input, output, viewChild, signal, ChangeDetectionStrategy, ViewEncapsulation, Component, NgModule } from '@angular/core';
3
3
 
4
4
  class XScrollableComponent {
5
5
  constructor(renderer) {
@@ -14,38 +14,104 @@ class XScrollableComponent {
14
14
  this.xOffsetRight = input(0, ...(ngDevMode ? [{ debugName: "xOffsetRight" }] : []));
15
15
  this.maxHeight = input('100%', ...(ngDevMode ? [{ debugName: "maxHeight" }] : []));
16
16
  this.maxWidth = input('100%', ...(ngDevMode ? [{ debugName: "maxWidth" }] : []));
17
+ this.resizeChange = output();
18
+ this.scrollChange = output();
17
19
  this.contentRef = viewChild.required('content');
18
20
  this.trackXRef = viewChild.required('trackX');
19
21
  this.thumbXRef = viewChild.required('thumbX');
20
22
  this.trackYRef = viewChild.required('trackY');
21
23
  this.thumbYRef = viewChild.required('thumbY');
22
24
  this.isActive = signal(false, ...(ngDevMode ? [{ debugName: "isActive" }] : []));
25
+ this.isAtTop = signal(false, ...(ngDevMode ? [{ debugName: "isAtTop" }] : []));
26
+ this.isAtBottom = signal(false, ...(ngDevMode ? [{ debugName: "isAtBottom" }] : []));
27
+ this.isAtLeft = signal(false, ...(ngDevMode ? [{ debugName: "isAtLeft" }] : []));
28
+ this.isAtRight = signal(false, ...(ngDevMode ? [{ debugName: "isAtRight" }] : []));
29
+ this.hasVerticalScrollbar = signal(false, ...(ngDevMode ? [{ debugName: "hasVerticalScrollbar" }] : []));
30
+ this.hasHorizontalScrollbar = signal(false, ...(ngDevMode ? [{ debugName: "hasHorizontalScrollbar" }] : []));
23
31
  this.isDragging = false;
24
32
  this.dragAxis = null;
25
33
  this.dragStart = { x: 0, y: 0 };
26
34
  this.initialScroll = { left: 0, top: 0 };
35
+ this.resizeTimeoutId = null;
36
+ this.mutationTimeoutId = null;
27
37
  }
28
38
  ngAfterViewInit() {
29
39
  setTimeout(() => this.updateScrollbars(), 0);
30
- this.resizeObserver = new ResizeObserver(() => {
31
- this.updateScrollbars();
40
+ this.resizeObserver = new ResizeObserver((entries) => {
41
+ for (const entry of entries) {
42
+ if (entry.target === this.contentRef().nativeElement) {
43
+ if (this.resizeTimeoutId !== null) {
44
+ window.clearTimeout(this.resizeTimeoutId);
45
+ }
46
+ this.resizeTimeoutId = window.setTimeout(() => {
47
+ this.updateScrollbars();
48
+ if (entry && entry.borderBoxSize && entry.borderBoxSize.length > 0) {
49
+ this.resizeChange.emit(entry);
50
+ }
51
+ }, 16);
52
+ }
53
+ }
54
+ });
55
+ this.resizeObserver.observe(this.contentRef().nativeElement, { box: 'border-box' });
56
+ this.mutationObserver = new MutationObserver((mutations) => {
57
+ let shouldUpdate = false;
58
+ for (const mutation of mutations) {
59
+ if (mutation.type === 'childList' || mutation.type === 'attributes') {
60
+ shouldUpdate = true;
61
+ break;
62
+ }
63
+ }
64
+ if (shouldUpdate) {
65
+ if (this.mutationTimeoutId !== null) {
66
+ window.clearTimeout(this.mutationTimeoutId);
67
+ }
68
+ this.mutationTimeoutId = window.setTimeout(() => {
69
+ this.updateScrollbars();
70
+ }, 16);
71
+ }
72
+ });
73
+ this.mutationObserver.observe(this.contentRef().nativeElement, {
74
+ childList: true,
75
+ subtree: true,
76
+ attributes: true,
77
+ attributeFilter: ['style', 'class']
78
+ });
79
+ this.scrollListener = this.renderer.listen(this.contentRef().nativeElement, 'scroll', (event) => {
80
+ this.updateScrollbars(true, event);
32
81
  });
33
- this.resizeObserver.observe(this.contentRef().nativeElement);
34
82
  }
35
83
  ngOnDestroy() {
36
84
  if (this.resizeObserver) {
37
85
  this.resizeObserver.disconnect();
38
86
  }
87
+ if (this.mutationObserver) {
88
+ this.mutationObserver.disconnect();
89
+ }
90
+ if (this.scrollListener) {
91
+ this.scrollListener();
92
+ }
93
+ if (this.resizeTimeoutId !== null) {
94
+ window.clearTimeout(this.resizeTimeoutId);
95
+ }
96
+ if (this.mutationTimeoutId !== null) {
97
+ window.clearTimeout(this.mutationTimeoutId);
98
+ }
39
99
  }
40
- updateScrollbars() {
100
+ updateScrollbars(scroll = false, event) {
41
101
  this.updateVerticalScrollbar();
42
102
  this.updateHorizontalScrollbar();
103
+ if (scroll && event) {
104
+ this.scrollChange.emit(event);
105
+ }
43
106
  }
44
107
  updateVerticalScrollbar() {
45
108
  const thumbY = this.thumbYRef().nativeElement;
46
109
  const trackY = this.trackYRef().nativeElement;
47
110
  const content = this.contentRef().nativeElement;
48
111
  let { clientHeight, scrollHeight, scrollTop } = content;
112
+ this.isAtTop.set(scrollTop === 0);
113
+ this.isAtBottom.set(scrollTop + clientHeight >= scrollHeight);
114
+ this.hasVerticalScrollbar.set(scrollHeight > clientHeight);
49
115
  if (this.yOffsetTop() !== 0 && this.yOffsetBottom() === 0) {
50
116
  this.renderer.setStyle(trackY, 'top', `${this.yOffsetTop()}px`);
51
117
  this.renderer.setStyle(trackY, 'height', `calc(100% - ${this.yOffsetTop()}px)`);
@@ -70,6 +136,9 @@ class XScrollableComponent {
70
136
  this.renderer.setStyle(trackY, 'right', `${this.yOffsetRight()}px`);
71
137
  }
72
138
  let visibleRatioY = clientHeight / scrollHeight;
139
+ if (visibleRatioY > 0.99 && visibleRatioY < 1) {
140
+ visibleRatioY = 1;
141
+ }
73
142
  if (visibleRatioY >= 1) {
74
143
  this.renderer.setStyle(trackY, 'display', 'none');
75
144
  }
@@ -87,6 +156,9 @@ class XScrollableComponent {
87
156
  const thumbX = this.thumbXRef().nativeElement;
88
157
  const trackX = this.trackXRef().nativeElement;
89
158
  let { clientWidth, scrollWidth, scrollLeft } = content;
159
+ this.isAtLeft.set(scrollLeft === 0);
160
+ this.isAtRight.set(scrollLeft + clientWidth >= scrollWidth);
161
+ this.hasHorizontalScrollbar.set(scrollWidth > clientWidth);
90
162
  if (this.xOffsetLeft() !== 0 && this.xOffsetRight() === 0) {
91
163
  this.renderer.setStyle(trackX, 'left', `${this.xOffsetLeft()}px`);
92
164
  this.renderer.setStyle(trackX, 'width', `calc(100% - ${this.xOffsetLeft()}px)`);
@@ -100,7 +172,7 @@ class XScrollableComponent {
100
172
  }
101
173
  else if (this.xOffsetLeft() !== 0 && this.xOffsetRight() !== 0) {
102
174
  this.renderer.setStyle(trackX, 'left', `${this.xOffsetLeft()}px`);
103
- this.renderer.setStyle(trackX, 'height', `calc(100% - ${this.xOffsetLeft() + this.xOffsetRight()}px)`);
175
+ this.renderer.setStyle(trackX, 'width', `calc(100% - ${this.xOffsetLeft() + this.xOffsetRight()}px)`);
104
176
  clientWidth -= this.xOffsetLeft() + this.xOffsetRight();
105
177
  scrollWidth -= this.xOffsetLeft() + this.xOffsetRight();
106
178
  }
@@ -193,12 +265,12 @@ class XScrollableComponent {
193
265
  }
194
266
  }
195
267
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: XScrollableComponent, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
196
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.3.5", type: XScrollableComponent, isStandalone: true, selector: "x-scrollable", inputs: { yOffsetTop: { classPropertyName: "yOffsetTop", publicName: "yOffsetTop", isSignal: true, isRequired: false, transformFunction: null }, yOffsetBottom: { classPropertyName: "yOffsetBottom", publicName: "yOffsetBottom", isSignal: true, isRequired: false, transformFunction: null }, yOffsetLeft: { classPropertyName: "yOffsetLeft", publicName: "yOffsetLeft", isSignal: true, isRequired: false, transformFunction: null }, yOffsetRight: { classPropertyName: "yOffsetRight", publicName: "yOffsetRight", isSignal: true, isRequired: false, transformFunction: null }, xOffsetTop: { classPropertyName: "xOffsetTop", publicName: "xOffsetTop", isSignal: true, isRequired: false, transformFunction: null }, xOffsetBottom: { classPropertyName: "xOffsetBottom", publicName: "xOffsetBottom", isSignal: true, isRequired: false, transformFunction: null }, xOffsetLeft: { classPropertyName: "xOffsetLeft", publicName: "xOffsetLeft", isSignal: true, isRequired: false, transformFunction: null }, xOffsetRight: { classPropertyName: "xOffsetRight", publicName: "xOffsetRight", isSignal: true, isRequired: false, transformFunction: null }, maxHeight: { classPropertyName: "maxHeight", publicName: "maxHeight", isSignal: true, isRequired: false, transformFunction: null }, maxWidth: { classPropertyName: "maxWidth", publicName: "maxWidth", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "contentRef", first: true, predicate: ["content"], descendants: true, isSignal: true }, { propertyName: "trackXRef", first: true, predicate: ["trackX"], descendants: true, isSignal: true }, { propertyName: "thumbXRef", first: true, predicate: ["thumbX"], descendants: true, isSignal: true }, { propertyName: "trackYRef", first: true, predicate: ["trackY"], descendants: true, isSignal: true }, { propertyName: "thumbYRef", first: true, predicate: ["thumbY"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"x-scrollable\" [class.active]=\"isActive()\" (mouseenter)=\"onHostEnter()\" (mouseleave)=\"onHostLeave()\">\r\n <div\r\n #content\r\n class=\"x-scrollable-content\"\r\n [style.maxHeight]=\"maxHeight()\"\r\n [style.maxWidth]=\"maxWidth()\"\r\n (scroll)=\"updateScrollbars()\"\r\n >\r\n <ng-content></ng-content>\r\n </div>\r\n\r\n <div #trackY class=\"x-scrollable-track x-scrollable-track-y\">\r\n <div #thumbY class=\"x-scrollable-thumb x-scrollable-thumb-y\" (mousedown)=\"startDrag($event, 'y')\"></div>\r\n </div>\r\n\r\n <div #trackX class=\"x-scrollable-track x-scrollable-track-x\">\r\n <div #thumbX class=\"x-scrollable-thumb x-scrollable-thumb-x\" (mousedown)=\"startDrag($event, 'x')\"></div>\r\n </div>\r\n</div>\r\n", styles: [".x-scrollable{margin:0;padding:0}.x-scrollable{position:relative;width:100%;height:100%}.x-scrollable .x-scrollable-content{overflow:auto}.x-scrollable .x-scrollable-content::-webkit-scrollbar{width:0;height:0}.x-scrollable .x-scrollable-content{scrollbar-width:none;-ms-overflow-style:none}.x-scrollable .x-scrollable-track{position:absolute;background-color:transparent;opacity:0;transition:opacity .3s ease-in-out;z-index:1000}.x-scrollable .x-scrollable-thumb{position:absolute;background-color:#64646466;cursor:pointer;transition:background-color .2s}.x-scrollable .x-scrollable-thumb:hover{background-color:#646464b3}.x-scrollable .x-scrollable-track-y{top:0;right:0;bottom:12px;width:12px;height:100%}.x-scrollable .x-scrollable-thumb-y{right:0;width:12px;min-height:20px;will-change:transform}.x-scrollable .x-scrollable-track-x{left:0;right:0;bottom:0;height:12px;width:100%}.x-scrollable .x-scrollable-thumb-x{bottom:0;height:12px;min-width:20px;will-change:transform}.x-scrollable.active .x-scrollable-track{opacity:1}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
268
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.3.5", type: XScrollableComponent, isStandalone: true, selector: "x-scrollable", inputs: { yOffsetTop: { classPropertyName: "yOffsetTop", publicName: "yOffsetTop", isSignal: true, isRequired: false, transformFunction: null }, yOffsetBottom: { classPropertyName: "yOffsetBottom", publicName: "yOffsetBottom", isSignal: true, isRequired: false, transformFunction: null }, yOffsetLeft: { classPropertyName: "yOffsetLeft", publicName: "yOffsetLeft", isSignal: true, isRequired: false, transformFunction: null }, yOffsetRight: { classPropertyName: "yOffsetRight", publicName: "yOffsetRight", isSignal: true, isRequired: false, transformFunction: null }, xOffsetTop: { classPropertyName: "xOffsetTop", publicName: "xOffsetTop", isSignal: true, isRequired: false, transformFunction: null }, xOffsetBottom: { classPropertyName: "xOffsetBottom", publicName: "xOffsetBottom", isSignal: true, isRequired: false, transformFunction: null }, xOffsetLeft: { classPropertyName: "xOffsetLeft", publicName: "xOffsetLeft", isSignal: true, isRequired: false, transformFunction: null }, xOffsetRight: { classPropertyName: "xOffsetRight", publicName: "xOffsetRight", isSignal: true, isRequired: false, transformFunction: null }, maxHeight: { classPropertyName: "maxHeight", publicName: "maxHeight", isSignal: true, isRequired: false, transformFunction: null }, maxWidth: { classPropertyName: "maxWidth", publicName: "maxWidth", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { resizeChange: "resizeChange", scrollChange: "scrollChange" }, viewQueries: [{ propertyName: "contentRef", first: true, predicate: ["content"], descendants: true, isSignal: true }, { propertyName: "trackXRef", first: true, predicate: ["trackX"], descendants: true, isSignal: true }, { propertyName: "thumbXRef", first: true, predicate: ["thumbX"], descendants: true, isSignal: true }, { propertyName: "trackYRef", first: true, predicate: ["trackY"], descendants: true, isSignal: true }, { propertyName: "thumbYRef", first: true, predicate: ["thumbY"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"x-scrollable\" [class.active]=\"isActive()\" (mouseenter)=\"onHostEnter()\" (mouseleave)=\"onHostLeave()\">\r\n <div #content class=\"x-scrollable-content\" [style.maxHeight]=\"maxHeight()\" [style.maxWidth]=\"maxWidth()\">\r\n <ng-content></ng-content>\r\n </div>\r\n\r\n <div #trackY class=\"x-scrollable-track x-scrollable-track-y\">\r\n <div #thumbY class=\"x-scrollable-thumb x-scrollable-thumb-y\" (mousedown)=\"startDrag($event, 'y')\"></div>\r\n </div>\r\n\r\n <div #trackX class=\"x-scrollable-track x-scrollable-track-x\">\r\n <div #thumbX class=\"x-scrollable-thumb x-scrollable-thumb-x\" (mousedown)=\"startDrag($event, 'x')\"></div>\r\n </div>\r\n</div>\r\n", styles: [".x-scrollable{margin:0;padding:0}.x-scrollable{position:relative;width:100%;height:100%}.x-scrollable .x-scrollable-content{overflow:auto}.x-scrollable .x-scrollable-content::-webkit-scrollbar{width:0;height:0}.x-scrollable .x-scrollable-content{scrollbar-width:none;-ms-overflow-style:none}.x-scrollable .x-scrollable-track{position:absolute;background-color:transparent;opacity:0;transition:opacity .3s ease-in-out;z-index:1000}.x-scrollable .x-scrollable-thumb{position:absolute;background-color:#64646466;cursor:pointer;transition:background-color .2s}.x-scrollable .x-scrollable-thumb:hover{background-color:#646464b3}.x-scrollable .x-scrollable-track-y{top:0;right:0;bottom:12px;width:12px;height:100%}.x-scrollable .x-scrollable-thumb-y{right:0;width:12px;min-height:20px;will-change:transform}.x-scrollable .x-scrollable-track-x{left:0;right:0;bottom:0;height:12px;width:100%}.x-scrollable .x-scrollable-thumb-x{bottom:0;height:12px;min-width:20px;will-change:transform}.x-scrollable.active .x-scrollable-track{opacity:1}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
197
269
  }
198
270
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: XScrollableComponent, decorators: [{
199
271
  type: Component,
200
- args: [{ selector: 'x-scrollable', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"x-scrollable\" [class.active]=\"isActive()\" (mouseenter)=\"onHostEnter()\" (mouseleave)=\"onHostLeave()\">\r\n <div\r\n #content\r\n class=\"x-scrollable-content\"\r\n [style.maxHeight]=\"maxHeight()\"\r\n [style.maxWidth]=\"maxWidth()\"\r\n (scroll)=\"updateScrollbars()\"\r\n >\r\n <ng-content></ng-content>\r\n </div>\r\n\r\n <div #trackY class=\"x-scrollable-track x-scrollable-track-y\">\r\n <div #thumbY class=\"x-scrollable-thumb x-scrollable-thumb-y\" (mousedown)=\"startDrag($event, 'y')\"></div>\r\n </div>\r\n\r\n <div #trackX class=\"x-scrollable-track x-scrollable-track-x\">\r\n <div #thumbX class=\"x-scrollable-thumb x-scrollable-thumb-x\" (mousedown)=\"startDrag($event, 'x')\"></div>\r\n </div>\r\n</div>\r\n", styles: [".x-scrollable{margin:0;padding:0}.x-scrollable{position:relative;width:100%;height:100%}.x-scrollable .x-scrollable-content{overflow:auto}.x-scrollable .x-scrollable-content::-webkit-scrollbar{width:0;height:0}.x-scrollable .x-scrollable-content{scrollbar-width:none;-ms-overflow-style:none}.x-scrollable .x-scrollable-track{position:absolute;background-color:transparent;opacity:0;transition:opacity .3s ease-in-out;z-index:1000}.x-scrollable .x-scrollable-thumb{position:absolute;background-color:#64646466;cursor:pointer;transition:background-color .2s}.x-scrollable .x-scrollable-thumb:hover{background-color:#646464b3}.x-scrollable .x-scrollable-track-y{top:0;right:0;bottom:12px;width:12px;height:100%}.x-scrollable .x-scrollable-thumb-y{right:0;width:12px;min-height:20px;will-change:transform}.x-scrollable .x-scrollable-track-x{left:0;right:0;bottom:0;height:12px;width:100%}.x-scrollable .x-scrollable-thumb-x{bottom:0;height:12px;min-width:20px;will-change:transform}.x-scrollable.active .x-scrollable-track{opacity:1}\n"] }]
201
- }], ctorParameters: () => [{ type: i0.Renderer2 }], propDecorators: { yOffsetTop: [{ type: i0.Input, args: [{ isSignal: true, alias: "yOffsetTop", required: false }] }], yOffsetBottom: [{ type: i0.Input, args: [{ isSignal: true, alias: "yOffsetBottom", required: false }] }], yOffsetLeft: [{ type: i0.Input, args: [{ isSignal: true, alias: "yOffsetLeft", required: false }] }], yOffsetRight: [{ type: i0.Input, args: [{ isSignal: true, alias: "yOffsetRight", required: false }] }], xOffsetTop: [{ type: i0.Input, args: [{ isSignal: true, alias: "xOffsetTop", required: false }] }], xOffsetBottom: [{ type: i0.Input, args: [{ isSignal: true, alias: "xOffsetBottom", required: false }] }], xOffsetLeft: [{ type: i0.Input, args: [{ isSignal: true, alias: "xOffsetLeft", required: false }] }], xOffsetRight: [{ type: i0.Input, args: [{ isSignal: true, alias: "xOffsetRight", required: false }] }], maxHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxHeight", required: false }] }], maxWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxWidth", required: false }] }], contentRef: [{ type: i0.ViewChild, args: ['content', { isSignal: true }] }], trackXRef: [{ type: i0.ViewChild, args: ['trackX', { isSignal: true }] }], thumbXRef: [{ type: i0.ViewChild, args: ['thumbX', { isSignal: true }] }], trackYRef: [{ type: i0.ViewChild, args: ['trackY', { isSignal: true }] }], thumbYRef: [{ type: i0.ViewChild, args: ['thumbY', { isSignal: true }] }] } });
272
+ args: [{ selector: 'x-scrollable', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"x-scrollable\" [class.active]=\"isActive()\" (mouseenter)=\"onHostEnter()\" (mouseleave)=\"onHostLeave()\">\r\n <div #content class=\"x-scrollable-content\" [style.maxHeight]=\"maxHeight()\" [style.maxWidth]=\"maxWidth()\">\r\n <ng-content></ng-content>\r\n </div>\r\n\r\n <div #trackY class=\"x-scrollable-track x-scrollable-track-y\">\r\n <div #thumbY class=\"x-scrollable-thumb x-scrollable-thumb-y\" (mousedown)=\"startDrag($event, 'y')\"></div>\r\n </div>\r\n\r\n <div #trackX class=\"x-scrollable-track x-scrollable-track-x\">\r\n <div #thumbX class=\"x-scrollable-thumb x-scrollable-thumb-x\" (mousedown)=\"startDrag($event, 'x')\"></div>\r\n </div>\r\n</div>\r\n", styles: [".x-scrollable{margin:0;padding:0}.x-scrollable{position:relative;width:100%;height:100%}.x-scrollable .x-scrollable-content{overflow:auto}.x-scrollable .x-scrollable-content::-webkit-scrollbar{width:0;height:0}.x-scrollable .x-scrollable-content{scrollbar-width:none;-ms-overflow-style:none}.x-scrollable .x-scrollable-track{position:absolute;background-color:transparent;opacity:0;transition:opacity .3s ease-in-out;z-index:1000}.x-scrollable .x-scrollable-thumb{position:absolute;background-color:#64646466;cursor:pointer;transition:background-color .2s}.x-scrollable .x-scrollable-thumb:hover{background-color:#646464b3}.x-scrollable .x-scrollable-track-y{top:0;right:0;bottom:12px;width:12px;height:100%}.x-scrollable .x-scrollable-thumb-y{right:0;width:12px;min-height:20px;will-change:transform}.x-scrollable .x-scrollable-track-x{left:0;right:0;bottom:0;height:12px;width:100%}.x-scrollable .x-scrollable-thumb-x{bottom:0;height:12px;min-width:20px;will-change:transform}.x-scrollable.active .x-scrollable-track{opacity:1}\n"] }]
273
+ }], ctorParameters: () => [{ type: i0.Renderer2 }], propDecorators: { yOffsetTop: [{ type: i0.Input, args: [{ isSignal: true, alias: "yOffsetTop", required: false }] }], yOffsetBottom: [{ type: i0.Input, args: [{ isSignal: true, alias: "yOffsetBottom", required: false }] }], yOffsetLeft: [{ type: i0.Input, args: [{ isSignal: true, alias: "yOffsetLeft", required: false }] }], yOffsetRight: [{ type: i0.Input, args: [{ isSignal: true, alias: "yOffsetRight", required: false }] }], xOffsetTop: [{ type: i0.Input, args: [{ isSignal: true, alias: "xOffsetTop", required: false }] }], xOffsetBottom: [{ type: i0.Input, args: [{ isSignal: true, alias: "xOffsetBottom", required: false }] }], xOffsetLeft: [{ type: i0.Input, args: [{ isSignal: true, alias: "xOffsetLeft", required: false }] }], xOffsetRight: [{ type: i0.Input, args: [{ isSignal: true, alias: "xOffsetRight", required: false }] }], maxHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxHeight", required: false }] }], maxWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxWidth", required: false }] }], resizeChange: [{ type: i0.Output, args: ["resizeChange"] }], scrollChange: [{ type: i0.Output, args: ["scrollChange"] }], contentRef: [{ type: i0.ViewChild, args: ['content', { isSignal: true }] }], trackXRef: [{ type: i0.ViewChild, args: ['trackX', { isSignal: true }] }], thumbXRef: [{ type: i0.ViewChild, args: ['thumbX', { isSignal: true }] }], trackYRef: [{ type: i0.ViewChild, args: ['trackY', { isSignal: true }] }], thumbYRef: [{ type: i0.ViewChild, args: ['thumbY', { isSignal: true }] }] } });
202
274
 
203
275
  class XScrollableModule {
204
276
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: XScrollableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
@@ -1 +1 @@
1
- {"version":3,"file":"ng-nest-ui-scrollable.mjs","sources":["../../../../lib/ng-nest/ui/scrollable/scrollable.component.ts","../../../../lib/ng-nest/ui/scrollable/scrollable.component.html","../../../../lib/ng-nest/ui/scrollable/scrollable.module.ts","../../../../lib/ng-nest/ui/scrollable/ng-nest-ui-scrollable.ts"],"sourcesContent":["import {\r\n Component,\r\n ElementRef,\r\n AfterViewInit,\r\n OnDestroy,\r\n Renderer2,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n viewChild,\r\n signal,\r\n input\r\n} from '@angular/core';\r\n\r\ntype DragAxis = 'x' | 'y';\r\n\r\n@Component({\r\n selector: 'x-scrollable',\r\n templateUrl: './scrollable.component.html',\r\n styleUrls: ['./scrollable.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XScrollableComponent implements AfterViewInit, OnDestroy {\r\n yOffsetTop = input(0);\r\n yOffsetBottom = input(0);\r\n yOffsetLeft = input(0);\r\n yOffsetRight = input(0);\r\n\r\n xOffsetTop = input(0);\r\n xOffsetBottom = input(0);\r\n xOffsetLeft = input(0);\r\n xOffsetRight = input(0);\r\n\r\n maxHeight = input('100%');\r\n maxWidth = input('100%');\r\n\r\n private contentRef = viewChild.required<ElementRef<HTMLElement>>('content');\r\n\r\n private trackXRef = viewChild.required<ElementRef<HTMLElement>>('trackX');\r\n private thumbXRef = viewChild.required<ElementRef<HTMLElement>>('thumbX');\r\n private trackYRef = viewChild.required<ElementRef<HTMLElement>>('trackY');\r\n private thumbYRef = viewChild.required<ElementRef<HTMLElement>>('thumbY');\r\n\r\n isActive = signal(false);\r\n\r\n private isDragging = false;\r\n private dragAxis: DragAxis | null = null;\r\n private dragStart = { x: 0, y: 0 };\r\n private initialScroll = { left: 0, top: 0 };\r\n private resizeObserver!: ResizeObserver;\r\n\r\n private unlistenMouseMove!: () => void;\r\n private unlistenMouseUp!: () => void;\r\n\r\n constructor(private renderer: Renderer2) {}\r\n\r\n ngAfterViewInit(): void {\r\n setTimeout(() => this.updateScrollbars(), 0);\r\n\r\n this.resizeObserver = new ResizeObserver(() => {\r\n this.updateScrollbars();\r\n });\r\n this.resizeObserver.observe(this.contentRef().nativeElement);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.resizeObserver) {\r\n this.resizeObserver.disconnect();\r\n }\r\n }\r\n\r\n updateScrollbars(): void {\r\n this.updateVerticalScrollbar();\r\n this.updateHorizontalScrollbar();\r\n }\r\n\r\n private updateVerticalScrollbar(): void {\r\n const thumbY = this.thumbYRef().nativeElement;\r\n const trackY = this.trackYRef().nativeElement;\r\n const content = this.contentRef().nativeElement;\r\n let { clientHeight, scrollHeight, scrollTop } = content;\r\n if (this.yOffsetTop() !== 0 && this.yOffsetBottom() === 0) {\r\n this.renderer.setStyle(trackY, 'top', `${this.yOffsetTop()}px`);\r\n this.renderer.setStyle(trackY, 'height', `calc(100% - ${this.yOffsetTop()}px)`);\r\n clientHeight -= this.yOffsetTop();\r\n scrollHeight -= this.yOffsetTop();\r\n } else if (this.yOffsetTop() === 0 && this.yOffsetBottom() !== 0) {\r\n this.renderer.setStyle(trackY, 'height', `calc(100% - ${this.yOffsetBottom()}px)`);\r\n clientHeight -= this.yOffsetBottom();\r\n scrollHeight -= this.yOffsetBottom();\r\n } else if (this.yOffsetTop() !== 0 && this.yOffsetBottom() !== 0) {\r\n this.renderer.setStyle(trackY, 'top', `${this.yOffsetTop()}px`);\r\n this.renderer.setStyle(trackY, 'height', `calc(100% - ${this.yOffsetTop() + this.yOffsetBottom()}px)`);\r\n clientHeight -= this.yOffsetTop() + this.yOffsetBottom();\r\n scrollHeight -= this.yOffsetTop() + this.yOffsetBottom();\r\n }\r\n if (this.yOffsetLeft() !== 0) {\r\n this.renderer.setStyle(trackY, 'left', `${this.yOffsetLeft()}px`);\r\n }\r\n if (this.yOffsetRight() !== 0) {\r\n this.renderer.setStyle(trackY, 'right', `${this.yOffsetRight()}px`);\r\n }\r\n\r\n let visibleRatioY = clientHeight / scrollHeight;\r\n\r\n if (visibleRatioY >= 1) {\r\n this.renderer.setStyle(trackY, 'display', 'none');\r\n } else {\r\n this.renderer.setStyle(trackY, 'display', 'block');\r\n const thumbHeight = Math.max(visibleRatioY * clientHeight, 20);\r\n this.renderer.setStyle(thumbY, 'height', `${thumbHeight}px`);\r\n const maxThumbTop = clientHeight - thumbHeight;\r\n const thumbTop = Math.min((scrollTop / (scrollHeight - clientHeight)) * maxThumbTop, maxThumbTop);\r\n this.renderer.setStyle(thumbY, 'transform', `translateY(${thumbTop}px)`);\r\n }\r\n }\r\n\r\n private updateHorizontalScrollbar(): void {\r\n const content = this.contentRef().nativeElement;\r\n const thumbX = this.thumbXRef().nativeElement;\r\n const trackX = this.trackXRef().nativeElement;\r\n let { clientWidth, scrollWidth, scrollLeft } = content;\r\n if (this.xOffsetLeft() !== 0 && this.xOffsetRight() === 0) {\r\n this.renderer.setStyle(trackX, 'left', `${this.xOffsetLeft()}px`);\r\n this.renderer.setStyle(trackX, 'width', `calc(100% - ${this.xOffsetLeft()}px)`);\r\n clientWidth -= this.xOffsetLeft();\r\n scrollWidth -= this.xOffsetLeft();\r\n } else if (this.xOffsetLeft() === 0 && this.xOffsetRight() !== 0) {\r\n this.renderer.setStyle(trackX, 'width', `calc(100% - ${this.xOffsetRight()}px)`);\r\n clientWidth -= this.xOffsetRight();\r\n scrollWidth -= this.xOffsetRight();\r\n } else if (this.xOffsetLeft() !== 0 && this.xOffsetRight() !== 0) {\r\n this.renderer.setStyle(trackX, 'left', `${this.xOffsetLeft()}px`);\r\n this.renderer.setStyle(trackX, 'height', `calc(100% - ${this.xOffsetLeft() + this.xOffsetRight()}px)`);\r\n clientWidth -= this.xOffsetLeft() + this.xOffsetRight();\r\n scrollWidth -= this.xOffsetLeft() + this.xOffsetRight();\r\n }\r\n if (this.xOffsetTop() !== 0) {\r\n this.renderer.setStyle(trackX, 'top', `${this.xOffsetTop()}px`);\r\n }\r\n if (this.xOffsetBottom() !== 0) {\r\n this.renderer.setStyle(trackX, 'bottom', `${this.xOffsetBottom()}px`);\r\n }\r\n\r\n const visibleRatioX = clientWidth / scrollWidth;\r\n\r\n if (visibleRatioX >= 1) {\r\n this.renderer.setStyle(trackX, 'display', 'none');\r\n } else {\r\n this.renderer.setStyle(trackX, 'display', 'block');\r\n const thumbWidth = Math.max(visibleRatioX * clientWidth, 20);\r\n this.renderer.setStyle(thumbX, 'width', `${thumbWidth}px`);\r\n const maxThumbLeft = clientWidth - thumbWidth;\r\n const thumbLeft = Math.min((scrollLeft / (scrollWidth - clientWidth)) * maxThumbLeft, maxThumbLeft);\r\n this.renderer.setStyle(thumbX, 'transform', `translateX(${thumbLeft}px)`);\r\n }\r\n }\r\n\r\n startDrag(event: MouseEvent, axis: DragAxis): void {\r\n this.isDragging = true;\r\n this.dragAxis = axis;\r\n event.preventDefault();\r\n\r\n this.dragStart = { x: event.pageX, y: event.pageY };\r\n this.initialScroll = {\r\n left: this.contentRef().nativeElement.scrollLeft,\r\n top: this.contentRef().nativeElement.scrollTop\r\n };\r\n\r\n this.unlistenMouseMove = this.renderer.listen('document', 'mousemove', (e) => this.onDrag(e));\r\n this.unlistenMouseUp = this.renderer.listen('document', 'mouseup', () => this.stopDrag());\r\n }\r\n\r\n private onDrag(event: MouseEvent): void {\r\n if (!this.isDragging) return;\r\n\r\n const content = this.contentRef().nativeElement;\r\n let { scrollHeight, clientHeight, scrollWidth, clientWidth } = content;\r\n if (this.dragAxis === 'y') {\r\n if (this.yOffsetTop() !== 0 && this.yOffsetBottom() === 0) {\r\n clientHeight -= this.yOffsetTop();\r\n scrollHeight -= this.yOffsetTop();\r\n } else if (this.yOffsetTop() === 0 && this.yOffsetBottom() !== 0) {\r\n clientHeight -= this.yOffsetBottom();\r\n scrollHeight -= this.yOffsetBottom();\r\n } else if (this.yOffsetTop() !== 0 && this.yOffsetBottom() !== 0) {\r\n clientHeight -= this.yOffsetTop() + this.yOffsetBottom();\r\n scrollHeight -= this.yOffsetTop() + this.yOffsetBottom();\r\n }\r\n\r\n const mouseDeltaY = event.pageY - this.dragStart.y;\r\n const scrollRatio = scrollHeight / clientHeight;\r\n content.scrollTop = this.initialScroll.top + mouseDeltaY * scrollRatio;\r\n } else if (this.dragAxis === 'x') {\r\n if (this.xOffsetLeft() !== 0 && this.xOffsetRight() === 0) {\r\n clientWidth -= this.xOffsetLeft();\r\n scrollWidth -= this.xOffsetLeft();\r\n } else if (this.xOffsetLeft() === 0 && this.xOffsetRight() !== 0) {\r\n clientWidth -= this.xOffsetRight();\r\n scrollWidth -= this.xOffsetRight();\r\n } else if (this.xOffsetLeft() !== 0 && this.xOffsetRight() !== 0) {\r\n clientWidth -= this.xOffsetLeft() + this.xOffsetRight();\r\n scrollWidth -= this.xOffsetLeft() + this.xOffsetRight();\r\n }\r\n\r\n const mouseDeltaX = event.pageX - this.dragStart.x;\r\n const scrollRatio = scrollWidth / clientWidth;\r\n content.scrollLeft = this.initialScroll.left + mouseDeltaX * scrollRatio;\r\n }\r\n }\r\n\r\n private stopDrag(): void {\r\n if (this.isDragging) {\r\n this.isDragging = false;\r\n this.dragAxis = null;\r\n this.unlistenMouseMove();\r\n this.unlistenMouseUp();\r\n }\r\n }\r\n\r\n onHostEnter(): void {\r\n this.isActive.set(true);\r\n this.updateScrollbars();\r\n }\r\n\r\n onHostLeave(): void {\r\n if (!this.isDragging) {\r\n this.isActive.set(false);\r\n }\r\n }\r\n}\r\n","<div class=\"x-scrollable\" [class.active]=\"isActive()\" (mouseenter)=\"onHostEnter()\" (mouseleave)=\"onHostLeave()\">\r\n <div\r\n #content\r\n class=\"x-scrollable-content\"\r\n [style.maxHeight]=\"maxHeight()\"\r\n [style.maxWidth]=\"maxWidth()\"\r\n (scroll)=\"updateScrollbars()\"\r\n >\r\n <ng-content></ng-content>\r\n </div>\r\n\r\n <div #trackY class=\"x-scrollable-track x-scrollable-track-y\">\r\n <div #thumbY class=\"x-scrollable-thumb x-scrollable-thumb-y\" (mousedown)=\"startDrag($event, 'y')\"></div>\r\n </div>\r\n\r\n <div #trackX class=\"x-scrollable-track x-scrollable-track-x\">\r\n <div #thumbX class=\"x-scrollable-thumb x-scrollable-thumb-x\" (mousedown)=\"startDrag($event, 'x')\"></div>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { XScrollableComponent } from './scrollable.component';\r\n\r\n@NgModule({\r\n exports: [XScrollableComponent],\r\n imports: [XScrollableComponent]\r\n})\r\nexport class XScrollableModule {}\r\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":"ng-nest-ui-scrollable.mjs","sources":["../../../../lib/ng-nest/ui/scrollable/scrollable.component.ts","../../../../lib/ng-nest/ui/scrollable/scrollable.component.html","../../../../lib/ng-nest/ui/scrollable/scrollable.module.ts","../../../../lib/ng-nest/ui/scrollable/ng-nest-ui-scrollable.ts"],"sourcesContent":["import {\r\n Component,\r\n ElementRef,\r\n AfterViewInit,\r\n OnDestroy,\r\n Renderer2,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n viewChild,\r\n signal,\r\n input,\r\n output\r\n} from '@angular/core';\r\n\r\ntype DragAxis = 'x' | 'y';\r\n\r\n@Component({\r\n selector: 'x-scrollable',\r\n templateUrl: './scrollable.component.html',\r\n styleUrls: ['./scrollable.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XScrollableComponent implements AfterViewInit, OnDestroy {\r\n yOffsetTop = input(0);\r\n yOffsetBottom = input(0);\r\n yOffsetLeft = input(0);\r\n yOffsetRight = input(0);\r\n\r\n xOffsetTop = input(0);\r\n xOffsetBottom = input(0);\r\n xOffsetLeft = input(0);\r\n xOffsetRight = input(0);\r\n\r\n maxHeight = input('100%');\r\n maxWidth = input('100%');\r\n\r\n resizeChange = output<ResizeObserverEntry>();\r\n scrollChange = output<Event>();\r\n\r\n private contentRef = viewChild.required<ElementRef<HTMLElement>>('content');\r\n\r\n private trackXRef = viewChild.required<ElementRef<HTMLElement>>('trackX');\r\n private thumbXRef = viewChild.required<ElementRef<HTMLElement>>('thumbX');\r\n private trackYRef = viewChild.required<ElementRef<HTMLElement>>('trackY');\r\n private thumbYRef = viewChild.required<ElementRef<HTMLElement>>('thumbY');\r\n\r\n isActive = signal(false);\r\n\r\n isAtTop = signal(false);\r\n isAtBottom = signal(false);\r\n isAtLeft = signal(false);\r\n isAtRight = signal(false);\r\n\r\n hasVerticalScrollbar = signal(false);\r\n hasHorizontalScrollbar = signal(false);\r\n\r\n private isDragging = false;\r\n private dragAxis: DragAxis | null = null;\r\n private dragStart = { x: 0, y: 0 };\r\n private initialScroll = { left: 0, top: 0 };\r\n private resizeObserver!: ResizeObserver;\r\n private mutationObserver!: MutationObserver;\r\n private scrollListener!: () => void;\r\n\r\n private unlistenMouseMove!: () => void;\r\n private unlistenMouseUp!: () => void;\r\n\r\n private resizeTimeoutId: number | null = null;\r\n private mutationTimeoutId: number | null = null;\r\n\r\n constructor(private renderer: Renderer2) {}\r\n\r\n ngAfterViewInit(): void {\r\n setTimeout(() => this.updateScrollbars(), 0);\r\n\r\n this.resizeObserver = new ResizeObserver((entries) => {\r\n for (const entry of entries) {\r\n if (entry.target === this.contentRef().nativeElement) {\r\n if (this.resizeTimeoutId !== null) {\r\n window.clearTimeout(this.resizeTimeoutId);\r\n }\r\n\r\n this.resizeTimeoutId = window.setTimeout(() => {\r\n this.updateScrollbars();\r\n if (entry && entry.borderBoxSize && entry.borderBoxSize.length > 0) {\r\n this.resizeChange.emit(entry);\r\n }\r\n }, 16);\r\n }\r\n }\r\n });\r\n\r\n this.resizeObserver.observe(this.contentRef().nativeElement, { box: 'border-box' });\r\n\r\n this.mutationObserver = new MutationObserver((mutations) => {\r\n let shouldUpdate = false;\r\n\r\n for (const mutation of mutations) {\r\n if (mutation.type === 'childList' || mutation.type === 'attributes') {\r\n shouldUpdate = true;\r\n break;\r\n }\r\n }\r\n\r\n if (shouldUpdate) {\r\n if (this.mutationTimeoutId !== null) {\r\n window.clearTimeout(this.mutationTimeoutId);\r\n }\r\n\r\n this.mutationTimeoutId = window.setTimeout(() => {\r\n this.updateScrollbars();\r\n }, 16);\r\n }\r\n });\r\n\r\n this.mutationObserver.observe(this.contentRef().nativeElement, {\r\n childList: true,\r\n subtree: true,\r\n attributes: true,\r\n attributeFilter: ['style', 'class']\r\n });\r\n\r\n this.scrollListener = this.renderer.listen(this.contentRef().nativeElement, 'scroll', (event: Event) => {\r\n this.updateScrollbars(true, event);\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.resizeObserver) {\r\n this.resizeObserver.disconnect();\r\n }\r\n\r\n if (this.mutationObserver) {\r\n this.mutationObserver.disconnect();\r\n }\r\n\r\n if (this.scrollListener) {\r\n this.scrollListener();\r\n }\r\n\r\n if (this.resizeTimeoutId !== null) {\r\n window.clearTimeout(this.resizeTimeoutId);\r\n }\r\n\r\n if (this.mutationTimeoutId !== null) {\r\n window.clearTimeout(this.mutationTimeoutId);\r\n }\r\n }\r\n\r\n updateScrollbars(scroll = false, event?: Event): void {\r\n this.updateVerticalScrollbar();\r\n this.updateHorizontalScrollbar();\r\n if (scroll && event) {\r\n this.scrollChange.emit(event);\r\n }\r\n }\r\n\r\n private updateVerticalScrollbar(): void {\r\n const thumbY = this.thumbYRef().nativeElement;\r\n const trackY = this.trackYRef().nativeElement;\r\n const content = this.contentRef().nativeElement;\r\n let { clientHeight, scrollHeight, scrollTop } = content;\r\n this.isAtTop.set(scrollTop === 0);\r\n this.isAtBottom.set(scrollTop + clientHeight >= scrollHeight);\r\n this.hasVerticalScrollbar.set(scrollHeight > clientHeight);\r\n\r\n if (this.yOffsetTop() !== 0 && this.yOffsetBottom() === 0) {\r\n this.renderer.setStyle(trackY, 'top', `${this.yOffsetTop()}px`);\r\n this.renderer.setStyle(trackY, 'height', `calc(100% - ${this.yOffsetTop()}px)`);\r\n clientHeight -= this.yOffsetTop();\r\n scrollHeight -= this.yOffsetTop();\r\n } else if (this.yOffsetTop() === 0 && this.yOffsetBottom() !== 0) {\r\n this.renderer.setStyle(trackY, 'height', `calc(100% - ${this.yOffsetBottom()}px)`);\r\n clientHeight -= this.yOffsetBottom();\r\n scrollHeight -= this.yOffsetBottom();\r\n } else if (this.yOffsetTop() !== 0 && this.yOffsetBottom() !== 0) {\r\n this.renderer.setStyle(trackY, 'top', `${this.yOffsetTop()}px`);\r\n this.renderer.setStyle(trackY, 'height', `calc(100% - ${this.yOffsetTop() + this.yOffsetBottom()}px)`);\r\n clientHeight -= this.yOffsetTop() + this.yOffsetBottom();\r\n scrollHeight -= this.yOffsetTop() + this.yOffsetBottom();\r\n }\r\n if (this.yOffsetLeft() !== 0) {\r\n this.renderer.setStyle(trackY, 'left', `${this.yOffsetLeft()}px`);\r\n }\r\n if (this.yOffsetRight() !== 0) {\r\n this.renderer.setStyle(trackY, 'right', `${this.yOffsetRight()}px`);\r\n }\r\n\r\n let visibleRatioY = clientHeight / scrollHeight;\r\n\r\n if (visibleRatioY > 0.99 && visibleRatioY < 1) {\r\n visibleRatioY = 1;\r\n }\r\n\r\n if (visibleRatioY >= 1) {\r\n this.renderer.setStyle(trackY, 'display', 'none');\r\n } else {\r\n this.renderer.setStyle(trackY, 'display', 'block');\r\n const thumbHeight = Math.max(visibleRatioY * clientHeight, 20);\r\n this.renderer.setStyle(thumbY, 'height', `${thumbHeight}px`);\r\n const maxThumbTop = clientHeight - thumbHeight;\r\n const thumbTop = Math.min((scrollTop / (scrollHeight - clientHeight)) * maxThumbTop, maxThumbTop);\r\n this.renderer.setStyle(thumbY, 'transform', `translateY(${thumbTop}px)`);\r\n }\r\n }\r\n\r\n private updateHorizontalScrollbar(): void {\r\n const content = this.contentRef().nativeElement;\r\n const thumbX = this.thumbXRef().nativeElement;\r\n const trackX = this.trackXRef().nativeElement;\r\n let { clientWidth, scrollWidth, scrollLeft } = content;\r\n this.isAtLeft.set(scrollLeft === 0);\r\n this.isAtRight.set(scrollLeft + clientWidth >= scrollWidth);\r\n this.hasHorizontalScrollbar.set(scrollWidth > clientWidth);\r\n\r\n if (this.xOffsetLeft() !== 0 && this.xOffsetRight() === 0) {\r\n this.renderer.setStyle(trackX, 'left', `${this.xOffsetLeft()}px`);\r\n this.renderer.setStyle(trackX, 'width', `calc(100% - ${this.xOffsetLeft()}px)`);\r\n clientWidth -= this.xOffsetLeft();\r\n scrollWidth -= this.xOffsetLeft();\r\n } else if (this.xOffsetLeft() === 0 && this.xOffsetRight() !== 0) {\r\n this.renderer.setStyle(trackX, 'width', `calc(100% - ${this.xOffsetRight()}px)`);\r\n clientWidth -= this.xOffsetRight();\r\n scrollWidth -= this.xOffsetRight();\r\n } else if (this.xOffsetLeft() !== 0 && this.xOffsetRight() !== 0) {\r\n this.renderer.setStyle(trackX, 'left', `${this.xOffsetLeft()}px`);\r\n this.renderer.setStyle(trackX, 'width', `calc(100% - ${this.xOffsetLeft() + this.xOffsetRight()}px)`);\r\n clientWidth -= this.xOffsetLeft() + this.xOffsetRight();\r\n scrollWidth -= this.xOffsetLeft() + this.xOffsetRight();\r\n }\r\n if (this.xOffsetTop() !== 0) {\r\n this.renderer.setStyle(trackX, 'top', `${this.xOffsetTop()}px`);\r\n }\r\n if (this.xOffsetBottom() !== 0) {\r\n this.renderer.setStyle(trackX, 'bottom', `${this.xOffsetBottom()}px`);\r\n }\r\n\r\n const visibleRatioX = clientWidth / scrollWidth;\r\n\r\n if (visibleRatioX >= 1) {\r\n this.renderer.setStyle(trackX, 'display', 'none');\r\n } else {\r\n this.renderer.setStyle(trackX, 'display', 'block');\r\n const thumbWidth = Math.max(visibleRatioX * clientWidth, 20);\r\n this.renderer.setStyle(thumbX, 'width', `${thumbWidth}px`);\r\n const maxThumbLeft = clientWidth - thumbWidth;\r\n const thumbLeft = Math.min((scrollLeft / (scrollWidth - clientWidth)) * maxThumbLeft, maxThumbLeft);\r\n this.renderer.setStyle(thumbX, 'transform', `translateX(${thumbLeft}px)`);\r\n }\r\n }\r\n\r\n startDrag(event: MouseEvent, axis: DragAxis): void {\r\n this.isDragging = true;\r\n this.dragAxis = axis;\r\n event.preventDefault();\r\n\r\n this.dragStart = { x: event.pageX, y: event.pageY };\r\n this.initialScroll = {\r\n left: this.contentRef().nativeElement.scrollLeft,\r\n top: this.contentRef().nativeElement.scrollTop\r\n };\r\n\r\n this.unlistenMouseMove = this.renderer.listen('document', 'mousemove', (e) => this.onDrag(e));\r\n this.unlistenMouseUp = this.renderer.listen('document', 'mouseup', () => this.stopDrag());\r\n }\r\n\r\n private onDrag(event: MouseEvent): void {\r\n if (!this.isDragging) return;\r\n\r\n const content = this.contentRef().nativeElement;\r\n let { scrollHeight, clientHeight, scrollWidth, clientWidth } = content;\r\n if (this.dragAxis === 'y') {\r\n if (this.yOffsetTop() !== 0 && this.yOffsetBottom() === 0) {\r\n clientHeight -= this.yOffsetTop();\r\n scrollHeight -= this.yOffsetTop();\r\n } else if (this.yOffsetTop() === 0 && this.yOffsetBottom() !== 0) {\r\n clientHeight -= this.yOffsetBottom();\r\n scrollHeight -= this.yOffsetBottom();\r\n } else if (this.yOffsetTop() !== 0 && this.yOffsetBottom() !== 0) {\r\n clientHeight -= this.yOffsetTop() + this.yOffsetBottom();\r\n scrollHeight -= this.yOffsetTop() + this.yOffsetBottom();\r\n }\r\n\r\n const mouseDeltaY = event.pageY - this.dragStart.y;\r\n const scrollRatio = scrollHeight / clientHeight;\r\n content.scrollTop = this.initialScroll.top + mouseDeltaY * scrollRatio;\r\n } else if (this.dragAxis === 'x') {\r\n if (this.xOffsetLeft() !== 0 && this.xOffsetRight() === 0) {\r\n clientWidth -= this.xOffsetLeft();\r\n scrollWidth -= this.xOffsetLeft();\r\n } else if (this.xOffsetLeft() === 0 && this.xOffsetRight() !== 0) {\r\n clientWidth -= this.xOffsetRight();\r\n scrollWidth -= this.xOffsetRight();\r\n } else if (this.xOffsetLeft() !== 0 && this.xOffsetRight() !== 0) {\r\n clientWidth -= this.xOffsetLeft() + this.xOffsetRight();\r\n scrollWidth -= this.xOffsetLeft() + this.xOffsetRight();\r\n }\r\n\r\n const mouseDeltaX = event.pageX - this.dragStart.x;\r\n const scrollRatio = scrollWidth / clientWidth;\r\n content.scrollLeft = this.initialScroll.left + mouseDeltaX * scrollRatio;\r\n }\r\n }\r\n\r\n private stopDrag(): void {\r\n if (this.isDragging) {\r\n this.isDragging = false;\r\n this.dragAxis = null;\r\n this.unlistenMouseMove();\r\n this.unlistenMouseUp();\r\n }\r\n }\r\n\r\n onHostEnter(): void {\r\n this.isActive.set(true);\r\n this.updateScrollbars();\r\n }\r\n\r\n onHostLeave(): void {\r\n if (!this.isDragging) {\r\n this.isActive.set(false);\r\n }\r\n }\r\n}\r\n","<div class=\"x-scrollable\" [class.active]=\"isActive()\" (mouseenter)=\"onHostEnter()\" (mouseleave)=\"onHostLeave()\">\r\n <div #content class=\"x-scrollable-content\" [style.maxHeight]=\"maxHeight()\" [style.maxWidth]=\"maxWidth()\">\r\n <ng-content></ng-content>\r\n </div>\r\n\r\n <div #trackY class=\"x-scrollable-track x-scrollable-track-y\">\r\n <div #thumbY class=\"x-scrollable-thumb x-scrollable-thumb-y\" (mousedown)=\"startDrag($event, 'y')\"></div>\r\n </div>\r\n\r\n <div #trackX class=\"x-scrollable-track x-scrollable-track-x\">\r\n <div #thumbX class=\"x-scrollable-thumb x-scrollable-thumb-x\" (mousedown)=\"startDrag($event, 'x')\"></div>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { XScrollableComponent } from './scrollable.component';\r\n\r\n@NgModule({\r\n exports: [XScrollableComponent],\r\n imports: [XScrollableComponent]\r\n})\r\nexport class XScrollableModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -270,7 +270,7 @@ class XSelectProperty extends XFormControlFunction(X_SELECT_CONFIG_NAME) {
270
270
  * @zh_CN 验证不通过提示文字
271
271
  * @en_US Verify not pass the prompt text
272
272
  */
273
- this.message = input([], ...(ngDevMode ? [{ debugName: "message" }] : []));
273
+ this.message = input('', ...(ngDevMode ? [{ debugName: "message" }] : []));
274
274
  /**
275
275
  * @zh_CN 激活状态
276
276
  * @en_US Activation state