build: 发布 1.0.4 版本
This commit is contained in:
parent
bb94f7c291
commit
1a721dfbf7
@ -5,68 +5,75 @@ export default {
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { computed, useSlots } from 'vue';
|
import { computed, useSlots } from "vue";
|
||||||
import './index.less'
|
import "./index.less";
|
||||||
export interface LayLineProps {
|
export interface LayLineProps {
|
||||||
direction?: 'horizontal' | 'vertical';
|
direction?: "horizontal" | "vertical";
|
||||||
contentPosition?: 'center' | 'left' | 'right';
|
contentPosition?: "center" | "left" | "right";
|
||||||
borderWidth?: string;
|
borderWidth?: string;
|
||||||
borderStyle?: string;
|
borderStyle?: string;
|
||||||
offset?: string;
|
offset?: string;
|
||||||
theme?: string;
|
theme?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
const props = withDefaults(defineProps<LayLineProps>(),{
|
const props = withDefaults(defineProps<LayLineProps>(), {
|
||||||
direction: 'horizontal',
|
direction: "horizontal",
|
||||||
contentPosition: 'center',
|
contentPosition: "center",
|
||||||
borderWidth: '1px',
|
borderWidth: "1px",
|
||||||
borderStyle: 'solid',
|
borderStyle: "solid",
|
||||||
offset: '25px',
|
offset: "25px",
|
||||||
})
|
});
|
||||||
|
|
||||||
const slots = useSlots();
|
const slots = useSlots();
|
||||||
const lineTheme: string[] = ['red', 'orange', 'green', 'cyan', 'blue', 'black', 'gray'];
|
const lineTheme: string[] = [
|
||||||
|
"red",
|
||||||
|
"orange",
|
||||||
|
"green",
|
||||||
|
"cyan",
|
||||||
|
"blue",
|
||||||
|
"black",
|
||||||
|
"gray",
|
||||||
|
];
|
||||||
const isSupportedTheme: boolean = lineTheme.includes(props.theme ?? "");
|
const isSupportedTheme: boolean = lineTheme.includes(props.theme ?? "");
|
||||||
|
|
||||||
const lineClass = computed(() => ([
|
const lineClass = computed(() => [
|
||||||
`layui-line-${props.direction}`,
|
`layui-line-${props.direction}`,
|
||||||
{
|
{
|
||||||
[`layui-border-${props.theme}`]: isSupportedTheme,
|
[`layui-border-${props.theme}`]: isSupportedTheme,
|
||||||
[`layui-line-with-text`]: Boolean(slots.default)}
|
[`layui-line-with-text`]: Boolean(slots.default),
|
||||||
])
|
},
|
||||||
);
|
]);
|
||||||
|
|
||||||
const lineStyle = computed(() => ({
|
const lineStyle = computed(() => ({
|
||||||
'border-color': !isSupportedTheme ? props.theme : undefined,
|
"border-color": !isSupportedTheme ? props.theme : undefined,
|
||||||
'--layui-line-border-width': props.borderWidth,
|
"--layui-line-border-width": props.borderWidth,
|
||||||
'--layui-line-border-style': props.borderStyle,
|
"--layui-line-border-style": props.borderStyle,
|
||||||
}));
|
}));
|
||||||
|
|
||||||
const lineTextStyle = computed(() => ({
|
const lineTextStyle = computed(() => ({
|
||||||
'--layui-line-text-offset': (props.contentPosition != 'center' ? props.offset : '50%'),
|
"--layui-line-text-offset":
|
||||||
'transform': calcTranslate()
|
props.contentPosition != "center" ? props.offset : "50%",
|
||||||
|
transform: calcTranslate(),
|
||||||
}));
|
}));
|
||||||
|
|
||||||
function calcTranslate(){
|
function calcTranslate() {
|
||||||
if(props.offset.includes("%")){
|
if (props.offset.includes("%")) {
|
||||||
return props.contentPosition === 'right'
|
return props.contentPosition === "right"
|
||||||
? 'translate(50%, -50%)'
|
? "translate(50%, -50%)"
|
||||||
: 'translate(-50%, -50%)'
|
: "translate(-50%, -50%)";
|
||||||
}
|
}
|
||||||
return undefined
|
return undefined;
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div
|
<div :class="lineClass" :style="lineStyle">
|
||||||
:class="lineClass"
|
<span
|
||||||
:style="lineStyle"
|
v-if="$slots.default && direction === 'horizontal'"
|
||||||
>
|
|
||||||
<span v-if="$slots.default && direction === 'horizontal'"
|
|
||||||
:class="[`layui-line-text layui-line-text-${contentPosition}`]"
|
:class="[`layui-line-text layui-line-text-${contentPosition}`]"
|
||||||
:style="lineTextStyle"
|
:style="lineTextStyle"
|
||||||
>
|
>
|
||||||
<slot/>
|
<slot />
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
Loading…
Reference in New Issue
Block a user