diff --git a/packages/uni-components/dist/components.js b/packages/uni-components/dist/components.js index d812377d92a4b251781f3c6dbd4d2a60d23f0102..7069f8d941036f878423d31c74d5d23d0f96ee1c 100644 --- a/packages/uni-components/dist/components.js +++ b/packages/uni-components/dist/components.js @@ -81,6 +81,12 @@ export function initComponents(Vue, weex) { } }; } + function useHoverClass(hoverClass) { + if (hoverClass && hoverClass !== "none") { + return {}; + } + return { hoverClass }; + } var Navigator = vue.defineComponent({ name: "Navigator", props: navigatorProps, @@ -88,9 +94,13 @@ export function initComponents(Vue, weex) { slots }) { const onClick = createNavigatorOnClick(props); - return () => vue.createVNode("div", { - "onClick": onClick - }, [slots.default && slots.default()]); + return () => { + return vue.createVNode("div", vue.mergeProps({ + "class": "clazz" + }, useHoverClass(props.hoverClass), { + "onClick": onClick + }), [slots.default && slots.default()]); + }; } }); var index = { diff --git a/packages/uni-components/src/components/button.ts b/packages/uni-components/src/components/button.ts new file mode 100644 index 0000000000000000000000000000000000000000..4f55f8bcb7cf1da5d4bcf01d02d8f757b2f8ca22 --- /dev/null +++ b/packages/uni-components/src/components/button.ts @@ -0,0 +1,42 @@ +export const buttonProps = { + id: { + type: String, + default: '', + }, + hoverClass: { + type: String, + default: 'button-hover', + }, + hoverStartTime: { + type: [Number, String], + default: 20, + }, + hoverStayTime: { + type: [Number, String], + default: 70, + }, + hoverStopPropagation: { + type: Boolean, + default: false, + }, + disabled: { + type: [Boolean, String], + default: false, + }, + formType: { + type: String, + default: '', + }, + openType: { + type: String, + default: '', + }, + loading: { + type: [Boolean, String], + default: false, + }, + plain: { + type: [Boolean, String], + default: false, + }, +} diff --git a/packages/uni-components/src/nvue/navigator/index.tsx b/packages/uni-components/src/nvue/navigator/index.tsx index 1aa95fa96b6b952fe1f5175af8acedad2f85d2d9..69884d21b5a9747fb12f402a26d993676923feb3 100644 --- a/packages/uni-components/src/nvue/navigator/index.tsx +++ b/packages/uni-components/src/nvue/navigator/index.tsx @@ -3,12 +3,19 @@ import { createNavigatorOnClick, navigatorProps, } from '../../components/navigator' +import { useHoverClass } from '../utils' export default defineComponent({ name: 'Navigator', props: navigatorProps, setup(props, { slots }) { const onClick = createNavigatorOnClick(props) - return () =>
{slots.default && slots.default()}
+ return () => { + return ( +
+ {slots.default && slots.default()} +
+ ) + } }, }) diff --git a/packages/uni-components/src/nvue/utils.ts b/packages/uni-components/src/nvue/utils.ts new file mode 100644 index 0000000000000000000000000000000000000000..ddc75301e9c8ef8c70c4c3ce6f22177de353d863 --- /dev/null +++ b/packages/uni-components/src/nvue/utils.ts @@ -0,0 +1,6 @@ +export function useHoverClass(hoverClass: string) { + if (hoverClass && hoverClass !== 'none') { + return {} + } + return { hoverClass } +} diff --git a/packages/uni-components/src/vue/button/index.tsx b/packages/uni-components/src/vue/button/index.tsx index f4a8da56b85cc41d8fc943e789a971b48a63777a..bb482de12af75da219dde4e244bf3ba602d6d7d5 100644 --- a/packages/uni-components/src/vue/button/index.tsx +++ b/packages/uni-components/src/vue/button/index.tsx @@ -7,51 +7,11 @@ import { withWebEvent } from '../../helpers/useEvent' import { UniFormCtx, uniFormKey } from '../form' import { uniLabelKey, UniLabelCtx } from '../label' import { useListeners } from '../../helpers/useListeners' +import { buttonProps } from '../../components/button' export default /*#__PURE__*/ defineBuiltInComponent({ name: 'Button', - props: { - id: { - type: String, - default: '', - }, - hoverClass: { - type: String, - default: 'button-hover', - }, - hoverStartTime: { - type: [Number, String], - default: 20, - }, - hoverStayTime: { - type: [Number, String], - default: 70, - }, - hoverStopPropagation: { - type: Boolean, - default: false, - }, - disabled: { - type: [Boolean, String], - default: false, - }, - formType: { - type: String, - default: '', - }, - openType: { - type: String, - default: '', - }, - loading: { - type: [Boolean, String], - default: false, - }, - plain: { - type: [Boolean, String], - default: false, - }, - }, + props: buttonProps, setup(props, { slots }) { const rootRef = ref(null) if (__PLATFORM__ === 'app') {