UNPKG

various-ui

Version:

This is a test version of the Vue 3 component library

1 lines 19 kB
{"version":3,"file":"composable.mjs","sources":["../../../../../packages/components/date-picker/src/composable.ts"],"sourcesContent":["//* 插件\r\nimport { ref, inject, reactive, computed, nextTick, SetupContext } from \"vue\";\r\n//* 公共属性\r\nimport { UiFormEmitterKey } from \"@various/constants\";\r\n//* 工具函数\r\nimport { node, utility, dispose, animations } from \"@various/utils\";\r\n//* 组件属性\r\nimport { UiDatePickerProps, UiDatePickerEmits } from \"./component\";\r\nimport type { ModuleUpdateData } from \"./types\";\r\n//* 组件引入\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 PickerMonth>;\r\n\r\nexport const useComposable = (define: UiDatePickerProps, emits: SetupContext<typeof UiDatePickerEmits>[\"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 date: ref<Date>(), //* 临时的日期对象\r\n mode: ref<string>(define.mode), //* 临时的窗口类型\r\n visible: ref<boolean>(false), //* 控制变量\r\n };\r\n\r\n //* 响应式节点变量\r\n const nodes = {\r\n components: ref<ComponentNodeType>(), //* 候选项组件节点\r\n container: ref<HTMLElement>(), //* 时间选择器节点\r\n body: ref<HTMLElement>(), //* 候选项容器节点\r\n };\r\n\r\n //* 解析数据\r\n const analyzes = {\r\n //* 输入框的日期解析\r\n analyzeDate: computed(() => {\r\n const date = new Date(refs.date.value || define.modelValue || \"\");\r\n if (date.toString() == \"Invalid Date\") {\r\n return new Date();\r\n } else {\r\n return date;\r\n }\r\n }),\r\n\r\n //* 解析当前组件\r\n analyzeComponent: computed(() => {\r\n const mode = refs.mode.value || define.mode;\r\n if (mode == \"month\") return PickerMonth;\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: () => {\r\n //* 检测窗口是否已开启\r\n if (refs.visible.value) return methods.hidden();\r\n\r\n //* 更新控制变量\r\n refs.mode.value = define.mode;\r\n refs.visible.value = true;\r\n //* 下一帧进行候选项组件初始化\r\n nextTick(() => {\r\n //* 组件数据初始化\r\n const data = { date: analyzes.analyzeDate.value, realityDate: new Date(define.modelValue || \"\") };\r\n //* 组件内容初始化\r\n nodes.components.value?.init(data, define.disabled);\r\n\r\n //* 下一帧进行候选窗口的定位与时间挂载\r\n nextTick(() => {\r\n //* 检测是否满足运行条件\r\n if (!nodes.container.value || !nodes.body.value) return;\r\n else {\r\n //* 将内容添加到视图容器中\r\n node.append(document.body, nodes.body.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.body.value) return;\r\n else {\r\n //* 数据初始化\r\n const data = { container: nodes.container.value, view: nodes.body.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 clear: () => {\r\n //* 更新input value\r\n emits(\"update:modelValue\", \"\");\r\n //* 响应input清空事件\r\n emits(\"clear\");\r\n\r\n //* 响应表单事件\r\n if (emitter?.emit) {\r\n emitter.emit(define.name || \"\", \"change\");\r\n }\r\n\r\n //* 关闭候选窗口\r\n methods.hidden();\r\n },\r\n\r\n //* 隐藏函数\r\n hidden: (ev?: Event) => {\r\n //* 检测是否满足运行条件\r\n if (!nodes.container.value || !nodes.body.value) return;\r\n\r\n //* 初始化数据\r\n const target = ev?.target as HTMLElement;\r\n\r\n //* 检测是否需要进行关闭候选菜单\r\n if (target && (node.includes(target, nodes.container.value) || node.includes(target, nodes.body.value))) return;\r\n else {\r\n //* 注销观察者\r\n vars.observer?.disconnect();\r\n //* 关闭窗口\r\n refs.visible.value = false;\r\n }\r\n },\r\n\r\n //* 响应候选窗口更新事件\r\n update: (mode: string, data: ModuleUpdateData) => {\r\n //* 更新日期\r\n utility.isNumber(data.day) && analyzes.analyzeDate.value.setDate(data.day);\r\n utility.isNumber(data.year) && analyzes.analyzeDate.value.setFullYear(data.year);\r\n utility.isNumber(data.month) && analyzes.analyzeDate.value.setMonth(data.month);\r\n\r\n //* 更新候选组件模式\r\n refs.mode.value = mode;\r\n //* 下一帧初始化组件\r\n nextTick(() => {\r\n //* 组件数据初始化\r\n const data = { date: analyzes.analyzeDate.value, realityDate: new Date(define.modelValue || \"\") };\r\n //* 组件内容初始化\r\n nodes.components.value?.init(data, define.disabled);\r\n //* 下一帧进行候选窗口的定位与时间挂载\r\n nextTick(() => {\r\n //* 检测是否满足运行条件\r\n if (!nodes.container.value || !nodes.body.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.body.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 change: (data: ModuleUpdateData) => {\r\n //* 更新日期\r\n utility.isNumber(data.day) && analyzes.analyzeDate.value.setDate(data.day);\r\n utility.isNumber(data.year) && analyzes.analyzeDate.value.setFullYear(data.year);\r\n utility.isNumber(data.month) && analyzes.analyzeDate.value.setMonth(data.month);\r\n\r\n //* 检测是否选择完成\r\n if (define.mode == refs.mode.value) {\r\n //* 初始化时间数据\r\n const cYear = analyzes.analyzeDate.value.getFullYear();\r\n const cDate = analyzes.analyzeDate.value.getDate().toString().padStart(2, \"0\");\r\n const cMonth = (analyzes.analyzeDate.value.getMonth() + 1).toString().padStart(2, \"0\");\r\n\r\n //* 更新input value\r\n if (define.mode == \"month\") emits(\"update:modelValue\", `${cYear}-${cMonth}`);\r\n else {\r\n emits(\"update:modelValue\", `${cYear}-${cMonth}-${cDate}`);\r\n }\r\n\r\n //* 响应时间选择事件\r\n emits(\"change\", analyzes.analyzeDate.value);\r\n\r\n //* 响应表单事件\r\n if (emitter?.emit) {\r\n emitter.emit(define.name || \"\", \"change\");\r\n }\r\n\r\n //* 关闭候选窗口\r\n methods.hidden();\r\n } else {\r\n methods.update(define.mode, {});\r\n }\r\n },\r\n };\r\n\r\n //* 计算属性\r\n const computeds = {\r\n //* 组件值\r\n value: computed(() => define.modelValue),\r\n //* 组件类\r\n className: computed(() => {\r\n //* 初始化数据\r\n const className: string[] = [];\r\n //* 判断是否需要添加size类名\r\n if (define.size != \"default\") className.push(`ui-${define.size}`);\r\n //* 判断是否需要添加clearable类名\r\n if (define.modelValue) className.push(`ui-clearable`);\r\n //* 判断是否需要添加ui-active类名\r\n if (refs.visible.value) className.push(\"ui-active\");\r\n\r\n return className.join(\" \");\r\n }),\r\n };\r\n\r\n //* 属性\r\n const binds = reactive({\r\n //* 主体\r\n main: computed(() => {\r\n return {\r\n value: computeds.value.value,\r\n placeholder: define.placeholder,\r\n };\r\n }),\r\n\r\n //* 候选项容器\r\n body: 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 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 //* 响应时间\r\n const ons = {\r\n //* 候选项\r\n candidates: animations.selector(define.animation, {\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, analyzes, animations };\r\n};\r\n"],"names":["PickerMonth","PickerDate","_a","node.append","data","dispose.boundary.relativeContainerBody","node.includes","utility.isNumber","animations.selector","animations"],"mappings":"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"}