@ng-nest/ui 21.0.2 → 21.0.4

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 (174) 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 +22 -24
  4. package/fesm2022/ng-nest-ui-alert.mjs.map +1 -1
  5. package/fesm2022/ng-nest-ui-anchor.mjs +19 -19
  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 +22 -22
  9. package/fesm2022/ng-nest-ui-attachments.mjs.map +1 -1
  10. package/fesm2022/ng-nest-ui-auto-complete.mjs +26 -30
  11. package/fesm2022/ng-nest-ui-auto-complete.mjs.map +1 -1
  12. package/fesm2022/ng-nest-ui-avatar.mjs +17 -17
  13. package/fesm2022/ng-nest-ui-avatar.mjs.map +1 -1
  14. package/fesm2022/ng-nest-ui-back-top.mjs +13 -13
  15. package/fesm2022/ng-nest-ui-back-top.mjs.map +1 -1
  16. package/fesm2022/ng-nest-ui-badge.mjs +16 -16
  17. package/fesm2022/ng-nest-ui-badge.mjs.map +1 -1
  18. package/fesm2022/ng-nest-ui-base-form.mjs +13 -13
  19. package/fesm2022/ng-nest-ui-base-form.mjs.map +1 -1
  20. package/fesm2022/ng-nest-ui-bubble.mjs +20 -20
  21. package/fesm2022/ng-nest-ui-bubble.mjs.map +1 -1
  22. package/fesm2022/ng-nest-ui-button.mjs +31 -31
  23. package/fesm2022/ng-nest-ui-button.mjs.map +1 -1
  24. package/fesm2022/ng-nest-ui-calendar.mjs +10 -10
  25. package/fesm2022/ng-nest-ui-card.mjs +11 -11
  26. package/fesm2022/ng-nest-ui-card.mjs.map +1 -1
  27. package/fesm2022/ng-nest-ui-carousel.mjs +24 -24
  28. package/fesm2022/ng-nest-ui-carousel.mjs.map +1 -1
  29. package/fesm2022/ng-nest-ui-cascade.mjs +25 -29
  30. package/fesm2022/ng-nest-ui-cascade.mjs.map +1 -1
  31. package/fesm2022/ng-nest-ui-checkbox.mjs +22 -22
  32. package/fesm2022/ng-nest-ui-checkbox.mjs.map +1 -1
  33. package/fesm2022/ng-nest-ui-collapse.mjs +22 -22
  34. package/fesm2022/ng-nest-ui-collapse.mjs.map +1 -1
  35. package/fesm2022/ng-nest-ui-color-picker.mjs +25 -25
  36. package/fesm2022/ng-nest-ui-color-picker.mjs.map +1 -1
  37. package/fesm2022/ng-nest-ui-color.mjs +10 -10
  38. package/fesm2022/ng-nest-ui-comment.mjs +19 -19
  39. package/fesm2022/ng-nest-ui-comment.mjs.map +1 -1
  40. package/fesm2022/ng-nest-ui-container.mjs +34 -34
  41. package/fesm2022/ng-nest-ui-container.mjs.map +1 -1
  42. package/fesm2022/ng-nest-ui-core.mjs +18 -18
  43. package/fesm2022/ng-nest-ui-coversations.mjs +11 -11
  44. package/fesm2022/ng-nest-ui-coversations.mjs.map +1 -1
  45. package/fesm2022/ng-nest-ui-crumb.mjs +11 -11
  46. package/fesm2022/ng-nest-ui-crumb.mjs.map +1 -1
  47. package/fesm2022/ng-nest-ui-date-picker.mjs +87 -87
  48. package/fesm2022/ng-nest-ui-date-picker.mjs.map +1 -1
  49. package/fesm2022/ng-nest-ui-description.mjs +20 -20
  50. package/fesm2022/ng-nest-ui-description.mjs.map +1 -1
  51. package/fesm2022/ng-nest-ui-dialog.mjs +58 -58
  52. package/fesm2022/ng-nest-ui-dialog.mjs.map +1 -1
  53. package/fesm2022/ng-nest-ui-doc.mjs +7 -7
  54. package/fesm2022/ng-nest-ui-drag.mjs +10 -10
  55. package/fesm2022/ng-nest-ui-drawer.mjs +34 -34
  56. package/fesm2022/ng-nest-ui-drawer.mjs.map +1 -1
  57. package/fesm2022/ng-nest-ui-dropdown.mjs +21 -21
  58. package/fesm2022/ng-nest-ui-dropdown.mjs.map +1 -1
  59. package/fesm2022/ng-nest-ui-empty.mjs +10 -10
  60. package/fesm2022/ng-nest-ui-examples.mjs +7 -7
  61. package/fesm2022/ng-nest-ui-find.mjs +31 -35
  62. package/fesm2022/ng-nest-ui-find.mjs.map +1 -1
  63. package/fesm2022/ng-nest-ui-form.mjs +21 -21
  64. package/fesm2022/ng-nest-ui-form.mjs.map +1 -1
  65. package/fesm2022/ng-nest-ui-highlight.mjs +14 -14
  66. package/fesm2022/ng-nest-ui-highlight.mjs.map +1 -1
  67. package/fesm2022/ng-nest-ui-i18n.mjs +32 -31
  68. package/fesm2022/ng-nest-ui-i18n.mjs.map +1 -1
  69. package/fesm2022/ng-nest-ui-icon.mjs +14 -14
  70. package/fesm2022/ng-nest-ui-icon.mjs.map +1 -1
  71. package/fesm2022/ng-nest-ui-image.mjs +21 -21
  72. package/fesm2022/ng-nest-ui-image.mjs.map +1 -1
  73. package/fesm2022/ng-nest-ui-inner.mjs +11 -11
  74. package/fesm2022/ng-nest-ui-inner.mjs.map +1 -1
  75. package/fesm2022/ng-nest-ui-input-number.mjs +21 -21
  76. package/fesm2022/ng-nest-ui-input-number.mjs.map +1 -1
  77. package/fesm2022/ng-nest-ui-input.mjs +36 -40
  78. package/fesm2022/ng-nest-ui-input.mjs.map +1 -1
  79. package/fesm2022/ng-nest-ui-keyword.mjs +11 -11
  80. package/fesm2022/ng-nest-ui-keyword.mjs.map +1 -1
  81. package/fesm2022/ng-nest-ui-layout.mjs +25 -25
  82. package/fesm2022/ng-nest-ui-layout.mjs.map +1 -1
  83. package/fesm2022/ng-nest-ui-link.mjs +13 -13
  84. package/fesm2022/ng-nest-ui-link.mjs.map +1 -1
  85. package/fesm2022/ng-nest-ui-list.mjs +41 -41
  86. package/fesm2022/ng-nest-ui-list.mjs.map +1 -1
  87. package/fesm2022/ng-nest-ui-loading.mjs +14 -14
  88. package/fesm2022/ng-nest-ui-loading.mjs.map +1 -1
  89. package/fesm2022/ng-nest-ui-menu.mjs +22 -22
  90. package/fesm2022/ng-nest-ui-menu.mjs.map +1 -1
  91. package/fesm2022/ng-nest-ui-message-box.mjs +10 -10
  92. package/fesm2022/ng-nest-ui-message.mjs +10 -10
  93. package/fesm2022/ng-nest-ui-notification.mjs +10 -10
  94. package/fesm2022/ng-nest-ui-outlet.mjs +7 -7
  95. package/fesm2022/ng-nest-ui-page-header.mjs +10 -10
  96. package/fesm2022/ng-nest-ui-pagination.mjs +27 -31
  97. package/fesm2022/ng-nest-ui-pagination.mjs.map +1 -1
  98. package/fesm2022/ng-nest-ui-pattern.mjs +7 -7
  99. package/fesm2022/ng-nest-ui-popconfirm.mjs +14 -14
  100. package/fesm2022/ng-nest-ui-popconfirm.mjs.map +1 -1
  101. package/fesm2022/ng-nest-ui-popover.mjs +19 -19
  102. package/fesm2022/ng-nest-ui-popover.mjs.map +1 -1
  103. package/fesm2022/ng-nest-ui-portal.mjs +7 -7
  104. package/fesm2022/ng-nest-ui-progress.mjs +22 -22
  105. package/fesm2022/ng-nest-ui-progress.mjs.map +1 -1
  106. package/fesm2022/ng-nest-ui-prompts.mjs +12 -12
  107. package/fesm2022/ng-nest-ui-prompts.mjs.map +1 -1
  108. package/fesm2022/ng-nest-ui-radio.mjs +20 -20
  109. package/fesm2022/ng-nest-ui-radio.mjs.map +1 -1
  110. package/fesm2022/ng-nest-ui-rate.mjs +15 -15
  111. package/fesm2022/ng-nest-ui-rate.mjs.map +1 -1
  112. package/fesm2022/ng-nest-ui-resizable.mjs +14 -14
  113. package/fesm2022/ng-nest-ui-resizable.mjs.map +1 -1
  114. package/fesm2022/ng-nest-ui-result.mjs +10 -10
  115. package/fesm2022/ng-nest-ui-ripple.mjs +12 -12
  116. package/fesm2022/ng-nest-ui-ripple.mjs.map +1 -1
  117. package/fesm2022/ng-nest-ui-scrollable.mjs +19 -7
  118. package/fesm2022/ng-nest-ui-scrollable.mjs.map +1 -1
  119. package/fesm2022/ng-nest-ui-select.mjs +35 -39
  120. package/fesm2022/ng-nest-ui-select.mjs.map +1 -1
  121. package/fesm2022/ng-nest-ui-sender.mjs +19 -19
  122. package/fesm2022/ng-nest-ui-sender.mjs.map +1 -1
  123. package/fesm2022/ng-nest-ui-skeleton.mjs +13 -13
  124. package/fesm2022/ng-nest-ui-skeleton.mjs.map +1 -1
  125. package/fesm2022/ng-nest-ui-slider-select.mjs +21 -21
  126. package/fesm2022/ng-nest-ui-slider-select.mjs.map +1 -1
  127. package/fesm2022/ng-nest-ui-slider.mjs +16 -18
  128. package/fesm2022/ng-nest-ui-slider.mjs.map +1 -1
  129. package/fesm2022/ng-nest-ui-statistic.mjs +16 -16
  130. package/fesm2022/ng-nest-ui-steps.mjs +33 -18
  131. package/fesm2022/ng-nest-ui-steps.mjs.map +1 -1
  132. package/fesm2022/ng-nest-ui-suggestion.mjs +17 -17
  133. package/fesm2022/ng-nest-ui-suggestion.mjs.map +1 -1
  134. package/fesm2022/ng-nest-ui-switch.mjs +15 -15
  135. package/fesm2022/ng-nest-ui-switch.mjs.map +1 -1
  136. package/fesm2022/ng-nest-ui-table-view.mjs +58 -58
  137. package/fesm2022/ng-nest-ui-table.mjs +90 -112
  138. package/fesm2022/ng-nest-ui-table.mjs.map +1 -1
  139. package/fesm2022/ng-nest-ui-tabs.mjs +38 -40
  140. package/fesm2022/ng-nest-ui-tabs.mjs.map +1 -1
  141. package/fesm2022/ng-nest-ui-tag.mjs +16 -16
  142. package/fesm2022/ng-nest-ui-tag.mjs.map +1 -1
  143. package/fesm2022/ng-nest-ui-text-retract.mjs +11 -11
  144. package/fesm2022/ng-nest-ui-text-retract.mjs.map +1 -1
  145. package/fesm2022/ng-nest-ui-textarea.mjs +19 -19
  146. package/fesm2022/ng-nest-ui-textarea.mjs.map +1 -1
  147. package/fesm2022/ng-nest-ui-theme.mjs +12 -12
  148. package/fesm2022/ng-nest-ui-theme.mjs.map +1 -1
  149. package/fesm2022/ng-nest-ui-thought-chain.mjs +12 -12
  150. package/fesm2022/ng-nest-ui-thought-chain.mjs.map +1 -1
  151. package/fesm2022/ng-nest-ui-time-ago.mjs +7 -7
  152. package/fesm2022/ng-nest-ui-time-picker.mjs +28 -28
  153. package/fesm2022/ng-nest-ui-time-picker.mjs.map +1 -1
  154. package/fesm2022/ng-nest-ui-time-range.mjs +7 -7
  155. package/fesm2022/ng-nest-ui-timeline.mjs +12 -12
  156. package/fesm2022/ng-nest-ui-timeline.mjs.map +1 -1
  157. package/fesm2022/ng-nest-ui-tooltip.mjs +17 -17
  158. package/fesm2022/ng-nest-ui-tooltip.mjs.map +1 -1
  159. package/fesm2022/ng-nest-ui-transfer.mjs +14 -14
  160. package/fesm2022/ng-nest-ui-transfer.mjs.map +1 -1
  161. package/fesm2022/ng-nest-ui-tree-file.mjs +17 -17
  162. package/fesm2022/ng-nest-ui-tree-file.mjs.map +1 -1
  163. package/fesm2022/ng-nest-ui-tree-select.mjs +36 -42
  164. package/fesm2022/ng-nest-ui-tree-select.mjs.map +1 -1
  165. package/fesm2022/ng-nest-ui-tree.mjs +44 -46
  166. package/fesm2022/ng-nest-ui-tree.mjs.map +1 -1
  167. package/fesm2022/ng-nest-ui-typography.mjs +10 -10
  168. package/fesm2022/ng-nest-ui-upload.mjs +24 -24
  169. package/fesm2022/ng-nest-ui-upload.mjs.map +1 -1
  170. package/fesm2022/ng-nest-ui-welcome.mjs +10 -10
  171. package/package.json +1 -1
  172. package/types/ng-nest-ui-i18n.d.ts +13 -11
  173. package/types/ng-nest-ui-scrollable.d.ts +6 -0
  174. package/types/ng-nest-ui-steps.d.ts +18 -3
