tdesign-mobile-vue
Version:
tdesign-mobile-vue
137 lines (133 loc) • 5.26 kB
JavaScript
/**
* tdesign v1.7.0
* (c) 2024 TDesign Group
* @license MIT
*/
import _defineProperty from '@babel/runtime/helpers/defineProperty';
import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
import { defineComponent, computed, createVNode, h } from 'vue';
import isArray from 'lodash/isArray';
import isFunction from 'lodash/isFunction';
import isString from 'lodash/isString';
import { Loading } from '../loading/index.js';
import config from '../config.js';
import props from './props.js';
import { useFormDisabled } from '../form/hooks.js';
import { usePrefixClass } from '../hooks/useClass.js';
import { useToggle } from '../shared/useToggle/index.js';
import { useDefault } from '../shared/useDefault/index.js';
import '../loading/loading.js';
import '../loading/icon/gradient.js';
import '../_common/js/loading/circle-adapter.js';
import '../_common/js/utils/set-style.js';
import '../_common/js/utils/helper.js';
import '@babel/runtime/helpers/toConsumableArray';
import '@babel/runtime/helpers/objectWithoutProperties';
import 'lodash/isNull';
import 'lodash/isUndefined';
import 'lodash/isNumber';
import '../loading/icon/spinner.js';
import '../loading/props.js';
import '../hooks/tnode.js';
import 'lodash/camelCase';
import 'lodash/kebabCase';
import '../hooks/render-tnode.js';
import 'lodash/isEmpty';
import 'lodash/isObject';
import '../shared/dom.js';
import '../loading/plugin.js';
import 'lodash/merge';
import '../config-provider/useConfig.js';
import 'lodash/cloneDeep';
import '../config-provider/context.js';
import 'lodash/mergeWith';
import '../_common/js/global-config/mobile/default-config.js';
import '../_common/js/global-config/mobile/locale/zh_CN.js';
import '../_chunks/dep-d5364bc4.js';
import '@babel/runtime/helpers/typeof';
import '../_chunks/dep-eb734424.js';
import 'dayjs';
import '../shared/component.js';
import 'lodash/isBoolean';
var prefix = config.prefix;
var _Switch = defineComponent({
name: "".concat(prefix, "-switch"),
props: props,
setup: function setup(props2, context) {
var switchClass = usePrefixClass("switch");
var disabled = useFormDisabled();
var switchValues = props2.customValue || [true, false];
var _useDefault = useDefault(props2, context.emit, "value", "change"),
_useDefault2 = _slicedToArray(_useDefault, 1),
innerValue = _useDefault2[0];
var _useToggle = useToggle(switchValues, innerValue.value),
state = _useToggle.state,
toggle = _useToggle.toggle;
var checked = computed(function () {
return innerValue.value === switchValues[0];
});
var switchClasses = computed(function () {
return ["".concat(switchClass.value), "".concat(switchClass.value, "--").concat(props2.size), _defineProperty(_defineProperty({}, "".concat(switchClass.value, "--checked"), checked.value), "".concat(switchClass.value, "--disabled"), disabled.value || props2.loading)];
});
var dotClasses = computed(function () {
var _props2$label, _props2$icon;
return ["".concat(switchClass.value, "__dot"), "".concat(switchClass.value, "__dot--").concat(props2.size), _defineProperty(_defineProperty({}, "".concat(switchClass.value, "__dot--checked"), checked.value), "".concat(switchClass.value, "__dot--plain"), ((_props2$label = props2.label) === null || _props2$label === void 0 ? void 0 : _props2$label.length) !== 2 && ((_props2$icon = props2.icon) === null || _props2$icon === void 0 ? void 0 : _props2$icon.length) !== 2 && !props2.loading)];
});
var labelClasses = computed(function () {
return ["".concat(switchClass.value, "__label"), "".concat(switchClass.value, "__label--").concat(props2.size), _defineProperty({}, "".concat(switchClass.value, "__label--checked"), checked.value)];
});
var iconContent = computed(function () {
return props2.icon[checked.value ? 0 : 1];
});
function handleToggle(event) {
event.preventDefault();
if (disabled.value || props2.loading) {
return;
}
if (state.value === innerValue.value) {
toggle();
}
innerValue.value = state.value;
}
var renderContent = function renderContent() {
if (props2.loading) {
return createVNode(Loading, {
"inherit-color": true,
"size": "16.25px"
}, null);
}
if (isArray(props2.label) && props2.label.length === 2) {
var label = checked.value ? props2.label[0] : props2.label[1];
if (isString(label)) {
return label;
}
if (isFunction(label)) {
return label(h);
}
}
if (isFunction(props2.label)) {
return props2.label(h, {
value: innerValue.value
});
}
if (context.slots.label) {
return context.slots.label({
value: innerValue.value
});
}
return iconContent.value;
};
return function () {
return createVNode("div", {
"class": switchClasses.value,
"onClick": handleToggle
}, [createVNode("div", {
"class": dotClasses.value
}, [createVNode("div", {
"class": labelClasses.value
}, [renderContent()])])]);
};
}
});
export { _Switch as default };
//# sourceMappingURL=switch.js.map