UNPKG

tdesign-vue-next

Version:
1 lines 7.12 kB
{"version":3,"file":"button.mjs","sources":["../../../components/button/button.tsx"],"sourcesContent":["import { computed, defineComponent, h, ref } from 'vue';\nimport TLoading from '../loading';\nimport props from './props';\nimport {\n useRipple,\n useContent,\n useTNodeJSX,\n useDisabled,\n usePrefixClass,\n useCommonClassName,\n} from '@tdesign/shared-hooks';\n\nimport { TdButtonProps } from './type';\n\nexport default defineComponent({\n name: 'TButton',\n props,\n setup(props, { attrs, slots }) {\n const renderTNodeJSX = useTNodeJSX();\n const renderContent = useContent();\n const COMPONENT_NAME = usePrefixClass('button');\n const { STATUS, SIZE } = useCommonClassName();\n const btnRef = ref<HTMLElement>();\n\n useRipple(btnRef);\n\n const isDisabled = useDisabled();\n\n const mergeTheme = computed(() => {\n const { theme, variant } = props;\n if (theme) return theme;\n if (variant === 'base') return 'primary';\n return 'default';\n });\n\n const buttonClass = computed(() => [\n `${COMPONENT_NAME.value}`,\n `${COMPONENT_NAME.value}--variant-${props.variant}`,\n `${COMPONENT_NAME.value}--theme-${mergeTheme.value}`,\n `${COMPONENT_NAME.value}--shape-${props.shape}`,\n {\n [SIZE.value[props.size]]: props.size !== 'medium',\n [STATUS.value.disabled]: isDisabled.value,\n [STATUS.value.loading]: props.loading,\n [`${COMPONENT_NAME.value}--ghost`]: props.ghost,\n [SIZE.value.block]: props.block,\n },\n ]);\n\n return () => {\n let buttonContent = renderContent('default', 'content');\n const icon = props.loading ? (\n <TLoading {...{ inheritColor: true, ...(props.loadingProps as TdButtonProps['loadingProps']) }} />\n ) : (\n renderTNodeJSX('icon')\n );\n const iconOnly = icon && !buttonContent;\n const suffix =\n props.suffix || slots.suffix ? (\n <span class={`${COMPONENT_NAME.value}__suffix`}>{renderTNodeJSX('suffix')}</span>\n ) : null;\n\n buttonContent = buttonContent ? <span class={`${COMPONENT_NAME.value}__text`}>{buttonContent}</span> : '';\n if (icon) {\n buttonContent = [icon, buttonContent];\n }\n if (suffix) {\n buttonContent = [buttonContent].concat(suffix);\n }\n\n const renderTag = () => {\n if (!props.tag && props.href) return 'a';\n return props.tag || 'button';\n };\n\n const buttonAttrs = {\n class: [...buttonClass.value, { [`${COMPONENT_NAME.value}--icon-only`]: iconOnly }],\n type: props.type,\n disabled: isDisabled.value || props.loading,\n href: props.href,\n tabindex: isDisabled.value ? undefined : '0',\n form: props.form, // 原生属性,声明后需要显式透传\n };\n\n return h(\n renderTag(),\n {\n ref: btnRef,\n ...attrs,\n ...buttonAttrs,\n onClick: props.onClick,\n },\n [buttonContent],\n );\n };\n },\n});\n"],"names":["defineComponent","name","props","setup","attrs","_ref","slots","renderTNodeJSX","useTNodeJSX","renderContent","useContent","COMPONENT_NAME","usePrefixClass","_useCommonClassName","useCommonClassName","STATUS","SIZE","btnRef","ref","useRipple","isDisabled","useDisabled","mergeTheme","computed","theme","variant","buttonClass","concat","value","shape","_defineProperty","size","disabled","loading","ghost","block","buttonContent","icon","_createVNode","TLoading","_objectSpread","inheritColor","loadingProps","iconOnly","suffix","renderTag","tag","href","buttonAttrs","_toConsumableArray","type","tabindex","form","h","onClick"],"mappings":"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"}