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