@vrx-arco/pro-components
Version:
<p align="center"> <img src="https://vrx-arco.github.io/arco-design-pro/favicon.svg" width="200" height="250"> </p>
77 lines (76 loc) • 2.6 kB
JavaScript
import { style } from "../style/var.js";
import { loginFormEmits } from "../LoginForm/config.js";
import { LoginForm } from "../LoginForm/index.js";
import { LoginBanner } from "./Banner.js";
import { createVNode, defineComponent } from "vue";
import { Layout } from "@arco-design/web-vue";
import { controlVModel } from "@vrx-arco/use";
const LoginPage = /* @__PURE__ */ defineComponent({
name: "vrx-arco-login-page",
props: {
logo: String,
title: String,
bannerTitle: String,
bannerSubtitle: String,
bannerImage: String,
formTitle: String,
formSubtitle: String,
formForget: {
type: Boolean,
default: false
},
formRegister: {
type: Boolean,
default: false
},
formRemember: {
type: Boolean,
default: false
},
onSubmit: Function,
model: Object
},
emits: loginFormEmits(),
setup: (props, { slots, emit }) => {
const { bemClass } = style("login-page");
const model = controlVModel(props, "model", emit, () => ({
username: "",
password: ""
}));
return () => {
const { logo, title, bannerTitle, bannerSubtitle, bannerImage, formTitle, formSubtitle, formForget, formRegister, formRemember, onSubmit } = props;
return createVNode(Layout, { "class": bemClass() }, { default: () => [createVNode(Layout.Sider, {
"class": bemClass("__sider"),
"style": { width: "30%" }
}, { default: () => [createVNode(Layout, { "class": bemClass("__sider-inner") }, { default: () => [createVNode(Layout.Header, { "class": bemClass("__logo-container") }, { default: () => [slots.logo?.() || createVNode("img", {
"class": bemClass("__logo"),
"alt": "logo",
"src": logo
}, null), slots.title?.() || createVNode("div", { "class": bemClass("__logo-text") }, [title])] }), createVNode(Layout.Content, null, { default: () => [createVNode(LoginBanner, {
"title": bannerTitle,
"subtitle": bannerSubtitle,
"image": bannerImage
}, {
title: slots.bannerTitle,
subtitle: slots.bannerSubtitle,
image: slots.bannerImage
})] })] })] }), createVNode(Layout.Content, { "class": bemClass("__content") }, { default: () => [createVNode(LoginForm, {
"model": model.value,
"onUpdate:model": ($event) => model.value = $event,
"class": bemClass("__form"),
"title": formTitle,
"subtitle": formSubtitle,
"forget": formForget,
"remember": formRemember,
"register": formRegister,
"onSubmit": onSubmit,
"onForget": () => emit("forget"),
"onRegister": () => emit("register")
}, {
title: slots.formTitle,
form: slots.form
})] })] });
};
}
});
export { LoginPage };