UNPKG

xdesign-vue-next

Version:

XDesign Component for vue-next

1 lines 6.43 kB
{"version":3,"file":"transfer-operations.mjs","sources":["../../../src/transfer/components/transfer-operations.tsx"],"sourcesContent":["import { defineComponent, createElementVNode, PropType, h } from 'vue';\nimport Button from '../../button';\nimport { TNode } from '../../common';\nimport { usePrefixClass } from '../../hooks/useConfig';\nimport props from '../props';\nimport isFunction from 'lodash/isFunction';\nimport isString from 'lodash/isString';\nimport isArray from 'lodash/isArray';\n\nexport default defineComponent({\n name: 'XTransferOperations',\n props: {\n // 控制左按钮的禁用与否\n leftDisabled: {\n type: Boolean as PropType<boolean>,\n required: true,\n },\n // 控制右按钮的禁用与否\n rightDisabled: {\n type: Boolean as PropType<boolean>,\n required: true,\n },\n operation: props.operation,\n },\n emits: ['moveToRight', 'moveToLeft'],\n setup(props, { slots, emit }) {\n const classPrefix = usePrefixClass();\n const moveToRight = () => {\n emit('moveToRight');\n };\n const moveToLeft = () => {\n emit('moveToLeft');\n };\n const getIconRight = () => {\n return <icon-ri-arrow-right-s-line />;\n };\n const getIconLeft = () => {\n return <icon-ri-arrow-left-s-line />;\n };\n const getIcon = (direction: 'left' | 'right') => {\n if (isFunction(props.operation)) {\n return null;\n }\n if (direction === 'right' && props.operation && isFunction(props.operation[0])) {\n return null;\n }\n if (direction === 'left' && props.operation && isFunction(props.operation[1])) {\n return null;\n }\n\n if (slots.operation) {\n return null;\n }\n\n return direction === 'left' ? getIconLeft : getIconRight;\n };\n // right:去右边,left:去左边\n const renderButton = (h: typeof createElementVNode, direction: 'left' | 'right') => {\n if (isFunction(slots.operation)) {\n return slots.operation({\n direction,\n });\n }\n if (isFunction(props.operation)) {\n const renderContent = props.operation;\n return renderContent(h as any, { direction });\n }\n let renderContent: string | TNode;\n if (isArray(props.operation)) {\n const [left, right] = props.operation;\n renderContent = direction === 'right' ? right : left;\n } else {\n renderContent = '';\n }\n return renderContent;\n };\n\n return () => (\n <div class={`${classPrefix.value}-transfer__operations`}>\n <Button\n variant=\"outline\"\n size=\"small\"\n shape={isString(props.operation?.[1]) ? 'rectangle' : 'square'}\n key={props.rightDisabled ? 'right-outline' : 'right-base'}\n disabled={props.rightDisabled}\n onClick={moveToRight}\n icon={getIcon('right')}\n >\n {renderButton(h, 'right')}\n </Button>\n <Button\n variant=\"outline\"\n size=\"small\"\n shape={isString(props.operation?.[0]) ? 'rectangle' : 'square'}\n key={props.rightDisabled ? 'left-outline' : 'left-base'}\n disabled={props.leftDisabled}\n onClick={moveToLeft}\n icon={getIcon('left')}\n >\n {renderButton(h, 'left')}\n </Button>\n </div>\n );\n },\n});\n"],"names":["_isVNode","name","props","leftDisabled","type","required","rightDisabled","emits","setup","_resolveComponent","isFunction","direction","isArray","left","right","renderContent","_createVNode","isString"],"mappings":"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"}