-
+
+
diff --git a/packages/opendesign/src/components/switch/__demo__/SwitchSizeShape.vue b/packages/opendesign/src/components/switch/__demo__/SwitchBasic.vue
similarity index 53%
rename from packages/opendesign/src/components/switch/__demo__/SwitchSizeShape.vue
rename to packages/opendesign/src/components/switch/__demo__/SwitchBasic.vue
index 4663c2bb..7c8a3cd9 100644
--- a/packages/opendesign/src/components/switch/__demo__/SwitchSizeShape.vue
+++ b/packages/opendesign/src/components/switch/__demo__/SwitchBasic.vue
@@ -9,13 +9,11 @@ const switchVal2 = ref(true);
Size
-
Round
-
diff --git a/packages/opendesign/src/components/switch/__demo__/SwitchEvents.vue b/packages/opendesign/src/components/switch/__demo__/SwitchEvents.vue
index b56a9d58..9fb90f48 100644
--- a/packages/opendesign/src/components/switch/__demo__/SwitchEvents.vue
+++ b/packages/opendesign/src/components/switch/__demo__/SwitchEvents.vue
@@ -4,13 +4,13 @@ import { OSWitch } from '../index';
const switchVal1 = ref(false);
-const handleChange = (val: boolean) => {
+const handleChange = (val: string | number | boolean) => {
console.log(val);
};
- change事件
+ Change事件
diff --git a/packages/opendesign/src/components/switch/__demo__/SwitchRound.vue b/packages/opendesign/src/components/switch/__demo__/SwitchRound.vue
new file mode 100644
index 00000000..94a815ae
--- /dev/null
+++ b/packages/opendesign/src/components/switch/__demo__/SwitchRound.vue
@@ -0,0 +1,42 @@
+
+
+
+ Round
+
+
diff --git a/packages/opendesign/src/components/switch/__demo__/SwitchSlots.vue b/packages/opendesign/src/components/switch/__demo__/SwitchSlots.vue
index f96d607c..4b144b7f 100644
--- a/packages/opendesign/src/components/switch/__demo__/SwitchSlots.vue
+++ b/packages/opendesign/src/components/switch/__demo__/SwitchSlots.vue
@@ -20,12 +20,12 @@ const switchVal2 = ref(true);
-
+
开
关
-
+
diff --git a/packages/opendesign/src/components/switch/style/index.scss b/packages/opendesign/src/components/switch/style/index.scss
index 07cafb6e..1d771e49 100644
--- a/packages/opendesign/src/components/switch/style/index.scss
+++ b/packages/opendesign/src/components/switch/style/index.scss
@@ -2,33 +2,37 @@
.o-switch {
display: inline-block;
- background-color: var(--switch-bg);
+ height: var(--switch-height);
+ font-size: var(--switch-text-size);
+ line-height: var(--switch-text-height);
color: var(--switch-color);
+ background-color: var(--switch-bg-color);
+ border-radius: var(--switch-radius);
transition: background-color var(--o-duration-s) var(--o-easing-standard);
cursor: pointer;
+}
- &.is-checked {
- background-color: var(--switch-bg-checked);
- }
+.o-switch-checked {
+ background-color: var(--switch-bg-color-checked);
+}
- &.is-disabled,
- &.is-loading {
- cursor: not-allowed;
- background-color: var(--switch-bg-disabled);
- }
+.o-switch-disabled,
+.o-switch-loading {
+ cursor: not-allowed;
+ background-color: var(--switch-bg-color-disabled);
+}
- &.is-disabled.is-checked,
- &.is-loading.is-checked {
- background-color: var(--switch-bg-checked-disabled);
- .o-switch-handler {
- .o-switch-icon_loading {
- color: var(--switch-bg-checked-disabled);
- }
+.o-switch-disabled.o-switch-checked,
+.o-switch-loading.o-switch-checked {
+ background-color: var(--switch-bg-color-checked-disabled);
+ .o-switch-handler {
+ .o-switch-icon-loading {
+ color: var(--switch-bg-color-checked-disabled);
}
}
}
-.o-switch-wrapper {
+.o-switch-wrap {
position: relative;
height: 100%;
}
@@ -37,7 +41,10 @@
position: absolute;
top: 50%;
transform: translateY(-50%);
- background-color: var(--switch-handler-bg);
+ width: var(--switch-handler-size);
+ height: var(--switch-handler-size);
+ border-radius: var(--switch-handler-radius);
+ background-color: var(--switch-handler-bg-color);
transition: left var(--o-duration-s) var(--o-easing-standard);
.o-switch-icon-loading {
@@ -46,7 +53,7 @@
display: flex;
align-items: center;
justify-content: center;
- color: var(--switch-bg);
+ color: var(--switch-bg-color);
}
}
@@ -58,92 +65,56 @@
justify-content: center;
}
-.o-switch.o-switch-shape-round {
- .o-switch-handler {
- border-radius: 50%;
- }
-}
-
-.o-switch-size-medium {
- min-width: 40px;
- height: 20px;
- border-radius: 2px;
- font-size: var(--switch-text-size-m);
- line-height: var(--switch-text-height-m);
-
+.o-switch-large {
+ min-width: 60px;
.o-switch-handler {
- width: 16px;
- height: 16px;
- border-radius: 2px;
- left: 2px;
+ left: 4px;
}
.o-switch-content {
- padding-left: 20px;
- padding-right: 4px;
+ padding-left: 28px;
+ padding-right: 8px;
}
- &.is-checked {
+ &.o-switch-checked {
.o-switch-handler {
- left: calc(100% - 18px);
+ left: calc(100% - 24px);
}
+
.o-switch-content {
- padding-left: 4px;
- padding-right: 20px;
+ padding-left: 8px;
+ padding-right: 28px;
}
}
}
-.o-switch-size-medium.o-switch-shape-round {
- border-radius: 10px;
-}
-
-.o-switch-size-large {
- min-width: 60px;
- height: 28px;
- border-radius: 2px;
- font-size: var(--switch-text-size-l);
- line-height: var(--switch-text-height-l);
+.o-switch-medium {
+ min-width: 40px;
.o-switch-handler {
- width: 20px;
- height: 20px;
- border-radius: 2px;
- left: 4px;
+ left: 2px;
}
.o-switch-content {
- padding-left: 28px;
- padding-right: 8px;
+ padding-left: 20px;
+ padding-right: 4px;
}
- &.is-checked {
+ &.o-switch-checked {
.o-switch-handler {
- left: calc(100% - 24px);
+ left: calc(100% - 18px);
}
-
.o-switch-content {
- padding-left: 8px;
- padding-right: 28px;
+ padding-left: 4px;
+ padding-right: 20px;
}
}
}
-.o-switch-size-large.o-switch-shape-round {
- border-radius: 14px;
-}
-
-.o-switch-size-small {
+.o-switch-small {
min-width: 30px;
- height: 16px;
- border-radius: 2px;
- font-size: var(--switch-text-size-s);
- line-height: var(--switch-text-height-s);
.o-switch-handler {
- width: 12px;
- height: 12px;
- border-radius: 2px;
left: 2px;
}
@@ -152,7 +123,7 @@
padding-right: 2px;
}
- &.is-checked {
+ &.o-switch-checked {
.o-switch-handler {
left: calc(100% - 14px);
}
@@ -162,7 +133,3 @@
}
}
}
-
-.o-switch-size-small.o-switch-shape-round {
- border-radius: 8px;
-}
diff --git a/packages/opendesign/src/components/switch/style/var.scss b/packages/opendesign/src/components/switch/style/var.scss
index 12ab231a..0dd36036 100644
--- a/packages/opendesign/src/components/switch/style/var.scss
+++ b/packages/opendesign/src/components/switch/style/var.scss
@@ -1,18 +1,42 @@
.o-switch {
- --switch-bg: var(--o-color-control1);
- --switch-bg-disabled: var(--o-color-control4);
- --switch-bg-checked: var(--o-color-primary1);
- --switch-bg-checked-disabled: var(--o-color-primary4);
+ --switch-color: var(--o-color-info1-inverse);
- --switch-handler-bg: rgb(var(--o-color-white));
+ --switch-bg-color: var(--o-color-control1);
+ --switch-bg-color-disabled: var(--o-color-control4);
+ --switch-bg-color-checked: var(--o-color-primary1);
+ --switch-bg-color-checked-disabled: var(--o-color-primary4);
- --switch-color: var(--o-color-info1-inverse);
+ --switch-handler-bg-color: rgb(var(--o-color-white));
+}
+
+.o-switch-large {
+ --switch-height: 28px;
+ --switch-radius: 2px;
+ --switch-text-size: var(--o-font_size-h4);
+ --switch-text-height: var(--o-line_height-h4);
+ --switch-handler-size: 20px;
+ --switch-handler-radius: 2px;
+}
+
+.o-switch-medium {
+ --switch-height: 20px;
+ --switch-radius: 2px;
+ --switch-text-size: var(--o-font_size-tip1);
+ --switch-text-height: var(--o-line_height-tip1);
+ --switch-handler-size: 16px;
+ --switch-handler-radius: 2px;
+}
- --switch-text-size-l: var(--o-font_size-h4);
- --switch-text-size-m: var(--o-font_size-tip1);
- --switch-text-size-s: var(--o-font_size-tip2);
+.o-switch-small {
+ --switch-height: 16px;
+ --switch-radius: 2px;
+ --switch-text-size: var(--o-font_size-tip2);
+ --switch-text-height: var(--o-line_height-tip2);
+ --switch-handler-size: 12px;
+ --switch-handler-radius: 2px;
+}
- --switch-text-height-l: var(--o-line_height-h4);
- --switch-text-height-m: var(--o-line_height-tip1);
- --switch-text-height-s: var(--o-line_height-tip2);
+.o-switch-round-pill {
+ --switch-radius: var(--o-size-l);
+ --switch-handler-radius: var(--o-size-l);
}
diff --git a/packages/opendesign/src/components/switch/types.ts b/packages/opendesign/src/components/switch/types.ts
index 82af6009..1b703878 100644
--- a/packages/opendesign/src/components/switch/types.ts
+++ b/packages/opendesign/src/components/switch/types.ts
@@ -1,4 +1,4 @@
-import type { SizeT, ShapeT } from '../_shared/global';
+import type { SizeT, RoundT } from '../_shared/global';
import type { ExtractPropTypes, PropType } from 'vue';
export const switchProps = {
@@ -31,17 +31,16 @@ export const switchProps = {
},
/**
* 开关尺寸
- * 'large' | 'normal' | 'small'
+ * 'large' | 'medium' | 'small'
*/
size: {
type: String as PropType,
},
/**
- * 开关形状
- * 'normal' | 'round'
+ * 圆角值
*/
- shape: {
- type: String as PropType,
+ round: {
+ type: String as PropType,
},
/**
* 是否禁用
--
Gitee