UNPKG

@vuesax-alpha/nightly

Version:
59 lines (56 loc) 1.65 kB
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