{"version":3,"file":"column-checkbox-group.mjs","sources":["../../../../components/table/components/column-checkbox-group.tsx"],"sourcesContent":["import { computed, defineComponent, PropType, toRefs } from 'vue';\nimport Checkbox, { CheckboxGroup, CheckboxGroupChangeContext, CheckboxGroupProps, CheckboxProps } from '../../checkbox';\nimport { intersection } from 'lodash-es';\nimport { usePrefixClass } from '@tdesign/shared-hooks';\n\nexport type ColumnCheckboxGroupProps = Pick<CheckboxGroupProps, 'value' | 'onChange' | 'options'> & {\n  checkboxProps: CheckboxGroupProps;\n  label?: string;\n  uniqueKey?: string;\n};\n\nexport default defineComponent({\n  name: 'ColumnCheckboxGroup',\n  props: {\n    checkboxProps: Object as PropType<ColumnCheckboxGroupProps['checkboxProps']>,\n    options: {\n      type: Array as PropType<ColumnCheckboxGroupProps['options']>,\n      default: () => [] as ColumnCheckboxGroupProps['options'],\n    },\n    label: String,\n    uniqueKey: String,\n    value: Array as PropType<ColumnCheckboxGroupProps['value']>,\n    onChange: Function as PropType<ColumnCheckboxGroupProps['onChange']>,\n  },\n\n  setup(props: ColumnCheckboxGroupProps) {\n    const { checkboxProps, value, options } = toRefs(props);\n    const classPrefix = usePrefixClass();\n\n    const allCheckedColumnKeys = computed(() => {\n      const allCheckedKeys: CheckboxGroupProps['value'] = [];\n      options.value.forEach((option) => {\n        if (typeof option === 'object') {\n          if (option.disabled) return;\n          if (option.value) {\n            allCheckedKeys.push(option.value);\n          } else if (typeof option.label === 'string') {\n            allCheckedKeys.push(option.label);\n          }\n        } else {\n          allCheckedKeys.push(option);\n        }\n      });\n      return allCheckedKeys;\n    });\n\n    const intersectionKeys = computed(() => intersection(allCheckedColumnKeys.value, value.value));\n\n    const isCheckedAll = computed(() => {\n      const len = intersectionKeys.value.length;\n      return Boolean(len && allCheckedColumnKeys.value.length === len);\n    });\n\n    const isIndeterminate = computed(() => {\n      const len = intersectionKeys.value.length;\n      return Boolean(len < allCheckedColumnKeys.value.length && len);\n    });\n\n    const onCheckAllColumnsChange: CheckboxProps['onChange'] = (checkAll, ctx) => {\n      const changeParams: CheckboxGroupChangeContext = {\n        e: ctx.e,\n        type: 'check',\n        current: undefined,\n        option: undefined,\n      };\n      if (checkAll) {\n        const newKeys = [...new Set(value.value.concat(allCheckedColumnKeys.value))];\n        props.onChange?.(newKeys, changeParams);\n      } else {\n        const newKeys = value.value.filter((val) => !allCheckedColumnKeys.value.includes(val));\n        props.onChange?.(newKeys, { ...changeParams, type: 'uncheck' });\n      }\n    };\n\n    const handleCheckChange: CheckboxGroupProps['onChange'] = (val, ctx) => {\n      props.onChange?.(val, ctx);\n    };\n\n    const classes = computed(() => [\n      `${classPrefix.value}-table__column-controller-item`,\n      {\n        [`${classPrefix.value}-table__${props.uniqueKey}`]: props.uniqueKey,\n      },\n    ]);\n\n    return () => {\n      return (\n        <div class={classes.value}>\n          <div class={`${classPrefix.value}-table__column-controller-block`}>\n            <Checkbox\n              indeterminate={isIndeterminate.value}\n              checked={isCheckedAll.value}\n              onChange={onCheckAllColumnsChange}\n              disabled={!allCheckedColumnKeys.value.length}\n            >\n              {props.label}\n            </Checkbox>\n          </div>\n          <div class={`${classPrefix.value}-table__column-controller-block`}>\n            <CheckboxGroup\n              options={options.value}\n              {...checkboxProps.value}\n              modelValue={value.value}\n              onChange={handleCheckChange}\n            />\n          </div>\n        </div>\n      );\n    };\n  },\n});\n"],"names":["defineComponent","name","props","checkboxProps","Object","options","type","Array","default","label","String","uniqueKey","value","onChange","Function","setup","_toRefs","toRefs","classPrefix","usePrefixClass","allCheckedColumnKeys","computed","allCheckedKeys","forEach","option","_typeof","disabled","push","intersectionKeys","intersection","isCheckedAll","len","length","Boolean","isIndeterminate","onCheckAllColumnsChange","checkAll","ctx","changeParams","e","current","_props$onChange","newKeys","_toConsumableArray","Set","concat","call","_props$onChange2","filter","val","includes","_objectSpread","handleCheckChange","_props$onChange3","classes","_defineProperty","_createVNode","_default","CheckboxGroup","_mergeProps"],"mappings":"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"}