UNPKG

tdesign-mobile-vue

Version:
1 lines 6.17 kB
{"version":3,"file":"button.mjs","sources":["../../src/button/button.tsx"],"sourcesContent":["import { computed, defineComponent } from 'vue';\nimport TLoading from '../loading';\nimport { Hover } from '../shared';\nimport ButtonProps from './props';\nimport config from '../config';\nimport { useFormDisabled } from '../form/hooks';\nimport { TdButtonProps } from './type';\nimport { usePrefixClass } from '../hooks/useClass';\nimport { useContent, useTNodeJSX } from '../hooks/tnode';\n\nconst { prefix } = config;\n\nexport default defineComponent({\n name: `${prefix}-button`,\n directives: { Hover },\n props: ButtonProps,\n setup(props) {\n const buttonClass = usePrefixClass('button');\n const renderTNodeJSX = useTNodeJSX();\n const renderTNodeContent = useContent();\n const isDisabled = useFormDisabled();\n\n const hoverDisabled = computed(() => isDisabled.value || props.loading);\n\n const buttonClasses = computed(() => [\n `${buttonClass.value}`,\n `${buttonClass.value}--size-${props.size}`,\n `${buttonClass.value}--${props.variant}`,\n {\n [`${buttonClass.value}--${props.theme}`]: props.theme,\n [`${buttonClass.value}--${props.shape}`]: props.shape,\n [`${buttonClass.value}--ghost`]: props.ghost,\n [`${buttonClass.value}--block`]: props.block,\n [`${buttonClass.value}--disabled`]: isDisabled.value,\n [`${buttonClass.value}--loading`]: props.loading,\n },\n ]);\n\n const handleClick = (e: MouseEvent) => {\n if (!props.loading && !isDisabled.value) {\n props.onClick?.(e);\n } else {\n e.stopPropagation();\n }\n };\n\n return () => {\n const suffix = renderTNodeJSX('suffix');\n\n const readerIcon = () => {\n if (props.loading) {\n return <TLoading inherit-color {...(props.loadingProps as TdButtonProps['loadingProps'])} />;\n }\n\n return renderTNodeJSX('icon');\n };\n\n const readerContent = () => {\n const content = renderTNodeContent('default', 'content');\n return <span class={`${buttonClass.value}__content`}>{content}</span>;\n };\n return (\n <button\n class={buttonClasses.value}\n role=\"button\"\n type={props.type}\n disabled={isDisabled.value}\n aria-disabled={isDisabled.value}\n onClick={handleClick}\n v-hover={{ className: `${buttonClass.value}--hover`, disabledHover: hoverDisabled.value }}\n >\n {readerIcon()}\n {readerContent()}\n {suffix}\n </button>\n );\n };\n },\n});\n"],"names":["prefix","config","defineComponent","name","directives","Hover","props","ButtonProps","setup","buttonClass","usePrefixClass","renderTNodeJSX","useTNodeJSX","renderTNodeContent","useContent","isDisabled","useFormDisabled","hoverDisabled","computed","value","loading","buttonClasses","concat","size","variant","_defineProperty","theme","shape","ghost","block","handleClick","e","_props$onClick","onClick","call","stopPropagation","suffix","readerIcon","_createVNode","TLoading","_mergeProps","loadingProps","readerContent","content","_withDirectives","type","_resolveDirective","className","disabledHover"],"mappings":"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"}