@@ -108,7 +108,7 @@ class XAvatarProperty extends XPropertyFunction(X_AVATAR_CONFIG_NAME) {
108
108
  * ```
109
109
  *
110
110
  */
111
- this.gap = input(this.config?.gap ?? '4px', ...(ngDevMode ? [{ debugName: "gap", transform: XToCssPixelValue }] : [{ transform: XToCssPixelValue }]));
111
+ this.gap = input(this.config?.gap ?? '4px', { ...(ngDevMode ? { debugName: "gap" } : {}), transform: XToCssPixelValue });
112
112
  /**
113
113
  * @zh_CN 背景颜色
114
114
  * @en_US Background color
@@ -134,10 +134,10 @@ class XAvatarProperty extends XPropertyFunction(X_AVATAR_CONFIG_NAME) {
134
134
  */
135
135
  this.color = input(this.config?.color ?? '#FFFFFF', ...(ngDevMode ? [{ debugName: "color" }] : []));
136
136
  }
137
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: XAvatarProperty, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
138
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.0.0", type: XAvatarProperty, isStandalone: true, selector: "x-avatar-property", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, shape: { classPropertyName: "shape", publicName: "shape", isSignal: true, isRequired: false, transformFunction: null }, src: { classPropertyName: "src", publicName: "src", isSignal: true, isRequired: false, transformFunction: null }, fit: { classPropertyName: "fit", publicName: "fit", isSignal: true, isRequired: false, transformFunction: null }, gap: { classPropertyName: "gap", publicName: "gap", isSignal: true, isRequired: false, transformFunction: null }, backgroundColor: { classPropertyName: "backgroundColor", publicName: "backgroundColor", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
137
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XAvatarProperty, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
138
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.0.6", type: XAvatarProperty, isStandalone: true, selector: "x-avatar-property", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, shape: { classPropertyName: "shape", publicName: "shape", isSignal: true, isRequired: false, transformFunction: null }, src: { classPropertyName: "src", publicName: "src", isSignal: true, isRequired: false, transformFunction: null }, fit: { classPropertyName: "fit", publicName: "fit", isSignal: true, isRequired: false, transformFunction: null }, gap: { classPropertyName: "gap", publicName: "gap", isSignal: true, isRequired: false, transformFunction: null }, backgroundColor: { classPropertyName: "backgroundColor", publicName: "backgroundColor", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
139
139
  }
140
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: XAvatarProperty, decorators: [{
140
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XAvatarProperty, decorators: [{
141
141
  type: Component,
142
142
  args: [{ selector: `${XAvatarPrefix}-property`, template: '' }]
143
143
  }], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], shape: [{ type: i0.Input, args: [{ isSignal: true, alias: "shape", required: false }] }], src: [{ type: i0.Input, args: [{ isSignal: true, alias: "src", required: false }] }], fit: [{ type: i0.Input, args: [{ isSignal: true, alias: "fit", required: false }] }], gap: [{ type: i0.Input, args: [{ isSignal: true, alias: "gap", required: false }] }], backgroundColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "backgroundColor", required: false }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }] } });
@@ -151,10 +151,10 @@ const XAvatarGroupPrefix = 'x-avatar-group';
151
151
  * Avatar Group Property
152
152
  */
153
153
  class XAvatarGroupProperty extends XProperty {
154
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: XAvatarGroupProperty, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
155
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.0", type: XAvatarGroupProperty, isStandalone: true, selector: "x-avatar-group-property", usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
154
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XAvatarGroupProperty, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
155
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.6", type: XAvatarGroupProperty, isStandalone: true, selector: "x-avatar-group-property", usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
156
156
  }
157
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: XAvatarGroupProperty, decorators: [{
157
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XAvatarGroupProperty, decorators: [{
158
158
  type: Component,
159
159
  args: [{ selector: `${XAvatarGroupPrefix}-property`, template: '' }]
160
160
  }] });
@@ -251,10 +251,10 @@ class XAvatarComponent extends XAvatarProperty {
251
251
  imgError() {
252
252
  this.isImgError.set(true);
253
253
  }
254
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: XAvatarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
255
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.0", type: XAvatarComponent, isStandalone: true, selector: "x-avatar", viewQueries: [{ propertyName: "avatar", first: true, predicate: ["avatar"], descendants: true, isSignal: true }, { propertyName: "labelRef", first: true, predicate: ["labelRef"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<span\r\n #avatar\r\n class=\"x-avatar\"\r\n [class.x-avatar-label]=\"label()\"\r\n [ngClass]=\"classMap()\"\r\n [class.x-avatar-error]=\"isImgError()\"\r\n [ngStyle]=\"styleMap()\"\r\n [style.backgroundColor]=\"backgroundColor()\"\r\n>\r\n @if (src() && !isImgError()) {\r\n <img [src]=\"src()\" [style.object-fit]=\"fit()\" (error)=\"imgError()\" />\r\n }\r\n @if (icon()) {\r\n <x-icon [type]=\"icon()\"></x-icon>\r\n }\r\n @if (isImgError()) {\r\n <x-icon type=\"fto-image\"></x-icon>\r\n }\r\n @if (label()) {\r\n <span #labelRef class=\"x-avatar-text\" [ngStyle]=\"labelStyleMap()\" *xOutlet=\"label(); context: { $label: label() }\">\r\n {{ label() }}\r\n </span>\r\n }\r\n</span>\r\n", styles: ["x-avatar{display:flex}.x-avatar{margin:0;padding:0}.x-avatar{font-size:var(--x-font-size);display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;text-align:center;overflow:hidden;color:var(--x-background-100)}.x-avatar>img{display:block;height:100%}.x-avatar-circle{border-radius:50%}.x-avatar-square{border-radius:var(--x-border-radius)}.x-avatar-error>img{height:initial}.x-avatar>span{white-space:nowrap;transition:transform var(--x-animation-duration-base)}.x-avatar-big{height:3.5rem;width:3.5rem;line-height:3.5rem;font-size:2.1rem}.x-avatar-large{height:3rem;width:3rem;line-height:3rem;font-size:1.8rem}.x-avatar-medium{height:2.5rem;width:2.5rem;line-height:2.5rem;font-size:1.5rem}.x-avatar-small{height:2rem;width:2rem;line-height:2rem;font-size:1.2rem}.x-avatar-mini{height:1.5rem;width:1.5rem;line-height:1.5rem;font-size:.9rem}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: XOutletDirective, selector: "[xOutlet]", inputs: ["xOutletContext", "xOutlet"] }, { kind: "component", type: XIconComponent, selector: "x-icon" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
254
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XAvatarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
255
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.6", type: XAvatarComponent, isStandalone: true, selector: "x-avatar", viewQueries: [{ propertyName: "avatar", first: true, predicate: ["avatar"], descendants: true, isSignal: true }, { propertyName: "labelRef", first: true, predicate: ["labelRef"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<span\r\n #avatar\r\n class=\"x-avatar\"\r\n [class.x-avatar-label]=\"label()\"\r\n [ngClass]=\"classMap()\"\r\n [class.x-avatar-error]=\"isImgError()\"\r\n [ngStyle]=\"styleMap()\"\r\n [style.backgroundColor]=\"backgroundColor()\"\r\n>\r\n @if (src() && !isImgError()) {\r\n <img [src]=\"src()\" [style.object-fit]=\"fit()\" (error)=\"imgError()\" />\r\n }\r\n @if (icon()) {\r\n <x-icon [type]=\"icon()\"></x-icon>\r\n }\r\n @if (isImgError()) {\r\n <x-icon type=\"fto-image\"></x-icon>\r\n }\r\n @if (label()) {\r\n <span #labelRef class=\"x-avatar-text\" [ngStyle]=\"labelStyleMap()\" *xOutlet=\"label(); context: { $label: label() }\">\r\n {{ label() }}\r\n </span>\r\n }\r\n</span>\r\n", styles: ["x-avatar{display:flex}.x-avatar{margin:0;padding:0}.x-avatar{font-size:var(--x-font-size);display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;text-align:center;overflow:hidden;color:var(--x-background-100)}.x-avatar>img{display:block;height:100%}.x-avatar-circle{border-radius:50%}.x-avatar-square{border-radius:var(--x-border-radius)}.x-avatar-error>img{height:initial}.x-avatar>span{white-space:nowrap;transition:transform var(--x-animation-duration-base)}.x-avatar-big{height:3.5rem;width:3.5rem;line-height:3.5rem;font-size:2.1rem}.x-avatar-large{height:3rem;width:3rem;line-height:3rem;font-size:1.8rem}.x-avatar-medium{height:2.5rem;width:2.5rem;line-height:2.5rem;font-size:1.5rem}.x-avatar-small{height:2rem;width:2rem;line-height:2rem;font-size:1.2rem}.x-avatar-mini{height:1.5rem;width:1.5rem;line-height:1.5rem;font-size:.9rem}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: XOutletDirective, selector: "[xOutlet]", inputs: ["xOutletContext", "xOutlet"] }, { kind: "component", type: XIconComponent, selector: "x-icon" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
256
256
  }
257
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: XAvatarComponent, decorators: [{
257
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XAvatarComponent, decorators: [{
258
258
  type: Component,
259
259
  args: [{ selector: `${XAvatarPrefix}`, imports: [NgClass, NgStyle, XOutletDirective, XIconComponent], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<span\r\n #avatar\r\n class=\"x-avatar\"\r\n [class.x-avatar-label]=\"label()\"\r\n [ngClass]=\"classMap()\"\r\n [class.x-avatar-error]=\"isImgError()\"\r\n [ngStyle]=\"styleMap()\"\r\n [style.backgroundColor]=\"backgroundColor()\"\r\n>\r\n @if (src() && !isImgError()) {\r\n <img [src]=\"src()\" [style.object-fit]=\"fit()\" (error)=\"imgError()\" />\r\n }\r\n @if (icon()) {\r\n <x-icon [type]=\"icon()\"></x-icon>\r\n }\r\n @if (isImgError()) {\r\n <x-icon type=\"fto-image\"></x-icon>\r\n }\r\n @if (label()) {\r\n <span #labelRef class=\"x-avatar-text\" [ngStyle]=\"labelStyleMap()\" *xOutlet=\"label(); context: { $label: label() }\">\r\n {{ label() }}\r\n </span>\r\n }\r\n</span>\r\n", styles: ["x-avatar{display:flex}.x-avatar{margin:0;padding:0}.x-avatar{font-size:var(--x-font-size);display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;text-align:center;overflow:hidden;color:var(--x-background-100)}.x-avatar>img{display:block;height:100%}.x-avatar-circle{border-radius:50%}.x-avatar-square{border-radius:var(--x-border-radius)}.x-avatar-error>img{height:initial}.x-avatar>span{white-space:nowrap;transition:transform var(--x-animation-duration-base)}.x-avatar-big{height:3.5rem;width:3.5rem;line-height:3.5rem;font-size:2.1rem}.x-avatar-large{height:3rem;width:3rem;line-height:3rem;font-size:1.8rem}.x-avatar-medium{height:2.5rem;width:2.5rem;line-height:2.5rem;font-size:1.5rem}.x-avatar-small{height:2rem;width:2rem;line-height:2rem;font-size:1.2rem}.x-avatar-mini{height:1.5rem;width:1.5rem;line-height:1.5rem;font-size:.9rem}\n"] }]
260
260
  }], ctorParameters: () => [], propDecorators: { avatar: [{ type: i0.ViewChild, args: ['avatar', { isSignal: true }] }], labelRef: [{ type: i0.ViewChild, args: ['labelRef', { isSignal: true }] }] } });
@@ -264,10 +264,10 @@ class XAvatarGroupComponent extends XAvatarGroupProperty {
264
264
  super(...arguments);
265
265
  this._has = true;
266
266
  }
267
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: XAvatarGroupComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
268
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.0", type: XAvatarGroupComponent, isStandalone: true, selector: "x-avatar-group", host: { properties: { "class.x-avatar-group": "this._has" } }, usesInheritance: true, ngImport: i0, template: "<ng-content></ng-content>\r\n", styles: ["x-avatar-group{display:flex}.x-avatar-group{margin:0;padding:0}.x-avatar-group>x-avatar{z-index:0}.x-avatar-group>x-avatar:not(:first-child){margin-left:-.5rem}.x-avatar-group>x-avatar .x-avatar{border:var(--x-border-width) var(--x-border-style) var(--x-white)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
267
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XAvatarGroupComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
268
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.6", type: XAvatarGroupComponent, isStandalone: true, selector: "x-avatar-group", host: { properties: { "class.x-avatar-group": "this._has" } }, usesInheritance: true, ngImport: i0, template: "<ng-content></ng-content>\r\n", styles: ["x-avatar-group{display:flex}.x-avatar-group{margin:0;padding:0}.x-avatar-group>x-avatar{z-index:0}.x-avatar-group>x-avatar:not(:first-child){margin-left:-.5rem}.x-avatar-group>x-avatar .x-avatar{border:var(--x-border-width) var(--x-border-style) var(--x-white)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
269
269
  }
270
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: XAvatarGroupComponent, decorators: [{
270
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XAvatarGroupComponent, decorators: [{
271
271
  type: Component,
272
272
  args: [{ selector: `${XAvatarGroupPrefix}`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content></ng-content>\r\n", styles: ["x-avatar-group{display:flex}.x-avatar-group{margin:0;padding:0}.x-avatar-group>x-avatar{z-index:0}.x-avatar-group>x-avatar:not(:first-child){margin-left:-.5rem}.x-avatar-group>x-avatar .x-avatar{border:var(--x-border-width) var(--x-border-style) var(--x-white)}\n"] }]
273
273
  }], propDecorators: { _has: [{
@@ -276,11 +276,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0", ngImpor
276
276
  }] } });
277
277
 
278
278
  class XAvatarModule {
279
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: XAvatarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
280
- /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.0", ngImport: i0, type: XAvatarModule, imports: [XAvatarComponent, XAvatarGroupComponent], exports: [XAvatarComponent, XAvatarGroupComponent] }); }
281
- /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: XAvatarModule, imports: [XAvatarComponent] }); }
279
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XAvatarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
280
+ /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.6", ngImport: i0, type: XAvatarModule, imports: [XAvatarComponent, XAvatarGroupComponent], exports: [XAvatarComponent, XAvatarGroupComponent] }); }
281
+ /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XAvatarModule, imports: [XAvatarComponent] }); }
282
282
  }
283
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: XAvatarModule, decorators: [{
283
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XAvatarModule, decorators: [{
284
284
  type: NgModule,
285
285
  args: [{
286
286
  exports: [XAvatarComponent, XAvatarGroupComponent],
@@ -1 +1 @@
1
- {"version":3,"file":"ng-nest-ui-avatar.mjs","sources":["../../../../lib/ng-nest/ui/avatar/avatar.property.ts","../../../../lib/ng-nest/ui/avatar/avatar.component.ts","../../../../lib/ng-nest/ui/avatar/avatar.component.html","../../../../lib/ng-nest/ui/avatar/avatar-group.component.ts","../../../../lib/ng-nest/ui/avatar/avatar-group.component.html","../../../../lib/ng-nest/ui/avatar/avatar.module.ts","../../../../lib/ng-nest/ui/avatar/ng-nest-ui-avatar.ts"],"sourcesContent":["import {\r\n XSize,\r\n XTemplate,\r\n XProperty,\r\n XShape,\r\n XFit,\r\n XResponseSize,\r\n XNumber,\r\n XPropertyFunction,\r\n XToCssPixelValue\r\n} from '@ng-nest/ui/core';\r\nimport { Component, input } from '@angular/core';\r\n\r\n/**\r\n * Avatar\r\n * @selector x-avatar\r\n * @decorator component\r\n */\r\nexport const XAvatarPrefix = 'x-avatar';\r\nexport const X_AVATAR_CONFIG_NAME = 'avatar';\r\n\r\n/**\r\n * Avatar Property\r\n */\r\n@Component({ selector: `${XAvatarPrefix}-property`, template: '' })\r\nexport class XAvatarProperty extends XPropertyFunction(X_AVATAR_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 显示字符\r\n * @en_US Display characters\r\n * @example\r\n *\r\n * ```html\r\n * <x-avatar label=\"ng-nest\"></x-avatar>\r\n * ```\r\n *\r\n */\r\n readonly label = input<XTemplate>();\r\n /**\r\n * @zh_CN 尺寸\r\n * @en_US Size\r\n * @example\r\n *\r\n * ```html\r\n * <x-avatar size=\"big\" icon=\"fto-user\"></x-avatar>\r\n * <x-avatar size=\"large\" icon=\"fto-user\"></x-avatar>\r\n * <x-avatar size=\"medium\" icon=\"fto-user\"></x-avatar>\r\n * <x-avatar size=\"small\" icon=\"fto-user\"></x-avatar>\r\n * <x-avatar size=\"mini\" icon=\"fto-user\"></x-avatar>\r\n * <x-avatar [size]=\"100\" icon=\"fto-user\"></x-avatar>\r\n * <x-avatar [size]=\"{ xs: 20, sm: 60, md: 90, lg: 120, xl: 160 }\" icon=\"fto-user\"></x-avatar>\r\n * ```\r\n *\r\n */\r\n readonly size = input<XAvatarSize>(this.config?.size ?? 'medium');\r\n /**\r\n * @zh_CN 显示图标\r\n * @en_US Show icon\r\n * @example\r\n *\r\n * ```html\r\n * <x-avatar icon=\"fto-user\"></x-avatar>\r\n * ```\r\n *\r\n */\r\n readonly icon = input<string>();\r\n /**\r\n * @zh_CN 形状\r\n * @en_US Shape\r\n * @example\r\n *\r\n * ```html\r\n * <x-avatar icon=\"fto-user\" shape=\"circle\"></x-avatar>\r\n * <x-avatar icon=\"fto-user\" shape=\"square\"></x-avatar>\r\n * ```\r\n *\r\n */\r\n readonly shape = input<XAvatarShape>(this.config?.shape ?? 'circle');\r\n /**\r\n * @zh_CN 图片地址\r\n * @en_US The map's address\r\n * @example\r\n *\r\n * ```html\r\n * <x-avatar src=\"https://ngnest.com/img/logo/logo-144x144.png\"></x-avatar>\r\n * ```\r\n *\r\n */\r\n readonly src = input<string>();\r\n /**\r\n * @zh_CN 图片适应方式\r\n * @en_US Image adaptation method\r\n * @example\r\n *\r\n * ```html\r\n * <x-avatar fit=\"fill\" src=\"https://ngnest.com/img/logo/logo-144x144.png\"></x-avatar>\r\n * <x-avatar fit=\"contain\" src=\"https://ngnest.com/img/logo/logo-144x144.png\"></x-avatar>\r\n * <x-avatar fit=\"cover\" src=\"https://ngnest.com/img/logo/logo-144x144.png\"></x-avatar>\r\n * <x-avatar fit=\"none\" src=\"https://ngnest.com/img/logo/logo-144x144.png\"></x-avatar>\r\n * <x-avatar fit=\"scale-down\" src=\"https://ngnest.com/img/logo/logo-144x144.png\"></x-avatar>\r\n * ```\r\n *\r\n */\r\n readonly fit = input<XAvatarFit>(this.config?.fit ?? 'cover');\r\n /**\r\n * @zh_CN 字符类型的时候左右边距\r\n * @en_US When the character type is the left and right distance\r\n * @example\r\n *\r\n * ```html\r\n * <x-avatar label=\"ng-nest\" gap=\"5\"></x-avatar>\r\n * <x-avatar label=\"ng-nest\" gap=\"5px\"></x-avatar>\r\n * ```\r\n *\r\n */\r\n readonly gap = input<string, XNumber>(this.config?.gap ?? '4px', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 背景颜色\r\n * @en_US Background color\r\n * @example\r\n *\r\n * ```html\r\n * <x-avatar label=\"ng-nest\" backgroundColor=\"#999999\"></x-avatar>\r\n * <x-avatar label=\"ng-nest\" backgroundColor=\"#888888\"></x-avatar>\r\n * ```\r\n *\r\n */\r\n readonly backgroundColor = input<string>(this.config?.backgroundColor ?? '#999999');\r\n /**\r\n * @zh_CN 文字颜色\r\n * @en_US color\r\n * @example\r\n *\r\n * ```html\r\n * <x-avatar label=\"ng-nest\" color=\"#FFFFFF\"></x-avatar>\r\n * <x-avatar label=\"ng-nest\" color=\"#333333\"></x-avatar>\r\n * ```\r\n *\r\n */\r\n readonly color = input<string>(this.config?.color ?? '#FFFFFF');\r\n}\r\n\r\n/**\r\n * Avatar Option\r\n */\r\nexport interface XAvatarOption {\r\n /**\r\n * @zh_CN 显示字符\r\n * @en_US Display characters\r\n */\r\n label?: XTemplate;\r\n /**\r\n * @zh_CN 尺寸\r\n * @en_US Size\r\n */\r\n size?: XAvatarSize;\r\n /**\r\n * @zh_CN 显示图标\r\n * @en_US Show icon\r\n */\r\n icon?: string;\r\n /**\r\n * @zh_CN 形状\r\n * @en_US Shape\r\n */\r\n shape?: XAvatarShape;\r\n /**\r\n * @zh_CN 图片地址\r\n * @en_US The map's address\r\n */\r\n src?: string;\r\n /**\r\n * @zh_CN 图片适应方式\r\n * @en_US Image adaptation method\r\n */\r\n fit?: XAvatarFit;\r\n /**\r\n * @zh_CN 字符类型的时候左右边距\r\n * @en_US When the character type is the left and right distance\r\n */\r\n gap?: string;\r\n /**\r\n * @zh_CN 背景颜色\r\n * @en_US Background color\r\n */\r\n backgroundColor?: string;\r\n /**\r\n * @zh_CN 文字颜色\r\n * @en_US color\r\n */\r\n color?: string;\r\n}\r\n\r\n/**\r\n * @zh_CN 头像形状\r\n * @en_US Avatar shape\r\n */\r\nexport type XAvatarShape = XShape;\r\n\r\n/**\r\n * @zh_CN 当展示类型为图片的时候,设置图片如何适应容器框\r\n * @en_US When the display type is picture, set how the picture fits into the container frame\r\n */\r\nexport type XAvatarFit = XFit;\r\n\r\n/**\r\n * @zh_CN 尺寸类型\r\n * @en_US Size type\r\n */\r\nexport type XAvatarSize = number | XSize | XResponseSize;\r\n\r\n/**\r\n * Avatar Group\r\n * @selector x-avatar-group\r\n * @decorator component\r\n */\r\nexport const XAvatarGroupPrefix = 'x-avatar-group';\r\n\r\n/**\r\n * Avatar Group Property\r\n */\r\n@Component({ selector: `${XAvatarGroupPrefix}-property`, template: '' })\r\nexport class XAvatarGroupProperty extends XProperty {}\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ElementRef,\r\n ChangeDetectionStrategy,\r\n OnDestroy,\r\n inject,\r\n signal,\r\n computed,\r\n viewChild,\r\n effect,\r\n AfterViewChecked\r\n} from '@angular/core';\r\nimport { XAvatarPrefix, XAvatarProperty } from './avatar.property';\r\nimport { XIsEmpty, XIsNumber, XIsString, XIsObject, XComputedStyle, XResize, XToCssPx } from '@ng-nest/ui/core';\r\nimport { DOCUMENT, NgClass, NgStyle } from '@angular/common';\r\nimport { debounceTime, map } from 'rxjs';\r\nimport { XIconComponent } from '@ng-nest/ui/icon';\r\nimport { XOutletDirective } from '@ng-nest/ui/outlet';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\nimport type { XClassMap, XResizeObserver, XResponseSize } from '@ng-nest/ui/core';\r\n\r\n@Component({\r\n selector: `${XAvatarPrefix}`,\r\n imports: [NgClass, NgStyle, XOutletDirective, XIconComponent],\r\n templateUrl: './avatar.component.html',\r\n styleUrls: ['./avatar.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XAvatarComponent extends XAvatarProperty implements OnDestroy, AfterViewChecked {\r\n private document = inject(DOCUMENT);\r\n private avatar = viewChild.required<ElementRef<HTMLElement>>('avatar');\r\n private labelRef = viewChild<ElementRef<HTMLElement>>('labelRef');\r\n private fontSize = computed(() => parseFloat(XComputedStyle(this.document.documentElement, 'font-size')));\r\n private resizeObserver!: XResizeObserver;\r\n private labelWidth = signal(this.labelRef()?.nativeElement.clientWidth);\r\n private documentWidth = toSignal(\r\n XResize(this.document.documentElement).pipe(\r\n debounceTime(30),\r\n map(({ resizeObserver }) => {\r\n this.resizeObserver = resizeObserver;\r\n return this.document.documentElement.clientWidth;\r\n })\r\n ),\r\n {\r\n initialValue: this.document.documentElement.clientWidth\r\n }\r\n );\r\n isImgError = signal(false);\r\n styleMap = computed(() => {\r\n const size = this.size();\r\n const width = this.documentWidth();\r\n if (XIsNumber(size)) {\r\n return {\r\n height: `${size}px`,\r\n width: `${size}px`,\r\n lineHeight: `${size}px`,\r\n fontSize: `${size * 0.6}px`\r\n };\r\n } else if (XIsObject<XResponseSize>(size)) {\r\n const { xs, sm, md, lg, xl } = size;\r\n let nsize = 40;\r\n if (xs && width < 768) {\r\n nsize = xs;\r\n }\r\n if (sm && width >= 768) {\r\n nsize = sm;\r\n }\r\n if (md && width >= 992) {\r\n nsize = md;\r\n }\r\n if (lg && width >= 1200) {\r\n nsize = lg;\r\n }\r\n if (xl && width >= 1920) {\r\n nsize = xl;\r\n }\r\n return {\r\n height: `${nsize}px`,\r\n width: `${nsize}px`,\r\n lineHeight: `${nsize}px`,\r\n fontSize: `${nsize * 0.6}px`\r\n };\r\n } else {\r\n return {};\r\n }\r\n });\r\n classMap = computed(() => {\r\n const classMap: XClassMap = {\r\n [`${XAvatarPrefix}-${this.shape()}`]: !XIsEmpty(this.shape())\r\n };\r\n const size = this.size();\r\n if (XIsString(size)) {\r\n classMap[`${XAvatarPrefix}-${size}`] = !XIsEmpty(size);\r\n } else if (XIsObject<XResponseSize>(size)) {\r\n classMap[`${XAvatarPrefix}-medium`] = true;\r\n }\r\n\r\n return classMap;\r\n });\r\n labelStyleMap = computed(() => {\r\n const label = this.label();\r\n const labelRef = this.labelRef();\r\n const labelWidth = this.labelWidth();\r\n if (!label || !this.avatar() || !labelRef || !labelWidth) return {};\r\n const eleWidth = this.avatar().nativeElement.clientWidth;\r\n let scale = (eleWidth - XToCssPx(this.gap(), this.fontSize()) * 2) / labelWidth;\r\n scale = scale > 1 ? 1 : scale;\r\n return { transform: `scale(${scale})` };\r\n });\r\n\r\n constructor() {\r\n super();\r\n effect(() => this.documentWidth());\r\n }\r\n\r\n ngAfterViewChecked() {\r\n if (this.labelRef()) {\r\n this.labelWidth.set(this.labelRef()?.nativeElement.clientWidth);\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.resizeObserver?.disconnect();\r\n }\r\n\r\n imgError() {\r\n this.isImgError.set(true);\r\n }\r\n}\r\n","<span\r\n #avatar\r\n class=\"x-avatar\"\r\n [class.x-avatar-label]=\"label()\"\r\n [ngClass]=\"classMap()\"\r\n [class.x-avatar-error]=\"isImgError()\"\r\n [ngStyle]=\"styleMap()\"\r\n [style.backgroundColor]=\"backgroundColor()\"\r\n>\r\n @if (src() && !isImgError()) {\r\n <img [src]=\"src()\" [style.object-fit]=\"fit()\" (error)=\"imgError()\" />\r\n }\r\n @if (icon()) {\r\n <x-icon [type]=\"icon()\"></x-icon>\r\n }\r\n @if (isImgError()) {\r\n <x-icon type=\"fto-image\"></x-icon>\r\n }\r\n @if (label()) {\r\n <span #labelRef class=\"x-avatar-text\" [ngStyle]=\"labelStyleMap()\" *xOutlet=\"label(); context: { $label: label() }\">\r\n {{ label() }}\r\n </span>\r\n }\r\n</span>\r\n","import { Component, ViewEncapsulation, ChangeDetectionStrategy, HostBinding } from '@angular/core';\r\nimport { XAvatarGroupPrefix, XAvatarGroupProperty } from './avatar.property';\r\n\r\n@Component({\r\n selector: `${XAvatarGroupPrefix}`,\r\n templateUrl: './avatar-group.component.html',\r\n styleUrls: ['./avatar-group.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XAvatarGroupComponent extends XAvatarGroupProperty {\r\n @HostBinding('class.x-avatar-group') _has = true;\r\n}\r\n","<ng-content></ng-content>\r\n","import { NgModule } from '@angular/core';\r\nimport { XAvatarComponent } from './avatar.component';\r\nimport { XAvatarGroupComponent } from './avatar-group.component';\r\n\r\n@NgModule({\r\n exports: [XAvatarComponent, XAvatarGroupComponent],\r\n imports: [XAvatarComponent, XAvatarGroupComponent]\r\n})\r\nexport class XAvatarModule {}\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-avatar.mjs","sources":["../../../../lib/ng-nest/ui/avatar/avatar.property.ts","../../../../lib/ng-nest/ui/avatar/avatar.component.ts","../../../../lib/ng-nest/ui/avatar/avatar.component.html","../../../../lib/ng-nest/ui/avatar/avatar-group.component.ts","../../../../lib/ng-nest/ui/avatar/avatar-group.component.html","../../../../lib/ng-nest/ui/avatar/avatar.module.ts","../../../../lib/ng-nest/ui/avatar/ng-nest-ui-avatar.ts"],"sourcesContent":["import {\r\n XSize,\r\n XTemplate,\r\n XProperty,\r\n XShape,\r\n XFit,\r\n XResponseSize,\r\n XNumber,\r\n XPropertyFunction,\r\n XToCssPixelValue\r\n} from '@ng-nest/ui/core';\r\nimport { Component, input } from '@angular/core';\r\n\r\n/**\r\n * Avatar\r\n * @selector x-avatar\r\n * @decorator component\r\n */\r\nexport const XAvatarPrefix = 'x-avatar';\r\nexport const X_AVATAR_CONFIG_NAME = 'avatar';\r\n\r\n/**\r\n * Avatar Property\r\n */\r\n@Component({ selector: `${XAvatarPrefix}-property`, template: '' })\r\nexport class XAvatarProperty extends XPropertyFunction(X_AVATAR_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 显示字符\r\n * @en_US Display characters\r\n * @example\r\n *\r\n * ```html\r\n * <x-avatar label=\"ng-nest\"></x-avatar>\r\n * ```\r\n *\r\n */\r\n readonly label = input<XTemplate>();\r\n /**\r\n * @zh_CN 尺寸\r\n * @en_US Size\r\n * @example\r\n *\r\n * ```html\r\n * <x-avatar size=\"big\" icon=\"fto-user\"></x-avatar>\r\n * <x-avatar size=\"large\" icon=\"fto-user\"></x-avatar>\r\n * <x-avatar size=\"medium\" icon=\"fto-user\"></x-avatar>\r\n * <x-avatar size=\"small\" icon=\"fto-user\"></x-avatar>\r\n * <x-avatar size=\"mini\" icon=\"fto-user\"></x-avatar>\r\n * <x-avatar [size]=\"100\" icon=\"fto-user\"></x-avatar>\r\n * <x-avatar [size]=\"{ xs: 20, sm: 60, md: 90, lg: 120, xl: 160 }\" icon=\"fto-user\"></x-avatar>\r\n * ```\r\n *\r\n */\r\n readonly size = input<XAvatarSize>(this.config?.size ?? 'medium');\r\n /**\r\n * @zh_CN 显示图标\r\n * @en_US Show icon\r\n * @example\r\n *\r\n * ```html\r\n * <x-avatar icon=\"fto-user\"></x-avatar>\r\n * ```\r\n *\r\n */\r\n readonly icon = input<string>();\r\n /**\r\n * @zh_CN 形状\r\n * @en_US Shape\r\n * @example\r\n *\r\n * ```html\r\n * <x-avatar icon=\"fto-user\" shape=\"circle\"></x-avatar>\r\n * <x-avatar icon=\"fto-user\" shape=\"square\"></x-avatar>\r\n * ```\r\n *\r\n */\r\n readonly shape = input<XAvatarShape>(this.config?.shape ?? 'circle');\r\n /**\r\n * @zh_CN 图片地址\r\n * @en_US The map's address\r\n * @example\r\n *\r\n * ```html\r\n * <x-avatar src=\"https://ngnest.com/img/logo/logo-144x144.png\"></x-avatar>\r\n * ```\r\n *\r\n */\r\n readonly src = input<string>();\r\n /**\r\n * @zh_CN 图片适应方式\r\n * @en_US Image adaptation method\r\n * @example\r\n *\r\n * ```html\r\n * <x-avatar fit=\"fill\" src=\"https://ngnest.com/img/logo/logo-144x144.png\"></x-avatar>\r\n * <x-avatar fit=\"contain\" src=\"https://ngnest.com/img/logo/logo-144x144.png\"></x-avatar>\r\n * <x-avatar fit=\"cover\" src=\"https://ngnest.com/img/logo/logo-144x144.png\"></x-avatar>\r\n * <x-avatar fit=\"none\" src=\"https://ngnest.com/img/logo/logo-144x144.png\"></x-avatar>\r\n * <x-avatar fit=\"scale-down\" src=\"https://ngnest.com/img/logo/logo-144x144.png\"></x-avatar>\r\n * ```\r\n *\r\n */\r\n readonly fit = input<XAvatarFit>(this.config?.fit ?? 'cover');\r\n /**\r\n * @zh_CN 字符类型的时候左右边距\r\n * @en_US When the character type is the left and right distance\r\n * @example\r\n *\r\n * ```html\r\n * <x-avatar label=\"ng-nest\" gap=\"5\"></x-avatar>\r\n * <x-avatar label=\"ng-nest\" gap=\"5px\"></x-avatar>\r\n * ```\r\n *\r\n */\r\n readonly gap = input<string, XNumber>(this.config?.gap ?? '4px', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 背景颜色\r\n * @en_US Background color\r\n * @example\r\n *\r\n * ```html\r\n * <x-avatar label=\"ng-nest\" backgroundColor=\"#999999\"></x-avatar>\r\n * <x-avatar label=\"ng-nest\" backgroundColor=\"#888888\"></x-avatar>\r\n * ```\r\n *\r\n */\r\n readonly backgroundColor = input<string>(this.config?.backgroundColor ?? '#999999');\r\n /**\r\n * @zh_CN 文字颜色\r\n * @en_US color\r\n * @example\r\n *\r\n * ```html\r\n * <x-avatar label=\"ng-nest\" color=\"#FFFFFF\"></x-avatar>\r\n * <x-avatar label=\"ng-nest\" color=\"#333333\"></x-avatar>\r\n * ```\r\n *\r\n */\r\n readonly color = input<string>(this.config?.color ?? '#FFFFFF');\r\n}\r\n\r\n/**\r\n * Avatar Option\r\n */\r\nexport interface XAvatarOption {\r\n /**\r\n * @zh_CN 显示字符\r\n * @en_US Display characters\r\n */\r\n label?: XTemplate;\r\n /**\r\n * @zh_CN 尺寸\r\n * @en_US Size\r\n */\r\n size?: XAvatarSize;\r\n /**\r\n * @zh_CN 显示图标\r\n * @en_US Show icon\r\n */\r\n icon?: string;\r\n /**\r\n * @zh_CN 形状\r\n * @en_US Shape\r\n */\r\n shape?: XAvatarShape;\r\n /**\r\n * @zh_CN 图片地址\r\n * @en_US The map's address\r\n */\r\n src?: string;\r\n /**\r\n * @zh_CN 图片适应方式\r\n * @en_US Image adaptation method\r\n */\r\n fit?: XAvatarFit;\r\n /**\r\n * @zh_CN 字符类型的时候左右边距\r\n * @en_US When the character type is the left and right distance\r\n */\r\n gap?: string;\r\n /**\r\n * @zh_CN 背景颜色\r\n * @en_US Background color\r\n */\r\n backgroundColor?: string;\r\n /**\r\n * @zh_CN 文字颜色\r\n * @en_US color\r\n */\r\n color?: string;\r\n}\r\n\r\n/**\r\n * @zh_CN 头像形状\r\n * @en_US Avatar shape\r\n */\r\nexport type XAvatarShape = XShape;\r\n\r\n/**\r\n * @zh_CN 当展示类型为图片的时候,设置图片如何适应容器框\r\n * @en_US When the display type is picture, set how the picture fits into the container frame\r\n */\r\nexport type XAvatarFit = XFit;\r\n\r\n/**\r\n * @zh_CN 尺寸类型\r\n * @en_US Size type\r\n */\r\nexport type XAvatarSize = number | XSize | XResponseSize;\r\n\r\n/**\r\n * Avatar Group\r\n * @selector x-avatar-group\r\n * @decorator component\r\n */\r\nexport const XAvatarGroupPrefix = 'x-avatar-group';\r\n\r\n/**\r\n * Avatar Group Property\r\n */\r\n@Component({ selector: `${XAvatarGroupPrefix}-property`, template: '' })\r\nexport class XAvatarGroupProperty extends XProperty {}\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ElementRef,\r\n ChangeDetectionStrategy,\r\n OnDestroy,\r\n inject,\r\n signal,\r\n computed,\r\n viewChild,\r\n effect,\r\n AfterViewChecked\r\n} from '@angular/core';\r\nimport { XAvatarPrefix, XAvatarProperty } from './avatar.property';\r\nimport { XIsEmpty, XIsNumber, XIsString, XIsObject, XComputedStyle, XResize, XToCssPx } from '@ng-nest/ui/core';\r\nimport { DOCUMENT, NgClass, NgStyle } from '@angular/common';\r\nimport { debounceTime, map } from 'rxjs';\r\nimport { XIconComponent } from '@ng-nest/ui/icon';\r\nimport { XOutletDirective } from '@ng-nest/ui/outlet';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\nimport type { XClassMap, XResizeObserver, XResponseSize } from '@ng-nest/ui/core';\r\n\r\n@Component({\r\n selector: `${XAvatarPrefix}`,\r\n imports: [NgClass, NgStyle, XOutletDirective, XIconComponent],\r\n templateUrl: './avatar.component.html',\r\n styleUrls: ['./avatar.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XAvatarComponent extends XAvatarProperty implements OnDestroy, AfterViewChecked {\r\n private document = inject(DOCUMENT);\r\n private avatar = viewChild.required<ElementRef<HTMLElement>>('avatar');\r\n private labelRef = viewChild<ElementRef<HTMLElement>>('labelRef');\r\n private fontSize = computed(() => parseFloat(XComputedStyle(this.document.documentElement, 'font-size')));\r\n private resizeObserver!: XResizeObserver;\r\n private labelWidth = signal(this.labelRef()?.nativeElement.clientWidth);\r\n private documentWidth = toSignal(\r\n XResize(this.document.documentElement).pipe(\r\n debounceTime(30),\r\n map(({ resizeObserver }) => {\r\n this.resizeObserver = resizeObserver;\r\n return this.document.documentElement.clientWidth;\r\n })\r\n ),\r\n {\r\n initialValue: this.document.documentElement.clientWidth\r\n }\r\n );\r\n isImgError = signal(false);\r\n styleMap = computed(() => {\r\n const size = this.size();\r\n const width = this.documentWidth();\r\n if (XIsNumber(size)) {\r\n return {\r\n height: `${size}px`,\r\n width: `${size}px`,\r\n lineHeight: `${size}px`,\r\n fontSize: `${size * 0.6}px`\r\n };\r\n } else if (XIsObject<XResponseSize>(size)) {\r\n const { xs, sm, md, lg, xl } = size;\r\n let nsize = 40;\r\n if (xs && width < 768) {\r\n nsize = xs;\r\n }\r\n if (sm && width >= 768) {\r\n nsize = sm;\r\n }\r\n if (md && width >= 992) {\r\n nsize = md;\r\n }\r\n if (lg && width >= 1200) {\r\n nsize = lg;\r\n }\r\n if (xl && width >= 1920) {\r\n nsize = xl;\r\n }\r\n return {\r\n height: `${nsize}px`,\r\n width: `${nsize}px`,\r\n lineHeight: `${nsize}px`,\r\n fontSize: `${nsize * 0.6}px`\r\n };\r\n } else {\r\n return {};\r\n }\r\n });\r\n classMap = computed(() => {\r\n const classMap: XClassMap = {\r\n [`${XAvatarPrefix}-${this.shape()}`]: !XIsEmpty(this.shape())\r\n };\r\n const size = this.size();\r\n if (XIsString(size)) {\r\n classMap[`${XAvatarPrefix}-${size}`] = !XIsEmpty(size);\r\n } else if (XIsObject<XResponseSize>(size)) {\r\n classMap[`${XAvatarPrefix}-medium`] = true;\r\n }\r\n\r\n return classMap;\r\n });\r\n labelStyleMap = computed(() => {\r\n const label = this.label();\r\n const labelRef = this.labelRef();\r\n const labelWidth = this.labelWidth();\r\n if (!label || !this.avatar() || !labelRef || !labelWidth) return {};\r\n const eleWidth = this.avatar().nativeElement.clientWidth;\r\n let scale = (eleWidth - XToCssPx(this.gap(), this.fontSize()) * 2) / labelWidth;\r\n scale = scale > 1 ? 1 : scale;\r\n return { transform: `scale(${scale})` };\r\n });\r\n\r\n constructor() {\r\n super();\r\n effect(() => this.documentWidth());\r\n }\r\n\r\n ngAfterViewChecked() {\r\n if (this.labelRef()) {\r\n this.labelWidth.set(this.labelRef()?.nativeElement.clientWidth);\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.resizeObserver?.disconnect();\r\n }\r\n\r\n imgError() {\r\n this.isImgError.set(true);\r\n }\r\n}\r\n","<span\r\n #avatar\r\n class=\"x-avatar\"\r\n [class.x-avatar-label]=\"label()\"\r\n [ngClass]=\"classMap()\"\r\n [class.x-avatar-error]=\"isImgError()\"\r\n [ngStyle]=\"styleMap()\"\r\n [style.backgroundColor]=\"backgroundColor()\"\r\n>\r\n @if (src() && !isImgError()) {\r\n <img [src]=\"src()\" [style.object-fit]=\"fit()\" (error)=\"imgError()\" />\r\n }\r\n @if (icon()) {\r\n <x-icon [type]=\"icon()\"></x-icon>\r\n }\r\n @if (isImgError()) {\r\n <x-icon type=\"fto-image\"></x-icon>\r\n }\r\n @if (label()) {\r\n <span #labelRef class=\"x-avatar-text\" [ngStyle]=\"labelStyleMap()\" *xOutlet=\"label(); context: { $label: label() }\">\r\n {{ label() }}\r\n </span>\r\n }\r\n</span>\r\n","import { Component, ViewEncapsulation, ChangeDetectionStrategy, HostBinding } from '@angular/core';\r\nimport { XAvatarGroupPrefix, XAvatarGroupProperty } from './avatar.property';\r\n\r\n@Component({\r\n selector: `${XAvatarGroupPrefix}`,\r\n templateUrl: './avatar-group.component.html',\r\n styleUrls: ['./avatar-group.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XAvatarGroupComponent extends XAvatarGroupProperty {\r\n @HostBinding('class.x-avatar-group') _has = true;\r\n}\r\n","<ng-content></ng-content>\r\n","import { NgModule } from '@angular/core';\r\nimport { XAvatarComponent } from './avatar.component';\r\nimport { XAvatarGroupComponent } from './avatar-group.component';\r\n\r\n@NgModule({\r\n exports: [XAvatarComponent, XAvatarGroupComponent],\r\n imports: [XAvatarComponent, XAvatarGroupComponent]\r\n})\r\nexport class XAvatarModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -24,17 +24,17 @@ class XBackTopProperty extends XPropertyFunction(X_BACK_TOP_CONFIG_NAME) {
24
24
  * @zh_CN 距离右边的距离
25
25
  * @en_US Distance to the right
26
26
  */
27
- this.right = input(this.config?.right ?? '2.5rem', ...(ngDevMode ? [{ debugName: "right", transform: XToCssPixelValue }] : [{ transform: XToCssPixelValue }]));
27
+ this.right = input(this.config?.right ?? '2.5rem', { ...(ngDevMode ? { debugName: "right" } : {}), transform: XToCssPixelValue });
28
28
  /**
29
29
  * @zh_CN 距离底部的距离
30
30
  * @en_US Distance from bottom
31
31
  */
32
- this.bottom = input(this.config?.bottom ?? '2.5rem', ...(ngDevMode ? [{ debugName: "bottom", transform: XToCssPixelValue }] : [{ transform: XToCssPixelValue }]));
32
+ this.bottom = input(this.config?.bottom ?? '2.5rem', { ...(ngDevMode ? { debugName: "bottom" } : {}), transform: XToCssPixelValue });
33
33
  /**
34
34
  * @zh_CN 滚动多少高度后显示
35
35
  * @en_US Display after scrolling how much height
36
36
  */
37
- this.visibilityHeight = input(this.config?.visibilityHeight ?? 200, ...(ngDevMode ? [{ debugName: "visibilityHeight", transform: XToNumber }] : [{ transform: XToNumber }]));
37
+ this.visibilityHeight = input(this.config?.visibilityHeight ?? 200, { ...(ngDevMode ? { debugName: "visibilityHeight" } : {}), transform: XToNumber });
38
38
  /**
39
39
  * @zh_CN 内容模板
40
40
  * @en_US Content template
@@ -46,10 +46,10 @@ class XBackTopProperty extends XPropertyFunction(X_BACK_TOP_CONFIG_NAME) {
46
46
  */
47
47
  this.target = input(...(ngDevMode ? [undefined, { debugName: "target" }] : []));
48
48
  }
49
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: XBackTopProperty, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
50
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.0.0", type: XBackTopProperty, isStandalone: true, selector: "x-back-top-property", inputs: { right: { classPropertyName: "right", publicName: "right", isSignal: true, isRequired: false, transformFunction: null }, bottom: { classPropertyName: "bottom", publicName: "bottom", isSignal: true, isRequired: false, transformFunction: null }, visibilityHeight: { classPropertyName: "visibilityHeight", publicName: "visibilityHeight", isSignal: true, isRequired: false, transformFunction: null }, template: { classPropertyName: "template", publicName: "template", isSignal: true, isRequired: false, transformFunction: null }, target: { classPropertyName: "target", publicName: "target", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
49
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XBackTopProperty, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
50
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.0.6", type: XBackTopProperty, isStandalone: true, selector: "x-back-top-property", inputs: { right: { classPropertyName: "right", publicName: "right", isSignal: true, isRequired: false, transformFunction: null }, bottom: { classPropertyName: "bottom", publicName: "bottom", isSignal: true, isRequired: false, transformFunction: null }, visibilityHeight: { classPropertyName: "visibilityHeight", publicName: "visibilityHeight", isSignal: true, isRequired: false, transformFunction: null }, template: { classPropertyName: "template", publicName: "template", isSignal: true, isRequired: false, transformFunction: null }, target: { classPropertyName: "target", publicName: "target", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
51
51
  }
