diff --git a/package.json b/package.json
index aba5bfb..409310a 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@layui/layui-vue",
- "version": "1.7.7",
+ "version": "1.7.11",
"author": "就眠儀式",
"license": "MIT",
"description": "a component library for Vue 3 base on layui-vue",
diff --git a/src/component/cascader/index.vue b/src/component/cascader/index.vue
index cb3fc89..ea3090a 100644
--- a/src/component/cascader/index.vue
+++ b/src/component/cascader/index.vue
@@ -31,7 +31,9 @@
:size="size"
@clear="onClear"
>
-
+
+
+
@@ -137,12 +139,19 @@ watch(
watch(
() => props.modelValue,
() => {
- if (props.modelValue === null || props.modelValue === "") {
- onClear();
+ if (watchModelValue.value) {
+ if (props.modelValue === null || props.modelValue === "") {
+ onClear();
+ } else {
+ updateDisplayByModelValue();
+ }
+ setTimeout(() => {
+ watchModelValue.value = true;
+ }, 0);
}
}
);
-
+const watchModelValue = ref(true);
const treeData = ref
([]);
const initTreeData = () => {
let treeLvNum = getMaxFloor(props.options);
@@ -159,31 +168,28 @@ const initTreeData = () => {
};
}
}
+ updateDisplayByModelValue();
+};
+
+function updateDisplayByModelValue() {
if (props.modelValue) {
try {
let valueData = props.modelValue.split(props.decollator);
- let data: any[] = [];
- for (let index = 0; index < treeData.value.length; index++) {
- const element = treeData.value[index];
- const nowValue = valueData[index];
- for (let i = 0; i < element.length; i++) {
- const ele = element[i];
- if (nowValue === ele.value) {
- data.push(ele);
- element.selectIndex = i;
- }
+ for (let index = 0; index < valueData.length; index++) {
+ const element = valueData[index];
+ let selectIndex = treeData.value[index].data.findIndex(
+ (e: { value: string }) => e.value === element
+ );
+ if (selectIndex == -1) {
+ break;
}
+ selectBar(treeData.value[index].data[selectIndex], selectIndex, index);
}
- displayValue.value = data
- .map((e) => {
- return e.label;
- })
- .join(` ${props.decollator} `);
} catch (error) {
console.error(error);
}
}
-};
+}
function getMaxFloor(treeData: any) {
//let floor = 0;
@@ -274,6 +280,7 @@ const selectBar = (item: any, selectIndex: number, parentIndex: number) => {
return e.value;
})
.join(props.decollator);
+ watchModelValue.value = false;
emit("update:modelValue", value);
let evt = {
display: displayValue.value,
diff --git a/src/component/checkbox/index.less b/src/component/checkbox/index.less
index 2567e93..77b7323 100644
--- a/src/component/checkbox/index.less
+++ b/src/component/checkbox/index.less
@@ -79,7 +79,9 @@
width: 29px;
height: 28px;
position: absolute;
- border: 1px solid var(--global-neutral-color-6);
+ border-top: 1px solid var(--global-neutral-color-6);
+ border-bottom: 1px solid var(--global-neutral-color-6);
+ border-right: 1px solid var(--global-neutral-color-6);
border-radius: 0 2px 2px 0;
color: #fff;
font-size: 20px;
diff --git a/src/component/dropdown/index.vue b/src/component/dropdown/index.vue
index 4fea742..3ff21a2 100644
--- a/src/component/dropdown/index.vue
+++ b/src/component/dropdown/index.vue
@@ -20,7 +20,6 @@ import {
cloneVNode,
useAttrs,
StyleValue,
- PropType,
} from "vue";
import {
computed,
@@ -45,9 +44,8 @@ import {
DropdownContext,
} from "./interface";
import TeleportWrapper from "../_components/teleportWrapper.vue";
-import { useFirstElement, isScrollElement, getScrollElements } from "./util";
-import RenderFunction, { RenderFunc } from "../_components/renderFunction";
-import { transformPlacement } from "./util";
+import { useFirstElement, getScrollElements, transformPlacement } from "./util";
+import RenderFunction from "../_components/renderFunction";
export type DropdownTrigger = "click" | "hover" | "focus" | "contextMenu";
@@ -105,7 +103,6 @@ const dropdownCtx = inject(
undefined
);
const { children, firstElement: dropdownRef } = useFirstElement();
-//const dropdownRef = shallowRef();
const contentRef = shallowRef();
const contentStyle = ref({});
const { width: windowWidth, height: windowHeight } = useWindowSize();
diff --git a/src/component/dropdown/util.ts b/src/component/dropdown/util.ts
index 63fe320..5073aa5 100644
--- a/src/component/dropdown/util.ts
+++ b/src/component/dropdown/util.ts
@@ -1,27 +1,12 @@
import { DropdownPlacement } from "./interface";
import { Component, onMounted, onUpdated, ref, VNode, VNodeTypes } from "vue";
+import { isArrayChildren, isComponent, isElement } from "../../utils";
export interface SlotChildren {
value?: VNode[];
}
-// Quoted from arco-vue
-// https://github.com/arco-design/arco-design-vue/blob/main/packages/web-vue/components/_utils/vue-utils.ts
-export enum ShapeFlags {
- ELEMENT = 1,
- FUNCTIONAL_COMPONENT = 1 << 1,
- STATEFUL_COMPONENT = 1 << 2,
- COMPONENT = ShapeFlags.STATEFUL_COMPONENT | ShapeFlags.FUNCTIONAL_COMPONENT,
- TEXT_CHILDREN = 1 << 3,
- ARRAY_CHILDREN = 1 << 4,
- SLOTS_CHILDREN = 1 << 5,
- TELEPORT = 1 << 6,
- SUSPENSE = 1 << 7,
- COMPONENT_SHOULD_KEEP_ALIVE = 1 << 8,
- COMPONENT_KEPT_ALIVE = 1 << 9,
-}
-
export const isScrollElement = (element: HTMLElement) => {
return (
element.scrollHeight > element.offsetHeight ||
@@ -41,24 +26,6 @@ export const getScrollElements = (container: HTMLElement | undefined) => {
return scrollElements;
};
-export const isElement = (vn: VNode) => {
- return Boolean(vn && vn.shapeFlag & ShapeFlags.ELEMENT);
-};
-
-export const isComponent = (
- vn: VNode,
- type?: VNodeTypes
-): type is Component => {
- return Boolean(vn && vn.shapeFlag & ShapeFlags.COMPONENT);
-};
-
-export const isArrayChildren = (
- vn: VNode,
- children: VNode["children"]
-): children is VNode[] => {
- return Boolean(vn && vn.shapeFlag & ShapeFlags.ARRAY_CHILDREN);
-};
-
export const getChildrenArray = (vn: VNode): VNode[] | undefined => {
if (isArrayChildren(vn, vn.children)) {
return vn.children;
@@ -140,6 +107,5 @@ export const transformPlacement = (
placementMap[separated[1]] || separated[1]
}` as DropdownPlacement;
}
-
return placement;
};
diff --git a/src/component/iconPicker/index.less b/src/component/iconPicker/index.less
index d283f78..176e4dd 100644
--- a/src/component/iconPicker/index.less
+++ b/src/component/iconPicker/index.less
@@ -53,6 +53,7 @@
font-size: 14px;
color: rgba(0, 0, 0, 0.5);
transition: all 0.3s;
+ display: inline-block;
}
.layui-iconpicker-down .layui-iconpicker-suffix .layui-icon-down {
@@ -151,6 +152,15 @@
display: none;
}
+.layui-icon-picker-clear {
+ color: rgba(0, 0, 0, 0.45);
+ padding: 0px 0px 0px 10px;
+}
+
+.layui-icon-picker-clear:hover {
+ opacity: 0.6;
+}
+
.layui-colorpicker-disabled {
opacity: 0.6;
}
@@ -158,4 +168,8 @@
.layui-colorpicker-disabled,
.layui-colorpicker-disabled * {
cursor: not-allowed !important;
+}
+
+.transform{
+ transform: rotate(180deg);
}
\ No newline at end of file
diff --git a/src/component/iconPicker/index.vue b/src/component/iconPicker/index.vue
index 8f3b042..b5b9c40 100644
--- a/src/component/iconPicker/index.vue
+++ b/src/component/iconPicker/index.vue
@@ -17,6 +17,7 @@ export interface IconPickerProps {
modelValue?: string;
disabled?: boolean;
showSearch?: boolean;
+ allowClear?: boolean;
contentClass?: string | Array | object;
contentStyle?: StyleValue;
}
@@ -30,6 +31,7 @@ const props = withDefaults(defineProps(), {
const emit = defineEmits(["update:modelValue", "change"]);
const selectedIcon = computed(() => props.modelValue);
const dropdownRef = ref(null);
+const openState = ref(false);
const selectIcon = function (icon: string): void {
emit("update:modelValue", icon);
@@ -37,6 +39,14 @@ const selectIcon = function (icon: string): void {
dropdownRef.value?.hide();
};
+const onClear = function (): void {
+ emit("update:modelValue", "");
+};
+
+const hasContent = computed(() => {
+ return props.modelValue != null && props.modelValue != "";
+});
+
const icones: Ref = ref([]);
const total: Ref = ref(icons.length);
const totalPage: Ref = ref(total.value / 12);
@@ -143,6 +153,8 @@ const searchList = (str: string, container: any) => {
:disabled="disabled"
:contentClass="contentClass"
:contentStyle="contentStyle"
+ @hide="openState = false"
+ @show="openState = true"
updateAtScroll
>
diff --git a/src/component/pageHeader/index.vue b/src/component/pageHeader/index.vue
index 9e5350c..1d36c6c 100644
--- a/src/component/pageHeader/index.vue
+++ b/src/component/pageHeader/index.vue
@@ -1,7 +1,7 @@
+
+
-
@@ -739,7 +817,11 @@ onBeforeUnmount(() => {
{
textAlign: column.align,
},
- renderFixedStyle(column, columnIndex),
+ renderHeadFixedStyle(
+ column,
+ columnIndex,
+ tableHeadColumn
+ ),
]"
>
diff --git a/src/component/tag/index.less b/src/component/tag/index.less
index 07e2df3..758c292 100644
--- a/src/component/tag/index.less
+++ b/src/component/tag/index.less
@@ -73,12 +73,10 @@
}
}
- &-ellipsis &-text {
- display: inline-block;
- white-space: nowrap;
- word-wrap: normal;
- overflow: hidden;
- text-overflow: ellipsis
+ & &-text {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap
}
& &-close-icon {
diff --git a/src/component/tag/index.vue b/src/component/tag/index.vue
index 5a2c14a..5c9d560 100644
--- a/src/component/tag/index.vue
+++ b/src/component/tag/index.vue
@@ -6,7 +6,7 @@ export default {