UNPKG

tdesign-mobile-vue

Version:
148 lines (144 loc) 5.7 kB
/** * tdesign v1.7.0 * (c) 2024 TDesign Group * @license MIT */ import _defineProperty from '@babel/runtime/helpers/defineProperty'; import { defineComponent, inject, computed, onMounted, createVNode } from 'vue'; import { ChevronUpIcon, ChevronDownIcon } from 'tdesign-icons-vue-next'; import { Cell } from '../cell/index.js'; import props from './collapse-panel-props.js'; import config from '../config.js'; import { findIndex } from './util.js'; import { useTNodeJSX, useContent } from '../hooks/tnode.js'; import { usePrefixClass } from '../hooks/useClass.js'; import '../cell/cell.js'; import '../cell/props.js'; import '../form/hooks.js'; import 'lodash/isBoolean'; import '../shared/hover.js'; import '../config-provider/useConfig.js'; import 'lodash/isFunction'; import 'lodash/cloneDeep'; import 'lodash/isString'; import '../config-provider/context.js'; import 'lodash/mergeWith'; import 'lodash/merge'; import 'lodash/isArray'; 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 'lodash/camelCase'; import 'lodash/kebabCase'; import '../hooks/render-tnode.js'; import 'lodash/isEmpty'; import 'lodash/isObject'; import '../cell/cell-group.js'; import '../cell/cell-group-props.js'; import '../shared/component.js'; var prefix = config.prefix; var _CollapsePanel = defineComponent({ name: "".concat(prefix, "-collapse-panel"), components: { TCell: Cell }, props: props, setup: function setup(props2, _ref) { var slots = _ref.slots; var renderTNodeJSX = useTNodeJSX(); var renderContent = useContent(); var collapsePanelClass = usePrefixClass("collapse-panel"); var parent = inject("collapse"); var renderParentTNode = inject("renderParentTNode"); var disabled = computed(function () { return (parent === null || parent === void 0 ? void 0 : parent.disabled.value) || props2.disabled; }); var rootClass = computed(function () { return _defineProperty(_defineProperty(_defineProperty(_defineProperty({}, "".concat(collapsePanelClass.value), true), "".concat(collapsePanelClass.value, "--").concat(props2.placement), true), "".concat(collapsePanelClass.value, "--active"), isActive.value), "".concat(collapsePanelClass.value, "--disabled"), disabled.value); }); var isActive = computed(function () { return findIndex(props2.value, parent === null || parent === void 0 ? void 0 : parent.activeValue.value) > -1; }); var updatePanelValue = function updatePanelValue(args) { if (props2.value != null) { parent === null || parent === void 0 || parent.onPanelChange(props2.value, args); } }; var handleClick = function handleClick(e) { e === null || e === void 0 || e.stopPropagation(); if (disabled.value) { return; } updatePanelValue({ e: e }); }; onMounted(function () { if (parent !== null && parent !== void 0 && parent.defaultExpandAll) { updatePanelValue(); } }); var renderDefaultIcon = function renderDefaultIcon() { if (props2.placement === "bottom") { return isActive.value ? createVNode(ChevronUpIcon, null, null) : createVNode(ChevronDownIcon, null, null); } return isActive.value ? createVNode(ChevronDownIcon, null, null) : createVNode(ChevronUpIcon, null, null); }; var panelExpandIcon = computed(function () { return slots.expandIcon || props2.expandIcon; }); var renderRightIcon = function renderRightIcon() { var tNodeRender = panelExpandIcon.value === void 0 ? renderParentTNode : renderTNodeJSX; return createVNode("div", { "class": "".concat(collapsePanelClass.value, "__header-icon") }, [tNodeRender("expandIcon", renderDefaultIcon())]); }; var renderPanelContent = function renderPanelContent() { var panelContent = renderContent("default", "content"); if (props2.destroyOnCollapse && !isActive.value) { return null; } return createVNode("div", { "class": "".concat(collapsePanelClass.value, "__content") }, [panelContent]); }; return function () { var headerContent = renderTNodeJSX("header"); var noteContent = renderTNodeJSX("headerRightContent"); var _leftIcon = renderTNodeJSX("headerLeftIcon"); return createVNode("div", { "class": rootClass.value }, [createVNode("div", { "class": "".concat(collapsePanelClass.value, "__title"), "onClick": handleClick }, [createVNode(Cell, { "class": ["".concat(collapsePanelClass.value, "__header"), "".concat(collapsePanelClass.value, "__header--").concat(props2.placement), _defineProperty({}, "".concat(collapsePanelClass.value, "__header--expanded"), isActive.value)] }, { leftIcon: function leftIcon() { return _leftIcon; }, title: function title() { return headerContent; }, note: function note() { return noteContent; }, rightIcon: function rightIcon() { return renderRightIcon(); } })]), createVNode("div", { "class": "".concat(collapsePanelClass.value, "__body"), "style": { gridTemplateRows: isActive.value ? "1fr" : "0fr" } }, [createVNode("div", { "class": "".concat(collapsePanelClass.value, "__inner") }, [renderPanelContent()])])]); }; } }); export { _CollapsePanel as default }; //# sourceMappingURL=collapse-panel.js.map