UNPKG

tdesign-vue

Version:
116 lines (110 loc) 4.08 kB
/** * tdesign v1.15.0 * (c) 2026 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-a7198720.js'); require('vue'); require('raf'); require('../../utils/easing.js'); require('../../_chunks/dep-a2217d56.js'); require('../../_chunks/dep-3b2292ce.js'); require('@babel/runtime/helpers/typeof'); require('../../_chunks/dep-10fcb46d.js'); require('../../_chunks/dep-ba7f5924.js'); require('../../_chunks/dep-1e173c2b.js'); require('../../_chunks/dep-803744d9.js'); require('../../_chunks/dep-7c84d9a0.js'); require('../../_chunks/dep-733a2279.js'); require('../../_chunks/dep-8d206316.js'); require('../../_chunks/dep-2bc87cc8.js'); require('../../_chunks/dep-d844c9ed.js'); require('../../_chunks/dep-689d381f.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