develop split for smb-design theme (#1830)

* fix(split): adjust smb theme for split

* fix(split): update  slot demo to smb theme

* fix(split): fix
This commit is contained in:
申君健 2024-08-07 09:26:20 +08:00 committed by GitHub
parent b2cfcfba75
commit 47a74045f5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
8 changed files with 79 additions and 20 deletions

View File

@ -5,7 +5,10 @@
<div class="demo-split-pane">自定义左面板</div>
</template>
<template #trigger>
<div class="trigger-line"></div>
<div class="trigger-line">
<div class="trigger-line__inner"></div>
<tiny-icon-pause class="trigger-line__icon" />
</div>
</template>
<template #right>
<div class="demo-split-pane">自定义右面板</div>
@ -17,8 +20,10 @@
<script setup lang="jsx">
import { ref } from 'vue'
import { Split as TinySplit } from '@opentiny/vue'
import { IconPause } from '@opentiny/vue-icon'
const split2 = ref(0.4)
const TinyIconPause = IconPause()
</script>
<style scoped>
@ -37,8 +42,26 @@ const split2 = ref(0.4)
}
.trigger-line {
position: relative;
width: 5px;
height: 200px;
background-color: black;
height: 100%;
cursor: pointer;
}
.trigger-line__inner {
height: 100%;
width: 1px;
margin-left: 2px;
background: #c2c2c2;
}
.trigger-line__icon {
position: absolute;
top: 50%;
left: -7px;
font-size: 18px;
fill: #c2c2c2;
}
.trigger-line__icon:hover {
fill: #777;
}
</style>

View File

@ -4,5 +4,5 @@ test('拖拽插槽', async ({ page }) => {
page.on('pageerror', (exception) => expect(exception).toBeNull())
await page.goto('split#trigger-slot')
const centerDiv = page.locator('.trigger-line')
await expect(centerDiv).toHaveCSS('background-color', 'rgb(0, 0, 0)')
await expect(centerDiv).toBeVisible()
})

View File

@ -5,7 +5,10 @@
<div class="demo-split-pane">自定义左面板</div>
</template>
<template #trigger>
<div class="trigger-line"></div>
<div class="trigger-line">
<div class="trigger-line__inner"></div>
<tiny-icon-pause class="trigger-line__icon" />
</div>
</template>
<template #right>
<div class="demo-split-pane">自定义右面板</div>
@ -16,10 +19,12 @@
<script lang="jsx">
import { Split } from '@opentiny/vue'
import { IconPause } from '@opentiny/vue-icon'
export default {
components: {
TinySplit: Split
TinySplit: Split,
TinyIconPause: IconPause()
},
data() {
return {
@ -45,8 +50,26 @@ export default {
}
.trigger-line {
position: relative;
width: 5px;
height: 200px;
background-color: black;
height: 100%;
cursor: pointer;
}
.trigger-line__inner {
height: 100%;
width: 1px;
margin-left: 2px;
background: #c2c2c2;
}
.trigger-line__icon {
position: absolute;
top: 50%;
left: -7px;
font-size: 18px;
fill: #c2c2c2;
}
.trigger-line__icon:hover {
fill: #777;
}
</style>

View File

@ -139,7 +139,7 @@
.@{split-prefix-cls}-trigger-left-button {
transform: translate(0, -50%);
left: -6px;
border-radius: 4px 0 0 4px;
border-radius: var(--ti-split-trigger-button-border-radius) 0 0 var(--ti-split-trigger-button-border-radius);
border-right: 0;
}
@ -149,7 +149,7 @@
.@{split-prefix-cls}-trigger-right-button {
transform: translate(0, -50%);
border-radius: 0 4px 4px 0;
border-radius: 0 var(--ti-split-trigger-button-border-radius) var(--ti-split-trigger-button-border-radius) 0;
left: 9px;
border-left: 0;
}
@ -204,7 +204,7 @@
.@{split-prefix-cls}-trigger-top-button {
transform: translate(-50%, 0);
border-radius: 4px 4px 0 0;
border-radius: var(--ti-split-trigger-button-border-radius) var(--ti-split-trigger-button-border-radius) 0 0;
top: -6px;
border-bottom: 0;
@ -219,7 +219,7 @@
.@{split-prefix-cls}-trigger-bottom-button {
transform: translate(-50%, 0);
border-radius: 0 0 4px 4px;
border-radius: 0 0 var(--ti-split-trigger-button-border-radius) var(--ti-split-trigger-button-border-radius);
border-top: 0;
top: 9px;
@ -267,8 +267,8 @@
display: flex;
justify-content: center;
align-items: center;
border: 1px solid rgba(25, 25, 25, 0.1);
background: #fff;
border: var(--ti-split-trigger-button-border-width) solid var(--ti-split-trigger-button-border-color);
background: var(--ti-split-trigger-button-bg-color);
transition: all 0.1s;
visibility: hidden;

View File

@ -0,0 +1,4 @@
export const tinySplitSmbTheme = {
'ti-split-trigger-button-border-width': '0', // 不显示边框线
'ti-split-trigger-button-bg-color': 'var(--ti-base-color-transparent)' // 不显示背景
}

View File

@ -33,4 +33,13 @@
--ti-split-trigger-bar-margin-top: var(--ti-common-space-base, 4px);
// 垂直分割线鼠标
--ti-split-trigger-con-row-cursor: n-resize;
// 简易模式的按钮的边框色
--ti-split-trigger-button-border-color: #1919191a;
// 简易模式的按钮的边框宽度
--ti-split-trigger-button-border-width: var(--ti-common-border-weight-normal, 1px);
// 简易模式的按钮的边框圆角
--ti-split-trigger-button-border-radius: var(--ti-common-border-radius-1, 4px);
// 简易模式的按钮的背景色
--ti-split-trigger-button-bg-color: var(--ti-common-color-icon-white, #fff);
}

View File

@ -84,7 +84,9 @@ export default class TinyThemeTool {
* 示例2输入month-table输出.tiny-month-table[class*=tiny],.tiny-year-table[class*=tiny]
*/
getSelectorByKey(key) {
if (!definedComponents[key]) return
if (!definedComponents[key]) {
return '.tiny-' + key + '[class*=tiny]'
}
let selector = ''
const keyItems = definedComponents[key].split(',')
@ -105,9 +107,7 @@ export default class TinyThemeTool {
const twoKey = `${compNameList[1]}-${compNameList[2]}`
// 优先三段式命名的组件名,优先级从高到低为三段-二段-一段
return (
this.getSelectorByKey(threeKey) || this.getSelectorByKey(twoKey) || '.tiny-' + compNameList[1] + '[class*=tiny]'
)
return this.getSelectorByKey(threeKey) || this.getSelectorByKey(twoKey) || this.getSelectorByKey(compNameList[1])
}
formatCSSVariables(themeData) {

View File

@ -80,7 +80,7 @@ export default {
'user-head': 'user-head',
'user-link': 'user-link',
'year-table': 'year-table',
'skeleton': 'skeleton',
'skeleton-item': 'skeleton-item',
'radio-button': 'radio-button'
'radio-button': 'radio-button',
'split': 'split-wrapper'
}