@vuesax-alpha/nightly
Version:
A Component Library for Vue 3
59 lines (56 loc) • 1.65 kB
JavaScript
import { ref, computed, onMounted } from 'vue';
import '../../../../constants/index.mjs';
import '../../../../utils/index.mjs';
import '../../../../hooks/index.mjs';
import { useNamespace } from '../../../../hooks/use-namespace/index.mjs';
import { isArray } from '@vue/shared';
import { UPDATE_MODEL_EVENT } from '../../../../constants/event.mjs';
const useTable = (props, emit) => {
const ns = useNamespace("table");
const colspan = ref(0);
const theadRef = ref();
const isMultipleSelected = computed(
() => props.multiple && isArray(props.modelValue)
);
const tableKls = 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(UPDATE_MODEL_EVENT, newVal);
};
const selected = (val) => {
if (isMultipleSelected.value) {
selectedMultiple(val);
} else {
emit(UPDATE_MODEL_EVENT, val);
}
};
onMounted(() => {
var _a;
if (props.multiple) {
if (!isArray(props.modelValue)) {
const value = props.modelValue ? [props.modelValue] : [];
emit(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
};
};
export { useTable };
//# sourceMappingURL=use-table.mjs.map