mldong-flow-designer-plus
Version:
本项目包含了作者为B站课堂视频[《工作流设计器开发最佳实践》](https://www.bilibili.com/cheese/play/ss24484)的过程源码。教程中开发的组件也可用于实际生产环境中。以下是和使用文档和课程章节说明。 ## 实战项目 [演示地址](https://flow-pro.mldong.com/)
180 lines (179 loc) • 5.77 kB
JavaScript
import { t as genComponentStyleHook, h as classNames, $ as useConfigInject, r as flattenChildren, b as _objectSpread2, f as booleanType, P as PropTypes, W as tuple } from "./index-DwKsTObm.js";
import { computed, defineComponent, createVNode } from "vue";
import { c as createContext } from "./createContext-ne6PasgT.js";
import { l as isEmpty } from "./index-C41_Bymr.js";
const genSpaceCompactStyle = (token) => {
const {
componentCls
} = token;
return {
[componentCls]: {
display: "inline-flex",
"&-block": {
display: "flex",
width: "100%"
},
"&-vertical": {
flexDirection: "column"
}
}
};
};
const genSpaceStyle = (token) => {
const {
componentCls
} = token;
return {
[componentCls]: {
display: "inline-flex",
"&-rtl": {
direction: "rtl"
},
"&-vertical": {
flexDirection: "column"
},
"&-align": {
flexDirection: "column",
"&-center": {
alignItems: "center"
},
"&-start": {
alignItems: "flex-start"
},
"&-end": {
alignItems: "flex-end"
},
"&-baseline": {
alignItems: "baseline"
}
},
[`${componentCls}-item`]: {
"&:empty": {
display: "none"
}
}
}
};
};
const useStyle = genComponentStyleHook("Space", (token) => [genSpaceStyle(token), genSpaceCompactStyle(token)]);
const spaceCompactItemProps = () => ({
compactSize: String,
compactDirection: PropTypes.oneOf(tuple("horizontal", "vertical")).def("horizontal"),
isFirstItem: booleanType(),
isLastItem: booleanType()
});
const SpaceCompactItemContext = createContext(null);
const useCompactItemContext = (prefixCls, direction) => {
const compactItemContext = SpaceCompactItemContext.useInject();
const compactItemClassnames = computed(() => {
if (!compactItemContext || isEmpty(compactItemContext)) return "";
const {
compactDirection,
isFirstItem,
isLastItem
} = compactItemContext;
const separator = compactDirection === "vertical" ? "-vertical-" : "-";
return classNames({
[`${prefixCls.value}-compact${separator}item`]: true,
[`${prefixCls.value}-compact${separator}first-item`]: isFirstItem,
[`${prefixCls.value}-compact${separator}last-item`]: isLastItem,
[`${prefixCls.value}-compact${separator}item-rtl`]: direction.value === "rtl"
});
});
return {
compactSize: computed(() => compactItemContext === null || compactItemContext === void 0 ? void 0 : compactItemContext.compactSize),
compactDirection: computed(() => compactItemContext === null || compactItemContext === void 0 ? void 0 : compactItemContext.compactDirection),
compactItemClassnames
};
};
const NoCompactStyle = defineComponent({
name: "NoCompactStyle",
setup(_, _ref) {
let {
slots
} = _ref;
SpaceCompactItemContext.useProvide(null);
return () => {
var _a;
return (_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots);
};
}
});
const spaceCompactProps = () => ({
prefixCls: String,
size: {
type: String
},
direction: PropTypes.oneOf(tuple("horizontal", "vertical")).def("horizontal"),
align: PropTypes.oneOf(tuple("start", "end", "center", "baseline")),
block: {
type: Boolean,
default: void 0
}
});
const CompactItem = defineComponent({
name: "CompactItem",
props: spaceCompactItemProps(),
setup(props, _ref2) {
let {
slots
} = _ref2;
SpaceCompactItemContext.useProvide(props);
return () => {
var _a;
return (_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots);
};
}
});
defineComponent({
name: "ASpaceCompact",
inheritAttrs: false,
props: spaceCompactProps(),
setup(props, _ref3) {
let {
attrs,
slots
} = _ref3;
const {
prefixCls,
direction: directionConfig
} = useConfigInject("space-compact", props);
const compactItemContext = SpaceCompactItemContext.useInject();
const [wrapSSR, hashId] = useStyle(prefixCls);
const clx = computed(() => {
return classNames(prefixCls.value, hashId.value, {
[`${prefixCls.value}-rtl`]: directionConfig.value === "rtl",
[`${prefixCls.value}-block`]: props.block,
[`${prefixCls.value}-vertical`]: props.direction === "vertical"
});
});
return () => {
var _a;
const childNodes = flattenChildren(((_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots)) || []);
if (childNodes.length === 0) {
return null;
}
return wrapSSR(createVNode("div", _objectSpread2(_objectSpread2({}, attrs), {}, {
"class": [clx.value, attrs.class]
}), [childNodes.map((child, i) => {
var _a2;
const key = child && child.key || `${prefixCls.value}-item-${i}`;
const noCompactItemContext = !compactItemContext || isEmpty(compactItemContext);
return createVNode(CompactItem, {
"key": key,
"compactSize": (_a2 = props.size) !== null && _a2 !== void 0 ? _a2 : "middle",
"compactDirection": props.direction,
"isFirstItem": i === 0 && (noCompactItemContext || (compactItemContext === null || compactItemContext === void 0 ? void 0 : compactItemContext.isFirstItem)),
"isLastItem": i === childNodes.length - 1 && (noCompactItemContext || (compactItemContext === null || compactItemContext === void 0 ? void 0 : compactItemContext.isLastItem))
}, {
default: () => [child]
});
})]));
};
}
});
export {
NoCompactStyle as N,
useCompactItemContext as u
};
//# sourceMappingURL=Compact-CXMNSCdJ.js.map