@ng-nest/ui 21.0.12 → 21.0.14

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.
@@ -1 +1 @@
1
- {"version":3,"file":"ng-nest-ui-slider-select.mjs","sources":["../../../../lib/ng-nest/ui/slider-select/slider-select.property.ts","../../../../lib/ng-nest/ui/slider-select/slider-select.component.ts","../../../../lib/ng-nest/ui/slider-select/slider-select.component.html","../../../../lib/ng-nest/ui/slider-select/slider-select.module.ts","../../../../lib/ng-nest/ui/slider-select/ng-nest-ui-slider-select.ts"],"sourcesContent":["import { XToBoolean, XToCssPixelValue, XToNumber } from '@ng-nest/ui/core';\r\nimport { Component, input, output } from '@angular/core';\r\nimport { XFormControlFunction, XFormOption } from '@ng-nest/ui/base-form';\r\nimport type { CdkDragStart, CdkDragMove, CdkDragEnd } from '@angular/cdk/drag-drop';\r\nimport type { XAlign, XBoolean, XDirection, XJustify, XNumber, XTemplate } from '@ng-nest/ui/core';\r\n\r\n/**\r\n * SliderSelect\r\n * @selector x-slider-select\r\n * @decorator component\r\n */\r\nexport const XSliderSelectPrefix = 'x-slider-select';\r\nconst X_SLIDER_SELECT_CONFIG_NAME = 'sliderSelect';\r\n\r\n/**\r\n * SliderSelect Property\r\n */\r\n@Component({ selector: `${XSliderSelectPrefix}-property`, template: '' })\r\nexport class XSliderSelectProperty extends XFormControlFunction(X_SLIDER_SELECT_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 最小值\r\n * @en_US Minimum\r\n */\r\n readonly min = input<number, XNumber>(0, { transform: XToNumber });\r\n /**\r\n * @zh_CN 最大值\r\n * @en_US Max\r\n */\r\n readonly max = input<number, XNumber>(100, { transform: XToNumber });\r\n /**\r\n * @zh_CN 步数\r\n * @en_US Step count\r\n */\r\n readonly step = input<number, XNumber>(1, { transform: XToNumber });\r\n /**\r\n * @zh_CN 精度,默认根据步数来计算\r\n * @en_US Precision, calculated based on the number of steps by default\r\n */\r\n readonly precision = input<number | undefined, XNumber>(undefined, { transform: XToNumber });\r\n /**\r\n * @zh_CN 显示 tooltip 提示\r\n * @en_US Display Tooltip prompts\r\n */\r\n readonly showTooltip = input<boolean, XBoolean>(true, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 反向\r\n * @en_US Reverse\r\n */\r\n readonly reverse = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 垂直\r\n * @en_US Vertical\r\n */\r\n readonly vertical = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 范围\r\n * @en_US Range\r\n */\r\n readonly range = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 自定义滑块\r\n * @en_US Custom button\r\n */\r\n readonly customButton = input<XTemplate>();\r\n /**\r\n * @zh_CN 刻度标记,key 为实际数字,在 [min,max] 内,可通过 style 设置样式\r\n * @en_US Scale marking, key is the actual number, in [min, max], you can set style through style\r\n */\r\n readonly marks = input<XSliderSelectMark[]>([]);\r\n /**\r\n * @zh_CN 自定义 tooltip\r\n * @en_US Custom tooltip\r\n */\r\n readonly tooltipCustom = input<XTemplate>();\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 * @zh_CN 开始拖动的事件\r\n * @en_US Start drag event\r\n */\r\n readonly dragStartEmit = output<CdkDragStart>();\r\n /**\r\n * @zh_CN 按住移动中的事件\r\n * @en_US Hold down the moving event\r\n */\r\n readonly dragMoveEmit = output<CdkDragMove>();\r\n /**\r\n * @zh_CN 移动结束的事件\r\n * @en_US Mobile end event\r\n */\r\n readonly dragEndEmit = output<CdkDragEnd>();\r\n}\r\n\r\n/**\r\n * SliderSelect Option\r\n */\r\nexport interface XSliderSelectOption extends XFormOption {\r\n /**\r\n * @zh_CN 最小值\r\n * @en_US Minimum\r\n */\r\n min?: number;\r\n /**\r\n * @zh_CN 最大值\r\n * @en_US Max\r\n */\r\n max?: number;\r\n /**\r\n * @zh_CN 步数\r\n * @en_US Step count\r\n */\r\n step?: number;\r\n /**\r\n * @zh_CN 精度,默认根据步数来计算\r\n * @en_US Precision, calculated based on the number of steps by default\r\n */\r\n precision?: number;\r\n /**\r\n * @zh_CN 显示 tooltip 提示\r\n * @en_US Display Tooltip prompts\r\n */\r\n showTooltip?: boolean;\r\n /**\r\n * @zh_CN 反向\r\n * @en_US Reverse\r\n */\r\n reverse?: boolean;\r\n /**\r\n * @zh_CN 垂直\r\n * @en_US Vertical\r\n */\r\n vertical?: boolean;\r\n /**\r\n * @zh_CN 范围\r\n * @en_US Range\r\n */\r\n range?: boolean;\r\n /**\r\n * @zh_CN 自定义滑块\r\n * @en_US Custom button\r\n */\r\n customButton?: XTemplate;\r\n /**\r\n * @zh_CN 刻度标记,key 为实际数字,在 [min,max] 内,可通过 style 设置样式\r\n * @en_US Scale marking, key is the actual number, in [min, max], you can set style through style\r\n */\r\n marks?: XSliderSelectMark[];\r\n /**\r\n * @zh_CN 自定义 tooltip\r\n * @en_US Custom tooltip\r\n */\r\n tooltipCustom?: XTemplate;\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 * @zh_CN 开始拖动的事件\r\n * @en_US Start drag event\r\n */\r\n dragStartEmit?: (start: CdkDragStart) => void;\r\n /**\r\n * @zh_CN 按住移动中的事件\r\n * @en_US Hold down the moving event\r\n */\r\n dragMoveEmit?: (move: CdkDragMove) => void;\r\n /**\r\n * @zh_CN 移动结束的事件\r\n * @en_US Mobile end event\r\n */\r\n dragEndEmit?: (end: CdkDragEnd) => void;\r\n}\r\n\r\n/**\r\n * @zh_CN 刻度标记\r\n * @en_US Scale marking\r\n */\r\nexport interface XSliderSelectMark {\r\n /**\r\n * @zh_CN 数值\r\n * @en_US Value\r\n */\r\n value: number;\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 style\r\n */\r\n style?: { [style: string]: any };\r\n /**\r\n * @zh_CN 实际偏移量(自动计算)\r\n * @en_US Offset. automatic calculation\r\n */\r\n offset?: number;\r\n}\r\n","import { XTooltipDirective } from '@ng-nest/ui/tooltip';\r\nimport {\r\n Component,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Renderer2,\r\n ElementRef,\r\n OnDestroy,\r\n AfterViewInit,\r\n HostBinding,\r\n inject,\r\n signal,\r\n viewChild,\r\n viewChildren,\r\n computed\r\n} from '@angular/core';\r\nimport { XSliderSelectProperty, XSliderSelectPrefix, XSliderSelectMark } from './slider-select.property';\r\nimport { XIsEmpty, XIsUndefined, XResize, XResizeObserver, XIsNumber, XIsArray, XIsNull } from '@ng-nest/ui/core';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { Subject } from 'rxjs';\r\nimport { debounceTime, takeUntil } from 'rxjs/operators';\r\nimport { XValueAccessor } from '@ng-nest/ui/base-form';\r\nimport { NgClass, NgStyle } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { XOutletDirective } from '@ng-nest/ui/outlet';\r\nimport type { CdkDragMove, CdkDragStart, CdkDragEnd } from '@angular/cdk/drag-drop';\r\n\r\n@Component({\r\n selector: `${XSliderSelectPrefix}`,\r\n imports: [NgClass, NgStyle, FormsModule, ReactiveFormsModule, DragDropModule, XTooltipDirective, XOutletDirective],\r\n templateUrl: './slider-select.component.html',\r\n styleUrls: ['./slider-select.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [XValueAccessor(XSliderSelectComponent)]\r\n})\r\nexport class XSliderSelectComponent extends XSliderSelectProperty implements OnDestroy, AfterViewInit {\r\n sliderSelect = viewChild.required<ElementRef<HTMLElement>>('sliderSelect');\r\n dragStartRef = viewChild.required<ElementRef<HTMLElement>>('dragStartRef');\r\n dragEndRef = viewChild.required<ElementRef<HTMLElement>>('dragEndRef');\r\n railRef = viewChild.required<ElementRef<HTMLElement>>('railRef');\r\n processRef = viewChild.required<ElementRef<HTMLElement>>('processRef');\r\n @HostBinding('class.x-slider-select-vertical') get getVertical() {\r\n return this.vertical();\r\n }\r\n tooltips = viewChildren(XTooltipDirective);\r\n tooltipStart = computed(() => {\r\n if (this.tooltips().length > 0) {\r\n return this.tooltips()![0];\r\n }\r\n return null;\r\n });\r\n tooltipEnd = computed(() => {\r\n if (this.tooltips().length > 1) {\r\n return this.tooltips()![1];\r\n }\r\n return null;\r\n });\r\n\r\n override value = signal<number | number[]>(0);\r\n starting = signal(false);\r\n\r\n startOffset = signal(0);\r\n startVisible = signal(false);\r\n startManual = signal(false);\r\n start = signal<number | null>(null);\r\n startDisplayValue = signal('0');\r\n showStartTooltip = signal(true);\r\n\r\n endOffset = signal(0);\r\n endVisible = signal(false);\r\n endManual = signal(false);\r\n end = signal<number | null>(null);\r\n endDisplayValue = signal('0');\r\n showEndTooltip = signal(true);\r\n\r\n markList = computed(() => {\r\n if (!this.marks()) return [];\r\n const marks: XSliderSelectMark[] = [];\r\n for (let mark of this.marks()) {\r\n const mk: XSliderSelectMark = {\r\n value: mark.value,\r\n label: mark.label,\r\n style: { ...mark.style }\r\n };\r\n mk.offset = this.getOffset(mark.value);\r\n\r\n if (this.reverse()) {\r\n if (this.vertical()) {\r\n mk.style!['top'] = `${mk.offset}%`;\r\n } else {\r\n mk.style!['right'] = `${mk.offset}%`;\r\n }\r\n } else {\r\n if (this.vertical()) {\r\n mk.style!['bottom'] = `${mk.offset}%`;\r\n } else {\r\n mk.style!['left'] = `${mk.offset}%`;\r\n }\r\n }\r\n marks.push(mk);\r\n }\r\n return marks;\r\n });\r\n\r\n private unSubject = new Subject<void>();\r\n private resizeObserver!: XResizeObserver;\r\n isNumber = computed(() => XIsNumber(this.value()) && !XIsArray(this.value()));\r\n isArray = computed(() => XIsArray(this.value()));\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 precisionSignal = computed(() => {\r\n const precision = this.precision();\r\n if (XIsUndefined(precision) || !XIsEmpty(this.step())) {\r\n let stepStr = String(this.step());\r\n let indexpoint = stepStr.indexOf('.');\r\n if (indexpoint === -1) {\r\n return 0;\r\n } else {\r\n return stepStr.length - (indexpoint + 1);\r\n }\r\n }\r\n return precision;\r\n });\r\n\r\n override requiredIsEmpty = computed(\r\n () => this.validatorComputed() && this.requiredComputed() && (XIsEmpty(this.value()) || this.value() === 0)\r\n );\r\n\r\n override writeValue(value: number | number[]) {\r\n if (this.starting()) return;\r\n if (XIsNull(value) || XIsUndefined(value)) {\r\n if (this.range()) {\r\n value = [this.min(), this.min()];\r\n } else {\r\n value = this.min();\r\n }\r\n }\r\n this.value.set(value);\r\n this.setLeft();\r\n this.setDisplayValue();\r\n }\r\n\r\n private renderer = inject(Renderer2);\r\n override cdr = inject(ChangeDetectorRef);\r\n elementRef = inject(ElementRef);\r\n\r\n ngAfterViewInit() {\r\n XResize(this.sliderSelect().nativeElement)\r\n .pipe(debounceTime(30), takeUntil(this.unSubject))\r\n .subscribe((x) => {\r\n this.resizeObserver = x.resizeObserver;\r\n this.setLeft();\r\n this.setDisplayValue();\r\n });\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 }\r\n\r\n change() {\r\n const getVal = (offset: number) => {\r\n return parseFloat(\r\n Number(((this.max() - this.min()) * offset) / 100 + this.min()).toFixed(this.precisionSignal())\r\n );\r\n };\r\n const startVal = getVal(this.startOffset());\r\n if (this.isNumber()) {\r\n this.value.set(startVal);\r\n } else {\r\n const endVal = getVal(this.endOffset());\r\n if (endVal < startVal) {\r\n this.value.set([endVal, startVal]);\r\n } else {\r\n this.value.set([startVal, endVal]);\r\n }\r\n }\r\n\r\n this.setDisplayValue();\r\n if (this.onChange) this.onChange(this.value());\r\n }\r\n\r\n getOffset(val: number) {\r\n return Math.abs(\r\n Math.round(((val + (this.reverse() ? -this.min() : this.min())) * 100) / (this.max() - this.min()))\r\n );\r\n }\r\n\r\n setLeft() {\r\n let startVal = 0,\r\n endVal = 0;\r\n const value = this.value();\r\n if (this.isNumber()) {\r\n startVal = value as number;\r\n } else if (XIsArray(value) && value.length > 1) {\r\n startVal = value[0];\r\n endVal = value[1];\r\n this.endOffset.set(this.getOffset(endVal));\r\n this.end.set(this.endOffset());\r\n }\r\n\r\n this.startOffset.set(this.getOffset(startVal));\r\n this.start.set(this.startOffset());\r\n\r\n this.setDrag();\r\n }\r\n\r\n setDisplayValue() {\r\n const displayVal = (val: number) => {\r\n return Number(val).toFixed(this.precisionSignal());\r\n };\r\n const value = this.value();\r\n if (this.isNumber()) {\r\n this.startDisplayValue.set(displayVal(value as number));\r\n } else {\r\n if (XIsArray(value) && value.length > 1) {\r\n if (this.startOffset() > this.endOffset()) {\r\n this.startDisplayValue.set(displayVal(value[1]));\r\n this.endDisplayValue.set(displayVal(value[0]));\r\n } else {\r\n this.startDisplayValue.set(displayVal(value[0]));\r\n this.endDisplayValue.set(displayVal(value[1]));\r\n }\r\n }\r\n }\r\n }\r\n\r\n started(drag: CdkDragStart, type: 'start' | 'end' | 'both' = 'start') {\r\n this.starting.set(true);\r\n if (['start', 'both'].includes(type)) {\r\n const start = this.startOffset();\r\n this.start.set(start);\r\n if (this.showStartTooltip()) {\r\n this.startManual.set(true);\r\n this.startVisible.set(true);\r\n }\r\n }\r\n if (['end', 'both'].includes(type)) {\r\n const end = this.endOffset();\r\n this.end.set(end);\r\n if (this.showEndTooltip()) {\r\n this.endManual.set(true);\r\n this.endVisible.set(true);\r\n }\r\n }\r\n this.formControlValidator();\r\n this.dragStartEmit.emit(drag);\r\n }\r\n\r\n moved(drag: CdkDragMove, type: 'start' | 'end' | 'both' = 'start') {\r\n let transform = drag.source.getFreeDragPosition();\r\n this.setDrag(this.vertical() ? transform.y : transform.x, type);\r\n drag.source.reset();\r\n if (['start', 'both'].includes(type) && this.showStartTooltip()) {\r\n this.tooltipStart()?.updatePortal();\r\n }\r\n if (['end', 'both'].includes(type) && this.showEndTooltip()) {\r\n this.tooltipEnd()?.updatePortal();\r\n }\r\n this.change();\r\n this.dragMoveEmit.emit(drag);\r\n }\r\n\r\n ended(drag: CdkDragEnd, type: 'start' | 'end' | 'both' = 'start') {\r\n if (['start', 'both'].includes(type)) {\r\n if (this.showStartTooltip()) {\r\n this.startManual.set(false);\r\n this.startVisible.set(false);\r\n }\r\n }\r\n if (['end', 'both'].includes(type)) {\r\n if (this.showEndTooltip()) {\r\n this.endManual.set(false);\r\n this.endVisible.set(false);\r\n }\r\n }\r\n this.starting.set(false);\r\n this.dragEndEmit.emit(drag);\r\n }\r\n\r\n setDrag(distance: number = 0, type: 'start' | 'end' | 'both' = 'both') {\r\n if (typeof this.railRef().nativeElement.getBoundingClientRect !== 'function') return;\r\n let railBox = this.railRef().nativeElement.getBoundingClientRect();\r\n let railBoxLength = this.vertical() ? railBox.height : railBox.width;\r\n let stepLength = railBoxLength / ((this.max() - this.min()) / this.step());\r\n let offset = Math.abs(distance % stepLength);\r\n let dis =\r\n offset < stepLength / 2\r\n ? distance > 0\r\n ? distance - offset\r\n : distance + offset\r\n : distance > 0\r\n ? distance + stepLength - offset\r\n : distance - stepLength + offset;\r\n\r\n const setOffset = (d: number) => {\r\n let x1 = (d / 100) * railBoxLength;\r\n if (this.vertical()) {\r\n x1 += this.reverse() ? dis : -dis;\r\n } else {\r\n x1 += this.reverse() ? -dis : dis;\r\n }\r\n return Math.round((x1 / railBoxLength) * 100);\r\n };\r\n\r\n if (type === 'both') {\r\n this.startOffset.set(setOffset(this.start()!));\r\n this.endOffset.set(setOffset(this.end()!));\r\n } else if (type === 'start') {\r\n this.startOffset.set(setOffset(this.start()!));\r\n } else if (type === 'end') {\r\n this.endOffset.set(setOffset(this.end()!));\r\n }\r\n\r\n this.setDragStyles();\r\n }\r\n\r\n setDragStyles() {\r\n if (this.vertical()) {\r\n if (this.isArray()) {\r\n const wd = Math.abs(this.endOffset() - this.startOffset());\r\n const lt = this.endOffset() > this.startOffset() ? this.startOffset() : this.endOffset();\r\n if (this.reverse()) {\r\n this.renderer.setStyle(this.dragStartRef().nativeElement, 'top', `${this.startOffset()}%`);\r\n this.renderer.setStyle(this.dragEndRef().nativeElement, 'top', `${this.endOffset()}%`);\r\n this.renderer.setStyle(this.processRef().nativeElement, 'top', `${lt}%`);\r\n } else {\r\n this.renderer.setStyle(this.dragStartRef().nativeElement, 'bottom', `${this.startOffset()}%`);\r\n this.renderer.setStyle(this.dragEndRef().nativeElement, 'bottom', `${this.endOffset()}%`);\r\n this.renderer.setStyle(this.processRef().nativeElement, 'bottom', `${lt}%`);\r\n }\r\n this.renderer.setStyle(this.processRef().nativeElement, 'height', `${wd}%`);\r\n } else {\r\n if (this.reverse()) {\r\n this.renderer.removeStyle(this.dragStartRef().nativeElement, 'bottom');\r\n this.renderer.setStyle(this.dragStartRef().nativeElement, 'top', `${this.startOffset()}%`);\r\n } else {\r\n this.renderer.removeStyle(this.dragStartRef().nativeElement, 'top');\r\n this.renderer.setStyle(this.dragStartRef().nativeElement, 'bottom', `${this.startOffset()}%`);\r\n }\r\n this.renderer.setStyle(this.processRef().nativeElement, 'height', `${this.startOffset()}%`);\r\n }\r\n } else {\r\n if (this.isArray()) {\r\n const wd = Math.abs(this.endOffset() - this.startOffset());\r\n const lt = this.endOffset() > this.startOffset() ? this.startOffset() : this.endOffset();\r\n if (this.reverse()) {\r\n this.renderer.setStyle(this.dragStartRef().nativeElement, 'right', `${this.startOffset()}%`);\r\n this.renderer.setStyle(this.dragEndRef().nativeElement, 'right', `${this.endOffset()}%`);\r\n this.renderer.setStyle(this.processRef().nativeElement, 'right', `${lt}%`);\r\n } else {\r\n this.renderer.setStyle(this.dragStartRef().nativeElement, 'left', `${this.startOffset()}%`);\r\n this.renderer.setStyle(this.dragEndRef().nativeElement, 'left', `${this.endOffset()}%`);\r\n this.renderer.setStyle(this.processRef().nativeElement, 'left', `${lt}%`);\r\n }\r\n this.renderer.setStyle(this.processRef().nativeElement, 'width', `${wd}%`);\r\n } else {\r\n if (this.reverse()) {\r\n this.renderer.removeStyle(this.dragStartRef().nativeElement, 'left');\r\n this.renderer.setStyle(this.dragStartRef().nativeElement, 'right', `${this.startOffset()}%`);\r\n } else {\r\n this.renderer.removeStyle(this.dragStartRef().nativeElement, 'right');\r\n this.renderer.setStyle(this.dragStartRef().nativeElement, 'left', `${this.startOffset()}%`);\r\n }\r\n this.renderer.setStyle(this.processRef().nativeElement, 'width', `${this.startOffset()}%`);\r\n }\r\n }\r\n }\r\n}\r\n","<div\r\n #sliderSelect\r\n class=\"x-slider-select\"\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 [class.x-slider-select-reverse]=\"reverse()\"\r\n [class.x-slider-select-range]=\"range()\"\r\n [ngClass]=\"classMap()\"\r\n>\r\n @if (label()) {\r\n <label\r\n [class.x-slider-select-label-required]=\"requiredComputed()\"\r\n [style.width]=\"labelWidth()\"\r\n [ngClass]=\"labelMapSignal()\"\r\n *xOutlet=\"label()\"\r\n >\r\n {{ label() }}\r\n </label>\r\n }\r\n <div class=\"x-slider-select-inner\" #innerRef>\r\n <div class=\"x-slider-select-rail\" #railRef>\r\n <div></div>\r\n </div>\r\n <div class=\"x-slider-select-drags\">\r\n <div class=\"x-slider-select-track\" #trackRef>\r\n <div\r\n #processRef\r\n class=\"x-slider-select-process\"\r\n cdkDrag\r\n [cdkDragLockAxis]=\"vertical() ? 'y' : 'x'\"\r\n [cdkDragDisabled]=\"disabledComputed() || !range()\"\r\n [cdkDragBoundary]=\"trackRef\"\r\n (cdkDragStarted)=\"started($event, 'both')\"\r\n (cdkDragEnded)=\"ended($event, 'both')\"\r\n (cdkDragMoved)=\"moved($event, 'both')\"\r\n ></div>\r\n </div>\r\n <div class=\"x-slider-select-marks\">\r\n @for (mark of markList(); track mark.label) {\r\n <div class=\"x-slider-select-mark\" [ngStyle]=\"mark.style\">\r\n <span class=\"x-slider-select-mark-label\">{{ mark.label }}</span>\r\n </div>\r\n }\r\n </div>\r\n <div\r\n #dragStartRef\r\n class=\"x-slider-select-drag\"\r\n cdkDrag\r\n [cdkDragLockAxis]=\"vertical() ? 'y' : 'x'\"\r\n [cdkDragDisabled]=\"disabledComputed()\"\r\n [cdkDragBoundary]=\"innerRef\"\r\n (cdkDragStarted)=\"started($event, 'start')\"\r\n (cdkDragEnded)=\"ended($event, 'start')\"\r\n (cdkDragMoved)=\"moved($event, 'start')\"\r\n >\r\n <div\r\n #tooltipStart\r\n x-tooltip\r\n tabindex=\"0\"\r\n class=\"x-slider-select-button\"\r\n [class.x-slider-select-button-actived]=\"startVisible()\"\r\n [class.x-slider-select-custom-button]=\"customButton()\"\r\n placement=\"top\"\r\n [disabled]=\"!showTooltip()\"\r\n [content]=\"tooltipStartTpl\"\r\n [(visible)]=\"startVisible\"\r\n [manual]=\"startManual()\"\r\n >\r\n <ng-container *xOutlet=\"customButton()\">{{ customButton() }}</ng-container>\r\n </div>\r\n <ng-template #tooltipStartTpl>\r\n <ng-container *xOutlet=\"tooltipCustom(); context: { $value: startDisplayValue() }\">{{\r\n startDisplayValue()\r\n }}</ng-container>\r\n </ng-template>\r\n </div>\r\n <div\r\n [hidden]=\"!range()\"\r\n #dragEndRef\r\n class=\"x-slider-select-drag\"\r\n cdkDrag\r\n [cdkDragLockAxis]=\"vertical() ? 'y' : 'x'\"\r\n [cdkDragDisabled]=\"disabledComputed()\"\r\n [cdkDragBoundary]=\"innerRef\"\r\n (cdkDragStarted)=\"started($event, 'end')\"\r\n (cdkDragEnded)=\"ended($event, 'end')\"\r\n (cdkDragMoved)=\"moved($event, 'end')\"\r\n >\r\n <div\r\n #tooltipEnd\r\n x-tooltip\r\n tabindex=\"0\"\r\n class=\"x-slider-select-button\"\r\n [class.x-slider-select-button-actived]=\"endVisible()\"\r\n [class.x-slider-select-custom-button]=\"customButton()\"\r\n placement=\"top\"\r\n [disabled]=\"!showTooltip()\"\r\n [content]=\"tooltipEndTpl\"\r\n [(visible)]=\"endVisible\"\r\n [manual]=\"endManual()\"\r\n >\r\n <ng-container *xOutlet=\"customButton()\">{{ customButton() }}</ng-container>\r\n </div>\r\n <ng-template #tooltipEndTpl>\r\n <ng-container *xOutlet=\"tooltipCustom(); context: { $value: endDisplayValue() }\">{{\r\n endDisplayValue()\r\n }}</ng-container>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { XSliderSelectComponent } from './slider-select.component';\r\n\r\n@NgModule({\r\n exports: [XSliderSelectComponent],\r\n imports: [XSliderSelectComponent]\r\n})\r\nexport class XSliderSelectModule {}\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-select.mjs","sources":["../../../../lib/ng-nest/ui/slider-select/slider-select.property.ts","../../../../lib/ng-nest/ui/slider-select/slider-select.component.ts","../../../../lib/ng-nest/ui/slider-select/slider-select.component.html","../../../../lib/ng-nest/ui/slider-select/slider-select.module.ts","../../../../lib/ng-nest/ui/slider-select/ng-nest-ui-slider-select.ts"],"sourcesContent":["import { XToBoolean, XToCssPixelValue, XToNumber } from '@ng-nest/ui/core';\r\nimport { Component, input, output } from '@angular/core';\r\nimport { XFormControlFunction, XFormOption } from '@ng-nest/ui/base-form';\r\nimport type { CdkDragStart, CdkDragMove, CdkDragEnd } from '@angular/cdk/drag-drop';\r\nimport type { XAlign, XBoolean, XDirection, XJustify, XNumber, XTemplate } from '@ng-nest/ui/core';\r\n\r\n/**\r\n * SliderSelect\r\n * @selector x-slider-select\r\n * @decorator component\r\n */\r\nexport const XSliderSelectPrefix = 'x-slider-select';\r\nconst X_SLIDER_SELECT_CONFIG_NAME = 'sliderSelect';\r\n\r\n/**\r\n * SliderSelect Property\r\n */\r\n@Component({ selector: `${XSliderSelectPrefix}-property`, template: '' })\r\nexport class XSliderSelectProperty extends XFormControlFunction(X_SLIDER_SELECT_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 最小值\r\n * @en_US Minimum\r\n */\r\n readonly min = input<number, XNumber>(0, { transform: XToNumber });\r\n /**\r\n * @zh_CN 最大值\r\n * @en_US Max\r\n */\r\n readonly max = input<number, XNumber>(100, { transform: XToNumber });\r\n /**\r\n * @zh_CN 步数\r\n * @en_US Step count\r\n */\r\n readonly step = input<number, XNumber>(1, { transform: XToNumber });\r\n /**\r\n * @zh_CN 精度,默认根据步数来计算\r\n * @en_US Precision, calculated based on the number of steps by default\r\n */\r\n readonly precision = input<number | undefined, XNumber>(undefined, { transform: XToNumber });\r\n /**\r\n * @zh_CN 显示 tooltip 提示\r\n * @en_US Display Tooltip prompts\r\n */\r\n readonly showTooltip = input<boolean, XBoolean>(true, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 反向\r\n * @en_US Reverse\r\n */\r\n readonly reverse = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 垂直\r\n * @en_US Vertical\r\n */\r\n readonly vertical = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 范围\r\n * @en_US Range\r\n */\r\n readonly range = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 自定义滑块\r\n * @en_US Custom button\r\n */\r\n readonly customButton = input<XTemplate>();\r\n /**\r\n * @zh_CN 刻度标记,key 为实际数字,在 [min,max] 内,可通过 style 设置样式\r\n * @en_US Scale marking, key is the actual number, in [min, max], you can set style through style\r\n */\r\n readonly marks = input<XSliderSelectMark[]>([]);\r\n /**\r\n * @zh_CN 自定义 tooltip\r\n * @en_US Custom tooltip\r\n */\r\n readonly tooltipCustom = input<XTemplate>();\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 * @zh_CN 开始拖动的事件\r\n * @en_US Start drag event\r\n */\r\n readonly dragStartEmit = output<CdkDragStart>();\r\n /**\r\n * @zh_CN 按住移动中的事件\r\n * @en_US Hold down the moving event\r\n */\r\n readonly dragMoveEmit = output<CdkDragMove>();\r\n /**\r\n * @zh_CN 移动结束的事件\r\n * @en_US Mobile end event\r\n */\r\n readonly dragEndEmit = output<CdkDragEnd>();\r\n}\r\n\r\n/**\r\n * SliderSelect Option\r\n */\r\nexport interface XSliderSelectOption extends XFormOption {\r\n /**\r\n * @zh_CN 最小值\r\n * @en_US Minimum\r\n */\r\n min?: number;\r\n /**\r\n * @zh_CN 最大值\r\n * @en_US Max\r\n */\r\n max?: number;\r\n /**\r\n * @zh_CN 步数\r\n * @en_US Step count\r\n */\r\n step?: number;\r\n /**\r\n * @zh_CN 精度,默认根据步数来计算\r\n * @en_US Precision, calculated based on the number of steps by default\r\n */\r\n precision?: number;\r\n /**\r\n * @zh_CN 显示 tooltip 提示\r\n * @en_US Display Tooltip prompts\r\n */\r\n showTooltip?: boolean;\r\n /**\r\n * @zh_CN 反向\r\n * @en_US Reverse\r\n */\r\n reverse?: boolean;\r\n /**\r\n * @zh_CN 垂直\r\n * @en_US Vertical\r\n */\r\n vertical?: boolean;\r\n /**\r\n * @zh_CN 范围\r\n * @en_US Range\r\n */\r\n range?: boolean;\r\n /**\r\n * @zh_CN 自定义滑块\r\n * @en_US Custom button\r\n */\r\n customButton?: XTemplate;\r\n /**\r\n * @zh_CN 刻度标记,key 为实际数字,在 [min,max] 内,可通过 style 设置样式\r\n * @en_US Scale marking, key is the actual number, in [min, max], you can set style through style\r\n */\r\n marks?: XSliderSelectMark[];\r\n /**\r\n * @zh_CN 自定义 tooltip\r\n * @en_US Custom tooltip\r\n */\r\n tooltipCustom?: XTemplate;\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 * @zh_CN 开始拖动的事件\r\n * @en_US Start drag event\r\n */\r\n dragStartEmit?: (start: CdkDragStart) => void;\r\n /**\r\n * @zh_CN 按住移动中的事件\r\n * @en_US Hold down the moving event\r\n */\r\n dragMoveEmit?: (move: CdkDragMove) => void;\r\n /**\r\n * @zh_CN 移动结束的事件\r\n * @en_US Mobile end event\r\n */\r\n dragEndEmit?: (end: CdkDragEnd) => void;\r\n}\r\n\r\n/**\r\n * @zh_CN 刻度标记\r\n * @en_US Scale marking\r\n */\r\nexport interface XSliderSelectMark {\r\n /**\r\n * @zh_CN 数值\r\n * @en_US Value\r\n */\r\n value: number;\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 style\r\n */\r\n style?: { [style: string]: any };\r\n /**\r\n * @zh_CN 实际偏移量(自动计算)\r\n * @en_US Offset. automatic calculation\r\n */\r\n offset?: number;\r\n}\r\n","import { XTooltipDirective } from '@ng-nest/ui/tooltip';\r\nimport {\r\n Component,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Renderer2,\r\n ElementRef,\r\n OnDestroy,\r\n AfterViewInit,\r\n HostBinding,\r\n inject,\r\n signal,\r\n viewChild,\r\n viewChildren,\r\n computed\r\n} from '@angular/core';\r\nimport { XSliderSelectProperty, XSliderSelectPrefix, XSliderSelectMark } from './slider-select.property';\r\nimport { XIsEmpty, XIsUndefined, XResize, XResizeObserver, XIsNumber, XIsArray, XIsNull } from '@ng-nest/ui/core';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { Subject } from 'rxjs';\r\nimport { debounceTime, takeUntil } from 'rxjs/operators';\r\nimport { XValueAccessor } from '@ng-nest/ui/base-form';\r\nimport { NgClass, NgStyle } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { XOutletDirective } from '@ng-nest/ui/outlet';\r\nimport type { CdkDragMove, CdkDragStart, CdkDragEnd } from '@angular/cdk/drag-drop';\r\n\r\n@Component({\r\n selector: `${XSliderSelectPrefix}`,\r\n imports: [NgClass, NgStyle, FormsModule, ReactiveFormsModule, DragDropModule, XTooltipDirective, XOutletDirective],\r\n templateUrl: './slider-select.component.html',\r\n styleUrls: ['./slider-select.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [XValueAccessor(XSliderSelectComponent)]\r\n})\r\nexport class XSliderSelectComponent extends XSliderSelectProperty implements OnDestroy, AfterViewInit {\r\n sliderSelect = viewChild.required<ElementRef<HTMLElement>>('sliderSelect');\r\n dragStartRef = viewChild.required<ElementRef<HTMLElement>>('dragStartRef');\r\n dragEndRef = viewChild.required<ElementRef<HTMLElement>>('dragEndRef');\r\n railRef = viewChild.required<ElementRef<HTMLElement>>('railRef');\r\n processRef = viewChild.required<ElementRef<HTMLElement>>('processRef');\r\n @HostBinding('class.x-slider-select-vertical') get getVertical() {\r\n return this.vertical();\r\n }\r\n tooltips = viewChildren(XTooltipDirective);\r\n tooltipStart = computed(() => {\r\n if (this.tooltips().length > 0) {\r\n return this.tooltips()![0];\r\n }\r\n return null;\r\n });\r\n tooltipEnd = computed(() => {\r\n if (this.tooltips().length > 1) {\r\n return this.tooltips()![1];\r\n }\r\n return null;\r\n });\r\n\r\n starting = signal(false);\r\n\r\n startOffset = signal(0);\r\n startVisible = signal(false);\r\n startManual = signal(false);\r\n start = signal<number | null>(null);\r\n startDisplayValue = signal('0');\r\n showStartTooltip = signal(true);\r\n\r\n endOffset = signal(0);\r\n endVisible = signal(false);\r\n endManual = signal(false);\r\n end = signal<number | null>(null);\r\n endDisplayValue = signal('0');\r\n showEndTooltip = signal(true);\r\n\r\n markList = computed(() => {\r\n if (!this.marks()) return [];\r\n const marks: XSliderSelectMark[] = [];\r\n for (let mark of this.marks()) {\r\n const mk: XSliderSelectMark = {\r\n value: mark.value,\r\n label: mark.label,\r\n style: { ...mark.style }\r\n };\r\n mk.offset = this.getOffset(mark.value);\r\n\r\n if (this.reverse()) {\r\n if (this.vertical()) {\r\n mk.style!['top'] = `${mk.offset}%`;\r\n } else {\r\n mk.style!['right'] = `${mk.offset}%`;\r\n }\r\n } else {\r\n if (this.vertical()) {\r\n mk.style!['bottom'] = `${mk.offset}%`;\r\n } else {\r\n mk.style!['left'] = `${mk.offset}%`;\r\n }\r\n }\r\n marks.push(mk);\r\n }\r\n return marks;\r\n });\r\n\r\n private unSubject = new Subject<void>();\r\n private resizeObserver!: XResizeObserver;\r\n isNumber = computed(() => XIsNumber(this.value()) && !XIsArray(this.value()));\r\n isArray = computed(() => XIsArray(this.value()));\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 precisionSignal = computed(() => {\r\n const precision = this.precision();\r\n if (XIsUndefined(precision) || !XIsEmpty(this.step())) {\r\n let stepStr = String(this.step());\r\n let indexpoint = stepStr.indexOf('.');\r\n if (indexpoint === -1) {\r\n return 0;\r\n } else {\r\n return stepStr.length - (indexpoint + 1);\r\n }\r\n }\r\n return precision;\r\n });\r\n\r\n override requiredIsEmpty = computed(\r\n () => this.validatorComputed() && this.requiredComputed() && (XIsEmpty(this.value()) || this.value() === 0)\r\n );\r\n\r\n override writeValue(value: number | number[]) {\r\n if (this.starting()) return;\r\n if (XIsNull(value) || XIsUndefined(value)) {\r\n if (this.range()) {\r\n value = [this.min(), this.min()];\r\n } else {\r\n value = this.min();\r\n }\r\n }\r\n this.value.set(value);\r\n this.setLeft();\r\n this.setDisplayValue();\r\n }\r\n\r\n private renderer = inject(Renderer2);\r\n override cdr = inject(ChangeDetectorRef);\r\n elementRef = inject(ElementRef);\r\n\r\n ngAfterViewInit() {\r\n XResize(this.sliderSelect().nativeElement)\r\n .pipe(debounceTime(30), takeUntil(this.unSubject))\r\n .subscribe((x) => {\r\n this.resizeObserver = x.resizeObserver;\r\n this.setLeft();\r\n this.setDisplayValue();\r\n });\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 }\r\n\r\n change() {\r\n const getVal = (offset: number) => {\r\n return parseFloat(\r\n Number(((this.max() - this.min()) * offset) / 100 + this.min()).toFixed(this.precisionSignal())\r\n );\r\n };\r\n const startVal = getVal(this.startOffset());\r\n if (this.isNumber()) {\r\n this.value.set(startVal);\r\n } else {\r\n const endVal = getVal(this.endOffset());\r\n if (endVal < startVal) {\r\n this.value.set([endVal, startVal]);\r\n } else {\r\n this.value.set([startVal, endVal]);\r\n }\r\n }\r\n\r\n this.setDisplayValue();\r\n if (this.onChange) this.onChange(this.value());\r\n }\r\n\r\n getOffset(val: number) {\r\n return Math.abs(\r\n Math.round(((val + (this.reverse() ? -this.min() : this.min())) * 100) / (this.max() - this.min()))\r\n );\r\n }\r\n\r\n setLeft() {\r\n let startVal = 0,\r\n endVal = 0;\r\n const value = this.value();\r\n if (this.isNumber()) {\r\n startVal = value as number;\r\n } else if (XIsArray(value) && value.length > 1) {\r\n startVal = value[0] as number;\r\n endVal = value[1] as number;\r\n this.endOffset.set(this.getOffset(endVal));\r\n this.end.set(this.endOffset());\r\n }\r\n\r\n this.startOffset.set(this.getOffset(startVal));\r\n this.start.set(this.startOffset());\r\n\r\n this.setDrag();\r\n }\r\n\r\n setDisplayValue() {\r\n const displayVal = (val: number) => {\r\n return Number(val).toFixed(this.precisionSignal());\r\n };\r\n const value = this.value();\r\n if (this.isNumber()) {\r\n this.startDisplayValue.set(displayVal(value as number));\r\n } else {\r\n if (XIsArray(value) && value.length > 1) {\r\n if (this.startOffset() > this.endOffset()) {\r\n this.startDisplayValue.set(displayVal(value[1] as number));\r\n this.endDisplayValue.set(displayVal(value[0] as number));\r\n } else {\r\n this.startDisplayValue.set(displayVal(value[0] as number));\r\n this.endDisplayValue.set(displayVal(value[1] as number));\r\n }\r\n }\r\n }\r\n }\r\n\r\n started(drag: CdkDragStart, type: 'start' | 'end' | 'both' = 'start') {\r\n this.starting.set(true);\r\n if (['start', 'both'].includes(type)) {\r\n const start = this.startOffset();\r\n this.start.set(start);\r\n if (this.showStartTooltip()) {\r\n this.startManual.set(true);\r\n this.startVisible.set(true);\r\n }\r\n }\r\n if (['end', 'both'].includes(type)) {\r\n const end = this.endOffset();\r\n this.end.set(end);\r\n if (this.showEndTooltip()) {\r\n this.endManual.set(true);\r\n this.endVisible.set(true);\r\n }\r\n }\r\n this.formControlValidator();\r\n this.dragStartEmit.emit(drag);\r\n }\r\n\r\n moved(drag: CdkDragMove, type: 'start' | 'end' | 'both' = 'start') {\r\n let transform = drag.source.getFreeDragPosition();\r\n this.setDrag(this.vertical() ? transform.y : transform.x, type);\r\n drag.source.reset();\r\n if (['start', 'both'].includes(type) && this.showStartTooltip()) {\r\n this.tooltipStart()?.updatePortal();\r\n }\r\n if (['end', 'both'].includes(type) && this.showEndTooltip()) {\r\n this.tooltipEnd()?.updatePortal();\r\n }\r\n this.change();\r\n this.dragMoveEmit.emit(drag);\r\n }\r\n\r\n ended(drag: CdkDragEnd, type: 'start' | 'end' | 'both' = 'start') {\r\n if (['start', 'both'].includes(type)) {\r\n if (this.showStartTooltip()) {\r\n this.startManual.set(false);\r\n this.startVisible.set(false);\r\n }\r\n }\r\n if (['end', 'both'].includes(type)) {\r\n if (this.showEndTooltip()) {\r\n this.endManual.set(false);\r\n this.endVisible.set(false);\r\n }\r\n }\r\n this.starting.set(false);\r\n this.dragEndEmit.emit(drag);\r\n }\r\n\r\n setDrag(distance: number = 0, type: 'start' | 'end' | 'both' = 'both') {\r\n if (typeof this.railRef().nativeElement.getBoundingClientRect !== 'function') return;\r\n let railBox = this.railRef().nativeElement.getBoundingClientRect();\r\n let railBoxLength = this.vertical() ? railBox.height : railBox.width;\r\n let stepLength = railBoxLength / ((this.max() - this.min()) / this.step());\r\n let offset = Math.abs(distance % stepLength);\r\n let dis =\r\n offset < stepLength / 2\r\n ? distance > 0\r\n ? distance - offset\r\n : distance + offset\r\n : distance > 0\r\n ? distance + stepLength - offset\r\n : distance - stepLength + offset;\r\n\r\n const setOffset = (d: number) => {\r\n let x1 = (d / 100) * railBoxLength;\r\n if (this.vertical()) {\r\n x1 += this.reverse() ? dis : -dis;\r\n } else {\r\n x1 += this.reverse() ? -dis : dis;\r\n }\r\n return Math.round((x1 / railBoxLength) * 100);\r\n };\r\n\r\n if (type === 'both') {\r\n this.startOffset.set(setOffset(this.start()!));\r\n this.endOffset.set(setOffset(this.end()!));\r\n } else if (type === 'start') {\r\n this.startOffset.set(setOffset(this.start()!));\r\n } else if (type === 'end') {\r\n this.endOffset.set(setOffset(this.end()!));\r\n }\r\n\r\n this.setDragStyles();\r\n }\r\n\r\n setDragStyles() {\r\n if (this.vertical()) {\r\n if (this.isArray()) {\r\n const wd = Math.abs(this.endOffset() - this.startOffset());\r\n const lt = this.endOffset() > this.startOffset() ? this.startOffset() : this.endOffset();\r\n if (this.reverse()) {\r\n this.renderer.setStyle(this.dragStartRef().nativeElement, 'top', `${this.startOffset()}%`);\r\n this.renderer.setStyle(this.dragEndRef().nativeElement, 'top', `${this.endOffset()}%`);\r\n this.renderer.setStyle(this.processRef().nativeElement, 'top', `${lt}%`);\r\n } else {\r\n this.renderer.setStyle(this.dragStartRef().nativeElement, 'bottom', `${this.startOffset()}%`);\r\n this.renderer.setStyle(this.dragEndRef().nativeElement, 'bottom', `${this.endOffset()}%`);\r\n this.renderer.setStyle(this.processRef().nativeElement, 'bottom', `${lt}%`);\r\n }\r\n this.renderer.setStyle(this.processRef().nativeElement, 'height', `${wd}%`);\r\n } else {\r\n if (this.reverse()) {\r\n this.renderer.removeStyle(this.dragStartRef().nativeElement, 'bottom');\r\n this.renderer.setStyle(this.dragStartRef().nativeElement, 'top', `${this.startOffset()}%`);\r\n } else {\r\n this.renderer.removeStyle(this.dragStartRef().nativeElement, 'top');\r\n this.renderer.setStyle(this.dragStartRef().nativeElement, 'bottom', `${this.startOffset()}%`);\r\n }\r\n this.renderer.setStyle(this.processRef().nativeElement, 'height', `${this.startOffset()}%`);\r\n }\r\n } else {\r\n if (this.isArray()) {\r\n const wd = Math.abs(this.endOffset() - this.startOffset());\r\n const lt = this.endOffset() > this.startOffset() ? this.startOffset() : this.endOffset();\r\n if (this.reverse()) {\r\n this.renderer.setStyle(this.dragStartRef().nativeElement, 'right', `${this.startOffset()}%`);\r\n this.renderer.setStyle(this.dragEndRef().nativeElement, 'right', `${this.endOffset()}%`);\r\n this.renderer.setStyle(this.processRef().nativeElement, 'right', `${lt}%`);\r\n } else {\r\n this.renderer.setStyle(this.dragStartRef().nativeElement, 'left', `${this.startOffset()}%`);\r\n this.renderer.setStyle(this.dragEndRef().nativeElement, 'left', `${this.endOffset()}%`);\r\n this.renderer.setStyle(this.processRef().nativeElement, 'left', `${lt}%`);\r\n }\r\n this.renderer.setStyle(this.processRef().nativeElement, 'width', `${wd}%`);\r\n } else {\r\n if (this.reverse()) {\r\n this.renderer.removeStyle(this.dragStartRef().nativeElement, 'left');\r\n this.renderer.setStyle(this.dragStartRef().nativeElement, 'right', `${this.startOffset()}%`);\r\n } else {\r\n this.renderer.removeStyle(this.dragStartRef().nativeElement, 'right');\r\n this.renderer.setStyle(this.dragStartRef().nativeElement, 'left', `${this.startOffset()}%`);\r\n }\r\n this.renderer.setStyle(this.processRef().nativeElement, 'width', `${this.startOffset()}%`);\r\n }\r\n }\r\n }\r\n}\r\n","<div\r\n #sliderSelect\r\n class=\"x-slider-select\"\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 [class.x-slider-select-reverse]=\"reverse()\"\r\n [class.x-slider-select-range]=\"range()\"\r\n [ngClass]=\"classMap()\"\r\n>\r\n @if (label()) {\r\n <label\r\n [class.x-slider-select-label-required]=\"requiredComputed()\"\r\n [style.width]=\"labelWidth()\"\r\n [ngClass]=\"labelMapSignal()\"\r\n *xOutlet=\"label()\"\r\n >\r\n {{ label() }}\r\n </label>\r\n }\r\n <div class=\"x-slider-select-inner\" #innerRef>\r\n <div class=\"x-slider-select-rail\" #railRef>\r\n <div></div>\r\n </div>\r\n <div class=\"x-slider-select-drags\">\r\n <div class=\"x-slider-select-track\" #trackRef>\r\n <div\r\n #processRef\r\n class=\"x-slider-select-process\"\r\n cdkDrag\r\n [cdkDragLockAxis]=\"vertical() ? 'y' : 'x'\"\r\n [cdkDragDisabled]=\"disabledComputed() || !range()\"\r\n [cdkDragBoundary]=\"trackRef\"\r\n (cdkDragStarted)=\"started($event, 'both')\"\r\n (cdkDragEnded)=\"ended($event, 'both')\"\r\n (cdkDragMoved)=\"moved($event, 'both')\"\r\n ></div>\r\n </div>\r\n <div class=\"x-slider-select-marks\">\r\n @for (mark of markList(); track mark.label) {\r\n <div class=\"x-slider-select-mark\" [ngStyle]=\"mark.style\">\r\n <span class=\"x-slider-select-mark-label\">{{ mark.label }}</span>\r\n </div>\r\n }\r\n </div>\r\n <div\r\n #dragStartRef\r\n class=\"x-slider-select-drag\"\r\n cdkDrag\r\n [cdkDragLockAxis]=\"vertical() ? 'y' : 'x'\"\r\n [cdkDragDisabled]=\"disabledComputed()\"\r\n [cdkDragBoundary]=\"innerRef\"\r\n (cdkDragStarted)=\"started($event, 'start')\"\r\n (cdkDragEnded)=\"ended($event, 'start')\"\r\n (cdkDragMoved)=\"moved($event, 'start')\"\r\n >\r\n <div\r\n #tooltipStart\r\n x-tooltip\r\n tabindex=\"0\"\r\n class=\"x-slider-select-button\"\r\n [class.x-slider-select-button-actived]=\"startVisible()\"\r\n [class.x-slider-select-custom-button]=\"customButton()\"\r\n placement=\"top\"\r\n [disabled]=\"!showTooltip()\"\r\n [content]=\"tooltipStartTpl\"\r\n [(visible)]=\"startVisible\"\r\n [manual]=\"startManual()\"\r\n >\r\n <ng-container *xOutlet=\"customButton()\">{{ customButton() }}</ng-container>\r\n </div>\r\n <ng-template #tooltipStartTpl>\r\n <ng-container *xOutlet=\"tooltipCustom(); context: { $value: startDisplayValue() }\">{{\r\n startDisplayValue()\r\n }}</ng-container>\r\n </ng-template>\r\n </div>\r\n <div\r\n [hidden]=\"!range()\"\r\n #dragEndRef\r\n class=\"x-slider-select-drag\"\r\n cdkDrag\r\n [cdkDragLockAxis]=\"vertical() ? 'y' : 'x'\"\r\n [cdkDragDisabled]=\"disabledComputed()\"\r\n [cdkDragBoundary]=\"innerRef\"\r\n (cdkDragStarted)=\"started($event, 'end')\"\r\n (cdkDragEnded)=\"ended($event, 'end')\"\r\n (cdkDragMoved)=\"moved($event, 'end')\"\r\n >\r\n <div\r\n #tooltipEnd\r\n x-tooltip\r\n tabindex=\"0\"\r\n class=\"x-slider-select-button\"\r\n [class.x-slider-select-button-actived]=\"endVisible()\"\r\n [class.x-slider-select-custom-button]=\"customButton()\"\r\n placement=\"top\"\r\n [disabled]=\"!showTooltip()\"\r\n [content]=\"tooltipEndTpl\"\r\n [(visible)]=\"endVisible\"\r\n [manual]=\"endManual()\"\r\n >\r\n <ng-container *xOutlet=\"customButton()\">{{ customButton() }}</ng-container>\r\n </div>\r\n <ng-template #tooltipEndTpl>\r\n <ng-container *xOutlet=\"tooltipCustom(); context: { $value: endDisplayValue() }\">{{\r\n endDisplayValue()\r\n }}</ng-container>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { XSliderSelectComponent } from './slider-select.component';\r\n\r\n@NgModule({\r\n exports: [XSliderSelectComponent],\r\n imports: [XSliderSelectComponent]\r\n})\r\nexport class XSliderSelectModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -350,11 +350,11 @@ class XWatermarkComponent extends XWatermarkProperty {
350
350
  this.backgroundImage.set(dataUrl);
351
351
  }
352
352
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: XWatermarkComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
353
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.1", type: XWatermarkComponent, isStandalone: true, selector: "x-watermark", usesInheritance: true, ngImport: i0, template: "<div\n class=\"x-watermark\"\n [class.x-watermark-disabled]=\"disabled()\"\n [style.z-index]=\"zIndex()\"\n [style.background-image]=\"backgroundImage() ? 'url(' + backgroundImage() + ')' : 'none'\"\n [style.background-repeat]=\"'repeat'\"\n [style.background-size]=\"watermarkWidth() + 'px ' + watermarkHeight() + 'px'\"\n [style.background-position]=\"offsetLeft() + 'px ' + offsetTop() + 'px'\"\n>\n <ng-content></ng-content>\n</div>", styles: [".x-watermark{margin:0;padding:0}.x-watermark{font-size:var(--x-font-size);display:inline-block;box-sizing:border-box;position:relative}.x-watermark-disabled{pointer-events:none;-webkit-user-select:none;user-select:none}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
353
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.1", type: XWatermarkComponent, isStandalone: true, selector: "x-watermark", usesInheritance: true, ngImport: i0, template: "<div\r\n class=\"x-watermark\"\r\n [class.x-watermark-disabled]=\"disabled()\"\r\n [style.z-index]=\"zIndex()\"\r\n [style.background-image]=\"backgroundImage() ? 'url(' + backgroundImage() + ')' : 'none'\"\r\n [style.background-repeat]=\"'repeat'\"\r\n [style.background-size]=\"watermarkWidth() + 'px ' + watermarkHeight() + 'px'\"\r\n [style.background-position]=\"offsetLeft() + 'px ' + offsetTop() + 'px'\"\r\n>\r\n <ng-content></ng-content>\r\n</div>", styles: [".x-watermark{margin:0;padding:0}.x-watermark{font-size:var(--x-font-size);display:inline-block;box-sizing:border-box;position:relative}.x-watermark-disabled{pointer-events:none;-webkit-user-select:none;user-select:none}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
354
354
  }
355
355
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: XWatermarkComponent, decorators: [{
356
356
  type: Component,
357
- args: [{ selector: XWatermarkPrefix, imports: [], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"x-watermark\"\n [class.x-watermark-disabled]=\"disabled()\"\n [style.z-index]=\"zIndex()\"\n [style.background-image]=\"backgroundImage() ? 'url(' + backgroundImage() + ')' : 'none'\"\n [style.background-repeat]=\"'repeat'\"\n [style.background-size]=\"watermarkWidth() + 'px ' + watermarkHeight() + 'px'\"\n [style.background-position]=\"offsetLeft() + 'px ' + offsetTop() + 'px'\"\n>\n <ng-content></ng-content>\n</div>", styles: [".x-watermark{margin:0;padding:0}.x-watermark{font-size:var(--x-font-size);display:inline-block;box-sizing:border-box;position:relative}.x-watermark-disabled{pointer-events:none;-webkit-user-select:none;user-select:none}\n"] }]
357
+ args: [{ selector: XWatermarkPrefix, imports: [], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\r\n class=\"x-watermark\"\r\n [class.x-watermark-disabled]=\"disabled()\"\r\n [style.z-index]=\"zIndex()\"\r\n [style.background-image]=\"backgroundImage() ? 'url(' + backgroundImage() + ')' : 'none'\"\r\n [style.background-repeat]=\"'repeat'\"\r\n [style.background-size]=\"watermarkWidth() + 'px ' + watermarkHeight() + 'px'\"\r\n [style.background-position]=\"offsetLeft() + 'px ' + offsetTop() + 'px'\"\r\n>\r\n <ng-content></ng-content>\r\n</div>", styles: [".x-watermark{margin:0;padding:0}.x-watermark{font-size:var(--x-font-size);display:inline-block;box-sizing:border-box;position:relative}.x-watermark-disabled{pointer-events:none;-webkit-user-select:none;user-select:none}\n"] }]
358
358
  }], ctorParameters: () => [] });
359
359
 
360
360
  class XWatermarkModule {
@@ -1 +1 @@
1
- {"version":3,"file":"ng-nest-ui-watermark.mjs","sources":["../../../../lib/ng-nest/ui/watermark/watermark.property.ts","../../../../lib/ng-nest/ui/watermark/watermark.component.ts","../../../../lib/ng-nest/ui/watermark/watermark.component.html","../../../../lib/ng-nest/ui/watermark/watermark.module.ts","../../../../lib/ng-nest/ui/watermark/ng-nest-ui-watermark.ts"],"sourcesContent":["import { Component, input } from '@angular/core';\r\nimport { XToNumber, XToBoolean, XPropertyFunction } from '@ng-nest/ui/core';\r\nimport type { XNumber, XBoolean } from '@ng-nest/ui/core';\r\n\r\n/**\r\n * Watermark\r\n * @selector x-watermark\r\n * @decorator component\r\n */\r\nexport const XWatermarkPrefix = 'x-watermark';\r\nconst X_WATERMARK_CONFIG_NAME = 'watermark';\r\n\r\n/**\r\n * Watermark Property\r\n */\r\n@Component({ selector: `${XWatermarkPrefix}-property`, template: '' })\r\nexport class XWatermarkProperty extends XPropertyFunction(X_WATERMARK_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 水印内容\r\n * @en_US Watermark content\r\n * @example\r\n *\r\n * ```html\r\n * <x-watermark content=\"NG-NEST\"></x-watermark>\r\n * ```\r\n *\r\n */\r\n readonly content = input<string>('');\r\n /**\r\n * @zh_CN 水印宽度\r\n * @en_US Watermark width\r\n * @example\r\n *\r\n * ```html\r\n * <x-watermark [width]=\"120\"></x-watermark>\r\n * ```\r\n *\r\n */\r\n readonly width = input<number, XNumber>(this.config?.width ?? 120, { transform: XToNumber });\r\n /**\r\n * @zh_CN 水印高度\r\n * @en_US Watermark height\r\n * @example\r\n *\r\n * ```html\r\n * <x-watermark [height]=\"60\"></x-watermark>\r\n * ```\r\n *\r\n */\r\n readonly height = input<number, XNumber>(this.config?.height ?? 60, { transform: XToNumber });\r\n /**\r\n * @zh_CN 旋转角度\r\n * @en_US Rotation angle\r\n * @example\r\n *\r\n * ```html\r\n * <x-watermark [rotate]=\"-22\"></x-watermark>\r\n * <x-watermark [rotate]=\"0\"></x-watermark>\r\n * ```\r\n *\r\n */\r\n readonly rotate = input<number, XNumber>(this.config?.rotate ?? -22, { transform: XToNumber });\r\n /**\r\n * @zh_CN 字体大小\r\n * @en_US Font size\r\n * @example\r\n *\r\n * ```html\r\n * <x-watermark [fontSize]=\"14\"></x-watermark>\r\n * ```\r\n *\r\n */\r\n readonly fontSize = input<number, XNumber>(this.config?.fontSize ?? 14, { transform: XToNumber });\r\n /**\r\n * @zh_CN 字体\r\n * @en_US Font family\r\n * @example\r\n *\r\n * ```html\r\n * <x-watermark fontFamily=\"Varela Round\"></x-watermark>\r\n * ```\r\n *\r\n */\r\n readonly fontFamily = input<string>(this.config?.fontFamily ?? 'Varela Round');\r\n /**\r\n * @zh_CN 字体颜色\r\n * @en_US Font color\r\n * @example\r\n *\r\n * ```html\r\n * <x-watermark color=\"rgba(0, 0, 0, 0.12)\"></x-watermark>\r\n * ```\r\n *\r\n */\r\n readonly color = input<string>(this.config?.color ?? 'rgba(0, 0, 0, 0.12)');\r\n /**\r\n * @zh_CN 层级\r\n * @en_US Z-index\r\n * @example\r\n *\r\n * ```html\r\n * <x-watermark [zIndex]=\"9999\"></x-watermark>\r\n * ```\r\n *\r\n */\r\n readonly zIndex = input<number, XNumber>(this.config?.zIndex ?? 9999, { transform: XToNumber });\r\n /**\r\n * @zh_CN 透明度\r\n * @en_US Opacity\r\n * @example\r\n *\r\n * ```html\r\n * <x-watermark [alpha]=\"1\"></x-watermark>\r\n * <x-watermark [alpha]=\"0.5\"></x-watermark>\r\n * ```\r\n *\r\n */\r\n readonly alpha = input<number, XNumber>(this.config?.alpha ?? 1, { transform: XToNumber });\r\n /**\r\n * @zh_CN 水平间距\r\n * @en_US Horizontal gap\r\n * @example\r\n *\r\n * ```html\r\n * <x-watermark [gapX]=\"100\"></x-watermark>\r\n * ```\r\n *\r\n */\r\n readonly gapX = input<number, XNumber>(this.config?.gapX ?? 100, { transform: XToNumber });\r\n /**\r\n * @zh_CN 垂直间距\r\n * @en_US Vertical gap\r\n * @example\r\n *\r\n * ```html\r\n * <x-watermark [gapY]=\"100\"></x-watermark>\r\n * ```\r\n *\r\n */\r\n readonly gapY = input<number, XNumber>(this.config?.gapY ?? 100, { transform: XToNumber });\r\n /**\r\n * @zh_CN 水平偏移\r\n * @en_US Horizontal offset\r\n * @example\r\n *\r\n * ```html\r\n * <x-watermark [offsetLeft]=\"0\"></x-watermark>\r\n * ```\r\n *\r\n */\r\n readonly offsetLeft = input<number, XNumber>(this.config?.offsetLeft ?? 0, { transform: XToNumber });\r\n /**\r\n * @zh_CN 垂直偏移\r\n * @en_US Vertical offset\r\n * @example\r\n *\r\n * ```html\r\n * <x-watermark [offsetTop]=\"0\"></x-watermark>\r\n * ```\r\n *\r\n */\r\n readonly offsetTop = input<number, XNumber>(this.config?.offsetTop ?? 0, { transform: XToNumber });\r\n /**\r\n * @zh_CN 是否交错显示\r\n * @en_US Whether to stagger display\r\n * @example\r\n *\r\n * ```html\r\n * <x-watermark [striped]=\"true\"></x-watermark>\r\n * <x-watermark [striped]=\"false\"></x-watermark>\r\n * ```\r\n *\r\n */\r\n readonly striped = input<boolean, XBoolean>(this.config?.striped ?? false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 是否禁用\r\n * @en_US Whether to disable\r\n * @example\r\n *\r\n * ```html\r\n * <x-watermark [disabled]=\"true\"></x-watermark>\r\n * <x-watermark [disabled]=\"false\"></x-watermark>\r\n * ```\r\n *\r\n */\r\n readonly disabled = input<boolean, XBoolean>(this.config?.disabled ?? false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 图片/图标 URL\r\n * @en_US Image/icon URL\r\n * @example\r\n *\r\n * ```html\r\n * <x-watermark imageSrc=\"/assets/logo.png\"></x-watermark>\r\n * ```\r\n *\r\n */\r\n readonly imageSrc = input<string>('');\r\n /**\r\n * @zh_CN 图片宽度\r\n * @en_US Image width\r\n * @example\r\n *\r\n * ```html\r\n * <x-watermark [imageWidth]=\"40\"></x-watermark>\r\n * ```\r\n *\r\n */\r\n readonly imageWidth = input<number, XNumber>(0, { transform: XToNumber });\r\n /**\r\n * @zh_CN 图片高度\r\n * @en_US Image height\r\n * @example\r\n *\r\n * ```html\r\n * <x-watermark [imageHeight]=\"40\"></x-watermark>\r\n * ```\r\n *\r\n */\r\n readonly imageHeight = input<number, XNumber>(0, { transform: XToNumber });\r\n /**\r\n * @zh_CN 图片相对文本的位置\r\n * @en_US Image position relative to text\r\n * @example\r\n *\r\n * ```html\r\n * <x-watermark imagePosition=\"top\"></x-watermark>\r\n * <x-watermark imagePosition=\"center\"></x-watermark>\r\n * <x-watermark imagePosition=\"bottom\"></x-watermark>\r\n * ```\r\n *\r\n */\r\n readonly imagePosition = input<XWatermarkImagePosition>('center');\r\n}\r\n\r\n/**\r\n * @zh_CN 图片相对文本的位置\r\n * @en_US Image position relative to text\r\n */\r\nexport type XWatermarkImagePosition = 'top' | 'center' | 'bottom';\r\n","import {\n Component,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n computed,\n signal,\n AfterViewInit,\n OnDestroy\n} from '@angular/core';\nimport { XWatermarkProperty, XWatermarkPrefix } from './watermark.property';\n\n@Component({\n selector: XWatermarkPrefix,\n imports: [],\n templateUrl: './watermark.component.html',\n styleUrls: ['./watermark.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class XWatermarkComponent extends XWatermarkProperty implements AfterViewInit, OnDestroy {\n backgroundImage = signal<string>('');\n\n private font = computed(() => {\n return `${this.fontSize()}px ${this.fontFamily()}`;\n });\n\n private textWidth = computed(() => {\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n if (ctx) {\n ctx.font = this.font();\n return ctx.measureText(this.content()).width;\n }\n return this.width();\n });\n\n watermarkWidth = computed(() => {\n const imgW = this.imageSrc() && this.imageWidth() ? this.imageWidth() : this.textWidth();\n return Math.max(imgW, this.textWidth()) + this.gapX();\n });\n \n watermarkHeight = computed(() => {\n const imgH = this.imageSrc() && this.imageHeight() ? this.imageHeight() : this.height();\n return Math.max(imgH, this.height()) + this.gapY();\n });\n\n constructor() {\n super();\n }\n\n ngAfterViewInit() {\n this.createWatermark();\n }\n\n ngOnDestroy() {}\n\n private createWatermark() {\n if (this.imageSrc()) {\n this.drawWatermarkWithImage();\n } else {\n this.drawWatermarkText();\n }\n }\n\n private loadImage(src: string): Promise<HTMLImageElement> {\n return new Promise((resolve, reject) => {\n const img = new Image();\n img.crossOrigin = 'anonymous';\n img.onload = () => resolve(img);\n img.onerror = reject;\n img.src = src;\n });\n }\n\n private async drawWatermarkWithImage() {\n const w = this.watermarkWidth();\n const h = this.watermarkHeight();\n const canvas = document.createElement('canvas');\n canvas.width = w;\n canvas.height = h;\n const ctx = canvas.getContext('2d');\n if (!ctx) return;\n\n try {\n const img = await this.loadImage(this.imageSrc());\n const imgW = this.imageWidth() || this.width();\n const imgH = this.imageHeight() || this.height();\n \n ctx.save();\n ctx.rotate((this.rotate() * Math.PI) / 180);\n ctx.globalAlpha = this.alpha();\n \n // 绘制图片\n const imgX = (w - imgW) / 2;\n const imgY = (h - imgH) / 2;\n ctx.drawImage(img, imgX, imgY, imgW, imgH);\n \n // 绘制文本\n if (this.content()) {\n ctx.font = this.font();\n ctx.fillStyle = this.color();\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n \n let textY = h / 2;\n if (this.imagePosition() === 'top') {\n textY = imgY - 10;\n } else if (this.imagePosition() === 'bottom') {\n textY = imgY + imgH + 10;\n }\n \n ctx.fillText(this.content(), w / 2, textY);\n }\n \n ctx.restore();\n this.backgroundImage.set(canvas.toDataURL());\n } catch {\n // 图片加载失败,降级为纯文本\n this.drawWatermarkText();\n }\n }\n\n private drawWatermarkText() {\n const w = this.watermarkWidth();\n const h = this.watermarkHeight();\n\n const canvas = document.createElement('canvas');\n canvas.width = w;\n canvas.height = h;\n\n const ctx = canvas.getContext('2d');\n if (!ctx) return;\n\n ctx.save();\n ctx.rotate((this.rotate() * Math.PI) / 180);\n ctx.font = this.font();\n ctx.fillStyle = this.color();\n ctx.globalAlpha = this.alpha();\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n ctx.fillText(this.content(), w / 2, h / 2);\n ctx.restore();\n\n const dataUrl = canvas.toDataURL();\n this.backgroundImage.set(dataUrl);\n }\n}\n","<div\n class=\"x-watermark\"\n [class.x-watermark-disabled]=\"disabled()\"\n [style.z-index]=\"zIndex()\"\n [style.background-image]=\"backgroundImage() ? 'url(' + backgroundImage() + ')' : 'none'\"\n [style.background-repeat]=\"'repeat'\"\n [style.background-size]=\"watermarkWidth() + 'px ' + watermarkHeight() + 'px'\"\n [style.background-position]=\"offsetLeft() + 'px ' + offsetTop() + 'px'\"\n>\n <ng-content></ng-content>\n</div>","import { NgModule } from '@angular/core';\nimport { XWatermarkComponent } from './watermark.component';\n\n@NgModule({\n exports: [XWatermarkComponent],\n imports: [XWatermarkComponent]\n})\nexport class XWatermarkModule {}","/**\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-watermark.mjs","sources":["../../../../lib/ng-nest/ui/watermark/watermark.property.ts","../../../../lib/ng-nest/ui/watermark/watermark.component.ts","../../../../lib/ng-nest/ui/watermark/watermark.component.html","../../../../lib/ng-nest/ui/watermark/watermark.module.ts","../../../../lib/ng-nest/ui/watermark/ng-nest-ui-watermark.ts"],"sourcesContent":["import { Component, input } from '@angular/core';\r\nimport { XToNumber, XToBoolean, XPropertyFunction } from '@ng-nest/ui/core';\r\nimport type { XNumber, XBoolean } from '@ng-nest/ui/core';\r\n\r\n/**\r\n * Watermark\r\n * @selector x-watermark\r\n * @decorator component\r\n */\r\nexport const XWatermarkPrefix = 'x-watermark';\r\nconst X_WATERMARK_CONFIG_NAME = 'watermark';\r\n\r\n/**\r\n * Watermark Property\r\n */\r\n@Component({ selector: `${XWatermarkPrefix}-property`, template: '' })\r\nexport class XWatermarkProperty extends XPropertyFunction(X_WATERMARK_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 水印内容\r\n * @en_US Watermark content\r\n * @example\r\n *\r\n * ```html\r\n * <x-watermark content=\"NG-NEST\"></x-watermark>\r\n * ```\r\n *\r\n */\r\n readonly content = input<string>('');\r\n /**\r\n * @zh_CN 水印宽度\r\n * @en_US Watermark width\r\n * @example\r\n *\r\n * ```html\r\n * <x-watermark [width]=\"120\"></x-watermark>\r\n * ```\r\n *\r\n */\r\n readonly width = input<number, XNumber>(this.config?.width ?? 120, { transform: XToNumber });\r\n /**\r\n * @zh_CN 水印高度\r\n * @en_US Watermark height\r\n * @example\r\n *\r\n * ```html\r\n * <x-watermark [height]=\"60\"></x-watermark>\r\n * ```\r\n *\r\n */\r\n readonly height = input<number, XNumber>(this.config?.height ?? 60, { transform: XToNumber });\r\n /**\r\n * @zh_CN 旋转角度\r\n * @en_US Rotation angle\r\n * @example\r\n *\r\n * ```html\r\n * <x-watermark [rotate]=\"-22\"></x-watermark>\r\n * <x-watermark [rotate]=\"0\"></x-watermark>\r\n * ```\r\n *\r\n */\r\n readonly rotate = input<number, XNumber>(this.config?.rotate ?? -22, { transform: XToNumber });\r\n /**\r\n * @zh_CN 字体大小\r\n * @en_US Font size\r\n * @example\r\n *\r\n * ```html\r\n * <x-watermark [fontSize]=\"14\"></x-watermark>\r\n * ```\r\n *\r\n */\r\n readonly fontSize = input<number, XNumber>(this.config?.fontSize ?? 14, { transform: XToNumber });\r\n /**\r\n * @zh_CN 字体\r\n * @en_US Font family\r\n * @example\r\n *\r\n * ```html\r\n * <x-watermark fontFamily=\"Varela Round\"></x-watermark>\r\n * ```\r\n *\r\n */\r\n readonly fontFamily = input<string>(this.config?.fontFamily ?? 'Varela Round');\r\n /**\r\n * @zh_CN 字体颜色\r\n * @en_US Font color\r\n * @example\r\n *\r\n * ```html\r\n * <x-watermark color=\"rgba(0, 0, 0, 0.12)\"></x-watermark>\r\n * ```\r\n *\r\n */\r\n readonly color = input<string>(this.config?.color ?? 'rgba(0, 0, 0, 0.12)');\r\n /**\r\n * @zh_CN 层级\r\n * @en_US Z-index\r\n * @example\r\n *\r\n * ```html\r\n * <x-watermark [zIndex]=\"9999\"></x-watermark>\r\n * ```\r\n *\r\n */\r\n readonly zIndex = input<number, XNumber>(this.config?.zIndex ?? 9999, { transform: XToNumber });\r\n /**\r\n * @zh_CN 透明度\r\n * @en_US Opacity\r\n * @example\r\n *\r\n * ```html\r\n * <x-watermark [alpha]=\"1\"></x-watermark>\r\n * <x-watermark [alpha]=\"0.5\"></x-watermark>\r\n * ```\r\n *\r\n */\r\n readonly alpha = input<number, XNumber>(this.config?.alpha ?? 1, { transform: XToNumber });\r\n /**\r\n * @zh_CN 水平间距\r\n * @en_US Horizontal gap\r\n * @example\r\n *\r\n * ```html\r\n * <x-watermark [gapX]=\"100\"></x-watermark>\r\n * ```\r\n *\r\n */\r\n readonly gapX = input<number, XNumber>(this.config?.gapX ?? 100, { transform: XToNumber });\r\n /**\r\n * @zh_CN 垂直间距\r\n * @en_US Vertical gap\r\n * @example\r\n *\r\n * ```html\r\n * <x-watermark [gapY]=\"100\"></x-watermark>\r\n * ```\r\n *\r\n */\r\n readonly gapY = input<number, XNumber>(this.config?.gapY ?? 100, { transform: XToNumber });\r\n /**\r\n * @zh_CN 水平偏移\r\n * @en_US Horizontal offset\r\n * @example\r\n *\r\n * ```html\r\n * <x-watermark [offsetLeft]=\"0\"></x-watermark>\r\n * ```\r\n *\r\n */\r\n readonly offsetLeft = input<number, XNumber>(this.config?.offsetLeft ?? 0, { transform: XToNumber });\r\n /**\r\n * @zh_CN 垂直偏移\r\n * @en_US Vertical offset\r\n * @example\r\n *\r\n * ```html\r\n * <x-watermark [offsetTop]=\"0\"></x-watermark>\r\n * ```\r\n *\r\n */\r\n readonly offsetTop = input<number, XNumber>(this.config?.offsetTop ?? 0, { transform: XToNumber });\r\n /**\r\n * @zh_CN 是否交错显示\r\n * @en_US Whether to stagger display\r\n * @example\r\n *\r\n * ```html\r\n * <x-watermark [striped]=\"true\"></x-watermark>\r\n * <x-watermark [striped]=\"false\"></x-watermark>\r\n * ```\r\n *\r\n */\r\n readonly striped = input<boolean, XBoolean>(this.config?.striped ?? false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 是否禁用\r\n * @en_US Whether to disable\r\n * @example\r\n *\r\n * ```html\r\n * <x-watermark [disabled]=\"true\"></x-watermark>\r\n * <x-watermark [disabled]=\"false\"></x-watermark>\r\n * ```\r\n *\r\n */\r\n readonly disabled = input<boolean, XBoolean>(this.config?.disabled ?? false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 图片/图标 URL\r\n * @en_US Image/icon URL\r\n * @example\r\n *\r\n * ```html\r\n * <x-watermark imageSrc=\"/assets/logo.png\"></x-watermark>\r\n * ```\r\n *\r\n */\r\n readonly imageSrc = input<string>('');\r\n /**\r\n * @zh_CN 图片宽度\r\n * @en_US Image width\r\n * @example\r\n *\r\n * ```html\r\n * <x-watermark [imageWidth]=\"40\"></x-watermark>\r\n * ```\r\n *\r\n */\r\n readonly imageWidth = input<number, XNumber>(0, { transform: XToNumber });\r\n /**\r\n * @zh_CN 图片高度\r\n * @en_US Image height\r\n * @example\r\n *\r\n * ```html\r\n * <x-watermark [imageHeight]=\"40\"></x-watermark>\r\n * ```\r\n *\r\n */\r\n readonly imageHeight = input<number, XNumber>(0, { transform: XToNumber });\r\n /**\r\n * @zh_CN 图片相对文本的位置\r\n * @en_US Image position relative to text\r\n * @example\r\n *\r\n * ```html\r\n * <x-watermark imagePosition=\"top\"></x-watermark>\r\n * <x-watermark imagePosition=\"center\"></x-watermark>\r\n * <x-watermark imagePosition=\"bottom\"></x-watermark>\r\n * ```\r\n *\r\n */\r\n readonly imagePosition = input<XWatermarkImagePosition>('center');\r\n}\r\n\r\n/**\r\n * @zh_CN 图片相对文本的位置\r\n * @en_US Image position relative to text\r\n */\r\nexport type XWatermarkImagePosition = 'top' | 'center' | 'bottom';\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n computed,\r\n signal,\r\n AfterViewInit,\r\n OnDestroy\r\n} from '@angular/core';\r\nimport { XWatermarkProperty, XWatermarkPrefix } from './watermark.property';\r\n\r\n@Component({\r\n selector: XWatermarkPrefix,\r\n imports: [],\r\n templateUrl: './watermark.component.html',\r\n styleUrls: ['./watermark.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XWatermarkComponent extends XWatermarkProperty implements AfterViewInit, OnDestroy {\r\n backgroundImage = signal<string>('');\r\n\r\n private font = computed(() => {\r\n return `${this.fontSize()}px ${this.fontFamily()}`;\r\n });\r\n\r\n private textWidth = computed(() => {\r\n const canvas = document.createElement('canvas');\r\n const ctx = canvas.getContext('2d');\r\n if (ctx) {\r\n ctx.font = this.font();\r\n return ctx.measureText(this.content()).width;\r\n }\r\n return this.width();\r\n });\r\n\r\n watermarkWidth = computed(() => {\r\n const imgW = this.imageSrc() && this.imageWidth() ? this.imageWidth() : this.textWidth();\r\n return Math.max(imgW, this.textWidth()) + this.gapX();\r\n });\r\n \r\n watermarkHeight = computed(() => {\r\n const imgH = this.imageSrc() && this.imageHeight() ? this.imageHeight() : this.height();\r\n return Math.max(imgH, this.height()) + this.gapY();\r\n });\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.createWatermark();\r\n }\r\n\r\n ngOnDestroy() {}\r\n\r\n private createWatermark() {\r\n if (this.imageSrc()) {\r\n this.drawWatermarkWithImage();\r\n } else {\r\n this.drawWatermarkText();\r\n }\r\n }\r\n\r\n private loadImage(src: string): Promise<HTMLImageElement> {\r\n return new Promise((resolve, reject) => {\r\n const img = new Image();\r\n img.crossOrigin = 'anonymous';\r\n img.onload = () => resolve(img);\r\n img.onerror = reject;\r\n img.src = src;\r\n });\r\n }\r\n\r\n private async drawWatermarkWithImage() {\r\n const w = this.watermarkWidth();\r\n const h = this.watermarkHeight();\r\n const canvas = document.createElement('canvas');\r\n canvas.width = w;\r\n canvas.height = h;\r\n const ctx = canvas.getContext('2d');\r\n if (!ctx) return;\r\n\r\n try {\r\n const img = await this.loadImage(this.imageSrc());\r\n const imgW = this.imageWidth() || this.width();\r\n const imgH = this.imageHeight() || this.height();\r\n \r\n ctx.save();\r\n ctx.rotate((this.rotate() * Math.PI) / 180);\r\n ctx.globalAlpha = this.alpha();\r\n \r\n // 绘制图片\r\n const imgX = (w - imgW) / 2;\r\n const imgY = (h - imgH) / 2;\r\n ctx.drawImage(img, imgX, imgY, imgW, imgH);\r\n \r\n // 绘制文本\r\n if (this.content()) {\r\n ctx.font = this.font();\r\n ctx.fillStyle = this.color();\r\n ctx.textAlign = 'center';\r\n ctx.textBaseline = 'middle';\r\n \r\n let textY = h / 2;\r\n if (this.imagePosition() === 'top') {\r\n textY = imgY - 10;\r\n } else if (this.imagePosition() === 'bottom') {\r\n textY = imgY + imgH + 10;\r\n }\r\n \r\n ctx.fillText(this.content(), w / 2, textY);\r\n }\r\n \r\n ctx.restore();\r\n this.backgroundImage.set(canvas.toDataURL());\r\n } catch {\r\n // 图片加载失败,降级为纯文本\r\n this.drawWatermarkText();\r\n }\r\n }\r\n\r\n private drawWatermarkText() {\r\n const w = this.watermarkWidth();\r\n const h = this.watermarkHeight();\r\n\r\n const canvas = document.createElement('canvas');\r\n canvas.width = w;\r\n canvas.height = h;\r\n\r\n const ctx = canvas.getContext('2d');\r\n if (!ctx) return;\r\n\r\n ctx.save();\r\n ctx.rotate((this.rotate() * Math.PI) / 180);\r\n ctx.font = this.font();\r\n ctx.fillStyle = this.color();\r\n ctx.globalAlpha = this.alpha();\r\n ctx.textAlign = 'center';\r\n ctx.textBaseline = 'middle';\r\n ctx.fillText(this.content(), w / 2, h / 2);\r\n ctx.restore();\r\n\r\n const dataUrl = canvas.toDataURL();\r\n this.backgroundImage.set(dataUrl);\r\n }\r\n}\r\n","<div\r\n class=\"x-watermark\"\r\n [class.x-watermark-disabled]=\"disabled()\"\r\n [style.z-index]=\"zIndex()\"\r\n [style.background-image]=\"backgroundImage() ? 'url(' + backgroundImage() + ')' : 'none'\"\r\n [style.background-repeat]=\"'repeat'\"\r\n [style.background-size]=\"watermarkWidth() + 'px ' + watermarkHeight() + 'px'\"\r\n [style.background-position]=\"offsetLeft() + 'px ' + offsetTop() + 'px'\"\r\n>\r\n <ng-content></ng-content>\r\n</div>","import { NgModule } from '@angular/core';\r\nimport { XWatermarkComponent } from './watermark.component';\r\n\r\n@NgModule({\r\n exports: [XWatermarkComponent],\r\n imports: [XWatermarkComponent]\r\n})\r\nexport class XWatermarkModule {}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ng-nest/ui",
3
- "version": "21.0.12",
3
+ "version": "21.0.14",
4
4
  "license": "MIT",
5
5
  "homepage": "https://www.ngnest.com",
6
6
  "author": "ng-nest",
@@ -5,7 +5,7 @@ import { TemplateRef, OnInit, OnChanges, ComponentRef, SimpleChanges } from '@an
5
5
  import * as rxjs from 'rxjs';
6
6
  import { Subject, BehaviorSubject } from 'rxjs';
7
7
  import * as _ng_nest_ui_core from '@ng-nest/ui/core';
8
- import { XBoolean, XTemplate, XNumber, XAlign, XJustify, XDirection, XSize, XData, XParentIdentityProperty, XVariant, XPlacement, XFloatLabel, XPositionTopBottom } from '@ng-nest/ui/core';
8
+ import { XBoolean, XTemplate, XNumber, XAlign, XJustify, XDirection, XSize, XData, XParentIdentityProperty, XVariant, XPlacement, XPositionLeftRight, XFloatLabel, XPositionTopBottom } from '@ng-nest/ui/core';
9
9
  import { XFormOption } from '@ng-nest/ui/base-form';
10
10
  import { XInputComponent } from '@ng-nest/ui/input';
11
11
  import { XListComponent } from '@ng-nest/ui/list';
@@ -106,6 +106,16 @@ declare class XAutoCompleteProperty extends XAutoCompleteProperty_base {
106
106
  readonly inputStyle: _angular_core.InputSignal<{
107
107
  [style: string]: any;
108
108
  } | undefined>;
109
+ /**
110
+ * @zh_CN 图标
111
+ * @en_US Icon
112
+ */
113
+ readonly icon: _angular_core.ModelSignal<string | undefined>;
114
+ /**
115
+ * @zh_CN 图标布局方式
116
+ * @en_US Icon layout
117
+ */
118
+ readonly iconLayout: _angular_core.InputSignal<XPositionLeftRight>;
109
119
  /**
110
120
  * @zh_CN 下拉框的最大高度
111
121
  * @en_US The biggest height of the drop-down box
@@ -126,6 +136,11 @@ declare class XAutoCompleteProperty extends XAutoCompleteProperty_base {
126
136
  * @en_US The style class name of the drop-down box
127
137
  */
128
138
  readonly portalClass: _angular_core.InputSignal<string | string[]>;
139
+ /**
140
+ * @zh_CN 自定义下拉框中的内容
141
+ * @en_US Custom content in the drop-down box
142
+ */
143
+ readonly portalTemp: _angular_core.InputSignal<TemplateRef<any> | undefined>;
129
144
  /**
130
145
  * @zh_CN 匹配区分大小写
131
146
  * @en_US Case-sensitive
@@ -251,8 +266,13 @@ declare class XAutoCompleteProperty extends XAutoCompleteProperty_base {
251
266
  * @en_US Node click event
252
267
  */
253
268
  readonly nodeEmit: _angular_core.OutputEmitterRef<XAutoCompleteNode>;
269
+ /**
270
+ * @zh_CN 输入值变化事件
271
+ * @en_US Input value change event
272
+ */
273
+ readonly searchChange: _angular_core.OutputEmitterRef<any>;
254
274
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<XAutoCompleteProperty, never>;
255
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<XAutoCompleteProperty, "x-auto-complete-property", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "debounceTime": { "alias": "debounceTime"; "required": false; "isSignal": true; }; "placement": { "alias": "placement"; "required": false; "isSignal": true; }; "nodeTpl": { "alias": "nodeTpl"; "required": false; "isSignal": true; }; "bordered": { "alias": "bordered"; "required": false; "isSignal": true; }; "inputStyle": { "alias": "inputStyle"; "required": false; "isSignal": true; }; "portalMaxHeight": { "alias": "portalMaxHeight"; "required": false; "isSignal": true; }; "portalHeight": { "alias": "portalHeight"; "required": false; "isSignal": true; }; "portalWidth": { "alias": "portalWidth"; "required": false; "isSignal": true; }; "portalClass": { "alias": "portalClass"; "required": false; "isSignal": true; }; "caseSensitive": { "alias": "caseSensitive"; "required": false; "isSignal": true; }; "onlySelect": { "alias": "onlySelect"; "required": false; "isSignal": true; }; "floatLabel": { "alias": "floatLabel"; "required": false; "isSignal": true; }; "floatFixed": { "alias": "floatFixed"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "pointer": { "alias": "pointer"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "labelWidth": { "alias": "labelWidth"; "required": false; "isSignal": true; }; "labelAlign": { "alias": "labelAlign"; "required": false; "isSignal": true; }; "justify": { "alias": "justify"; "required": false; "isSignal": true; }; "align": { "alias": "align"; "required": false; "isSignal": true; }; "direction": { "alias": "direction"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "valueTpl": { "alias": "valueTpl"; "required": false; "isSignal": true; }; "valueTplContext": { "alias": "valueTplContext"; "required": false; "isSignal": true; }; "before": { "alias": "before"; "required": false; "isSignal": true; }; "after": { "alias": "after"; "required": false; "isSignal": true; }; "pattern": { "alias": "pattern"; "required": false; "isSignal": true; }; "message": { "alias": "message"; "required": false; "isSignal": true; }; "active": { "alias": "active"; "required": false; "isSignal": true; }; "inputValidator": { "alias": "inputValidator"; "required": false; "isSignal": true; }; }, { "active": "activeChange"; "nodeEmit": "nodeEmit"; }, never, never, true, never>;
275
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<XAutoCompleteProperty, "x-auto-complete-property", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "debounceTime": { "alias": "debounceTime"; "required": false; "isSignal": true; }; "placement": { "alias": "placement"; "required": false; "isSignal": true; }; "nodeTpl": { "alias": "nodeTpl"; "required": false; "isSignal": true; }; "bordered": { "alias": "bordered"; "required": false; "isSignal": true; }; "inputStyle": { "alias": "inputStyle"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "iconLayout": { "alias": "iconLayout"; "required": false; "isSignal": true; }; "portalMaxHeight": { "alias": "portalMaxHeight"; "required": false; "isSignal": true; }; "portalHeight": { "alias": "portalHeight"; "required": false; "isSignal": true; }; "portalWidth": { "alias": "portalWidth"; "required": false; "isSignal": true; }; "portalClass": { "alias": "portalClass"; "required": false; "isSignal": true; }; "portalTemp": { "alias": "portalTemp"; "required": false; "isSignal": true; }; "caseSensitive": { "alias": "caseSensitive"; "required": false; "isSignal": true; }; "onlySelect": { "alias": "onlySelect"; "required": false; "isSignal": true; }; "floatLabel": { "alias": "floatLabel"; "required": false; "isSignal": true; }; "floatFixed": { "alias": "floatFixed"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "pointer": { "alias": "pointer"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "labelWidth": { "alias": "labelWidth"; "required": false; "isSignal": true; }; "labelAlign": { "alias": "labelAlign"; "required": false; "isSignal": true; }; "justify": { "alias": "justify"; "required": false; "isSignal": true; }; "align": { "alias": "align"; "required": false; "isSignal": true; }; "direction": { "alias": "direction"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "valueTpl": { "alias": "valueTpl"; "required": false; "isSignal": true; }; "valueTplContext": { "alias": "valueTplContext"; "required": false; "isSignal": true; }; "before": { "alias": "before"; "required": false; "isSignal": true; }; "after": { "alias": "after"; "required": false; "isSignal": true; }; "pattern": { "alias": "pattern"; "required": false; "isSignal": true; }; "message": { "alias": "message"; "required": false; "isSignal": true; }; "active": { "alias": "active"; "required": false; "isSignal": true; }; "inputValidator": { "alias": "inputValidator"; "required": false; "isSignal": true; }; }, { "icon": "iconChange"; "active": "activeChange"; "nodeEmit": "nodeEmit"; "searchChange": "searchChange"; }, never, never, true, never>;
256
276
  }
257
277
  /**
258
278
  * AutoComplete Option
@@ -414,6 +434,13 @@ interface XAutoCompleteOption extends XFormOption {
414
434
  */
415
435
  nodeEmit?: (node: XAutoCompleteNode) => void;
416
436
  }
437
+ /**
438
+ * @zh_CN 图标布局方式,指在输入框中的位置
439
+ * @en_US Icon layout, refers to the position in the input box
440
+ * @value "left" 靠左
441
+ * @value "right" 靠右
442
+ */
443
+ type XAutoCompleteIconLayoutType = XPositionLeftRight;
417
444
  /**
418
445
  * @zh_CN 浮动标签类型
419
446
  * @en_US Float label type
@@ -442,7 +469,7 @@ declare class XAutoCompletePortalComponent implements OnInit {
442
469
  animateLeave: string;
443
470
  done(): void;
444
471
  start(): void;
445
- list: _angular_core.Signal<XListComponent>;
472
+ list: _angular_core.Signal<XListComponent | undefined>;
446
473
  data: _angular_core.InputSignal<XAutoCompleteNode[] | undefined>;
447
474
  value: _angular_core.InputSignal<any>;
448
475
  placement: _angular_core.InputSignal<XPositionTopBottom | undefined>;
@@ -459,6 +486,14 @@ declare class XAutoCompletePortalComponent implements OnInit {
459
486
  keydownSubject: Subject<KeyboardEvent>;
460
487
  active: _angular_core.WritableSignal<number>;
461
488
  destroy: _angular_core.WritableSignal<boolean>;
489
+ portalTemp: _angular_core.InputSignal<TemplateRef<any> | undefined>;
490
+ portalTempContext: _angular_core.Signal<{
491
+ $implicit: XAutoCompleteNode[] | undefined;
492
+ $data: XAutoCompleteNode[] | undefined;
493
+ $value: any;
494
+ $close: () => void;
495
+ $nodeClick: (node: XAutoCompleteNode) => void;
496
+ }>;
462
497
  private unSubject;
463
498
  private destroyRef;
464
499
  ngOnInit(): void;
@@ -468,14 +503,13 @@ declare class XAutoCompletePortalComponent implements OnInit {
468
503
  onActive(num: number): void;
469
504
  onTabOut(): void;
470
505
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<XAutoCompletePortalComponent, never>;
471
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<XAutoCompletePortalComponent, "x-auto-complete-portal", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "placement": { "alias": "placement"; "required": false; "isSignal": true; }; "nodeTpl": { "alias": "nodeTpl"; "required": false; "isSignal": true; }; "inputCom": { "alias": "inputCom"; "required": false; "isSignal": true; }; "keywordText": { "alias": "keywordText"; "required": false; "isSignal": true; }; "caseSensitive": { "alias": "caseSensitive"; "required": false; "isSignal": true; }; "portalMaxHeight": { "alias": "portalMaxHeight"; "required": false; "isSignal": true; }; "portalHeight": { "alias": "portalHeight"; "required": false; "isSignal": true; }; "portalWidth": { "alias": "portalWidth"; "required": false; "isSignal": true; }; }, { "keywordText": "keywordTextChange"; "animating": "animating"; "nodeClick": "nodeClick"; }, never, never, true, never>;
506
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<XAutoCompletePortalComponent, "x-auto-complete-portal", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "placement": { "alias": "placement"; "required": false; "isSignal": true; }; "nodeTpl": { "alias": "nodeTpl"; "required": false; "isSignal": true; }; "inputCom": { "alias": "inputCom"; "required": false; "isSignal": true; }; "keywordText": { "alias": "keywordText"; "required": false; "isSignal": true; }; "caseSensitive": { "alias": "caseSensitive"; "required": false; "isSignal": true; }; "portalMaxHeight": { "alias": "portalMaxHeight"; "required": false; "isSignal": true; }; "portalHeight": { "alias": "portalHeight"; "required": false; "isSignal": true; }; "portalWidth": { "alias": "portalWidth"; "required": false; "isSignal": true; }; "portalTemp": { "alias": "portalTemp"; "required": false; "isSignal": true; }; }, { "keywordText": "keywordTextChange"; "animating": "animating"; "nodeClick": "nodeClick"; }, never, never, true, never>;
472
507
  }
473
508
 
474
509
  declare class XAutoCompleteComponent extends XAutoCompleteProperty implements OnInit, OnChanges {
475
510
  inputCom: _angular_core.Signal<XInputComponent>;
476
511
  nodes: _angular_core.WritableSignal<XAutoCompleteNode[]>;
477
512
  searchNodes: _angular_core.WritableSignal<XAutoCompleteNode[]>;
478
- icon: _angular_core.WritableSignal<string>;
479
513
  iconSpin: _angular_core.WritableSignal<boolean>;
480
514
  animating: _angular_core.WritableSignal<boolean>;
481
515
  valueTplContextSignal: _angular_core.WritableSignal<{
@@ -483,6 +517,8 @@ declare class XAutoCompleteComponent extends XAutoCompleteProperty implements On
483
517
  $isValue: boolean;
484
518
  }>;
485
519
  valueTplContextComputed: _angular_core.Signal<unknown>;
520
+ widthComputed: _angular_core.Signal<boolean>;
521
+ get hostWidth(): any;
486
522
  inputChange: BehaviorSubject<any>;
487
523
  closeSubject: Subject<void>;
488
524
  keydownSubject: Subject<KeyboardEvent>;
@@ -514,6 +550,8 @@ declare class XAutoCompleteComponent extends XAutoCompleteProperty implements On
514
550
  setSearchNodes(value: string | number): void;
515
551
  modelChange(value: string | number): void;
516
552
  onKeydown($event: KeyboardEvent): void;
553
+ portalClose(): void;
554
+ portalNodeClick(node: XAutoCompleteNode): void;
517
555
  onInput(_event: Event): void;
518
556
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<XAutoCompleteComponent, never>;
519
557
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<XAutoCompleteComponent, "x-auto-complete", never, {}, {}, never, never, true, never>;
@@ -526,4 +564,4 @@ declare class XAutoCompleteModule {
526
564
  }
527
565
 
528
566
  export { XAutoCompleteComponent, XAutoCompleteModule, XAutoCompletePortalComponent, XAutoCompletePortalPrefix, XAutoCompletePrefix, XAutoCompleteProperty };
529
- export type { XAutoCompleteFloatLabel, XAutoCompleteNode, XAutoCompleteOption, XAutoCompleteVariant };
567
+ export type { XAutoCompleteFloatLabel, XAutoCompleteIconLayoutType, XAutoCompleteNode, XAutoCompleteOption, XAutoCompleteVariant };
@@ -332,7 +332,7 @@ declare class XCheckboxComponent extends XCheckboxProperty implements OnChanges,
332
332
  labelMapSignal: _angular_core.Signal<{
333
333
  [x: string]: boolean;
334
334
  }>;
335
- checkboxType: _angular_core.Signal<"initial" | "button" | "icon" | "tag">;
335
+ checkboxType: _angular_core.Signal<"button" | "icon" | "tag" | "initial">;
336
336
  constructor();
337
337
  ngOnChanges(changes: SimpleChanges): void;
338
338
  ngOnDestroy(): void;
@@ -24,7 +24,7 @@ declare class XContextmenuProperty extends XContextmenuProperty_base {
24
24
  * @zh_CN 触发目标元素
25
25
  * @en_US Trigger target element
26
26
  */
27
- readonly target: _angular_core.InputSignal<ElementRef<any> | HTMLElement | undefined>;
27
+ readonly target: _angular_core.InputSignal<HTMLElement | ElementRef<any> | undefined>;
28
28
  /**
29
29
  * @zh_CN 节点数据
30
30
  * @en_US Node data
@@ -1267,6 +1267,7 @@ interface XAutoCompleteConfig {
1267
1267
  floatFixed?: boolean;
1268
1268
  variant?: XVariant;
1269
1269
  placement?: XPositionTopBottom;
1270
+ iconLayout?: XPositionLeftRight;
1270
1271
  debounceTime?: number;
1271
1272
  size?: XSize;
1272
1273
  bordered?: boolean;
@@ -297,7 +297,7 @@ declare class XRadioComponent extends XRadioProperty implements OnChanges, OnDes
297
297
  labelMapSignal: _angular_core.Signal<{
298
298
  [x: string]: boolean;
299
299
  }>;
300
- radioType: _angular_core.Signal<"initial" | "button" | "icon" | "tag">;
300
+ radioType: _angular_core.Signal<"button" | "icon" | "tag" | "initial">;
301
301
  ngOnChanges(changes: SimpleChanges): void;
302
302
  ngOnDestroy(): void;
303
303
  radioClick(event: Event, node: XRadioNode): void;
@@ -333,7 +333,6 @@ declare class XSliderSelectComponent extends XSliderSelectProperty implements On
333
333
  tooltips: _angular_core.Signal<readonly XTooltipDirective[]>;
334
334
  tooltipStart: _angular_core.Signal<XTooltipDirective | null>;
335
335
  tooltipEnd: _angular_core.Signal<XTooltipDirective | null>;
336
- value: _angular_core.WritableSignal<number | number[]>;
337
336
  starting: _angular_core.WritableSignal<boolean>;
338
337
  startOffset: _angular_core.WritableSignal<number>;
339
338
  startVisible: _angular_core.WritableSignal<boolean>;