UNPKG

@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
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 };