@ng-nest/ui 21.0.3 → 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.
- package/fesm2022/ng-nest-ui-affix.mjs +12 -12
- package/fesm2022/ng-nest-ui-affix.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-alert.mjs +22 -24
- package/fesm2022/ng-nest-ui-alert.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-anchor.mjs +19 -19
- package/fesm2022/ng-nest-ui-anchor.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-api.mjs +7 -7
- package/fesm2022/ng-nest-ui-attachments.mjs +22 -22
- package/fesm2022/ng-nest-ui-attachments.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-auto-complete.mjs +26 -30
- package/fesm2022/ng-nest-ui-auto-complete.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-avatar.mjs +17 -17
- package/fesm2022/ng-nest-ui-avatar.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-back-top.mjs +13 -13
- package/fesm2022/ng-nest-ui-back-top.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-badge.mjs +16 -16
- package/fesm2022/ng-nest-ui-badge.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-base-form.mjs +13 -13
- package/fesm2022/ng-nest-ui-base-form.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-bubble.mjs +20 -20
- package/fesm2022/ng-nest-ui-bubble.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-button.mjs +31 -31
- package/fesm2022/ng-nest-ui-button.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-calendar.mjs +10 -10
- package/fesm2022/ng-nest-ui-card.mjs +11 -11
- package/fesm2022/ng-nest-ui-card.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-carousel.mjs +24 -24
- package/fesm2022/ng-nest-ui-carousel.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-cascade.mjs +25 -29
- package/fesm2022/ng-nest-ui-cascade.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-checkbox.mjs +22 -22
- package/fesm2022/ng-nest-ui-checkbox.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-collapse.mjs +22 -22
- package/fesm2022/ng-nest-ui-collapse.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-color-picker.mjs +25 -25
- package/fesm2022/ng-nest-ui-color-picker.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-color.mjs +10 -10
- package/fesm2022/ng-nest-ui-comment.mjs +19 -19
- package/fesm2022/ng-nest-ui-comment.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-container.mjs +34 -34
- package/fesm2022/ng-nest-ui-container.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-core.mjs +18 -18
- package/fesm2022/ng-nest-ui-coversations.mjs +11 -11
- package/fesm2022/ng-nest-ui-coversations.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-crumb.mjs +11 -11
- package/fesm2022/ng-nest-ui-crumb.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-date-picker.mjs +87 -87
- package/fesm2022/ng-nest-ui-date-picker.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-description.mjs +20 -20
- package/fesm2022/ng-nest-ui-description.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-dialog.mjs +58 -58
- package/fesm2022/ng-nest-ui-dialog.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-doc.mjs +7 -7
- package/fesm2022/ng-nest-ui-drag.mjs +10 -10
- package/fesm2022/ng-nest-ui-drawer.mjs +34 -34
- package/fesm2022/ng-nest-ui-drawer.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-dropdown.mjs +21 -21
- package/fesm2022/ng-nest-ui-dropdown.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-empty.mjs +10 -10
- package/fesm2022/ng-nest-ui-examples.mjs +7 -7
- package/fesm2022/ng-nest-ui-find.mjs +31 -35
- package/fesm2022/ng-nest-ui-find.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-form.mjs +21 -21
- package/fesm2022/ng-nest-ui-form.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-highlight.mjs +14 -14
- package/fesm2022/ng-nest-ui-highlight.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-i18n.mjs +32 -31
- package/fesm2022/ng-nest-ui-i18n.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-icon.mjs +14 -14
- package/fesm2022/ng-nest-ui-icon.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-image.mjs +21 -21
- package/fesm2022/ng-nest-ui-image.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-inner.mjs +11 -11
- package/fesm2022/ng-nest-ui-inner.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-input-number.mjs +21 -21
- package/fesm2022/ng-nest-ui-input-number.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-input.mjs +36 -40
- package/fesm2022/ng-nest-ui-input.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-keyword.mjs +11 -11
- package/fesm2022/ng-nest-ui-keyword.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-layout.mjs +25 -25
- package/fesm2022/ng-nest-ui-layout.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-link.mjs +13 -13
- package/fesm2022/ng-nest-ui-link.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-list.mjs +41 -41
- package/fesm2022/ng-nest-ui-list.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-loading.mjs +14 -14
- package/fesm2022/ng-nest-ui-loading.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-menu.mjs +22 -22
- package/fesm2022/ng-nest-ui-menu.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-message-box.mjs +10 -10
- package/fesm2022/ng-nest-ui-message.mjs +10 -10
- package/fesm2022/ng-nest-ui-notification.mjs +10 -10
- package/fesm2022/ng-nest-ui-outlet.mjs +7 -7
- package/fesm2022/ng-nest-ui-page-header.mjs +10 -10
- package/fesm2022/ng-nest-ui-pagination.mjs +27 -31
- package/fesm2022/ng-nest-ui-pagination.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-pattern.mjs +7 -7
- package/fesm2022/ng-nest-ui-popconfirm.mjs +14 -14
- package/fesm2022/ng-nest-ui-popconfirm.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-popover.mjs +19 -19
- package/fesm2022/ng-nest-ui-popover.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-portal.mjs +7 -7
- package/fesm2022/ng-nest-ui-progress.mjs +22 -22
- package/fesm2022/ng-nest-ui-progress.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-prompts.mjs +12 -12
- package/fesm2022/ng-nest-ui-prompts.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-radio.mjs +20 -20
- package/fesm2022/ng-nest-ui-radio.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-rate.mjs +15 -15
- package/fesm2022/ng-nest-ui-rate.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-resizable.mjs +14 -14
- package/fesm2022/ng-nest-ui-resizable.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-result.mjs +10 -10
- package/fesm2022/ng-nest-ui-ripple.mjs +12 -12
- package/fesm2022/ng-nest-ui-ripple.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-scrollable.mjs +19 -7
- package/fesm2022/ng-nest-ui-scrollable.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-select.mjs +35 -39
- package/fesm2022/ng-nest-ui-select.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-sender.mjs +19 -19
- package/fesm2022/ng-nest-ui-sender.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-skeleton.mjs +13 -13
- package/fesm2022/ng-nest-ui-skeleton.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-slider-select.mjs +21 -21
- package/fesm2022/ng-nest-ui-slider-select.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-slider.mjs +16 -18
- package/fesm2022/ng-nest-ui-slider.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-statistic.mjs +16 -16
- package/fesm2022/ng-nest-ui-steps.mjs +14 -14
- package/fesm2022/ng-nest-ui-steps.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-suggestion.mjs +17 -17
- package/fesm2022/ng-nest-ui-suggestion.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-switch.mjs +15 -15
- package/fesm2022/ng-nest-ui-switch.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-table-view.mjs +58 -58
- package/fesm2022/ng-nest-ui-table.mjs +90 -112
- package/fesm2022/ng-nest-ui-table.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-tabs.mjs +38 -40
- package/fesm2022/ng-nest-ui-tabs.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-tag.mjs +16 -16
- package/fesm2022/ng-nest-ui-tag.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-text-retract.mjs +11 -11
- package/fesm2022/ng-nest-ui-text-retract.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-textarea.mjs +19 -19
- package/fesm2022/ng-nest-ui-textarea.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-theme.mjs +12 -12
- package/fesm2022/ng-nest-ui-theme.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-thought-chain.mjs +12 -12
- package/fesm2022/ng-nest-ui-thought-chain.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-time-ago.mjs +7 -7
- package/fesm2022/ng-nest-ui-time-picker.mjs +28 -28
- package/fesm2022/ng-nest-ui-time-picker.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-time-range.mjs +7 -7
- package/fesm2022/ng-nest-ui-timeline.mjs +12 -12
- package/fesm2022/ng-nest-ui-timeline.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-tooltip.mjs +17 -17
- package/fesm2022/ng-nest-ui-tooltip.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-transfer.mjs +14 -14
- package/fesm2022/ng-nest-ui-transfer.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-tree-file.mjs +17 -17
- package/fesm2022/ng-nest-ui-tree-file.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-tree-select.mjs +36 -42
- package/fesm2022/ng-nest-ui-tree-select.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-tree.mjs +44 -46
- package/fesm2022/ng-nest-ui-tree.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-typography.mjs +10 -10
- package/fesm2022/ng-nest-ui-upload.mjs +24 -24
- package/fesm2022/ng-nest-ui-upload.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-welcome.mjs +10 -10
- package/package.json +1 -1
- package/types/ng-nest-ui-i18n.d.ts +13 -11
- package/types/ng-nest-ui-scrollable.d.ts +6 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-nest-ui-rate.mjs","sources":["../../../../lib/ng-nest/ui/rate/rate.property.ts","../../../../lib/ng-nest/ui/rate/rate.component.ts","../../../../lib/ng-nest/ui/rate/rate.component.html","../../../../lib/ng-nest/ui/rate/rate.module.ts","../../../../lib/ng-nest/ui/rate/ng-nest-ui-rate.ts"],"sourcesContent":["import { XToNumber, XToBoolean, XToCssPixelValue } from '@ng-nest/ui/core';\r\nimport { Component, TemplateRef, input } from '@angular/core';\r\nimport { XFormControlFunction, XFormOption } from '@ng-nest/ui/base-form';\r\nimport type { XNumber, XBoolean, XDirection, XAlign, XJustify, XTemplate } from '@ng-nest/ui/core';\r\n\r\n/**\r\n * Rate\r\n * @selector x-rate\r\n * @decorator component\r\n */\r\nexport const XRatePrefix = 'x-rate';\r\nconst X_RATE_CONFIG_NAME = 'rate';\r\n\r\n/**\r\n * Rate Property\r\n */\r\n@Component({ selector: `${XRatePrefix}-property`, template: '' })\r\nexport class XRateProperty extends XFormControlFunction(X_RATE_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 评分个数\r\n * @en_US Number of ratings\r\n */\r\n readonly count = input<number, XNumber>(5, { transform: XToNumber });\r\n /**\r\n * @zh_CN 半星模式\r\n * @en_US Number of ratings\r\n */\r\n readonly half = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 颜色\r\n * @en_US Color\r\n */\r\n readonly color = input<XRateColor>(this.config?.color ?? '');\r\n /**\r\n * @zh_CN 自定义模板\r\n * @en_US Custom template\r\n */\r\n readonly customTemp = input<TemplateRef<any>>();\r\n /**\r\n * @zh_CN 标签\r\n * @en_US Label\r\n */\r\n override readonly label = input<XTemplate>('');\r\n /**\r\n * @zh_CN 标签宽度\r\n * @en_US Label width\r\n */\r\n override readonly labelWidth = input<string, XNumber>('', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 标签文字对齐方式\r\n * @en_US Label text alignment method\r\n */\r\n override readonly labelAlign = input<XAlign>('start');\r\n /**\r\n * @zh_CN flex 布局下的子元素水平排列方式\r\n * @en_US The level of sub-element level arrangement under flex layout\r\n */\r\n override readonly justify = input<XJustify>('start');\r\n /**\r\n * @zh_CN flex 布局下的子元素垂直排列方式\r\n * @en_US sub-element vertical arrangement method under flex layout\r\n */\r\n override readonly align = input<XAlign>('start');\r\n /**\r\n * @zh_CN flex 布局下的子元素排列方向\r\n * @en_US The direction of the sub-element arrangement under flex layout\r\n */\r\n override readonly direction = input<XDirection>('column');\r\n /**\r\n * @zh_CN 禁用\r\n * @en_US Disabled\r\n */\r\n override readonly disabled = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 必填\r\n * @en_US Required\r\n */\r\n override readonly required = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n}\r\n\r\n/**\r\n * @zh_CN 颜色类型\r\n * @en_US Color type\r\n */\r\nexport type XRateColor = string | { [color: string]: (rate: number) => boolean };\r\n\r\n/**\r\n * Rate Option\r\n */\r\nexport interface XRateOption extends XFormOption {\r\n /**\r\n * @zh_CN 评分个数\r\n * @en_US Number of ratings\r\n */\r\n count?: number;\r\n /**\r\n * @zh_CN 半星模式\r\n * @en_US Number of ratings\r\n */\r\n half?: boolean;\r\n /**\r\n * @zh_CN 颜色\r\n * @en_US Color\r\n */\r\n color?: XRateColor;\r\n /**\r\n * @zh_CN 自定义模板\r\n * @en_US Custom template\r\n */\r\n customTemp?: TemplateRef<any>;\r\n /**\r\n * @zh_CN 标签\r\n * @en_US Label\r\n */\r\n label?: string;\r\n /**\r\n * @zh_CN 标签宽度\r\n * @en_US Label width\r\n */\r\n labelWidth?: string;\r\n /**\r\n * @zh_CN 标签文字对齐方式\r\n * @en_US Label text alignment method\r\n */\r\n labelAlign?: XAlign;\r\n /**\r\n * @zh_CN flex 布局下的子元素水平排列方式\r\n * @en_US The level of sub-element level arrangement under flex layout\r\n */\r\n justify?: XJustify;\r\n /**\r\n * @zh_CN flex 布局下的子元素垂直排列方式\r\n * @en_US sub-element vertical arrangement method under flex layout\r\n */\r\n align?: XAlign;\r\n /**\r\n * @zh_CN flex 布局下的子元素排列方向\r\n * @en_US The direction of the sub-element arrangement under flex layout\r\n */\r\n direction?: XDirection;\r\n /**\r\n * @zh_CN 禁用\r\n * @en_US Disabled\r\n */\r\n disabled?: boolean;\r\n /**\r\n * @zh_CN 必填\r\n * @en_US Required\r\n */\r\n required?: boolean;\r\n}\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n ElementRef,\r\n viewChild,\r\n computed,\r\n signal\r\n} from '@angular/core';\r\nimport { XIsEmpty, XIsString, XIsObject } from '@ng-nest/ui/core';\r\nimport { XRatePrefix, XRateProperty } from './rate.property';\r\nimport { XValueAccessor } from '@ng-nest/ui/base-form';\r\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { XIconComponent } from '@ng-nest/ui/icon';\r\n\r\n@Component({\r\n selector: `${XRatePrefix}`,\r\n imports: [NgClass, NgTemplateOutlet, FormsModule, XIconComponent],\r\n templateUrl: './rate.component.html',\r\n styleUrls: ['./rate.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [XValueAccessor(XRateComponent)]\r\n})\r\nexport class XRateComponent extends XRateProperty {\r\n rate = viewChild.required<ElementRef<HTMLElement>>('rate');\r\n rates = computed(() =>\r\n Array(this.count())\r\n .fill(0)\r\n .map((_, i) => i + 1)\r\n );\r\n hoverActivated = signal(0);\r\n hoverHalfActivated = signal(0);\r\n\r\n getColor = computed(() => {\r\n let result = '';\r\n const color = this.color();\r\n if (XIsString(color)) {\r\n result = color as string;\r\n } else if (XIsObject(color)) {\r\n let val = this.half()\r\n ? (Math.floor(this.hoverActivated()) + this.hoverHalfActivated()) * 0.5\r\n : this.hoverActivated();\r\n for (let key in color) {\r\n if (color[key](val)) {\r\n result = key;\r\n break;\r\n }\r\n }\r\n }\r\n return result;\r\n });\r\n\r\n classMap = computed(() => ({\r\n [`x-justify-${this.justify()}`]: !!this.justify(),\r\n [`x-align-${this.align()}`]: !!this.align(),\r\n [`x-direction-${this.direction()}`]: !!this.direction()\r\n }));\r\n labelMapSignal = computed(() => ({\r\n [`x-text-align-${this.labelAlign()}`]: !!this.labelAlign()\r\n }));\r\n\r\n override requiredIsEmpty = computed(() => {\r\n return this.validatorComputed() && this.requiredComputed() && (XIsEmpty(this.value()) || this.value() === 0);\r\n });\r\n\r\n override writeValue(value: any) {\r\n if (XIsEmpty(value)) value = 0;\r\n this.value.set(value);\r\n this.hoverActivated.set(value);\r\n this.hoverHalfActivated.set(Math.ceil(value));\r\n }\r\n\r\n rateHover(rate: number, _event: MouseEvent) {\r\n if (this.disabledComputed()) return;\r\n this.hoverActivated.set(rate);\r\n }\r\n\r\n leaveRates() {\r\n if (this.disabledComputed()) return;\r\n const activited = this.value();\r\n this.hoverActivated.set(activited);\r\n this.hoverHalfActivated.set(Math.ceil(activited));\r\n }\r\n\r\n rateClick(rate: number, _event: MouseEvent) {\r\n if (this.disabledComputed()) return;\r\n this.formControlValidator();\r\n this.value.update((x) => (x === rate ? 0 : rate));\r\n if (this.onChange) this.onChange(this.value());\r\n }\r\n\r\n rateHalfHover(rate: number, _event: MouseEvent) {\r\n if (this.disabledComputed()) return;\r\n this.formControlValidator();\r\n this.hoverActivated.set(rate - 1);\r\n this.hoverHalfActivated.set(rate);\r\n }\r\n\r\n rateHalfClick(rate: number, _event: MouseEvent) {\r\n if (this.disabledComputed()) return;\r\n this.value.set(rate - 0.5);\r\n if (this.onChange) this.onChange(this.value());\r\n }\r\n\r\n formControlChanges() {}\r\n}\r\n","<div\r\n #rate\r\n class=\"x-rate\"\r\n [ngClass]=\"classMap()\"\r\n [class.x-flex]=\"justify() || align() || direction()\"\r\n [class.x-disabled]=\"disabledComputed()\"\r\n [class.x-required]=\"requiredIsEmpty()\"\r\n [class.x-invalid]=\"invalid()\"\r\n>\r\n @if (label()) {\r\n <label [class.x-rate-label-required]=\"requiredComputed()\" [style.width]=\"labelWidth()\" [ngClass]=\"labelMapSignal()\">{{\r\n label()\r\n }}</label>\r\n }\r\n <div class=\"x-rate-icons\" (mouseleave)=\"leaveRates()\">\r\n @for (rate of rates(); track rate; let i = $index) {\r\n <div\r\n class=\"x-rate-icon\"\r\n [class.activated]=\"rate <= hoverActivated()\"\r\n [class.half-activated]=\"rate <= hoverHalfActivated()\"\r\n [style.color]=\"rate <= hoverActivated() ? getColor() : ''\"\r\n >\r\n @if (half()) {\r\n <div\r\n class=\"x-rate-half\"\r\n [style.color]=\"rate <= hoverHalfActivated() ? getColor() : ''\"\r\n (mouseenter)=\"rateHalfHover(rate, $event)\"\r\n (click)=\"rateHalfClick(rate, $event)\"\r\n >\r\n @if (customTemp()) {\r\n <ng-container *ngTemplateOutlet=\"customTemp()!\"></ng-container>\r\n } @else {\r\n <ng-container *ngTemplateOutlet=\"iconTpl\"></ng-container>\r\n }\r\n </div>\r\n }\r\n <div class=\"x-rate-back\" (mouseenter)=\"rateHover(rate, $event)\" (click)=\"rateClick(rate, $event)\">\r\n @if (customTemp()) {\r\n <ng-container *ngTemplateOutlet=\"customTemp()!\"></ng-container>\r\n } @else {\r\n <ng-container *ngTemplateOutlet=\"iconTpl\"></ng-container>\r\n }\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n\r\n<ng-template #iconTpl>\r\n <x-icon type=\"adf-star\"></x-icon>\r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\r\nimport { XRateComponent } from './rate.component';\r\n\r\n@NgModule({\r\n exports: [XRateComponent],\r\n imports: [XRateComponent]\r\n})\r\nexport class XRateModule {}\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-rate.mjs","sources":["../../../../lib/ng-nest/ui/rate/rate.property.ts","../../../../lib/ng-nest/ui/rate/rate.component.ts","../../../../lib/ng-nest/ui/rate/rate.component.html","../../../../lib/ng-nest/ui/rate/rate.module.ts","../../../../lib/ng-nest/ui/rate/ng-nest-ui-rate.ts"],"sourcesContent":["import { XToNumber, XToBoolean, XToCssPixelValue } from '@ng-nest/ui/core';\r\nimport { Component, TemplateRef, input } from '@angular/core';\r\nimport { XFormControlFunction, XFormOption } from '@ng-nest/ui/base-form';\r\nimport type { XNumber, XBoolean, XDirection, XAlign, XJustify, XTemplate } from '@ng-nest/ui/core';\r\n\r\n/**\r\n * Rate\r\n * @selector x-rate\r\n * @decorator component\r\n */\r\nexport const XRatePrefix = 'x-rate';\r\nconst X_RATE_CONFIG_NAME = 'rate';\r\n\r\n/**\r\n * Rate Property\r\n */\r\n@Component({ selector: `${XRatePrefix}-property`, template: '' })\r\nexport class XRateProperty extends XFormControlFunction(X_RATE_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 评分个数\r\n * @en_US Number of ratings\r\n */\r\n readonly count = input<number, XNumber>(5, { transform: XToNumber });\r\n /**\r\n * @zh_CN 半星模式\r\n * @en_US Number of ratings\r\n */\r\n readonly half = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 颜色\r\n * @en_US Color\r\n */\r\n readonly color = input<XRateColor>(this.config?.color ?? '');\r\n /**\r\n * @zh_CN 自定义模板\r\n * @en_US Custom template\r\n */\r\n readonly customTemp = input<TemplateRef<any>>();\r\n /**\r\n * @zh_CN 标签\r\n * @en_US Label\r\n */\r\n override readonly label = input<XTemplate>('');\r\n /**\r\n * @zh_CN 标签宽度\r\n * @en_US Label width\r\n */\r\n override readonly labelWidth = input<string, XNumber>('', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 标签文字对齐方式\r\n * @en_US Label text alignment method\r\n */\r\n override readonly labelAlign = input<XAlign>('start');\r\n /**\r\n * @zh_CN flex 布局下的子元素水平排列方式\r\n * @en_US The level of sub-element level arrangement under flex layout\r\n */\r\n override readonly justify = input<XJustify>('start');\r\n /**\r\n * @zh_CN flex 布局下的子元素垂直排列方式\r\n * @en_US sub-element vertical arrangement method under flex layout\r\n */\r\n override readonly align = input<XAlign>('start');\r\n /**\r\n * @zh_CN flex 布局下的子元素排列方向\r\n * @en_US The direction of the sub-element arrangement under flex layout\r\n */\r\n override readonly direction = input<XDirection>('column');\r\n /**\r\n * @zh_CN 禁用\r\n * @en_US Disabled\r\n */\r\n override readonly disabled = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 必填\r\n * @en_US Required\r\n */\r\n override readonly required = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n}\r\n\r\n/**\r\n * @zh_CN 颜色类型\r\n * @en_US Color type\r\n */\r\nexport type XRateColor = string | { [color: string]: (rate: number) => boolean };\r\n\r\n/**\r\n * Rate Option\r\n */\r\nexport interface XRateOption extends XFormOption {\r\n /**\r\n * @zh_CN 评分个数\r\n * @en_US Number of ratings\r\n */\r\n count?: number;\r\n /**\r\n * @zh_CN 半星模式\r\n * @en_US Number of ratings\r\n */\r\n half?: boolean;\r\n /**\r\n * @zh_CN 颜色\r\n * @en_US Color\r\n */\r\n color?: XRateColor;\r\n /**\r\n * @zh_CN 自定义模板\r\n * @en_US Custom template\r\n */\r\n customTemp?: TemplateRef<any>;\r\n /**\r\n * @zh_CN 标签\r\n * @en_US Label\r\n */\r\n label?: string;\r\n /**\r\n * @zh_CN 标签宽度\r\n * @en_US Label width\r\n */\r\n labelWidth?: string;\r\n /**\r\n * @zh_CN 标签文字对齐方式\r\n * @en_US Label text alignment method\r\n */\r\n labelAlign?: XAlign;\r\n /**\r\n * @zh_CN flex 布局下的子元素水平排列方式\r\n * @en_US The level of sub-element level arrangement under flex layout\r\n */\r\n justify?: XJustify;\r\n /**\r\n * @zh_CN flex 布局下的子元素垂直排列方式\r\n * @en_US sub-element vertical arrangement method under flex layout\r\n */\r\n align?: XAlign;\r\n /**\r\n * @zh_CN flex 布局下的子元素排列方向\r\n * @en_US The direction of the sub-element arrangement under flex layout\r\n */\r\n direction?: XDirection;\r\n /**\r\n * @zh_CN 禁用\r\n * @en_US Disabled\r\n */\r\n disabled?: boolean;\r\n /**\r\n * @zh_CN 必填\r\n * @en_US Required\r\n */\r\n required?: boolean;\r\n}\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n ElementRef,\r\n viewChild,\r\n computed,\r\n signal\r\n} from '@angular/core';\r\nimport { XIsEmpty, XIsString, XIsObject } from '@ng-nest/ui/core';\r\nimport { XRatePrefix, XRateProperty } from './rate.property';\r\nimport { XValueAccessor } from '@ng-nest/ui/base-form';\r\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { XIconComponent } from '@ng-nest/ui/icon';\r\n\r\n@Component({\r\n selector: `${XRatePrefix}`,\r\n imports: [NgClass, NgTemplateOutlet, FormsModule, XIconComponent],\r\n templateUrl: './rate.component.html',\r\n styleUrls: ['./rate.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [XValueAccessor(XRateComponent)]\r\n})\r\nexport class XRateComponent extends XRateProperty {\r\n rate = viewChild.required<ElementRef<HTMLElement>>('rate');\r\n rates = computed(() =>\r\n Array(this.count())\r\n .fill(0)\r\n .map((_, i) => i + 1)\r\n );\r\n hoverActivated = signal(0);\r\n hoverHalfActivated = signal(0);\r\n\r\n getColor = computed(() => {\r\n let result = '';\r\n const color = this.color();\r\n if (XIsString(color)) {\r\n result = color as string;\r\n } else if (XIsObject(color)) {\r\n let val = this.half()\r\n ? (Math.floor(this.hoverActivated()) + this.hoverHalfActivated()) * 0.5\r\n : this.hoverActivated();\r\n for (let key in color) {\r\n if (color[key](val)) {\r\n result = key;\r\n break;\r\n }\r\n }\r\n }\r\n return result;\r\n });\r\n\r\n classMap = computed(() => ({\r\n [`x-justify-${this.justify()}`]: !!this.justify(),\r\n [`x-align-${this.align()}`]: !!this.align(),\r\n [`x-direction-${this.direction()}`]: !!this.direction()\r\n }));\r\n labelMapSignal = computed(() => ({\r\n [`x-text-align-${this.labelAlign()}`]: !!this.labelAlign()\r\n }));\r\n\r\n override requiredIsEmpty = computed(() => {\r\n return this.validatorComputed() && this.requiredComputed() && (XIsEmpty(this.value()) || this.value() === 0);\r\n });\r\n\r\n override writeValue(value: any) {\r\n if (XIsEmpty(value)) value = 0;\r\n this.value.set(value);\r\n this.hoverActivated.set(value);\r\n this.hoverHalfActivated.set(Math.ceil(value));\r\n }\r\n\r\n rateHover(rate: number, _event: MouseEvent) {\r\n if (this.disabledComputed()) return;\r\n this.hoverActivated.set(rate);\r\n }\r\n\r\n leaveRates() {\r\n if (this.disabledComputed()) return;\r\n const activited = this.value();\r\n this.hoverActivated.set(activited);\r\n this.hoverHalfActivated.set(Math.ceil(activited));\r\n }\r\n\r\n rateClick(rate: number, _event: MouseEvent) {\r\n if (this.disabledComputed()) return;\r\n this.formControlValidator();\r\n this.value.update((x) => (x === rate ? 0 : rate));\r\n if (this.onChange) this.onChange(this.value());\r\n }\r\n\r\n rateHalfHover(rate: number, _event: MouseEvent) {\r\n if (this.disabledComputed()) return;\r\n this.formControlValidator();\r\n this.hoverActivated.set(rate - 1);\r\n this.hoverHalfActivated.set(rate);\r\n }\r\n\r\n rateHalfClick(rate: number, _event: MouseEvent) {\r\n if (this.disabledComputed()) return;\r\n this.value.set(rate - 0.5);\r\n if (this.onChange) this.onChange(this.value());\r\n }\r\n\r\n formControlChanges() {}\r\n}\r\n","<div\r\n #rate\r\n class=\"x-rate\"\r\n [ngClass]=\"classMap()\"\r\n [class.x-flex]=\"justify() || align() || direction()\"\r\n [class.x-disabled]=\"disabledComputed()\"\r\n [class.x-required]=\"requiredIsEmpty()\"\r\n [class.x-invalid]=\"invalid()\"\r\n>\r\n @if (label()) {\r\n <label [class.x-rate-label-required]=\"requiredComputed()\" [style.width]=\"labelWidth()\" [ngClass]=\"labelMapSignal()\">{{\r\n label()\r\n }}</label>\r\n }\r\n <div class=\"x-rate-icons\" (mouseleave)=\"leaveRates()\">\r\n @for (rate of rates(); track rate; let i = $index) {\r\n <div\r\n class=\"x-rate-icon\"\r\n [class.activated]=\"rate <= hoverActivated()\"\r\n [class.half-activated]=\"rate <= hoverHalfActivated()\"\r\n [style.color]=\"rate <= hoverActivated() ? getColor() : ''\"\r\n >\r\n @if (half()) {\r\n <div\r\n class=\"x-rate-half\"\r\n [style.color]=\"rate <= hoverHalfActivated() ? getColor() : ''\"\r\n (mouseenter)=\"rateHalfHover(rate, $event)\"\r\n (click)=\"rateHalfClick(rate, $event)\"\r\n >\r\n @if (customTemp()) {\r\n <ng-container *ngTemplateOutlet=\"customTemp()!\"></ng-container>\r\n } @else {\r\n <ng-container *ngTemplateOutlet=\"iconTpl\"></ng-container>\r\n }\r\n </div>\r\n }\r\n <div class=\"x-rate-back\" (mouseenter)=\"rateHover(rate, $event)\" (click)=\"rateClick(rate, $event)\">\r\n @if (customTemp()) {\r\n <ng-container *ngTemplateOutlet=\"customTemp()!\"></ng-container>\r\n } @else {\r\n <ng-container *ngTemplateOutlet=\"iconTpl\"></ng-container>\r\n }\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n\r\n<ng-template #iconTpl>\r\n <x-icon type=\"adf-star\"></x-icon>\r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\r\nimport { XRateComponent } from './rate.component';\r\n\r\n@NgModule({\r\n exports: [XRateComponent],\r\n imports: [XRateComponent]\r\n})\r\nexport class XRateModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -20,7 +20,7 @@ class XResizableProperty extends XProperty {
|
|
|
20
20
|
* @zh_CN 启用调整尺寸大小
|
|
21
21
|
* @en_US Enable adjustment size size
|
|
22
22
|
*/
|
|
23
|
-
this.xResizable = input(false, ...(ngDevMode ?
|
|
23
|
+
this.xResizable = input(false, { ...(ngDevMode ? { debugName: "xResizable" } : {}), transform: XToBoolean });
|
|
24
24
|
/**
|
|
25
25
|
* @zh_CN 调整方位
|
|
26
26
|
* @en_US Adjust the orientation
|
|
@@ -30,17 +30,17 @@ class XResizableProperty extends XProperty {
|
|
|
30
30
|
* @zh_CN 手动调整,通过回调的数值自行调整
|
|
31
31
|
* @en_US Manual adjustment, adjustment of the number of callbacks
|
|
32
32
|
*/
|
|
33
|
-
this.ghost = input(false, ...(ngDevMode ?
|
|
33
|
+
this.ghost = input(false, { ...(ngDevMode ? { debugName: "ghost" } : {}), transform: XToBoolean });
|
|
34
34
|
/**
|
|
35
35
|
* @zh_CN 偏移屏幕左边
|
|
36
36
|
* @en_US Distance on the left side
|
|
37
37
|
*/
|
|
38
|
-
this.offsetLeft = input('0', ...(ngDevMode ?
|
|
38
|
+
this.offsetLeft = input('0', { ...(ngDevMode ? { debugName: "offsetLeft" } : {}), transform: XToCssPixelValue });
|
|
39
39
|
/**
|
|
40
40
|
* @zh_CN 偏移屏幕顶部
|
|
41
41
|
* @en_US Distance to the top of the screen
|
|
42
42
|
*/
|
|
43
|
-
this.offsetTop = input('0', ...(ngDevMode ?
|
|
43
|
+
this.offsetTop = input('0', { ...(ngDevMode ? { debugName: "offsetTop" } : {}), transform: XToCssPixelValue });
|
|
44
44
|
/**
|
|
45
45
|
* @zh_CN 开始调整
|
|
46
46
|
* @en_US Adjust the orientation
|
|
@@ -57,10 +57,10 @@ class XResizableProperty extends XProperty {
|
|
|
57
57
|
*/
|
|
58
58
|
this.resizeEnd = output();
|
|
59
59
|
}
|
|
60
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.
|
|
61
|
-
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.0.
|
|
60
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XResizableProperty, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
61
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.0.6", type: XResizableProperty, isStandalone: true, selector: "[xResizable]", inputs: { xResizable: { classPropertyName: "xResizable", publicName: "xResizable", isSignal: true, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, ghost: { classPropertyName: "ghost", publicName: "ghost", 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 } }, outputs: { resizeBegin: "resizeBegin", resizing: "resizing", resizeEnd: "resizeEnd" }, usesInheritance: true, ngImport: i0 }); }
|
|
62
62
|
}
|
|
63
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.
|
|
63
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XResizableProperty, decorators: [{
|
|
64
64
|
type: Directive,
|
|
65
65
|
args: [{ selector: '[xResizable]' }]
|
|
66
66
|
}], propDecorators: { xResizable: [{ type: i0.Input, args: [{ isSignal: true, alias: "xResizable", required: false }] }], position: [{ type: i0.Input, args: [{ isSignal: true, alias: "position", required: false }] }], ghost: [{ type: i0.Input, args: [{ isSignal: true, alias: "ghost", required: false }] }], offsetLeft: [{ type: i0.Input, args: [{ isSignal: true, alias: "offsetLeft", required: false }] }], offsetTop: [{ type: i0.Input, args: [{ isSignal: true, alias: "offsetTop", required: false }] }], resizeBegin: [{ type: i0.Output, args: ["resizeBegin"] }], resizing: [{ type: i0.Output, args: ["resizing"] }], resizeEnd: [{ type: i0.Output, args: ["resizeEnd"] }] } });
|
|
@@ -306,10 +306,10 @@ class XResizableDirective extends XResizableProperty {
|
|
|
306
306
|
this.mouseUpSub = undefined;
|
|
307
307
|
}
|
|
308
308
|
}
|
|
309
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.
|
|
310
|
-
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.0.
|
|
309
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XResizableDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
310
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.0.6", type: XResizableDirective, isStandalone: true, selector: "[xResizable]", host: { listeners: { "mousedown": "mousedown($event)" }, properties: { "class": "this.className", "class.x-resizable-disabled": "this.getDisabled" } }, usesInheritance: true, usesOnChanges: true, ngImport: i0 }); }
|
|
311
311
|
}
|
|
312
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.
|
|
312
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XResizableDirective, decorators: [{
|
|
313
313
|
type: Directive,
|
|
314
314
|
args: [{ selector: '[xResizable]' }]
|
|
315
315
|
}], propDecorators: { className: [{
|
|
@@ -324,11 +324,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0", ngImpor
|
|
|
324
324
|
}] } });
|
|
325
325
|
|
|
326
326
|
class XResizableModule {
|
|
327
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.
|
|
328
|
-
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.
|
|
329
|
-
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.
|
|
327
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XResizableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
328
|
+
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.6", ngImport: i0, type: XResizableModule, imports: [XResizableDirective], exports: [XResizableDirective] }); }
|
|
329
|
+
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XResizableModule }); }
|
|
330
330
|
}
|
|
331
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.
|
|
331
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XResizableModule, decorators: [{
|
|
332
332
|
type: NgModule,
|
|
333
333
|
args: [{
|
|
334
334
|
imports: [XResizableDirective],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-nest-ui-resizable.mjs","sources":["../../../../lib/ng-nest/ui/resizable/resizable.property.ts","../../../../lib/ng-nest/ui/resizable/resizable.directive.ts","../../../../lib/ng-nest/ui/resizable/resizable.module.ts","../../../../lib/ng-nest/ui/resizable/ng-nest-ui-resizable.ts"],"sourcesContent":["import { Directive, input, output } from '@angular/core';\r\nimport { XProperty, XToBoolean, XToCssPixelValue } from '@ng-nest/ui/core';\r\nimport type { XBoolean, XCorner, XNumber, XPosition } from '@ng-nest/ui/core';\r\n\r\n/**\r\n * Resizable 指令名称\r\n * @selector x-resizable\r\n * @decorator directive\r\n */\r\nexport const XResizablePrefix = 'x-resizable';\r\n\r\n/**\r\n * Resizable Property\r\n */\r\n@Directive({ selector: '[xResizable]' })\r\nexport class XResizableProperty extends XProperty {\r\n /**\r\n * @zh_CN 启用调整尺寸大小\r\n * @en_US Enable adjustment size size\r\n */\r\n readonly xResizable = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 调整方位\r\n * @en_US Adjust the orientation\r\n */\r\n readonly position = input<XResizablePosition | XResizablePosition[]>('all');\r\n /**\r\n * @zh_CN 手动调整,通过回调的数值自行调整\r\n * @en_US Manual adjustment, adjustment of the number of callbacks\r\n */\r\n readonly ghost = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 偏移屏幕左边\r\n * @en_US Distance on the left side\r\n */\r\n readonly offsetLeft = input<string, XNumber>('0', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 偏移屏幕顶部\r\n * @en_US Distance to the top of the screen\r\n */\r\n readonly offsetTop = input<string, XNumber>('0', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 开始调整\r\n * @en_US Adjust the orientation\r\n */\r\n readonly resizeBegin = output<XResizableEvent>();\r\n /**\r\n * @zh_CN 调整中\r\n * @en_US Adjust the orientation\r\n */\r\n readonly resizing = output<XResizableEvent>();\r\n /**\r\n * @zh_CN 调整结束\r\n * @en_US Adjust the orientation\r\n */\r\n readonly resizeEnd = output<XResizableEvent>();\r\n}\r\n\r\n/**\r\n * @zh_CN 调整方位\r\n * @en_US Adjust the orientation\r\n */\r\nexport type XResizablePosition = XPosition | XCorner | 'all';\r\n\r\n/**\r\n * @zh_CN 调整尺寸的事件对象\r\n * @en_US Adjust the size of event objects\r\n */\r\nexport interface XResizableEvent {\r\n /**\r\n * @zh_CN 事件\r\n * @en_US Event\r\n */\r\n event?: MouseEvent;\r\n /**\r\n * @zh_CN 宽度\r\n * @en_US Width\r\n */\r\n clientWidth?: number;\r\n /**\r\n * @zh_CN 高度\r\n * @en_US height\r\n */\r\n clientHeight?: number;\r\n /**\r\n * @zh_CN 距离屏幕左边\r\n * @en_US Distance on the left side\r\n */\r\n offsetLeft?: number;\r\n /**\r\n * @zh_CN 距离屏幕顶部\r\n * @en_US Distance to the top of the screen\r\n */\r\n offsetTop?: number;\r\n /**\r\n * @zh_CN 改变方位\r\n * @en_US Change position\r\n */\r\n direction?: XResizablePosition;\r\n}\r\n","import { DOCUMENT } from '@angular/common';\r\nimport {\r\n Directive,\r\n ElementRef,\r\n HostBinding,\r\n HostListener,\r\n OnDestroy,\r\n Renderer2,\r\n SimpleChanges,\r\n computed,\r\n inject\r\n} from '@angular/core';\r\nimport { XComputed, XComputedStyle, XIsArray, XIsChange, XIsString, XToCssPx } from '@ng-nest/ui/core';\r\nimport { fromEvent, Subscription, takeUntil } from 'rxjs';\r\nimport { XResizablePosition, XResizablePrefix, XResizableProperty } from './resizable.property';\r\n\r\n@Directive({ selector: '[xResizable]' })\r\nexport class XResizableDirective extends XResizableProperty implements OnDestroy {\r\n @HostBinding('class') className = XResizablePrefix;\r\n @HostBinding('class.x-resizable-disabled') get getDisabled() {\r\n return !this.xResizable();\r\n }\r\n\r\n cornerPositions: XResizablePosition[] = ['top-start', 'top-end', 'bottom-start', 'bottom-end'];\r\n allPositions: XResizablePosition[] = ['left', 'right', 'top', 'bottom', ...this.cornerPositions];\r\n positions: XResizablePosition[] = [];\r\n direction?: XResizablePosition;\r\n newBox = { clientWidth: 0, clientHeight: 0, offsetLeft: 0, offsetTop: 0 };\r\n mouseUpSub?: Subscription;\r\n\r\n minWidth?: number;\r\n maxWidth?: number;\r\n minHeight?: number;\r\n maxHeight?: number;\r\n\r\n positionNodes: { [key: string]: HTMLElement } = {};\r\n activatingNodes: HTMLElement[] = [];\r\n firstLoaded = true;\r\n\r\n private document = inject(DOCUMENT);\r\n private renderer = inject(Renderer2);\r\n private elementRef = inject(ElementRef);\r\n private fontSize = computed(() => parseFloat(XComputedStyle(this.document.documentElement, 'font-size')));\r\n\r\n ngAfterViewInit() {\r\n this.setPosition();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroySubscription();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n const { xResizable } = changes;\r\n XIsChange(xResizable) && this.setPosition();\r\n }\r\n\r\n @HostListener('mousedown', ['$event'])\r\n mousedown(event: MouseEvent | TouchEvent) {\r\n if (!this.xResizable()) return;\r\n const classList = (event.target as HTMLElement).classList;\r\n let direction: XResizablePosition | null = null;\r\n for (let pos of this.allPositions) {\r\n if (classList.contains(`x-resizable-${pos}`)) {\r\n direction = pos;\r\n break;\r\n }\r\n }\r\n if (!direction) return;\r\n\r\n const evt = event.type.startsWith('touch') ? (event as TouchEvent).targetTouches[0] : (event as MouseEvent);\r\n const { clientWidth, clientHeight, offsetLeft, offsetTop } = this.elementRef.nativeElement;\r\n const { screenX, screenY } = evt;\r\n const isTouchEvent = event.type.startsWith('touch');\r\n const moveEvent = isTouchEvent ? 'touchmove' : 'mousemove';\r\n const upEvent = isTouchEvent ? 'touchend' : 'mouseup';\r\n\r\n this.setActivatingNodes(direction);\r\n this.initResize(event, direction);\r\n\r\n const mouseup = fromEvent(this.document, upEvent);\r\n this.mouseUpSub = mouseup.subscribe((ev) => {\r\n this.mouseup(ev as MouseEvent | TouchEvent);\r\n });\r\n const mouseMoveSub = fromEvent(this.document, moveEvent)\r\n .pipe(takeUntil(mouseup))\r\n .subscribe((ev) => {\r\n this.move(ev as MouseEvent | TouchEvent, clientWidth, clientHeight, offsetTop, offsetLeft, screenX, screenY);\r\n });\r\n\r\n this.mouseUpSub.add(mouseMoveSub);\r\n }\r\n\r\n setPosition() {\r\n if (!this.xResizable() || !this.firstLoaded) return;\r\n let positions: XResizablePosition[] = [];\r\n if (XIsString(this.position())) {\r\n positions.push(this.position() as XResizablePosition);\r\n } else if (XIsArray(this.position())) {\r\n positions = this.position() as XResizablePosition[];\r\n }\r\n\r\n if (positions.includes('all')) {\r\n this.positions = this.allPositions;\r\n } else {\r\n this.positions = positions;\r\n }\r\n this.createNode(...this.positions);\r\n\r\n const computedStyle = XComputed(this.elementRef.nativeElement);\r\n setTimeout(() => {\r\n this.minWidth = parseFloat(computedStyle.minWidth);\r\n this.maxWidth = parseFloat(computedStyle.maxWidth);\r\n this.minHeight = parseFloat(computedStyle.minHeight);\r\n this.maxHeight = parseFloat(computedStyle.maxHeight);\r\n this.firstLoaded = false;\r\n });\r\n }\r\n\r\n setActivatingNodes(direction: XResizablePosition) {\r\n if (!this.positions.includes(direction)) return;\r\n const addActivatingNode = (...direction: XResizablePosition[]) => {\r\n for (let item of direction) {\r\n const nd = this.positionNodes[item];\r\n const isNd = this.activatingNodes.includes(nd);\r\n if (!nd || isNd) continue;\r\n this.renderer.addClass(nd, 'x-resizable-activating');\r\n this.activatingNodes.push(nd);\r\n }\r\n };\r\n if (this.cornerPositions.includes(direction)) {\r\n switch (direction) {\r\n case 'bottom-end':\r\n addActivatingNode('bottom', 'right');\r\n break;\r\n case 'top-end':\r\n addActivatingNode('top', 'right');\r\n break;\r\n case 'bottom-start':\r\n addActivatingNode('bottom', 'left');\r\n break;\r\n case 'top-start':\r\n addActivatingNode('top', 'left');\r\n break;\r\n }\r\n }\r\n addActivatingNode(direction);\r\n }\r\n\r\n createNode(...classes: XResizablePosition[]) {\r\n for (let cla of classes) {\r\n const pos = this.renderer.createElement('div');\r\n this.renderer.addClass(pos, `x-resizable-${cla}`);\r\n this.renderer.appendChild(this.elementRef.nativeElement, pos);\r\n this.positionNodes[cla] = pos;\r\n }\r\n }\r\n\r\n initResize(event: MouseEvent | TouchEvent, direction: XResizablePosition) {\r\n const evt = event.type.startsWith('touch') ? (event as TouchEvent).targetTouches[0] : (event as MouseEvent);\r\n this.direction = direction;\r\n this.renderer.addClass(this.elementRef.nativeElement, `x-resizable-resizing`);\r\n let { clientWidth, clientHeight, offsetLeft, offsetTop } = this.elementRef.nativeElement;\r\n this.newBox = { clientWidth, clientHeight, offsetLeft, offsetTop };\r\n event.stopPropagation();\r\n this.resizeBegin.emit({ event: evt as MouseEvent, ...this.newBox });\r\n }\r\n\r\n mouseup(event: MouseEvent | TouchEvent) {\r\n this.endResize(event);\r\n this.destroySubscription();\r\n }\r\n\r\n endResize(event: MouseEvent | TouchEvent) {\r\n const evt = event.type.startsWith('touch') ? (event as TouchEvent).targetTouches[0] : (event as MouseEvent);\r\n this.direction = undefined;\r\n this.renderer.removeClass(this.elementRef.nativeElement, `x-resizable-resizing`);\r\n for (const node of this.activatingNodes) {\r\n this.renderer.removeClass(node, 'x-resizable-activating');\r\n }\r\n this.activatingNodes = [];\r\n this.resizeEnd.emit({ event: evt as MouseEvent, ...this.newBox });\r\n }\r\n\r\n move(\r\n event: MouseEvent | TouchEvent,\r\n width: number,\r\n height: number,\r\n top: number,\r\n left: number,\r\n screenX: number,\r\n screenY: number\r\n ) {\r\n const evt = event.type.startsWith('touch') ? (event as TouchEvent).targetTouches[0] : (event as MouseEvent);\r\n const movementX = evt.screenX - screenX;\r\n const movementY = evt.screenY - screenY;\r\n\r\n this.newBox = {\r\n clientWidth:\r\n width - (['bottom-start', 'left', 'top-start'].includes(this.direction as string) ? movementX : -movementX),\r\n clientHeight:\r\n height - (['top-start', 'top', 'top-end'].includes(this.direction as string) ? movementY : -movementY),\r\n offsetLeft: left + movementX,\r\n offsetTop: top + movementY\r\n };\r\n\r\n const box = {\r\n ...this.newBox,\r\n offsetLeft: this.newBox.offsetLeft - XToCssPx(this.offsetLeft(), this.fontSize()),\r\n offsetTop: this.newBox.offsetTop - XToCssPx(this.offsetTop(), this.fontSize())\r\n };\r\n\r\n this.resizeBox(box);\r\n\r\n this.resizing.emit({ ...this.newBox, event: evt as MouseEvent, direction: this.direction });\r\n }\r\n\r\n resizeBox(box: { clientWidth: number; clientHeight: number; offsetLeft: number; offsetTop: number }) {\r\n if (this.ghost()) return;\r\n const overMinWidth = !this.minWidth || box.clientWidth >= this.minWidth;\r\n const underMaxWidth = !this.maxWidth || box.clientWidth <= this.maxWidth;\r\n const overMinHeight = !this.minHeight || box.clientHeight >= this.minHeight;\r\n const underMaxHeight = !this.maxHeight || box.clientHeight <= this.maxHeight;\r\n\r\n switch (this.direction) {\r\n case 'right':\r\n if (overMinWidth && underMaxWidth) {\r\n this.renderer.setStyle(this.elementRef.nativeElement, 'width', `${box.clientWidth}px`);\r\n }\r\n break;\r\n case 'top-end':\r\n if (overMinWidth && underMaxWidth) {\r\n this.renderer.setStyle(this.elementRef.nativeElement, 'width', `${box.clientWidth}px`);\r\n }\r\n if (overMinHeight && underMaxHeight) {\r\n this.renderer.setStyle(this.elementRef.nativeElement, 'top', `${box.offsetTop}px`);\r\n this.renderer.setStyle(this.elementRef.nativeElement, 'height', `${box.clientHeight}px`);\r\n }\r\n break;\r\n case 'bottom-end':\r\n if (overMinWidth && underMaxWidth) {\r\n this.renderer.setStyle(this.elementRef.nativeElement, 'width', `${box.clientWidth}px`);\r\n }\r\n if (overMinHeight && underMaxHeight) {\r\n this.renderer.setStyle(this.elementRef.nativeElement, 'height', `${box.clientHeight}px`);\r\n }\r\n break;\r\n case 'bottom-start':\r\n if (overMinWidth && underMaxWidth) {\r\n this.renderer.setStyle(this.elementRef.nativeElement, 'left', `${box.offsetLeft}px`);\r\n this.renderer.setStyle(this.elementRef.nativeElement, 'width', `${box.clientWidth}px`);\r\n }\r\n if (overMinHeight && underMaxHeight) {\r\n this.renderer.setStyle(this.elementRef.nativeElement, 'height', `${box.clientHeight}px`);\r\n }\r\n break;\r\n case 'left':\r\n if (overMinWidth && underMaxWidth) {\r\n this.renderer.setStyle(this.elementRef.nativeElement, 'left', `${box.offsetLeft}px`);\r\n this.renderer.setStyle(this.elementRef.nativeElement, 'width', `${box.clientWidth}px`);\r\n }\r\n break;\r\n case 'top-start':\r\n if (overMinWidth && underMaxWidth) {\r\n this.renderer.setStyle(this.elementRef.nativeElement, 'left', `${box.offsetLeft}px`);\r\n this.renderer.setStyle(this.elementRef.nativeElement, 'width', `${box.clientWidth}px`);\r\n }\r\n if (overMinHeight && underMaxHeight) {\r\n this.renderer.setStyle(this.elementRef.nativeElement, 'top', `${box.offsetTop}px`);\r\n this.renderer.setStyle(this.elementRef.nativeElement, 'height', `${box.clientHeight}px`);\r\n }\r\n break;\r\n case 'top':\r\n if (overMinHeight && underMaxHeight) {\r\n this.renderer.setStyle(this.elementRef.nativeElement, 'top', `${box.offsetTop}px`);\r\n this.renderer.setStyle(this.elementRef.nativeElement, 'height', `${box.clientHeight}px`);\r\n }\r\n break;\r\n case 'bottom':\r\n if (overMinHeight && underMaxHeight) {\r\n this.renderer.setStyle(this.elementRef.nativeElement, 'height', `${box.clientHeight}px`);\r\n }\r\n break;\r\n }\r\n }\r\n\r\n private destroySubscription() {\r\n if (this.mouseUpSub) {\r\n this.mouseUpSub.unsubscribe();\r\n this.mouseUpSub = undefined;\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { XResizableDirective } from './resizable.directive';\r\n\r\n@NgModule({\r\n imports: [XResizableDirective],\r\n exports: [XResizableDirective]\r\n})\r\nexport class XResizableModule {}\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-resizable.mjs","sources":["../../../../lib/ng-nest/ui/resizable/resizable.property.ts","../../../../lib/ng-nest/ui/resizable/resizable.directive.ts","../../../../lib/ng-nest/ui/resizable/resizable.module.ts","../../../../lib/ng-nest/ui/resizable/ng-nest-ui-resizable.ts"],"sourcesContent":["import { Directive, input, output } from '@angular/core';\r\nimport { XProperty, XToBoolean, XToCssPixelValue } from '@ng-nest/ui/core';\r\nimport type { XBoolean, XCorner, XNumber, XPosition } from '@ng-nest/ui/core';\r\n\r\n/**\r\n * Resizable 指令名称\r\n * @selector x-resizable\r\n * @decorator directive\r\n */\r\nexport const XResizablePrefix = 'x-resizable';\r\n\r\n/**\r\n * Resizable Property\r\n */\r\n@Directive({ selector: '[xResizable]' })\r\nexport class XResizableProperty extends XProperty {\r\n /**\r\n * @zh_CN 启用调整尺寸大小\r\n * @en_US Enable adjustment size size\r\n */\r\n readonly xResizable = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 调整方位\r\n * @en_US Adjust the orientation\r\n */\r\n readonly position = input<XResizablePosition | XResizablePosition[]>('all');\r\n /**\r\n * @zh_CN 手动调整,通过回调的数值自行调整\r\n * @en_US Manual adjustment, adjustment of the number of callbacks\r\n */\r\n readonly ghost = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 偏移屏幕左边\r\n * @en_US Distance on the left side\r\n */\r\n readonly offsetLeft = input<string, XNumber>('0', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 偏移屏幕顶部\r\n * @en_US Distance to the top of the screen\r\n */\r\n readonly offsetTop = input<string, XNumber>('0', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 开始调整\r\n * @en_US Adjust the orientation\r\n */\r\n readonly resizeBegin = output<XResizableEvent>();\r\n /**\r\n * @zh_CN 调整中\r\n * @en_US Adjust the orientation\r\n */\r\n readonly resizing = output<XResizableEvent>();\r\n /**\r\n * @zh_CN 调整结束\r\n * @en_US Adjust the orientation\r\n */\r\n readonly resizeEnd = output<XResizableEvent>();\r\n}\r\n\r\n/**\r\n * @zh_CN 调整方位\r\n * @en_US Adjust the orientation\r\n */\r\nexport type XResizablePosition = XPosition | XCorner | 'all';\r\n\r\n/**\r\n * @zh_CN 调整尺寸的事件对象\r\n * @en_US Adjust the size of event objects\r\n */\r\nexport interface XResizableEvent {\r\n /**\r\n * @zh_CN 事件\r\n * @en_US Event\r\n */\r\n event?: MouseEvent;\r\n /**\r\n * @zh_CN 宽度\r\n * @en_US Width\r\n */\r\n clientWidth?: number;\r\n /**\r\n * @zh_CN 高度\r\n * @en_US height\r\n */\r\n clientHeight?: number;\r\n /**\r\n * @zh_CN 距离屏幕左边\r\n * @en_US Distance on the left side\r\n */\r\n offsetLeft?: number;\r\n /**\r\n * @zh_CN 距离屏幕顶部\r\n * @en_US Distance to the top of the screen\r\n */\r\n offsetTop?: number;\r\n /**\r\n * @zh_CN 改变方位\r\n * @en_US Change position\r\n */\r\n direction?: XResizablePosition;\r\n}\r\n","import { DOCUMENT } from '@angular/common';\r\nimport {\r\n Directive,\r\n ElementRef,\r\n HostBinding,\r\n HostListener,\r\n OnDestroy,\r\n Renderer2,\r\n SimpleChanges,\r\n computed,\r\n inject\r\n} from '@angular/core';\r\nimport { XComputed, XComputedStyle, XIsArray, XIsChange, XIsString, XToCssPx } from '@ng-nest/ui/core';\r\nimport { fromEvent, Subscription, takeUntil } from 'rxjs';\r\nimport { XResizablePosition, XResizablePrefix, XResizableProperty } from './resizable.property';\r\n\r\n@Directive({ selector: '[xResizable]' })\r\nexport class XResizableDirective extends XResizableProperty implements OnDestroy {\r\n @HostBinding('class') className = XResizablePrefix;\r\n @HostBinding('class.x-resizable-disabled') get getDisabled() {\r\n return !this.xResizable();\r\n }\r\n\r\n cornerPositions: XResizablePosition[] = ['top-start', 'top-end', 'bottom-start', 'bottom-end'];\r\n allPositions: XResizablePosition[] = ['left', 'right', 'top', 'bottom', ...this.cornerPositions];\r\n positions: XResizablePosition[] = [];\r\n direction?: XResizablePosition;\r\n newBox = { clientWidth: 0, clientHeight: 0, offsetLeft: 0, offsetTop: 0 };\r\n mouseUpSub?: Subscription;\r\n\r\n minWidth?: number;\r\n maxWidth?: number;\r\n minHeight?: number;\r\n maxHeight?: number;\r\n\r\n positionNodes: { [key: string]: HTMLElement } = {};\r\n activatingNodes: HTMLElement[] = [];\r\n firstLoaded = true;\r\n\r\n private document = inject(DOCUMENT);\r\n private renderer = inject(Renderer2);\r\n private elementRef = inject(ElementRef);\r\n private fontSize = computed(() => parseFloat(XComputedStyle(this.document.documentElement, 'font-size')));\r\n\r\n ngAfterViewInit() {\r\n this.setPosition();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroySubscription();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n const { xResizable } = changes;\r\n XIsChange(xResizable) && this.setPosition();\r\n }\r\n\r\n @HostListener('mousedown', ['$event'])\r\n mousedown(event: MouseEvent | TouchEvent) {\r\n if (!this.xResizable()) return;\r\n const classList = (event.target as HTMLElement).classList;\r\n let direction: XResizablePosition | null = null;\r\n for (let pos of this.allPositions) {\r\n if (classList.contains(`x-resizable-${pos}`)) {\r\n direction = pos;\r\n break;\r\n }\r\n }\r\n if (!direction) return;\r\n\r\n const evt = event.type.startsWith('touch') ? (event as TouchEvent).targetTouches[0] : (event as MouseEvent);\r\n const { clientWidth, clientHeight, offsetLeft, offsetTop } = this.elementRef.nativeElement;\r\n const { screenX, screenY } = evt;\r\n const isTouchEvent = event.type.startsWith('touch');\r\n const moveEvent = isTouchEvent ? 'touchmove' : 'mousemove';\r\n const upEvent = isTouchEvent ? 'touchend' : 'mouseup';\r\n\r\n this.setActivatingNodes(direction);\r\n this.initResize(event, direction);\r\n\r\n const mouseup = fromEvent(this.document, upEvent);\r\n this.mouseUpSub = mouseup.subscribe((ev) => {\r\n this.mouseup(ev as MouseEvent | TouchEvent);\r\n });\r\n const mouseMoveSub = fromEvent(this.document, moveEvent)\r\n .pipe(takeUntil(mouseup))\r\n .subscribe((ev) => {\r\n this.move(ev as MouseEvent | TouchEvent, clientWidth, clientHeight, offsetTop, offsetLeft, screenX, screenY);\r\n });\r\n\r\n this.mouseUpSub.add(mouseMoveSub);\r\n }\r\n\r\n setPosition() {\r\n if (!this.xResizable() || !this.firstLoaded) return;\r\n let positions: XResizablePosition[] = [];\r\n if (XIsString(this.position())) {\r\n positions.push(this.position() as XResizablePosition);\r\n } else if (XIsArray(this.position())) {\r\n positions = this.position() as XResizablePosition[];\r\n }\r\n\r\n if (positions.includes('all')) {\r\n this.positions = this.allPositions;\r\n } else {\r\n this.positions = positions;\r\n }\r\n this.createNode(...this.positions);\r\n\r\n const computedStyle = XComputed(this.elementRef.nativeElement);\r\n setTimeout(() => {\r\n this.minWidth = parseFloat(computedStyle.minWidth);\r\n this.maxWidth = parseFloat(computedStyle.maxWidth);\r\n this.minHeight = parseFloat(computedStyle.minHeight);\r\n this.maxHeight = parseFloat(computedStyle.maxHeight);\r\n this.firstLoaded = false;\r\n });\r\n }\r\n\r\n setActivatingNodes(direction: XResizablePosition) {\r\n if (!this.positions.includes(direction)) return;\r\n const addActivatingNode = (...direction: XResizablePosition[]) => {\r\n for (let item of direction) {\r\n const nd = this.positionNodes[item];\r\n const isNd = this.activatingNodes.includes(nd);\r\n if (!nd || isNd) continue;\r\n this.renderer.addClass(nd, 'x-resizable-activating');\r\n this.activatingNodes.push(nd);\r\n }\r\n };\r\n if (this.cornerPositions.includes(direction)) {\r\n switch (direction) {\r\n case 'bottom-end':\r\n addActivatingNode('bottom', 'right');\r\n break;\r\n case 'top-end':\r\n addActivatingNode('top', 'right');\r\n break;\r\n case 'bottom-start':\r\n addActivatingNode('bottom', 'left');\r\n break;\r\n case 'top-start':\r\n addActivatingNode('top', 'left');\r\n break;\r\n }\r\n }\r\n addActivatingNode(direction);\r\n }\r\n\r\n createNode(...classes: XResizablePosition[]) {\r\n for (let cla of classes) {\r\n const pos = this.renderer.createElement('div');\r\n this.renderer.addClass(pos, `x-resizable-${cla}`);\r\n this.renderer.appendChild(this.elementRef.nativeElement, pos);\r\n this.positionNodes[cla] = pos;\r\n }\r\n }\r\n\r\n initResize(event: MouseEvent | TouchEvent, direction: XResizablePosition) {\r\n const evt = event.type.startsWith('touch') ? (event as TouchEvent).targetTouches[0] : (event as MouseEvent);\r\n this.direction = direction;\r\n this.renderer.addClass(this.elementRef.nativeElement, `x-resizable-resizing`);\r\n let { clientWidth, clientHeight, offsetLeft, offsetTop } = this.elementRef.nativeElement;\r\n this.newBox = { clientWidth, clientHeight, offsetLeft, offsetTop };\r\n event.stopPropagation();\r\n this.resizeBegin.emit({ event: evt as MouseEvent, ...this.newBox });\r\n }\r\n\r\n mouseup(event: MouseEvent | TouchEvent) {\r\n this.endResize(event);\r\n this.destroySubscription();\r\n }\r\n\r\n endResize(event: MouseEvent | TouchEvent) {\r\n const evt = event.type.startsWith('touch') ? (event as TouchEvent).targetTouches[0] : (event as MouseEvent);\r\n this.direction = undefined;\r\n this.renderer.removeClass(this.elementRef.nativeElement, `x-resizable-resizing`);\r\n for (const node of this.activatingNodes) {\r\n this.renderer.removeClass(node, 'x-resizable-activating');\r\n }\r\n this.activatingNodes = [];\r\n this.resizeEnd.emit({ event: evt as MouseEvent, ...this.newBox });\r\n }\r\n\r\n move(\r\n event: MouseEvent | TouchEvent,\r\n width: number,\r\n height: number,\r\n top: number,\r\n left: number,\r\n screenX: number,\r\n screenY: number\r\n ) {\r\n const evt = event.type.startsWith('touch') ? (event as TouchEvent).targetTouches[0] : (event as MouseEvent);\r\n const movementX = evt.screenX - screenX;\r\n const movementY = evt.screenY - screenY;\r\n\r\n this.newBox = {\r\n clientWidth:\r\n width - (['bottom-start', 'left', 'top-start'].includes(this.direction as string) ? movementX : -movementX),\r\n clientHeight:\r\n height - (['top-start', 'top', 'top-end'].includes(this.direction as string) ? movementY : -movementY),\r\n offsetLeft: left + movementX,\r\n offsetTop: top + movementY\r\n };\r\n\r\n const box = {\r\n ...this.newBox,\r\n offsetLeft: this.newBox.offsetLeft - XToCssPx(this.offsetLeft(), this.fontSize()),\r\n offsetTop: this.newBox.offsetTop - XToCssPx(this.offsetTop(), this.fontSize())\r\n };\r\n\r\n this.resizeBox(box);\r\n\r\n this.resizing.emit({ ...this.newBox, event: evt as MouseEvent, direction: this.direction });\r\n }\r\n\r\n resizeBox(box: { clientWidth: number; clientHeight: number; offsetLeft: number; offsetTop: number }) {\r\n if (this.ghost()) return;\r\n const overMinWidth = !this.minWidth || box.clientWidth >= this.minWidth;\r\n const underMaxWidth = !this.maxWidth || box.clientWidth <= this.maxWidth;\r\n const overMinHeight = !this.minHeight || box.clientHeight >= this.minHeight;\r\n const underMaxHeight = !this.maxHeight || box.clientHeight <= this.maxHeight;\r\n\r\n switch (this.direction) {\r\n case 'right':\r\n if (overMinWidth && underMaxWidth) {\r\n this.renderer.setStyle(this.elementRef.nativeElement, 'width', `${box.clientWidth}px`);\r\n }\r\n break;\r\n case 'top-end':\r\n if (overMinWidth && underMaxWidth) {\r\n this.renderer.setStyle(this.elementRef.nativeElement, 'width', `${box.clientWidth}px`);\r\n }\r\n if (overMinHeight && underMaxHeight) {\r\n this.renderer.setStyle(this.elementRef.nativeElement, 'top', `${box.offsetTop}px`);\r\n this.renderer.setStyle(this.elementRef.nativeElement, 'height', `${box.clientHeight}px`);\r\n }\r\n break;\r\n case 'bottom-end':\r\n if (overMinWidth && underMaxWidth) {\r\n this.renderer.setStyle(this.elementRef.nativeElement, 'width', `${box.clientWidth}px`);\r\n }\r\n if (overMinHeight && underMaxHeight) {\r\n this.renderer.setStyle(this.elementRef.nativeElement, 'height', `${box.clientHeight}px`);\r\n }\r\n break;\r\n case 'bottom-start':\r\n if (overMinWidth && underMaxWidth) {\r\n this.renderer.setStyle(this.elementRef.nativeElement, 'left', `${box.offsetLeft}px`);\r\n this.renderer.setStyle(this.elementRef.nativeElement, 'width', `${box.clientWidth}px`);\r\n }\r\n if (overMinHeight && underMaxHeight) {\r\n this.renderer.setStyle(this.elementRef.nativeElement, 'height', `${box.clientHeight}px`);\r\n }\r\n break;\r\n case 'left':\r\n if (overMinWidth && underMaxWidth) {\r\n this.renderer.setStyle(this.elementRef.nativeElement, 'left', `${box.offsetLeft}px`);\r\n this.renderer.setStyle(this.elementRef.nativeElement, 'width', `${box.clientWidth}px`);\r\n }\r\n break;\r\n case 'top-start':\r\n if (overMinWidth && underMaxWidth) {\r\n this.renderer.setStyle(this.elementRef.nativeElement, 'left', `${box.offsetLeft}px`);\r\n this.renderer.setStyle(this.elementRef.nativeElement, 'width', `${box.clientWidth}px`);\r\n }\r\n if (overMinHeight && underMaxHeight) {\r\n this.renderer.setStyle(this.elementRef.nativeElement, 'top', `${box.offsetTop}px`);\r\n this.renderer.setStyle(this.elementRef.nativeElement, 'height', `${box.clientHeight}px`);\r\n }\r\n break;\r\n case 'top':\r\n if (overMinHeight && underMaxHeight) {\r\n this.renderer.setStyle(this.elementRef.nativeElement, 'top', `${box.offsetTop}px`);\r\n this.renderer.setStyle(this.elementRef.nativeElement, 'height', `${box.clientHeight}px`);\r\n }\r\n break;\r\n case 'bottom':\r\n if (overMinHeight && underMaxHeight) {\r\n this.renderer.setStyle(this.elementRef.nativeElement, 'height', `${box.clientHeight}px`);\r\n }\r\n break;\r\n }\r\n }\r\n\r\n private destroySubscription() {\r\n if (this.mouseUpSub) {\r\n this.mouseUpSub.unsubscribe();\r\n this.mouseUpSub = undefined;\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { XResizableDirective } from './resizable.directive';\r\n\r\n@NgModule({\r\n imports: [XResizableDirective],\r\n exports: [XResizableDirective]\r\n})\r\nexport class XResizableModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -39,10 +39,10 @@ class XResultProperty extends XPropertyFunction(X_RESULT_CONFIG_NAME) {
|
|
|
39
39
|
*/
|
|
40
40
|
this.subTitle = input(...(ngDevMode ? [undefined, { debugName: "subTitle" }] : []));
|
|
41
41
|
}
|
|
42
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.
|
|
43
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.0.
|
|
42
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XResultProperty, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
43
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.0.6", type: XResultProperty, isStandalone: true, selector: "x-result-property", inputs: { status: { classPropertyName: "status", publicName: "status", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, subTitle: { classPropertyName: "subTitle", publicName: "subTitle", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
|
|
44
44
|
}
|
|
45
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.
|
|
45
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XResultProperty, decorators: [{
|
|
46
46
|
type: Component,
|
|
47
47
|
args: [{ selector: `${XResultPrefix}-property`, template: '' }]
|
|
48
48
|
}], propDecorators: { status: [{ type: i0.Input, args: [{ isSignal: true, alias: "status", required: false }] }], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], subTitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "subTitle", required: false }] }] } });
|
|
@@ -57,20 +57,20 @@ class XResultComponent extends XResultProperty {
|
|
|
57
57
|
[`${XResultPrefix}-${this.status()}`]: !XIsEmpty(this.status())
|
|
58
58
|
}), ...(ngDevMode ? [{ debugName: "classMap" }] : []));
|
|
59
59
|
}
|
|
60
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.
|
|
61
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.
|
|
60
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XResultComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
61
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.6", type: XResultComponent, isStandalone: true, selector: "x-result", usesInheritance: true, ngImport: i0, template: "<div #result class=\"x-result\" [ngClass]=\"classMap()\">\r\n <div class=\"x-result-icon\">\r\n @if (icon()) {\r\n <ng-container *xOutlet=\"icon()\">\r\n <x-icon [type]=\"strIcon()\"></x-icon>\r\n </ng-container>\r\n } @else {\r\n @switch (status()) {\r\n @case ('success') {\r\n <x-icon type=\"adf-check-circle\"></x-icon>\r\n }\r\n @case ('info') {\r\n <x-icon type=\"adf-info-circle\"></x-icon>\r\n }\r\n @case ('warning') {\r\n <x-icon type=\"adf-warning\"></x-icon>\r\n }\r\n @case ('error') {\r\n <x-icon type=\"adf-close-circle\"></x-icon>\r\n }\r\n @case ('403') {\r\n <x-icon type=\"fto-lock\"></x-icon>\r\n }\r\n @case ('404') {\r\n <x-icon type=\"fto-code\"></x-icon>\r\n }\r\n @case ('500') {\r\n <x-icon type=\"adf-close-circle\"></x-icon>\r\n }\r\n }\r\n }\r\n </div>\r\n\r\n <div class=\"x-result-title\">\r\n <ng-container *xOutlet=\"title()\">{{ title() }}</ng-container>\r\n </div>\r\n <div class=\"x-result-subTitle\">\r\n <ng-container *xOutlet=\"subTitle()\">{{ subTitle() }}</ng-container>\r\n </div>\r\n <div class=\"x-result-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n", styles: [".x-result{margin:0;padding:0}.x-result{display:flex;flex-direction:column;align-items:center;padding:3rem 2rem}.x-result-icon{font-size:calc(var(--x-font-size) * 5);margin-bottom:var(--x-font-size-large)}.x-result-title{font-size:var(--x-font-size-large);line-height:calc(var(--x-font-size-large) * 1.5)}.x-result-subTitle{color:var(--x-text-400)}.x-result-content{margin-top:var(--x-font-size-large)}.x-result-success .x-result-icon{color:var(--x-success)}.x-result-info .x-result-icon{color:var(--x-info)}.x-result-warning .x-result-icon{color:var(--x-warning)}.x-result-error .x-result-icon{color:var(--x-danger)}.x-result-403 .x-result-icon,.x-result-404 .x-result-icon{color:var(--x-text-400)}.x-result-500 .x-result-icon{color:var(--x-danger)}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: XIconComponent, selector: "x-icon" }, { kind: "directive", type: XOutletDirective, selector: "[xOutlet]", inputs: ["xOutletContext", "xOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
62
62
|
}
|
|
63
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.
|
|
63
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XResultComponent, decorators: [{
|
|
64
64
|
type: Component,
|
|
65
65
|
args: [{ selector: `${XResultPrefix}`, imports: [NgClass, XIconComponent, XOutletDirective], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div #result class=\"x-result\" [ngClass]=\"classMap()\">\r\n <div class=\"x-result-icon\">\r\n @if (icon()) {\r\n <ng-container *xOutlet=\"icon()\">\r\n <x-icon [type]=\"strIcon()\"></x-icon>\r\n </ng-container>\r\n } @else {\r\n @switch (status()) {\r\n @case ('success') {\r\n <x-icon type=\"adf-check-circle\"></x-icon>\r\n }\r\n @case ('info') {\r\n <x-icon type=\"adf-info-circle\"></x-icon>\r\n }\r\n @case ('warning') {\r\n <x-icon type=\"adf-warning\"></x-icon>\r\n }\r\n @case ('error') {\r\n <x-icon type=\"adf-close-circle\"></x-icon>\r\n }\r\n @case ('403') {\r\n <x-icon type=\"fto-lock\"></x-icon>\r\n }\r\n @case ('404') {\r\n <x-icon type=\"fto-code\"></x-icon>\r\n }\r\n @case ('500') {\r\n <x-icon type=\"adf-close-circle\"></x-icon>\r\n }\r\n }\r\n }\r\n </div>\r\n\r\n <div class=\"x-result-title\">\r\n <ng-container *xOutlet=\"title()\">{{ title() }}</ng-container>\r\n </div>\r\n <div class=\"x-result-subTitle\">\r\n <ng-container *xOutlet=\"subTitle()\">{{ subTitle() }}</ng-container>\r\n </div>\r\n <div class=\"x-result-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n", styles: [".x-result{margin:0;padding:0}.x-result{display:flex;flex-direction:column;align-items:center;padding:3rem 2rem}.x-result-icon{font-size:calc(var(--x-font-size) * 5);margin-bottom:var(--x-font-size-large)}.x-result-title{font-size:var(--x-font-size-large);line-height:calc(var(--x-font-size-large) * 1.5)}.x-result-subTitle{color:var(--x-text-400)}.x-result-content{margin-top:var(--x-font-size-large)}.x-result-success .x-result-icon{color:var(--x-success)}.x-result-info .x-result-icon{color:var(--x-info)}.x-result-warning .x-result-icon{color:var(--x-warning)}.x-result-error .x-result-icon{color:var(--x-danger)}.x-result-403 .x-result-icon,.x-result-404 .x-result-icon{color:var(--x-text-400)}.x-result-500 .x-result-icon{color:var(--x-danger)}\n"] }]
|
|
66
66
|
}] });
|
|
67
67
|
|
|
68
68
|
class XResultModule {
|
|
69
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.
|
|
70
|
-
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.
|
|
71
|
-
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.
|
|
69
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XResultModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
70
|
+
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.6", ngImport: i0, type: XResultModule, imports: [XResultComponent], exports: [XResultComponent] }); }
|
|
71
|
+
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XResultModule, imports: [XResultComponent] }); }
|
|
72
72
|
}
|
|
73
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.
|
|
73
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XResultModule, decorators: [{
|
|
74
74
|
type: NgModule,
|
|
75
75
|
args: [{
|
|
76
76
|
exports: [XResultComponent],
|
|
@@ -26,17 +26,17 @@ class XRippleProperty extends XPropertyFunction(X_RIPPLE_CONFIG_NAME) {
|
|
|
26
26
|
* @zh_CN 执行时间
|
|
27
27
|
* @en_US The execution time
|
|
28
28
|
*/
|
|
29
|
-
this.duration = input(500, ...(ngDevMode ?
|
|
29
|
+
this.duration = input(500, { ...(ngDevMode ? { debugName: "duration" } : {}), transform: XToNumber });
|
|
30
30
|
/**
|
|
31
31
|
* @zh_CN 禁用
|
|
32
32
|
* @en_US Disable
|
|
33
33
|
*/
|
|
34
|
-
this.disabled = input(false, ...(ngDevMode ?
|
|
34
|
+
this.disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : {}), transform: XToBoolean });
|
|
35
35
|
}
|
|
36
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.
|
|
37
|
-
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.0.
|
|
36
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XRippleProperty, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
37
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.0.6", type: XRippleProperty, isStandalone: true, selector: "[x-ripple]", inputs: { type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, duration: { classPropertyName: "duration", publicName: "duration", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0 }); }
|
|
38
38
|
}
|
|
39
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.
|
|
39
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XRippleProperty, decorators: [{
|
|
40
40
|
type: Directive,
|
|
41
41
|
args: [{ selector: '[x-ripple]' }]
|
|
42
42
|
}], propDecorators: { type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: false }] }], duration: [{ type: i0.Input, args: [{ isSignal: true, alias: "duration", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }] } });
|
|
@@ -119,10 +119,10 @@ class XRippleDirective extends XRippleProperty {
|
|
|
119
119
|
enforceStyleRecalculation(element) {
|
|
120
120
|
XComputed(element).getPropertyValue('opacity');
|
|
121
121
|
}
|
|
122
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.
|
|
123
|
-
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.0.
|
|
122
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XRippleDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
123
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.0.6", type: XRippleDirective, isStandalone: true, selector: "[x-ripple]", host: { properties: { "class": "this.className" } }, usesInheritance: true, ngImport: i0 }); }
|
|
124
124
|
}
|
|
125
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.
|
|
125
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XRippleDirective, decorators: [{
|
|
126
126
|
type: Directive,
|
|
127
127
|
args: [{
|
|
128
128
|
selector: `[${XRipplePrefix}]`
|
|
@@ -133,11 +133,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0", ngImpor
|
|
|
133
133
|
}] } });
|
|
134
134
|
|
|
135
135
|
class XRippleModule {
|
|
136
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.
|
|
137
|
-
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.
|
|
138
|
-
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.
|
|
136
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XRippleModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
137
|
+
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.6", ngImport: i0, type: XRippleModule, imports: [XRippleDirective], exports: [XRippleDirective] }); }
|
|
138
|
+
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XRippleModule }); }
|
|
139
139
|
}
|
|
140
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.
|
|
140
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XRippleModule, decorators: [{
|
|
141
141
|
type: NgModule,
|
|
142
142
|
args: [{
|
|
143
143
|
imports: [XRippleDirective],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-nest-ui-ripple.mjs","sources":["../../../../lib/ng-nest/ui/ripple/ripple.property.ts","../../../../lib/ng-nest/ui/ripple/ripple.directive.ts","../../../../lib/ng-nest/ui/ripple/ripple.module.ts","../../../../lib/ng-nest/ui/ripple/ng-nest-ui-ripple.ts"],"sourcesContent":["import { XPropertyFunction, XToBoolean, XToNumber } from '@ng-nest/ui/core';\r\nimport { Directive, input } from '@angular/core';\r\nimport type { XBoolean, XNumber, XType } from '@ng-nest/ui/core';\r\n\r\n/**\r\n * Ripple\r\n * @selector x-ripple\r\n * @decorator directive\r\n */\r\nexport const XRipplePrefix = 'x-ripple';\r\nconst X_RIPPLE_CONFIG_NAME = 'ripple';\r\n\r\n/**\r\n * Ripple Property\r\n */\r\n@Directive({ selector: '[x-ripple]' })\r\nexport class XRippleProperty extends XPropertyFunction(X_RIPPLE_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 类型\r\n * @en_US Types of\r\n */\r\n readonly type = input<XRippleType>(this.config?.type ?? 'initial');\r\n /**\r\n * @zh_CN 执行时间\r\n * @en_US The execution time\r\n */\r\n readonly duration = input<number, XNumber>(500, {transform: XToNumber});\r\n /**\r\n * @zh_CN 禁用\r\n * @en_US Disable\r\n */\r\n readonly disabled = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n}\r\n\r\n/**\r\n * @zh_CN 波纹类型\r\n * @en_US Ripple type\r\n */\r\nexport type XRippleType = XType;\r\n","import {\r\n Renderer2,\r\n ElementRef,\r\n Directive,\r\n OnDestroy,\r\n inject,\r\n HostBinding,\r\n ChangeDetectorRef,\r\n effect\r\n} from '@angular/core';\r\nimport { delay, finalize, fromEvent, of, Subject, Subscription, takeUntil, tap } from 'rxjs';\r\nimport { XRipplePrefix, XRippleProperty } from './ripple.property';\r\nimport { XComputed } from '@ng-nest/ui/core';\r\nimport { DOCUMENT } from '@angular/common';\r\n\r\n@Directive({\r\n selector: `[${XRipplePrefix}]`\r\n})\r\nexport class XRippleDirective extends XRippleProperty implements OnDestroy {\r\n @HostBinding('class') get className() {\r\n return `${XRipplePrefix} ${XRipplePrefix}-${this.type()}`;\r\n }\r\n\r\n private unsub = new Subject<void>();\r\n private renderer = inject(Renderer2);\r\n private elementRef = inject(ElementRef);\r\n private cdr = inject(ChangeDetectorRef);\r\n private document = inject(DOCUMENT);\r\n downEvent: Subscription | null = null;\r\n upEvent: Subscription | null = null;\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n if (this.disabled()) {\r\n this.downEvent?.unsubscribe();\r\n this.upEvent?.unsubscribe();\r\n } else {\r\n this.downEvent?.unsubscribe();\r\n this.upEvent?.unsubscribe();\r\n this.setEvent();\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.unsub.next();\r\n this.unsub.complete();\r\n }\r\n\r\n setEvent() {\r\n this.downEvent = fromEvent<MouseEvent>(this.elementRef.nativeElement, 'mousedown')\r\n .pipe(takeUntil(this.unsub))\r\n .subscribe((event) => {\r\n const eleRect = this.elementRef.nativeElement.getBoundingClientRect();\r\n const radius = this.distanceToFurthestCorner(event.x, event.y, eleRect);\r\n const offsetX = event.x - eleRect.left;\r\n const offsetY = event.y - eleRect.top;\r\n const ripple = this.renderer.createElement('div');\r\n this.renderer.addClass(ripple, 'x-ripple-element');\r\n ripple.style.left = `${offsetX - radius}px`;\r\n ripple.style.top = `${offsetY - radius}px`;\r\n ripple.style.height = `${radius * 2}px`;\r\n ripple.style.width = `${radius * 2}px`;\r\n ripple.style.transitionDuration = `${this.duration()}ms`;\r\n this.renderer.appendChild(this.elementRef.nativeElement, ripple);\r\n this.enforceStyleRecalculation(ripple);\r\n ripple.style.transform = 'scale(1)';\r\n ripple.style.opacity = '0.3';\r\n const downTime = new Date().getTime();\r\n\r\n let upEvent = fromEvent<MouseEvent>(this.document.documentElement, 'mouseup')\r\n .pipe(takeUntil(this.unsub))\r\n .subscribe(() => {\r\n const upTime = new Date().getTime();\r\n of(true)\r\n .pipe(\r\n delay(upTime - downTime > this.duration() ? 0 : this.duration() - (upTime - downTime)),\r\n tap(() => {\r\n if (this.elementRef.nativeElement.contains(ripple)) {\r\n this.renderer.removeChild(this.elementRef.nativeElement, ripple);\r\n }\r\n // TODO: use zoneless, renderer removeChild will not take effect immediately\r\n this.cdr.markForCheck();\r\n upEvent.unsubscribe();\r\n }),\r\n finalize(() => {\r\n if (this.elementRef.nativeElement.contains(ripple)) {\r\n this.renderer.removeChild(this.elementRef.nativeElement, ripple);\r\n }\r\n }),\r\n takeUntil(this.unsub)\r\n )\r\n .subscribe();\r\n });\r\n });\r\n }\r\n\r\n distanceToFurthestCorner(x: number, y: number, rect: DOMRect) {\r\n const distX = Math.max(Math.abs(x - rect.left), Math.abs(x - rect.right));\r\n const distY = Math.max(Math.abs(y - rect.top), Math.abs(y - rect.bottom));\r\n return Math.sqrt(distX * distX + distY * distY);\r\n }\r\n\r\n enforceStyleRecalculation(element: HTMLElement) {\r\n XComputed(element).getPropertyValue('opacity');\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { XRippleDirective } from './ripple.directive';\r\n\r\n@NgModule({\r\n imports: [XRippleDirective],\r\n exports: [XRippleDirective]\r\n})\r\nexport class XRippleModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ng-nest-ui-ripple.mjs","sources":["../../../../lib/ng-nest/ui/ripple/ripple.property.ts","../../../../lib/ng-nest/ui/ripple/ripple.directive.ts","../../../../lib/ng-nest/ui/ripple/ripple.module.ts","../../../../lib/ng-nest/ui/ripple/ng-nest-ui-ripple.ts"],"sourcesContent":["import { XPropertyFunction, XToBoolean, XToNumber } from '@ng-nest/ui/core';\r\nimport { Directive, input } from '@angular/core';\r\nimport type { XBoolean, XNumber, XType } from '@ng-nest/ui/core';\r\n\r\n/**\r\n * Ripple\r\n * @selector x-ripple\r\n * @decorator directive\r\n */\r\nexport const XRipplePrefix = 'x-ripple';\r\nconst X_RIPPLE_CONFIG_NAME = 'ripple';\r\n\r\n/**\r\n * Ripple Property\r\n */\r\n@Directive({ selector: '[x-ripple]' })\r\nexport class XRippleProperty extends XPropertyFunction(X_RIPPLE_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 类型\r\n * @en_US Types of\r\n */\r\n readonly type = input<XRippleType>(this.config?.type ?? 'initial');\r\n /**\r\n * @zh_CN 执行时间\r\n * @en_US The execution time\r\n */\r\n readonly duration = input<number, XNumber>(500, {transform: XToNumber});\r\n /**\r\n * @zh_CN 禁用\r\n * @en_US Disable\r\n */\r\n readonly disabled = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n}\r\n\r\n/**\r\n * @zh_CN 波纹类型\r\n * @en_US Ripple type\r\n */\r\nexport type XRippleType = XType;\r\n","import {\r\n Renderer2,\r\n ElementRef,\r\n Directive,\r\n OnDestroy,\r\n inject,\r\n HostBinding,\r\n ChangeDetectorRef,\r\n effect\r\n} from '@angular/core';\r\nimport { delay, finalize, fromEvent, of, Subject, Subscription, takeUntil, tap } from 'rxjs';\r\nimport { XRipplePrefix, XRippleProperty } from './ripple.property';\r\nimport { XComputed } from '@ng-nest/ui/core';\r\nimport { DOCUMENT } from '@angular/common';\r\n\r\n@Directive({\r\n selector: `[${XRipplePrefix}]`\r\n})\r\nexport class XRippleDirective extends XRippleProperty implements OnDestroy {\r\n @HostBinding('class') get className() {\r\n return `${XRipplePrefix} ${XRipplePrefix}-${this.type()}`;\r\n }\r\n\r\n private unsub = new Subject<void>();\r\n private renderer = inject(Renderer2);\r\n private elementRef = inject(ElementRef);\r\n private cdr = inject(ChangeDetectorRef);\r\n private document = inject(DOCUMENT);\r\n downEvent: Subscription | null = null;\r\n upEvent: Subscription | null = null;\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n if (this.disabled()) {\r\n this.downEvent?.unsubscribe();\r\n this.upEvent?.unsubscribe();\r\n } else {\r\n this.downEvent?.unsubscribe();\r\n this.upEvent?.unsubscribe();\r\n this.setEvent();\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.unsub.next();\r\n this.unsub.complete();\r\n }\r\n\r\n setEvent() {\r\n this.downEvent = fromEvent<MouseEvent>(this.elementRef.nativeElement, 'mousedown')\r\n .pipe(takeUntil(this.unsub))\r\n .subscribe((event) => {\r\n const eleRect = this.elementRef.nativeElement.getBoundingClientRect();\r\n const radius = this.distanceToFurthestCorner(event.x, event.y, eleRect);\r\n const offsetX = event.x - eleRect.left;\r\n const offsetY = event.y - eleRect.top;\r\n const ripple = this.renderer.createElement('div');\r\n this.renderer.addClass(ripple, 'x-ripple-element');\r\n ripple.style.left = `${offsetX - radius}px`;\r\n ripple.style.top = `${offsetY - radius}px`;\r\n ripple.style.height = `${radius * 2}px`;\r\n ripple.style.width = `${radius * 2}px`;\r\n ripple.style.transitionDuration = `${this.duration()}ms`;\r\n this.renderer.appendChild(this.elementRef.nativeElement, ripple);\r\n this.enforceStyleRecalculation(ripple);\r\n ripple.style.transform = 'scale(1)';\r\n ripple.style.opacity = '0.3';\r\n const downTime = new Date().getTime();\r\n\r\n let upEvent = fromEvent<MouseEvent>(this.document.documentElement, 'mouseup')\r\n .pipe(takeUntil(this.unsub))\r\n .subscribe(() => {\r\n const upTime = new Date().getTime();\r\n of(true)\r\n .pipe(\r\n delay(upTime - downTime > this.duration() ? 0 : this.duration() - (upTime - downTime)),\r\n tap(() => {\r\n if (this.elementRef.nativeElement.contains(ripple)) {\r\n this.renderer.removeChild(this.elementRef.nativeElement, ripple);\r\n }\r\n // TODO: use zoneless, renderer removeChild will not take effect immediately\r\n this.cdr.markForCheck();\r\n upEvent.unsubscribe();\r\n }),\r\n finalize(() => {\r\n if (this.elementRef.nativeElement.contains(ripple)) {\r\n this.renderer.removeChild(this.elementRef.nativeElement, ripple);\r\n }\r\n }),\r\n takeUntil(this.unsub)\r\n )\r\n .subscribe();\r\n });\r\n });\r\n }\r\n\r\n distanceToFurthestCorner(x: number, y: number, rect: DOMRect) {\r\n const distX = Math.max(Math.abs(x - rect.left), Math.abs(x - rect.right));\r\n const distY = Math.max(Math.abs(y - rect.top), Math.abs(y - rect.bottom));\r\n return Math.sqrt(distX * distX + distY * distY);\r\n }\r\n\r\n enforceStyleRecalculation(element: HTMLElement) {\r\n XComputed(element).getPropertyValue('opacity');\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { XRippleDirective } from './ripple.directive';\r\n\r\n@NgModule({\r\n imports: [XRippleDirective],\r\n exports: [XRippleDirective]\r\n})\r\nexport class XRippleModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -20,6 +20,12 @@ class XScrollableComponent {
|
|
|
20
20
|
this.trackYRef = viewChild.required('trackY');
|
|
21
21
|
this.thumbYRef = viewChild.required('thumbY');
|
|
22
22
|
this.isActive = signal(false, ...(ngDevMode ? [{ debugName: "isActive" }] : []));
|
|
23
|
+
this.isAtTop = signal(false, ...(ngDevMode ? [{ debugName: "isAtTop" }] : []));
|
|
24
|
+
this.isAtBottom = signal(false, ...(ngDevMode ? [{ debugName: "isAtBottom" }] : []));
|
|
25
|
+
this.isAtLeft = signal(false, ...(ngDevMode ? [{ debugName: "isAtLeft" }] : []));
|
|
26
|
+
this.isAtRight = signal(false, ...(ngDevMode ? [{ debugName: "isAtRight" }] : []));
|
|
27
|
+
this.hasVerticalScrollbar = signal(false, ...(ngDevMode ? [{ debugName: "hasVerticalScrollbar" }] : []));
|
|
28
|
+
this.hasHorizontalScrollbar = signal(false, ...(ngDevMode ? [{ debugName: "hasHorizontalScrollbar" }] : []));
|
|
23
29
|
this.isDragging = false;
|
|
24
30
|
this.dragAxis = null;
|
|
25
31
|
this.dragStart = { x: 0, y: 0 };
|
|
@@ -46,6 +52,9 @@ class XScrollableComponent {
|
|
|
46
52
|
const trackY = this.trackYRef().nativeElement;
|
|
47
53
|
const content = this.contentRef().nativeElement;
|
|
48
54
|
let { clientHeight, scrollHeight, scrollTop } = content;
|
|
55
|
+
this.isAtTop.set(scrollTop === 0);
|
|
56
|
+
this.isAtBottom.set(scrollTop + clientHeight >= scrollHeight);
|
|
57
|
+
this.hasVerticalScrollbar.set(scrollHeight > clientHeight);
|
|
49
58
|
if (this.yOffsetTop() !== 0 && this.yOffsetBottom() === 0) {
|
|
50
59
|
this.renderer.setStyle(trackY, 'top', `${this.yOffsetTop()}px`);
|
|
51
60
|
this.renderer.setStyle(trackY, 'height', `calc(100% - ${this.yOffsetTop()}px)`);
|
|
@@ -87,6 +96,9 @@ class XScrollableComponent {
|
|
|
87
96
|
const thumbX = this.thumbXRef().nativeElement;
|
|
88
97
|
const trackX = this.trackXRef().nativeElement;
|
|
89
98
|
let { clientWidth, scrollWidth, scrollLeft } = content;
|
|
99
|
+
this.isAtLeft.set(scrollLeft === 0);
|
|
100
|
+
this.isAtRight.set(scrollLeft + clientWidth >= scrollWidth);
|
|
101
|
+
this.hasHorizontalScrollbar.set(scrollWidth > clientWidth);
|
|
90
102
|
if (this.xOffsetLeft() !== 0 && this.xOffsetRight() === 0) {
|
|
91
103
|
this.renderer.setStyle(trackX, 'left', `${this.xOffsetLeft()}px`);
|
|
92
104
|
this.renderer.setStyle(trackX, 'width', `calc(100% - ${this.xOffsetLeft()}px)`);
|
|
@@ -192,20 +204,20 @@ class XScrollableComponent {
|
|
|
192
204
|
this.isActive.set(false);
|
|
193
205
|
}
|
|
194
206
|
}
|
|
195
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.
|
|
196
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.0.
|
|
207
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XScrollableComponent, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
208
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.0.6", type: XScrollableComponent, isStandalone: true, selector: "x-scrollable", inputs: { yOffsetTop: { classPropertyName: "yOffsetTop", publicName: "yOffsetTop", isSignal: true, isRequired: false, transformFunction: null }, yOffsetBottom: { classPropertyName: "yOffsetBottom", publicName: "yOffsetBottom", isSignal: true, isRequired: false, transformFunction: null }, yOffsetLeft: { classPropertyName: "yOffsetLeft", publicName: "yOffsetLeft", isSignal: true, isRequired: false, transformFunction: null }, yOffsetRight: { classPropertyName: "yOffsetRight", publicName: "yOffsetRight", isSignal: true, isRequired: false, transformFunction: null }, xOffsetTop: { classPropertyName: "xOffsetTop", publicName: "xOffsetTop", isSignal: true, isRequired: false, transformFunction: null }, xOffsetBottom: { classPropertyName: "xOffsetBottom", publicName: "xOffsetBottom", isSignal: true, isRequired: false, transformFunction: null }, xOffsetLeft: { classPropertyName: "xOffsetLeft", publicName: "xOffsetLeft", isSignal: true, isRequired: false, transformFunction: null }, xOffsetRight: { classPropertyName: "xOffsetRight", publicName: "xOffsetRight", isSignal: true, isRequired: false, transformFunction: null }, maxHeight: { classPropertyName: "maxHeight", publicName: "maxHeight", isSignal: true, isRequired: false, transformFunction: null }, maxWidth: { classPropertyName: "maxWidth", publicName: "maxWidth", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "contentRef", first: true, predicate: ["content"], descendants: true, isSignal: true }, { propertyName: "trackXRef", first: true, predicate: ["trackX"], descendants: true, isSignal: true }, { propertyName: "thumbXRef", first: true, predicate: ["thumbX"], descendants: true, isSignal: true }, { propertyName: "trackYRef", first: true, predicate: ["trackY"], descendants: true, isSignal: true }, { propertyName: "thumbYRef", first: true, predicate: ["thumbY"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"x-scrollable\" [class.active]=\"isActive()\" (mouseenter)=\"onHostEnter()\" (mouseleave)=\"onHostLeave()\">\r\n <div\r\n #content\r\n class=\"x-scrollable-content\"\r\n [style.maxHeight]=\"maxHeight()\"\r\n [style.maxWidth]=\"maxWidth()\"\r\n (scroll)=\"updateScrollbars()\"\r\n >\r\n <ng-content></ng-content>\r\n </div>\r\n\r\n <div #trackY class=\"x-scrollable-track x-scrollable-track-y\">\r\n <div #thumbY class=\"x-scrollable-thumb x-scrollable-thumb-y\" (mousedown)=\"startDrag($event, 'y')\"></div>\r\n </div>\r\n\r\n <div #trackX class=\"x-scrollable-track x-scrollable-track-x\">\r\n <div #thumbX class=\"x-scrollable-thumb x-scrollable-thumb-x\" (mousedown)=\"startDrag($event, 'x')\"></div>\r\n </div>\r\n</div>\r\n", styles: [".x-scrollable{margin:0;padding:0}.x-scrollable{position:relative;width:100%;height:100%}.x-scrollable .x-scrollable-content{overflow:auto}.x-scrollable .x-scrollable-content::-webkit-scrollbar{width:0;height:0}.x-scrollable .x-scrollable-content{scrollbar-width:none;-ms-overflow-style:none}.x-scrollable .x-scrollable-track{position:absolute;background-color:transparent;opacity:0;transition:opacity .3s ease-in-out;z-index:1000}.x-scrollable .x-scrollable-thumb{position:absolute;background-color:#64646466;cursor:pointer;transition:background-color .2s}.x-scrollable .x-scrollable-thumb:hover{background-color:#646464b3}.x-scrollable .x-scrollable-track-y{top:0;right:0;bottom:12px;width:12px;height:100%}.x-scrollable .x-scrollable-thumb-y{right:0;width:12px;min-height:20px;will-change:transform}.x-scrollable .x-scrollable-track-x{left:0;right:0;bottom:0;height:12px;width:100%}.x-scrollable .x-scrollable-thumb-x{bottom:0;height:12px;min-width:20px;will-change:transform}.x-scrollable.active .x-scrollable-track{opacity:1}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
197
209
|
}
|
|
198
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.
|
|
210
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XScrollableComponent, decorators: [{
|
|
199
211
|
type: Component,
|
|
200
212
|
args: [{ selector: 'x-scrollable', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"x-scrollable\" [class.active]=\"isActive()\" (mouseenter)=\"onHostEnter()\" (mouseleave)=\"onHostLeave()\">\r\n <div\r\n #content\r\n class=\"x-scrollable-content\"\r\n [style.maxHeight]=\"maxHeight()\"\r\n [style.maxWidth]=\"maxWidth()\"\r\n (scroll)=\"updateScrollbars()\"\r\n >\r\n <ng-content></ng-content>\r\n </div>\r\n\r\n <div #trackY class=\"x-scrollable-track x-scrollable-track-y\">\r\n <div #thumbY class=\"x-scrollable-thumb x-scrollable-thumb-y\" (mousedown)=\"startDrag($event, 'y')\"></div>\r\n </div>\r\n\r\n <div #trackX class=\"x-scrollable-track x-scrollable-track-x\">\r\n <div #thumbX class=\"x-scrollable-thumb x-scrollable-thumb-x\" (mousedown)=\"startDrag($event, 'x')\"></div>\r\n </div>\r\n</div>\r\n", styles: [".x-scrollable{margin:0;padding:0}.x-scrollable{position:relative;width:100%;height:100%}.x-scrollable .x-scrollable-content{overflow:auto}.x-scrollable .x-scrollable-content::-webkit-scrollbar{width:0;height:0}.x-scrollable .x-scrollable-content{scrollbar-width:none;-ms-overflow-style:none}.x-scrollable .x-scrollable-track{position:absolute;background-color:transparent;opacity:0;transition:opacity .3s ease-in-out;z-index:1000}.x-scrollable .x-scrollable-thumb{position:absolute;background-color:#64646466;cursor:pointer;transition:background-color .2s}.x-scrollable .x-scrollable-thumb:hover{background-color:#646464b3}.x-scrollable .x-scrollable-track-y{top:0;right:0;bottom:12px;width:12px;height:100%}.x-scrollable .x-scrollable-thumb-y{right:0;width:12px;min-height:20px;will-change:transform}.x-scrollable .x-scrollable-track-x{left:0;right:0;bottom:0;height:12px;width:100%}.x-scrollable .x-scrollable-thumb-x{bottom:0;height:12px;min-width:20px;will-change:transform}.x-scrollable.active .x-scrollable-track{opacity:1}\n"] }]
|
|
201
213
|
}], ctorParameters: () => [{ type: i0.Renderer2 }], propDecorators: { yOffsetTop: [{ type: i0.Input, args: [{ isSignal: true, alias: "yOffsetTop", required: false }] }], yOffsetBottom: [{ type: i0.Input, args: [{ isSignal: true, alias: "yOffsetBottom", required: false }] }], yOffsetLeft: [{ type: i0.Input, args: [{ isSignal: true, alias: "yOffsetLeft", required: false }] }], yOffsetRight: [{ type: i0.Input, args: [{ isSignal: true, alias: "yOffsetRight", required: false }] }], xOffsetTop: [{ type: i0.Input, args: [{ isSignal: true, alias: "xOffsetTop", required: false }] }], xOffsetBottom: [{ type: i0.Input, args: [{ isSignal: true, alias: "xOffsetBottom", required: false }] }], xOffsetLeft: [{ type: i0.Input, args: [{ isSignal: true, alias: "xOffsetLeft", required: false }] }], xOffsetRight: [{ type: i0.Input, args: [{ isSignal: true, alias: "xOffsetRight", required: false }] }], maxHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxHeight", required: false }] }], maxWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxWidth", required: false }] }], contentRef: [{ type: i0.ViewChild, args: ['content', { isSignal: true }] }], trackXRef: [{ type: i0.ViewChild, args: ['trackX', { isSignal: true }] }], thumbXRef: [{ type: i0.ViewChild, args: ['thumbX', { isSignal: true }] }], trackYRef: [{ type: i0.ViewChild, args: ['trackY', { isSignal: true }] }], thumbYRef: [{ type: i0.ViewChild, args: ['thumbY', { isSignal: true }] }] } });
|
|
202
214
|
|
|
203
215
|
class XScrollableModule {
|
|
204
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.
|
|
205
|
-
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.
|
|
206
|
-
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.
|
|
216
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XScrollableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
217
|
+
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.6", ngImport: i0, type: XScrollableModule, imports: [XScrollableComponent], exports: [XScrollableComponent] }); }
|
|
218
|
+
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XScrollableModule }); }
|
|
207
219
|
}
|
|
208
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.
|
|
220
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XScrollableModule, decorators: [{
|
|
209
221
|
type: NgModule,
|
|
210
222
|
args: [{
|
|
211
223
|
exports: [XScrollableComponent],
|