52
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: XBackTopProperty, decorators: [{
52
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XBackTopProperty, decorators: [{
53
53
  type: Component,
54
54
  args: [{ selector: `${XBackTopPrefix}-property`, template: '' }]
55
55
  }], propDecorators: { right: [{ type: i0.Input, args: [{ isSignal: true, alias: "right", required: false }] }], bottom: [{ type: i0.Input, args: [{ isSignal: true, alias: "bottom", required: false }] }], visibilityHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "visibilityHeight", required: false }] }], template: [{ type: i0.Input, args: [{ isSignal: true, alias: "template", required: false }] }], target: [{ type: i0.Input, args: [{ isSignal: true, alias: "target", required: false }] }] } });
@@ -141,20 +141,20 @@ class XBackTopComponent extends XBackTopProperty {
141
141
  this.scroll().scrollTop = top;
142
142
  }
143
143
  }
144
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: XBackTopComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
145
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.0", type: XBackTopComponent, isStandalone: true, selector: "x-back-top", viewQueries: [{ propertyName: "backTopTpl", first: true, predicate: ["backTopTpl"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<ng-template #backTopTpl>\r\n <div class=\"x-back-top\" (click)=\"onBackTop()\">\r\n @if (!template()) {\r\n <x-link icon=\"fto-arrow-up\"> </x-link>\r\n }\r\n @if (template()) {\r\n <ng-container *ngTemplateOutlet=\"template()!\"></ng-container>\r\n }\r\n </div>\r\n</ng-template>\r\n", styles: [".x-back-top{margin:0;padding:0}.x-back-top{display:flex;align-items:center;justify-content:center}.x-back-top>x-link .x-link{width:2.5rem;height:2.5rem;border-radius:50%;background-color:var(--x-background-a100);font-size:1.25rem;border:var(--x-border-width) var(--x-border-style) var(--x-border)}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: XLinkComponent, selector: "x-link" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
144
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XBackTopComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
145
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.6", type: XBackTopComponent, isStandalone: true, selector: "x-back-top", viewQueries: [{ propertyName: "backTopTpl", first: true, predicate: ["backTopTpl"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<ng-template #backTopTpl>\r\n <div class=\"x-back-top\" (click)=\"onBackTop()\">\r\n @if (!template()) {\r\n <x-link icon=\"fto-arrow-up\"> </x-link>\r\n }\r\n @if (template()) {\r\n <ng-container *ngTemplateOutlet=\"template()!\"></ng-container>\r\n }\r\n </div>\r\n</ng-template>\r\n", styles: [".x-back-top{margin:0;padding:0}.x-back-top{display:flex;align-items:center;justify-content:center}.x-back-top>x-link .x-link{width:2.5rem;height:2.5rem;border-radius:50%;background-color:var(--x-background-a100);font-size:1.25rem;border:var(--x-border-width) var(--x-border-style) var(--x-border)}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: XLinkComponent, selector: "x-link" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
146
146
  }
147
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: XBackTopComponent, decorators: [{
147
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XBackTopComponent, decorators: [{
148
148
  type: Component,
149
149
  args: [{ selector: `${XBackTopPrefix}`, imports: [NgTemplateOutlet, XLinkComponent], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-template #backTopTpl>\r\n <div class=\"x-back-top\" (click)=\"onBackTop()\">\r\n @if (!template()) {\r\n <x-link icon=\"fto-arrow-up\"> </x-link>\r\n }\r\n @if (template()) {\r\n <ng-container *ngTemplateOutlet=\"template()!\"></ng-container>\r\n }\r\n </div>\r\n</ng-template>\r\n", styles: [".x-back-top{margin:0;padding:0}.x-back-top{display:flex;align-items:center;justify-content:center}.x-back-top>x-link .x-link{width:2.5rem;height:2.5rem;border-radius:50%;background-color:var(--x-background-a100);font-size:1.25rem;border:var(--x-border-width) var(--x-border-style) var(--x-border)}\n"] }]
150
150
  }], ctorParameters: () => [], propDecorators: { backTopTpl: [{ type: i0.ViewChild, args: ['backTopTpl', { isSignal: true }] }] } });
151
151
 
152
152
  class XBackTopModule {
153
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: XBackTopModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
154
- /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.0", ngImport: i0, type: XBackTopModule, imports: [XBackTopComponent], exports: [XBackTopComponent] }); }
155
- /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: XBackTopModule, imports: [XBackTopComponent] }); }
153
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XBackTopModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
154
+ /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.6", ngImport: i0, type: XBackTopModule, imports: [XBackTopComponent], exports: [XBackTopComponent] }); }
155
+ /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XBackTopModule, imports: [XBackTopComponent] }); }
156
156
  }
