From 954e14bff63ff053f2fe8219eaeeb03bbea7e78b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=B0=B1=E7=9C=A0=E5=84=80=E5=BC=8F?= <854085467@qq.com>
Date: Fri, 30 Sep 2022 17:06:09 +0800
Subject: [PATCH] =?UTF-8?q?=E2=9C=A8(component):=20=E4=BF=AE=E5=A4=8D=20se?=
=?UTF-8?q?lect=20=E6=97=A0=E6=B3=95=E5=BC=82=E6=AD=A5=E5=8A=A0=E8=BD=BD?=
=?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
package/component/package.json | 2 +-
.../component/src/component/select/index.vue | 433 +++++++++---------
.../src/component/selectOption/index.vue | 20 +-
.../src/document/zh-CN/components/select.md | 8 +-
4 files changed, 236 insertions(+), 227 deletions(-)
diff --git a/package/component/package.json b/package/component/package.json
index 79e8ca1c..b6316348 100644
--- a/package/component/package.json
+++ b/package/component/package.json
@@ -1,6 +1,6 @@
{
"name": "@layui/layui-vue",
- "version": "1.5.0",
+ "version": "1.5.1-alpha.1",
"author": "就眠儀式",
"license": "MIT",
"description": "a component library for Vue 3 base on layui-vue",
diff --git a/package/component/src/component/select/index.vue b/package/component/src/component/select/index.vue
index 8b5ffa11..b337b930 100644
--- a/package/component/src/component/select/index.vue
+++ b/package/component/src/component/select/index.vue
@@ -1,220 +1,231 @@
-
-
+
+
-
-
-
-
- {
+
+ intOption();
+ timer = setInterval(intOption, 500);
+
+ watch(
+ [selectedValue, options],
+ () => {
+ if (multiple.value) {
+ multipleValue.value = selectedValue.value.map((value: any) => {
+ return options.value.find((item: any) => {
+ item.disabled == "" || item.disabled == true
+ ? (item.closable = false)
+ : (item.closable = true);
+ return item.value === value;
+ });
+ });
+ } else {
+ searchValue.value = "";
+ singleValue.value = options.value.find((item: any) => {
+ return item.value === selectedValue.value;
+ })?.label;
+ }
+ },
+ { immediate: true, deep: true }
+ );
+ });
+
+ onUnmounted(() => {
+ clearInterval(timer);
+ })
+
+ const selectedValue = computed({
+ get() {
+ return props.modelValue;
+ },
+ set(value) {
+ emits("update:modelValue", value);
+ emits("change", value);
+ },
+ });
+
+ const multiple = computed(() => {
+ return props.multiple;
+ });
+
+ const handleSearch = (value: string) => {
+ emits("search", value);
+ searchValue.value = value;
+ };
+
+ const handleClear = () => {
+ if (multiple.value) {
+ selectedValue.value = [];
+ } else {
+ selectedValue.value = "";
+ }
+ };
+
+ provide("openState", openState);
+ provide("selectedValue", selectedValue);
+ provide("searchValue", searchValue);
+ provide("multiple", multiple);
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/package/component/src/component/selectOption/index.vue b/package/component/src/component/selectOption/index.vue
index b1e5989d..4f9c3439 100644
--- a/package/component/src/component/selectOption/index.vue
+++ b/package/component/src/component/selectOption/index.vue
@@ -28,7 +28,6 @@ const props = withDefaults(defineProps(), {
label: "",
});
-const selectedItem: Ref = inject("selectedItem") as Ref;
const openState: Ref = inject("openState") as Ref;
const selectedValue: WritableComputedRef = inject(
"selectedValue"
@@ -53,21 +52,14 @@ const selected = computed(() => {
});
const select = () => {
- const info = {
- label: props.label,
- value: props.value,
- dispabled: props.disabled,
- keyword: props.keyword,
- };
-
if (multiple.value) {
- if (Array.isArray(selectedItem.value)) {
- if (notChecked.value) selectedItem.value.push(info);
+ if (Array.isArray(selectedValue.value)) {
+ if (notChecked.value) selectedValue.value.push(props.value);
} else {
- selectedItem.value = [info];
+ selectedValue.value = [props.value];
}
} else {
- selectedItem.value = info;
+ selectedValue.value = props.value;
}
};
@@ -80,8 +72,8 @@ const display = computed(() => {
const notChecked = computed(() => {
return (
- selectedItem.value.find((item: any) => {
- return item.value === props.value;
+ selectedValue.value.find((item: any) => {
+ return item === props.value;
}) === undefined
);
});
diff --git a/package/document-component/src/document/zh-CN/components/select.md b/package/document-component/src/document/zh-CN/components/select.md
index 8a35c7ca..6cb042bd 100644
--- a/package/document-component/src/document/zh-CN/components/select.md
+++ b/package/document-component/src/document/zh-CN/components/select.md
@@ -183,7 +183,7 @@ export default {
::: demo
-
+
@@ -193,9 +193,15 @@ import { ref } from 'vue'
export default {
setup() {
+ const count2 = ref(0)
const selected2 = ref([1])
+ setTimeout(() => {
+ count2.value = 100;
+ }, 2000);
+
return {
+ count2,
selected2
}
}