xdesign-vue-next
Version:
XDesign Component for vue-next
1 lines • 7.5 kB
Source Map (JSON)
{"version":3,"file":"list.mjs","sources":["../../src/list/list.tsx"],"sourcesContent":["import { defineComponent, VNodeChild, computed } from 'vue';\nimport { useTNodeJSX } from '../hooks/tnode';\nimport TLoading from '../loading';\nimport props from './props';\nimport { TdListProps } from './type';\nimport { LOAD_MORE, LOADING } from './const';\nimport { useConfig, usePrefixClass, useCommonClassName } from '../hooks/useConfig';\nimport isString from 'lodash/isString';\n\nexport default defineComponent({\n name: 'XList',\n props: {\n ...props,\n },\n setup(props: TdListProps) {\n const { globalConfig } = useConfig('list');\n const COMPONENT_NAME = usePrefixClass('list');\n const { SIZE } = useCommonClassName();\n const renderTNodeJSX = useTNodeJSX();\n\n /** 列表基础逻辑 start */\n const listClass = computed(() => {\n return [\n `${COMPONENT_NAME.value}`,\n SIZE.value[props.size],\n {\n [`${COMPONENT_NAME.value}--split`]: props.split,\n [`${COMPONENT_NAME.value}--stripe`]: props.stripe,\n [`${COMPONENT_NAME.value}--vertical-action`]: props.layout === 'vertical',\n },\n ];\n });\n const renderContent = (): VNodeChild => {\n const propsHeaderContent = renderTNodeJSX('header');\n const propsFooterContent = renderTNodeJSX('footer');\n return [\n propsHeaderContent && <div class={`${COMPONENT_NAME.value}__header`}>{propsHeaderContent}</div>,\n <ul class={`${COMPONENT_NAME.value}__inner`}>{renderTNodeJSX('default')}</ul>,\n propsFooterContent && <div class={`${COMPONENT_NAME.value}__footer`}>{propsFooterContent}</div>,\n ];\n };\n /** 列表基础逻辑 end */\n\n /** 滚动相关逻辑 start */\n\n const handleScroll = (e: WheelEvent | Event) => {\n const listElement = e.target as HTMLElement;\n const { scrollTop, scrollHeight, clientHeight } = listElement;\n props.onScroll?.({\n e,\n scrollTop,\n scrollBottom: scrollHeight - clientHeight - scrollTop,\n });\n };\n /** 滚动相关逻辑 end */\n\n /** loading加载相关逻辑 start */\n const loadingClass = computed(() => {\n return isString(props.asyncLoading) && ['loading', 'load-more'].includes(props.asyncLoading)\n ? `${COMPONENT_NAME.value}__load ${COMPONENT_NAME.value}__load--${props.asyncLoading}`\n : `${COMPONENT_NAME.value}__load`;\n });\n\n const renderLoading = () => {\n if (props.asyncLoading && isString(props.asyncLoading)) {\n if (props.asyncLoading === LOADING) {\n return (\n <div>\n <TLoading />\n <span>{globalConfig.value.loadingText}</span>\n </div>\n );\n }\n if (props.asyncLoading === LOAD_MORE) {\n return <span>{globalConfig.value.loadingMoreText}</span>;\n }\n }\n return renderTNodeJSX('asyncLoading');\n };\n\n const handleLoadMore = (e: MouseEvent) => {\n if (isString(props.asyncLoading) && props.asyncLoading !== LOAD_MORE) return;\n props.onLoadMore?.({ e });\n };\n /** loading加载相关逻辑 end */\n return {\n COMPONENT_NAME,\n listClass,\n loadingClass,\n renderLoading,\n renderContent,\n handleScroll,\n handleLoadMore,\n };\n },\n\n render() {\n let listContent = this.renderContent();\n listContent = [\n listContent,\n <div class={this.loadingClass} onClick={this.handleLoadMore}>\n {this.renderLoading()}\n </div>,\n ];\n return (\n <div class={this.listClass} onScroll={this.handleScroll}>\n {listContent}\n </div>\n );\n },\n});\n"],"names":["name","props","_createVNode","e","scrollTop","scrollBottom","isString","TLoading","COMPONENT_NAME","listClass","loadingClass","renderLoading","renderContent","handleScroll","handleLoadMore","listContent"],"mappings":"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"}