{"version":3,"file":"Checkboxes.vue2.mjs","sources":["../../../../../../packages/components/checkboxes/src/Checkboxes.vue"],"sourcesContent":["<script lang=\"ts\">\nimport { defineComponent as DO_defineComponent } from 'vue';\nexport default /*#__PURE__*/ DO_defineComponent({\n\tname: 'ToCheckboxes'\n});\n</script>\n<template>\n\t<div :id=\"id\" :flex=\"flex ? flex : null\">\n\t\t<span v-if=\"validateRequired\" v-show=\"false\" class=\"to-validate\" :req=\"validateRequired\" :desc=\"validateDesc\" :value=\"checks.length > 0 ? 'true' : ''\"></span>\n\t\t<slot></slot>\n\t</div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed, inject, onBeforeUnmount, watch, provide } from 'vue'\n\n\n\nexport interface ToCheckboxesProps {\n\t// 表单校验\n\tdesc?: string\n\tid?: string\n\trequired?: boolean\n\tvalue?: string\n\tmodelValue: string\n\tbeforeChange?(): boolean | Promise<boolean>\n\tflex?: boolean\n}\n\nconst props = withDefaults(defineProps<ToCheckboxesProps>(), {\n\tdesc: '',\n\tid: '',\n\trequired: false,\n\tvalue: '',\n\tmodelValue: '',\n\tflex: false,\n\tbeforeChange: () => true\n})\n\nconst emit = defineEmits(['change', 'update:modelValue'])\n\n// 注入表单相关\nconst ToFormItem = inject('ToFormItem', '')\n\n// 响应式数据\nconst value = ref<string>(props.modelValue)\nconst maxId = ref<number>(-1)\nconst options = ref<any[]>([])\nconst checks = ref<any[]>([])\nconst removeItems = ref<any[]>([])\nconst timer = ref<NodeJS.Timeout | null>(null)\n\n// 计算属性\nconst validateRequired = computed(() => {\n\tif (props.required) {\n\t\treturn 'true'\n\t} else if (ToFormItem && (ToFormItem as any).required) {\n\t\treturn 'true'\n\t} else {\n\t\treturn 'false'\n\t}\n})\n\nconst validateDesc = computed(() => {\n\tif (props.desc) {\n\t\treturn props.desc\n\t} else if (ToFormItem && (ToFormItem as any).label) {\n\t\treturn (ToFormItem as any).label\n\t} else {\n\t\treturn ''\n\t}\n})\n\n// 方法\nconst change = (checked: boolean, value: string, label: string) => {\n\tlet arr: string[] = []\n\tchecks.value = options.value.filter(item => item.checked)\n\tchecks.value.forEach(el => {\n\t\tarr.push(el.value)\n\t})\n\temit('change', arr.join(','), checked, value, label)\n\temit('update:modelValue', arr.join(','))\n}\n\nconst clear = () => {\n\temit('change', '', false)\n\temit('update:modelValue', '')\n}\n\nconst all = () => {\n\tlet arr: string[] = []\n\toptions.value.forEach(el => {\n\t\tif (!el.disabled) {\n\t\t\tarr.push(el.value)\n\t\t}\n\t})\n\temit('change', arr.join(','))\n\temit('update:modelValue', arr.join(','))\n}\n\nconst observe = () => {\n\tlet arr: string[] = []\n\toptions.value\n\t\t.filter(item => !item.checked)\n\t\t.forEach(el => {\n\t\t\tarr.push(el.value)\n\t\t})\n\temit('change', arr.join(','))\n\temit('update:modelValue', arr.join(','))\n}\n\nconst removeItemValue = (itemOldValue: string) => {\n\tif (timer.value) {\n\t\tclearTimeout(timer.value)\n\t}\n\tremoveItems.value.push(itemOldValue)\n\n\ttimer.value = setTimeout(() => {\n\t\tlet arr = props.value.split(',')\n\t\tarr = arr.filter(item => !removeItems.value.includes(item))\n\t\toptions.value = options.value.filter(item => !removeItems.value.includes(item.value))\n\t\temit('change', arr.join(','))\n\t\temit('update:modelValue', arr.join(','))\n\t}, 1)\n}\n\nconst pushOptions = (option: { value: any; checked: boolean }) => {\n\tconst selectedValues = value.value.split(',').filter(v => v !== '')\n\tif (selectedValues.includes(String(option.value))) {\n\t\toption.checked = true\n\t}\n\toptions.value.push(option)\n\tchecks.value = options.value.filter(item => item.checked)\n}\n\n// 清理定时器\nonBeforeUnmount(() => {\n\tif (timer.value) {\n\t\tclearTimeout(timer.value)\n\t}\n})\n\n// 监听value变化，同步checkbox状态\nwatch(\n\t() => props.modelValue,\n\tnewVal => {\n\t\tif (newVal !== undefined) {\n\t\t\tconst selectedValues = newVal.split(',').filter(v => v !== '')\n\t\t\toptions.value.forEach(option => {\n\t\t\t\toption.checked = selectedValues.includes(String(option.value))\n\t\t\t})\n\t\t\tchecks.value = options.value.filter(item => item.checked)\n\t\t}\n\t}\n)\n\nexport interface ProvideType {\n\tvalue: import('vue').ComputedRef<string>\n\tprops: ToCheckboxesProps\n\tpushOptions: (option: { id?: number; value: any; label?: string; checked: boolean; disabled?: boolean }) => void\n\toptions: import('vue').Ref<\n\t\tArray<{\n\t\t\tid?: number\n\t\t\tvalue: any\n\t\t\tlabel?: string\n\t\t\tchecked: boolean\n\t\t\tdisabled?: boolean\n\t\t}>\n\t>\n\tremoveItemValue: (itemOldValue: any) => void\n\tchecks: import('vue').Ref<any[]>\n\tchange: (checked: boolean, value: any, label: string) => void\n\tmaxId: import('vue').Ref<number>\n}\n\nprovide<ProvideType>('ToCheckboxes', {\n\tvalue: computed(() => props.modelValue),\n\tprops,\n\tpushOptions,\n\toptions,\n\tremoveItemValue,\n\tchecks,\n\tchange,\n\tmaxId\n})\n\n// 暴露方法和数据给子组件\ndefineExpose({\n\tmaxId,\n\toptions,\n\tchecks,\n\tvalue: computed(() => props.modelValue),\n\tchange,\n\tclear,\n\tall,\n\tobserve,\n\tremoveItemValue,\n\tpushOptions\n})\n</script>\n"],"names":["DO_defineComponent","value","_createElementBlock","id","flex","_renderSlot"],"mappings":"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"}