@ng-nest/ui 21.0.12 → 22.0.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 (204) hide show
  1. package/fesm2022/ng-nest-ui-affix.mjs +12 -12
  2. package/fesm2022/ng-nest-ui-affix.mjs.map +1 -1
  3. package/fesm2022/ng-nest-ui-alert.mjs +46 -34
  4. package/fesm2022/ng-nest-ui-alert.mjs.map +1 -1
  5. package/fesm2022/ng-nest-ui-anchor.mjs +43 -31
  6. package/fesm2022/ng-nest-ui-anchor.mjs.map +1 -1
  7. package/fesm2022/ng-nest-ui-api.mjs +7 -7
  8. package/fesm2022/ng-nest-ui-attachments.mjs +74 -48
  9. package/fesm2022/ng-nest-ui-attachments.mjs.map +1 -1
  10. package/fesm2022/ng-nest-ui-auto-complete.mjs +114 -70
  11. package/fesm2022/ng-nest-ui-auto-complete.mjs.map +1 -1
  12. package/fesm2022/ng-nest-ui-avatar.mjs +47 -32
  13. package/fesm2022/ng-nest-ui-avatar.mjs.map +1 -1
  14. package/fesm2022/ng-nest-ui-back-top.mjs +23 -18
  15. package/fesm2022/ng-nest-ui-back-top.mjs.map +1 -1
  16. package/fesm2022/ng-nest-ui-badge.mjs +30 -23
  17. package/fesm2022/ng-nest-ui-badge.mjs.map +1 -1
  18. package/fesm2022/ng-nest-ui-base-form.mjs +75 -44
  19. package/fesm2022/ng-nest-ui-base-form.mjs.map +1 -1
  20. package/fesm2022/ng-nest-ui-bubble.mjs +76 -48
  21. package/fesm2022/ng-nest-ui-bubble.mjs.map +1 -1
  22. package/fesm2022/ng-nest-ui-button.mjs +53 -42
  23. package/fesm2022/ng-nest-ui-button.mjs.map +1 -1
  24. package/fesm2022/ng-nest-ui-calendar.mjs +30 -20
  25. package/fesm2022/ng-nest-ui-calendar.mjs.map +1 -1
  26. package/fesm2022/ng-nest-ui-card.mjs +21 -16
  27. package/fesm2022/ng-nest-ui-card.mjs.map +1 -1
  28. package/fesm2022/ng-nest-ui-carousel.mjs +68 -46
  29. package/fesm2022/ng-nest-ui-carousel.mjs.map +1 -1
  30. package/fesm2022/ng-nest-ui-cascade.mjs +121 -73
  31. package/fesm2022/ng-nest-ui-cascade.mjs.map +1 -1
  32. package/fesm2022/ng-nest-ui-checkbox.mjs +54 -38
  33. package/fesm2022/ng-nest-ui-checkbox.mjs.map +1 -1
  34. package/fesm2022/ng-nest-ui-collapse.mjs +38 -30
  35. package/fesm2022/ng-nest-ui-collapse.mjs.map +1 -1
  36. package/fesm2022/ng-nest-ui-color-picker.mjs +119 -72
  37. package/fesm2022/ng-nest-ui-color-picker.mjs.map +1 -1
  38. package/fesm2022/ng-nest-ui-color.mjs +22 -16
  39. package/fesm2022/ng-nest-ui-color.mjs.map +1 -1
  40. package/fesm2022/ng-nest-ui-comment.mjs +23 -21
  41. package/fesm2022/ng-nest-ui-comment.mjs.map +1 -1
  42. package/fesm2022/ng-nest-ui-container.mjs +40 -37
  43. package/fesm2022/ng-nest-ui-container.mjs.map +1 -1
  44. package/fesm2022/ng-nest-ui-contextmenu.mjs +71 -45
  45. package/fesm2022/ng-nest-ui-contextmenu.mjs.map +1 -1
  46. package/fesm2022/ng-nest-ui-core.mjs +24 -21
  47. package/fesm2022/ng-nest-ui-core.mjs.map +1 -1
  48. package/fesm2022/ng-nest-ui-coversations.mjs +25 -18
  49. package/fesm2022/ng-nest-ui-coversations.mjs.map +1 -1
  50. package/fesm2022/ng-nest-ui-crumb.mjs +15 -13
  51. package/fesm2022/ng-nest-ui-crumb.mjs.map +1 -1
  52. package/fesm2022/ng-nest-ui-date-picker.mjs +425 -256
  53. package/fesm2022/ng-nest-ui-date-picker.mjs.map +1 -1
  54. package/fesm2022/ng-nest-ui-description.mjs +42 -31
  55. package/fesm2022/ng-nest-ui-description.mjs.map +1 -1
  56. package/fesm2022/ng-nest-ui-dialog.mjs +106 -82
  57. package/fesm2022/ng-nest-ui-dialog.mjs.map +1 -1
  58. package/fesm2022/ng-nest-ui-divider.mjs +24 -17
  59. package/fesm2022/ng-nest-ui-divider.mjs.map +1 -1
  60. package/fesm2022/ng-nest-ui-doc.mjs +7 -7
  61. package/fesm2022/ng-nest-ui-drag.mjs +10 -10
  62. package/fesm2022/ng-nest-ui-drawer.mjs +52 -43
  63. package/fesm2022/ng-nest-ui-drawer.mjs.map +1 -1
  64. package/fesm2022/ng-nest-ui-dropdown.mjs +94 -58
  65. package/fesm2022/ng-nest-ui-dropdown.mjs.map +1 -1
  66. package/fesm2022/ng-nest-ui-empty.mjs +14 -12
  67. package/fesm2022/ng-nest-ui-empty.mjs.map +1 -1
  68. package/fesm2022/ng-nest-ui-examples.mjs +7 -7
  69. package/fesm2022/ng-nest-ui-find.mjs +111 -71
  70. package/fesm2022/ng-nest-ui-find.mjs.map +1 -1
  71. package/fesm2022/ng-nest-ui-form.mjs +45 -33
  72. package/fesm2022/ng-nest-ui-form.mjs.map +1 -1
  73. package/fesm2022/ng-nest-ui-highlight.mjs +26 -20
  74. package/fesm2022/ng-nest-ui-highlight.mjs.map +1 -1
  75. package/fesm2022/ng-nest-ui-i18n.mjs +16 -15
  76. package/fesm2022/ng-nest-ui-i18n.mjs.map +1 -1
  77. package/fesm2022/ng-nest-ui-icon.mjs +28 -21
  78. package/fesm2022/ng-nest-ui-icon.mjs.map +1 -1
  79. package/fesm2022/ng-nest-ui-image.mjs +57 -51
  80. package/fesm2022/ng-nest-ui-image.mjs.map +1 -1
  81. package/fesm2022/ng-nest-ui-inner.mjs +11 -11
  82. package/fesm2022/ng-nest-ui-inner.mjs.map +1 -1
  83. package/fesm2022/ng-nest-ui-input-number.mjs +63 -42
  84. package/fesm2022/ng-nest-ui-input-number.mjs.map +1 -1
  85. package/fesm2022/ng-nest-ui-input.mjs +130 -85
  86. package/fesm2022/ng-nest-ui-input.mjs.map +1 -1
  87. package/fesm2022/ng-nest-ui-keyword.mjs +19 -15
  88. package/fesm2022/ng-nest-ui-keyword.mjs.map +1 -1
  89. package/fesm2022/ng-nest-ui-layout.mjs +37 -31
  90. package/fesm2022/ng-nest-ui-layout.mjs.map +1 -1
  91. package/fesm2022/ng-nest-ui-link.mjs +23 -18
  92. package/fesm2022/ng-nest-ui-link.mjs.map +1 -1
  93. package/fesm2022/ng-nest-ui-list.mjs +137 -89
  94. package/fesm2022/ng-nest-ui-list.mjs.map +1 -1
  95. package/fesm2022/ng-nest-ui-loading.mjs +36 -25
  96. package/fesm2022/ng-nest-ui-loading.mjs.map +1 -1
  97. package/fesm2022/ng-nest-ui-menu.mjs +68 -45
  98. package/fesm2022/ng-nest-ui-menu.mjs.map +1 -1
  99. package/fesm2022/ng-nest-ui-message-box.mjs +10 -10
  100. package/fesm2022/ng-nest-ui-message.mjs +10 -10
  101. package/fesm2022/ng-nest-ui-notification.mjs +10 -10
  102. package/fesm2022/ng-nest-ui-outlet.mjs +11 -9
  103. package/fesm2022/ng-nest-ui-outlet.mjs.map +1 -1
  104. package/fesm2022/ng-nest-ui-page-header.mjs +20 -15
  105. package/fesm2022/ng-nest-ui-page-header.mjs.map +1 -1
  106. package/fesm2022/ng-nest-ui-pagination.mjs +69 -48
  107. package/fesm2022/ng-nest-ui-pagination.mjs.map +1 -1
  108. package/fesm2022/ng-nest-ui-pattern.mjs +7 -7
  109. package/fesm2022/ng-nest-ui-popconfirm.mjs +40 -27
  110. package/fesm2022/ng-nest-ui-popconfirm.mjs.map +1 -1
  111. package/fesm2022/ng-nest-ui-popover.mjs +57 -38
  112. package/fesm2022/ng-nest-ui-popover.mjs.map +1 -1
  113. package/fesm2022/ng-nest-ui-portal.mjs +7 -7
  114. package/fesm2022/ng-nest-ui-progress.mjs +60 -41
  115. package/fesm2022/ng-nest-ui-progress.mjs.map +1 -1
  116. package/fesm2022/ng-nest-ui-prompts.mjs +18 -15
  117. package/fesm2022/ng-nest-ui-prompts.mjs.map +1 -1
  118. package/fesm2022/ng-nest-ui-radio.mjs +50 -35
  119. package/fesm2022/ng-nest-ui-radio.mjs.map +1 -1
  120. package/fesm2022/ng-nest-ui-rate.mjs +43 -29
  121. package/fesm2022/ng-nest-ui-rate.mjs.map +1 -1
  122. package/fesm2022/ng-nest-ui-resizable.mjs +18 -16
  123. package/fesm2022/ng-nest-ui-resizable.mjs.map +1 -1
  124. package/fesm2022/ng-nest-ui-result.mjs +22 -16
  125. package/fesm2022/ng-nest-ui-result.mjs.map +1 -1
  126. package/fesm2022/ng-nest-ui-ripple.mjs +14 -13
  127. package/fesm2022/ng-nest-ui-ripple.mjs.map +1 -1
  128. package/fesm2022/ng-nest-ui-scrollable.mjs +41 -24
  129. package/fesm2022/ng-nest-ui-scrollable.mjs.map +1 -1
  130. package/fesm2022/ng-nest-ui-select.mjs +196 -117
  131. package/fesm2022/ng-nest-ui-select.mjs.map +1 -1
  132. package/fesm2022/ng-nest-ui-sender.mjs +43 -31
  133. package/fesm2022/ng-nest-ui-sender.mjs.map +1 -1
  134. package/fesm2022/ng-nest-ui-skeleton.mjs +17 -15
  135. package/fesm2022/ng-nest-ui-skeleton.mjs.map +1 -1
  136. package/fesm2022/ng-nest-ui-slider-select.mjs +85 -53
  137. package/fesm2022/ng-nest-ui-slider-select.mjs.map +1 -1
  138. package/fesm2022/ng-nest-ui-slider.mjs +58 -37
  139. package/fesm2022/ng-nest-ui-slider.mjs.map +1 -1
  140. package/fesm2022/ng-nest-ui-splitter.mjs +32 -24
  141. package/fesm2022/ng-nest-ui-splitter.mjs.map +1 -1
  142. package/fesm2022/ng-nest-ui-statistic.mjs +44 -30
  143. package/fesm2022/ng-nest-ui-statistic.mjs.map +1 -1
  144. package/fesm2022/ng-nest-ui-steps.mjs +30 -22
  145. package/fesm2022/ng-nest-ui-steps.mjs.map +1 -1
  146. package/fesm2022/ng-nest-ui-suggestion.mjs +23 -20
  147. package/fesm2022/ng-nest-ui-suggestion.mjs.map +1 -1
  148. package/fesm2022/ng-nest-ui-switch.mjs +35 -25
  149. package/fesm2022/ng-nest-ui-switch.mjs.map +1 -1
  150. package/fesm2022/ng-nest-ui-table-view.mjs +78 -69
  151. package/fesm2022/ng-nest-ui-table-view.mjs.map +1 -1
  152. package/fesm2022/ng-nest-ui-table.mjs +320 -205
  153. package/fesm2022/ng-nest-ui-table.mjs.map +1 -1
  154. package/fesm2022/ng-nest-ui-tabs.mjs +74 -56
  155. package/fesm2022/ng-nest-ui-tabs.mjs.map +1 -1
  156. package/fesm2022/ng-nest-ui-tag.mjs +30 -23
  157. package/fesm2022/ng-nest-ui-tag.mjs.map +1 -1
  158. package/fesm2022/ng-nest-ui-text-retract.mjs +19 -15
  159. package/fesm2022/ng-nest-ui-text-retract.mjs.map +1 -1
  160. package/fesm2022/ng-nest-ui-textarea.mjs +69 -44
  161. package/fesm2022/ng-nest-ui-textarea.mjs.map +1 -1
  162. package/fesm2022/ng-nest-ui-theme.mjs +34 -23
  163. package/fesm2022/ng-nest-ui-theme.mjs.map +1 -1
  164. package/fesm2022/ng-nest-ui-thought-chain.mjs +26 -19
  165. package/fesm2022/ng-nest-ui-thought-chain.mjs.map +1 -1
  166. package/fesm2022/ng-nest-ui-time-ago.mjs +7 -7
  167. package/fesm2022/ng-nest-ui-time-picker.mjs +164 -96
  168. package/fesm2022/ng-nest-ui-time-picker.mjs.map +1 -1
  169. package/fesm2022/ng-nest-ui-time-range.mjs +7 -7
  170. package/fesm2022/ng-nest-ui-timeline.mjs +26 -19
  171. package/fesm2022/ng-nest-ui-timeline.mjs.map +1 -1
  172. package/fesm2022/ng-nest-ui-tooltip.mjs +53 -35
  173. package/fesm2022/ng-nest-ui-tooltip.mjs.map +1 -1
  174. package/fesm2022/ng-nest-ui-transfer.mjs +66 -40
  175. package/fesm2022/ng-nest-ui-transfer.mjs.map +1 -1
  176. package/fesm2022/ng-nest-ui-tree-file.mjs +39 -28
  177. package/fesm2022/ng-nest-ui-tree-file.mjs.map +1 -1
  178. package/fesm2022/ng-nest-ui-tree-select.mjs +186 -111
  179. package/fesm2022/ng-nest-ui-tree-select.mjs.map +1 -1
  180. package/fesm2022/ng-nest-ui-tree.mjs +166 -105
  181. package/fesm2022/ng-nest-ui-tree.mjs.map +1 -1
  182. package/fesm2022/ng-nest-ui-typography.mjs +16 -13
  183. package/fesm2022/ng-nest-ui-typography.mjs.map +1 -1
  184. package/fesm2022/ng-nest-ui-upload.mjs +81 -53
  185. package/fesm2022/ng-nest-ui-upload.mjs.map +1 -1
  186. package/fesm2022/ng-nest-ui-watermark.mjs +44 -34
  187. package/fesm2022/ng-nest-ui-watermark.mjs.map +1 -1
  188. package/fesm2022/ng-nest-ui-welcome.mjs +22 -16
  189. package/fesm2022/ng-nest-ui-welcome.mjs.map +1 -1
  190. package/package.json +3 -2
  191. package/types/ng-nest-ui-base-form.d.ts +3 -3
  192. package/types/ng-nest-ui-carousel.d.ts +1 -1
  193. package/types/ng-nest-ui-container.d.ts +1 -1
  194. package/types/ng-nest-ui-core.d.ts +1 -1
  195. package/types/ng-nest-ui-dialog.d.ts +1 -1
  196. package/types/ng-nest-ui-drawer.d.ts +1 -1
  197. package/types/ng-nest-ui-form.d.ts +12 -12
  198. package/types/ng-nest-ui-layout.d.ts +1 -1
  199. package/types/ng-nest-ui-list.d.ts +1 -1
  200. package/types/ng-nest-ui-portal.d.ts +3 -3
  201. package/types/ng-nest-ui-table-view.d.ts +1 -1
  202. package/types/ng-nest-ui-table.d.ts +1 -1
  203. package/types/ng-nest-ui-tabs.d.ts +1 -1
  204. package/types/ng-nest-ui-tree.d.ts +1 -1
