{"version":3,"file":"table-th.mjs","sources":["../../../../../../../packages/components/table/src/layout/table-th.tsx"],"sourcesContent":["import type { PropType } from 'vue'\nimport { computed, createVNode, defineComponent, inject, ref, toRefs } from 'vue'\n\nimport type { TableColumnData, TableData } from '../types'\nimport { tableColumnTypes } from '../types'\n\nimport Trigger from '../../../trigger/src/trigger'\n\nimport { getNamespace } from '../../../../utils/global-config'\nimport { isFunction } from '../../../../utils/is'\nimport type { TableContext } from '../context'\nimport { tableInjectionKey } from '../context'\n\nimport Checkbox from '../../../checkbox/src/checkbox.vue'\n\nimport { BnIconCaretFill as CaretArrow } from '../../../icon'\n\nimport { useColumnFixed } from '../hooks/use-column-fixed'\nimport SorterPopup from './table-sorter-popup'\n\nexport default defineComponent({\n  name: 'Th',\n  props: {\n    column: {\n      type: Object as PropType<TableColumnData>,\n      default: () => ({})\n    },\n    dataColumns: {\n      type: Array as PropType<TableColumnData[]>,\n      default: () => []\n    },\n    resizable: {\n      type: Boolean\n    }\n  },\n  setup(props) {\n    const ns = getNamespace('th')\n\n    const tableContext = inject<TableContext>(tableInjectionKey)\n\n    const isOpsType = computed(() => tableColumnTypes.includes(props.column.type!))\n\n    // 顶部Checkbox状态\n    const checkboxStatus = computed(() => {\n      // 顶部Checkbox选中状态\n      let checked = false\n      // 顶部Checkbox半选状态\n      let indeterminate = false\n      // 顶部Checkbox禁用状态\n      let disabled = false\n      // 已选中项，去除disabled的\n      // todo 这地方拓扬没有写完整，这里要判断已选中的包括前一个分页的keys，或者考虑选中后如何插入\n      const unDisabledSelection = tableContext?.opsStore?.selectionRows?.filter(\n        (row) => !row.disabled\n      )\n      // console.log('选中的行_____', unDisabledSelection)\n      // 这块是选中数\n      // const selectionNumber = unDisabledSelection?.length ?? 0\n      // 此处处理的是renderData即渲染data\n      const allEnabledSelectionNumber = tableContext?.opsStore?.allEnabledSelectionRows?.length ?? 0\n      // 当前页是否全选\n      const isCurrentPageAllSelected = tableContext?.opsStore?.allEnabledSelectionRows?.every(\n        (item: TableData) => {\n          // 对于禁用的就无需选择了\n          if (item.disabled) {\n            return true\n          }\n          return unDisabledSelection?.map((tData) => tData.key)?.includes(item.key)\n        }\n      )\n      // todo 后续优化\n      // 如果当前页全选\n      if (isCurrentPageAllSelected) {\n        checked = true\n      } else {\n        // 当前页只要未全选中就看已选中项\n        // 已选中项>0个则显示半选否则未选\n        if (unDisabledSelection && unDisabledSelection.length > 0) {\n          indeterminate = true\n        }\n      }\n\n      if (allEnabledSelectionNumber === 0) {\n        disabled = true\n      }\n\n      // console.log('全选状态____', {\n      //   checked,\n      //   indeterminate,\n      //   disabled\n      // })\n\n      return {\n        checked,\n        indeterminate,\n        disabled\n      }\n    })\n\n    const renderOpsMap: Record<string, any> = {\n      checkbox() {\n        if (props.column.hiddenCheckboxAll) {\n          return\n        }\n        return (\n          <>\n            <Checkbox\n              label={props.column.title ?? undefined}\n              modelValue={checkboxStatus.value.checked}\n              indeterminate={checkboxStatus.value.indeterminate} // 半选状态\n              disabled={checkboxStatus.value.disabled}\n              validateEvent={false}\n              onChange={tableContext?.opsStore?.selectAll} // 全选事件\n              // @ts-ignore: click\n              onClick={(ev: Event) => ev.stopPropagation()}\n            />\n          </>\n        )\n      },\n      index() {\n        return props.column.title || '#'\n      }\n    }\n\n    const renderOps = () => {\n      return renderOpsMap[props.column.type!]()\n    }\n\n    // sort\n    const activeSort = computed(() => tableContext?.sortStore?.activeSort)\n    const hitColumnProp = computed(() => tableContext?.sortStore?.activeProp === props.column.prop)\n    const isSortPopup = computed(() => tableContext?.sortStore?.isSortPopup)\n\n    const handlerSort = (direction: 'ascend' | 'descend' | '') => {\n      tableContext?.sortStore?.handleSortChange?.(props.column, direction)\n    }\n\n    // 渲染sorter\n    const renderSortIcon = () => {\n      const defColor = '#88909b'\n      const activeColor = '#2355f5'\n      const popupDefColor = '#242934'\n\n      const _render = () => {\n        if (!isSortPopup.value) {\n          return (\n            <span class={['bn-table__sort']}>\n              <CaretArrow\n                color={\n                  hitColumnProp.value && activeSort.value === 'ascend' ? activeColor : defColor\n                }\n                class={['bn-table__sort-ascend']}\n                rotate={180}\n                size={12}\n                // @ts-ignore: click\n                onClick={() => handlerSort('ascend')}\n              ></CaretArrow>\n              <CaretArrow\n                color={\n                  hitColumnProp.value && activeSort.value === 'descend' ? activeColor : defColor\n                }\n                class={['bn-table__sort-descend']}\n                size={12}\n                // @ts-ignore: click\n                onClick={() => handlerSort('descend')}\n              ></CaretArrow>\n            </span>\n          )\n        }\n\n        if (hitColumnProp.value && activeSort.value === 'ascend') {\n          return (\n            <span class={['bn-table__sort']}>\n              <CaretArrow\n                class={['bn-table__sort-arrow-center']}\n                color={popupDefColor}\n                rotate={180}\n                size={12}\n              />\n            </span>\n          )\n        }\n\n        if (hitColumnProp.value && activeSort.value === 'descend') {\n          return (\n            <span class={['bn-table__sort']}>\n              <CaretArrow\n                class={['bn-table__sort-arrow-center']}\n                color={popupDefColor}\n                size={12}\n              ></CaretArrow>\n            </span>\n          )\n        }\n      }\n\n      return _render()\n    }\n\n    const popupVisible = ref(false)\n\n    const onPopupVisibleChange = (visible: boolean) => {\n      popupVisible.value = visible\n    }\n\n    const handleSortChangeInPopup = (direction: 'ascend' | 'descend' | '') => {\n      handlerSort(direction)\n    }\n\n    // 优先级 renderHeader > headerSlotName > title\n    const renderTitle = () => {\n      let title: unknown = props.column?.title\n      const tableHeaderSlot = tableContext?.slots?.[props.column.headerSlotName!]\n      if (tableHeaderSlot) {\n        title = tableHeaderSlot({ column: props.column })\n      }\n\n      if (isFunction(props.column.renderHeader)) {\n        title = props.column.renderHeader({ column: props.column })\n      }\n\n      const _render = () => {\n        if (!props.column.sortable) {\n          return <span class={[`bn-table__header-title`]}>{title}</span>\n        }\n\n        if (!isSortPopup.value) {\n          return (\n            <span\n              class={[`bn-table__header-title`]}\n              onClick={() => props.column.sortable && handlerSort('')}\n            >\n              {title}\n            </span>\n          )\n        }\n\n        return (\n          <Trigger\n            popupVisible={popupVisible.value}\n            trigger=\"hover\"\n            position=\"bottom\"\n            popupOffset={10}\n            v-slots={{\n              content: () => (\n                <SorterPopup\n                  sortChange={handleSortChangeInPopup}\n                  activeSort={activeSort.value}\n                  hitColumnProp={hitColumnProp.value}\n                ></SorterPopup>\n              )\n            }}\n            onPopupVisibleChange={onPopupVisibleChange}\n          >\n            <span\n              class={[\n                `bn-table__header-title`,\n                {\n                  'is-sort-active': hitColumnProp.value && activeSort.value\n                }\n              ]}\n              onClick={() => handlerSort('')}\n            >\n              {title}\n            </span>\n          </Trigger>\n        )\n      }\n\n      return _render()\n    }\n\n    const renderCell = () => {\n      return (\n        <span class={[`bn-table__cell`]}>\n          {isOpsType.value\n            ? renderOps()\n            : [renderTitle(), props.column.sortable && renderSortIcon()]}\n        </span>\n      )\n    }\n\n    const handleMouseDown = (e: MouseEvent) => {\n      if (props.column?.prop) {\n        tableContext?.resizeStore?.handleThMouseDown?.(props.column?.prop, e)\n      }\n    }\n\n    const { dataColumns, column } = toRefs(props)\n    const { fixedStyle, isLeftFixedLast, isRightFixedFirst } = useColumnFixed(dataColumns, column)\n\n    // 当前的prop是否在resizing\n    const propHasResizing = computed(\n      () => tableContext?.resizeStore?.prop === props.column.prop && props.column.prop\n    )\n    // 表格水平滚动位置。左 中 右\n    const horScrollPosition = computed(() => tableContext?.scroll?.horScrollPosition)\n\n    const cls = computed(() => {\n      const _cls = [\n        `${ns}`,\n        `is-align-${props.column.align || 'left'}`,\n        props.column.fixed && `is-fixed-${props.column.fixed}`,\n        isLeftFixedLast.value && `is-fixed-left-last`,\n        isRightFixedFirst.value && `is-fixed-right-first`,\n        horScrollPosition.value && `is-scroll-position-${horScrollPosition.value}`,\n        propHasResizing.value && 'is-resize'\n      ]\n      return _cls\n    })\n\n    return () => {\n      const colSpan = props.column.colSpan ?? 1\n      const rowSpan = props.column.rowSpan ?? 1\n\n      return createVNode(\n        'th',\n        {\n          class: cls.value,\n          style: {\n            ...fixedStyle.value\n          },\n          colspan: colSpan > 1 ? colSpan : undefined,\n          rowspan: rowSpan > 1 ? rowSpan : undefined\n        },\n        {\n          default: () => [\n            renderCell(),\n            props.resizable && <span class={`${ns}__handler`} onMousedown={handleMouseDown} />\n          ]\n        }\n      )\n    }\n  }\n})\n"],"names":["name","props","column","type","Object","default","dataColumns","Array","resizable","Boolean","setup","ns","getNamespace","tableContext","inject","tableInjectionKey","isOpsType","computed","tableColumnTypes","includes","checkboxStatus","checked","indeterminate","disabled","unDisabledSelection","opsStore","selectionRows","filter","row","allEnabledSelectionNumber","allEnabledSelectionRows","length","isCurrentPageAllSelected","every","item","_a","map","tData","key","renderOpsMap","checkbox","hiddenCheckboxAll","_createVNode","_Fragment","Checkbox","title","undefined","value","selectAll","ev","stopPropagation","index","renderOps","activeSort","sortStore","hitColumnProp","activeProp","prop","isSortPopup","handlerSort","direction","handleSortChange","renderSortIcon","defColor","activeColor","popupDefColor","_render","CaretArrow","onClick","popupVisible","ref","onPopupVisibleChange","visible","handleSortChangeInPopup","renderTitle","tableHeaderSlot","slots","headerSlotName","isFunction","renderHeader","sortable","Trigger","content","SorterPopup","renderCell","handleMouseDown","e","resizeStore","handleThMouseDown","toRefs","fixedStyle","isLeftFixedLast","isRightFixedFirst","useColumnFixed","propHasResizing","horScrollPosition","scroll","cls","_cls","align","fixed","colSpan","rowSpan","createVNode","class","style","colspan","rowspan"],"mappings":"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"}