157
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: XBackTopModule, decorators: [{
157
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XBackTopModule, decorators: [{
158
158
  type: NgModule,
159
159
  args: [{
160
160
  exports: [XBackTopComponent],
@@ -1 +1 @@
1
- {"version":3,"file":"ng-nest-ui-back-top.mjs","sources":["../../../../lib/ng-nest/ui/back-top/back-top.property.ts","../../../../lib/ng-nest/ui/back-top/back-top.component.ts","../../../../lib/ng-nest/ui/back-top/back-top.component.html","../../../../lib/ng-nest/ui/back-top/back-top.module.ts","../../../../lib/ng-nest/ui/back-top/ng-nest-ui-back-top.ts"],"sourcesContent":["import { XPropertyFunction, XToCssPixelValue, XToNumber } from '@ng-nest/ui/core';\r\nimport { TemplateRef, Component, input } from '@angular/core';\r\nimport type { XNumber } from '@ng-nest/ui/core';\r\n\r\n/**\r\n * BackTop\r\n * @selector x-back-top\r\n * @decorator component\r\n */\r\nexport const XBackTopPrefix = 'x-back-top';\r\nconst X_BACK_TOP_CONFIG_NAME = 'backTop';\r\n\r\n/**\r\n * BackTop Property\r\n */\r\n@Component({ selector: `${XBackTopPrefix}-property`, template: '' })\r\nexport class XBackTopProperty extends XPropertyFunction(X_BACK_TOP_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 距离右边的距离\r\n * @en_US Distance to the right\r\n */\r\n readonly right = input<string, XNumber>(this.config?.right ?? '2.5rem', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 距离底部的距离\r\n * @en_US Distance from bottom\r\n */\r\n readonly bottom = input<string, XNumber>(this.config?.bottom ?? '2.5rem', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 滚动多少高度后显示\r\n * @en_US Display after scrolling how much height\r\n */\r\n readonly visibilityHeight = input<number, XNumber>(this.config?.visibilityHeight ?? 200, { transform: XToNumber });\r\n /**\r\n * @zh_CN 内容模板\r\n * @en_US Content template\r\n */\r\n readonly template = input<TemplateRef<any>>();\r\n /**\r\n * @zh_CN 滚动的元素\r\n * @en_US Scroll element\r\n */\r\n readonly target = input<string | HTMLElement>();\r\n}\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n OnDestroy,\r\n TemplateRef,\r\n ViewContainerRef,\r\n inject,\r\n viewChild,\r\n computed,\r\n effect,\r\n signal\r\n} from '@angular/core';\r\nimport { XBackTopPrefix, XBackTopProperty } from './back-top.property';\r\nimport { XRequestAnimationFrame, XIsNumber, XIsString } from '@ng-nest/ui/core';\r\nimport { DOCUMENT, NgTemplateOutlet } from '@angular/common';\r\nimport { fromEvent, Subject } from 'rxjs';\r\nimport { throttleTime, takeUntil, map, tap } from 'rxjs/operators';\r\nimport { XPortalService, XPortalOverlayRef } from '@ng-nest/ui/portal';\r\nimport { XLinkComponent } from '@ng-nest/ui/link';\r\n\r\n@Component({\r\n selector: `${XBackTopPrefix}`,\r\n imports: [NgTemplateOutlet, XLinkComponent],\r\n templateUrl: './back-top.component.html',\r\n styleUrls: ['./back-top.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XBackTopComponent extends XBackTopProperty implements OnDestroy {\r\n backTopTpl = viewChild.required<TemplateRef<void>>('backTopTpl');\r\n visiable = signal(false);\r\n scrolling = signal(false);\r\n portalRef!: XPortalOverlayRef<any>;\r\n private doc = inject(DOCUMENT);\r\n private portal = inject(XPortalService);\r\n private viewContainerRef = inject(ViewContainerRef);\r\n private unSubject = new Subject<void>();\r\n\r\n scroll = computed(() => {\r\n const tg = this.target();\r\n if (!tg) return this.doc?.defaultView;\r\n return XIsString(tg) ? this.doc?.querySelector(tg) : tg;\r\n });\r\n\r\n constructor() {\r\n super();\r\n effect(() => this.addEvent());\r\n }\r\n\r\n ngOnDestroy() {\r\n this.unSubject.next();\r\n this.unSubject.complete();\r\n }\r\n\r\n onBackTop() {\r\n if (!this.scrolling()) {\r\n this.scrolling.set(true);\r\n this.scrollTo(0, 200);\r\n }\r\n }\r\n\r\n private addEvent() {\r\n this.unSubject.next();\r\n fromEvent(this.scroll()!, 'scroll')\r\n .pipe(\r\n throttleTime(20),\r\n map(() => this.scrollTop()),\r\n tap((x) => this.setVisible(x)),\r\n takeUntil(this.unSubject)\r\n )\r\n .subscribe();\r\n }\r\n\r\n private scrollTop() {\r\n if (this.scroll() === this.doc.defaultView) {\r\n return this.doc.documentElement.scrollTop;\r\n } else {\r\n return (this.scroll() as HTMLElement).scrollTop;\r\n }\r\n }\r\n\r\n private setVisible(scrollTop: number) {\r\n const visible = scrollTop >= (this.visibilityHeight() as number);\r\n if (this.visiable() !== visible) {\r\n this.visiable.set(visible);\r\n if (this.visiable()) {\r\n this.portalRef = this.portal.attach({\r\n content: this.backTopTpl(),\r\n viewContainerRef: this.viewContainerRef,\r\n overlayConfig: {\r\n width: '2.5rem',\r\n height: '2.5rem',\r\n positionStrategy: this.portal.setPlace('bottom-end', ...['0', this.right(), this.bottom(), '0'])\r\n }\r\n });\r\n } else {\r\n this.portalRef?.overlayRef?.hasAttached() && this.portalRef.overlayRef.detach();\r\n }\r\n }\r\n }\r\n\r\n private scrollTo(to: number, duration: number) {\r\n const difference = to - this.scrollTop();\r\n const perTick = (difference / duration) * 10;\r\n XRequestAnimationFrame(() => {\r\n const num = this.scrollTop() + perTick;\r\n if (XIsNumber(num) && num !== Infinity) {\r\n this.setScrollTop(num);\r\n }\r\n if (this.scrollTop() === to || duration <= 0) {\r\n this.scrolling.set(false);\r\n return;\r\n } else {\r\n this.scrollTo(to, duration - 10);\r\n }\r\n });\r\n }\r\n\r\n private setScrollTop(top: number) {\r\n if (this.scroll() === this.doc.defaultView) {\r\n this.doc.documentElement!.scrollTop = top!;\r\n } else {\r\n (this.scroll() as HTMLElement).scrollTop = top!;\r\n }\r\n }\r\n}\r\n","<ng-template #backTopTpl>\r\n <div class=\"x-back-top\" (click)=\"onBackTop()\">\r\n @if (!template()) {\r\n <x-link icon=\"fto-arrow-up\"> </x-link>\r\n }\r\n @if (template()) {\r\n <ng-container *ngTemplateOutlet=\"template()!\"></ng-container>\r\n }\r\n </div>\r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\r\nimport { XBackTopComponent } from './back-top.component';\r\n@NgModule({\r\n exports: [XBackTopComponent],\r\n imports: [XBackTopComponent]\r\n})\r\nexport class XBackTopModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;AAIA;;;;AAIG;AACI,MAAM,cAAc,GAAG;AAC9B,MAAM,sBAAsB,GAAG,SAAS;AAExC;;AAEG;MAEU,gBAAiB,SAAQ,iBAAiB,CAAC,sBAAsB,CAAC,CAAA;AAD/E,IAAA,WAAA,GAAA;;AAEE;;;AAGG;QACM,IAAA,CAAA,KAAK,GAAG,KAAK,CAAkB,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,QAAQ,yCAAI,SAAS,EAAE,gBAAgB,EAAA,CAAA,GAAA,CAA7B,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA,CAAA,CAAC;AACxG;;;AAGG;QACM,IAAA,CAAA,MAAM,GAAG,KAAK,CAAkB,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,QAAQ,0CAAI,SAAS,EAAE,gBAAgB,EAAA,CAAA,GAAA,CAA7B,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA,CAAA,CAAC;AAC1G;;;AAGG;QACM,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAkB,IAAI,CAAC,MAAM,EAAE,gBAAgB,IAAI,GAAG,oDAAI,SAAS,EAAE,SAAS,EAAA,CAAA,GAAA,CAAtB,EAAE,SAAS,EAAE,SAAS,EAAE,CAAA,CAAA,CAAC;AAClH;;;AAGG;QACM,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAoB;AAC7C;;;AAGG;QACM,IAAA,CAAA,MAAM,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAwB;AAChD,IAAA;iIA1BY,gBAAgB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,0vBADkC,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;2FACpD,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B,SAAS;mBAAC,EAAE,QAAQ,EAAE,CAAA,EAAG,cAAc,WAAW,EAAE,QAAQ,EAAE,EAAE,EAAE;;;ACc7D,MAAO,iBAAkB,SAAQ,gBAAgB,CAAA;AAgBrD,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;AAhBT,QAAA,IAAA,CAAA,UAAU,GAAG,SAAS,CAAC,QAAQ,CAAoB,YAAY,CAAC;AAChE,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,KAAK,oDAAC;AACxB,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,KAAK,qDAAC;AAEjB,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC;AACtB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC;AAC/B,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC3C,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,OAAO,EAAQ;AAEvC,QAAA,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAC,MAAK;AACrB,YAAA,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE;AACxB,YAAA,IAAI,CAAC,EAAE;AAAE,gBAAA,OAAO,IAAI,CAAC,GAAG,EAAE,WAAW;AACrC,YAAA,OAAO,SAAS,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE;AACzD,QAAA,CAAC,kDAAC;QAIA,MAAM,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC/B;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;AACrB,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;IAC3B;IAEA,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE;AACrB,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AACxB,YAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;QACvB;IACF;IAEQ,QAAQ,GAAA;AACd,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;AACrB,QAAA,SAAS,CAAC,IAAI,CAAC,MAAM,EAAG,EAAE,QAAQ;AAC/B,aAAA,IAAI,CACH,YAAY,CAAC,EAAE,CAAC,EAChB,GAAG,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,EAC3B,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAC9B,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC;AAE1B,aAAA,SAAS,EAAE;IAChB;IAEQ,SAAS,GAAA;QACf,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE;AAC1C,YAAA,OAAO,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,SAAS;QAC3C;aAAO;AACL,YAAA,OAAQ,IAAI,CAAC,MAAM,EAAkB,CAAC,SAAS;QACjD;IACF;AAEQ,IAAA,UAAU,CAAC,SAAiB,EAAA;QAClC,MAAM,OAAO,GAAG,SAAS,IAAK,IAAI,CAAC,gBAAgB,EAAa;AAChE,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,OAAO,EAAE;AAC/B,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;AAC1B,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;gBACnB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;AAClC,oBAAA,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE;oBAC1B,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;AACvC,oBAAA,aAAa,EAAE;AACb,wBAAA,KAAK,EAAE,QAAQ;AACf,wBAAA,MAAM,EAAE,QAAQ;wBAChB,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,GAAG,CAAC;AAChG;AACF,iBAAA,CAAC;YACJ;iBAAO;AACL,gBAAA,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,EAAE;YACjF;QACF;IACF;IAEQ,QAAQ,CAAC,EAAU,EAAE,QAAgB,EAAA;QAC3C,MAAM,UAAU,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE;QACxC,MAAM,OAAO,GAAG,CAAC,UAAU,GAAG,QAAQ,IAAI,EAAE;QAC5C,sBAAsB,CAAC,MAAK;YAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,OAAO;YACtC,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,QAAQ,EAAE;AACtC,gBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;YACxB;YACA,IAAI,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,QAAQ,IAAI,CAAC,EAAE;AAC5C,gBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;gBACzB;YACF;iBAAO;gBACL,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,GAAG,EAAE,CAAC;YAClC;AACF,QAAA,CAAC,CAAC;IACJ;AAEQ,IAAA,YAAY,CAAC,GAAW,EAAA;QAC9B,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE;YAC1C,IAAI,CAAC,GAAG,CAAC,eAAgB,CAAC,SAAS,GAAG,GAAI;QAC5C;aAAO;AACJ,YAAA,IAAI,CAAC,MAAM,EAAkB,CAAC,SAAS,GAAG,GAAI;QACjD;IACF;iIAhGW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC7B9B,uTAUA,EAAA,MAAA,EAAA,CAAA,6SAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDaY,gBAAgB,oJAAE,cAAc,EAAA,QAAA,EAAA,QAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAM/B,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAR7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAG,cAAc,CAAA,CAAE,EAAA,OAAA,EACpB,CAAC,gBAAgB,EAAE,cAAc,CAAC,EAAA,aAAA,EAG5B,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,uTAAA,EAAA,MAAA,EAAA,CAAA,6SAAA,CAAA,EAAA;kGAGI,YAAY,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;MExBpD,cAAc,CAAA;iIAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;kIAAd,cAAc,EAAA,OAAA,EAAA,CAFf,iBAAiB,CAAA,EAAA,OAAA,EAAA,CADjB,iBAAiB,CAAA,EAAA,CAAA,CAAA;AAGhB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,YAFf,iBAAiB,CAAA,EAAA,CAAA,CAAA;;2FAEhB,cAAc,EAAA,UAAA,EAAA,CAAA;kBAJ1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,iBAAiB,CAAC;oBAC5B,OAAO,EAAE,CAAC,iBAAiB;AAC5B,iBAAA;;;ACLD;;AAEG;;;;"}
1
+ {"version":3,"file":"ng-nest-ui-back-top.mjs","sources":["../../../../lib/ng-nest/ui/back-top/back-top.property.ts","../../../../lib/ng-nest/ui/back-top/back-top.component.ts","../../../../lib/ng-nest/ui/back-top/back-top.component.html","../../../../lib/ng-nest/ui/back-top/back-top.module.ts","../../../../lib/ng-nest/ui/back-top/ng-nest-ui-back-top.ts"],"sourcesContent":["import { XPropertyFunction, XToCssPixelValue, XToNumber } from '@ng-nest/ui/core';\r\nimport { TemplateRef, Component, input } from '@angular/core';\r\nimport type { XNumber } from '@ng-nest/ui/core';\r\n\r\n/**\r\n * BackTop\r\n * @selector x-back-top\r\n * @decorator component\r\n */\r\nexport const XBackTopPrefix = 'x-back-top';\r\nconst X_BACK_TOP_CONFIG_NAME = 'backTop';\r\n\r\n/**\r\n * BackTop Property\r\n */\r\n@Component({ selector: `${XBackTopPrefix}-property`, template: '' })\r\nexport class XBackTopProperty extends XPropertyFunction(X_BACK_TOP_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 距离右边的距离\r\n * @en_US Distance to the right\r\n */\r\n readonly right = input<string, XNumber>(this.config?.right ?? '2.5rem', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 距离底部的距离\r\n * @en_US Distance from bottom\r\n */\r\n readonly bottom = input<string, XNumber>(this.config?.bottom ?? '2.5rem', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 滚动多少高度后显示\r\n * @en_US Display after scrolling how much height\r\n */\r\n readonly visibilityHeight = input<number, XNumber>(this.config?.visibilityHeight ?? 200, { transform: XToNumber });\r\n /**\r\n * @zh_CN 内容模板\r\n * @en_US Content template\r\n */\r\n readonly template = input<TemplateRef<any>>();\r\n /**\r\n * @zh_CN 滚动的元素\r\n * @en_US Scroll element\r\n */\r\n readonly target = input<string | HTMLElement>();\r\n}\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n OnDestroy,\r\n TemplateRef,\r\n ViewContainerRef,\r\n inject,\r\n viewChild,\r\n computed,\r\n effect,\r\n signal\r\n} from '@angular/core';\r\nimport { XBackTopPrefix, XBackTopProperty } from './back-top.property';\r\nimport { XRequestAnimationFrame, XIsNumber, XIsString } from '@ng-nest/ui/core';\r\nimport { DOCUMENT, NgTemplateOutlet } from '@angular/common';\r\nimport { fromEvent, Subject } from 'rxjs';\r\nimport { throttleTime, takeUntil, map, tap } from 'rxjs/operators';\r\nimport { XPortalService, XPortalOverlayRef } from '@ng-nest/ui/portal';\r\nimport { XLinkComponent } from '@ng-nest/ui/link';\r\n\r\n@Component({\r\n selector: `${XBackTopPrefix}`,\r\n imports: [NgTemplateOutlet, XLinkComponent],\r\n templateUrl: './back-top.component.html',\r\n styleUrls: ['./back-top.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XBackTopComponent extends XBackTopProperty implements OnDestroy {\r\n backTopTpl = viewChild.required<TemplateRef<void>>('backTopTpl');\r\n visiable = signal(false);\r\n scrolling = signal(false);\r\n portalRef!: XPortalOverlayRef<any>;\r\n private doc = inject(DOCUMENT);\r\n private portal = inject(XPortalService);\r\n private viewContainerRef = inject(ViewContainerRef);\r\n private unSubject = new Subject<void>();\r\n\r\n scroll = computed(() => {\r\n const tg = this.target();\r\n if (!tg) return this.doc?.defaultView;\r\n return XIsString(tg) ? this.doc?.querySelector(tg) : tg;\r\n });\r\n\r\n constructor() {\r\n super();\r\n effect(() => this.addEvent());\r\n }\r\n\r\n ngOnDestroy() {\r\n this.unSubject.next();\r\n this.unSubject.complete();\r\n }\r\n\r\n onBackTop() {\r\n if (!this.scrolling()) {\r\n this.scrolling.set(true);\r\n this.scrollTo(0, 200);\r\n }\r\n }\r\n\r\n private addEvent() {\r\n this.unSubject.next();\r\n fromEvent(this.scroll()!, 'scroll')\r\n .pipe(\r\n throttleTime(20),\r\n map(() => this.scrollTop()),\r\n tap((x) => this.setVisible(x)),\r\n takeUntil(this.unSubject)\r\n )\r\n .subscribe();\r\n }\r\n\r\n private scrollTop() {\r\n if (this.scroll() === this.doc.defaultView) {\r\n return this.doc.documentElement.scrollTop;\r\n } else {\r\n return (this.scroll() as HTMLElement).scrollTop;\r\n }\r\n }\r\n\r\n private setVisible(scrollTop: number) {\r\n const visible = scrollTop >= (this.visibilityHeight() as number);\r\n if (this.visiable() !== visible) {\r\n this.visiable.set(visible);\r\n if (this.visiable()) {\r\n this.portalRef = this.portal.attach({\r\n content: this.backTopTpl(),\r\n viewContainerRef: this.viewContainerRef,\r\n overlayConfig: {\r\n width: '2.5rem',\r\n height: '2.5rem',\r\n positionStrategy: this.portal.setPlace('bottom-end', ...['0', this.right(), this.bottom(), '0'])\r\n }\r\n });\r\n } else {\r\n this.portalRef?.overlayRef?.hasAttached() && this.portalRef.overlayRef.detach();\r\n }\r\n }\r\n }\r\n\r\n private scrollTo(to: number, duration: number) {\r\n const difference = to - this.scrollTop();\r\n const perTick = (difference / duration) * 10;\r\n XRequestAnimationFrame(() => {\r\n const num = this.scrollTop() + perTick;\r\n if (XIsNumber(num) && num !== Infinity) {\r\n this.setScrollTop(num);\r\n }\r\n if (this.scrollTop() === to || duration <= 0) {\r\n this.scrolling.set(false);\r\n return;\r\n } else {\r\n this.scrollTo(to, duration - 10);\r\n }\r\n });\r\n }\r\n\r\n private setScrollTop(top: number) {\r\n if (this.scroll() === this.doc.defaultView) {\r\n this.doc.documentElement!.scrollTop = top!;\r\n } else {\r\n (this.scroll() as HTMLElement).scrollTop = top!;\r\n }\r\n }\r\n}\r\n","<ng-template #backTopTpl>\r\n <div class=\"x-back-top\" (click)=\"onBackTop()\">\r\n @if (!template()) {\r\n <x-link icon=\"fto-arrow-up\"> </x-link>\r\n }\r\n @if (template()) {\r\n <ng-container *ngTemplateOutlet=\"template()!\"></ng-container>\r\n }\r\n </div>\r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\r\nimport { XBackTopComponent } from './back-top.component';\r\n@NgModule({\r\n exports: [XBackTopComponent],\r\n imports: [XBackTopComponent]\r\n})\r\nexport class XBackTopModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -58,7 +58,7 @@ class XBadgeProperty extends XPropertyFunction(X_BADGE_CONFIG_NAME) {
58
58
  * </x-badge>
59
59
  * ```
60
60
  */
61
- this.max = input(99, ...(ngDevMode ? [{ debugName: "max", transform: XToNumber }] : [{ transform: XToNumber }]));
61
+ this.max = input(99, { ...(ngDevMode ? { debugName: "max" } : {}), transform: XToNumber });
62
62
  /**
63
63
  * @zh_CN 显示值
64
64
  * @en_US Display value
@@ -70,7 +70,7 @@ class XBadgeProperty extends XPropertyFunction(X_BADGE_CONFIG_NAME) {
70
70
  * </x-badge>
71
71
  * ```
72
72
  */
73
- this.value = input('', ...(ngDevMode ? [{ debugName: "value", transform: XToString }] : [{ transform: XToString }]));
73
+ this.value = input('', { ...(ngDevMode ? { debugName: "value" } : {}), transform: XToString });
74
74
  /**
75
75
  * @zh_CN 偏移值 left
76
76
  * @en_US Offset left value
@@ -83,7 +83,7 @@ class XBadgeProperty extends XPropertyFunction(X_BADGE_CONFIG_NAME) {
83
83
  * ```
84
84
  *
85
85
  */
86
- this.offsetLeft = input('', ...(ngDevMode ? [{ debugName: "offsetLeft", transform: XToCssPixelValue }] : [{ transform: XToCssPixelValue }]));
86
+ this.offsetLeft = input('', { ...(ngDevMode ? { debugName: "offsetLeft" } : {}), transform: XToCssPixelValue });
87
87
  /**
88
88
  * @zh_CN 偏移值 top
89
89
  * @en_US Offset right value
@@ -96,7 +96,7 @@ class XBadgeProperty extends XPropertyFunction(X_BADGE_CONFIG_NAME) {
96
96
  * ```
97
97
  *
98
98
  */
99
- this.offsetTop = input('', ...(ngDevMode ? [{ debugName: "offsetTop", transform: XToCssPixelValue }] : [{ transform: XToCssPixelValue }]));
99
+ this.offsetTop = input('', { ...(ngDevMode ? { debugName: "offsetTop" } : {}), transform: XToCssPixelValue });
100
100
  /**
101
101
  * @zh_CN 是否显示小红点
102
102
  * @en_US Whether to show the small red dot
@@ -109,7 +109,7 @@ class XBadgeProperty extends XPropertyFunction(X_BADGE_CONFIG_NAME) {
109
109
  * ```
110
110
  *
111
111
  */
112
- this.dot = input(false, ...(ngDevMode ? [{ debugName: "dot", transform: XToBoolean }] : [{ transform: XToBoolean }]));
112
+ this.dot = input(false, { ...(ngDevMode ? { debugName: "dot" } : {}), transform: XToBoolean });
113
113
  /**
114
114
  * @zh_CN 独立使用
115
115
  * @en_US Independent use
@@ -123,12 +123,12 @@ class XBadgeProperty extends XPropertyFunction(X_BADGE_CONFIG_NAME) {
123
123
  * ```
124
124
  *
125
125
  */
126
- this.standalone = input(false, ...(ngDevMode ? [{ debugName: "standalone", transform: XToBoolean }] : [{ transform: XToBoolean }]));
126
+ this.standalone = input(false, { ...(ngDevMode ? { debugName: "standalone" } : {}), transform: XToBoolean });
127
127
  }
128
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: XBadgeProperty, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
129
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.0.0", type: XBadgeProperty, isStandalone: true, selector: "x-badge-property", inputs: { type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, offsetLeft: { classPropertyName: "offsetLeft", publicName: "offsetLeft", isSignal: true, isRequired: false, transformFunction: null }, offsetTop: { classPropertyName: "offsetTop", publicName: "offsetTop", isSignal: true, isRequired: false, transformFunction: null }, dot: { classPropertyName: "dot", publicName: "dot", isSignal: true, isRequired: false, transformFunction: null }, standalone: { classPropertyName: "standalone", publicName: "standalone", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
128
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XBadgeProperty, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
129
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.0.6", type: XBadgeProperty, isStandalone: true, selector: "x-badge-property", inputs: { type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, offsetLeft: { classPropertyName: "offsetLeft", publicName: "offsetLeft", isSignal: true, isRequired: false, transformFunction: null }, offsetTop: { classPropertyName: "offsetTop", publicName: "offsetTop", isSignal: true, isRequired: false, transformFunction: null }, dot: { classPropertyName: "dot", publicName: "dot", isSignal: true, isRequired: false, transformFunction: null }, standalone: { classPropertyName: "standalone", publicName: "standalone", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
130
130
  }
131
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: XBadgeProperty, decorators: [{
131
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XBadgeProperty, decorators: [{
132
132
  type: Component,
133
133
  args: [{ selector: `${XBadgePrefix}-property`, template: '' }]
134
134
  }], propDecorators: { type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: false }] }], max: [{ type: i0.Input, args: [{ isSignal: true, alias: "max", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], offsetLeft: [{ type: i0.Input, args: [{ isSignal: true, alias: "offsetLeft", required: false }] }], offsetTop: [{ type: i0.Input, args: [{ isSignal: true, alias: "offsetTop", required: false }] }], dot: [{ type: i0.Input, args: [{ isSignal: true, alias: "dot", required: false }] }], standalone: [{ type: i0.Input, args: [{ isSignal: true, alias: "standalone", required: false }] }] } });
@@ -183,20 +183,20 @@ class XBadgeComponent extends XBadgeProperty {
183
183
  return this.displayNums().map((_x, index) => index);
184
184
  }, ...(ngDevMode ? [{ debugName: "maxNums" }] : []));
185
185
  }
186
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: XBadgeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
187
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.0", type: XBadgeComponent, isStandalone: true, selector: "x-badge", usesInheritance: true, ngImport: i0, template: "<div\r\n #badge\r\n class=\"x-badge\"\r\n [ngClass]=\"classMap()\"\r\n [class.x-badge-dot]=\"dot()\"\r\n [class.x-badge-standalone]=\"standalone()\"\r\n>\r\n <ng-content></ng-content>\r\n @if (valueNumber() > 0 || dot()) {\r\n @if (standalone()) {\r\n <sup\r\n animate.enter=\"x-badge-standalone-enter\"\r\n animate.leave=\"x-badge-standalone-leave\"\r\n [style.marginRight]=\"offsetLeft()\"\r\n [style.marginTop]=\"offsetTop()\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"dotTpl\"></ng-container>\r\n </sup>\r\n } @else {\r\n <sup\r\n animate.enter=\"x-badge-enter\"\r\n animate.leave=\"x-badge-leave\"\r\n [style.marginRight]=\"offsetLeft()\"\r\n [style.marginTop]=\"offsetTop()\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"dotTpl\"></ng-container>\r\n </sup>\r\n }\r\n }\r\n</div>\r\n\r\n<ng-template #dotTpl>\r\n @if (!dot()) {\r\n @for (item of maxNums(); track item) {\r\n <span class=\"x-badge-scroll\" [style.transform]=\"'translateY(-' + translateYNumbers()[$index] + '%)'\">\r\n @for (j of range(); track j) {\r\n <p>{{ j }}</p>\r\n }\r\n </span>\r\n }\r\n }\r\n</ng-template>\r\n", styles: ["x-badge{display:inline-block}.x-badge{margin:0;padding:0}.x-badge{font-size:var(--x-font-size);display:inline-block;box-sizing:border-box;text-align:center;position:relative}.x-badge>sup{position:absolute;top:0;right:0;overflow:hidden;transform:translate(50%,-50%);transform-origin:100% 0%;border-radius:.625rem;color:var(--x-white);display:inline-block;height:1.125rem;line-height:1.125rem;padding:0 .375rem;text-align:center;white-space:nowrap;box-shadow:0 0 0 .0625rem var(--x-white);vertical-align:middle}.x-badge-dot>sup{width:.5rem;height:.5rem;padding:0;right:0;border-radius:50%}.x-badge-standalone>sup{position:initial;transform:initial;transform-origin:initial}.x-badge-scroll{position:relative;height:1.125rem;display:inline-block;transition:transform var(--x-animation-duration-base) ease-in-out}.x-badge-primary>sup{background-color:var(--x-primary)}.x-badge-success>sup{background-color:var(--x-success)}.x-badge-info>sup{background-color:var(--x-info)}.x-badge-warning>sup{background-color:var(--x-warning)}.x-badge-danger>sup{background-color:var(--x-danger)}.x-badge-text>sup{background-color:var(--x-text)}.x-badge .x-badge-enter{animation:badge-enter var(--x-animation-duration-slow);animation-timing-function:ease-in}.x-badge .x-badge-leave{animation:badge-leave var(--x-animation-duration-slow);animation-timing-function:ease-out}@keyframes badge-enter{0%{opacity:0;transform:scale(0) translate(50%,-50%)}to{opacity:1;transform:scale(1) translate(50%,-50%)}}@keyframes badge-leave{0%{opacity:1;transform:scale(1) translate(50%,-50%)}to{opacity:0;transform:scale(0) translate(50%,-50%)}}.x-badge .x-badge-standalone-enter{animation:badge-standalone-enter var(--x-animation-duration-slow);animation-timing-function:ease-in}.x-badge .x-badge-standalone-leave{animation:badge-standalone-leave var(--x-animation-duration-slow);animation-timing-function:ease-out}@keyframes badge-standalone-enter{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes badge-standalone-leave{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(0)}}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
186
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XBadgeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
187
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.6", type: XBadgeComponent, isStandalone: true, selector: "x-badge", usesInheritance: true, ngImport: i0, template: "<div\r\n #badge\r\n class=\"x-badge\"\r\n [ngClass]=\"classMap()\"\r\n [class.x-badge-dot]=\"dot()\"\r\n [class.x-badge-standalone]=\"standalone()\"\r\n>\r\n <ng-content></ng-content>\r\n @if (valueNumber() > 0 || dot()) {\r\n @if (standalone()) {\r\n <sup\r\n animate.enter=\"x-badge-standalone-enter\"\r\n animate.leave=\"x-badge-standalone-leave\"\r\n [style.marginRight]=\"offsetLeft()\"\r\n [style.marginTop]=\"offsetTop()\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"dotTpl\"></ng-container>\r\n </sup>\r\n } @else {\r\n <sup\r\n animate.enter=\"x-badge-enter\"\r\n animate.leave=\"x-badge-leave\"\r\n [style.marginRight]=\"offsetLeft()\"\r\n [style.marginTop]=\"offsetTop()\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"dotTpl\"></ng-container>\r\n </sup>\r\n }\r\n }\r\n</div>\r\n\r\n<ng-template #dotTpl>\r\n @if (!dot()) {\r\n @for (item of maxNums(); track item) {\r\n <span class=\"x-badge-scroll\" [style.transform]=\"'translateY(-' + translateYNumbers()[$index] + '%)'\">\r\n @for (j of range(); track j) {\r\n <p>{{ j }}</p>\r\n }\r\n </span>\r\n }\r\n }\r\n</ng-template>\r\n", styles: ["x-badge{display:inline-block}.x-badge{margin:0;padding:0}.x-badge{font-size:var(--x-font-size);display:inline-block;box-sizing:border-box;text-align:center;position:relative}.x-badge>sup{position:absolute;top:0;right:0;overflow:hidden;transform:translate(50%,-50%);transform-origin:100% 0%;border-radius:.625rem;color:var(--x-white);display:inline-block;height:1.125rem;line-height:1.125rem;padding:0 .375rem;text-align:center;white-space:nowrap;box-shadow:0 0 0 .0625rem var(--x-white);vertical-align:middle}.x-badge-dot>sup{width:.5rem;height:.5rem;padding:0;right:0;border-radius:50%}.x-badge-standalone>sup{position:initial;transform:initial;transform-origin:initial}.x-badge-scroll{position:relative;height:1.125rem;display:inline-block;transition:transform var(--x-animation-duration-base) ease-in-out}.x-badge-primary>sup{background-color:var(--x-primary)}.x-badge-success>sup{background-color:var(--x-success)}.x-badge-info>sup{background-color:var(--x-info)}.x-badge-warning>sup{background-color:var(--x-warning)}.x-badge-danger>sup{background-color:var(--x-danger)}.x-badge-text>sup{background-color:var(--x-text)}.x-badge .x-badge-enter{animation:badge-enter var(--x-animation-duration-slow);animation-timing-function:ease-in}.x-badge .x-badge-leave{animation:badge-leave var(--x-animation-duration-slow);animation-timing-function:ease-out}@keyframes badge-enter{0%{opacity:0;transform:scale(0) translate(50%,-50%)}to{opacity:1;transform:scale(1) translate(50%,-50%)}}@keyframes badge-leave{0%{opacity:1;transform:scale(1) translate(50%,-50%)}to{opacity:0;transform:scale(0) translate(50%,-50%)}}.x-badge .x-badge-standalone-enter{animation:badge-standalone-enter var(--x-animation-duration-slow);animation-timing-function:ease-in}.x-badge .x-badge-standalone-leave{animation:badge-standalone-leave var(--x-animation-duration-slow);animation-timing-function:ease-out}@keyframes badge-standalone-enter{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes badge-standalone-leave{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(0)}}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
188
188
  }
189
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: XBadgeComponent, decorators: [{
189
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XBadgeComponent, decorators: [{
190
190
  type: Component,
191
191
  args: [{ selector: `${XBadgePrefix}`, imports: [NgClass, NgTemplateOutlet], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\r\n #badge\r\n class=\"x-badge\"\r\n [ngClass]=\"classMap()\"\r\n [class.x-badge-dot]=\"dot()\"\r\n [class.x-badge-standalone]=\"standalone()\"\r\n>\r\n <ng-content></ng-content>\r\n @if (valueNumber() > 0 || dot()) {\r\n @if (standalone()) {\r\n <sup\r\n animate.enter=\"x-badge-standalone-enter\"\r\n animate.leave=\"x-badge-standalone-leave\"\r\n [style.marginRight]=\"offsetLeft()\"\r\n [style.marginTop]=\"offsetTop()\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"dotTpl\"></ng-container>\r\n </sup>\r\n } @else {\r\n <sup\r\n animate.enter=\"x-badge-enter\"\r\n animate.leave=\"x-badge-leave\"\r\n [style.marginRight]=\"offsetLeft()\"\r\n [style.marginTop]=\"offsetTop()\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"dotTpl\"></ng-container>\r\n </sup>\r\n }\r\n }\r\n</div>\r\n\r\n<ng-template #dotTpl>\r\n @if (!dot()) {\r\n @for (item of maxNums(); track item) {\r\n <span class=\"x-badge-scroll\" [style.transform]=\"'translateY(-' + translateYNumbers()[$index] + '%)'\">\r\n @for (j of range(); track j) {\r\n <p>{{ j }}</p>\r\n }\r\n </span>\r\n }\r\n }\r\n</ng-template>\r\n", styles: ["x-badge{display:inline-block}.x-badge{margin:0;padding:0}.x-badge{font-size:var(--x-font-size);display:inline-block;box-sizing:border-box;text-align:center;position:relative}.x-badge>sup{position:absolute;top:0;right:0;overflow:hidden;transform:translate(50%,-50%);transform-origin:100% 0%;border-radius:.625rem;color:var(--x-white);display:inline-block;height:1.125rem;line-height:1.125rem;padding:0 .375rem;text-align:center;white-space:nowrap;box-shadow:0 0 0 .0625rem var(--x-white);vertical-align:middle}.x-badge-dot>sup{width:.5rem;height:.5rem;padding:0;right:0;border-radius:50%}.x-badge-standalone>sup{position:initial;transform:initial;transform-origin:initial}.x-badge-scroll{position:relative;height:1.125rem;display:inline-block;transition:transform var(--x-animation-duration-base) ease-in-out}.x-badge-primary>sup{background-color:var(--x-primary)}.x-badge-success>sup{background-color:var(--x-success)}.x-badge-info>sup{background-color:var(--x-info)}.x-badge-warning>sup{background-color:var(--x-warning)}.x-badge-danger>sup{background-color:var(--x-danger)}.x-badge-text>sup{background-color:var(--x-text)}.x-badge .x-badge-enter{animation:badge-enter var(--x-animation-duration-slow);animation-timing-function:ease-in}.x-badge .x-badge-leave{animation:badge-leave var(--x-animation-duration-slow);animation-timing-function:ease-out}@keyframes badge-enter{0%{opacity:0;transform:scale(0) translate(50%,-50%)}to{opacity:1;transform:scale(1) translate(50%,-50%)}}@keyframes badge-leave{0%{opacity:1;transform:scale(1) translate(50%,-50%)}to{opacity:0;transform:scale(0) translate(50%,-50%)}}.x-badge .x-badge-standalone-enter{animation:badge-standalone-enter var(--x-animation-duration-slow);animation-timing-function:ease-in}.x-badge .x-badge-standalone-leave{animation:badge-standalone-leave var(--x-animation-duration-slow);animation-timing-function:ease-out}@keyframes badge-standalone-enter{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes badge-standalone-leave{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(0)}}\n"] }]
192
192
  }] });
193
193
 
194
194
  class XBadgeModule {
195
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: XBadgeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
196
- /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.0", ngImport: i0, type: XBadgeModule, imports: [XBadgeComponent], exports: [XBadgeComponent] }); }
197
- /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: XBadgeModule }); }
195
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XBadgeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
196
+ /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.6", ngImport: i0, type: XBadgeModule, imports: [XBadgeComponent], exports: [XBadgeComponent] }); }
197
+ /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XBadgeModule }); }
198
198
  }
