UNPKG

vexip-ui

Version:

A Vue 3 UI library, Highly customizability, full TypeScript, performance pretty good

1 lines 6.93 kB
{"version":3,"file":"slider-trigger.vue2.cjs","sources":["../../../components/slider/slider-trigger.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { Tooltip } from '@/components/tooltip'\n\nimport { computed, ref } from 'vue'\n\nimport { useHoverDelay, useNameHelper } from '@vexip-ui/config'\nimport { useModifier, useSetTimeout } from '@vexip-ui/hooks'\n\nimport type { PropType } from 'vue'\nimport type { TooltipExposed } from '@/components/tooltip'\nimport type { SliderTipProps } from './symbol'\n\ndefineOptions({ name: 'SliderTrigger' })\n\nconst props = defineProps({\n value: {\n type: Number,\n default: 0,\n },\n tipTransfer: {\n type: [Boolean, String],\n default: false,\n },\n hideTip: {\n type: Boolean,\n default: false,\n },\n vertical: {\n type: Boolean,\n default: false,\n },\n min: {\n type: Number,\n default: 0,\n },\n max: {\n type: Number,\n default: 100,\n },\n disabled: {\n type: Boolean,\n default: false,\n },\n loading: {\n type: Boolean,\n default: false,\n },\n reverse: {\n type: Boolean,\n default: false,\n },\n sliding: {\n type: Boolean,\n default: false,\n },\n tipHover: {\n type: Boolean,\n default: false,\n },\n tipProps: {\n type: Object as PropType<SliderTipProps>,\n default: () => ({}),\n },\n})\n\nconst emit = defineEmits(['key-minus', 'key-plus'])\n\ndefineSlots<{ default: () => any, tip: () => any }>()\n\nconst nh = useNameHelper('slider')\nconst hoverDelay = useHoverDelay()\n\nconst isTipShow = ref(false)\n\nconst tooltip = ref<(InstanceType<typeof Tooltip> & TooltipExposed) | null>(null)\nconst handler = ref<HTMLElement>()\n\nconst { timer } = useSetTimeout()\nconst { target: wrapper } = useModifier({\n passive: false,\n onKeyDown: (event, modifier) => {\n if (modifier.up || modifier.down || modifier.left || modifier.right) {\n disableEvent(event)\n\n const extraType = event.ctrlKey\n ? 'ctrl'\n : event.shiftKey\n ? 'shift'\n : event.altKey\n ? 'alt'\n : undefined\n\n if (modifier.up || modifier.left) {\n emit('key-minus', extraType)\n } else {\n emit('key-plus', extraType)\n }\n }\n },\n})\n\nconst tipClass = computed(() => [nh.be('tip'), props.tipProps?.tipClass])\n\ndefineExpose({ updateTooltip, focus, blur })\n\nfunction showTooltip() {\n clearTimeout(timer.hover)\n\n if (!props.disabled) {\n timer.hover = setTimeout(() => {\n isTipShow.value = true\n }, hoverDelay.value)\n }\n}\n\nfunction hideTooltip() {\n clearTimeout(timer.hover)\n\n timer.hover = setTimeout(() => {\n isTipShow.value = false\n }, hoverDelay.value)\n}\n\nfunction disableEvent<E extends Event>(event: E) {\n if (event.cancelable) {\n event.stopPropagation()\n event.preventDefault()\n }\n}\n\nfunction updateTooltip() {\n if (tooltip.value) {\n tooltip.value.updatePopper()\n }\n}\n\nfunction focus(options?: FocusOptions) {\n handler.value?.focus(options)\n}\n\nfunction blur() {\n handler.value?.blur()\n}\n</script>\n\n<template>\n <div\n ref=\"wrapper\"\n :class=\"nh.be('trigger')\"\n tabindex=\"-1\"\n @touchstart=\"disableEvent\"\n >\n <Tooltip\n ref=\"tooltip\"\n :placement=\"vertical ? 'right' : 'top'\"\n v-bind=\"tipProps\"\n trigger=\"custom\"\n :transfer=\"tipTransfer\"\n :visible=\"isTipShow || sliding\"\n :tip-class=\"tipClass\"\n :disabled=\"hideTip\"\n :no-hover=\"!tipHover\"\n @tip-enter=\"showTooltip\"\n @tip-leave=\"hideTooltip\"\n >\n <template #trigger>\n <div\n ref=\"handler\"\n :class=\"{\n [nh.be('button')]: true,\n [nh.bem('button', 'loading')]: loading,\n [nh.bem('button', 'sliding')]: sliding\n }\"\n role=\"slider\"\n tabindex=\"0\"\n :aria-valuenow=\"value\"\n :aria-valuemin=\"min\"\n :aria-valuemax=\"max\"\n :aria-disabled=\"disabled\"\n @mouseenter=\"showTooltip\"\n @mouseleave=\"hideTooltip\"\n >\n <slot>\n <div :class=\"nh.be('handler')\"></div>\n </slot>\n </div>\n </template>\n <slot name=\"tip\">\n {{ value }}\n </slot>\n </Tooltip>\n </div>\n</template>\n"],"names":["props","__props","emit","__emit","nh","useNameHelper","hoverDelay","useHoverDelay","isTipShow","ref","tooltip","handler","timer","useSetTimeout","wrapper","useModifier","event","modifier","disableEvent","extraType","tipClass","computed","_a","__expose","updateTooltip","focus","blur","showTooltip","hideTooltip","options","_createElementBlock","_normalizeClass","_unref","_createVNode","_mergeProps","_createElementVNode","_renderSlot","_ctx"],"mappings":"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"}