@@ -22,27 +22,31 @@ class XResultProperty extends XPropertyFunction(X_RESULT_CONFIG_NAME) {
22
22
  * @zh_CN 状态
23
23
  * @en_US Status
24
24
  */
25
- this.status = input('info', ...(ngDevMode ? [{ debugName: "status" }] : []));
25
+ this.status = input('info', /* @ts-ignore */
26
+ ...(ngDevMode ? [{ debugName: "status" }] : /* istanbul ignore next */ []));
26
27
  /**
27
28
  * @zh_CN 标题,支持模板自定义
28
29
  * @en_US Title, support template customization
29
30
  */
30
- this.title = input(...(ngDevMode ? [undefined, { debugName: "title" }] : []));
31
+ this.title = input(/* @ts-ignore */
32
+ ...(ngDevMode ? [undefined, { debugName: "title" }] : /* istanbul ignore next */ []));
31
33
  /**
32
34
  * @zh_CN 图标,支持模板自定义
33
35
  * @en_US Icon, support template customization
34
36
  */
35
- this.icon = input(...(ngDevMode ? [undefined, { debugName: "icon" }] : []));
37
+ this.icon = input(/* @ts-ignore */
38
+ ...(ngDevMode ? [undefined, { debugName: "icon" }] : /* istanbul ignore next */ []));
36
39
  /**
37
40
  * @zh_CN 小标题,支持模板自定义
38
41
  * @en_US Subtitle, support template customization
39
42
  */
40
- this.subTitle = input(...(ngDevMode ? [undefined, { debugName: "subTitle" }] : []));
43
+ this.subTitle = input(/* @ts-ignore */
44
+ ...(ngDevMode ? [undefined, { debugName: "subTitle" }] : /* istanbul ignore next */ []));
41
45
  }