199
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: XBadgeModule, decorators: [{
199
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XBadgeModule, decorators: [{
200
200
  type: NgModule,
201
201
  args: [{
202
202
  exports: [XBadgeComponent],
@@ -1 +1 @@
1
- {"version":3,"file":"ng-nest-ui-badge.mjs","sources":["../../../../lib/ng-nest/ui/badge/badge.property.ts","../../../../lib/ng-nest/ui/badge/badge.component.ts","../../../../lib/ng-nest/ui/badge/badge.component.html","../../../../lib/ng-nest/ui/badge/badge.module.ts","../../../../lib/ng-nest/ui/badge/ng-nest-ui-badge.ts"],"sourcesContent":["import { XPropertyFunction, XToNumber, XToString, XToCssPixelValue, XToBoolean } from '@ng-nest/ui/core';\r\nimport { Component, input } from '@angular/core';\r\nimport type { XNumber, XBoolean, XType } from '@ng-nest/ui/core';\r\n\r\n/**\r\n * Badge\r\n * @selector x-badge\r\n * @decorator component\r\n */\r\nexport const XBadgePrefix = 'x-badge';\r\nconst X_BADGE_CONFIG_NAME = 'badge';\r\n\r\n/**\r\n * Badge Property\r\n */\r\n@Component({ selector: `${XBadgePrefix}-property`, template: '' })\r\nexport class XBadgeProperty extends XPropertyFunction(X_BADGE_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 类型,背景颜色\r\n * @en_US Type, the background color\r\n * @example\r\n *\r\n * ```html\r\n * <x-badge value=\"12\" type=\"primary\">\r\n * <x-button>primary</x-button>\r\n * </x-badge>\r\n * <x-badge value=\"12\" type=\"success\">\r\n * <x-button>success</x-button>\r\n * </x-badge>\r\n * <x-badge value=\"12\" type=\"info\">\r\n * <x-button>info</x-button>\r\n * </x-badge>\r\n * <x-badge value=\"12\" type=\"warning\">\r\n * <x-button>warning</x-button>\r\n * </x-badge>\r\n * <x-badge value=\"12\" type=\"danger\">\r\n * <x-button>danger</x-button>\r\n * </x-badge>\r\n * <x-badge value=\"12\" type=\"text\">\r\n * <x-button>text</x-button>\r\n * </x-badge>\r\n * ```\r\n *\r\n */\r\n readonly type = input<XBadgeType>(this.config?.type ?? 'danger');\r\n /**\r\n * @zh_CN 最大值\r\n * @en_US Max\r\n * @example\r\n *\r\n * ```html\r\n * <x-badge value=\"200\" max=\"99\">\r\n * <x-button>99</x-button>\r\n * </x-badge>\r\n * <x-badge value=\"300\" max=\"200\">\r\n * <x-button>200</x-button>\r\n * </x-badge>\r\n * ```\r\n */\r\n readonly max = input<number, XNumber>(99, { transform: XToNumber });\r\n /**\r\n * @zh_CN 显示值\r\n * @en_US Display value\r\n * @example\r\n *\r\n * ```html\r\n * <x-badge value=\"88\">\r\n * <x-button>value</x-button>\r\n * </x-badge>\r\n * ```\r\n */\r\n readonly value = input<string, XNumber>('', { transform: XToString });\r\n /**\r\n * @zh_CN 偏移值 left\r\n * @en_US Offset left value\r\n * @example\r\n *\r\n * ```html\r\n * <x-badge value=\"88\" offsetLeft=\"5px\">\r\n * <x-button>value</x-button>\r\n * </x-badge>\r\n * ```\r\n *\r\n */\r\n readonly offsetLeft = input<string, XNumber>('', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 偏移值 top\r\n * @en_US Offset right value\r\n * @example\r\n *\r\n * ```html\r\n * <x-badge value=\"88\" offsetTop=\"5px\">\r\n * <x-button>value</x-button>\r\n * </x-badge>\r\n * ```\r\n *\r\n */\r\n readonly offsetTop = input<string, XNumber>('', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 是否显示小红点\r\n * @en_US Whether to show the small red dot\r\n * @example\r\n *\r\n * ```html\r\n * <x-badge dot>\r\n * <x-button>value</x-button>\r\n * </x-badge>\r\n * ```\r\n *\r\n */\r\n readonly dot = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 独立使用\r\n * @en_US Independent use\r\n * @example\r\n *\r\n * ```html\r\n * <x-badge standalone value=\"25\"></x-badge>\r\n * <x-badge standalone value=\"200\" max=\"99\"></x-badge>\r\n * <x-badge standalone value=\"hot\"></x-badge>\r\n * <x-badge standalone dot></x-badge>\r\n * ```\r\n *\r\n */\r\n readonly standalone = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n}\r\n\r\n/**\r\n * @zh_CN 标记类型\r\n * @en_US Mark type\r\n */\r\nexport type XBadgeType = XType;\r\n","import { Component, ViewEncapsulation, ChangeDetectionStrategy, computed, signal } from '@angular/core';\r\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\r\nimport { XBadgePrefix, XBadgeProperty } from './badge.property';\r\nimport { XIsNumber, XIsEmpty, XIsString } from '@ng-nest/ui/core';\r\n\r\n@Component({\r\n selector: `${XBadgePrefix}`,\r\n imports: [NgClass, NgTemplateOutlet],\r\n templateUrl: './badge.component.html',\r\n styleUrls: ['./badge.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XBadgeComponent extends XBadgeProperty {\r\n range = signal([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, '+']);\r\n\r\n valueNumber = computed(() => {\r\n return Number(this.value());\r\n });\r\n\r\n classMap = computed(() => ({\r\n [`${XBadgePrefix}-${this.type()}`]: !XIsEmpty(this.type())\r\n }));\r\n\r\n displayNums = computed(() => {\r\n const value = this.value();\r\n const max = this.max();\r\n const toNumber = Number(value);\r\n let displayValue = '';\r\n if (XIsNumber(toNumber) && max && toNumber > max) {\r\n displayValue = `${max}+`;\r\n } else {\r\n displayValue = `${value}`;\r\n }\r\n const res: (string | number)[] = [];\r\n for (let i = 0; i < displayValue.length; i++) {\r\n const str = displayValue[i];\r\n if (str === '+') {\r\n res.push(str);\r\n } else {\r\n res.push(Number(str));\r\n }\r\n }\r\n return res;\r\n });\r\n\r\n translateYNumbers = computed(() => {\r\n const displayNums = this.displayNums();\r\n const nums: number[] = [];\r\n for (let num of displayNums) {\r\n if (XIsString(num) && num === '+') {\r\n nums.push(10 * 100);\r\n } else if (XIsNumber(num)) {\r\n nums.push(num * 100);\r\n }\r\n }\r\n return nums;\r\n });\r\n\r\n maxNums = computed(() => {\r\n return this.displayNums().map((_x, index) => index) as number[];\r\n });\r\n}\r\n","<div\r\n #badge\r\n class=\"x-badge\"\r\n [ngClass]=\"classMap()\"\r\n [class.x-badge-dot]=\"dot()\"\r\n [class.x-badge-standalone]=\"standalone()\"\r\n>\r\n <ng-content></ng-content>\r\n @if (valueNumber() > 0 || dot()) {\r\n @if (standalone()) {\r\n <sup\r\n animate.enter=\"x-badge-standalone-enter\"\r\n animate.leave=\"x-badge-standalone-leave\"\r\n [style.marginRight]=\"offsetLeft()\"\r\n [style.marginTop]=\"offsetTop()\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"dotTpl\"></ng-container>\r\n </sup>\r\n } @else {\r\n <sup\r\n animate.enter=\"x-badge-enter\"\r\n animate.leave=\"x-badge-leave\"\r\n [style.marginRight]=\"offsetLeft()\"\r\n [style.marginTop]=\"offsetTop()\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"dotTpl\"></ng-container>\r\n </sup>\r\n }\r\n }\r\n</div>\r\n\r\n<ng-template #dotTpl>\r\n @if (!dot()) {\r\n @for (item of maxNums(); track item) {\r\n <span class=\"x-badge-scroll\" [style.transform]=\"'translateY(-' + translateYNumbers()[$index] + '%)'\">\r\n @for (j of range(); track j) {\r\n <p>{{ j }}</p>\r\n }\r\n </span>\r\n }\r\n }\r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\r\nimport { XBadgeComponent } from './badge.component';\r\n\r\n@NgModule({\r\n exports: [XBadgeComponent],\r\n imports: [XBadgeComponent]\r\n})\r\nexport class XBadgeModule {}\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-badge.mjs","sources":["../../../../lib/ng-nest/ui/badge/badge.property.ts","../../../../lib/ng-nest/ui/badge/badge.component.ts","../../../../lib/ng-nest/ui/badge/badge.component.html","../../../../lib/ng-nest/ui/badge/badge.module.ts","../../../../lib/ng-nest/ui/badge/ng-nest-ui-badge.ts"],"sourcesContent":["import { XPropertyFunction, XToNumber, XToString, XToCssPixelValue, XToBoolean } from '@ng-nest/ui/core';\r\nimport { Component, input } from '@angular/core';\r\nimport type { XNumber, XBoolean, XType } from '@ng-nest/ui/core';\r\n\r\n/**\r\n * Badge\r\n * @selector x-badge\r\n * @decorator component\r\n */\r\nexport const XBadgePrefix = 'x-badge';\r\nconst X_BADGE_CONFIG_NAME = 'badge';\r\n\r\n/**\r\n * Badge Property\r\n */\r\n@Component({ selector: `${XBadgePrefix}-property`, template: '' })\r\nexport class XBadgeProperty extends XPropertyFunction(X_BADGE_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 类型,背景颜色\r\n * @en_US Type, the background color\r\n * @example\r\n *\r\n * ```html\r\n * <x-badge value=\"12\" type=\"primary\">\r\n * <x-button>primary</x-button>\r\n * </x-badge>\r\n * <x-badge value=\"12\" type=\"success\">\r\n * <x-button>success</x-button>\r\n * </x-badge>\r\n * <x-badge value=\"12\" type=\"info\">\r\n * <x-button>info</x-button>\r\n * </x-badge>\r\n * <x-badge value=\"12\" type=\"warning\">\r\n * <x-button>warning</x-button>\r\n * </x-badge>\r\n * <x-badge value=\"12\" type=\"danger\">\r\n * <x-button>danger</x-button>\r\n * </x-badge>\r\n * <x-badge value=\"12\" type=\"text\">\r\n * <x-button>text</x-button>\r\n * </x-badge>\r\n * ```\r\n *\r\n */\r\n readonly type = input<XBadgeType>(this.config?.type ?? 'danger');\r\n /**\r\n * @zh_CN 最大值\r\n * @en_US Max\r\n * @example\r\n *\r\n * ```html\r\n * <x-badge value=\"200\" max=\"99\">\r\n * <x-button>99</x-button>\r\n * </x-badge>\r\n * <x-badge value=\"300\" max=\"200\">\r\n * <x-button>200</x-button>\r\n * </x-badge>\r\n * ```\r\n */\r\n readonly max = input<number, XNumber>(99, { transform: XToNumber });\r\n /**\r\n * @zh_CN 显示值\r\n * @en_US Display value\r\n * @example\r\n *\r\n * ```html\r\n * <x-badge value=\"88\">\r\n * <x-button>value</x-button>\r\n * </x-badge>\r\n * ```\r\n */\r\n readonly value = input<string, XNumber>('', { transform: XToString });\r\n /**\r\n * @zh_CN 偏移值 left\r\n * @en_US Offset left value\r\n * @example\r\n *\r\n * ```html\r\n * <x-badge value=\"88\" offsetLeft=\"5px\">\r\n * <x-button>value</x-button>\r\n * </x-badge>\r\n * ```\r\n *\r\n */\r\n readonly offsetLeft = input<string, XNumber>('', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 偏移值 top\r\n * @en_US Offset right value\r\n * @example\r\n *\r\n * ```html\r\n * <x-badge value=\"88\" offsetTop=\"5px\">\r\n * <x-button>value</x-button>\r\n * </x-badge>\r\n * ```\r\n *\r\n */\r\n readonly offsetTop = input<string, XNumber>('', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 是否显示小红点\r\n * @en_US Whether to show the small red dot\r\n * @example\r\n *\r\n * ```html\r\n * <x-badge dot>\r\n * <x-button>value</x-button>\r\n * </x-badge>\r\n * ```\r\n *\r\n */\r\n readonly dot = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 独立使用\r\n * @en_US Independent use\r\n * @example\r\n *\r\n * ```html\r\n * <x-badge standalone value=\"25\"></x-badge>\r\n * <x-badge standalone value=\"200\" max=\"99\"></x-badge>\r\n * <x-badge standalone value=\"hot\"></x-badge>\r\n * <x-badge standalone dot></x-badge>\r\n * ```\r\n *\r\n */\r\n readonly standalone = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n}\r\n\r\n/**\r\n * @zh_CN 标记类型\r\n * @en_US Mark type\r\n */\r\nexport type XBadgeType = XType;\r\n","import { Component, ViewEncapsulation, ChangeDetectionStrategy, computed, signal } from '@angular/core';\r\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\r\nimport { XBadgePrefix, XBadgeProperty } from './badge.property';\r\nimport { XIsNumber, XIsEmpty, XIsString } from '@ng-nest/ui/core';\r\n\r\n@Component({\r\n selector: `${XBadgePrefix}`,\r\n imports: [NgClass, NgTemplateOutlet],\r\n templateUrl: './badge.component.html',\r\n styleUrls: ['./badge.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XBadgeComponent extends XBadgeProperty {\r\n range = signal([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, '+']);\r\n\r\n valueNumber = computed(() => {\r\n return Number(this.value());\r\n });\r\n\r\n classMap = computed(() => ({\r\n [`${XBadgePrefix}-${this.type()}`]: !XIsEmpty(this.type())\r\n }));\r\n\r\n displayNums = computed(() => {\r\n const value = this.value();\r\n const max = this.max();\r\n const toNumber = Number(value);\r\n let displayValue = '';\r\n if (XIsNumber(toNumber) && max && toNumber > max) {\r\n displayValue = `${max}+`;\r\n } else {\r\n displayValue = `${value}`;\r\n }\r\n const res: (string | number)[] = [];\r\n for (let i = 0; i < displayValue.length; i++) {\r\n const str = displayValue[i];\r\n if (str === '+') {\r\n res.push(str);\r\n } else {\r\n res.push(Number(str));\r\n }\r\n }\r\n return res;\r\n });\r\n\r\n translateYNumbers = computed(() => {\r\n const displayNums = this.displayNums();\r\n const nums: number[] = [];\r\n for (let num of displayNums) {\r\n if (XIsString(num) && num === '+') {\r\n nums.push(10 * 100);\r\n } else if (XIsNumber(num)) {\r\n nums.push(num * 100);\r\n }\r\n }\r\n return nums;\r\n });\r\n\r\n maxNums = computed(() => {\r\n return this.displayNums().map((_x, index) => index) as number[];\r\n });\r\n}\r\n","<div\r\n #badge\r\n class=\"x-badge\"\r\n [ngClass]=\"classMap()\"\r\n [class.x-badge-dot]=\"dot()\"\r\n [class.x-badge-standalone]=\"standalone()\"\r\n>\r\n <ng-content></ng-content>\r\n @if (valueNumber() > 0 || dot()) {\r\n @if (standalone()) {\r\n <sup\r\n animate.enter=\"x-badge-standalone-enter\"\r\n animate.leave=\"x-badge-standalone-leave\"\r\n [style.marginRight]=\"offsetLeft()\"\r\n [style.marginTop]=\"offsetTop()\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"dotTpl\"></ng-container>\r\n </sup>\r\n } @else {\r\n <sup\r\n animate.enter=\"x-badge-enter\"\r\n animate.leave=\"x-badge-leave\"\r\n [style.marginRight]=\"offsetLeft()\"\r\n [style.marginTop]=\"offsetTop()\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"dotTpl\"></ng-container>\r\n </sup>\r\n }\r\n }\r\n</div>\r\n\r\n<ng-template #dotTpl>\r\n @if (!dot()) {\r\n @for (item of maxNums(); track item) {\r\n <span class=\"x-badge-scroll\" [style.transform]=\"'translateY(-' + translateYNumbers()[$index] + '%)'\">\r\n @for (j of range(); track j) {\r\n <p>{{ j }}</p>\r\n }\r\n </span>\r\n }\r\n }\r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\r\nimport { XBadgeComponent } from './badge.component';\r\n\r\n@NgModule({\r\n exports: [XBadgeComponent],\r\n imports: [XBadgeComponent]\r\n})\r\nexport class XBadgeModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}