various-ui
Version:
This is a test version of the Vue 3 component library
1 lines • 19.6 kB
Source Map (JSON)
{"version":3,"file":"composable.mjs","sources":["../../../../../packages/components/date-range-picker/src/composable.ts"],"sourcesContent":["//* Vue\r\nimport type { SetupContext } from \"vue\";\r\nimport { nextTick, computed, reactive, inject, ref, watch } from \"vue\";\r\n//* 工具函数\r\nimport { node, dispose, utility, animations } from \"@various/utils\";\r\n//* 公共属性\r\nimport { UiFormEmitterKey } from \"@various/constants\";\r\n//* 组件属性\r\nimport type { UiDateRangePickerProps, UiDateRangePickerEmits } from \"./component\";\r\nimport { analyzes } from \"./utils\";\r\n//* 组件引入\r\nimport PickerTime from \"../components/time/index.vue\";\r\nimport PickerDate from \"../components/date/index.vue\";\r\nimport PickerMonth from \"../components/month/index.vue\";\r\n\r\ntype ComponentNodeType = InstanceType<typeof PickerDate> | InstanceType<typeof PickerTime> | InstanceType<typeof PickerMonth>;\r\n\r\nexport const useComposable = (define: UiDateRangePickerProps, emits: SetupContext<typeof UiDateRangePickerEmits>[\"emit\"]) => {\r\n //* 初始化mitt\r\n const emitter = inject(UiFormEmitterKey, undefined);\r\n\r\n //* 静态变量\r\n const vars = {\r\n observer: <ResizeObserver | undefined>undefined,\r\n };\r\n\r\n //* 响应式变量\r\n const refs = {\r\n end: ref<Date | undefined>(analyzes.date(define.modelValue.end)),\r\n date: ref<Date>(analyzes.date(define.modelValue.start) || analyzes.date(define.modelValue.end) || new Date()),\r\n mode: ref<string>(define.mode), //* 窗口类型\r\n start: ref<Date | undefined>(analyzes.date(define.modelValue.start)),\r\n visible: ref<boolean>(false),\r\n };\r\n\r\n //* 节点列表\r\n const nodes = {\r\n container: ref<HTMLElement>(), //* 时间选择器节点\r\n candidates: ref<HTMLElement>(), //* 候选项容器节点\r\n components: ref<ComponentNodeType>(), //* 候选项组件节点\r\n };\r\n\r\n //* 计算属性\r\n const computeds = {\r\n //* 组件类\r\n className: computed(() => (refs.visible.value ? \"ui-active\" : \"\")),\r\n view: computed(() => {\r\n if (refs.mode.value == \"month\") return PickerMonth;\r\n else if (refs.mode.value == \"time\") return PickerTime;\r\n else {\r\n return PickerDate;\r\n }\r\n }),\r\n };\r\n\r\n //* 函数列表\r\n const methods = {\r\n //* 显示函数\r\n show: (ev: MouseEvent) => {\r\n //* 检测窗口是否已开启\r\n if (refs.visible.value) {\r\n if (refs.mode.value != \"time\") return methods.hidden();\r\n else {\r\n return nodes.components.value?.init({ end: refs.end.value, date: refs.date.value, start: refs.start.value, event: ev });\r\n }\r\n } else {\r\n //* 更新控制变量\r\n refs.visible.value = true;\r\n refs.mode.value = define.mode;\r\n //* 下一帧初始化组件\r\n nextTick(() => {\r\n //* 组件内容初始化\r\n nodes.components.value?.init({ end: define.modelValue.end, date: refs.date.value, start: define.modelValue.start, event: ev });\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\r\n vars.observer.observe(document.documentElement);\r\n }\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 refs.start.value = analyzes.date(define.modelValue.start);\r\n refs.end.value = analyzes.date(define.modelValue.end);\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 //* 侦听器列表\r\n const watchs = {\r\n stop_watch: watch(\r\n () => define.modelValue,\r\n () => {\r\n refs.end.value = analyzes.date(define.modelValue.end);\r\n refs.start.value = analyzes.date(define.modelValue.start);\r\n refs.date.value = analyzes.date(define.modelValue.start) || analyzes.date(define.modelValue.end) || new Date();\r\n }\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: analyzes.string(define.mode, refs.end.value),\r\n };\r\n }),\r\n\r\n start: computed(() => {\r\n return {\r\n placeholder: define.placeholder.start,\r\n value: analyzes.string(define.mode, refs.start.value),\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 components: {\r\n //* 数据更新\r\n change: (data: { start?: Date; end?: Date }) => {\r\n //* 数值更新\r\n refs.end.value = data.end;\r\n refs.start.value = data.start;\r\n emits(\"update:modelValue\", data);\r\n emitter?.emit(define.name, \"change\");\r\n nextTick(() => {\r\n if (define.modelValue.start && define.modelValue.end) {\r\n methods.hidden();\r\n }\r\n });\r\n },\r\n\r\n //* 状态更新\r\n update: (data: { year?: number; month?: number }) => {\r\n //* 数据更新\r\n if (data.year != undefined) refs.date.value.setFullYear(data.year);\r\n if (data.month != undefined) {\r\n refs.date.value.setMonth(data.month);\r\n }\r\n\r\n //* 组件状态更新\r\n nodes.components.value?.update(refs.date.value);\r\n },\r\n\r\n //* 提示更新\r\n message: (data: { start?: Date; end?: Date }) => {\r\n refs.start.value = data.start;\r\n refs.end.value = data.end;\r\n },\r\n\r\n //* 模式切换\r\n switchover: (mode: string) => {\r\n //* 数据更新\r\n if (mode == \"auto\") refs.mode.value = define.mode;\r\n else {\r\n refs.mode.value = mode;\r\n }\r\n\r\n nextTick(() => {\r\n //* 组件初始化\r\n if (refs.mode.value == \"time\") {\r\n nodes.components.value?.init({ end: refs.end.value, date: refs.date.value, start: refs.start.value });\r\n } else {\r\n nodes.components.value?.init({ end: define.modelValue.end, date: refs.date.value, start: define.modelValue.start });\r\n }\r\n\r\n //* 位置更新\r\n nextTick(() => {\r\n //* 检测是否满足运行条件\r\n if (!nodes.container.value || !nodes.candidates.value) return;\r\n else {\r\n //* 隐藏事件\r\n window.addEventListener(\"click\", methods.hidden, { capture: true, once: false });\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 });\r\n },\r\n },\r\n };\r\n\r\n return { ons, vars, refs, nodes, binds, watchs, methods, computeds };\r\n};\r\n"],"names":["PickerMonth","PickerTime","PickerDate","_a","node.append","dispose.boundary.relativeContainerBody","node.includes","utility.isNumber","animations.selector"],"mappings":"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"}