42
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: XResultProperty, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
43
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.1.1", type: XResultProperty, isStandalone: true, selector: "x-result-property", inputs: { status: { classPropertyName: "status", publicName: "status", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, subTitle: { classPropertyName: "subTitle", publicName: "subTitle", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
46
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: XResultProperty, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
47
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.1", type: XResultProperty, isStandalone: true, selector: "x-result-property", inputs: { status: { classPropertyName: "status", publicName: "status", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, subTitle: { classPropertyName: "subTitle", publicName: "subTitle", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
44
48
  }
45
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: XResultProperty, decorators: [{
49
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: XResultProperty, decorators: [{
46
50
  type: Component,
47
51
  args: [{ selector: `${XResultPrefix}-property`, template: '' }]
48
52
  }], propDecorators: { status: [{ type: i0.Input, args: [{ isSignal: true, alias: "status", required: false }] }], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], subTitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "subTitle", required: false }] }] } });
@@ -52,25 +56,27 @@ class XResultComponent extends XResultProperty {
52
56
  super(...arguments);
53
57
  this.strIcon = computed(() => {
54
58
  return this.icon();
55
- }, ...(ngDevMode ? [{ debugName: "strIcon" }] : []));
59
+ }, /* @ts-ignore */
60
+ ...(ngDevMode ? [{ debugName: "strIcon" }] : /* istanbul ignore next */ []));
56
61
  this.classMap = computed(() => ({
57
62
  [`${XResultPrefix}-${this.status()}`]: !XIsEmpty(this.status())
58
- }), ...(ngDevMode ? [{ debugName: "classMap" }] : []));
63
+ }), /* @ts-ignore */
64
+ ...(ngDevMode ? [{ debugName: "classMap" }] : /* istanbul ignore next */ []));
59
65
  }
60
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: XResultComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
61
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.1", type: XResultComponent, isStandalone: true, selector: "x-result", usesInheritance: true, ngImport: i0, template: "<div #result class=\"x-result\" [ngClass]=\"classMap()\">\r\n <div class=\"x-result-icon\">\r\n @if (icon()) {\r\n <ng-container *xOutlet=\"icon()\">\r\n <x-icon [type]=\"strIcon()\"></x-icon>\r\n </ng-container>\r\n } @else {\r\n @switch (status()) {\r\n @case ('success') {\r\n <x-icon type=\"adf-check-circle\"></x-icon>\r\n }\r\n @case ('info') {\r\n <x-icon type=\"adf-info-circle\"></x-icon>\r\n }\r\n @case ('warning') {\r\n <x-icon type=\"adf-warning\"></x-icon>\r\n }\r\n @case ('error') {\r\n <x-icon type=\"adf-close-circle\"></x-icon>\r\n }\r\n @case ('403') {\r\n <x-icon type=\"fto-lock\"></x-icon>\r\n }\r\n @case ('404') {\r\n <x-icon type=\"fto-code\"></x-icon>\r\n }\r\n @case ('500') {\r\n <x-icon type=\"adf-close-circle\"></x-icon>\r\n }\r\n }\r\n }\r\n </div>\r\n\r\n <div class=\"x-result-title\">\r\n <ng-container *xOutlet=\"title()\">{{ title() }}</ng-container>\r\n </div>\r\n <div class=\"x-result-subTitle\">\r\n <ng-container *xOutlet=\"subTitle()\">{{ subTitle() }}</ng-container>\r\n </div>\r\n <div class=\"x-result-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n", styles: [".x-result{margin:0;padding:0}.x-result{display:flex;flex-direction:column;align-items:center;padding:3rem 2rem}.x-result-icon{font-size:calc(var(--x-font-size) * 5);margin-bottom:var(--x-font-size-large)}.x-result-title{font-size:var(--x-font-size-large);line-height:calc(var(--x-font-size-large) * 1.5)}.x-result-subTitle{color:var(--x-text-400)}.x-result-content{margin-top:var(--x-font-size-large)}.x-result-success .x-result-icon{color:var(--x-success)}.x-result-info .x-result-icon{color:var(--x-info)}.x-result-warning .x-result-icon{color:var(--x-warning)}.x-result-error .x-result-icon{color:var(--x-danger)}.x-result-403 .x-result-icon,.x-result-404 .x-result-icon{color:var(--x-text-400)}.x-result-500 .x-result-icon{color:var(--x-danger)}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: XIconComponent, selector: "x-icon" }, { kind: "directive", type: XOutletDirective, selector: "[xOutlet]", inputs: ["xOutletContext", "xOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
66
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: XResultComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
67
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.1", type: XResultComponent, isStandalone: true, selector: "x-result", usesInheritance: true, ngImport: i0, template: "<div #result class=\"x-result\" [ngClass]=\"classMap()\">\r\n <div class=\"x-result-icon\">\r\n @if (icon()) {\r\n <ng-container *xOutlet=\"icon()\">\r\n <x-icon [type]=\"strIcon()\"></x-icon>\r\n </ng-container>\r\n } @else {\r\n @switch (status()) {\r\n @case ('success') {\r\n <x-icon type=\"adf-check-circle\"></x-icon>\r\n }\r\n @case ('info') {\r\n <x-icon type=\"adf-info-circle\"></x-icon>\r\n }\r\n @case ('warning') {\r\n <x-icon type=\"adf-warning\"></x-icon>\r\n }\r\n @case ('error') {\r\n <x-icon type=\"adf-close-circle\"></x-icon>\r\n }\r\n @case ('403') {\r\n <x-icon type=\"fto-lock\"></x-icon>\r\n }\r\n @case ('404') {\r\n <x-icon type=\"fto-code\"></x-icon>\r\n }\r\n @case ('500') {\r\n <x-icon type=\"adf-close-circle\"></x-icon>\r\n }\r\n }\r\n }\r\n </div>\r\n\r\n <div class=\"x-result-title\">\r\n <ng-container *xOutlet=\"title()\">{{ title() }}</ng-container>\r\n </div>\r\n <div class=\"x-result-subTitle\">\r\n <ng-container *xOutlet=\"subTitle()\">{{ subTitle() }}</ng-container>\r\n </div>\r\n <div class=\"x-result-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n", styles: [".x-result{margin:0;padding:0}.x-result{display:flex;flex-direction:column;align-items:center;padding:3rem 2rem}.x-result-icon{font-size:calc(var(--x-font-size) * 5);margin-bottom:var(--x-font-size-large)}.x-result-title{font-size:var(--x-font-size-large);line-height:calc(var(--x-font-size-large) * 1.5)}.x-result-subTitle{color:var(--x-text-400)}.x-result-content{margin-top:var(--x-font-size-large)}.x-result-success .x-result-icon{color:var(--x-success)}.x-result-info .x-result-icon{color:var(--x-info)}.x-result-warning .x-result-icon{color:var(--x-warning)}.x-result-error .x-result-icon{color:var(--x-danger)}.x-result-403 .x-result-icon,.x-result-404 .x-result-icon{color:var(--x-text-400)}.x-result-500 .x-result-icon{color:var(--x-danger)}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: XIconComponent, selector: "x-icon" }, { kind: "directive", type: XOutletDirective, selector: "[xOutlet]", inputs: ["xOutletContext", "xOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
62
68
  }
