various-ui
Version:
This is a test version of the Vue 3 component library
1 lines • 25.4 kB
Source Map (JSON)
{"version":3,"file":"composable.mjs","sources":["../../../../../packages/components/table2/src/composable.ts"],"sourcesContent":["//* Vue\r\nimport type { SetupContext, StyleValue } from \"vue\";\r\nimport { watch, ref, reactive, shallowRef, nextTick } from \"vue\";\r\n//* 动画库\r\nimport gsap from \"gsap\";\r\n//* 组件属性\r\nimport { UiTableProps2, UiTableEmits2, UiTableOption2 } from \"./component\";\r\nimport type { UiTableVars } from \"./types\";\r\n\r\nexport const useComposable = (define: UiTableProps2, emits: SetupContext<typeof UiTableEmits2>[\"emit\"]) => {\r\n //* 响应式变量\r\n const refs = {\r\n sorts: reactive({ key: \"\", value: \"\" }), //* 排序数据\r\n selects: ref<number[]>([]), //* 选择数据\r\n childrens: ref<number[]>([]), //* 嵌套数据\r\n };\r\n\r\n //* 节点\r\n const nodes = {\r\n head: ref<HTMLDivElement>(),\r\n main: ref<HTMLDivElement>(),\r\n bodys: ref<HTMLDivElement[]>([]),\r\n container: ref<HTMLDivElement>(),\r\n };\r\n\r\n //* 静态属性\r\n const variable = {\r\n size: 0,\r\n observer: shallowRef<ResizeObserver>(),\r\n };\r\n\r\n //* 一次性函数\r\n const disposable = {\r\n //* 表格内容属性\r\n body: (data: any, index: number) => {\r\n if (refs.selects.value.includes(index) || refs.childrens.value.includes(index)) {\r\n return { class: \"ui-active\" };\r\n }\r\n\r\n return {};\r\n },\r\n\r\n //* 表头额外控件属性\r\n extra: (data: UiTableOption2) => {\r\n return {\r\n \"align\": \"center\" as \"center\",\r\n \"trigger\": \"click\" as \"click\",\r\n \"direction\": \"bottom\" as \"bottom\",\r\n \"class-extra-name\": data[\"extra-name\"],\r\n };\r\n },\r\n\r\n //* 表格内容对齐属性\r\n align: (data: UiTableOption2): StyleValue => {\r\n switch (data.align) {\r\n case \"singularity\":\r\n return { \"justify-content\": \"center\", \"text-align\": \"left\" };\r\n case \"center\":\r\n return { \"justify-content\": \"center\", \"text-align\": \"center\" };\r\n case \"right\":\r\n return { \"justify-content\": \"flex-end\", \"text-align\": \"right\" };\r\n default:\r\n return { \"justify-content\": \"flex-start\", \"text-align\": \"left\" };\r\n }\r\n },\r\n };\r\n\r\n //* 函数列表\r\n const methods = {\r\n //* 初始化函数\r\n init: () => {\r\n //* 检测是否满足运行条件\r\n if (!nodes.container.value || !nodes.main.value || !nodes.head.value) return;\r\n else {\r\n //* 属性更新\r\n nodes.container.value.querySelectorAll(\":scope>div\").forEach((node) => ((node as HTMLDivElement).style.width = \"\"));\r\n }\r\n\r\n //* 数据初始化\r\n const rows = [nodes.head.value, ...nodes.bodys.value];\r\n const vars: UiTableVars = {\r\n replenish: 0,\r\n size: Math.floor(nodes.head.value.clientWidth) - 4, //! 这里-4是预留宽度,用于解决因小数点计算导致的尺寸偏差\r\n data: [],\r\n };\r\n\r\n //* 容器宽度不足, 停止初始化\r\n if (vars.size <= 0) return;\r\n\r\n //* 第一次遍历进行数据初始化\r\n define.option.forEach((value) => {\r\n //* 数据初始化\r\n const result = {\r\n key: value.key,\r\n min: value[\"min-width\"] || 0,\r\n max: value[\"max-width\"] || 0,\r\n width: value.width || value[\"min-width\"] || 0,\r\n replenish: !value.width,\r\n };\r\n\r\n //* 遍历td、th用于获取row尺寸\r\n if (!value.width) {\r\n rows.forEach((row) => {\r\n //* 获取对应的col node\r\n const node = row.querySelector(`.ui-table2-column[name=${value.key}]`) as HTMLElement;\r\n const context = node.firstElementChild as HTMLElement;\r\n //* 检测col node是否存在\r\n if (!node) return;\r\n else {\r\n //* 重置node属性\r\n node.style.whiteSpace = \"nowrap\";\r\n node.style.width = \"\";\r\n if (context) {\r\n context.style.width = \"\";\r\n }\r\n\r\n //* 判断当前尺寸是否为最大尺寸\r\n if (node.clientWidth > result.width) {\r\n if (result.max && node.clientWidth > result.max) {\r\n result.width = result.max;\r\n } else {\r\n result.width = Math.ceil(node.clientWidth) + 4;\r\n }\r\n }\r\n\r\n //* 回退样式调整\r\n node.style.whiteSpace = \"\";\r\n }\r\n });\r\n }\r\n\r\n //* 数据添加\r\n vars.data.push(result);\r\n });\r\n\r\n //* 统计实际表格所需尺寸\r\n const real = vars.data.reduce((former, current) => {\r\n return former + current.width;\r\n }, 0);\r\n\r\n //* 第二次遍历, 检测当前表格是需要进行补足还是删减尺寸, 并进行对应操作\r\n if (!define.overflow || (define.overflow && vars.size >= real)) {\r\n vars.replenish = vars.size - real;\r\n while (Math.floor(Math.abs(vars.replenish)) != 0) {\r\n //* 初始化允许增减长度的数据列表\r\n const data = vars.data.filter((val) => {\r\n return val.replenish && (vars.replenish > 0 ? !val.max || val.width < val.max : !val.min || val.width > val.min);\r\n });\r\n\r\n //* 当不存在允许增减长度的数据列表时退出...\r\n if (!data.length || vars.replenish / data.length == 0) break;\r\n\r\n //* 增减尺寸...\r\n if (vars.replenish > 0) {\r\n //* 补充尺寸(平均分配)\r\n const replenish = vars.replenish / data.length;\r\n data.forEach((value) => {\r\n if (value.max && value.width + replenish > value.max) {\r\n vars.replenish -= value.max - value.width;\r\n value.width = value.max;\r\n } else {\r\n value.width += replenish;\r\n vars.replenish -= replenish;\r\n }\r\n });\r\n } else if (vars.replenish < 0) {\r\n //* 删减尺寸(优先删减最长的尺寸)\r\n //* 获取data中最大的尺寸\r\n const max = data.sort((a, b) => b.width - a.width)?.[0]?.width || 0;\r\n for (let i = 0; i < data.length; i++) {\r\n if (vars.replenish == 0) break;\r\n if (data[i].width == max && data[i].width > data[i].min) {\r\n //* 当width与min之间的距离小于1时:特殊处理\r\n if (data[i].min && data[i].width - 1 < data[i].min) {\r\n vars.replenish += data[i].width - data[i].min;\r\n data[i].width = data[i].min;\r\n } else {\r\n vars.replenish += 1;\r\n data[i].width -= 1;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n } else {\r\n //* 数据初始化\r\n const size = real + Math.ceil(nodes.container.value.clientWidth - nodes.head.value.clientWidth) + 4;\r\n //* 属性更新\r\n nodes.container.value.querySelectorAll(\":scope>div\").forEach((node) => {\r\n (node as HTMLDivElement).style.width = size + \"px\";\r\n });\r\n }\r\n\r\n //* 第三次遍历设置定框的Row\r\n vars.data.forEach((value) => {\r\n //* 遍历td、th用于获取row尺寸\r\n rows.forEach((row) => {\r\n //* 获取对应的col node\r\n const node = row.querySelector(`.ui-table2-column[name=${value.key}]`) as HTMLElement;\r\n //* 检测col node是否存在\r\n if (!node) return;\r\n else {\r\n //* 设置尺寸\r\n node.style.width = value.width + \"px\";\r\n }\r\n });\r\n });\r\n\r\n //* 第四次遍历设置特殊对齐模式\r\n define.option\r\n .filter((value) => value.align == \"singularity\")\r\n .forEach((value) => {\r\n //* 数据初始化\r\n let result = 0;\r\n //* 统计列宽度的最大值\r\n nodes.bodys.value.forEach((row) => {\r\n const node = row.querySelector(`.ui-table2-column[name=${value.key}] > .ui-table2-context`) as HTMLElement;\r\n if (!node) return;\r\n else {\r\n result = Math.max(result, node.offsetWidth);\r\n }\r\n });\r\n\r\n //* 设置列宽\r\n nodes.bodys.value.forEach((row) => {\r\n const node = row.querySelector(`.ui-table2-column[name=${value.key}] > .ui-table2-context`) as HTMLElement;\r\n if (node && node.offsetWidth >= result) return;\r\n else {\r\n node.style.width = result + \"px\";\r\n }\r\n });\r\n });\r\n },\r\n\r\n //* 排序\r\n sort: (data?: UiTableOption2) => {\r\n if (!data) {\r\n refs.sorts.key = \"\";\r\n refs.sorts.value = \"\";\r\n } else {\r\n //* 排序算法\r\n if (refs.sorts.key != data.key) {\r\n refs.sorts.key = data.key;\r\n refs.sorts.value = \"asc\";\r\n } else {\r\n if (refs.sorts.value == \"asc\") {\r\n refs.sorts.value = \"desc\";\r\n } else {\r\n refs.sorts.key = \"\";\r\n refs.sorts.value = \"\";\r\n }\r\n }\r\n\r\n //* 响应排序事件\r\n emits(\"sort\", refs.sorts);\r\n }\r\n },\r\n\r\n //* 单选\r\n radio: (index?: number) => {\r\n if (index == undefined) refs.selects.value = [];\r\n else {\r\n //* 数据更新\r\n refs.selects.value = [index];\r\n //* 事件响应\r\n emits(\"radio\", define.data[index]);\r\n }\r\n },\r\n\r\n //* 选择\r\n select: (index: number) => {\r\n if (define.selector == \"checkbox\") methods.checkbox(index);\r\n else if (define.selector == \"children\") methods.children(index);\r\n else if (define.selector == \"radio\") {\r\n methods.radio(index);\r\n }\r\n },\r\n\r\n //* 多选\r\n checkbox: (index?: number) => {\r\n if (index == undefined) refs.selects.value = [];\r\n else {\r\n //* 数据更新\r\n const key = refs.selects.value.findIndex((value) => value == index);\r\n if (key != -1) {\r\n refs.selects.value.splice(key, 1);\r\n } else {\r\n refs.selects.value.push(index);\r\n }\r\n\r\n //* 返回结果初始化\r\n const result = refs.selects.value.map((index) => define.data[index]);\r\n //* 事件响应\r\n emits(\"checkbox\", result);\r\n }\r\n },\r\n\r\n //* 嵌套\r\n children: (index?: number, callBack?: (result: boolean) => void) => {\r\n if (index == undefined) refs.childrens.value = [];\r\n else {\r\n //* 数据更新\r\n const key = refs.childrens.value.findIndex((value) => value == index);\r\n if (key != -1) {\r\n refs.childrens.value.splice(key, 1);\r\n callBack && callBack(false);\r\n } else {\r\n refs.childrens.value.push(index);\r\n callBack && callBack(true);\r\n }\r\n }\r\n },\r\n };\r\n\r\n //* 侦听器\r\n const watchs = {\r\n watch_stop: watch(\r\n () => define.data,\r\n () => {\r\n //* 清空选择和嵌套数据\r\n refs.selects.value = [];\r\n refs.childrens.value = [];\r\n //* 初始化表格\r\n nextTick(() => methods.init());\r\n }\r\n ),\r\n };\r\n\r\n //* 响应事件\r\n const ons = {\r\n animation: {\r\n //* 动画(入场前)\r\n \"before-enter\": (el: Element) => gsap.set(el, { height: 0, opacity: 0 }),\r\n //* 动画(离场)\r\n \"leave\": (el: Element, onComplete: () => void) => gsap.to(el, { height: 0, opacity: 0, duration: 0.2, onComplete: onComplete }),\r\n //* 动画(入场)\r\n \"enter\": (el: Element, onComplete: () => void) => gsap.to(el, { height: \"auto\", opacity: 1, duration: 0.2, onComplete: onComplete }),\r\n },\r\n };\r\n\r\n return { ons, refs, nodes, watchs, methods, variable, disposable };\r\n};\r\n"],"names":["index"],"mappings":"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"}