@oiij/naive-ui
Version:
Some Composable Functions And Components for Vue 3
90 lines (88 loc) • 2.2 kB
JavaScript
import { useDataRequest } from "../../composables/useDataRequest.js";
import { computed, defineComponent, guardReactiveProps, normalizeProps, renderSlot, toValue } from "vue";
//#region src/components/remote-request/RemoteRequest.vue
const _sfc_main = /* @__PURE__ */ defineComponent({
__name: "RemoteRequest",
props: {
api: { type: Function },
defaultParams: {},
manual: { type: Boolean },
fields: {},
requestOptions: {},
requestPlugins: {}
},
emits: [
"before",
"success",
"error",
"finally"
],
setup(__props, { expose: __expose, emit: __emit }) {
const emit = __emit;
const _fields = {
page: "page",
pageSize: "pageSize",
list: "list",
count: "count",
...__props.fields
};
const { loading, data, error, params, list, pagination, run, runAsync, refresh, refreshAsync, cancel, mutate, setParams, runParams, runParamsAsync, onBefore, onSuccess, onError, onFinally } = useDataRequest(__props.api, {
defaultParams: __props.defaultParams,
fields: _fields,
manual: __props.manual,
requestOptions: __props.requestOptions,
requestPlugins: __props.requestPlugins
});
onBefore((params$1) => {
emit("before", params$1);
});
onSuccess((data$1, params$1) => {
emit("success", data$1, params$1);
});
onError((err, params$1) => {
emit("error", err, params$1);
});
onFinally((params$1, data$1, err) => {
emit("finally", params$1, data$1, err);
});
const expose = {
loading,
data,
error,
params,
list,
pagination,
run,
runAsync,
refresh,
refreshAsync,
cancel,
mutate,
setParams,
runParams,
runParamsAsync,
onBefore,
onSuccess,
onError,
onFinally
};
const templateBind = computed(() => {
return {
...expose,
loading: toValue(loading),
data: toValue(data),
error: toValue(error),
params: toValue(params),
list: toValue(list),
pagination: toValue(pagination)
};
});
__expose(expose);
return (_ctx, _cache) => {
return renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(templateBind.value)));
};
}
});
var RemoteRequest_default = _sfc_main;
//#endregion
export { RemoteRequest_default as default };