xdesign-vue-next
Version:
XDesign Component for vue-next
1 lines • 5.55 kB
Source Map (JSON)
{"version":3,"file":"button.mjs","sources":["../../src/button/button.tsx"],"sourcesContent":["import { computed, defineComponent, h, ref } from 'vue';\nimport TLoading from '../loading';\nimport props from './props';\nimport useRipple from '../hooks/useRipple';\nimport { usePrefixClass, useCommonClassName } from '../hooks/useConfig';\nimport { useTNodeJSX, useContent } from '../hooks/tnode';\nimport { useDisabled } from '../hooks/useDisabled';\n\nexport default defineComponent({\n name: 'XButton',\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 {\n [SIZE.value[props.size]]: props.size !== 'medium',\n [STATUS.value.disabled]: isDisabled.value,\n [STATUS.value.loading]: props.loading,\n [`${COMPONENT_NAME.value}--shape-${props.shape}`]: props.shape !== 'rectangle',\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 ? <TLoading inheritColor={true} /> : renderTNodeJSX('icon');\n const iconOnly = icon && !buttonContent;\n const suffix =\n props.suffix || slots.suffix ? (\n <span className={`${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 };\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":["name","props","setup","buttonContent","disabled","tabindex","ref"],"mappings":"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"}