This commit is contained in:
2022-12-09 16:41:41 +08:00
parent c1cce5a7c2
commit ff7aa8774f
2003 changed files with 156639 additions and 140 deletions

View File

@@ -0,0 +1,39 @@
import fs from "fs";
import MarkdownIt from "markdown-it";
import { RuleBlock } from "markdown-it/lib/parser_block";
export default (md: MarkdownIt): void => {
const parser: RuleBlock = (state, startLine, endLine, silent) => {
const CH = "<".charCodeAt(0);
const pos = state.bMarks[startLine] + state.tShift[startLine];
const max = state.eMarks[startLine];
if (state.sCount[startLine] - state.blkIndent >= 4) {
return false;
}
for (let i = 0; i < 3; ++i) {
const ch = state.src.charCodeAt(pos + i);
if (ch !== CH || pos + i >= max) return false;
}
if (silent) {
return true;
}
const start = pos + 3;
const end = state.skipSpacesBack(max, pos);
const rawPath = state.src
.slice(start, end)
.trim()
.replace(/^@/, process.cwd());
const content = fs.existsSync(rawPath)
? fs.readFileSync(rawPath).toString()
: "Not found: " + rawPath;
const meta = rawPath.replace(rawPath, "");
state.line = startLine + 1;
const token = state.push("fence", "code", 0);
token.info = rawPath.split(".").pop() + meta;
token.content = content;
token.markup = "```";
token.map = [startLine, startLine + 1];
return true;
};
md.block.ruler.before("fence", "snippet", parser);
};

View File

@@ -0,0 +1,138 @@
.layui-form-item {
margin-bottom: 20px;
clear: both;
}
.layui-form-item-right .layui-form-label {
text-align: right;
}
.layui-form-item-left .layui-form-label {
text-align: left;
}
.layui-form-item-top .layui-form-label {
text-align: left;
float: none;
}
.layui-form-item-top > div {
margin-left: 0;
}
.layui-form-item:after {
content: "\20";
clear: both;
display: block;
height: 0;
}
.layui-form-label {
float: left;
display: block;
width: 95px;
padding-right: 15px;
line-height: 38px;
font-weight: 400;
}
.layui-form-label-col {
display: block;
float: none;
padding: 9px 0;
line-height: 20px;
text-align: left;
}
.layui-form-item .layui-inline {
margin-bottom: 5px;
margin-right: 10px;
}
.layui-input-block {
margin-left: 110px;
min-height: 36px;
}
.layui-input-inline {
display: inline-block;
vertical-align: middle;
}
.layui-form-item .layui-input-inline {
float: left;
width: 190px;
margin-right: 10px;
}
.layui-form-text .layui-input-inline {
width: auto;
}
.layui-form-mid {
float: left;
display: block;
padding: 9px 0 !important;
line-height: 20px;
margin-right: 10px;
}
.layui-form-danger + .layui-form-select .layui-input,
.layui-form-danger:focus {
border-color: #ff5722 !important;
}
.layui-form-item .layui-form-checkbox {
margin-top: 4px;
}
.layui-form-item .layui-form-checkbox[lay-skin="primary"] {
margin-top: 10px;
}
.layui-required {
color: #ff5722;
font-size: 12px;
line-height: 1;
}
.layui-form .layui-form-item {
.layui-input-block,
.layui-input-inline {
.layui-form-danger {
&, .layui-textarea, .layui-tag-input, .layui-input {
border-color: #ff5722 !important;
}
}
}
}
.layui-error-message {
color: #ff5722;
font-size: 12px;
line-height: 1;
padding-top: 5px;
position: absolute;
top: 100%;
left: 0;
}
.layui-error-message-anim {
-ms-transform-origin: 0 0;
-webkit-transform-origin: 0 0;
transform-origin: 0 0;
-webkit-animation: layui-top-show-anim 0.3s ease 1;
animation: layui-top-show-anim 0.3s ease 1;
}
@keyframes layui-top-show-anim {
0% {
opacity: 0.3;
transform: rotateX(45deg);
}
100% {
opacity: 1;
transform: rotateX(0);
}
}

View File

