various-ui
Version:
This is a test version of the Vue 3 component library
1 lines • 18.6 kB
Source Map (JSON)
{"version":3,"file":"composable.mjs","sources":["../../../../../packages/components/time-picker/src/composable.ts"],"sourcesContent":["//* Vue\r\nimport type { SetupContext } from \"vue\";\r\nimport { nextTick, computed, reactive, inject, ref } from \"vue\";\r\n//* 组件引入\r\nimport type UiSimplebar from \"@various/components/simplebar\";\r\n//* 工具函数\r\nimport { node, dispose, utility, animations } from \"@various/utils\";\r\n//* 公共属性\r\nimport { UiFormEmitterKey } from \"@various/constants\";\r\n//* 组件属性\r\nimport type { UiTimePickerProps, UiTimePickerEmits } from \"./component\";\r\nimport { analyzes } from \"./utils\";\r\n\r\nexport const useComposable = (define: UiTimePickerProps, emits: SetupContext<typeof UiTimePickerEmits>[\"emit\"]) => {\r\n //* 初始化mitt\r\n const emitter = inject(UiFormEmitterKey, undefined);\r\n\r\n //* 静态变量\r\n const vars = {\r\n timer: <NodeJS.Timeout | undefined>undefined,\r\n observer: <ResizeObserver | undefined>undefined,\r\n };\r\n\r\n //* 响应式变量\r\n const refs = {\r\n visible: ref<boolean>(false),\r\n };\r\n\r\n //* 节点列表\r\n const nodes = {\r\n sHourser: ref<InstanceType<typeof UiSimplebar>>(),\r\n eHourser: ref<InstanceType<typeof UiSimplebar>>(),\r\n sMinuteser: ref<InstanceType<typeof UiSimplebar>>(),\r\n sSecondser: ref<InstanceType<typeof UiSimplebar>>(),\r\n eMinuteser: ref<InstanceType<typeof UiSimplebar>>(),\r\n eSecondser: ref<InstanceType<typeof UiSimplebar>>(),\r\n container: ref<HTMLElement>(), //* 时间选择器节点\r\n candidates: ref<HTMLElement>(), //* 候选项容器节点\r\n };\r\n\r\n //* 计算属性\r\n const computeds = {\r\n //* 组件类\r\n className: computed(() => (refs.visible.value ? \"ui-active\" : \"\")),\r\n sTime: computed(() => analyzes.date(define.modelValue?.start)),\r\n eTime: computed(() => analyzes.date(define.modelValue?.end)),\r\n };\r\n\r\n //* 函数列表\r\n const methods = {\r\n //* 初始化函数\r\n init: () => {\r\n //* 数据初始化\r\n const number = define.mode == \"minutes\" ? 2 : 3;\r\n const result = {\r\n start: computeds.sTime.value\r\n .slice(0, number)\r\n .map((value) => value.toString().padStart(2, \"0\"))\r\n .join(\":\"),\r\n end: computeds.eTime.value\r\n .slice(0, number)\r\n .map((value) => value.toString().padStart(2, \"0\"))\r\n .join(\":\"),\r\n };\r\n\r\n //* 事件响应\r\n emits(\"update:modelValue\", result);\r\n emits(\"change\", result);\r\n emitter?.emit(define.name, \"change\");\r\n },\r\n\r\n //* 显示函数\r\n show: () => {\r\n //* 检测窗口是否已开启\r\n if (refs.visible.value) return methods.hidden();\r\n else {\r\n //* 更新控制变量\r\n refs.visible.value = true;\r\n //* 下一帧初始化组件\r\n nextTick(() => {\r\n //* 检测是否满足运行条件\r\n if (!nodes.container.value || !nodes.candidates.value) return;\r\n else {\r\n //* 将内容添加到视图容器中\r\n node.append(document.body, nodes.candidates.value);\r\n //* 隐藏事件\r\n window.addEventListener(\"click\", methods.hidden, { capture: true, once: true });\r\n //* 注册观察者\r\n vars.observer?.disconnect();\r\n vars.observer = new ResizeObserver(() => {\r\n if (!nodes.container.value || !nodes.candidates.value) return;\r\n else {\r\n //* 数据初始化\r\n const data = { container: nodes.container.value, view: nodes.candidates.value };\r\n dispose.boundary.relativeContainerBody(data, {\r\n direction: \"bottom\",\r\n offset: 8,\r\n align: \"center\",\r\n });\r\n\r\n //* 位置对齐\r\n nodes.sHourser.value?.move(computeds.sTime.value[0] * 30);\r\n nodes.sMinuteser.value?.move(computeds.sTime.value[1] * 30);\r\n nodes.sSecondser.value?.move(computeds.sTime.value[2] * 30);\r\n nodes.eHourser.value?.move(computeds.eTime.value[0] * 30);\r\n nodes.eMinuteser.value?.move(computeds.eTime.value[1] * 30);\r\n nodes.eSecondser.value?.move(computeds.eTime.value[2] * 30);\r\n }\r\n });\r\n\r\n vars.observer.observe(document.documentElement);\r\n }\r\n });\r\n }\r\n },\r\n\r\n //* 隐藏函数\r\n hidden: (ev?: Event): void => {\r\n //* 检测是否满足运行条件\r\n if (!nodes.container.value || !nodes.candidates.value) return;\r\n else {\r\n //* 初始化数据\r\n const target = ev?.target as HTMLElement;\r\n //* 检测是否需要进行关闭候选菜单\r\n if (target && (node.includes(target, nodes.container.value) || node.includes(target, nodes.candidates.value))) {\r\n return window.addEventListener(\"click\", methods.hidden, { capture: true, once: true });\r\n } else {\r\n //* 状态更新\r\n refs.visible.value = false;\r\n //* 注销观察者\r\n vars.observer?.disconnect();\r\n //* 表单校验响应\r\n emitter?.emit(define.name, \"blur\");\r\n }\r\n }\r\n },\r\n\r\n //* 时间滚动回调\r\n scroll: (index: number, node?: InstanceType<typeof UiSimplebar>, finish?: boolean) => {\r\n //* 数据初始化\r\n const number = define.mode == \"minutes\" ? 2 : 3;\r\n const simulate = { start: computeds.sTime.value, end: computeds.eTime.value };\r\n const container = node?.$el.querySelector(\".ui-simplebar-container\");\r\n if (finish) simulate.end[index] = Math.floor((container?.scrollTop || 0) / 30);\r\n else {\r\n simulate.start[index] = Math.floor((container?.scrollTop || 0) / 30);\r\n }\r\n\r\n //* 数据格式化\r\n const result = {\r\n start: simulate.start\r\n .slice(0, number)\r\n .map((value) => value.toString().padStart(2, \"0\"))\r\n .join(\":\"),\r\n end: simulate.end\r\n .slice(0, number)\r\n .map((value) => value.toString().padStart(2, \"0\"))\r\n .join(\":\"),\r\n };\r\n\r\n //* 事件响应\r\n emits(\"update:modelValue\", result);\r\n //* 停止滚动0.5s时调整位置\r\n vars.timer && clearTimeout(vars.timer);\r\n vars.timer = setTimeout(() => {\r\n //* 事件响应\r\n emits(\"change\", result);\r\n emitter?.emit(define.name, \"change\");\r\n nextTick(() => {\r\n //* 位置对齐\r\n nodes.sHourser.value?.move(computeds.sTime.value[0] * 30);\r\n nodes.sMinuteser.value?.move(computeds.sTime.value[1] * 30);\r\n nodes.sSecondser.value?.move(computeds.sTime.value[2] * 30);\r\n nodes.eHourser.value?.move(computeds.eTime.value[0] * 30);\r\n nodes.eMinuteser.value?.move(computeds.eTime.value[1] * 30);\r\n nodes.eSecondser.value?.move(computeds.eTime.value[2] * 30);\r\n });\r\n }, 500);\r\n },\r\n };\r\n\r\n //* 属性列表\r\n const binds = reactive({\r\n end: computed(() => {\r\n return {\r\n placeholder: define.placeholder.end,\r\n value: define.modelValue?.end,\r\n };\r\n }),\r\n\r\n start: computed(() => {\r\n return {\r\n placeholder: define.placeholder.start,\r\n value: define.modelValue?.start,\r\n };\r\n }),\r\n\r\n //* 容器\r\n container: computed(() => {\r\n return {\r\n class: computeds.className.value,\r\n style: {\r\n width: utility.isNumber(define.width) ? define.width + \"px\" : define.width,\r\n },\r\n };\r\n }),\r\n\r\n //* 候选项容器\r\n candidates: computed(() => {\r\n return {\r\n class: define.classExtraName || \"\",\r\n style: {\r\n zIndex: define.zIndex,\r\n },\r\n };\r\n }),\r\n });\r\n\r\n //* 响应事件\r\n const ons = {\r\n //* 候选项\r\n candidates: animations.selector(true, {\r\n beforeEnter: () => emits(\"before-enter\"),\r\n beforeLeave: () => emits(\"before-leave\"),\r\n afterEnter: () => emits(\"after-enter\"),\r\n afterLeave: () => emits(\"after-leave\"),\r\n }),\r\n };\r\n\r\n return { ons, vars, refs, nodes, binds, methods, computeds };\r\n};\r\n"],"names":["node.append","_a","dispose.boundary.relativeContainerBody","node.includes","node","utility.isNumber","animations.selector"],"mappings":"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"}