UNPKG

tdesign-vue

Version:
116 lines (110 loc) 4.08 kB
/** * tdesign v1.11.2 * (c) 2025 tdesign * @license MIT */ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var VueCompositionAPI = require('@vue/composition-api'); var utils_dom = require('../../utils/dom.js'); var _common_js_common = require('../../_common/js/common.js'); var get = require('../../_chunks/dep-f84d1ea5.js'); require('vue'); require('raf'); require('../../utils/easing.js'); require('../../_chunks/dep-738b4f21.js'); require('../../_chunks/dep-a4308f57.js'); require('@babel/runtime/helpers/typeof'); require('../../_chunks/dep-fcf0662d.js'); require('../../_chunks/dep-e4278c54.js'); require('../../_chunks/dep-362bc4d7.js'); require('../../_chunks/dep-d3015b4c.js'); require('../../_chunks/dep-a4747856.js'); require('../../_chunks/dep-3d8ab37d.js'); require('../../_chunks/dep-ecccff93.js'); require('../../_chunks/dep-a4cecac4.js'); require('../../_chunks/dep-ab142eaf.js'); require('../../_chunks/dep-201f7798.js'); function useHoverKeyboardEvent(props, tableRef) { var _toRefs = VueCompositionAPI.toRefs(props), hover = _toRefs.hover, data = _toRefs.data, activeRowType = _toRefs.activeRowType, keyboardRowHover = _toRefs.keyboardRowHover; var hoverRow = VueCompositionAPI.ref(); var currentHoverRowIndex = VueCompositionAPI.ref(-1); var tableRefTabIndex = VueCompositionAPI.ref(0); var needKeyboardRowHover = VueCompositionAPI.computed(function () { if (activeRowType.value === "single") return false; if (activeRowType.value === "multiple") return true; return hover.value || keyboardRowHover.value; }); var onHoverRow = function onHoverRow(ctx, extra) { var rowValue = get.get(ctx.row, props.rowKey); if (hoverRow.value === rowValue && (extra === null || extra === void 0 ? void 0 : extra.action) !== "hover") { hoverRow.value = void 0; } else { hoverRow.value = rowValue; } currentHoverRowIndex.value = ctx.index; }; var clearHoverRow = function clearHoverRow() { hoverRow.value = void 0; currentHoverRowIndex.value = -1; }; var keyboardDownListener = function keyboardDownListener(e) { var _e$key; if (!needKeyboardRowHover.value) return; var code = ((_e$key = e.key) === null || _e$key === void 0 ? void 0 : _e$key.trim()) || e.code; if (_common_js_common.ARROW_DOWN_REG.test(code)) { e.preventDefault(); var index = Math.min(data.value.length - 1, currentHoverRowIndex.value + 1); onHoverRow({ row: data.value[index], index: index, e: e }, { action: "hover" }); } else if (_common_js_common.ARROW_UP_REG.test(code)) { e.preventDefault(); var _index = Math.max(0, currentHoverRowIndex.value - 1); onHoverRow({ row: data.value[_index], index: _index, e: e }, { action: "hover" }); } else if (_common_js_common.SPACE_REG.test(code) && props.activeRowType !== "multiple") { var _index2 = currentHoverRowIndex.value; onHoverRow({ row: data.value[_index2], index: _index2, e: e }); } if (_common_js_common.ARROW_LEFT_REG.test(code) || _common_js_common.ARROW_RIGHT_REG.test(code)) { tableRefTabIndex.value = void 0; } else { tableRefTabIndex.value = 0; } }; var addRowHoverKeyboardListener = function addRowHoverKeyboardListener() { utils_dom.on(tableRef.value, "keydown", keyboardDownListener); }; var removeRowHoverKeyboardListener = function removeRowHoverKeyboardListener() { utils_dom.off(tableRef.value, "keydown", keyboardDownListener); }; return { hoverRow: hoverRow, needKeyboardRowHover: needKeyboardRowHover, clearHoverRow: clearHoverRow, addRowHoverKeyboardListener: addRowHoverKeyboardListener, removeRowHoverKeyboardListener: removeRowHoverKeyboardListener, tableRefTabIndex: tableRefTabIndex }; } exports["default"] = useHoverKeyboardEvent; exports.useHoverKeyboardEvent = useHoverKeyboardEvent; //# sourceMappingURL=useHoverKeyboardEvent.js.map