tdesign-vue
Version:
116 lines (110 loc) • 4.08 kB
JavaScript
/**
* tdesign v1.11.2
* (c) 2025 tdesign
* @license MIT
*/
;
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