@opentiny/vue-renderless
Version:
An enterprise-class UI component library, support both Vue.js 2 and Vue.js 3, as well as PC and mobile.
153 lines (152 loc) • 5.16 kB
JavaScript
import {
__spreadProps,
__spreadValues
} from "../chunk-G2ADBYYC.js";
import {
getStrictData,
sizesChange,
getTreeCheckableData,
getFilterTreeData,
getFilterData,
getCheckableData,
checkedEvent,
watchData,
getCheckedSummary,
getDeteminate,
watchChecked,
watchDefaultCheckded,
updateAllChecked,
handleAllCheckedChange,
clearQuery,
setPosition,
selectChange,
handlePageChange,
setExpandCache
} from "./index";
const api = [
"markRaw",
"toRaw",
"state",
"check",
"sizesChange",
"clearQuery",
"handleAllCheckedChange",
"checkedEvent",
"setPosition",
"selectChange",
"handlePageChange"
];
const initState = ({ reactive, props, parent, computed, api: api2, slots, designConfig }) => {
var _a;
const state = reactive({
query: "",
checked: [],
allChecked: false,
internalPage: props.pagerOp.pageVO.currentPage || 1,
pagerTotal: 0,
pageChangeData: parent.state.isToLeft,
currentPage: props.pagerOp.pageVO.currentPage || 1,
sizes: props.pagerOp && props.pagerOp.pageVO.pageSize,
render: {},
checkChangeByUser: true,
filteredData: computed(() => api2.getFilterData()),
checkableData: computed(() => api2.getCheckableData()),
checkedSummary: computed(() => api2.getCheckedSummary()),
isIndeterminate: computed(() => api2.getDeteminate()),
hasNoMatch: computed(() => state.query.length > 0 && state.filteredData.length === 0),
labelProp: computed(() => props.props.label || "label"),
keyProp: computed(() => props.props.key || "key"),
disabledProp: computed(() => props.props.disabled || "disabled"),
childrenProp: computed(() => props.treeOp && props.treeOp.props && props.treeOp.props.childern || "children"),
hasFooter: computed(() => (!!parent.slots["left-footer"] || !!parent.slots["right-footer"]) && !!slots.default),
renderType: computed(() => props.render && props.render.plugin.name),
expanded: [],
inputBoxType: (designConfig == null ? void 0 : designConfig.inputBoxType) || "underline",
showInputSearch: (_a = designConfig == null ? void 0 : designConfig.showInputSearch) != null ? _a : true
});
return state;
};
const initStateRender = ({ reactive, state, props, api: api2 }) => reactive(__spreadProps(__spreadValues({
keys: state.keyProp,
data: [],
defaultChecked: state.checked,
defaultExpandedKeys: state.expanded,
columns: props.columns
}, props.treeOp), {
on: {
"checked-change": (selected, isAll) => {
api2.selectChange(selected, isAll);
},
check: (data, { checkedKeys }) => {
state.checked = checkedKeys;
},
"node-expand": (node) => api2.setExpandCache(node, true),
"node-collapse": (node) => api2.setExpandCache(node, false)
}
}));
const initWatcher = ({ watch, state, api: api2, props, Table }) => {
watch(
() => state.checked,
(value, oldvalue) => api2.watchChecked({ value, oldvalue })
);
watch(
() => props.pagerOp.pageVO.currentPage,
(value) => {
state.currentPage = value;
},
{ deep: true, immediate: true }
);
watch(() => props.data, api2.watchData, { immediate: true });
watch(() => state.checkableData, api2.updateAllChecked);
watch(
() => props.defaultChecked,
(value, oldvalue) => api2.watchDefaultCheckded({ value, oldvalue }),
{ immediate: true }
);
watch(
() => props.isToLeft,
() => {
if (state.renderType === Table) {
state.internalPage = 1;
state.currentPage = 1;
state.render.data = state.filteredData;
}
}
);
};
const renderless = (props, { computed, reactive, watch, toRaw }, { $prefix, emit, parent, vm, slots, designConfig }) => {
const api2 = {};
const Table = $prefix + "Table";
const Tree = $prefix + "Tree";
const state = initState({ reactive, props, parent, computed, api: api2, slots, designConfig });
Object.assign(api2, {
state,
toRaw,
sizesChange: sizesChange(state),
setPosition: setPosition({ parent, state }),
selectChange: selectChange(state),
handlePageChange: handlePageChange(state),
clearQuery: clearQuery(state),
checkedEvent: checkedEvent(state),
getDeteminate: getDeteminate(state),
updateAllChecked: updateAllChecked({ state, Table, Tree }),
handleAllCheckedChange: handleAllCheckedChange({ state, Table, Tree, vm }),
getCheckedSummary: getCheckedSummary({ props, state, Tree }),
getFilterTreeData: getFilterTreeData({ props, state }),
getTreeCheckableData: getTreeCheckableData(state),
getStrictData: getStrictData({ props, state }),
setExpandCache: setExpandCache(state),
getCheckableData: getCheckableData({ api: api2, state, Tree }),
getFilterData: getFilterData({ api: api2, props, state, Table, Tree }),
watchData: watchData({ api: api2, props, state, Tree }),
watchDefaultCheckded: watchDefaultCheckded({ api: api2, props, state, Tree }),
watchChecked: watchChecked({ api: api2, emit, state })
});
state.render = initStateRender({ reactive, state, props, api: api2 });
initWatcher({ watch, state, api: api2, props, Table });
return api2;
};
export {
api,
renderless
};