UNPKG

@fesjs/fes-design

Version:
69 lines (66 loc) 2.13 kB
import { inject, ref, computed, unref } from 'vue'; import { collapseContextKey, generateId } from './common'; import { useNamespace } from './useNamespace'; const useCollapseItem = props => { const collapse = inject(collapseContextKey); const focusing = ref(false); const isClick = ref(false); const id = ref(generateId()); const isActive = computed(() => collapse === null || collapse === void 0 ? void 0 : collapse.activeNames.value.includes(props.name)); const handleFocus = () => { setTimeout(() => { if (!isClick.value) { focusing.value = true; } else { isClick.value = false; } }, 50); }; const handleHeaderClick = () => { if (props.disabled) { return; } collapse === null || collapse === void 0 || collapse.handleItemClick(props.name); focusing.value = false; isClick.value = true; }; const handleEnterClick = () => { collapse === null || collapse === void 0 || collapse.handleItemClick(props.name); }; return { focusing, id, isActive, handleFocus, handleHeaderClick, handleEnterClick }; }; const useCollapseItemDOM = (props, _ref) => { let { focusing, isActive, id, embedded } = _ref; const ns = useNamespace('collapse'); const rootKls = computed(() => [ns.b('item'), ns.is('active', unref(isActive)), ns.is('disabled', props.disabled)]); const headKls = computed(() => [ns.be('item', 'header'), ns.is('active', unref(isActive)), { focusing: unref(focusing) && !props.disabled }]); const arrowKls = computed(() => [ns.be('item', 'arrow'), ns.is('active', unref(isActive))]); const itemWrapperKls = computed(() => [ns.be('item', 'wrap'), ns.is('embedded', unref(embedded))]); const itemContentKls = computed(() => ns.be('item', 'content')); const scopedContentId = computed(() => ns.b(`content-${unref(id)}`)); const scopedHeadId = computed(() => ns.b(`head-${unref(id)}`)); return { arrowKls, headKls, rootKls, itemWrapperKls, itemContentKls, scopedContentId, scopedHeadId }; }; export { useCollapseItem, useCollapseItemDOM };