63
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: XResultComponent, decorators: [{
69
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: XResultComponent, decorators: [{
64
70
  type: Component,
65
71
  args: [{ selector: `${XResultPrefix}`, imports: [NgClass, XIconComponent, XOutletDirective], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div #result class=\"x-result\" [ngClass]=\"classMap()\">\r\n <div class=\"x-result-icon\">\r\n @if (icon()) {\r\n <ng-container *xOutlet=\"icon()\">\r\n <x-icon [type]=\"strIcon()\"></x-icon>\r\n </ng-container>\r\n } @else {\r\n @switch (status()) {\r\n @case ('success') {\r\n <x-icon type=\"adf-check-circle\"></x-icon>\r\n }\r\n @case ('info') {\r\n <x-icon type=\"adf-info-circle\"></x-icon>\r\n }\r\n @case ('warning') {\r\n <x-icon type=\"adf-warning\"></x-icon>\r\n }\r\n @case ('error') {\r\n <x-icon type=\"adf-close-circle\"></x-icon>\r\n }\r\n @case ('403') {\r\n <x-icon type=\"fto-lock\"></x-icon>\r\n }\r\n @case ('404') {\r\n <x-icon type=\"fto-code\"></x-icon>\r\n }\r\n @case ('500') {\r\n <x-icon type=\"adf-close-circle\"></x-icon>\r\n }\r\n }\r\n }\r\n </div>\r\n\r\n <div class=\"x-result-title\">\r\n <ng-container *xOutlet=\"title()\">{{ title() }}</ng-container>\r\n </div>\r\n <div class=\"x-result-subTitle\">\r\n <ng-container *xOutlet=\"subTitle()\">{{ subTitle() }}</ng-container>\r\n </div>\r\n <div class=\"x-result-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n", styles: [".x-result{margin:0;padding:0}.x-result{display:flex;flex-direction:column;align-items:center;padding:3rem 2rem}.x-result-icon{font-size:calc(var(--x-font-size) * 5);margin-bottom:var(--x-font-size-large)}.x-result-title{font-size:var(--x-font-size-large);line-height:calc(var(--x-font-size-large) * 1.5)}.x-result-subTitle{color:var(--x-text-400)}.x-result-content{margin-top:var(--x-font-size-large)}.x-result-success .x-result-icon{color:var(--x-success)}.x-result-info .x-result-icon{color:var(--x-info)}.x-result-warning .x-result-icon{color:var(--x-warning)}.x-result-error .x-result-icon{color:var(--x-danger)}.x-result-403 .x-result-icon,.x-result-404 .x-result-icon{color:var(--x-text-400)}.x-result-500 .x-result-icon{color:var(--x-danger)}\n"] }]
66
72
  }] });
67
73
 
68
74
  class XResultModule {
69
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: XResultModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
70
- /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.1.1", ngImport: i0, type: XResultModule, imports: [XResultComponent], exports: [XResultComponent] }); }
71
- /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: XResultModule, imports: [XResultComponent] }); }
75
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: XResultModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
76
+ /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.1", ngImport: i0, type: XResultModule, imports: [XResultComponent], exports: [XResultComponent] }); }
77
+ /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: XResultModule, imports: [XResultComponent] }); }
72
78
  }
