UNPKG

naive-ui

Version:

A Vue 3 Component Library. Fairly Complete, Theme Customizable, Uses TypeScript, Fast

148 lines (147 loc) 5.52 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useTransferData = useTransferData; const vooks_1 = require("vooks"); const vue_1 = require("vue"); function useTransferData(props, mergedDisabledRef) { const uncontrolledValueRef = (0, vue_1.ref)(props.defaultValue); const controlledValueRef = (0, vue_1.toRef)(props, 'value'); const mergedValueRef = (0, vooks_1.useMergedState)(controlledValueRef, uncontrolledValueRef); const optMapRef = (0, vue_1.computed)(() => { const map = new Map(); (props.options || []).forEach(opt => map.set(opt.value, opt)); return map; }); const tgtValueSetRef = (0, vue_1.computed)(() => new Set(mergedValueRef.value || [])); const srcOptsRef = (0, vue_1.computed)(() => props.options.filter(option => !tgtValueSetRef.value.has(option.value))); const tgtOptsRef = (0, vue_1.computed)(() => { const optMap = optMapRef.value; return (mergedValueRef.value || []).map(v => optMap.get(v)); }); const srcPatternRef = (0, vue_1.ref)(''); const tgtPatternRef = (0, vue_1.ref)(''); const filteredSrcOptsRef = (0, vue_1.computed)(() => { if (!props.filterable) return srcOptsRef.value; const { filter } = props; return srcOptsRef.value.filter(opt => filter(srcPatternRef.value, opt, 'source')); }); const filteredTgtOptsRef = (0, vue_1.computed)(() => { if (!props.filterable) return tgtOptsRef.value; const { filter } = props; return tgtOptsRef.value.filter(opt => filter(tgtPatternRef.value, opt, 'target')); }); const avlSrcValueSetRef = (0, vue_1.computed)(() => new Set(filteredSrcOptsRef.value .filter(opt => !opt.disabled) .map(opt => opt.value))); const avlTgtValueSetRef = (0, vue_1.computed)(() => new Set(filteredTgtOptsRef.value .filter(opt => !opt.disabled) .map(opt => opt.value))); const srcCheckedValuesRef = (0, vue_1.ref)([]); const tgtCheckedValuesRef = (0, vue_1.ref)([]); const srcCheckedStatusRef = (0, vue_1.computed)(() => { const srcCheckedLength = srcCheckedValuesRef.value.filter(v => avlSrcValueSetRef.value.has(v)).length; const avlValueCount = avlSrcValueSetRef.value.size; if (avlValueCount === 0) { return { checked: false, indeterminate: false, disabled: true }; } else if (srcCheckedLength === 0) { return { checked: false, indeterminate: false }; } else if (srcCheckedLength === avlValueCount) { return { checked: true, indeterminate: false }; } else { return { checked: false, indeterminate: true }; } }); const tgtCheckedStatusRef = (0, vue_1.computed)(() => { const tgtCheckedLength = tgtCheckedValuesRef.value.filter(v => avlTgtValueSetRef.value.has(v)).length; const avlValueCount = avlTgtValueSetRef.value.size; if (avlValueCount === 0) { return { checked: false, indeterminate: false, disabled: true }; } else if (tgtCheckedLength === 0) { return { checked: false, indeterminate: false }; } else if (tgtCheckedLength === avlValueCount) { return { checked: true, indeterminate: false }; } else { return { checked: false, indeterminate: true }; } }); const fromButtonDisabledRef = (0, vooks_1.useMemo)(() => { if (mergedDisabledRef.value) return true; return tgtCheckedValuesRef.value.length === 0; }); const toButtonDisabledRef = (0, vooks_1.useMemo)(() => { if (mergedDisabledRef.value) return true; return srcCheckedValuesRef.value.length === 0; }); const isInputingRef = (0, vue_1.ref)(false); function handleInputFocus() { isInputingRef.value = true; } function handleInputBlur() { isInputingRef.value = false; } function handleSrcFilterUpdateValue(value) { srcPatternRef.value = value !== null && value !== void 0 ? value : ''; } function handleTgtFilterUpdateValue(value) { tgtPatternRef.value = value !== null && value !== void 0 ? value : ''; } return { uncontrolledValue: uncontrolledValueRef, mergedValue: mergedValueRef, avlSrcValueSet: avlSrcValueSetRef, avlTgtValueSet: avlTgtValueSetRef, tgtOpts: tgtOptsRef, srcOpts: srcOptsRef, filteredSrcOpts: filteredSrcOptsRef, filteredTgtOpts: filteredTgtOptsRef, srcCheckedValues: srcCheckedValuesRef, tgtCheckedValues: tgtCheckedValuesRef, srcCheckedStatus: srcCheckedStatusRef, tgtCheckedStatus: tgtCheckedStatusRef, srcPattern: srcPatternRef, tgtPattern: tgtPatternRef, isInputing: isInputingRef, fromButtonDisabled: fromButtonDisabledRef, toButtonDisabled: toButtonDisabledRef, handleInputFocus, handleInputBlur, handleTgtFilterUpdateValue, handleSrcFilterUpdateValue }; }