{"version":3,"file":"useColumnController.mjs","sources":["../../../../components/table/hooks/useColumnController.tsx"],"sourcesContent":["/**\n * 自定义显示列控制器，即列配置\n */\nimport { computed, ref, SetupContext, toRefs, watch, h } from 'vue';\nimport { SettingIcon as TdSettingIcon } from 'tdesign-icons-vue-next';\nimport { isFunction } from 'lodash-es';\nimport { CheckboxGroupValue, CheckboxOptionObj, CheckboxGroupChangeContext } from '../../checkbox';\nimport { DialogPlugin } from '../../dialog/plugin';\nimport { renderTitle } from './useTableHeader';\nimport { PrimaryTableCol, TdPrimaryTableProps } from '../type';\nimport { useConfig, useTNodeJSX, useGlobalIcon, useDefaultValue } from '@tdesign/shared-hooks';\n\nimport { getCurrentRowByKey } from '../utils';\nimport { DialogInstance } from '../../dialog';\nimport TButton from '../../button';\nimport ColumnCheckboxGroup from '../components/column-checkbox-group';\n\nexport function getColumnKeys(columns: PrimaryTableCol[], keys = new Set<string>()) {\n  for (let i = 0, len = columns.length; i < len; i++) {\n    const col = columns[i];\n    if (col.children?.length) {\n      getColumnKeys(col.children, keys);\n    } else {\n      col.colKey && keys.add(col.colKey);\n    }\n  }\n  return keys;\n}\n\ninterface CheckboxGroupOptionsType {\n  options: CheckboxOptionObj[];\n  label: string;\n  value?: string | number;\n}\n\nexport default function useColumnController(props: TdPrimaryTableProps, context: SetupContext) {\n  const { classPrefix, globalConfig } = useConfig('table', props.locale);\n  const { SettingIcon } = useGlobalIcon({ SettingIcon: TdSettingIcon });\n  const { columns, columnController, displayColumns, columnControllerVisible } = toRefs(props);\n  const dialogInstance = ref<DialogInstance>(null);\n  const renderTNodeJSX = useTNodeJSX();\n\n  const enabledColKeys = computed(() => {\n    const arr = (columnController.value?.fields || [...getColumnKeys(columns.value)] || []).filter((v) => v);\n    return new Set(arr);\n  });\n\n  const keys = [...getColumnKeys(columns.value)];\n\n  // 确认后的列配置\n  const [tDisplayColumns, setTDisplayColumns] = useDefaultValue(\n    displayColumns,\n    props.defaultDisplayColumns || keys,\n    props.onDisplayColumnsChange,\n    'displayColumns',\n  );\n  // 弹框内的多选\n  const columnCheckboxKeys = ref<CheckboxGroupValue>(displayColumns.value || props.defaultDisplayColumns || keys);\n\n  const checkboxGroupList = computed<CheckboxGroupOptionsType[]>(() => {\n    if (columnController.value?.groupColumns?.length) {\n      return getCheckboxGroupOptions(columns.value);\n    }\n    const oneItem: CheckboxGroupOptionsType = {\n      label: globalConfig.value.selectAllText,\n      options: getCheckboxOptions(columns.value),\n    };\n    return [oneItem];\n  });\n\n  // const intersectionChecked = computed(() => intersection(columnCheckboxKeys.value, [...enabledColKeys.value]));\n\n  watch([displayColumns], ([val]) => {\n    columnCheckboxKeys.value = val || props.defaultDisplayColumns || keys;\n  });\n\n  function getOneColumnItem(column: PrimaryTableCol, i: number) {\n    return {\n      label: () => renderTitle(context.slots, column, i),\n      value: column.colKey,\n      disabled: !enabledColKeys.value.has(column.colKey),\n    };\n  }\n\n  // 列配置分组\n  function getCheckboxGroupOptions(columns: PrimaryTableCol[]) {\n    const groupColumns = columnController.value?.groupColumns;\n    if (!groupColumns?.length) return [];\n    const groupList: CheckboxGroupOptionsType[] = [];\n    const loop = (columns: PrimaryTableCol[]) => {\n      for (let i = 0, len = columns.length; i < len; i++) {\n        const column = columns[i];\n        const oneItem = getOneColumnItem(column, i);\n        for (let j = 0, len1 = groupColumns.length; j < len1; j++) {\n          const groupInfo = groupColumns[j];\n          if (!groupInfo.columns.includes(column.colKey)) continue;\n          if (groupList[j]?.options?.length) {\n            groupList[j].options.push(oneItem);\n          } else {\n            groupList[j] = { ...groupColumns[j], options: [oneItem] };\n          }\n        }\n        if (column.children?.length) {\n          loop(column.children);\n        }\n      }\n    };\n    loop(columns);\n    return groupList;\n  }\n\n  function getCheckboxOptions(columns: PrimaryTableCol[], arr: CheckboxOptionObj[] = []) {\n    if (columnController.value?.groupColumns?.length) return [];\n    for (let i = 0, len = columns.length; i < len; i++) {\n      const item = columns[i];\n      if (item.children?.length) {\n        getCheckboxOptions(item.children, arr);\n      } else {\n        // 只把叶子列提供出去进行配置\n        if (item.colKey) {\n          arr.push(getOneColumnItem(item, i));\n        }\n      }\n    }\n    return arr;\n  }\n\n  const handleCheckChange = (val: CheckboxGroupValue, ctx: CheckboxGroupChangeContext) => {\n    columnCheckboxKeys.value = val;\n    const params = {\n      columns: val,\n      type: ctx.type,\n      currentColumn: getCurrentRowByKey(columns.value, String(ctx.current)),\n      e: ctx.e,\n    };\n    props.onColumnChange?.(params);\n  };\n\n  // 暂时不删除，万一后面需要整体的全选\n  // const handleClickAllShowColumns = (checked: boolean, ctx: { e: Event }) => {\n  //   if (checked) {\n  //     const newData = checkboxOptions.value?.map((t) => t.value) || [];\n  //     columnCheckboxKeys.value = newData;\n  //     props.onColumnChange?.({ type: 'check', columns: newData, e: ctx.e });\n  //   } else {\n  //     const disabledColKeys = checkboxOptions.value.filter((t) => t.disabled).map((t) => t.value);\n  //     columnCheckboxKeys.value = disabledColKeys;\n  //     props.onColumnChange?.({ type: 'uncheck', columns: disabledColKeys, e: ctx.e });\n  //   }\n  // };\n\n  const handleToggleColumnController = () => {\n    if (columnControllerVisible.value !== undefined) {\n      props.onColumnControllerVisibleChange?.(true, { trigger: 'open' });\n      context.emit('update:columnControllerVisible', true);\n    }\n    if (dialogInstance.value) {\n      dialogInstance.value.show();\n      return;\n    }\n    dialogInstance.value = DialogPlugin.confirm({\n      header: globalConfig.value.columnConfigTitleText,\n      body: () => {\n        const widthMode = columnController.value?.displayType === 'fixed-width' ? 'fixed' : 'auto';\n        // const checkedLength = intersectionChecked.value.length;\n        // const isCheckedAll = checkedLength === enabledColKeys.value.size;\n        // const isIndeterminate = checkedLength > 0 && checkedLength < enabledColKeys.value.size;\n        const { columnControllerTopContent, columnControllerBottomContent } = columnController.value || {};\n        const defaultNode = (\n          <div\n            class={[\n              `${classPrefix.value}-table__column-controller`,\n              `${classPrefix.value}-table__column-controller--${widthMode}`,\n            ]}\n          >\n            <div class={`${classPrefix.value}-table__column-controller-body`}>\n              {isFunction(columnControllerTopContent)\n                ? columnControllerTopContent(h)\n                : renderTNodeJSX('columnControllerTopContent')}\n              {/* 请选择需要在表格中显示的数据列 */}\n              {globalConfig.value.columnConfigDescriptionText && (\n                <p class={`${classPrefix.value}-table__column-controller-desc`}>\n                  {globalConfig.value.columnConfigDescriptionText}\n                </p>\n              )}\n              {checkboxGroupList.value.map((group, index) => {\n                const uniqueKey = columnController.value?.groupColumns?.length\n                  ? String(group.value || index)\n                  : undefined;\n                return (\n                  <ColumnCheckboxGroup\n                    key={group.value || index}\n                    uniqueKey={uniqueKey}\n                    value={columnCheckboxKeys.value}\n                    label={group.label}\n                    options={group.options}\n                    onChange={handleCheckChange}\n                    checkboxProps={columnController.value?.checkboxProps}\n                  />\n                );\n              })}\n\n              {isFunction(columnControllerBottomContent)\n                ? columnControllerBottomContent(h)\n                : renderTNodeJSX('columnControllerBottomContent')}\n            </div>\n          </div>\n        );\n        return defaultNode;\n      },\n      confirmBtn: globalConfig.value.confirmText,\n      cancelBtn: globalConfig.value.cancelText,\n      width: 612,\n      onConfirm: () => {\n        setTDisplayColumns([...columnCheckboxKeys.value]);\n        // 此处逻辑不要随意改动，涉及到 内置列配置按钮 和 不包含列配置按钮等场景\n        if (columnControllerVisible.value === undefined) {\n          dialogInstance.value.hide();\n        } else {\n          props.onColumnControllerVisibleChange?.(false, { trigger: 'confirm' });\n          context.emit('update:columnControllerVisible', false);\n        }\n      },\n      onClose: () => {\n        columnCheckboxKeys.value = tDisplayColumns.value;\n        // 此处逻辑不要随意改动，涉及到 内置列配置按钮 和 不包含列配置按钮等场景\n        if (columnControllerVisible.value === undefined) {\n          dialogInstance.value.hide();\n        } else {\n          props.onColumnControllerVisibleChange?.(false, { trigger: 'cancel' });\n          context.emit('update:columnControllerVisible', false);\n        }\n      },\n      ...(columnController.value?.dialogProps || {}),\n    });\n  };\n\n  // columnControllerVisible 一般应用于不包含列配置按钮的场景，有外部直接控制弹框的显示或隐藏\n  watch(\n    [columnControllerVisible],\n    ([visible], [oldVisible]) => {\n      if (visible === undefined) return;\n      if (visible === oldVisible) return; // 新增：值未变化时跳过\n      if (dialogInstance.value) {\n        visible ? dialogInstance.value.show() : dialogInstance.value.hide();\n      } else {\n        visible && handleToggleColumnController();\n      }\n    },\n    { immediate: true },\n  );\n\n  const renderColumnController = () => {\n    const isColumnController = !!(columnController.value && Object.keys(columnController.value).length);\n    const placement = isColumnController ? columnController.value.placement || 'top-right' : '';\n    if (isColumnController && columnController.value.hideTriggerButton) return null;\n    const classes = [\n      `${classPrefix.value}-table__column-controller-trigger`,\n      { [`${classPrefix.value}-align-${placement}`]: !!placement },\n    ];\n    return (\n      <div class={classes}>\n        <TButton\n          theme=\"default\"\n          variant=\"outline\"\n          onClick={handleToggleColumnController}\n          content={globalConfig.value.columnConfigButtonText}\n          v-slots={{\n            icon: () => <SettingIcon />,\n          }}\n          {...props.columnController?.buttonProps}\n        ></TButton>\n      </div>\n    );\n  };\n\n  return {\n    tDisplayColumns,\n    columnCheckboxKeys,\n    renderColumnController,\n  };\n}\n"],"names":["getColumnKeys","columns","keys","arguments","length","undefined","Set","i","len","_col$children","col","children","colKey","add","useColumnController","props","context","_useConfig","useConfig","locale","classPrefix","globalConfig","_useGlobalIcon","useGlobalIcon","SettingIcon","TdSettingIcon","_toRefs","toRefs","columnController","displayColumns","columnControllerVisible","dialogInstance","ref","renderTNodeJSX","useTNodeJSX","enabledColKeys","computed","_columnController$val","arr","value","fields","_toConsumableArray","filter","v","_useDefaultValue","useDefaultValue","defaultDisplayColumns","onDisplayColumnsChange","_useDefaultValue2","_slicedToArray","tDisplayColumns","setTDisplayColumns","columnCheckboxKeys","checkboxGroupList","_columnController$val2","groupColumns","getCheckboxGroupOptions","oneItem","label","selectAllText","options","getCheckboxOptions","watch","_ref","_ref2","val","getOneColumnItem","column","renderTitle","slots","disabled","has","_columnController$val3","groupList","loop","_column$children","j","len1","_groupList$j","groupInfo","includes","push","_objectSpread","_columnController$val4","_item$children","item","handleCheckChange","ctx","_props$onColumnChange","params","type","currentColumn","getCurrentRowByKey","String","current","e","onColumnChange","call","handleToggleColumnController","_columnController$val8","_props$onColumnContro","onColumnControllerVisibleChange","trigger","emit","show","DialogPlugin","confirm","header","columnConfigTitleText","body","_columnController$val5","widthMode","displayType","_ref3","columnControllerTopContent","columnControllerBottomContent","defaultNode","_createVNode","concat","isFunction","h","columnConfigDescriptionText","map","group","index","_columnController$val6","_columnController$val7","uniqueKey","ColumnCheckboxGroup","checkboxProps","confirmBtn","confirmText","cancelBtn","cancelText","width","onConfirm","hide","_props$onColumnContro2","onClose","_props$onColumnContro3","dialogProps","_ref4","_ref5","_ref6","visible","_ref7","oldVisible","immediate","renderColumnController","_props$columnControll","isColumnController","Object","placement","hideTriggerButton","classes","_defineProperty","TButton","_mergeProps","columnConfigButtonText","buttonProps","icon"],"mappings":"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"}