-
danger
-
+
+
+
+
+
readonly:
-
+
controls none:
@@ -61,7 +69,7 @@ const val4 = ref('1px');
controls left:
-
+
Size
@@ -96,14 +104,22 @@ const val4 = ref('1px');
Disabled
- val1:{{ val1 }}
-
-
- $
-
-
- 元
-
+
+
+
+ $
+
+
+ 元
+
+
+
+
+
+
+
+
+
Step & min & max
diff --git a/packages/opendesign/src/components/input-number/__demo__/InputNumberSlot.vue b/packages/opendesign/src/components/input-number/__demo__/InputNumberSlot.vue
index 982b54537de8d1c4848b309f206f00fd0bb1a62f..db24829e0df5ff929b4d58d7b8c5b9b6df3fbc05 100644
--- a/packages/opendesign/src/components/input-number/__demo__/InputNumberSlot.vue
+++ b/packages/opendesign/src/components/input-number/__demo__/InputNumberSlot.vue
@@ -6,7 +6,7 @@ const val1 = ref('');
const val2 = ref(1000);
- Prefix & Suffix
+ add & minus
Plus
@@ -20,6 +20,9 @@ const val2 = ref(1000);
+
-
+
+ Prefix & Suffix
+
$
@@ -27,15 +30,5 @@ const val2 = ref(1000);
元
-
- Prepend & Append
-
diff --git a/packages/opendesign/src/components/input-number/style/index.scss b/packages/opendesign/src/components/input-number/style/index.scss
index 7943e6c45e987a357fe78d7a5022a039f738a05f..dfaa0ad717f9d3ad2c0e1a202b78d50f8ef9cbf3 100644
--- a/packages/opendesign/src/components/input-number/style/index.scss
+++ b/packages/opendesign/src/components/input-number/style/index.scss
@@ -15,42 +15,19 @@
}
}
}
-.o-input-number-btn {
+
+.o-input-number-btn-wrap {
user-select: none;
- align-items: center;
justify-content: center;
display: flex;
min-width: var(--input-height);
font-size: 16px;
flex-wrap: wrap;
color: var(--input-number-btn-color);
-
- &.both-left,
- &.both-right {
- background-color: var(--input-number-btn-bg);
-
- &:hover {
- color: var(--input-number-btn-color-hover);
- background-color: var(--input-number-btn-bg-hover);
- }
- &.is-disabled {
- cursor: not-allowed;
- background-color: var(--input-number-btn-bg-disabled);
- color: var(--input-number-btn-color-disabled);
- }
- }
-
- .o-input-round-pill & {
- &.both-right {
- padding-right: 2px;
- }
- &.both-left {
- padding-left: 2px;
- }
- }
}
-.o-input-number-btn-minus,
-.o-input-number-btn-plus {
+
+.o-input-number-btn,
+.o-input-number-btn {
width: 100%;
height: 50%;
display: inline-flex;
@@ -59,16 +36,32 @@
font-size: 16px;
overflow: hidden;
position: relative;
- background-color: var(--input-number-btn-bg);
-
+ background-color: var(--input-number-btn-bg-color);
+ &.both-left,
+ &.both-right {
+ height: 100%;
+ }
&:hover {
color: var(--input-number-btn-color-hover);
- background-color: var(--input-number-btn-bg-hover);
+ background-color: var(--input-number-btn-bg-color-hover);
+ }
+ &:focus {
+ color: var(--input-number-btn-color-active);
+ background-color: var(--input-number-btn-bg-color-active);
}
&.is-disabled {
cursor: not-allowed;
- background-color: var(--input-number-btn-bg-disabled);
color: var(--input-number-btn-color-disabled);
+ background-color: var(--input-number-btn-bg-color-disabled);
+ }
+
+ .o-input-round-pill & {
+ &.both-right {
+ padding-right: var(--input-number-btn-pill-fix);
+ }
+ &.both-left {
+ padding-left: var(--input-number-btn-pill-fix);
+ }
}
}
.o-input-number-icon-minus {
diff --git a/packages/opendesign/src/components/input-number/style/var.scss b/packages/opendesign/src/components/input-number/style/var.scss
index 499a7735cb4f7cbf50f79165fb93a40315770170..61c6c487dba7a9a675e88ad07410bc6a9d52689d 100644
--- a/packages/opendesign/src/components/input-number/style/var.scss
+++ b/packages/opendesign/src/components/input-number/style/var.scss
@@ -1,8 +1,11 @@
.o-input-number {
- --input-number-btn-color: var(--o-color-text3);
- --input-number-btn-color-hover: var(--o-color-primary1);
- --input-number-btn-color-disabled: var(--o-color-text4);
- --input-number-btn-bg: var(--o-color-bg2);
- --input-number-btn-bg-hover: var(--o-color-normal1);
- --input-number-btn-bg-disabled: var(--o-color-normal4);
+ --input-number-btn-color: var(--o-color-info3);
+ --input-number-btn-color-hover: var(--o-color-info1);
+ --input-number-btn-color-active: var(--o-color-info1);
+ --input-number-btn-color-disabled: var(--o-color-info4);
+ --input-number-btn-bg-color: transparent;
+ --input-number-btn-bg-color-hover: var(--o-color-control1-light);
+ --input-number-btn-bg-color-active: var(--o-color-control2-light);
+ --input-number-btn-bg-color-disabled: var(--o-color-control4-light);
+ --input-number-btn-pill-fix: 2px;
}
diff --git a/packages/opendesign/src/components/input-number/types.ts b/packages/opendesign/src/components/input-number/types.ts
index 916981831810e7b2c96af976c5c206003604bc5b..44b250ddfa504942db570f672d2ff43637d1a648 100644
--- a/packages/opendesign/src/components/input-number/types.ts
+++ b/packages/opendesign/src/components/input-number/types.ts
@@ -1,91 +1,6 @@
import { ExtractPropTypes, PropType } from 'vue';
import { SizeT, RoundT } from '../_shared/global';
-// interface InputPropT {
-// /**
-// * 数字输入框的值
-// * v-model
-// */
-// modelValue?: string | number;
-// /**
-// * 数字输入框的默认值
-// * 非受控
-// */
-// defaultValue?: string | number;
-// /**
-// * 按钮点击时步长
-// */
-// step?: number;
-// /**
-// * 最小值
-// */
-// min?: number;
-// /**
-// * 最大值
-// */
-// max?: number;
-// /**
-// * 样式尺寸
-// */
-// size?: SizeT;
-// /**
-// * 形状
-// */
-// shape?: ShapeT;
-// /**
-// * 提示文本
-// */
-// placeholder?: string;
-// /**
-// * 状态,显示指定,用于非表单场景
-// */
-// status?: 'success' | 'warning' | 'error';
-// /**
-// * 是否禁用
-// */
-// disabled?: boolean;
-// /**
-// * 是否只读
-// */
-// readonly?: boolean;
-// /**
-// * 是否可以清除
-// */
-// clearable?: boolean;
-// /**
-// * 控制按钮位置
-// */
-// controls?: 'both' | 'right' | 'left' | 'none';
-// /**
-// * 是否在输入合法时,更新modelvalue
-// */
-// updateOnInput?: boolean;
-// /**
-// * 解析输入框的值
-// */
-// parse?: (value: string) => string;
-// /**
-// * 对值格式化,控制显示格式
-// * 需搭配parse处理,保证值的正确性
-// */
-// format?: (value: string | number) => string | number;
-// }
-// const props = withDefaults(defineProps
(), {
-// modelValue: undefined,
-// defaultValue: undefined,
-// step: 1,
-// min: undefined,
-// max: undefined,
-// size: undefined,
-// shape: undefined,
-// placeholder: '',
-// clearable: true,
-// parse: undefined,
-// format: undefined,
-// status: undefined,
-// controls: 'both',
-// updateOnInput: true,
-// });
export const inputNumberPorps = {
/**
* 下拉框的值
@@ -164,26 +79,12 @@ export const inputNumberPorps = {
readonly: {
type: Boolean,
},
- /**
- * 是否可以清除
- */
- clearable: {
- type: Boolean,
- default: true
- },
/**
* 是否自动增加宽度
*/
autoWidth: {
type: Boolean,
},
- /**
- * 是否是密码输入
- */
- type: {
- type: String as PropType<'text' | 'password'>,
- default: 'text'
- },
/**
* 解析输入框的值
*/
diff --git a/packages/opendesign/src/components/input/OInput.vue b/packages/opendesign/src/components/input/OInput.vue
index 2c364e0dd154fdd641b2ed87b054a5ab11a69414..08103797bfce370c0211c2dd84e734e972c59dff 100644
--- a/packages/opendesign/src/components/input/OInput.vue
+++ b/packages/opendesign/src/components/input/OInput.vue
@@ -149,6 +149,7 @@ const round = getRoundClass(props, 'input');
class="o-input"
:class="[
`o-input-${props.color}`,
+ `o-input-${props.variant}`,
`o-input-size-${props.size || defaultSize}`,
round.class.value,
{
@@ -171,6 +172,7 @@ const round = getRoundClass(props, 'input');
'has-append': $slots.append,
'is-focus': isFocus,
'is-readonly': props.readonly,
+ 'is-disabled': props.disabled,
}"
>