UNPKG

vue-tree-kl

Version:

A vue tree component using virtual list.

82 lines (71 loc) 2.17 kB
import { Ref, computed } from 'vue' import { TREE_SEARCH_PREFIX_CLS as treeSearchPrefixCls } from './useTreeSearchCls' import { TreeDropProps } from '../components/TreeDrop.vue' const prefixCls = 'vtree-tree-drop' export { prefixCls as TREE_DROP_PREFIX_CLS } export const useTreeDropCls = (props: TreeDropProps, options: { dropdownVisible: Ref<boolean> checkedCount: Ref<number> selectedTitle: Ref<string> }) => { const { dropdownVisible, checkedCount, selectedTitle, } = options const wrapperCls = computed(() => { return [`${prefixCls}__wrapper`] }) const referenceCls = computed(() => { return [`${prefixCls}__reference`] }) const displayInputCls = computed(() => { return [ `${treeSearchPrefixCls}__input`, `${prefixCls}__display-input`, { [`${prefixCls}__display-input_focus`]: dropdownVisible.value, [`${treeSearchPrefixCls}__input_disabled`]: props.dropDisabled } ] }) const displayInputTextCls = computed(() => { let showPlaceholder: boolean = false if (typeof props.dropPlaceholder === 'string') { if (props.checkable) showPlaceholder = checkedCount.value === 0 else if (props.selectable) showPlaceholder = selectedTitle.value === '' } return [ `${prefixCls}__display-input-text`, { [`${prefixCls}__display-input-placeholder`]: showPlaceholder } ] }) const dropIconCls = computed(() => { return [ `${prefixCls}__display-icon-drop`, { [`${prefixCls}__display-icon-drop_active`]: dropdownVisible.value } ] }) const clearIconCls = computed(() => { return [`${prefixCls}__display-icon-clear`] }) const dropdownCls = computed(() => { const extraClassName = Array.isArray(props.dropdownClassName) ? props.dropdownClassName : [props.dropdownClassName] return [`${prefixCls}__dropdown`, ...extraClassName] }) return { wrapperCls, referenceCls, displayInputCls, displayInputTextCls, dropIconCls, clearIconCls, dropdownCls, } }