Unverified Commit 292bd1fe authored by 言肆's avatar 言肆 Committed by GitHub

Merge pull request #143 from YogaZong/next

feat: PageLoading Component
parents f834b2b3 a53c40ae
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
v-model:selectedKeys="baseState.selectedKeys" v-model:selectedKeys="baseState.selectedKeys"
v-model:openKeys="baseState.openKeys" v-model:openKeys="baseState.openKeys"
v-bind="state" v-bind="state"
:loading="loading"
:collapsed-button-render="false" :collapsed-button-render="false"
:breadcrumb="{ routes: breadcrumb }" :breadcrumb="{ routes: breadcrumb }"
> >
...@@ -42,6 +43,7 @@ ...@@ -42,6 +43,7 @@
un-checked-children="OFF" un-checked-children="OFF"
/> />
</span> </span>
<a-button @click="handlePageLoadingClick">Page Loading</a-button>
<a-select v-model:value="state.navTheme" style="width: 100px"> <a-select v-model:value="state.navTheme" style="width: 100px">
<a-select-option value="light">Light</a-select-option> <a-select-option value="light">Light</a-select-option>
<a-select-option value="dark">Dark</a-select-option> <a-select-option value="dark">Dark</a-select-option>
...@@ -57,7 +59,7 @@ ...@@ -57,7 +59,7 @@
</template> </template>
<script lang="ts"> <script lang="ts">
import { computed, defineComponent, reactive, watchEffect } from 'vue'; import { computed, defineComponent, reactive, ref, watchEffect } from 'vue';
import { useRouter } from 'vue-router'; import { useRouter } from 'vue-router';
import { Button, Switch, Select, Space } from 'ant-design-vue'; import { Button, Switch, Select, Space } from 'ant-design-vue';
import { getMenuData, clearMenuItem, FooterToolbar } from '@ant-design-vue/pro-layout'; import { getMenuData, clearMenuItem, FooterToolbar } from '@ant-design-vue/pro-layout';
...@@ -76,6 +78,8 @@ export default defineComponent({ ...@@ -76,6 +78,8 @@ export default defineComponent({
[Space.name]: Space, [Space.name]: Space,
}, },
setup() { setup() {
const loading = ref(false);
const router = useRouter(); const router = useRouter();
const { menuData } = getMenuData(clearMenuItem(router.getRoutes())); const { menuData } = getMenuData(clearMenuItem(router.getRoutes()));
...@@ -116,12 +120,22 @@ export default defineComponent({ ...@@ -116,12 +120,22 @@ export default defineComponent({
.map(r => r.path); .map(r => r.path);
} }
}); });
function handlePageLoadingClick() {
loading.value = true;
setTimeout(() => {
loading.value = false;
}, 2000);
}
return { return {
i18n, i18n,
baseState, baseState,
state, state,
loading,
breadcrumb, breadcrumb,
handlePageLoadingClick,
handleCollapsed, handleCollapsed,
}; };
}, },
......
...@@ -19,6 +19,7 @@ import { getPropsSlot, PropTypes } from './utils'; ...@@ -19,6 +19,7 @@ import { getPropsSlot, PropTypes } from './utils';
import type { CustomRender, FormatMessage, WithFalse } from './typings'; import type { CustomRender, FormatMessage, WithFalse } from './typings';
import './BasicLayout.less'; import './BasicLayout.less';
import PageLoading from '@/PageLoading';
export const basicLayoutProps = { export const basicLayoutProps = {
...defaultSettingProps, ...defaultSettingProps,
...@@ -249,7 +250,7 @@ const ProLayout = defineComponent({ ...@@ -249,7 +250,7 @@ const ProLayout = defineComponent({
isChildrenLayout={props.isChildrenLayout} isChildrenLayout={props.isChildrenLayout}
style={props.disableContentMargin ? undefined : props.contentStyle} style={props.disableContentMargin ? undefined : props.contentStyle}
> >
{slots.default?.()} {props.loading ? <PageLoading /> : slots.default?.()}
</WrapContent> </WrapContent>
{footerRender && footerRender(props)} {footerRender && footerRender(props)}
</Layout> </Layout>
......
import { defineComponent, h } from 'vue';
import { Spin, SpinProps } from 'ant-design-vue';
import { getSpinProps } from 'ant-design-vue/es/spin/Spin';
export type PageLoadingProps = SpinProps;
const PageLoading = defineComponent({
name: 'PageLoading',
props: {
...getSpinProps(),
},
render() {
return h(
'div',
{ style: { paddingTop: '100px', textAlign: 'center' } },
h(Spin, { ...this.$props }),
);
},
});
export default PageLoading;
...@@ -27,3 +27,5 @@ export type { WaterMarkProps } from './WaterMark'; ...@@ -27,3 +27,5 @@ export type { WaterMarkProps } from './WaterMark';
export { default } from './BasicLayout'; export { default } from './BasicLayout';
// export { default as ProLayout } from './BasicLayout'; // export { default as ProLayout } from './BasicLayout';
export type { BasicLayoutProps } from './BasicLayout'; export type { BasicLayoutProps } from './BasicLayout';
export { default as PageLoading } from './Pageloading';
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment