12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- import { ref, watch, provide, computed } from 'vue';
- import '../../../utils/index.mjs';
- import '../../../hooks/index.mjs';
- import '../../../constants/index.mjs';
- import '../../../tokens/index.mjs';
- import { castArray } from 'lodash-unified';
- import { UPDATE_MODEL_EVENT, CHANGE_EVENT } from '../../../constants/event.mjs';
- import { collapseContextKey } from '../../../tokens/collapse.mjs';
- import { useNamespace } from '../../../hooks/use-namespace/index.mjs';
- const useCollapse = (props, emit) => {
- const activeNames = ref(castArray(props.modelValue));
- const setActiveNames = (_activeNames) => {
- activeNames.value = _activeNames;
- const value = props.accordion ? activeNames.value[0] : activeNames.value;
- emit(UPDATE_MODEL_EVENT, value);
- emit(CHANGE_EVENT, value);
- };
- const handleItemClick = (name) => {
- if (props.accordion) {
- setActiveNames([activeNames.value[0] === name ? "" : name]);
- } else {
- const _activeNames = [...activeNames.value];
- const index = _activeNames.indexOf(name);
- if (index > -1) {
- _activeNames.splice(index, 1);
- } else {
- _activeNames.push(name);
- }
- setActiveNames(_activeNames);
- }
- };
- watch(() => props.modelValue, () => activeNames.value = castArray(props.modelValue), { deep: true });
- provide(collapseContextKey, {
- activeNames,
- handleItemClick
- });
- return {
- activeNames,
- setActiveNames
- };
- };
- const useCollapseDOM = () => {
- const ns = useNamespace("collapse");
- const rootKls = computed(() => ns.b());
- return {
- rootKls
- };
- };
- export { useCollapse, useCollapseDOM };
- //# sourceMappingURL=use-collapse.mjs.map
|