@vuesax-alpha/nightly
Version:
A Component Library for Vue 3
63 lines (58 loc) • 1.75 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var vue = require('vue');
require('../../../../constants/index.js');
require('../../../../utils/index.js');
require('../../../../hooks/index.js');
var index = require('../../../../hooks/use-namespace/index.js');
var shared = require('@vue/shared');
var event = require('../../../../constants/event.js');
const useTable = (props, emit) => {
const ns = index.useNamespace("table");
const colspan = vue.ref(0);
const theadRef = vue.ref();
const isMultipleSelected = vue.computed(
() => props.multiple && shared.isArray(props.modelValue)
);
const tableKls = vue.computed(() => [
ns.b(),
ns.is("striped", props.striped),
ns.is("multiple", props.multiple)
]);
const selectedMultiple = (val) => {
const newVal = props.modelValue;
if (props.modelValue.includes(val)) {
newVal.splice(props.modelValue.indexOf(val), 1);
} else {
newVal.push(val);
}
emit(event.UPDATE_MODEL_EVENT, newVal);
};
const selected = (val) => {
if (isMultipleSelected.value) {
selectedMultiple(val);
} else {
emit(event.UPDATE_MODEL_EVENT, val);
}
};
vue.onMounted(() => {
var _a;
if (props.multiple) {
if (!shared.isArray(props.modelValue)) {
const value = props.modelValue ? [props.modelValue] : [];
emit(event.UPDATE_MODEL_EVENT, [...value]);
}
}
const tds = (_a = theadRef.value) == null ? void 0 : _a.querySelectorAll("th");
colspan.value = (tds == null ? void 0 : tds.length) || 0;
});
return {
tableKls,
colspan,
isMultipleSelected,
selected,
theadRef
};
};
exports.useTable = useTable;
//# sourceMappingURL=use-table.js.map