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
}
}