tdesign-vue-next
Version:
TDesign Component for vue-next
1 lines • 8.66 kB
Source Map (JSON)
{"version":3,"file":"sticky-tool.mjs","sources":["../../../components/sticky-tool/sticky-tool.tsx"],"sourcesContent":["import { computed, defineComponent, VNode } from 'vue';\nimport props from './props';\nimport { isObject } from 'lodash-es';\nimport StickyItem from './sticky-item';\n\nimport { usePrefixClass, useChildComponentSlots } from '@tdesign/shared-hooks';\n\nimport stickyItemProps from './sticky-item-props';\n\nimport type { TdStickyItemProps } from './type';\nimport type { Styles } from '../common';\n\nexport default defineComponent({\n name: 'TStickyTool',\n props,\n setup(props) {\n const COMPONENT_NAME = usePrefixClass('sticky-tool');\n const classes = computed(() => {\n return [COMPONENT_NAME.value, `${COMPONENT_NAME.value}--${props.shape}`];\n });\n const styles = computed(() => {\n const styles = getOffset();\n if (props.width) styles.width = typeof props.width === 'number' ? `${props.width}px` : props.width;\n return styles;\n });\n\n const getChildComponentByName = useChildComponentSlots();\n\n const getList = () => {\n let list: Array<TdStickyItemProps>;\n if (props.list?.length) {\n list = props.list;\n } else {\n const nodes: VNode[] = getChildComponentByName('StickyItem') as VNode[];\n list = getListBySlots(nodes);\n }\n return list;\n };\n const getListBySlots = (nodes: VNode[]) => {\n const arr: Array<TdStickyItemProps> = [];\n nodes?.forEach((node) => {\n const list = node?.props || {};\n const children = node?.children;\n if (!list && !children) return;\n if (children && isObject(children)) {\n for (const key in children) {\n if (key in stickyItemProps && !list[key]) {\n list[key] = (children as Record<string, any>)[key];\n }\n }\n }\n arr.push(list as TdStickyItemProps);\n });\n return arr;\n };\n const getOffset = (): Styles => {\n // 默认偏移位置\n const position: Array<string | number> = props.offset ? [80, 24] : ['80px', '24px'];\n props.offset?.forEach((item, index) => {\n position[index] = isNaN(Number(item))\n ? `calc( ${position[index]}px + ${item})`\n : `${(position[index] as number) + (item as number)}px`;\n });\n const offsetStyle: Styles = {};\n props.placement.split('-').forEach((item, index) => {\n if (item !== 'center') {\n offsetStyle[item] = position[index];\n } else {\n offsetStyle.top = '50%';\n offsetStyle.transform = 'translate(0, -50%)';\n }\n });\n return offsetStyle;\n };\n const handleClick = (context: { e: MouseEvent; item: TdStickyItemProps }) => {\n props.onClick?.(context);\n };\n const handleHover = (context: { e: MouseEvent; item: TdStickyItemProps }) => {\n props.onHover?.(context);\n };\n const renderContent = () => {\n const list = getList();\n const content = list.map((item, index) => {\n const { type, shape, placement, popupProps } = props;\n const itemProps = {\n ...item,\n type,\n shape,\n placement,\n basePopupProps: popupProps,\n baseWidth: styles.value.width,\n onClick: handleClick,\n onHover: handleHover,\n };\n return <StickyItem {...itemProps} key={index} />;\n });\n return content;\n };\n return () => (\n <div class={classes.value} style={styles.value}>\n {renderContent()}\n </div>\n );\n },\n});\n"],"names":["defineComponent","name","props","setup","COMPONENT_NAME","usePrefixClass","classes","computed","value","concat","shape","styles","getOffset","width","getChildComponentByName","useChildComponentSlots","getList","_props2$list","list","length","nodes","getListBySlots","arr","forEach","node","children","isObject","key","stickyItemProps","push","_props2$offset","position","offset","item","index","isNaN","Number","offsetStyle","placement","split","top","transform","handleClick","context","_props2$onClick","onClick","handleHover","_props2$onHover","onHover","renderContent","content","map","type","popupProps","itemProps","_objectSpread","basePopupProps","baseWidth","_createVNode","StickyItem","_mergeProps"],"mappings":"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"}