73
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: XResultModule, decorators: [{
79
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: XResultModule, decorators: [{
74
80
  type: NgModule,
75
81
  args: [{
76
82
  exports: [XResultComponent],
@@ -1 +1 @@
1
- {"version":3,"file":"ng-nest-ui-result.mjs","sources":["../../../../lib/ng-nest/ui/result/result.property.ts","../../../../lib/ng-nest/ui/result/result.component.ts","../../../../lib/ng-nest/ui/result/result.component.html","../../../../lib/ng-nest/ui/result/result.module.ts","../../../../lib/ng-nest/ui/result/ng-nest-ui-result.ts"],"sourcesContent":["import { XPropertyFunction } from '@ng-nest/ui/core';\r\nimport { Component, input } from '@angular/core';\r\nimport type { XStatus, XTemplate } from '@ng-nest/ui/core';\r\n\r\n/**\r\n * Result\r\n * @selector x-result\r\n * @decorator component\r\n */\r\nexport const XResultPrefix = 'x-result';\r\nconst X_RESULT_CONFIG_NAME = 'result';\r\n\r\n/**\r\n * Result Property\r\n */\r\n@Component({ selector: `${XResultPrefix}-property`, template: '' })\r\nexport class XResultProperty extends XPropertyFunction(X_RESULT_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 状态\r\n * @en_US Status\r\n */\r\n readonly status = input<XResultStatus>('info');\r\n /**\r\n * @zh_CN 标题,支持模板自定义\r\n * @en_US Title, support template customization\r\n */\r\n readonly title = input<XTemplate>();\r\n /**\r\n * @zh_CN 图标,支持模板自定义\r\n * @en_US Icon, support template customization\r\n */\r\n readonly icon = input<XTemplate>();\r\n /**\r\n * @zh_CN 小标题,支持模板自定义\r\n * @en_US Subtitle, support template customization\r\n */\r\n readonly subTitle = input<XTemplate>();\r\n}\r\n\r\n/**\r\n * @zh_CN 结果状态\r\n * @en_US Result status\r\n */\r\nexport type XResultStatus = XStatus | '403' | '404' | '500' | 'custom';\r\n","import { Component, ViewEncapsulation, ChangeDetectionStrategy, computed } from '@angular/core';\r\nimport { XResultPrefix, XResultProperty } from './result.property';\r\nimport { XIsEmpty } from '@ng-nest/ui/core';\r\nimport { NgClass } from '@angular/common';\r\nimport { XIconComponent } from '@ng-nest/ui/icon';\r\nimport { XOutletDirective } from '@ng-nest/ui/outlet';\r\n\r\n@Component({\r\n selector: `${XResultPrefix}`,\r\n imports: [NgClass, XIconComponent, XOutletDirective],\r\n templateUrl: './result.component.html',\r\n styleUrls: ['./result.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XResultComponent extends XResultProperty {\r\n strIcon = computed(() => {\r\n return this.icon() as string;\r\n });\r\n\r\n classMap = computed(() => ({\r\n [`${XResultPrefix}-${this.status()}`]: !XIsEmpty(this.status())\r\n }));\r\n}\r\n","<div #result class=\"x-result\" [ngClass]=\"classMap()\">\r\n <div class=\"x-result-icon\">\r\n @if (icon()) {\r\n <ng-container *xOutlet=\"icon()\">\r\n <x-icon [type]=\"strIcon()\"></x-icon>\r\n </ng-container>\r\n } @else {\r\n @switch (status()) {\r\n @case ('success') {\r\n <x-icon type=\"adf-check-circle\"></x-icon>\r\n }\r\n @case ('info') {\r\n <x-icon type=\"adf-info-circle\"></x-icon>\r\n }\r\n @case ('warning') {\r\n <x-icon type=\"adf-warning\"></x-icon>\r\n }\r\n @case ('error') {\r\n <x-icon type=\"adf-close-circle\"></x-icon>\r\n }\r\n @case ('403') {\r\n <x-icon type=\"fto-lock\"></x-icon>\r\n }\r\n @case ('404') {\r\n <x-icon type=\"fto-code\"></x-icon>\r\n }\r\n @case ('500') {\r\n <x-icon type=\"adf-close-circle\"></x-icon>\r\n }\r\n }\r\n }\r\n </div>\r\n\r\n <div class=\"x-result-title\">\r\n <ng-container *xOutlet=\"title()\">{{ title() }}</ng-container>\r\n </div>\r\n <div class=\"x-result-subTitle\">\r\n <ng-container *xOutlet=\"subTitle()\">{{ subTitle() }}</ng-container>\r\n </div>\r\n <div class=\"x-result-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { XResultComponent } from './result.component';\r\n\r\n@NgModule({\r\n exports: [XResultComponent],\r\n imports: [XResultComponent]\r\n})\r\nexport class XResultModule {}\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-result.mjs","sources":["../../../../lib/ng-nest/ui/result/result.property.ts","../../../../lib/ng-nest/ui/result/result.component.ts","../../../../lib/ng-nest/ui/result/result.component.html","../../../../lib/ng-nest/ui/result/result.module.ts","../../../../lib/ng-nest/ui/result/ng-nest-ui-result.ts"],"sourcesContent":["import { XPropertyFunction } from '@ng-nest/ui/core';\r\nimport { Component, input } from '@angular/core';\r\nimport type { XStatus, XTemplate } from '@ng-nest/ui/core';\r\n\r\n/**\r\n * Result\r\n * @selector x-result\r\n * @decorator component\r\n */\r\nexport const XResultPrefix = 'x-result';\r\nconst X_RESULT_CONFIG_NAME = 'result';\r\n\r\n/**\r\n * Result Property\r\n */\r\n@Component({ selector: `${XResultPrefix}-property`, template: '' })\r\nexport class XResultProperty extends XPropertyFunction(X_RESULT_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 状态\r\n * @en_US Status\r\n */\r\n readonly status = input<XResultStatus>('info');\r\n /**\r\n * @zh_CN 标题,支持模板自定义\r\n * @en_US Title, support template customization\r\n */\r\n readonly title = input<XTemplate>();\r\n /**\r\n * @zh_CN 图标,支持模板自定义\r\n * @en_US Icon, support template customization\r\n */\r\n readonly icon = input<XTemplate>();\r\n /**\r\n * @zh_CN 小标题,支持模板自定义\r\n * @en_US Subtitle, support template customization\r\n */\r\n readonly subTitle = input<XTemplate>();\r\n}\r\n\r\n/**\r\n * @zh_CN 结果状态\r\n * @en_US Result status\r\n */\r\nexport type XResultStatus = XStatus | '403' | '404' | '500' | 'custom';\r\n","import { Component, ViewEncapsulation, ChangeDetectionStrategy, computed } from '@angular/core';\r\nimport { XResultPrefix, XResultProperty } from './result.property';\r\nimport { XIsEmpty } from '@ng-nest/ui/core';\r\nimport { NgClass } from '@angular/common';\r\nimport { XIconComponent } from '@ng-nest/ui/icon';\r\nimport { XOutletDirective } from '@ng-nest/ui/outlet';\r\n\r\n@Component({\r\n selector: `${XResultPrefix}`,\r\n imports: [NgClass, XIconComponent, XOutletDirective],\r\n templateUrl: './result.component.html',\r\n styleUrls: ['./result.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XResultComponent extends XResultProperty {\r\n strIcon = computed(() => {\r\n return this.icon() as string;\r\n });\r\n\r\n classMap = computed(() => ({\r\n [`${XResultPrefix}-${this.status()}`]: !XIsEmpty(this.status())\r\n }));\r\n}\r\n","<div #result class=\"x-result\" [ngClass]=\"classMap()\">\r\n <div class=\"x-result-icon\">\r\n @if (icon()) {\r\n <ng-container *xOutlet=\"icon()\">\r\n <x-icon [type]=\"strIcon()\"></x-icon>\r\n </ng-container>\r\n } @else {\r\n @switch (status()) {\r\n @case ('success') {\r\n <x-icon type=\"adf-check-circle\"></x-icon>\r\n }\r\n @case ('info') {\r\n <x-icon type=\"adf-info-circle\"></x-icon>\r\n }\r\n @case ('warning') {\r\n <x-icon type=\"adf-warning\"></x-icon>\r\n }\r\n @case ('error') {\r\n <x-icon type=\"adf-close-circle\"></x-icon>\r\n }\r\n @case ('403') {\r\n <x-icon type=\"fto-lock\"></x-icon>\r\n }\r\n @case ('404') {\r\n <x-icon type=\"fto-code\"></x-icon>\r\n }\r\n @case ('500') {\r\n <x-icon type=\"adf-close-circle\"></x-icon>\r\n }\r\n }\r\n }\r\n </div>\r\n\r\n <div class=\"x-result-title\">\r\n <ng-container *xOutlet=\"title()\">{{ title() }}</ng-container>\r\n </div>\r\n <div class=\"x-result-subTitle\">\r\n <ng-container *xOutlet=\"subTitle()\">{{ subTitle() }}</ng-container>\r\n </div>\r\n <div class=\"x-result-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { XResultComponent } from './result.component';\r\n\r\n@NgModule({\r\n exports: [XResultComponent],\r\n imports: [XResultComponent]\r\n})\r\nexport class XResultModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -21,22 +21,23 @@ class XRippleProperty extends XPropertyFunction(X_RIPPLE_CONFIG_NAME) {
21
21
  * @zh_CN 类型
22
22
  * @en_US Types of
23
23
  */
24
- this.type = input(this.config?.type ?? 'initial', ...(ngDevMode ? [{ debugName: "type" }] : []));
24
+ this.type = input(this.config?.type ?? 'initial', /* @ts-ignore */
25
+ ...(ngDevMode ? [{ debugName: "type" }] : /* istanbul ignore next */ []));
25
26
  /**
26
27
  * @zh_CN 执行时间
27
28
  * @en_US The execution time
28
29
  */
29
- this.duration = input(500, { ...(ngDevMode ? { debugName: "duration" } : {}), transform: XToNumber });
30
+ this.duration = input(500, { ...(ngDevMode ? { debugName: "duration" } : /* istanbul ignore next */ {}), transform: XToNumber });
30
31
  /**
31
32
  * @zh_CN 禁用
32
33
  * @en_US Disable
33
34
  */
34
- this.disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : {}), transform: XToBoolean });
35
+ this.disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: XToBoolean });
35
36
  }
36
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: XRippleProperty, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
37
- /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.1", type: XRippleProperty, isStandalone: true, selector: "[x-ripple]", inputs: { type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, duration: { classPropertyName: "duration", publicName: "duration", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0 }); }
37
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: XRippleProperty, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
38
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.1", type: XRippleProperty, isStandalone: true, selector: "[x-ripple]", inputs: { type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, duration: { classPropertyName: "duration", publicName: "duration", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0 }); }
38
39
  }
39
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: XRippleProperty, decorators: [{
40
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: XRippleProperty, decorators: [{
40
41
  type: Directive,
41
42
  args: [{ selector: '[x-ripple]' }]
42
43
  }], propDecorators: { type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: false }] }], duration: [{ type: i0.Input, args: [{ isSignal: true, alias: "duration", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }] } });
@@ -119,10 +120,10 @@ class XRippleDirective extends XRippleProperty {
119
120
  enforceStyleRecalculation(element) {
120
121
  XComputed(element).getPropertyValue('opacity');
121
122
  }
122
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: XRippleDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
123
- /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.1", type: XRippleDirective, isStandalone: true, selector: "[x-ripple]", host: { properties: { "class": "this.className" } }, usesInheritance: true, ngImport: i0 }); }
123
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: XRippleDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
124
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.1", type: XRippleDirective, isStandalone: true, selector: "[x-ripple]", host: { properties: { "class": "this.className" } }, usesInheritance: true, ngImport: i0 }); }
124
125
  }
