@ng-nest/ui 21.0.12 → 22.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +46 -34
- package/fesm2022/ng-nest-ui-alert.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-anchor.mjs +43 -31
- 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 +74 -48
- package/fesm2022/ng-nest-ui-attachments.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-auto-complete.mjs +114 -70
- package/fesm2022/ng-nest-ui-auto-complete.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-avatar.mjs +47 -32
- package/fesm2022/ng-nest-ui-avatar.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-back-top.mjs +23 -18
- package/fesm2022/ng-nest-ui-back-top.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-badge.mjs +30 -23
- package/fesm2022/ng-nest-ui-badge.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-base-form.mjs +75 -44
- package/fesm2022/ng-nest-ui-base-form.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-bubble.mjs +76 -48
- package/fesm2022/ng-nest-ui-bubble.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-button.mjs +53 -42
- package/fesm2022/ng-nest-ui-button.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-calendar.mjs +30 -20
- package/fesm2022/ng-nest-ui-calendar.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-card.mjs +21 -16
- package/fesm2022/ng-nest-ui-card.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-carousel.mjs +68 -46
- package/fesm2022/ng-nest-ui-carousel.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-cascade.mjs +121 -73
- package/fesm2022/ng-nest-ui-cascade.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-checkbox.mjs +54 -38
- package/fesm2022/ng-nest-ui-checkbox.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-collapse.mjs +38 -30
- package/fesm2022/ng-nest-ui-collapse.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-color-picker.mjs +119 -72
- package/fesm2022/ng-nest-ui-color-picker.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-color.mjs +22 -16
- package/fesm2022/ng-nest-ui-color.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-comment.mjs +23 -21
- package/fesm2022/ng-nest-ui-comment.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-container.mjs +40 -37
- package/fesm2022/ng-nest-ui-container.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-contextmenu.mjs +71 -45
- package/fesm2022/ng-nest-ui-contextmenu.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-core.mjs +24 -21
- package/fesm2022/ng-nest-ui-core.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-coversations.mjs +25 -18
- package/fesm2022/ng-nest-ui-coversations.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-crumb.mjs +15 -13
- package/fesm2022/ng-nest-ui-crumb.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-date-picker.mjs +425 -256
- package/fesm2022/ng-nest-ui-date-picker.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-description.mjs +42 -31
- package/fesm2022/ng-nest-ui-description.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-dialog.mjs +106 -82
- package/fesm2022/ng-nest-ui-dialog.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-divider.mjs +24 -17
- package/fesm2022/ng-nest-ui-divider.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 +52 -43
- package/fesm2022/ng-nest-ui-drawer.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-dropdown.mjs +94 -58
- package/fesm2022/ng-nest-ui-dropdown.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-empty.mjs +14 -12
- package/fesm2022/ng-nest-ui-empty.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-examples.mjs +7 -7
- package/fesm2022/ng-nest-ui-find.mjs +111 -71
- package/fesm2022/ng-nest-ui-find.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-form.mjs +45 -33
- package/fesm2022/ng-nest-ui-form.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-highlight.mjs +26 -20
- package/fesm2022/ng-nest-ui-highlight.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-i18n.mjs +16 -15
- package/fesm2022/ng-nest-ui-i18n.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-icon.mjs +28 -21
- package/fesm2022/ng-nest-ui-icon.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-image.mjs +57 -51
- 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 +63 -42
- package/fesm2022/ng-nest-ui-input-number.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-input.mjs +130 -85
- package/fesm2022/ng-nest-ui-input.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-keyword.mjs +19 -15
- package/fesm2022/ng-nest-ui-keyword.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-layout.mjs +37 -31
- package/fesm2022/ng-nest-ui-layout.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-link.mjs +23 -18
- package/fesm2022/ng-nest-ui-link.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-list.mjs +137 -89
- package/fesm2022/ng-nest-ui-list.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-loading.mjs +36 -25
- package/fesm2022/ng-nest-ui-loading.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-menu.mjs +68 -45
- 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 +11 -9
- package/fesm2022/ng-nest-ui-outlet.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-page-header.mjs +20 -15
- package/fesm2022/ng-nest-ui-page-header.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-pagination.mjs +69 -48
- 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 +40 -27
- package/fesm2022/ng-nest-ui-popconfirm.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-popover.mjs +57 -38
- 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 +60 -41
- package/fesm2022/ng-nest-ui-progress.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-prompts.mjs +18 -15
- package/fesm2022/ng-nest-ui-prompts.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-radio.mjs +50 -35
- package/fesm2022/ng-nest-ui-radio.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-rate.mjs +43 -29
- package/fesm2022/ng-nest-ui-rate.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-resizable.mjs +18 -16
- package/fesm2022/ng-nest-ui-resizable.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-result.mjs +22 -16
- package/fesm2022/ng-nest-ui-result.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-ripple.mjs +14 -13
- package/fesm2022/ng-nest-ui-ripple.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-scrollable.mjs +41 -24
- package/fesm2022/ng-nest-ui-scrollable.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-select.mjs +196 -117
- package/fesm2022/ng-nest-ui-select.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-sender.mjs +43 -31
- package/fesm2022/ng-nest-ui-sender.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-skeleton.mjs +17 -15
- package/fesm2022/ng-nest-ui-skeleton.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-slider-select.mjs +85 -53
- package/fesm2022/ng-nest-ui-slider-select.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-slider.mjs +58 -37
- package/fesm2022/ng-nest-ui-slider.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-splitter.mjs +32 -24
- package/fesm2022/ng-nest-ui-splitter.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-statistic.mjs +44 -30
- package/fesm2022/ng-nest-ui-statistic.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-steps.mjs +30 -22
- package/fesm2022/ng-nest-ui-steps.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-suggestion.mjs +23 -20
- package/fesm2022/ng-nest-ui-suggestion.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-switch.mjs +35 -25
- package/fesm2022/ng-nest-ui-switch.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-table-view.mjs +78 -69
- package/fesm2022/ng-nest-ui-table-view.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-table.mjs +320 -205
- package/fesm2022/ng-nest-ui-table.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-tabs.mjs +74 -56
- package/fesm2022/ng-nest-ui-tabs.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-tag.mjs +30 -23
- package/fesm2022/ng-nest-ui-tag.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-text-retract.mjs +19 -15
- package/fesm2022/ng-nest-ui-text-retract.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-textarea.mjs +69 -44
- package/fesm2022/ng-nest-ui-textarea.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-theme.mjs +34 -23
- package/fesm2022/ng-nest-ui-theme.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-thought-chain.mjs +26 -19
- 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 +164 -96
- 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 +26 -19
- package/fesm2022/ng-nest-ui-timeline.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-tooltip.mjs +53 -35
- package/fesm2022/ng-nest-ui-tooltip.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-transfer.mjs +66 -40
- package/fesm2022/ng-nest-ui-transfer.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-tree-file.mjs +39 -28
- package/fesm2022/ng-nest-ui-tree-file.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-tree-select.mjs +186 -111
- package/fesm2022/ng-nest-ui-tree-select.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-tree.mjs +166 -105
- package/fesm2022/ng-nest-ui-tree.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-typography.mjs +16 -13
- package/fesm2022/ng-nest-ui-typography.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-upload.mjs +81 -53
- package/fesm2022/ng-nest-ui-upload.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-watermark.mjs +44 -34
- package/fesm2022/ng-nest-ui-watermark.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-welcome.mjs +22 -16
- package/fesm2022/ng-nest-ui-welcome.mjs.map +1 -1
- package/package.json +3 -2
- package/types/ng-nest-ui-base-form.d.ts +3 -3
- package/types/ng-nest-ui-carousel.d.ts +1 -1
- package/types/ng-nest-ui-container.d.ts +1 -1
- package/types/ng-nest-ui-core.d.ts +1 -1
- package/types/ng-nest-ui-dialog.d.ts +1 -1
- package/types/ng-nest-ui-drawer.d.ts +1 -1
- package/types/ng-nest-ui-form.d.ts +12 -12
- package/types/ng-nest-ui-layout.d.ts +1 -1
- package/types/ng-nest-ui-list.d.ts +1 -1
- package/types/ng-nest-ui-portal.d.ts +3 -3
- package/types/ng-nest-ui-table-view.d.ts +1 -1
- package/types/ng-nest-ui-table.d.ts +1 -1
- package/types/ng-nest-ui-tabs.d.ts +1 -1
- package/types/ng-nest-ui-tree.d.ts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-nest-ui-slider.mjs","sources":["../../../../lib/ng-nest/ui/slider/slider.property.ts","../../../../lib/ng-nest/ui/slider/slider.component.ts","../../../../lib/ng-nest/ui/slider/slider.component.html","../../../../lib/ng-nest/ui/slider/slider.module.ts","../../../../lib/ng-nest/ui/slider/ng-nest-ui-slider.ts"],"sourcesContent":["import { XPropertyFunction, XToDataArray, XToBoolean, XToCssPixelValue } from '@ng-nest/ui/core';\r\nimport { TemplateRef, Component, input, model, output } from '@angular/core';\r\nimport type {\r\n XTemplate,\r\n XIdentityProperty,\r\n XJustify,\r\n XSize,\r\n XNumber,\r\n XBoolean,\r\n XTrigger,\r\n XDataArray\r\n} from '@ng-nest/ui/core';\r\n\r\n/**\r\n * Slider\r\n * @selector x-slider\r\n * @decorator component\r\n */\r\nexport const XSliderPrefix = 'x-slider';\r\nconst X_SLIDER_CONFIG_NAME = 'slider';\r\n\r\n/**\r\n * Slider Property\r\n */\r\n@Component({ selector: `${XSliderPrefix}-property`, template: '' })\r\nexport class XSliderProperty extends XPropertyFunction(X_SLIDER_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 节点数据\r\n * @en_US Node data\r\n */\r\n readonly data = input<XSliderNode[], XDataArray<XSliderNode>>([], { transform: XToDataArray });\r\n /**\r\n * @zh_CN 滑动动画\r\n * @en_US Sliding animation\r\n */\r\n readonly animated = input<boolean, XBoolean>(this.config?.animated ?? true, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 当前激活的索引\r\n * @en_US Currently active index\r\n */\r\n readonly activatedIndex = model<number>(0);\r\n /**\r\n * @zh_CN 触发方式\r\n * @en_US Trigger mode\r\n */\r\n readonly trigger = input<XSliderTrigger>(this.config?.trigger ?? 'click');\r\n /**\r\n * @zh_CN 排列方式\r\n * @en_US Arrangement\r\n */\r\n readonly layout = input<XSliderLayout>('row');\r\n /**\r\n * @zh_CN 对齐方式\r\n * @en_US Alignment\r\n */\r\n readonly justify = input<XJustify>('start');\r\n /**\r\n * @zh_CN 节点文字对齐方式\r\n * @en_US Node text alignment\r\n */\r\n readonly nodeJustify = input<XJustify>('center');\r\n /**\r\n * @zh_CN 节点自定义模板\r\n * @en_US Node custom template\r\n */\r\n readonly nodeTpl = input<TemplateRef<any>>();\r\n /**\r\n * @zh_CN 尺寸\r\n * @en_US Size\r\n */\r\n readonly size = input<XSize>(this.config?.size ?? 'medium');\r\n /**\r\n * @zh_CN 节点显示不下的时候显示展开所有的按钮,排列方式为 row 的时候生效\r\n * @en_US When the node is not displayed, display all the buttons, and the arrangement is effective when the arrangement is row\r\n */\r\n readonly showExpand = input<boolean, XBoolean>(this.config?.showExpand ?? false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 节点显示不下的时候显示左右/上下的箭头\r\n * @en_US Nodes can't show the show about/of the up and down arrow\r\n */\r\n readonly autoShowArrow = input<boolean, XBoolean>(this.config?.autoShowArrow ?? true, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 展开所有弹框的最大高度\r\n * @en_US Expand the maximum height of all bomb frames\r\n */\r\n readonly expandMaxHeight = input<string, XNumber>(this.config?.expandMaxHeight ?? '15rem', {\r\n transform: XToCssPixelValue\r\n });\r\n /**\r\n * @zh_CN 显示描点\r\n * @en_US Show anchor\r\n */\r\n readonly showAnchor = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 激活节点改变事件\r\n * @en_US Activate node change event\r\n */\r\n readonly indexChange = output<number>();\r\n /**\r\n * @zh_CN 激活节点改变事件\r\n * @en_US Activate node change event\r\n */\r\n readonly nodeChange = output<XSliderNode>();\r\n}\r\n\r\n/**\r\n * @zh_CN Slider 数据对象\r\n * @en_US Slider data object\r\n */\r\nexport interface XSliderNode extends XIdentityProperty {\r\n /**\r\n * @zh_CN 标题,支持模板\r\n * @en_US Title, support template\r\n */\r\n label?: XTemplate;\r\n /**\r\n * @zh_CN 禁用节点\r\n * @en_US Node disabled\r\n */\r\n disabled?: boolean;\r\n}\r\n\r\n/**\r\n * @zh_CN 触发方式\r\n * @en_US Trigger method\r\n */\r\nexport type XSliderTrigger = XTrigger;\r\n\r\n/**\r\n * @zh_CN 布局方式\r\n * @en_US Layout\r\n */\r\nexport type XSliderLayout = 'row' | 'column';\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ElementRef,\r\n ChangeDetectionStrategy,\r\n AfterViewInit,\r\n OnDestroy,\r\n inject,\r\n computed,\r\n signal,\r\n viewChild\r\n} from '@angular/core';\r\nimport { XSliderPrefix, XSliderNode, XSliderProperty } from './slider.property';\r\nimport { XResize, XPosition, XIsUndefined, XIsEmpty, XResizeObserver } from '@ng-nest/ui/core';\r\nimport { Subject, of } from 'rxjs';\r\nimport { takeUntil, debounceTime, delay } from 'rxjs/operators';\r\nimport { NgClass, NgStyle, NgTemplateOutlet } from '@angular/common';\r\nimport { XLinkComponent } from '@ng-nest/ui/link';\r\nimport { XButtonComponent } from '@ng-nest/ui/button';\r\nimport { XOutletDirective } from '@ng-nest/ui/outlet';\r\nimport { XDropdownComponent } from '@ng-nest/ui/dropdown';\r\n\r\n@Component({\r\n selector: `${XSliderPrefix}`,\r\n imports: [NgClass, NgStyle, NgTemplateOutlet, XLinkComponent, XButtonComponent, XOutletDirective, XDropdownComponent],\r\n templateUrl: './slider.component.html',\r\n styleUrls: ['./slider.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XSliderComponent extends XSliderProperty implements OnDestroy, AfterViewInit {\r\n sliderScroll = viewChild.required('sliderScroll', { read: ElementRef<HTMLElement> });\r\n sliderNodes = viewChild.required('sliderNodes', { read: ElementRef<HTMLElement> });\r\n activated = signal<XSliderNode | null>(null);\r\n showArrow = signal(false);\r\n activatedId = signal('');\r\n timeoutHide: any;\r\n hoverDelay = 200;\r\n hoverDelayUnsub = new Subject<void>();\r\n offset = signal(0);\r\n transform = computed(() => `translate${this.dir()}(-${this.offset()}px)`);\r\n\r\n direction = signal<XPosition>('right');\r\n maxOffset = signal(0);\r\n dir = computed(() => (this.layout() === 'row' ? 'X' : 'Y'));\r\n sizeName = computed(() => (this.layout() === 'row' ? 'Width' : 'Height'));\r\n highlightBox = computed(() => {\r\n this.resizeChanged();\r\n if (!this.activated()) return {};\r\n const activeEle: HTMLElement = this.sliderNodes().nativeElement.querySelector(\r\n `li:nth-child(${this.activatedIndex() + 1})`\r\n )!;\r\n if (!activeEle) return {};\r\n return {\r\n width: `${activeEle.offsetWidth}px`,\r\n height: `${activeEle.offsetHeight}px`,\r\n left: `${activeEle.offsetLeft}px`,\r\n top: `${activeEle.offsetTop}px`\r\n };\r\n });\r\n resizeChanged = signal<DOMRectReadOnly | null>(null);\r\n private unSubject = new Subject<void>();\r\n private resizeObserver!: XResizeObserver;\r\n elementRef = inject(ElementRef);\r\n\r\n classMap = computed(() => ({\r\n [`${XSliderPrefix}-${this.layout()}`]: !XIsEmpty(this.layout()),\r\n [`${XSliderPrefix}-show-arrow`]: this.showArrow()\r\n }));\r\n scrollClassMap = computed(() => ({\r\n [`x-justify-${this.justify()}`]: !XIsEmpty(this.justify())\r\n }));\r\n nodeClassMap = computed(() => ({\r\n [`x-justify-${this.nodeJustify()}`]: !XIsEmpty(this.nodeJustify()),\r\n [`x-size-${this.size()}`]: !XIsEmpty(this.size())\r\n }));\r\n\r\n ngOnDestroy(): void {\r\n this.unSubject.next();\r\n this.unSubject.complete();\r\n this.resizeObserver?.disconnect();\r\n this.hoverDelayUnsub.next();\r\n this.hoverDelayUnsub.complete();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.setSubscribe();\r\n this.setActivated();\r\n }\r\n\r\n setSubscribe() {\r\n XResize(this.sliderScroll().nativeElement, this.sliderNodes().nativeElement)\r\n .pipe(debounceTime(30), takeUntil(this.unSubject))\r\n .subscribe((x) => {\r\n this.resizeObserver = x.resizeObserver;\r\n this.sizeChecked();\r\n this.setActivated();\r\n this.resizeChanged.set(x.entry?.contentRect || null);\r\n });\r\n }\r\n\r\n onEnter(event: Event | null, node: XSliderNode, index: number) {\r\n if (node.disabled || this.trigger() === 'click') return;\r\n of(true)\r\n .pipe(delay(this.hoverDelay), takeUntil(this.hoverDelayUnsub))\r\n .subscribe(() => {\r\n if (this.timeoutHide) {\r\n clearTimeout(this.timeoutHide);\r\n this.timeoutHide = null;\r\n }\r\n this.nodeClick(event, node, index);\r\n });\r\n }\r\n\r\n onLeave(node: XSliderNode) {\r\n if (node.disabled || this.trigger() === 'click') return;\r\n this.hoverDelayUnsub.next();\r\n }\r\n\r\n nodeClick(event: Event | null, node: XSliderNode, index: number) {\r\n if (event) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n if (node.disabled) return;\r\n this.setDirection(index, this.activatedIndex());\r\n this.activatedIndex.set(index);\r\n this.activated.set(node);\r\n this.activatedId.set(node.id);\r\n this.setTranslate();\r\n this.indexChange.emit(index);\r\n this.nodeChange.emit(node);\r\n }\r\n\r\n dropdownClick(node: XSliderNode) {\r\n const index = this.data().indexOf(node);\r\n this.nodeClick(null, node, index);\r\n }\r\n\r\n scrollPrev() {\r\n if (this.offset() === 0) return;\r\n const scrollSize = this.sliderScroll().nativeElement[`offset${this.sizeName()}`];\r\n const currentOffset = this.offset();\r\n if (!currentOffset) return;\r\n const offset = currentOffset > scrollSize ? currentOffset - scrollSize : 0;\r\n this.offset.set(Math.floor(offset));\r\n }\r\n\r\n scrollNext() {\r\n if (this.offset() === this.maxOffset()) return;\r\n const sliderSize = this.sliderNodes().nativeElement[`offset${this.sizeName()}`];\r\n const scrollSize = this.sliderScroll().nativeElement[`offset${this.sizeName()}`];\r\n const currentOffset = this.offset();\r\n if (sliderSize - currentOffset <= scrollSize) return;\r\n const offset = sliderSize - currentOffset > scrollSize * 2 ? currentOffset + scrollSize : sliderSize - scrollSize;\r\n this.offset.set(Math.floor(offset));\r\n }\r\n\r\n setDirection(index: number, before: number) {\r\n const increase = index > before;\r\n this.direction.set(this.layout() === 'row' ? (increase ? 'right' : 'left') : increase ? 'bottom' : 'top');\r\n return this.direction();\r\n }\r\n\r\n setTranslate() {\r\n if (\r\n XIsUndefined(this.sliderScroll()) ||\r\n XIsUndefined(this.sliderNodes()) ||\r\n typeof this.sliderScroll().nativeElement.getBoundingClientRect !== 'function'\r\n )\r\n return;\r\n const sliderRect = this.sliderScroll().nativeElement?.getBoundingClientRect();\r\n const sliderNodesRect = this.sliderNodes().nativeElement?.getBoundingClientRect();\r\n let moveIndex =\r\n ['bottom', 'right'].indexOf(this.direction()) !== -1 ? this.activatedIndex() + 2 : this.activatedIndex();\r\n moveIndex = moveIndex > this.data().length ? this.data().length : moveIndex === 0 ? 1 : moveIndex;\r\n let moveEle = this.sliderNodes().nativeElement?.querySelector(`li:nth-child(${moveIndex})`);\r\n let maxOffset = 0;\r\n if (XIsEmpty(moveEle)) return;\r\n const moveRect = moveEle!.getBoundingClientRect();\r\n const currentOffset = this.offset();\r\n let offset = currentOffset;\r\n if (this.layout() === 'row') {\r\n maxOffset = sliderNodesRect.width - sliderRect.width;\r\n if (moveRect.left < sliderRect.left) {\r\n offset = currentOffset - (sliderRect.left - moveRect.left);\r\n }\r\n if (moveRect.right > sliderRect.right) {\r\n offset = currentOffset + moveRect.right - sliderRect.right;\r\n }\r\n } else {\r\n maxOffset = sliderNodesRect.height - sliderRect.height;\r\n if (moveRect.top < sliderRect.top) {\r\n offset = currentOffset - (sliderRect.top - moveRect.top);\r\n }\r\n if (moveRect.bottom > sliderRect.bottom) {\r\n offset = currentOffset + (moveRect.bottom - sliderRect.bottom);\r\n }\r\n }\r\n this.maxOffset.set(Math.ceil(maxOffset));\r\n offset = Math.max(Math.ceil(offset), 0);\r\n if (!this.showArrow()) {\r\n this.offset.set(0);\r\n } else {\r\n if ([this.maxOffset() + 1, this.maxOffset() - 1].includes(offset)) {\r\n this.offset.set(this.maxOffset());\r\n } else {\r\n this.offset.set(Math.min(offset, this.maxOffset()));\r\n }\r\n }\r\n }\r\n\r\n sizeChecked() {\r\n const size = this.sliderNodes().nativeElement[`offset${this.sizeName()}`];\r\n const scrollSize = this.sliderScroll().nativeElement[`offset${this.sizeName()}`];\r\n const showArrow = this.data().length > 1 && size > scrollSize;\r\n if (this.showArrow() !== showArrow) {\r\n this.showArrow.set(showArrow);\r\n if (!this.showArrow()) {\r\n this.offset.set(0);\r\n }\r\n }\r\n }\r\n\r\n setActivated() {\r\n if (this.data().length > 0) {\r\n this.activated.set(this.data()[this.activatedIndex()]);\r\n if (this.activated()) {\r\n this.activatedId.set(this.activated()?.id);\r\n }\r\n } else {\r\n this.activated.set(null);\r\n }\r\n this.setTranslate();\r\n }\r\n\r\n getActivated(index: number) {\r\n return this.activatedIndex() === index;\r\n }\r\n}\r\n","<div #slider class=\"x-slider\" [ngClass]=\"classMap()\">\r\n @if (autoShowArrow() && showArrow()) {\r\n <x-link\r\n [disabled]=\"offset() === 0\"\r\n class=\"x-slider-arrow-left\"\r\n icon=\"fto-chevron-left\"\r\n (click)=\"scrollPrev()\"\r\n ></x-link>\r\n }\r\n <div class=\"x-slider-scroll\" #sliderScroll [ngClass]=\"scrollClassMap()\">\r\n <ul #sliderNodes [style.transform]=\"transform()\">\r\n @for (node of data(); track node.id; let i = $index) {\r\n <li [class.x-slider-activated]=\"getActivated(i)\" [class.x-slider-disabled]=\"node.disabled\" [title]=\"node.label\">\r\n <x-link\r\n (click)=\"nodeClick($event, node, i)\"\r\n (mouseenter)=\"onEnter($event, node, i)\"\r\n (mouseleave)=\"onLeave(node)\"\r\n [ngClass]=\"nodeClassMap()\"\r\n [href]=\"showAnchor() ? '#' + node.id : ''\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"nodeTpl()!; context: { $node: node }\"></ng-container>\r\n @if (!nodeTpl()) {\r\n <ng-container *xOutlet=\"node.label\">{{ node.label }}</ng-container>\r\n }\r\n </x-link>\r\n </li>\r\n }\r\n <li class=\"x-slider-highlight\" [class.x-slider-highlight-animated]=\"animated()\" [ngStyle]=\"highlightBox()\"></li>\r\n </ul>\r\n </div>\r\n @if (autoShowArrow() && showArrow()) {\r\n <x-link\r\n [disabled]=\"offset() === maxOffset()\"\r\n class=\"x-slider-arrow-right\"\r\n icon=\"fto-chevron-right\"\r\n (click)=\"scrollNext()\"\r\n ></x-link>\r\n }\r\n @if (showExpand() && showArrow() && layout() === 'row') {\r\n <x-dropdown\r\n class=\"x-slider-all\"\r\n [data]=\"data()\"\r\n trigger=\"click\"\r\n [(activatedId)]=\"activatedId\"\r\n (nodeClick)=\"dropdownClick($event)\"\r\n [portalMaxHeight]=\"expandMaxHeight()\"\r\n >\r\n <x-button icon=\"fto-list\" onlyIcon flat plain [size]=\"size()\"> </x-button>\r\n </x-dropdown>\r\n }\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { XSliderComponent } from './slider.component';\r\n\r\n@NgModule({\r\n declarations: [],\r\n exports: [XSliderComponent],\r\n imports: [XSliderComponent]\r\n})\r\nexport class XSliderModule {}\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-slider.mjs","sources":["../../../../lib/ng-nest/ui/slider/slider.property.ts","../../../../lib/ng-nest/ui/slider/slider.component.ts","../../../../lib/ng-nest/ui/slider/slider.component.html","../../../../lib/ng-nest/ui/slider/slider.module.ts","../../../../lib/ng-nest/ui/slider/ng-nest-ui-slider.ts"],"sourcesContent":["import { XPropertyFunction, XToDataArray, XToBoolean, XToCssPixelValue } from '@ng-nest/ui/core';\r\nimport { TemplateRef, Component, input, model, output } from '@angular/core';\r\nimport type {\r\n XTemplate,\r\n XIdentityProperty,\r\n XJustify,\r\n XSize,\r\n XNumber,\r\n XBoolean,\r\n XTrigger,\r\n XDataArray\r\n} from '@ng-nest/ui/core';\r\n\r\n/**\r\n * Slider\r\n * @selector x-slider\r\n * @decorator component\r\n */\r\nexport const XSliderPrefix = 'x-slider';\r\nconst X_SLIDER_CONFIG_NAME = 'slider';\r\n\r\n/**\r\n * Slider Property\r\n */\r\n@Component({ selector: `${XSliderPrefix}-property`, template: '' })\r\nexport class XSliderProperty extends XPropertyFunction(X_SLIDER_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 节点数据\r\n * @en_US Node data\r\n */\r\n readonly data = input<XSliderNode[], XDataArray<XSliderNode>>([], { transform: XToDataArray });\r\n /**\r\n * @zh_CN 滑动动画\r\n * @en_US Sliding animation\r\n */\r\n readonly animated = input<boolean, XBoolean>(this.config?.animated ?? true, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 当前激活的索引\r\n * @en_US Currently active index\r\n */\r\n readonly activatedIndex = model<number>(0);\r\n /**\r\n * @zh_CN 触发方式\r\n * @en_US Trigger mode\r\n */\r\n readonly trigger = input<XSliderTrigger>(this.config?.trigger ?? 'click');\r\n /**\r\n * @zh_CN 排列方式\r\n * @en_US Arrangement\r\n */\r\n readonly layout = input<XSliderLayout>('row');\r\n /**\r\n * @zh_CN 对齐方式\r\n * @en_US Alignment\r\n */\r\n readonly justify = input<XJustify>('start');\r\n /**\r\n * @zh_CN 节点文字对齐方式\r\n * @en_US Node text alignment\r\n */\r\n readonly nodeJustify = input<XJustify>('center');\r\n /**\r\n * @zh_CN 节点自定义模板\r\n * @en_US Node custom template\r\n */\r\n readonly nodeTpl = input<TemplateRef<any>>();\r\n /**\r\n * @zh_CN 尺寸\r\n * @en_US Size\r\n */\r\n readonly size = input<XSize>(this.config?.size ?? 'medium');\r\n /**\r\n * @zh_CN 节点显示不下的时候显示展开所有的按钮,排列方式为 row 的时候生效\r\n * @en_US When the node is not displayed, display all the buttons, and the arrangement is effective when the arrangement is row\r\n */\r\n readonly showExpand = input<boolean, XBoolean>(this.config?.showExpand ?? false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 节点显示不下的时候显示左右/上下的箭头\r\n * @en_US Nodes can't show the show about/of the up and down arrow\r\n */\r\n readonly autoShowArrow = input<boolean, XBoolean>(this.config?.autoShowArrow ?? true, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 展开所有弹框的最大高度\r\n * @en_US Expand the maximum height of all bomb frames\r\n */\r\n readonly expandMaxHeight = input<string, XNumber>(this.config?.expandMaxHeight ?? '15rem', {\r\n transform: XToCssPixelValue\r\n });\r\n /**\r\n * @zh_CN 显示描点\r\n * @en_US Show anchor\r\n */\r\n readonly showAnchor = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 激活节点改变事件\r\n * @en_US Activate node change event\r\n */\r\n readonly indexChange = output<number>();\r\n /**\r\n * @zh_CN 激活节点改变事件\r\n * @en_US Activate node change event\r\n */\r\n readonly nodeChange = output<XSliderNode>();\r\n}\r\n\r\n/**\r\n * @zh_CN Slider 数据对象\r\n * @en_US Slider data object\r\n */\r\nexport interface XSliderNode extends XIdentityProperty {\r\n /**\r\n * @zh_CN 标题,支持模板\r\n * @en_US Title, support template\r\n */\r\n label?: XTemplate;\r\n /**\r\n * @zh_CN 禁用节点\r\n * @en_US Node disabled\r\n */\r\n disabled?: boolean;\r\n}\r\n\r\n/**\r\n * @zh_CN 触发方式\r\n * @en_US Trigger method\r\n */\r\nexport type XSliderTrigger = XTrigger;\r\n\r\n/**\r\n * @zh_CN 布局方式\r\n * @en_US Layout\r\n */\r\nexport type XSliderLayout = 'row' | 'column';\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ElementRef,\r\n ChangeDetectionStrategy,\r\n AfterViewInit,\r\n OnDestroy,\r\n inject,\r\n computed,\r\n signal,\r\n viewChild\r\n} from '@angular/core';\r\nimport { XSliderPrefix, XSliderNode, XSliderProperty } from './slider.property';\r\nimport { XResize, XPosition, XIsUndefined, XIsEmpty, XResizeObserver } from '@ng-nest/ui/core';\r\nimport { Subject, of } from 'rxjs';\r\nimport { takeUntil, debounceTime, delay } from 'rxjs/operators';\r\nimport { NgClass, NgStyle, NgTemplateOutlet } from '@angular/common';\r\nimport { XLinkComponent } from '@ng-nest/ui/link';\r\nimport { XButtonComponent } from '@ng-nest/ui/button';\r\nimport { XOutletDirective } from '@ng-nest/ui/outlet';\r\nimport { XDropdownComponent } from '@ng-nest/ui/dropdown';\r\n\r\n@Component({\r\n selector: `${XSliderPrefix}`,\r\n imports: [NgClass, NgStyle, NgTemplateOutlet, XLinkComponent, XButtonComponent, XOutletDirective, XDropdownComponent],\r\n templateUrl: './slider.component.html',\r\n styleUrls: ['./slider.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XSliderComponent extends XSliderProperty implements OnDestroy, AfterViewInit {\r\n sliderScroll = viewChild.required('sliderScroll', { read: ElementRef<HTMLElement> });\r\n sliderNodes = viewChild.required('sliderNodes', { read: ElementRef<HTMLElement> });\r\n activated = signal<XSliderNode | null>(null);\r\n showArrow = signal(false);\r\n activatedId = signal('');\r\n timeoutHide: any;\r\n hoverDelay = 200;\r\n hoverDelayUnsub = new Subject<void>();\r\n offset = signal(0);\r\n transform = computed(() => `translate${this.dir()}(-${this.offset()}px)`);\r\n\r\n direction = signal<XPosition>('right');\r\n maxOffset = signal(0);\r\n dir = computed(() => (this.layout() === 'row' ? 'X' : 'Y'));\r\n sizeName = computed(() => (this.layout() === 'row' ? 'Width' : 'Height'));\r\n highlightBox = computed(() => {\r\n this.resizeChanged();\r\n if (!this.activated()) return {};\r\n const activeEle: HTMLElement = this.sliderNodes().nativeElement.querySelector(\r\n `li:nth-child(${this.activatedIndex() + 1})`\r\n )!;\r\n if (!activeEle) return {};\r\n return {\r\n width: `${activeEle.offsetWidth}px`,\r\n height: `${activeEle.offsetHeight}px`,\r\n left: `${activeEle.offsetLeft}px`,\r\n top: `${activeEle.offsetTop}px`\r\n };\r\n });\r\n resizeChanged = signal<DOMRectReadOnly | null>(null);\r\n private unSubject = new Subject<void>();\r\n private resizeObserver!: XResizeObserver;\r\n elementRef = inject(ElementRef);\r\n\r\n classMap = computed(() => ({\r\n [`${XSliderPrefix}-${this.layout()}`]: !XIsEmpty(this.layout()),\r\n [`${XSliderPrefix}-show-arrow`]: this.showArrow()\r\n }));\r\n scrollClassMap = computed(() => ({\r\n [`x-justify-${this.justify()}`]: !XIsEmpty(this.justify())\r\n }));\r\n nodeClassMap = computed(() => ({\r\n [`x-justify-${this.nodeJustify()}`]: !XIsEmpty(this.nodeJustify()),\r\n [`x-size-${this.size()}`]: !XIsEmpty(this.size())\r\n }));\r\n\r\n ngOnDestroy(): void {\r\n this.unSubject.next();\r\n this.unSubject.complete();\r\n this.resizeObserver?.disconnect();\r\n this.hoverDelayUnsub.next();\r\n this.hoverDelayUnsub.complete();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.setSubscribe();\r\n this.setActivated();\r\n }\r\n\r\n setSubscribe() {\r\n XResize(this.sliderScroll().nativeElement, this.sliderNodes().nativeElement)\r\n .pipe(debounceTime(30), takeUntil(this.unSubject))\r\n .subscribe((x) => {\r\n this.resizeObserver = x.resizeObserver;\r\n this.sizeChecked();\r\n this.setActivated();\r\n this.resizeChanged.set(x.entry?.contentRect || null);\r\n });\r\n }\r\n\r\n onEnter(event: Event | null, node: XSliderNode, index: number) {\r\n if (node.disabled || this.trigger() === 'click') return;\r\n of(true)\r\n .pipe(delay(this.hoverDelay), takeUntil(this.hoverDelayUnsub))\r\n .subscribe(() => {\r\n if (this.timeoutHide) {\r\n clearTimeout(this.timeoutHide);\r\n this.timeoutHide = null;\r\n }\r\n this.nodeClick(event, node, index);\r\n });\r\n }\r\n\r\n onLeave(node: XSliderNode) {\r\n if (node.disabled || this.trigger() === 'click') return;\r\n this.hoverDelayUnsub.next();\r\n }\r\n\r\n nodeClick(event: Event | null, node: XSliderNode, index: number) {\r\n if (event) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n if (node.disabled) return;\r\n this.setDirection(index, this.activatedIndex());\r\n this.activatedIndex.set(index);\r\n this.activated.set(node);\r\n this.activatedId.set(node.id);\r\n this.setTranslate();\r\n this.indexChange.emit(index);\r\n this.nodeChange.emit(node);\r\n }\r\n\r\n dropdownClick(node: XSliderNode) {\r\n const index = this.data().indexOf(node);\r\n this.nodeClick(null, node, index);\r\n }\r\n\r\n scrollPrev() {\r\n if (this.offset() === 0) return;\r\n const scrollSize = this.sliderScroll().nativeElement[`offset${this.sizeName()}`];\r\n const currentOffset = this.offset();\r\n if (!currentOffset) return;\r\n const offset = currentOffset > scrollSize ? currentOffset - scrollSize : 0;\r\n this.offset.set(Math.floor(offset));\r\n }\r\n\r\n scrollNext() {\r\n if (this.offset() === this.maxOffset()) return;\r\n const sliderSize = this.sliderNodes().nativeElement[`offset${this.sizeName()}`];\r\n const scrollSize = this.sliderScroll().nativeElement[`offset${this.sizeName()}`];\r\n const currentOffset = this.offset();\r\n if (sliderSize - currentOffset <= scrollSize) return;\r\n const offset = sliderSize - currentOffset > scrollSize * 2 ? currentOffset + scrollSize : sliderSize - scrollSize;\r\n this.offset.set(Math.floor(offset));\r\n }\r\n\r\n setDirection(index: number, before: number) {\r\n const increase = index > before;\r\n this.direction.set(this.layout() === 'row' ? (increase ? 'right' : 'left') : increase ? 'bottom' : 'top');\r\n return this.direction();\r\n }\r\n\r\n setTranslate() {\r\n if (\r\n XIsUndefined(this.sliderScroll()) ||\r\n XIsUndefined(this.sliderNodes()) ||\r\n typeof this.sliderScroll().nativeElement.getBoundingClientRect !== 'function'\r\n )\r\n return;\r\n const sliderRect = this.sliderScroll().nativeElement?.getBoundingClientRect();\r\n const sliderNodesRect = this.sliderNodes().nativeElement?.getBoundingClientRect();\r\n let moveIndex =\r\n ['bottom', 'right'].indexOf(this.direction()) !== -1 ? this.activatedIndex() + 2 : this.activatedIndex();\r\n moveIndex = moveIndex > this.data().length ? this.data().length : moveIndex === 0 ? 1 : moveIndex;\r\n let moveEle = this.sliderNodes().nativeElement?.querySelector(`li:nth-child(${moveIndex})`);\r\n let maxOffset = 0;\r\n if (XIsEmpty(moveEle)) return;\r\n const moveRect = moveEle!.getBoundingClientRect();\r\n const currentOffset = this.offset();\r\n let offset = currentOffset;\r\n if (this.layout() === 'row') {\r\n maxOffset = sliderNodesRect.width - sliderRect.width;\r\n if (moveRect.left < sliderRect.left) {\r\n offset = currentOffset - (sliderRect.left - moveRect.left);\r\n }\r\n if (moveRect.right > sliderRect.right) {\r\n offset = currentOffset + moveRect.right - sliderRect.right;\r\n }\r\n } else {\r\n maxOffset = sliderNodesRect.height - sliderRect.height;\r\n if (moveRect.top < sliderRect.top) {\r\n offset = currentOffset - (sliderRect.top - moveRect.top);\r\n }\r\n if (moveRect.bottom > sliderRect.bottom) {\r\n offset = currentOffset + (moveRect.bottom - sliderRect.bottom);\r\n }\r\n }\r\n this.maxOffset.set(Math.ceil(maxOffset));\r\n offset = Math.max(Math.ceil(offset), 0);\r\n if (!this.showArrow()) {\r\n this.offset.set(0);\r\n } else {\r\n if ([this.maxOffset() + 1, this.maxOffset() - 1].includes(offset)) {\r\n this.offset.set(this.maxOffset());\r\n } else {\r\n this.offset.set(Math.min(offset, this.maxOffset()));\r\n }\r\n }\r\n }\r\n\r\n sizeChecked() {\r\n const size = this.sliderNodes().nativeElement[`offset${this.sizeName()}`];\r\n const scrollSize = this.sliderScroll().nativeElement[`offset${this.sizeName()}`];\r\n const showArrow = this.data().length > 1 && size > scrollSize;\r\n if (this.showArrow() !== showArrow) {\r\n this.showArrow.set(showArrow);\r\n if (!this.showArrow()) {\r\n this.offset.set(0);\r\n }\r\n }\r\n }\r\n\r\n setActivated() {\r\n if (this.data().length > 0) {\r\n this.activated.set(this.data()[this.activatedIndex()]);\r\n if (this.activated()) {\r\n this.activatedId.set(this.activated()?.id);\r\n }\r\n } else {\r\n this.activated.set(null);\r\n }\r\n this.setTranslate();\r\n }\r\n\r\n getActivated(index: number) {\r\n return this.activatedIndex() === index;\r\n }\r\n}\r\n","<div #slider class=\"x-slider\" [ngClass]=\"classMap()\">\r\n @if (autoShowArrow() && showArrow()) {\r\n <x-link\r\n [disabled]=\"offset() === 0\"\r\n class=\"x-slider-arrow-left\"\r\n icon=\"fto-chevron-left\"\r\n (click)=\"scrollPrev()\"\r\n ></x-link>\r\n }\r\n <div class=\"x-slider-scroll\" #sliderScroll [ngClass]=\"scrollClassMap()\">\r\n <ul #sliderNodes [style.transform]=\"transform()\">\r\n @for (node of data(); track node.id; let i = $index) {\r\n <li [class.x-slider-activated]=\"getActivated(i)\" [class.x-slider-disabled]=\"node.disabled\" [title]=\"node.label\">\r\n <x-link\r\n (click)=\"nodeClick($event, node, i)\"\r\n (mouseenter)=\"onEnter($event, node, i)\"\r\n (mouseleave)=\"onLeave(node)\"\r\n [ngClass]=\"nodeClassMap()\"\r\n [href]=\"showAnchor() ? '#' + node.id : ''\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"nodeTpl()!; context: { $node: node }\"></ng-container>\r\n @if (!nodeTpl()) {\r\n <ng-container *xOutlet=\"node.label\">{{ node.label }}</ng-container>\r\n }\r\n </x-link>\r\n </li>\r\n }\r\n <li class=\"x-slider-highlight\" [class.x-slider-highlight-animated]=\"animated()\" [ngStyle]=\"highlightBox()\"></li>\r\n </ul>\r\n </div>\r\n @if (autoShowArrow() && showArrow()) {\r\n <x-link\r\n [disabled]=\"offset() === maxOffset()\"\r\n class=\"x-slider-arrow-right\"\r\n icon=\"fto-chevron-right\"\r\n (click)=\"scrollNext()\"\r\n ></x-link>\r\n }\r\n @if (showExpand() && showArrow() && layout() === 'row') {\r\n <x-dropdown\r\n class=\"x-slider-all\"\r\n [data]=\"data()\"\r\n trigger=\"click\"\r\n [(activatedId)]=\"activatedId\"\r\n (nodeClick)=\"dropdownClick($event)\"\r\n [portalMaxHeight]=\"expandMaxHeight()\"\r\n >\r\n <x-button icon=\"fto-list\" onlyIcon flat plain [size]=\"size()\"> </x-button>\r\n </x-dropdown>\r\n }\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { XSliderComponent } from './slider.component';\r\n\r\n@NgModule({\r\n declarations: [],\r\n exports: [XSliderComponent],\r\n imports: [XSliderComponent]\r\n})\r\nexport class XSliderModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -42,12 +42,13 @@ class XSplitterProperty extends XPropertyFunction(X_SPLITTER_CONFIG_NAME) {
|
|
|
42
42
|
* ```
|
|
43
43
|
*
|
|
44
44
|
*/
|
|
45
|
-
this.direction = input(this.config?.direction ?? 'horizontal',
|
|
45
|
+
this.direction = input(this.config?.direction ?? 'horizontal', /* @ts-ignore */
|
|
46
|
+
...(ngDevMode ? [{ debugName: "direction" }] : /* istanbul ignore next */ []));
|
|
46
47
|
}
|
|
47
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
48
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "
|
|
48
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: XSplitterProperty, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
49
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.1", type: XSplitterProperty, isStandalone: true, selector: "x-splitter-property", inputs: { direction: { classPropertyName: "direction", publicName: "direction", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
|
|
49
50
|
}
|
|
50
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
51
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: XSplitterProperty, decorators: [{
|
|
51
52
|
type: Component,
|
|
52
53
|
args: [{ selector: `${XSplitterPrefix}-property`, template: '' }]
|
|
53
54
|
}], propDecorators: { direction: [{ type: i0.Input, args: [{ isSignal: true, alias: "direction", required: false }] }] } });
|
|
@@ -64,22 +65,26 @@ class XSplitterPanelComponent {
|
|
|
64
65
|
* @zh_CN 面板最小尺寸
|
|
65
66
|
* @en_US Panel minimum size
|
|
66
67
|
*/
|
|
67
|
-
this.min = input('0',
|
|
68
|
+
this.min = input('0', /* @ts-ignore */
|
|
69
|
+
...(ngDevMode ? [{ debugName: "min" }] : /* istanbul ignore next */ []));
|
|
68
70
|
/**
|
|
69
71
|
* @zh_CN 面板最大尺寸
|
|
70
72
|
* @en_US Panel maximum size
|
|
71
73
|
*/
|
|
72
|
-
this.max = input('100%',
|
|
74
|
+
this.max = input('100%', /* @ts-ignore */
|
|
75
|
+
...(ngDevMode ? [{ debugName: "max" }] : /* istanbul ignore next */ []));
|
|
73
76
|
/**
|
|
74
77
|
* @zh_CN 面板默认尺寸
|
|
75
78
|
* @en_US Panel default size
|
|
76
79
|
*/
|
|
77
|
-
this.size = input(
|
|
80
|
+
this.size = input(/* @ts-ignore */
|
|
81
|
+
...(ngDevMode ? [undefined, { debugName: "size" }] : /* istanbul ignore next */ []));
|
|
78
82
|
/**
|
|
79
83
|
* @zh_CN 面板当前尺寸
|
|
80
84
|
* @en_US Panel current size
|
|
81
85
|
*/
|
|
82
|
-
this.currentSize = signal(undefined,
|
|
86
|
+
this.currentSize = signal(undefined, /* @ts-ignore */
|
|
87
|
+
...(ngDevMode ? [{ debugName: "currentSize" }] : /* istanbul ignore next */ []));
|
|
83
88
|
// 监听 currentSize 变化
|
|
84
89
|
effect(() => {
|
|
85
90
|
this.currentSize();
|
|
@@ -94,10 +99,10 @@ class XSplitterPanelComponent {
|
|
|
94
99
|
// 如果没有设置尺寸,使用 flex: 1 让面板自动分配空间
|
|
95
100
|
return size ? `0 0 ${size}` : '1 1 auto';
|
|
96
101
|
}
|
|
97
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
98
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "
|
|
102
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: XSplitterPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
103
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.1", type: XSplitterPanelComponent, isStandalone: true, selector: "x-splitter-panel", inputs: { min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "this.className", "style.flex": "this.flexStyle" } }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, styles: [".x-splitter-panel{overflow:hidden;flex-shrink:0;min-width:0;min-height:0}.x-splitter-panel>x-splitter{width:100%;height:100%}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
99
104
|
}
|
|
100
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
105
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: XSplitterPanelComponent, decorators: [{
|
|
101
106
|
type: Component,
|
|
102
107
|
args: [{ selector: `${XSplitterPanelPrefix}`, template: '<ng-content></ng-content>', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, styles: [".x-splitter-panel{overflow:hidden;flex-shrink:0;min-width:0;min-height:0}.x-splitter-panel>x-splitter{width:100%;height:100%}\n"] }]
|
|
103
108
|
}], ctorParameters: () => [], propDecorators: { className: [{
|
|
@@ -154,10 +159,10 @@ class XSplitterBarComponent {
|
|
|
154
159
|
});
|
|
155
160
|
});
|
|
156
161
|
}
|
|
157
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
158
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
162
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: XSplitterBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
163
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.1", type: XSplitterBarComponent, isStandalone: true, selector: "x-splitter-bar", outputs: { dragStart: "dragStart", dragging: "dragging", dragEnd: "dragEnd" }, host: { properties: { "class": "this.className" } }, ngImport: i0, template: '', isInline: true, styles: [".x-splitter-bar{display:block;box-sizing:border-box}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
159
164
|
}
|
|
160
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
165
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: XSplitterBarComponent, decorators: [{
|
|
161
166
|
type: Component,
|
|
162
167
|
args: [{ selector: `${XSplitterBarPrefix}`, template: '', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, styles: [".x-splitter-bar{display:block;box-sizing:border-box}\n"] }]
|
|
163
168
|
}], propDecorators: { className: [{
|
|
@@ -168,8 +173,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImpor
|
|
|
168
173
|
class XSplitterComponent extends XSplitterProperty {
|
|
169
174
|
constructor() {
|
|
170
175
|
super(...arguments);
|
|
171
|
-
this.panels = contentChildren(XSplitterPanelComponent,
|
|
172
|
-
|
|
176
|
+
this.panels = contentChildren(XSplitterPanelComponent, /* @ts-ignore */
|
|
177
|
+
...(ngDevMode ? [{ debugName: "panels" }] : /* istanbul ignore next */ []));
|
|
178
|
+
this.bars = contentChildren(XSplitterBarComponent, /* @ts-ignore */
|
|
179
|
+
...(ngDevMode ? [{ debugName: "bars" }] : /* istanbul ignore next */ []));
|
|
173
180
|
this.elementRef = inject(ElementRef);
|
|
174
181
|
this.cdr = inject(ChangeDetectorRef);
|
|
175
182
|
// 缓存 splitter 的尺寸信息,避免频繁调用 getBoundingClientRect
|
|
@@ -183,7 +190,8 @@ class XSplitterComponent extends XSplitterProperty {
|
|
|
183
190
|
*/
|
|
184
191
|
this.classMap = computed(() => ({
|
|
185
192
|
[`${XSplitterPrefix}-${this.direction()}`]: true
|
|
186
|
-
}),
|
|
193
|
+
}), /* @ts-ignore */
|
|
194
|
+
...(ngDevMode ? [{ debugName: "classMap" }] : /* istanbul ignore next */ []));
|
|
187
195
|
}
|
|
188
196
|
ngAfterContentInit() {
|
|
189
197
|
this.initBars();
|
|
@@ -378,20 +386,20 @@ class XSplitterComponent extends XSplitterProperty {
|
|
|
378
386
|
}
|
|
379
387
|
return 4; // 默认值
|
|
380
388
|
}
|
|
381
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
382
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "
|
|
389
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: XSplitterComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
390
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.0.1", type: XSplitterComponent, isStandalone: true, selector: "x-splitter", queries: [{ propertyName: "panels", predicate: XSplitterPanelComponent, isSignal: true }, { propertyName: "bars", predicate: XSplitterBarComponent, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"x-splitter\" [class]=\"classMap()\">\r\n <ng-content></ng-content>\r\n</div>\r\n", styles: [".x-splitter{margin:0;padding:0}.x-splitter{display:flex;width:100%;height:100%}.x-splitter-horizontal{flex-direction:row}.x-splitter-horizontal>.x-splitter-panel{height:100%}.x-splitter-horizontal>.x-splitter-bar{width:var(--x-splitter-bar-size, 4px);height:100%;cursor:col-resize;flex-shrink:0}.x-splitter-vertical{flex-direction:column}.x-splitter-vertical>.x-splitter-panel{width:100%}.x-splitter-vertical>.x-splitter-bar{width:100%;height:var(--x-splitter-bar-size, 4px);cursor:row-resize;flex-shrink:0}.x-splitter-bar{position:relative;background-color:var(--x-splitter-bar-color, var(--x-border));transition:background-color .2s;z-index:1}.x-splitter-bar:hover,.x-splitter-bar:active{background-color:var(--x-splitter-bar-hover-color, var(--x-primary))}.x-splitter-bar:before{content:\"\";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.x-splitter-horizontal .x-splitter-bar:before{width:.125rem;height:1.25rem;background-color:#ffffff80}.x-splitter-vertical .x-splitter-bar:before{width:.125rem;height:.125rem;background-color:#ffffff80}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
383
391
|
}
|
|
384
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
392
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: XSplitterComponent, decorators: [{
|
|
385
393
|
type: Component,
|
|
386
394
|
args: [{ selector: `${XSplitterPrefix}`, imports: [CommonModule], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"x-splitter\" [class]=\"classMap()\">\r\n <ng-content></ng-content>\r\n</div>\r\n", styles: [".x-splitter{margin:0;padding:0}.x-splitter{display:flex;width:100%;height:100%}.x-splitter-horizontal{flex-direction:row}.x-splitter-horizontal>.x-splitter-panel{height:100%}.x-splitter-horizontal>.x-splitter-bar{width:var(--x-splitter-bar-size, 4px);height:100%;cursor:col-resize;flex-shrink:0}.x-splitter-vertical{flex-direction:column}.x-splitter-vertical>.x-splitter-panel{width:100%}.x-splitter-vertical>.x-splitter-bar{width:100%;height:var(--x-splitter-bar-size, 4px);cursor:row-resize;flex-shrink:0}.x-splitter-bar{position:relative;background-color:var(--x-splitter-bar-color, var(--x-border));transition:background-color .2s;z-index:1}.x-splitter-bar:hover,.x-splitter-bar:active{background-color:var(--x-splitter-bar-hover-color, var(--x-primary))}.x-splitter-bar:before{content:\"\";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.x-splitter-horizontal .x-splitter-bar:before{width:.125rem;height:1.25rem;background-color:#ffffff80}.x-splitter-vertical .x-splitter-bar:before{width:.125rem;height:.125rem;background-color:#ffffff80}\n"] }]
|
|
387
395
|
}], propDecorators: { panels: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => XSplitterPanelComponent), { isSignal: true }] }], bars: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => XSplitterBarComponent), { isSignal: true }] }] } });
|
|
388
396
|
|
|
389
397
|
class XSplitterModule {
|
|
390
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
391
|
-
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
392
|
-
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
398
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: XSplitterModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
399
|
+
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.1", ngImport: i0, type: XSplitterModule, imports: [XSplitterComponent, XSplitterPanelComponent, XSplitterBarComponent], exports: [XSplitterComponent, XSplitterPanelComponent, XSplitterBarComponent] }); }
|
|
400
|
+
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: XSplitterModule, imports: [XSplitterComponent] }); }
|
|
393
401
|
}
|
|
394
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
402
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: XSplitterModule, decorators: [{
|
|
395
403
|
type: NgModule,
|
|
396
404
|
args: [{
|
|
397
405
|
imports: [XSplitterComponent, XSplitterPanelComponent, XSplitterBarComponent],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-nest-ui-splitter.mjs","sources":["../../../../lib/ng-nest/ui/splitter/splitter.property.ts","../../../../lib/ng-nest/ui/splitter/splitter-panel.component.ts","../../../../lib/ng-nest/ui/splitter/splitter-bar.component.ts","../../../../lib/ng-nest/ui/splitter/splitter.component.ts","../../../../lib/ng-nest/ui/splitter/splitter.component.html","../../../../lib/ng-nest/ui/splitter/splitter.module.ts","../../../../lib/ng-nest/ui/splitter/ng-nest-ui-splitter.ts"],"sourcesContent":["import { Component, input } from '@angular/core';\r\nimport { XPropertyFunction } from '@ng-nest/ui/core';\r\n\r\n/**\r\n * Splitter\r\n * @selector x-splitter\r\n * @decorator component\r\n */\r\nexport const XSplitterPrefix = 'x-splitter';\r\n\r\n/**\r\n * Splitter Bar\r\n * @selector x-splitter-bar\r\n * @decorator component\r\n */\r\nexport const XSplitterBarPrefix = 'x-splitter-bar';\r\n\r\n/**\r\n * Splitter Panel\r\n * @selector x-splitter-panel\r\n * @decorator component\r\n */\r\nexport const XSplitterPanelPrefix = 'x-splitter-panel';\r\n\r\nconst X_SPLITTER_CONFIG_NAME = 'splitter';\r\n\r\n/**\r\n * Splitter Property\r\n */\r\n@Component({ selector: `${XSplitterPrefix}-property`, template: '' })\r\nexport class XSplitterProperty extends XPropertyFunction(X_SPLITTER_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 分割方向\r\n * @en_US Split direction\r\n * @example\r\n *\r\n * ```html\r\n * <x-splitter direction=\"horizontal\">\r\n * <x-splitter-panel>Panel 1</x-splitter-panel>\r\n * <x-splitter-panel>Panel 2</x-splitter-panel>\r\n * </x-splitter>\r\n * ```\r\n *\r\n */\r\n readonly direction = input<XSplitterDirection>(this.config?.direction ?? 'horizontal');\r\n}\r\n\r\n/**\r\n * @zh_CN 分割方向\r\n * @en_US Split direction\r\n */\r\nexport type XSplitterDirection = 'horizontal' | 'vertical';\r\n","import { Component, ViewEncapsulation, ChangeDetectionStrategy, input, signal, HostBinding, effect } from '@angular/core';\r\nimport { XSplitterPanelPrefix } from './splitter.property';\r\n\r\n/**\r\n * Splitter Panel\r\n * @selector x-splitter-panel\r\n * @decorator component\r\n */\r\n@Component({\r\n selector: `${XSplitterPanelPrefix}`,\r\n template: '<ng-content></ng-content>',\r\n styleUrls: ['./splitter-panel.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XSplitterPanelComponent {\r\n @HostBinding('class') className = XSplitterPanelPrefix;\r\n \r\n /**\r\n * @zh_CN 面板最小尺寸\r\n * @en_US Panel minimum size\r\n */\r\n readonly min = input<string | number>('0');\r\n\r\n /**\r\n * @zh_CN 面板最大尺寸\r\n * @en_US Panel maximum size\r\n */\r\n readonly max = input<string | number>('100%');\r\n\r\n /**\r\n * @zh_CN 面板默认尺寸\r\n * @en_US Panel default size\r\n */\r\n readonly size = input<string | number>();\r\n\r\n /**\r\n * @zh_CN 面板当前尺寸\r\n * @en_US Panel current size\r\n */\r\n readonly currentSize = signal<string | number | undefined>(undefined);\r\n \r\n constructor() {\r\n // 监听 currentSize 变化\r\n effect(() => {\r\n this.currentSize();\r\n });\r\n }\r\n\r\n /**\r\n * @zh_CN 动态样式绑定\r\n * @en_US Dynamic style binding\r\n */\r\n @HostBinding('style.flex')\r\n get flexStyle() {\r\n const size = this.currentSize();\r\n // 如果没有设置尺寸,使用 flex: 1 让面板自动分配空间\r\n return size ? `0 0 ${size}` : '1 1 auto';\r\n }\r\n}\r\n","import { Component, ViewEncapsulation, ChangeDetectionStrategy, inject, ElementRef, output, HostBinding } from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { fromEvent, takeUntil } from 'rxjs';\r\nimport { XSplitterBarPrefix } from './splitter.property';\r\n\r\n/**\r\n * Splitter Bar\r\n * @selector x-splitter-bar\r\n * @decorator component\r\n */\r\n@Component({\r\n selector: `${XSplitterBarPrefix}`,\r\n template: '',\r\n styleUrls: ['./splitter-bar.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XSplitterBarComponent {\r\n @HostBinding('class') className = XSplitterBarPrefix;\r\n\r\n /**\r\n * @zh_CN 拖动开始事件\r\n * @en_US Drag start event\r\n */\r\n readonly dragStart = output<MouseEvent>();\r\n\r\n /**\r\n * @zh_CN 拖动中事件\r\n * @en_US Dragging event\r\n */\r\n readonly dragging = output<MouseEvent>();\r\n\r\n /**\r\n * @zh_CN 拖动结束事件\r\n * @en_US Drag end event\r\n */\r\n readonly dragEnd = output<MouseEvent>();\r\n\r\n private document = inject(DOCUMENT);\r\n private elementRef = inject(ElementRef);\r\n\r\n ngAfterViewInit() {\r\n this.initDrag();\r\n }\r\n\r\n private initDrag() {\r\n const element = this.elementRef.nativeElement;\r\n\r\n element.addEventListener('mousedown', (event: MouseEvent) => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.dragStart.emit(event);\r\n\r\n const mouseMoveSub = fromEvent(this.document, 'mousemove')\r\n .pipe(takeUntil(fromEvent(this.document, 'mouseup')))\r\n .subscribe((moveEvent: Event) => {\r\n this.dragging.emit(moveEvent as MouseEvent);\r\n });\r\n\r\n fromEvent(this.document, 'mouseup').subscribe((upEvent: Event) => {\r\n this.dragEnd.emit(upEvent as MouseEvent);\r\n mouseMoveSub.unsubscribe();\r\n });\r\n });\r\n }\r\n}\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n computed,\r\n contentChildren,\r\n AfterContentInit,\r\n ElementRef,\r\n inject,\r\n ChangeDetectorRef\r\n} from '@angular/core';\r\nimport { XSplitterPrefix, XSplitterProperty } from './splitter.property';\r\nimport { XSplitterPanelComponent } from './splitter-panel.component';\r\nimport { XSplitterBarComponent } from './splitter-bar.component';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n selector: `${XSplitterPrefix}`,\r\n imports: [CommonModule],\r\n templateUrl: './splitter.component.html',\r\n styleUrls: ['./splitter.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XSplitterComponent extends XSplitterProperty implements AfterContentInit {\r\n panels = contentChildren(XSplitterPanelComponent);\r\n bars = contentChildren(XSplitterBarComponent);\r\n private elementRef = inject(ElementRef);\r\n private cdr = inject(ChangeDetectorRef);\r\n\r\n // 缓存 splitter 的尺寸信息,避免频繁调用 getBoundingClientRect\r\n private cachedSplitterRect: DOMRect | null = null;\r\n private cachedBarSize: number | null = null;\r\n\r\n // 用于 requestAnimationFrame 的 ID,避免重复调度\r\n private rafId: number | null = null;\r\n\r\n /**\r\n * @zh_CN 类名映射\r\n * @en_US Class map\r\n */\r\n classMap = computed(() => ({\r\n [`${XSplitterPrefix}-${this.direction()}`]: true\r\n }));\r\n\r\n ngAfterContentInit() {\r\n this.initBars();\r\n this.initPanelSizes();\r\n }\r\n\r\n private initPanelSizes() {\r\n const panels = this.panels();\r\n\r\n panels.forEach((panel) => {\r\n const size = panel.size();\r\n if (size !== undefined && size !== null) {\r\n // 直接使用原始尺寸值,不转换\r\n panel.currentSize.set(size);\r\n }\r\n });\r\n }\r\n\r\n private initBars() {\r\n const barComponents = this.bars();\r\n barComponents.forEach((bar, index) => {\r\n bar.dragStart.subscribe(() => this.onDragStart(index));\r\n bar.dragging.subscribe((event) => this.onDragging(index, event));\r\n bar.dragEnd.subscribe(() => this.onDragEnd(index));\r\n });\r\n }\r\n\r\n private onDragStart(_barIndex: number) {\r\n // 缓存 splitter 的尺寸和 bar 的大小,避免在拖动过程中重复计算\r\n this.cachedSplitterRect = this.elementRef.nativeElement.getBoundingClientRect();\r\n this.cachedBarSize = this.getBarSize();\r\n }\r\n\r\n private onDragging(barIndex: number, event: MouseEvent) {\r\n // 取消之前的动画帧请求,避免累积\r\n if (this.rafId !== null) {\r\n cancelAnimationFrame(this.rafId);\r\n }\r\n\r\n // 使用 requestAnimationFrame 确保在下一帧更新,避免闪动\r\n this.rafId = requestAnimationFrame(() => {\r\n this.rafId = null;\r\n this.updatePanelSizes(barIndex, event);\r\n });\r\n }\r\n\r\n private updatePanelSizes(barIndex: number, event: MouseEvent) {\r\n const panelElements = this.elementRef.nativeElement.querySelectorAll('x-splitter-panel');\r\n if (panelElements.length < 2) return;\r\n\r\n // 获取 panel 组件实例\r\n const panels = this.panels();\r\n if (panels.length < 2) return;\r\n\r\n const prevPanel = panels[barIndex];\r\n const nextPanel = panels[barIndex + 1];\r\n\r\n if (!prevPanel || !nextPanel) return;\r\n\r\n // 使用缓存的尺寸信息,提高性能\r\n const splitterRect = this.cachedSplitterRect || this.elementRef.nativeElement.getBoundingClientRect();\r\n const isHorizontal = this.direction() === 'horizontal';\r\n\r\n // 获取鼠标位置相对于 splitter 的位置\r\n const position = isHorizontal ? event.clientX - splitterRect.left : event.clientY - splitterRect.top;\r\n\r\n // 获取 splitter 的总尺寸\r\n const totalSize = isHorizontal ? splitterRect.width : splitterRect.height;\r\n\r\n // 计算前一个面板的新尺寸(像素)\r\n let newSizePx = position;\r\n\r\n // 应用最小和最大限制(转换为像素)\r\n const minSizePx = this.parseSizeToPx(prevPanel.min(), totalSize);\r\n const maxSizePx = this.parseSizeToPx(prevPanel.max(), totalSize);\r\n newSizePx = Math.max(minSizePx, Math.min(maxSizePx, newSizePx));\r\n\r\n // 确保后一个面板也有最小限制\r\n const remainingPx = totalSize - newSizePx;\r\n const nextMinSizePx = this.parseSizeToPx(nextPanel.min(), totalSize);\r\n const nextMaxSizePx = this.parseSizeToPx(nextPanel.max(), totalSize);\r\n\r\n if (remainingPx < nextMinSizePx) {\r\n newSizePx = totalSize - nextMinSizePx;\r\n } else if (remainingPx > nextMaxSizePx) {\r\n newSizePx = totalSize - nextMaxSizePx;\r\n }\r\n\r\n // 确保不会把 bar 挤出可见区域\r\n // bar 需要占据一定的空间,所以要为 bar 预留空间\r\n const barSize = this.cachedBarSize || this.getBarSize();\r\n // 前一个面板 + bar + 后一个面板 <= totalSize\r\n // 所以:newSizePx + barSize + nextMinSizePx <= totalSize\r\n if (newSizePx + barSize + nextMinSizePx > totalSize) {\r\n newSizePx = totalSize - barSize - nextMinSizePx;\r\n }\r\n // 同时确保前一个面板不小于其最小值\r\n newSizePx = Math.max(minSizePx, newSizePx);\r\n\r\n // 检查原始尺寸是否是固定单位\r\n const prevOriginalSize = prevPanel.size();\r\n const prevIsFixedSize = prevOriginalSize && typeof prevOriginalSize === 'string' && !prevOriginalSize.endsWith('%');\r\n\r\n // 更新前一个面板的尺寸\r\n if (prevIsFixedSize) {\r\n // 如果前一个面板是固定单位,使用像素值\r\n prevPanel.currentSize.set(`${Math.round(newSizePx)}px`);\r\n } else {\r\n // 如果前一个面板是百分比或数字,使用百分比\r\n const newSizePercent = (newSizePx / totalSize) * 100;\r\n prevPanel.currentSize.set(`${newSizePercent}%`);\r\n }\r\n\r\n // 关键修复:对于后面的所有 panel,需要保持它们的实际像素尺寸不变\r\n // 获取后面所有 panel 的当前实际尺寸\r\n const remainingPanels = panels.slice(barIndex + 1);\r\n const barCount = remainingPanels.length - 1; // bar 的数量比 panel 少 1\r\n const totalBarSize = barCount * barSize;\r\n\r\n // 计算剩余空间\r\n const remainingSpace = totalSize - newSizePx - totalBarSize;\r\n\r\n // 首先获取每个 panel 的当前实际像素尺寸(在修改之前)\r\n const currentSizes: number[] = [];\r\n let totalCurrentSize = 0;\r\n\r\n remainingPanels.forEach((panel) => {\r\n const panelElement = panelElements[panels.indexOf(panel)];\r\n const computedSize = isHorizontal ? panelElement.offsetWidth : panelElement.offsetHeight;\r\n currentSizes.push(computedSize);\r\n totalCurrentSize += computedSize;\r\n });\r\n\r\n // 如果只有一个后续 panel,直接设置它的尺寸为剩余空间\r\n if (remainingPanels.length === 1) {\r\n const panel = remainingPanels[0];\r\n // 始终使用像素值,确保尺寸固定\r\n panel.currentSize.set(`${Math.round(remainingSpace)}px`);\r\n } else {\r\n // 如果有多个后续 panel,按当前尺寸的比例分配剩余空间\r\n remainingPanels.forEach((panel, index) => {\r\n if (totalCurrentSize > 0) {\r\n // 按当前尺寸的比例分配\r\n const ratio = currentSizes[index] / totalCurrentSize;\r\n const newSize = remainingSpace * ratio;\r\n // 始终使用像素值,确保尺寸固定\r\n panel.currentSize.set(`${Math.round(newSize)}px`);\r\n } else {\r\n // 如果没有当前尺寸,平均分配\r\n const avgSize = remainingSpace / remainingPanels.length;\r\n panel.currentSize.set(`${Math.round(avgSize)}px`);\r\n }\r\n });\r\n }\r\n\r\n // 手动触发变更检测\r\n this.cdr.markForCheck();\r\n }\r\n\r\n private onDragEnd(_barIndex: number) {\r\n // 取消未完成的动画帧\r\n if (this.rafId !== null) {\r\n cancelAnimationFrame(this.rafId);\r\n this.rafId = null;\r\n }\r\n // 清除缓存\r\n this.cachedSplitterRect = null;\r\n this.cachedBarSize = null;\r\n }\r\n\r\n /**\r\n * @zh_CN 将尺寸值转换为像素\r\n * @en_US Convert size value to pixels\r\n */\r\n private parseSizeToPx(size: string | number, totalSize: number): number {\r\n if (typeof size === 'number') {\r\n // 数字默认当作像素\r\n return size;\r\n }\r\n\r\n if (size.endsWith('%')) {\r\n const percent = parseFloat(size);\r\n return (percent / 100) * totalSize;\r\n }\r\n\r\n if (size.endsWith('px')) {\r\n return parseFloat(size);\r\n }\r\n\r\n if (size.endsWith('rem')) {\r\n const remValue = parseFloat(size);\r\n // 获取根元素的字体大小(默认 16px)\r\n const rootFontSize = parseFloat(getComputedStyle(document.documentElement).fontSize) || 16;\r\n return remValue * rootFontSize;\r\n }\r\n\r\n if (size.endsWith('em')) {\r\n const emValue = parseFloat(size);\r\n // 获取父元素的字体大小(这里使用 splitter 的字体大小)\r\n const parentFontSize = parseFloat(getComputedStyle(this.elementRef.nativeElement).fontSize) || 16;\r\n return emValue * parentFontSize;\r\n }\r\n\r\n // 默认当作像素处理\r\n return parseFloat(size) || 0;\r\n }\r\n\r\n /**\r\n * @zh_CN 获取 bar 的尺寸(像素)\r\n * @en_US Get bar size in pixels\r\n */\r\n private getBarSize(): number {\r\n const barElement = this.elementRef.nativeElement.querySelector('.x-splitter-bar');\r\n if (barElement) {\r\n const computedStyle = getComputedStyle(barElement);\r\n const isHorizontal = this.direction() === 'horizontal';\r\n const size = isHorizontal ? computedStyle.width : computedStyle.height;\r\n return parseFloat(size) || 4; // 默认 4px\r\n }\r\n return 4; // 默认值\r\n }\r\n}\r\n","<div class=\"x-splitter\" [class]=\"classMap()\">\r\n <ng-content></ng-content>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { XSplitterComponent } from './splitter.component';\r\nimport { XSplitterPanelComponent } from './splitter-panel.component';\r\nimport { XSplitterBarComponent } from './splitter-bar.component';\r\n\r\n@NgModule({\r\n imports: [XSplitterComponent, XSplitterPanelComponent, XSplitterBarComponent],\r\n exports: [XSplitterComponent, XSplitterPanelComponent, XSplitterBarComponent]\r\n})\r\nexport class XSplitterModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ng-nest-ui-splitter.mjs","sources":["../../../../lib/ng-nest/ui/splitter/splitter.property.ts","../../../../lib/ng-nest/ui/splitter/splitter-panel.component.ts","../../../../lib/ng-nest/ui/splitter/splitter-bar.component.ts","../../../../lib/ng-nest/ui/splitter/splitter.component.ts","../../../../lib/ng-nest/ui/splitter/splitter.component.html","../../../../lib/ng-nest/ui/splitter/splitter.module.ts","../../../../lib/ng-nest/ui/splitter/ng-nest-ui-splitter.ts"],"sourcesContent":["import { Component, input } from '@angular/core';\r\nimport { XPropertyFunction } from '@ng-nest/ui/core';\r\n\r\n/**\r\n * Splitter\r\n * @selector x-splitter\r\n * @decorator component\r\n */\r\nexport const XSplitterPrefix = 'x-splitter';\r\n\r\n/**\r\n * Splitter Bar\r\n * @selector x-splitter-bar\r\n * @decorator component\r\n */\r\nexport const XSplitterBarPrefix = 'x-splitter-bar';\r\n\r\n/**\r\n * Splitter Panel\r\n * @selector x-splitter-panel\r\n * @decorator component\r\n */\r\nexport const XSplitterPanelPrefix = 'x-splitter-panel';\r\n\r\nconst X_SPLITTER_CONFIG_NAME = 'splitter';\r\n\r\n/**\r\n * Splitter Property\r\n */\r\n@Component({ selector: `${XSplitterPrefix}-property`, template: '' })\r\nexport class XSplitterProperty extends XPropertyFunction(X_SPLITTER_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 分割方向\r\n * @en_US Split direction\r\n * @example\r\n *\r\n * ```html\r\n * <x-splitter direction=\"horizontal\">\r\n * <x-splitter-panel>Panel 1</x-splitter-panel>\r\n * <x-splitter-panel>Panel 2</x-splitter-panel>\r\n * </x-splitter>\r\n * ```\r\n *\r\n */\r\n readonly direction = input<XSplitterDirection>(this.config?.direction ?? 'horizontal');\r\n}\r\n\r\n/**\r\n * @zh_CN 分割方向\r\n * @en_US Split direction\r\n */\r\nexport type XSplitterDirection = 'horizontal' | 'vertical';\r\n","import { Component, ViewEncapsulation, ChangeDetectionStrategy, input, signal, HostBinding, effect } from '@angular/core';\r\nimport { XSplitterPanelPrefix } from './splitter.property';\r\n\r\n/**\r\n * Splitter Panel\r\n * @selector x-splitter-panel\r\n * @decorator component\r\n */\r\n@Component({\r\n selector: `${XSplitterPanelPrefix}`,\r\n template: '<ng-content></ng-content>',\r\n styleUrls: ['./splitter-panel.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XSplitterPanelComponent {\r\n @HostBinding('class') className = XSplitterPanelPrefix;\r\n \r\n /**\r\n * @zh_CN 面板最小尺寸\r\n * @en_US Panel minimum size\r\n */\r\n readonly min = input<string | number>('0');\r\n\r\n /**\r\n * @zh_CN 面板最大尺寸\r\n * @en_US Panel maximum size\r\n */\r\n readonly max = input<string | number>('100%');\r\n\r\n /**\r\n * @zh_CN 面板默认尺寸\r\n * @en_US Panel default size\r\n */\r\n readonly size = input<string | number>();\r\n\r\n /**\r\n * @zh_CN 面板当前尺寸\r\n * @en_US Panel current size\r\n */\r\n readonly currentSize = signal<string | number | undefined>(undefined);\r\n \r\n constructor() {\r\n // 监听 currentSize 变化\r\n effect(() => {\r\n this.currentSize();\r\n });\r\n }\r\n\r\n /**\r\n * @zh_CN 动态样式绑定\r\n * @en_US Dynamic style binding\r\n */\r\n @HostBinding('style.flex')\r\n get flexStyle() {\r\n const size = this.currentSize();\r\n // 如果没有设置尺寸,使用 flex: 1 让面板自动分配空间\r\n return size ? `0 0 ${size}` : '1 1 auto';\r\n }\r\n}\r\n","import { Component, ViewEncapsulation, ChangeDetectionStrategy, inject, ElementRef, output, HostBinding } from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { fromEvent, takeUntil } from 'rxjs';\r\nimport { XSplitterBarPrefix } from './splitter.property';\r\n\r\n/**\r\n * Splitter Bar\r\n * @selector x-splitter-bar\r\n * @decorator component\r\n */\r\n@Component({\r\n selector: `${XSplitterBarPrefix}`,\r\n template: '',\r\n styleUrls: ['./splitter-bar.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XSplitterBarComponent {\r\n @HostBinding('class') className = XSplitterBarPrefix;\r\n\r\n /**\r\n * @zh_CN 拖动开始事件\r\n * @en_US Drag start event\r\n */\r\n readonly dragStart = output<MouseEvent>();\r\n\r\n /**\r\n * @zh_CN 拖动中事件\r\n * @en_US Dragging event\r\n */\r\n readonly dragging = output<MouseEvent>();\r\n\r\n /**\r\n * @zh_CN 拖动结束事件\r\n * @en_US Drag end event\r\n */\r\n readonly dragEnd = output<MouseEvent>();\r\n\r\n private document = inject(DOCUMENT);\r\n private elementRef = inject(ElementRef);\r\n\r\n ngAfterViewInit() {\r\n this.initDrag();\r\n }\r\n\r\n private initDrag() {\r\n const element = this.elementRef.nativeElement;\r\n\r\n element.addEventListener('mousedown', (event: MouseEvent) => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.dragStart.emit(event);\r\n\r\n const mouseMoveSub = fromEvent(this.document, 'mousemove')\r\n .pipe(takeUntil(fromEvent(this.document, 'mouseup')))\r\n .subscribe((moveEvent: Event) => {\r\n this.dragging.emit(moveEvent as MouseEvent);\r\n });\r\n\r\n fromEvent(this.document, 'mouseup').subscribe((upEvent: Event) => {\r\n this.dragEnd.emit(upEvent as MouseEvent);\r\n mouseMoveSub.unsubscribe();\r\n });\r\n });\r\n }\r\n}\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n computed,\r\n contentChildren,\r\n AfterContentInit,\r\n ElementRef,\r\n inject,\r\n ChangeDetectorRef\r\n} from '@angular/core';\r\nimport { XSplitterPrefix, XSplitterProperty } from './splitter.property';\r\nimport { XSplitterPanelComponent } from './splitter-panel.component';\r\nimport { XSplitterBarComponent } from './splitter-bar.component';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n selector: `${XSplitterPrefix}`,\r\n imports: [CommonModule],\r\n templateUrl: './splitter.component.html',\r\n styleUrls: ['./splitter.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XSplitterComponent extends XSplitterProperty implements AfterContentInit {\r\n panels = contentChildren(XSplitterPanelComponent);\r\n bars = contentChildren(XSplitterBarComponent);\r\n private elementRef = inject(ElementRef);\r\n private cdr = inject(ChangeDetectorRef);\r\n\r\n // 缓存 splitter 的尺寸信息,避免频繁调用 getBoundingClientRect\r\n private cachedSplitterRect: DOMRect | null = null;\r\n private cachedBarSize: number | null = null;\r\n\r\n // 用于 requestAnimationFrame 的 ID,避免重复调度\r\n private rafId: number | null = null;\r\n\r\n /**\r\n * @zh_CN 类名映射\r\n * @en_US Class map\r\n */\r\n classMap = computed(() => ({\r\n [`${XSplitterPrefix}-${this.direction()}`]: true\r\n }));\r\n\r\n ngAfterContentInit() {\r\n this.initBars();\r\n this.initPanelSizes();\r\n }\r\n\r\n private initPanelSizes() {\r\n const panels = this.panels();\r\n\r\n panels.forEach((panel) => {\r\n const size = panel.size();\r\n if (size !== undefined && size !== null) {\r\n // 直接使用原始尺寸值,不转换\r\n panel.currentSize.set(size);\r\n }\r\n });\r\n }\r\n\r\n private initBars() {\r\n const barComponents = this.bars();\r\n barComponents.forEach((bar, index) => {\r\n bar.dragStart.subscribe(() => this.onDragStart(index));\r\n bar.dragging.subscribe((event) => this.onDragging(index, event));\r\n bar.dragEnd.subscribe(() => this.onDragEnd(index));\r\n });\r\n }\r\n\r\n private onDragStart(_barIndex: number) {\r\n // 缓存 splitter 的尺寸和 bar 的大小,避免在拖动过程中重复计算\r\n this.cachedSplitterRect = this.elementRef.nativeElement.getBoundingClientRect();\r\n this.cachedBarSize = this.getBarSize();\r\n }\r\n\r\n private onDragging(barIndex: number, event: MouseEvent) {\r\n // 取消之前的动画帧请求,避免累积\r\n if (this.rafId !== null) {\r\n cancelAnimationFrame(this.rafId);\r\n }\r\n\r\n // 使用 requestAnimationFrame 确保在下一帧更新,避免闪动\r\n this.rafId = requestAnimationFrame(() => {\r\n this.rafId = null;\r\n this.updatePanelSizes(barIndex, event);\r\n });\r\n }\r\n\r\n private updatePanelSizes(barIndex: number, event: MouseEvent) {\r\n const panelElements = this.elementRef.nativeElement.querySelectorAll('x-splitter-panel');\r\n if (panelElements.length < 2) return;\r\n\r\n // 获取 panel 组件实例\r\n const panels = this.panels();\r\n if (panels.length < 2) return;\r\n\r\n const prevPanel = panels[barIndex];\r\n const nextPanel = panels[barIndex + 1];\r\n\r\n if (!prevPanel || !nextPanel) return;\r\n\r\n // 使用缓存的尺寸信息,提高性能\r\n const splitterRect = this.cachedSplitterRect || this.elementRef.nativeElement.getBoundingClientRect();\r\n const isHorizontal = this.direction() === 'horizontal';\r\n\r\n // 获取鼠标位置相对于 splitter 的位置\r\n const position = isHorizontal ? event.clientX - splitterRect.left : event.clientY - splitterRect.top;\r\n\r\n // 获取 splitter 的总尺寸\r\n const totalSize = isHorizontal ? splitterRect.width : splitterRect.height;\r\n\r\n // 计算前一个面板的新尺寸(像素)\r\n let newSizePx = position;\r\n\r\n // 应用最小和最大限制(转换为像素)\r\n const minSizePx = this.parseSizeToPx(prevPanel.min(), totalSize);\r\n const maxSizePx = this.parseSizeToPx(prevPanel.max(), totalSize);\r\n newSizePx = Math.max(minSizePx, Math.min(maxSizePx, newSizePx));\r\n\r\n // 确保后一个面板也有最小限制\r\n const remainingPx = totalSize - newSizePx;\r\n const nextMinSizePx = this.parseSizeToPx(nextPanel.min(), totalSize);\r\n const nextMaxSizePx = this.parseSizeToPx(nextPanel.max(), totalSize);\r\n\r\n if (remainingPx < nextMinSizePx) {\r\n newSizePx = totalSize - nextMinSizePx;\r\n } else if (remainingPx > nextMaxSizePx) {\r\n newSizePx = totalSize - nextMaxSizePx;\r\n }\r\n\r\n // 确保不会把 bar 挤出可见区域\r\n // bar 需要占据一定的空间,所以要为 bar 预留空间\r\n const barSize = this.cachedBarSize || this.getBarSize();\r\n // 前一个面板 + bar + 后一个面板 <= totalSize\r\n // 所以:newSizePx + barSize + nextMinSizePx <= totalSize\r\n if (newSizePx + barSize + nextMinSizePx > totalSize) {\r\n newSizePx = totalSize - barSize - nextMinSizePx;\r\n }\r\n // 同时确保前一个面板不小于其最小值\r\n newSizePx = Math.max(minSizePx, newSizePx);\r\n\r\n // 检查原始尺寸是否是固定单位\r\n const prevOriginalSize = prevPanel.size();\r\n const prevIsFixedSize = prevOriginalSize && typeof prevOriginalSize === 'string' && !prevOriginalSize.endsWith('%');\r\n\r\n // 更新前一个面板的尺寸\r\n if (prevIsFixedSize) {\r\n // 如果前一个面板是固定单位,使用像素值\r\n prevPanel.currentSize.set(`${Math.round(newSizePx)}px`);\r\n } else {\r\n // 如果前一个面板是百分比或数字,使用百分比\r\n const newSizePercent = (newSizePx / totalSize) * 100;\r\n prevPanel.currentSize.set(`${newSizePercent}%`);\r\n }\r\n\r\n // 关键修复:对于后面的所有 panel,需要保持它们的实际像素尺寸不变\r\n // 获取后面所有 panel 的当前实际尺寸\r\n const remainingPanels = panels.slice(barIndex + 1);\r\n const barCount = remainingPanels.length - 1; // bar 的数量比 panel 少 1\r\n const totalBarSize = barCount * barSize;\r\n\r\n // 计算剩余空间\r\n const remainingSpace = totalSize - newSizePx - totalBarSize;\r\n\r\n // 首先获取每个 panel 的当前实际像素尺寸(在修改之前)\r\n const currentSizes: number[] = [];\r\n let totalCurrentSize = 0;\r\n\r\n remainingPanels.forEach((panel) => {\r\n const panelElement = panelElements[panels.indexOf(panel)];\r\n const computedSize = isHorizontal ? panelElement.offsetWidth : panelElement.offsetHeight;\r\n currentSizes.push(computedSize);\r\n totalCurrentSize += computedSize;\r\n });\r\n\r\n // 如果只有一个后续 panel,直接设置它的尺寸为剩余空间\r\n if (remainingPanels.length === 1) {\r\n const panel = remainingPanels[0];\r\n // 始终使用像素值,确保尺寸固定\r\n panel.currentSize.set(`${Math.round(remainingSpace)}px`);\r\n } else {\r\n // 如果有多个后续 panel,按当前尺寸的比例分配剩余空间\r\n remainingPanels.forEach((panel, index) => {\r\n if (totalCurrentSize > 0) {\r\n // 按当前尺寸的比例分配\r\n const ratio = currentSizes[index] / totalCurrentSize;\r\n const newSize = remainingSpace * ratio;\r\n // 始终使用像素值,确保尺寸固定\r\n panel.currentSize.set(`${Math.round(newSize)}px`);\r\n } else {\r\n // 如果没有当前尺寸,平均分配\r\n const avgSize = remainingSpace / remainingPanels.length;\r\n panel.currentSize.set(`${Math.round(avgSize)}px`);\r\n }\r\n });\r\n }\r\n\r\n // 手动触发变更检测\r\n this.cdr.markForCheck();\r\n }\r\n\r\n private onDragEnd(_barIndex: number) {\r\n // 取消未完成的动画帧\r\n if (this.rafId !== null) {\r\n cancelAnimationFrame(this.rafId);\r\n this.rafId = null;\r\n }\r\n // 清除缓存\r\n this.cachedSplitterRect = null;\r\n this.cachedBarSize = null;\r\n }\r\n\r\n /**\r\n * @zh_CN 将尺寸值转换为像素\r\n * @en_US Convert size value to pixels\r\n */\r\n private parseSizeToPx(size: string | number, totalSize: number): number {\r\n if (typeof size === 'number') {\r\n // 数字默认当作像素\r\n return size;\r\n }\r\n\r\n if (size.endsWith('%')) {\r\n const percent = parseFloat(size);\r\n return (percent / 100) * totalSize;\r\n }\r\n\r\n if (size.endsWith('px')) {\r\n return parseFloat(size);\r\n }\r\n\r\n if (size.endsWith('rem')) {\r\n const remValue = parseFloat(size);\r\n // 获取根元素的字体大小(默认 16px)\r\n const rootFontSize = parseFloat(getComputedStyle(document.documentElement).fontSize) || 16;\r\n return remValue * rootFontSize;\r\n }\r\n\r\n if (size.endsWith('em')) {\r\n const emValue = parseFloat(size);\r\n // 获取父元素的字体大小(这里使用 splitter 的字体大小)\r\n const parentFontSize = parseFloat(getComputedStyle(this.elementRef.nativeElement).fontSize) || 16;\r\n return emValue * parentFontSize;\r\n }\r\n\r\n // 默认当作像素处理\r\n return parseFloat(size) || 0;\r\n }\r\n\r\n /**\r\n * @zh_CN 获取 bar 的尺寸(像素)\r\n * @en_US Get bar size in pixels\r\n */\r\n private getBarSize(): number {\r\n const barElement = this.elementRef.nativeElement.querySelector('.x-splitter-bar');\r\n if (barElement) {\r\n const computedStyle = getComputedStyle(barElement);\r\n const isHorizontal = this.direction() === 'horizontal';\r\n const size = isHorizontal ? computedStyle.width : computedStyle.height;\r\n return parseFloat(size) || 4; // 默认 4px\r\n }\r\n return 4; // 默认值\r\n }\r\n}\r\n","<div class=\"x-splitter\" [class]=\"classMap()\">\r\n <ng-content></ng-content>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { XSplitterComponent } from './splitter.component';\r\nimport { XSplitterPanelComponent } from './splitter-panel.component';\r\nimport { XSplitterBarComponent } from './splitter-bar.component';\r\n\r\n@NgModule({\r\n imports: [XSplitterComponent, XSplitterPanelComponent, XSplitterBarComponent],\r\n exports: [XSplitterComponent, XSplitterPanelComponent, XSplitterBarComponent]\r\n})\r\nexport class XSplitterModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|