tdesign-vue-next
Version:
TDesign Component for vue-next
147 lines (141 loc) • 5.41 kB
JavaScript
/**
* tdesign v1.15.2
* (c) 2025 tdesign
* @license MIT
*/
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var Vue = require('vue');
var dom = require('../../_chunks/dep-0a9c2d75.js');
var common = require('../../_chunks/dep-4045ff88.js');
var get = require('../../_chunks/dep-4a827320.js');
require('../../_chunks/dep-040b3cbb.js');
require('../../_chunks/dep-0f5dd876.js');
require('../../_chunks/dep-3e1aa2e0.js');
require('../../_chunks/dep-79f734cc.js');
require('@babel/runtime/helpers/typeof');
require('../../_chunks/dep-63ff6e12.js');
require('../../_chunks/dep-c6c5ec69.js');
require('../../_chunks/dep-ce0157af.js');
require('../../_chunks/dep-41b6fe49.js');
require('../../_chunks/dep-bd33cda1.js');
require('../../_chunks/dep-baaf07d6.js');
require('../../_chunks/dep-c66679ef.js');
require('../../_chunks/dep-7154c044.js');
require('../../_chunks/dep-020c2a7e.js');
require('../../_chunks/dep-15ce91d8.js');
function useHoverKeyboardEvent(props, tableRef) {
var _toRefs = Vue.toRefs(props),
hover = _toRefs.hover,
data = _toRefs.data,
activeRowType = _toRefs.activeRowType,
keyboardRowHover = _toRefs.keyboardRowHover,
disableSpaceInactiveRow = _toRefs.disableSpaceInactiveRow;
var hoverRow = Vue.ref();
var currentHoverRowIndex = Vue.ref(-1);
var tableRefTabIndex = Vue.ref(0);
var needKeyboardRowHover = Vue.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") {
if (!disableSpaceInactiveRow.value) {
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.code || ((_e$key = e.key) === null || _e$key === void 0 ? void 0 : _e$key.trim());
if (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.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.SPACE_REG.test(code) && props.activeRowType !== "multiple") {
var _index2 = currentHoverRowIndex.value;
onHoverRow({
row: data.value[_index2],
index: _index2,
e: e
});
if (!props.activeRowType) {
var _props$onActiveRowAct;
(_props$onActiveRowAct = props.onActiveRowAction) === null || _props$onActiveRowAct === void 0 || _props$onActiveRowAct.call(props, {
action: "space-one-selection",
activeRowList: [{
row: data.value[_index2],
rowIndex: _index2
}]
});
}
} else if (common.ESCAPE_REG.test(code) && !props.activeRowType) {
var _props$onActiveRowAct2;
hoverRow.value = void 0;
(_props$onActiveRowAct2 = props.onActiveRowAction) === null || _props$onActiveRowAct2 === void 0 || _props$onActiveRowAct2.call(props, {
action: "clear",
activeRowList: []
});
} else if (common.ALL_REG.test(code) && !props.activeRowType) {
var _props$onActiveRowAct3;
(_props$onActiveRowAct3 = props.onActiveRowAction) === null || _props$onActiveRowAct3 === void 0 || _props$onActiveRowAct3.call(props, {
action: "select-all",
activeRowList: []
});
} else if (common.CLEAR_REG.test(code) && !props.activeRowType && !e.ctrlKey && !e.metaKey) {
var _props$onActiveRowAct4;
(_props$onActiveRowAct4 = props.onActiveRowAction) === null || _props$onActiveRowAct4 === void 0 || _props$onActiveRowAct4.call(props, {
action: "clear",
activeRowList: []
});
}
if (common.ARROW_LEFT_REG.test(code) || common.ARROW_RIGHT_REG.test(code)) {
tableRefTabIndex.value = void 0;
} else {
tableRefTabIndex.value = 0;
}
};
var addRowHoverKeyboardListener = function addRowHoverKeyboardListener() {
dom.on(tableRef.value, "keydown", keyboardDownListener);
};
var removeRowHoverKeyboardListener = function removeRowHoverKeyboardListener() {
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