125
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: XRippleDirective, decorators: [{
126
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: XRippleDirective, decorators: [{
126
127
  type: Directive,
127
128
  args: [{
128
129
  selector: `[${XRipplePrefix}]`
@@ -133,11 +134,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImpor
133
134
  }] } });
134
135
 
135
136
  class XRippleModule {
136
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: XRippleModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
137
- /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.1.1", ngImport: i0, type: XRippleModule, imports: [XRippleDirective], exports: [XRippleDirective] }); }
138
- /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: XRippleModule }); }
137
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: XRippleModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
138
+ /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.1", ngImport: i0, type: XRippleModule, imports: [XRippleDirective], exports: [XRippleDirective] }); }
139
+ /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: XRippleModule }); }
139
140
  }
140
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: XRippleModule, decorators: [{
141
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: XRippleModule, decorators: [{
141
142
  type: NgModule,
142
143
  args: [{
143
144
  imports: [XRippleDirective],
@@ -1 +1 @@
1
- {"version":3,"file":"ng-nest-ui-ripple.mjs","sources":["../../../../lib/ng-nest/ui/ripple/ripple.property.ts","../../../../lib/ng-nest/ui/ripple/ripple.directive.ts","../../../../lib/ng-nest/ui/ripple/ripple.module.ts","../../../../lib/ng-nest/ui/ripple/ng-nest-ui-ripple.ts"],"sourcesContent":["import { XPropertyFunction, XToBoolean, XToNumber } from '@ng-nest/ui/core';\r\nimport { Directive, input } from '@angular/core';\r\nimport type { XBoolean, XNumber, XType } from '@ng-nest/ui/core';\r\n\r\n/**\r\n * Ripple\r\n * @selector x-ripple\r\n * @decorator directive\r\n */\r\nexport const XRipplePrefix = 'x-ripple';\r\nconst X_RIPPLE_CONFIG_NAME = 'ripple';\r\n\r\n/**\r\n * Ripple Property\r\n */\r\n@Directive({ selector: '[x-ripple]' })\r\nexport class XRippleProperty extends XPropertyFunction(X_RIPPLE_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 类型\r\n * @en_US Types of\r\n */\r\n readonly type = input<XRippleType>(this.config?.type ?? 'initial');\r\n /**\r\n * @zh_CN 执行时间\r\n * @en_US The execution time\r\n */\r\n readonly duration = input<number, XNumber>(500, {transform: XToNumber});\r\n /**\r\n * @zh_CN 禁用\r\n * @en_US Disable\r\n */\r\n readonly disabled = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n}\r\n\r\n/**\r\n * @zh_CN 波纹类型\r\n * @en_US Ripple type\r\n */\r\nexport type XRippleType = XType;\r\n","import {\r\n Renderer2,\r\n ElementRef,\r\n Directive,\r\n OnDestroy,\r\n inject,\r\n HostBinding,\r\n ChangeDetectorRef,\r\n effect\r\n} from '@angular/core';\r\nimport { delay, finalize, fromEvent, of, Subject, Subscription, takeUntil, tap } from 'rxjs';\r\nimport { XRipplePrefix, XRippleProperty } from './ripple.property';\r\nimport { XComputed } from '@ng-nest/ui/core';\r\nimport { DOCUMENT } from '@angular/common';\r\n\r\n@Directive({\r\n selector: `[${XRipplePrefix}]`\r\n})\r\nexport class XRippleDirective extends XRippleProperty implements OnDestroy {\r\n @HostBinding('class') get className() {\r\n return `${XRipplePrefix} ${XRipplePrefix}-${this.type()}`;\r\n }\r\n\r\n private unsub = new Subject<void>();\r\n private renderer = inject(Renderer2);\r\n private elementRef = inject(ElementRef);\r\n private cdr = inject(ChangeDetectorRef);\r\n private document = inject(DOCUMENT);\r\n downEvent: Subscription | null = null;\r\n upEvent: Subscription | null = null;\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n if (this.disabled()) {\r\n this.downEvent?.unsubscribe();\r\n this.upEvent?.unsubscribe();\r\n } else {\r\n this.downEvent?.unsubscribe();\r\n this.upEvent?.unsubscribe();\r\n this.setEvent();\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.unsub.next();\r\n this.unsub.complete();\r\n }\r\n\r\n setEvent() {\r\n this.downEvent = fromEvent<MouseEvent>(this.elementRef.nativeElement, 'mousedown')\r\n .pipe(takeUntil(this.unsub))\r\n .subscribe((event) => {\r\n const eleRect = this.elementRef.nativeElement.getBoundingClientRect();\r\n const radius = this.distanceToFurthestCorner(event.x, event.y, eleRect);\r\n const offsetX = event.x - eleRect.left;\r\n const offsetY = event.y - eleRect.top;\r\n const ripple = this.renderer.createElement('div');\r\n this.renderer.addClass(ripple, 'x-ripple-element');\r\n ripple.style.left = `${offsetX - radius}px`;\r\n ripple.style.top = `${offsetY - radius}px`;\r\n ripple.style.height = `${radius * 2}px`;\r\n ripple.style.width = `${radius * 2}px`;\r\n ripple.style.transitionDuration = `${this.duration()}ms`;\r\n this.renderer.appendChild(this.elementRef.nativeElement, ripple);\r\n this.enforceStyleRecalculation(ripple);\r\n ripple.style.transform = 'scale(1)';\r\n ripple.style.opacity = '0.3';\r\n const downTime = new Date().getTime();\r\n\r\n let upEvent = fromEvent<MouseEvent>(this.document.documentElement, 'mouseup')\r\n .pipe(takeUntil(this.unsub))\r\n .subscribe(() => {\r\n const upTime = new Date().getTime();\r\n of(true)\r\n .pipe(\r\n delay(upTime - downTime > this.duration() ? 0 : this.duration() - (upTime - downTime)),\r\n tap(() => {\r\n if (this.elementRef.nativeElement.contains(ripple)) {\r\n this.renderer.removeChild(this.elementRef.nativeElement, ripple);\r\n }\r\n // TODO: use zoneless, renderer removeChild will not take effect immediately\r\n this.cdr.markForCheck();\r\n upEvent.unsubscribe();\r\n }),\r\n finalize(() => {\r\n if (this.elementRef.nativeElement.contains(ripple)) {\r\n this.renderer.removeChild(this.elementRef.nativeElement, ripple);\r\n }\r\n }),\r\n takeUntil(this.unsub)\r\n )\r\n .subscribe();\r\n });\r\n });\r\n }\r\n\r\n distanceToFurthestCorner(x: number, y: number, rect: DOMRect) {\r\n const distX = Math.max(Math.abs(x - rect.left), Math.abs(x - rect.right));\r\n const distY = Math.max(Math.abs(y - rect.top), Math.abs(y - rect.bottom));\r\n return Math.sqrt(distX * distX + distY * distY);\r\n }\r\n\r\n enforceStyleRecalculation(element: HTMLElement) {\r\n XComputed(element).getPropertyValue('opacity');\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { XRippleDirective } from './ripple.directive';\r\n\r\n@NgModule({\r\n imports: [XRippleDirective],\r\n exports: [XRippleDirective]\r\n})\r\nexport class XRippleModule {}\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-ripple.mjs","sources":["../../../../lib/ng-nest/ui/ripple/ripple.property.ts","../../../../lib/ng-nest/ui/ripple/ripple.directive.ts","../../../../lib/ng-nest/ui/ripple/ripple.module.ts","../../../../lib/ng-nest/ui/ripple/ng-nest-ui-ripple.ts"],"sourcesContent":["import { XPropertyFunction, XToBoolean, XToNumber } from '@ng-nest/ui/core';\r\nimport { Directive, input } from '@angular/core';\r\nimport type { XBoolean, XNumber, XType } from '@ng-nest/ui/core';\r\n\r\n/**\r\n * Ripple\r\n * @selector x-ripple\r\n * @decorator directive\r\n */\r\nexport const XRipplePrefix = 'x-ripple';\r\nconst X_RIPPLE_CONFIG_NAME = 'ripple';\r\n\r\n/**\r\n * Ripple Property\r\n */\r\n@Directive({ selector: '[x-ripple]' })\r\nexport class XRippleProperty extends XPropertyFunction(X_RIPPLE_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 类型\r\n * @en_US Types of\r\n */\r\n readonly type = input<XRippleType>(this.config?.type ?? 'initial');\r\n /**\r\n * @zh_CN 执行时间\r\n * @en_US The execution time\r\n */\r\n readonly duration = input<number, XNumber>(500, {transform: XToNumber});\r\n /**\r\n * @zh_CN 禁用\r\n * @en_US Disable\r\n */\r\n readonly disabled = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n}\r\n\r\n/**\r\n * @zh_CN 波纹类型\r\n * @en_US Ripple type\r\n */\r\nexport type XRippleType = XType;\r\n","import {\r\n Renderer2,\r\n ElementRef,\r\n Directive,\r\n OnDestroy,\r\n inject,\r\n HostBinding,\r\n ChangeDetectorRef,\r\n effect\r\n} from '@angular/core';\r\nimport { delay, finalize, fromEvent, of, Subject, Subscription, takeUntil, tap } from 'rxjs';\r\nimport { XRipplePrefix, XRippleProperty } from './ripple.property';\r\nimport { XComputed } from '@ng-nest/ui/core';\r\nimport { DOCUMENT } from '@angular/common';\r\n\r\n@Directive({\r\n selector: `[${XRipplePrefix}]`\r\n})\r\nexport class XRippleDirective extends XRippleProperty implements OnDestroy {\r\n @HostBinding('class') get className() {\r\n return `${XRipplePrefix} ${XRipplePrefix}-${this.type()}`;\r\n }\r\n\r\n private unsub = new Subject<void>();\r\n private renderer = inject(Renderer2);\r\n private elementRef = inject(ElementRef);\r\n private cdr = inject(ChangeDetectorRef);\r\n private document = inject(DOCUMENT);\r\n downEvent: Subscription | null = null;\r\n upEvent: Subscription | null = null;\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n if (this.disabled()) {\r\n this.downEvent?.unsubscribe();\r\n this.upEvent?.unsubscribe();\r\n } else {\r\n this.downEvent?.unsubscribe();\r\n this.upEvent?.unsubscribe();\r\n this.setEvent();\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.unsub.next();\r\n this.unsub.complete();\r\n }\r\n\r\n setEvent() {\r\n this.downEvent = fromEvent<MouseEvent>(this.elementRef.nativeElement, 'mousedown')\r\n .pipe(takeUntil(this.unsub))\r\n .subscribe((event) => {\r\n const eleRect = this.elementRef.nativeElement.getBoundingClientRect();\r\n const radius = this.distanceToFurthestCorner(event.x, event.y, eleRect);\r\n const offsetX = event.x - eleRect.left;\r\n const offsetY = event.y - eleRect.top;\r\n const ripple = this.renderer.createElement('div');\r\n this.renderer.addClass(ripple, 'x-ripple-element');\r\n ripple.style.left = `${offsetX - radius}px`;\r\n ripple.style.top = `${offsetY - radius}px`;\r\n ripple.style.height = `${radius * 2}px`;\r\n ripple.style.width = `${radius * 2}px`;\r\n ripple.style.transitionDuration = `${this.duration()}ms`;\r\n this.renderer.appendChild(this.elementRef.nativeElement, ripple);\r\n this.enforceStyleRecalculation(ripple);\r\n ripple.style.transform = 'scale(1)';\r\n ripple.style.opacity = '0.3';\r\n const downTime = new Date().getTime();\r\n\r\n let upEvent = fromEvent<MouseEvent>(this.document.documentElement, 'mouseup')\r\n .pipe(takeUntil(this.unsub))\r\n .subscribe(() => {\r\n const upTime = new Date().getTime();\r\n of(true)\r\n .pipe(\r\n delay(upTime - downTime > this.duration() ? 0 : this.duration() - (upTime - downTime)),\r\n tap(() => {\r\n if (this.elementRef.nativeElement.contains(ripple)) {\r\n this.renderer.removeChild(this.elementRef.nativeElement, ripple);\r\n }\r\n // TODO: use zoneless, renderer removeChild will not take effect immediately\r\n this.cdr.markForCheck();\r\n upEvent.unsubscribe();\r\n }),\r\n finalize(() => {\r\n if (this.elementRef.nativeElement.contains(ripple)) {\r\n this.renderer.removeChild(this.elementRef.nativeElement, ripple);\r\n }\r\n }),\r\n takeUntil(this.unsub)\r\n )\r\n .subscribe();\r\n });\r\n });\r\n }\r\n\r\n distanceToFurthestCorner(x: number, y: number, rect: DOMRect) {\r\n const distX = Math.max(Math.abs(x - rect.left), Math.abs(x - rect.right));\r\n const distY = Math.max(Math.abs(y - rect.top), Math.abs(y - rect.bottom));\r\n return Math.sqrt(distX * distX + distY * distY);\r\n }\r\n\r\n enforceStyleRecalculation(element: HTMLElement) {\r\n XComputed(element).getPropertyValue('opacity');\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { XRippleDirective } from './ripple.directive';\r\n\r\n@NgModule({\r\n imports: [XRippleDirective],\r\n exports: [XRippleDirective]\r\n})\r\nexport class XRippleModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;AAIA;;;;AAIG;AACI,MAAM,aAAa,GAAG;AAC7B,MAAM,oBAAoB,GAAG,QAAQ;AAErC;;AAEG;MAEU,eAAgB,SAAQ,iBAAiB,CAAC,oBAAoB,CAAC,CAAA;AAD5E,IAAA,WAAA,GAAA;;AAEE;;;AAGG;QACM,IAAA,CAAA,IAAI,GAAG,KAAK,CAAc,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,SAAS;iFAAC;AAClE;;;AAGG;QACM,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAkB,GAAG,gFAAG,SAAS,EAAE,SAAS,EAAA,CAAE;AACvE;;;AAGG;QACM,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAoB,KAAK,gFAAI,SAAS,EAAE,UAAU,EAAA,CAAG;AAC/E,IAAA;iIAhBY,eAAe,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;qHAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B,SAAS;mBAAC,EAAE,QAAQ,EAAE,YAAY,EAAE;;;ACG/B,MAAO,gBAAiB,SAAQ,eAAe,CAAA;AACnD,IAAA,IAA0B,SAAS,GAAA;QACjC,OAAO,CAAA,EAAG,aAAa,CAAA,CAAA,EAAI,aAAa,CAAA,CAAA,EAAI,IAAI,CAAC,IAAI,EAAE,CAAA,CAAE;IAC3D;AAUA,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;AATD,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,OAAO,EAAQ;AAC3B,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;AAC5B,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC/B,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QACnC,IAAA,CAAA,SAAS,GAAwB,IAAI;QACrC,IAAA,CAAA,OAAO,GAAwB,IAAI;QAIjC,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACnB,gBAAA,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE;AAC7B,gBAAA,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE;YAC7B;iBAAO;AACL,gBAAA,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE;AAC7B,gBAAA,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE;gBAC3B,IAAI,CAAC,QAAQ,EAAE;YACjB;AACF,QAAA,CAAC,CAAC;IACJ;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;AACjB,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;IACvB;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAa,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,WAAW;AAC9E,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;AAC1B,aAAA,SAAS,CAAC,CAAC,KAAK,KAAI;YACnB,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,qBAAqB,EAAE;AACrE,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC;YACvE,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI;YACtC,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG;YACrC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;YACjD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC;YAClD,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,OAAO,GAAG,MAAM,CAAA,EAAA,CAAI;YAC3C,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,OAAO,GAAG,MAAM,CAAA,EAAA,CAAI;YAC1C,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,CAAA,EAAA,CAAI;YACvC,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,MAAM,GAAG,CAAC,CAAA,EAAA,CAAI;YACtC,MAAM,CAAC,KAAK,CAAC,kBAAkB,GAAG,CAAA,EAAG,IAAI,CAAC,QAAQ,EAAE,CAAA,EAAA,CAAI;AACxD,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,MAAM,CAAC;AAChE,YAAA,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC;AACtC,YAAA,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,UAAU;AACnC,YAAA,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK;YAC5B,MAAM,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE;YAErC,IAAI,OAAO,GAAG,SAAS,CAAa,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,SAAS;AACzE,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;iBAC1B,SAAS,CAAC,MAAK;gBACd,MAAM,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE;gBACnC,EAAE,CAAC,IAAI;AACJ,qBAAA,IAAI,CACH,KAAK,CAAC,MAAM,GAAG,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,MAAM,GAAG,QAAQ,CAAC,CAAC,EACtF,GAAG,CAAC,MAAK;oBACP,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AAClD,wBAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,MAAM,CAAC;oBAClE;;AAEA,oBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;oBACvB,OAAO,CAAC,WAAW,EAAE;AACvB,gBAAA,CAAC,CAAC,EACF,QAAQ,CAAC,MAAK;oBACZ,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AAClD,wBAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,MAAM,CAAC;oBAClE;gBACF,CAAC,CAAC,EACF,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;AAEtB,qBAAA,SAAS,EAAE;AAChB,YAAA,CAAC,CAAC;AACN,QAAA,CAAC,CAAC;IACN;AAEA,IAAA,wBAAwB,CAAC,CAAS,EAAE,CAAS,EAAE,IAAa,EAAA;AAC1D,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AACzE,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;AACzE,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;IACjD;AAEA,IAAA,yBAAyB,CAAC,OAAoB,EAAA;QAC5C,SAAS,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,SAAS,CAAC;IAChD;iIAxFW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;qHAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;oBACT,QAAQ,EAAE,CAAA,CAAA,EAAI,aAAa,CAAA,CAAA;AAC5B,iBAAA;;sBAEE,WAAW;uBAAC,OAAO;;;MCZT,aAAa,CAAA;iIAAb,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;kIAAb,aAAa,EAAA,OAAA,EAAA,CAHd,gBAAgB,CAAA,EAAA,OAAA,EAAA,CAChB,gBAAgB,CAAA,EAAA,CAAA,CAAA;kIAEf,aAAa,EAAA,CAAA,CAAA;;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBAJzB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,gBAAgB,CAAC;oBAC3B,OAAO,EAAE,CAAC,gBAAgB;AAC3B,iBAAA;;;ACND;;AAEG;;;;"}
@@ -4,16 +4,26 @@ import { input, output, viewChild, signal, ChangeDetectionStrategy, ViewEncapsul
4
4
  class XScrollableComponent {
5
5
  constructor(renderer) {
6
6
  this.renderer = renderer;
7
- this.yOffsetTop = input(0, ...(ngDevMode ? [{ debugName: "yOffsetTop" }] : []));
8
- this.yOffsetBottom = input(0, ...(ngDevMode ? [{ debugName: "yOffsetBottom" }] : []));
9
- this.yOffsetLeft = input(0, ...(ngDevMode ? [{ debugName: "yOffsetLeft" }] : []));
10
- this.yOffsetRight = input(0, ...(ngDevMode ? [{ debugName: "yOffsetRight" }] : []));
11
- this.xOffsetTop = input(0, ...(ngDevMode ? [{ debugName: "xOffsetTop" }] : []));
12
- this.xOffsetBottom = input(0, ...(ngDevMode ? [{ debugName: "xOffsetBottom" }] : []));
13
- this.xOffsetLeft = input(0, ...(ngDevMode ? [{ debugName: "xOffsetLeft" }] : []));
14
- this.xOffsetRight = input(0, ...(ngDevMode ? [{ debugName: "xOffsetRight" }] : []));
15
- this.maxHeight = input('100%', ...(ngDevMode ? [{ debugName: "maxHeight" }] : []));
16
- this.maxWidth = input('100%', ...(ngDevMode ? [{ debugName: "maxWidth" }] : []));
7
+ this.yOffsetTop = input(0, /* @ts-ignore */
8
+ ...(ngDevMode ? [{ debugName: "yOffsetTop" }] : /* istanbul ignore next */ []));
9
+ this.yOffsetBottom = input(0, /* @ts-ignore */
10
+ ...(ngDevMode ? [{ debugName: "yOffsetBottom" }] : /* istanbul ignore next */ []));
11
+ this.yOffsetLeft = input(0, /* @ts-ignore */
12
+ ...(ngDevMode ? [{ debugName: "yOffsetLeft" }] : /* istanbul ignore next */ []));
13
+ this.yOffsetRight = input(0, /* @ts-ignore */
14
+ ...(ngDevMode ? [{ debugName: "yOffsetRight" }] : /* istanbul ignore next */ []));
15
+ this.xOffsetTop = input(0, /* @ts-ignore */
16
+ ...(ngDevMode ? [{ debugName: "xOffsetTop" }] : /* istanbul ignore next */ []));
17
+ this.xOffsetBottom = input(0, /* @ts-ignore */
18
+ ...(ngDevMode ? [{ debugName: "xOffsetBottom" }] : /* istanbul ignore next */ []));
19
+ this.xOffsetLeft = input(0, /* @ts-ignore */
20
+ ...(ngDevMode ? [{ debugName: "xOffsetLeft" }] : /* istanbul ignore next */ []));
21
+ this.xOffsetRight = input(0, /* @ts-ignore */
22
+ ...(ngDevMode ? [{ debugName: "xOffsetRight" }] : /* istanbul ignore next */ []));
23
+ this.maxHeight = input('100%', /* @ts-ignore */
24
+ ...(ngDevMode ? [{ debugName: "maxHeight" }] : /* istanbul ignore next */ []));
25
+ this.maxWidth = input('100%', /* @ts-ignore */
26
+ ...(ngDevMode ? [{ debugName: "maxWidth" }] : /* istanbul ignore next */ []));
17
27
  this.resizeChange = output();
18
28
  this.scrollChange = output();
19
29
  this.contentRef = viewChild.required('content');
@@ -21,13 +31,20 @@ class XScrollableComponent {
21
31
  this.thumbXRef = viewChild.required('thumbX');
22
32
  this.trackYRef = viewChild.required('trackY');
23
33
  this.thumbYRef = viewChild.required('thumbY');
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" }] : []));
34
+ this.isActive = signal(false, /* @ts-ignore */
35
+ ...(ngDevMode ? [{ debugName: "isActive" }] : /* istanbul ignore next */ []));
36
+ this.isAtTop = signal(false, /* @ts-ignore */
37
+ ...(ngDevMode ? [{ debugName: "isAtTop" }] : /* istanbul ignore next */ []));
38
+ this.isAtBottom = signal(false, /* @ts-ignore */
39
+ ...(ngDevMode ? [{ debugName: "isAtBottom" }] : /* istanbul ignore next */ []));
40
+ this.isAtLeft = signal(false, /* @ts-ignore */
41
+ ...(ngDevMode ? [{ debugName: "isAtLeft" }] : /* istanbul ignore next */ []));
42
+ this.isAtRight = signal(false, /* @ts-ignore */
43
+ ...(ngDevMode ? [{ debugName: "isAtRight" }] : /* istanbul ignore next */ []));
44
+ this.hasVerticalScrollbar = signal(false, /* @ts-ignore */
45
+ ...(ngDevMode ? [{ debugName: "hasVerticalScrollbar" }] : /* istanbul ignore next */ []));
46
+ this.hasHorizontalScrollbar = signal(false, /* @ts-ignore */
47
+ ...(ngDevMode ? [{ debugName: "hasHorizontalScrollbar" }] : /* istanbul ignore next */ []));
31
48
  this.isDragging = false;
32
49
  this.dragAxis = null;
33
50
  this.dragStart = { x: 0, y: 0 };
@@ -264,20 +281,20 @@ class XScrollableComponent {
264
281
  this.isActive.set(false);
265
282
  }
266
283
  }
267
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: XScrollableComponent, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
268
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.1.1", 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 }); }
284
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: XScrollableComponent, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
285
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.0.1", 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 }); }
269
286
  }
270
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: XScrollableComponent, decorators: [{
287
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: XScrollableComponent, decorators: [{
271
288
  type: Component,
272
289
  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
290
  }], 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 }] }] } });
274
291
 
275
292
  class XScrollableModule {
276
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: XScrollableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
277
- /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.1.1", ngImport: i0, type: XScrollableModule, imports: [XScrollableComponent], exports: [XScrollableComponent] }); }
278
- /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: XScrollableModule }); }
293
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: XScrollableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
294
+ /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.1", ngImport: i0, type: XScrollableModule, imports: [XScrollableComponent], exports: [XScrollableComponent] }); }
295
+ /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: XScrollableModule }); }
279
296
  }
280
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: XScrollableModule, decorators: [{
297
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: XScrollableModule, decorators: [{
281
298
  type: NgModule,
282
299
  args: [{
283
300
  exports: [XScrollableComponent],
@@ -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 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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"}
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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"}