@@ -0,0 +1,148 @@
::: anchor
:::
::: title 基本介绍
:::
::: describe 用来代表用户或事物,支持图片、图标或字符展示。
:::
::: title 基础使用
:::
::: demo 使用 `lay-avatar` 标签, 创建头像
<template>
<lay-space>
<lay-avatar :src="src"></lay-avatar>
<lay-avatar> Bai </lay-avatar>
<lay-avatar></lay-avatar>
<lay-avatar icon="layui-icon-face-smile"></lay-avatar>
</lay-space>
</template>
<script>
import { ref } from 'vue'
export default {
setup() {
const src = ref("https://portrait.gitee.com/uploads/avatars/user/1611/4835367_Jmysy_1578975358.png")
return {
src
}
}
}
</script>
:::
::: title 圆角头像
:::
::: demo 通过 `radius` 属性, 开启头像圆角。
<template>
<lay-avatar :src="src" radius></lay-avatar>
</template>
<script>
import { ref } from 'vue'
export default {
setup() {
const src = "https://portrait.gitee.com/uploads/avatars/user/1611/4835367_Jmysy_1578975358.png"
return {
src
}
}
}
</script>
:::
::: title 尺寸大小
:::
::: demo 通过 `size` 属性, 设置头像大小。
<template>
<lay-avatar :src="src" size="xs"></lay-avatar>
&nbsp;&nbsp;
<lay-avatar :src="src" size="sm"></lay-avatar>
&nbsp;&nbsp;
<lay-avatar :src="src"></lay-avatar>
&nbsp;&nbsp;
<lay-avatar :src="src" size="lg"></lay-avatar>
</template>
<script>
import { ref } from 'vue'
export default {
setup() {
const src = "https://portrait.gitee.com/uploads/avatars/user/1611/4835367_Jmysy_1578975358.png"
return {
src
}
}
}
</script>
:::
::: title 头像列表
:::
::: demo 通过 `lay-avatar-list` 标签, 创建头像列表。
<template>
<lay-avatar-list>
<lay-avatar :src="src" radius></lay-avatar>
<lay-avatar :src="src" radius></lay-avatar>
<lay-avatar :src="src" radius></lay-avatar>
<lay-avatar :src="src" radius></lay-avatar>
<lay-avatar :src="src" radius></lay-avatar>
</lay-avatar-list>
</template>
<script>
import { ref } from 'vue'
export default {
setup() {
const src = "https://portrait.gitee.com/uploads/avatars/user/1611/4835367_Jmysy_1578975358.png"
return {
src
}
}
}
</script>
:::
::: title Avatar 属性
:::
::: table
| 属性 | 描述 | 可选值 |
| ------ | ---- | -------------- |
| src | 图源 | -- |
| size | 尺寸 | `xs` `sm` `lg` |
| radius | 圆形 | `true` `false` |
| alt | 描述图像的替换文本 | -- |
:::
::: contributor avatar
:::
::: previousNext avatar
:::

View File

@@ -0,0 +1,44 @@
import vue from "@vitejs/plugin-vue";
import vueJsx from "@vitejs/plugin-vue-jsx";
import Markdown from "vite-plugin-md";
import container from "markdown-it-container";
import preWrapper from "./pre-wrapper";
import highlight from "./highlight";
import snippet from "./snippet";
import demo from "./create-demo";
import createTitle from "./create-title";
import createQuote from "./create-quote";
import createDescribe from "./create-describe";
import createTable from "./create-table";
import createAnchor from "./create-anchor";
import createPreviousNext from "./create-previous-next";
import createContributor from "./create-contributor";
const plugins = [
vue({
include: [/\.vue$/, /\.md$/],
}),
vueJsx(),
Markdown({
markdownItOptions: {
html: true,
linkify: true,
typographer: true,
highlight,
},
markdownItSetup(md) {
md.use(snippet)
.use(preWrapper)
.use(container, "demo", demo)
.use(...createTable("table"))
.use(...createQuote("quote"))
.use(...createTitle("title"))
.use(...createDescribe("describe"))
.use(...createAnchor("anchor"))
.use(...createPreviousNext("previousNext"))
.use(...createContributor("contributor"));
},
}),
] as any;
export default plugins;

View File

@@ -0,0 +1,92 @@
::: anchor
:::
::: title 基本介绍
:::
::: describe 页面容器, 用于控制内容的边距。
:::
::: title 普通容器
:::
::: demo
<template>
<lay-container>
<div class="container-demo"></div>
</lay-container>
</template>
<script>
import { ref } from 'vue'
export default {
setup() {
return {
}
}
}
</script>
<style>
.container-demo {
width:100%;
height: 300px;
background: #79C48C;
border-radius: 2px;
}
</style>
:::
::: title 流式容器
:::
::: demo
<template>
<lay-container fluid>
<div class="container-demo"></div>
</lay-container>
</template>
<script>
import { ref } from 'vue'
export default {
setup() {
return {
}
}
}
</script>
<style>
.container-demo {
width:100%;
height: 300px;
background: #79C48C;
}
</style>
:::
::: title 容器属性
:::
::: table
| 属性 | 描述 | 类型 | 默认值 | 可选值 |
| ----- | ------ | -------------- |------ | -------------- |
| fluid | 流模式 | `boolean` `string` | `flase` | `true` `false` |
:::
::: contributor container
:::
::: previousNext container
:::

View File

@@ -0,0 +1,20 @@
<script lang="ts">
export default {
name: "RateHalfIcon",
};
</script>
<script setup lang="ts">
import LayIcon from "../component/icon/index";
const props = defineProps<{
color?: string;
size?: string;
}>();
</script>
<template>
<lay-icon
:color="props.color"
:size="props.size"
type="layui-icon-rate-half"
/>
</template>