@touchvue/ui 1.0.0-beta.61 → 1.0.0-beta.62
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es/packages/components/button/src/button.vue2.mjs +1 -1
- package/es/packages/components/fix/src/Fix.vue2.mjs +6 -1
- package/es/packages/components/fix/src/Fix.vue2.mjs.map +1 -1
- package/es/packages/utils/validate.mjs +3 -3
- package/es/packages/utils/validate.mjs.map +1 -1
- package/lib/packages/components/button/src/button.vue2.js +1 -1
- package/lib/packages/components/fix/src/Fix.vue2.js +6 -1
- package/lib/packages/components/fix/src/Fix.vue2.js.map +1 -1
- package/lib/packages/utils/validate.js +3 -3
- package/lib/packages/utils/validate.js.map +1 -1
- package/package.json +1 -1
- package/theme/components/index.css +39 -21
- package/theme/index.css +39 -21
- package/theme/skin/default.css +39 -21
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { defineComponent, ref, computed, resolveComponent, resolveDirective, withDirectives, openBlock, createElementBlock, normalizeClass, normalizeStyle, createElementVNode, createBlock, createCommentVNode, createTextVNode, toDisplayString, renderSlot } from 'vue';
|
|
2
|
-
import { commitTouchReport } from '../../../utils/ratio.mjs';
|
|
3
2
|
import { getModeClasses } from '../../../hooks/useSetClass.mjs';
|
|
3
|
+
import { commitTouchReport } from '../../../utils/ratio.mjs';
|
|
4
4
|
|
|
5
5
|
const __default__ = defineComponent({
|
|
6
6
|
name: "ToButton"
|
|
@@ -112,6 +112,10 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
112
112
|
content.value.parentElement.parentNode.removeChild(content.value.parentElement);
|
|
113
113
|
}
|
|
114
114
|
};
|
|
115
|
+
const onDragStart = (event) => {
|
|
116
|
+
if (props.draggable)
|
|
117
|
+
event.preventDefault();
|
|
118
|
+
};
|
|
115
119
|
const onMouseDown = (event) => {
|
|
116
120
|
if (!props.draggable)
|
|
117
121
|
return;
|
|
@@ -244,7 +248,8 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
244
248
|
class: "to-fix-wrapper",
|
|
245
249
|
style: normalizeStyle(setStyle.value),
|
|
246
250
|
onMousedown: onMouseDown,
|
|
247
|
-
onTouchstart: onTouchStart
|
|
251
|
+
onTouchstart: onTouchStart,
|
|
252
|
+
onDragstart: onDragStart
|
|
248
253
|
},
|
|
249
254
|
[
|
|
250
255
|
renderSlot(_ctx.$slots, "default"),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Fix.vue2.mjs","sources":["../../../../../../packages/components/fix/src/Fix.vue"],"sourcesContent":["<script lang=\"ts\">\nconst DRAG_THRESHOLD = 5\n\nimport { defineComponent as DO_defineComponent } from 'vue';\nexport default /*#__PURE__*/ DO_defineComponent({\n\tname: 'ToFix'\n});</script>\n<template>\n\t<div class=\"to-fix\" :class=\"setClass\">\n\t\t<div ref=\"content\" class=\"to-fix-wrapper\" :style=\"setStyle\" @mousedown=\"onMouseDown\" @touchstart=\"onTouchStart\">\n\t\t\t<slot></slot>\n\t\t\t<to-tag v-if=\"Number(number)\" class=\"to-fix-number\" type=\"number\">{{ number }}</to-tag>\n\t\t</div>\n\t</div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed, watch, onMounted, onActivated, onDeactivated, onBeforeUnmount, nextTick } from 'vue'\nimport { getModeClasses } from '@touchvue/hooks'\nimport { getEm } from '@touchvue/utils'\n\n// 定义 props\nconst props = defineProps({\n\tmode: {\n\t\ttype: String,\n\t\tdefault: 'default'\n\t},\n\ttop: {\n\t\ttype: [String, Number],\n\t\tdefault: 'auto'\n\t},\n\tnumber: {\n\t\ttype: [String, Number],\n\t\tdefault: ''\n\t},\n\tleft: {\n\t\ttype: [String, Number],\n\t\tdefault: 'auto'\n\t},\n\tright: {\n\t\ttype: [String, Number],\n\t\tdefault: 1\n\t},\n\tbottom: {\n\t\ttype: [String, Number],\n\t\tdefault: 1\n\t},\n\tappendToBody: {\n\t\ttype: Boolean,\n\t\tdefault: true\n\t},\n\tdraggable: Boolean\n})\n\n// 响应式数据\nconst content = ref<HTMLElement | null>(null)\nconst resizeTimer = ref<number | null>(null)\nconst isDown = ref(false)\nconst offsetX = ref(0)\nconst offsetY = ref(0)\nconst currentTop = ref<string | null>(null)\nconst currentLeft = ref<string | null>(null)\nconst currentRight = ref<string | null>(null)\nconst currentBottom = ref<string | null>(null)\nconst isDraging = ref(false) // 拖动开始标志\nconst startX = ref(0) // 记录起始X位置\nconst startY = ref(0) // 记录起始Y位置\n // 拖动阈值,5px\n\n// 计算属性\nconst setStyle = computed(() => {\n\tconst obj: Record<string, string> = {}\n\tif (currentTop.value) {\n\t\tobj.top = currentTop.value\n\t\tobj.bottom = 'auto'\n\t} else {\n\t\tif (props.top && props.top !== 'auto') {\n\t\t\tobj.top = props.top + 'em'\n\t\t\tobj.bottom = 'auto'\n\t\t} else if (props.bottom && props.bottom !== 'auto') {\n\t\t\tobj.bottom = props.bottom + 'em'\n\t\t\tobj.top = 'auto'\n\t\t}\n\t}\n\tif (currentLeft.value) {\n\t\tobj.left = currentLeft.value\n\t\tobj.right = 'auto'\n\t} else {\n\t\tif (props.left && props.left !== 'auto') {\n\t\t\tobj.left = props.left + 'em'\n\t\t\tobj.right = 'auto'\n\t\t} else if (props.right && props.right !== 'auto') {\n\t\t\tobj.right = props.right + 'em'\n\t\t\tobj.left = 'auto'\n\t\t}\n\t}\n\treturn obj\n})\n\nconst setClass = computed(() => {\n\tconst arr = []\n\tif (props.mode) {\n\t\tarr.push(...getModeClasses(props.mode))\n\t}\n\tif (isDraging.value) {\n\t\tarr.push(`is-dragging`)\n\t}\n\treturn arr\n})\n\n// 监听器\nwatch(isDown, val => {\n\tif (val) {\n\t\tdocument.body.style.userSelect = 'none'\n\t} else {\n\t\tdocument.body.style.userSelect = ''\n\t}\n})\n\n// 方法\nconst init = () => {\n\tif (props.appendToBody && content.value?.parentElement) {\n\t\tdocument.body.appendChild(content.value.parentElement)\n\t}\n\twindow.addEventListener('resize', resize)\n}\n\nconst destroy = () => {\n\twindow.removeEventListener('resize', resize)\n\tif (props.appendToBody && content.value?.parentElement?.parentNode) {\n\t\tcontent.value.parentElement.parentNode.removeChild(content.value.parentElement)\n\t}\n}\n\n// 鼠标事件\nconst onMouseDown = (event: MouseEvent) => {\n\tif (!props.draggable) return\n\n\tisDown.value = true\n\tisDraging.value = false // 重置拖动开始标志\n\tstartX.value = event.clientX // 记录起始位置\n\tstartY.value = event.clientY\n\tif (content.value) {\n\t\tconst rect = content.value.getBoundingClientRect()\n\t\toffsetX.value = event.clientX - rect.left\n\t\toffsetY.value = event.clientY - rect.top\n\t}\n\tdocument.addEventListener('mousemove', onMouseMove)\n\tdocument.addEventListener('mouseup', onMouseUp)\n}\n\nconst onMouseMove = (event: MouseEvent) => {\n\tif (!isDown.value) return\n\n\t// 计算移动距离\n\tconst distance = Math.sqrt(Math.pow(event.clientX - startX.value, 2) + Math.pow(event.clientY - startY.value, 2))\n\n\t// 只有当移动距离超过阈值时才开始拖动\n\tif (distance >= DRAG_THRESHOLD) {\n\t\tisDraging.value = true // 标记拖动已经开始\n\t\tsetPosition(event.clientX, event.clientY)\n\t}\n}\n\nconst onMouseUp = () => {\n\tisDown.value = false\n\tisDraging.value = false\n\tdocument.removeEventListener('mousemove', onMouseMove)\n\tdocument.removeEventListener('mouseup', onMouseUp)\n\tsetEmUnit()\n}\n\n// 触摸事件\nconst onTouchStart = (event: TouchEvent) => {\n\tif (!props.draggable) return\n\n\tisDown.value = true\n\tisDraging.value = false // 重置拖动开始标志\n\n\tconst touch = event.touches[0]\n\tstartX.value = touch.clientX // 记录起始位置\n\tstartY.value = touch.clientY\n\tif (content.value) {\n\t\tconst rect = content.value.getBoundingClientRect()\n\t\toffsetX.value = touch.clientX - rect.left\n\t\toffsetY.value = touch.clientY - rect.top\n\t}\n\n\tdocument.addEventListener('touchmove', onTouchMove)\n\tdocument.addEventListener('touchend', onTouchEnd)\n}\n\nconst onTouchMove = (event: TouchEvent) => {\n\tif (!isDown.value) return\n\n\tconst touch = event.touches[0]\n\t// 计算移动距离\n\tconst distance = Math.sqrt(Math.pow(touch.clientX - startX.value, 2) + Math.pow(touch.clientY - startY.value, 2))\n\n\t// 只有当移动距离超过阈值时才开始拖动\n\tif (distance >= DRAG_THRESHOLD) {\n\t\tisDraging.value = true // 标记拖动已经开始\n\t\tsetPosition(touch.clientX, touch.clientY)\n\t}\n}\n\nconst onTouchEnd = () => {\n\tisDown.value = false\n\tisDraging.value = false\n\tdocument.removeEventListener('touchmove', onTouchMove)\n\tdocument.removeEventListener('touchend', onTouchEnd)\n\tsetEmUnit()\n}\n\nconst setEmUnit = () => {\n\tif (content.value) {\n\t\tcurrentTop.value = content.value.getBoundingClientRect().top / getEm() + 'em'\n\t\tcurrentLeft.value = content.value.getBoundingClientRect().left / getEm() + 'em'\n\t}\n}\n\nconst setPosition = (clientX?: number, clientY?: number) => {\n\tif (!content.value) return\n\n\tconst container = content.value.offsetParent || document.documentElement\n\tconst containerRect = container.getBoundingClientRect()\n\tconst elRect = content.value.getBoundingClientRect()\n\tconst elWidth = content.value.offsetWidth\n\tconst elHeight = content.value.offsetHeight\n\tlet newLeft = clientX ? clientX - offsetX.value : elRect.left\n\tlet newTop = clientY ? clientY - offsetY.value : elRect.top\n\n\t// 确保元素不会拖出可视范围\n\tif (newLeft < 0) newLeft = 0\n\tif (newLeft + elWidth > containerRect.width) newLeft = containerRect.width - elWidth\n\tif (newTop < 0) newTop = 0\n\tif (newTop + elHeight > containerRect.height) newTop = containerRect.height - elHeight\n\n\tcurrentTop.value = `${newTop}px`\n\tcurrentLeft.value = `${newLeft}px`\n\tcurrentRight.value = 'auto'\n\tcurrentBottom.value = 'auto'\n}\n\nconst resize = () => {\n\tif (resizeTimer.value) {\n\t\tclearTimeout(resizeTimer.value)\n\t}\n\tresizeTimer.value = window.setTimeout(() => {\n\t\tsetPosition()\n\t\tnextTick(() => {\n\t\t\tsetEmUnit()\n\t\t})\n\t}, 300)\n}\n\n// 生命周期钩子\nonMounted(() => {\n\tinit()\n})\n\nonActivated(() => {\n\tinit()\n})\n\nonDeactivated(() => {\n\tdestroy()\n})\n\nonBeforeUnmount(() => {\n\tdestroy()\n})\n</script>\n"],"names":["DO_defineComponent","_createElementBlock","_normalizeClass","_createElementVNode","_renderSlot","_createBlock"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Fix.vue2.mjs","sources":["../../../../../../packages/components/fix/src/Fix.vue"],"sourcesContent":["<script lang=\"ts\">\nconst DRAG_THRESHOLD = 5\n\nimport { defineComponent as DO_defineComponent } from 'vue';\nexport default /*#__PURE__*/ DO_defineComponent({\n\tname: 'ToFix'\n});</script>\n<template>\n\t<div class=\"to-fix\" :class=\"setClass\">\n\t\t<div ref=\"content\" class=\"to-fix-wrapper\" :style=\"setStyle\" @mousedown=\"onMouseDown\" @touchstart=\"onTouchStart\" @dragstart=\"onDragStart\">\n\t\t\t<slot></slot>\n\t\t\t<to-tag v-if=\"Number(number)\" class=\"to-fix-number\" type=\"number\">{{ number }}</to-tag>\n\t\t</div>\n\t</div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed, watch, onMounted, onActivated, onDeactivated, onBeforeUnmount, nextTick } from 'vue'\nimport { getModeClasses } from '@touchvue/hooks'\nimport { getEm } from '@touchvue/utils'\n\n// 定义 props\nconst props = defineProps({\n\tmode: {\n\t\ttype: String,\n\t\tdefault: 'default'\n\t},\n\ttop: {\n\t\ttype: [String, Number],\n\t\tdefault: 'auto'\n\t},\n\tnumber: {\n\t\ttype: [String, Number],\n\t\tdefault: ''\n\t},\n\tleft: {\n\t\ttype: [String, Number],\n\t\tdefault: 'auto'\n\t},\n\tright: {\n\t\ttype: [String, Number],\n\t\tdefault: 1\n\t},\n\tbottom: {\n\t\ttype: [String, Number],\n\t\tdefault: 1\n\t},\n\tappendToBody: {\n\t\ttype: Boolean,\n\t\tdefault: true\n\t},\n\tdraggable: Boolean\n})\n\n// 响应式数据\nconst content = ref<HTMLElement | null>(null)\nconst resizeTimer = ref<number | null>(null)\nconst isDown = ref(false)\nconst offsetX = ref(0)\nconst offsetY = ref(0)\nconst currentTop = ref<string | null>(null)\nconst currentLeft = ref<string | null>(null)\nconst currentRight = ref<string | null>(null)\nconst currentBottom = ref<string | null>(null)\nconst isDraging = ref(false) // 拖动开始标志\nconst startX = ref(0) // 记录起始X位置\nconst startY = ref(0) // 记录起始Y位置\n // 拖动阈值,5px\n\n// 计算属性\nconst setStyle = computed(() => {\n\tconst obj: Record<string, string> = {}\n\tif (currentTop.value) {\n\t\tobj.top = currentTop.value\n\t\tobj.bottom = 'auto'\n\t} else {\n\t\tif (props.top && props.top !== 'auto') {\n\t\t\tobj.top = props.top + 'em'\n\t\t\tobj.bottom = 'auto'\n\t\t} else if (props.bottom && props.bottom !== 'auto') {\n\t\t\tobj.bottom = props.bottom + 'em'\n\t\t\tobj.top = 'auto'\n\t\t}\n\t}\n\tif (currentLeft.value) {\n\t\tobj.left = currentLeft.value\n\t\tobj.right = 'auto'\n\t} else {\n\t\tif (props.left && props.left !== 'auto') {\n\t\t\tobj.left = props.left + 'em'\n\t\t\tobj.right = 'auto'\n\t\t} else if (props.right && props.right !== 'auto') {\n\t\t\tobj.right = props.right + 'em'\n\t\t\tobj.left = 'auto'\n\t\t}\n\t}\n\treturn obj\n})\n\nconst setClass = computed(() => {\n\tconst arr = []\n\tif (props.mode) {\n\t\tarr.push(...getModeClasses(props.mode))\n\t}\n\tif (isDraging.value) {\n\t\tarr.push(`is-dragging`)\n\t}\n\treturn arr\n})\n\n// 监听器\nwatch(isDown, val => {\n\tif (val) {\n\t\tdocument.body.style.userSelect = 'none'\n\t} else {\n\t\tdocument.body.style.userSelect = ''\n\t}\n})\n\n// 方法\nconst init = () => {\n\tif (props.appendToBody && content.value?.parentElement) {\n\t\tdocument.body.appendChild(content.value.parentElement)\n\t}\n\twindow.addEventListener('resize', resize)\n}\n\nconst destroy = () => {\n\twindow.removeEventListener('resize', resize)\n\tif (props.appendToBody && content.value?.parentElement?.parentNode) {\n\t\tcontent.value.parentElement.parentNode.removeChild(content.value.parentElement)\n\t}\n}\n\n// 阻止内部元素(如 img、a)触发浏览器原生拖拽,避免与组件自定义拖拽冲突导致 mousemove 失效\nconst onDragStart = (event: DragEvent) => {\n\tif (props.draggable) event.preventDefault()\n}\n\n// 鼠标事件\nconst onMouseDown = (event: MouseEvent) => {\n\tif (!props.draggable) return\n\n\tisDown.value = true\n\tisDraging.value = false // 重置拖动开始标志\n\tstartX.value = event.clientX // 记录起始位置\n\tstartY.value = event.clientY\n\tif (content.value) {\n\t\tconst rect = content.value.getBoundingClientRect()\n\t\toffsetX.value = event.clientX - rect.left\n\t\toffsetY.value = event.clientY - rect.top\n\t}\n\tdocument.addEventListener('mousemove', onMouseMove)\n\tdocument.addEventListener('mouseup', onMouseUp)\n}\n\nconst onMouseMove = (event: MouseEvent) => {\n\tif (!isDown.value) return\n\n\t// 计算移动距离\n\tconst distance = Math.sqrt(Math.pow(event.clientX - startX.value, 2) + Math.pow(event.clientY - startY.value, 2))\n\n\t// 只有当移动距离超过阈值时才开始拖动\n\tif (distance >= DRAG_THRESHOLD) {\n\t\tisDraging.value = true // 标记拖动已经开始\n\t\tsetPosition(event.clientX, event.clientY)\n\t}\n}\n\nconst onMouseUp = () => {\n\tisDown.value = false\n\tisDraging.value = false\n\tdocument.removeEventListener('mousemove', onMouseMove)\n\tdocument.removeEventListener('mouseup', onMouseUp)\n\tsetEmUnit()\n}\n\n// 触摸事件\nconst onTouchStart = (event: TouchEvent) => {\n\tif (!props.draggable) return\n\n\tisDown.value = true\n\tisDraging.value = false // 重置拖动开始标志\n\n\tconst touch = event.touches[0]\n\tstartX.value = touch.clientX // 记录起始位置\n\tstartY.value = touch.clientY\n\tif (content.value) {\n\t\tconst rect = content.value.getBoundingClientRect()\n\t\toffsetX.value = touch.clientX - rect.left\n\t\toffsetY.value = touch.clientY - rect.top\n\t}\n\n\tdocument.addEventListener('touchmove', onTouchMove)\n\tdocument.addEventListener('touchend', onTouchEnd)\n}\n\nconst onTouchMove = (event: TouchEvent) => {\n\tif (!isDown.value) return\n\n\tconst touch = event.touches[0]\n\t// 计算移动距离\n\tconst distance = Math.sqrt(Math.pow(touch.clientX - startX.value, 2) + Math.pow(touch.clientY - startY.value, 2))\n\n\t// 只有当移动距离超过阈值时才开始拖动\n\tif (distance >= DRAG_THRESHOLD) {\n\t\tisDraging.value = true // 标记拖动已经开始\n\t\tsetPosition(touch.clientX, touch.clientY)\n\t}\n}\n\nconst onTouchEnd = () => {\n\tisDown.value = false\n\tisDraging.value = false\n\tdocument.removeEventListener('touchmove', onTouchMove)\n\tdocument.removeEventListener('touchend', onTouchEnd)\n\tsetEmUnit()\n}\n\nconst setEmUnit = () => {\n\tif (content.value) {\n\t\tcurrentTop.value = content.value.getBoundingClientRect().top / getEm() + 'em'\n\t\tcurrentLeft.value = content.value.getBoundingClientRect().left / getEm() + 'em'\n\t}\n}\n\nconst setPosition = (clientX?: number, clientY?: number) => {\n\tif (!content.value) return\n\n\tconst container = content.value.offsetParent || document.documentElement\n\tconst containerRect = container.getBoundingClientRect()\n\tconst elRect = content.value.getBoundingClientRect()\n\tconst elWidth = content.value.offsetWidth\n\tconst elHeight = content.value.offsetHeight\n\tlet newLeft = clientX ? clientX - offsetX.value : elRect.left\n\tlet newTop = clientY ? clientY - offsetY.value : elRect.top\n\n\t// 确保元素不会拖出可视范围\n\tif (newLeft < 0) newLeft = 0\n\tif (newLeft + elWidth > containerRect.width) newLeft = containerRect.width - elWidth\n\tif (newTop < 0) newTop = 0\n\tif (newTop + elHeight > containerRect.height) newTop = containerRect.height - elHeight\n\n\tcurrentTop.value = `${newTop}px`\n\tcurrentLeft.value = `${newLeft}px`\n\tcurrentRight.value = 'auto'\n\tcurrentBottom.value = 'auto'\n}\n\nconst resize = () => {\n\tif (resizeTimer.value) {\n\t\tclearTimeout(resizeTimer.value)\n\t}\n\tresizeTimer.value = window.setTimeout(() => {\n\t\tsetPosition()\n\t\tnextTick(() => {\n\t\t\tsetEmUnit()\n\t\t})\n\t}, 300)\n}\n\n// 生命周期钩子\nonMounted(() => {\n\tinit()\n})\n\nonActivated(() => {\n\tinit()\n})\n\nonDeactivated(() => {\n\tdestroy()\n})\n\nonBeforeUnmount(() => {\n\tdestroy()\n})\n</script>\n"],"names":["DO_defineComponent","_createElementBlock","_normalizeClass","_createElementVNode","_renderSlot","_createBlock"],"mappings":"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"}
|
|
@@ -175,6 +175,9 @@ function showTip(formEl, desc = "") {
|
|
|
175
175
|
const container = document.createElement("div");
|
|
176
176
|
render(tooltip, container);
|
|
177
177
|
document.body.appendChild(container);
|
|
178
|
+
if (formEl.getElementsByTagName("input")[0]) {
|
|
179
|
+
formEl.getElementsByTagName("input")[0].select();
|
|
180
|
+
}
|
|
178
181
|
nextTick(() => {
|
|
179
182
|
formEl._tip = {
|
|
180
183
|
vnode: tooltip,
|
|
@@ -185,9 +188,6 @@ function showTip(formEl, desc = "") {
|
|
|
185
188
|
};
|
|
186
189
|
open();
|
|
187
190
|
});
|
|
188
|
-
if (formEl.getElementsByTagName("input")[0]) {
|
|
189
|
-
formEl.getElementsByTagName("input")[0].select();
|
|
190
|
-
}
|
|
191
191
|
} else {
|
|
192
192
|
$tip.warning(desc);
|
|
193
193
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.mjs","sources":["../../../../packages/utils/validate.ts"],"sourcesContent":["import { createVNode, render, nextTick, type ComponentPublicInstance } from 'vue'\ntype VueInstance = ComponentPublicInstance\nimport { ToTooltip, $tip } from '@touchvue/components'\nimport { hasClass } from './dom'\nimport { t } from '@touchvue/locale'\n\ninterface ValidationRule {\n\trule: RegExp\n\tdesc: string\n\tremark?: string\n}\n\ninterface Regs {\n\t[key: string]: ValidationRule\n}\nconst regs: Regs = {\n\t// 基础判断\n\ten: {\n\t\trule: /^[A-Za-z]+$/,\n\t\tdesc: t('to.validate.desc.en')\n\t},\n\t'en-lower': {\n\t\trule: /^[a-z]+$/,\n\t\tdesc: t('to.validate.desc.enLower')\n\t},\n\t'en-upper': {\n\t\trule: /^[A-Z]+$/,\n\t\tdesc: t('to.validate.desc.enUpper')\n\t},\n\t'en-none': {\n\t\trule: /^[^A-Za-z]*$/,\n\t\tdesc: t('to.validate.desc.enNone')\n\t},\n\tcn: {\n\t\trule: /^(?:[\\u3400-\\u4DB5\\u4E00-\\u9FEA\\uFA0E\\uFA0F\\uFA11\\uFA13\\uFA14\\uFA1F\\uFA21\\uFA23\\uFA24\\uFA27-\\uFA29]|[\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879][\\uDC00-\\uDFFF]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0])+$/,\n\t\tdesc: t('to.validate.desc.cn')\n\t},\n\tnumber: {\n\t\trule: /^[-+]?([1-9][0-9]*|0)(\\.[0-9]+)?$/,\n\t\tdesc: t('to.validate.desc.number')\n\t},\n\tinteger: {\n\t\trule: /^-?[0-9]\\d*$/,\n\t\tdesc: t('to.validate.desc.integer')\n\t},\n\t'integer-p': {\n\t\trule: /^\\+?[1-9]\\d*$/,\n\t\tdesc: t('to.validate.desc.integerP')\n\t},\n\t'integer-n': {\n\t\trule: /^-[1-9]\\d*$/,\n\t\tdesc: t('to.validate.desc.integerN')\n\t},\n\tnature: {\n\t\trule: /^\\d+$/,\n\t\tdesc: t('to.validate.desc.nature')\n\t},\n\tdate: {\n\t\trule: /^\\d{4}(-)(1[0-2]|0?\\d)\\1([0-2]\\d|\\d|30|31)$/,\n\t\tdesc: t('to.validate.desc.date')\n\t},\n\ttime: {\n\t\trule: /^(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$/,\n\t\tdesc: t('to.validate.desc.time')\n\t},\n\t'time-12': {\n\t\trule: /^(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$/,\n\t\tdesc: t('to.validate.desc.time12')\n\t},\n\t// 基本数据格式\n\tmoney: {\n\t\trule: /^-?\\d+(,\\d{3})*(\\.\\d{1,2})?$/,\n\t\tdesc: t('to.validate.desc.money')\n\t},\n\tip: {\n\t\trule: /^((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5]).){3}(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])(?::(?:[0-9]|[1-9][0-9]{1,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]))?$/,\n\t\tdesc: t('to.validate.desc.ip')\n\t},\n\t'ip-v6': {\n\t\trule: /^(?:(?:(?:[0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b)\\.){3}(\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b)\\.){3}(\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b)\\.){3}(\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))|\\[(?:(?:(?:[0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b)\\.){3}(\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b)\\.){3}(\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b)\\.){3}(\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))\\](?::(?:[0-9]|[1-9][0-9]{1,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]))?$/i,\n\t\tdesc: t('to.validate.desc.ipV6')\n\t},\n\tpassword: {\n\t\trule: /^\\S*(?=\\S{6,})(?=\\S*\\d)(?=\\S*[A-Z])(?=\\S*[a-z])(?=\\S*[!@#$%^&*? ])\\S*$/,\n\t\tdesc: t('to.validate.desc.password'),\n\t\tremark: t('to.validate.remark.password')\n\t},\n\tusername: {\n\t\trule: /^[a-zA-Z0-9_-]{4,16}$/,\n\t\tdesc: t('to.validate.desc.username'),\n\t\tremark: t('to.validate.remark.username')\n\t},\n\t// 用户信息\n\tname: {\n\t\trule: /^([\\u4e00-\\u9fa5·]{2,16}|[a-zA-Z.\\s]{1,20})$/,\n\t\tdesc: t('to.validate.desc.name')\n\t},\n\t'name-cn': {\n\t\trule: /^(?:[\\u4e00-\\u9fa5·]{2,16})$/,\n\t\tdesc: t('to.validate.desc.nameCn')\n\t},\n\t'name-en': {\n\t\trule: /(^[a-zA-Z]{1}[a-zA-Z\\s]{0,20}[a-zA-Z]{1}$)/,\n\t\tdesc: t('to.validate.desc.nameEn')\n\t},\n\temail: {\n\t\trule: /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/,\n\t\tdesc: t('to.validate.desc.email')\n\t},\n\tqq: {\n\t\trule: /^[1-9][0-9]{4,10}$/,\n\t\tdesc: t('to.validate.desc.qq')\n\t},\n\twechat: {\n\t\trule: /^[a-zA-Z][-_a-zA-Z0-9]{5,19}$/,\n\t\tdesc: t('to.validate.desc.wechat')\n\t},\n\tweb: {\n\t\trule: /^(((ht|f)tps?):\\/\\/)?[\\w-]+(\\.[\\w-]+)+([\\w.,@?^=%&:/~+#-]*[\\w@?^=%&/~+#-])?$/,\n\t\tdesc: t('to.validate.desc.web')\n\t},\n\tuscc: {\n\t\trule: /^[0-9A-HJ-NPQRTUWXY]{2}\\d{6}[0-9A-HJ-NPQRTUWXY]{10}$/,\n\t\tdesc: t('to.validate.desc.uscc')\n\t},\n\tbank: {\n\t\trule: /^[1-9]\\d{9,29}$/,\n\t\tdesc: t('to.validate.desc.bank')\n\t},\n\tphone: {\n\t\trule: /^1[3456789]\\d{9}$/,\n\t\tdesc: t('to.validate.desc.phone')\n\t},\n\ttelphone: {\n\t\trule: /^\\d{3}-\\d{8}$|^\\d{4}-\\d{7,8}$/,\n\t\tdesc: t('to.validate.desc.telphone')\n\t},\n\tid: {\n\t\trule: /^[1-9]\\d{5}(?:18|19|20)\\d{2}(?:0[1-9]|10|11|12)(?:0[1-9]|[1-2]\\d|30|31)\\d{3}[\\dXx]$/,\n\t\tdesc: t('to.validate.desc.id')\n\t},\n\tpassport: {\n\t\trule: /(^[EeKkGgDdSsPpHh]\\d{8}$)|(^(([Ee][a-fA-F])|([DdSsPp][Ee])|([Kk][Jj])|([Mm][Aa])|(1[45]))\\d{7}$)/,\n\t\tdesc: t('to.validate.desc.passport')\n\t},\n\tmac: {\n\t\trule: /^((([a-f0-9]{2}:){5})|(([a-f0-9]{2}-){5}))[a-f0-9]{2}$/i,\n\t\tdesc: t('to.validate.desc.mac')\n\t}\n}\n\n// 判断是否在滚动条以内\nfunction isHideByScroller(node) {\n\tconst el = node\n\twhile (node && !hasClass(node, 'to-scroll') && node.nodeName !== 'BODY') {\n\t\tnode = (node as VueInstance & { __vueParentComponent?: any; __vue_app__?: any }).__vueParentComponent || node.parentNode\n\t}\n\tif (node && node.nodeName !== 'BODY') {\n\t\tconst scroller = node\n\t\treturn el.getBoundingClientRect().top > scroller.getBoundingClientRect().top + scroller.offsetHeight || el.getBoundingClientRect().top + el.offsetHeight <= scroller.getBoundingClientRect().top\n\t} else {\n\t\treturn false\n\t}\n}\n\n// 显示提示的方法\nfunction showTip(formEl, desc = '') {\n\t// 元素未被隐藏使用 tooltip\n\tif (formEl.offsetWidth > 0 && !isHideByScroller(formEl)) {\n\t\tconst tooltip = createVNode(\n\t\t\tToTooltip,\n\t\t\t{\n\t\t\t\tevent: '',\n\t\t\t\tshadow: false,\n\t\t\t\tposition: 'auto',\n\t\t\t\talign: 'auto',\n\t\t\t\tcolor: 'danger',\n\t\t\t\twidth: '',\n\t\t\t\tlazy: true,\n\t\t\t\tcloseOnBlur: true,\n\t\t\t\tisScrollClose: true,\n\t\t\t\tdelay: 0,\n\t\t\t\tmode: ''\n\t\t\t},\n\t\t\t{\n\t\t\t\tdefault: () => desc\n\t\t\t}\n\t\t)\n\t\tconst container = document.createElement('div')\n\t\trender(tooltip, container)\n\t\tdocument.body.appendChild(container)\n\t\tnextTick(() => {\n\t\t\tformEl._tip = {\n\t\t\t\tvnode: tooltip,\n\t\t\t\tcontainer\n\t\t\t}\n\t\t\tconst open = () => {\n\t\t\t\ttooltip.component.exposed.open(formEl)\n\t\t\t}\n\t\t\t// const close = () => {\n\t\t\t// \ttooltip.component.exposed.close(formEl)\n\t\t\t// }\n\t\t\t// 参数 click,弹出方式\n\t\t\t// if (binding.arg) {\n\t\t\t// \tformEl.addEventListener('click', open)\n\t\t\t// } else {\n\t\t\t// formEl.addEventListener('mouseenter', open)\n\t\t\t// formEl.addEventListener('mouseleave', close)\n\t\t\topen()\n\t\t\t// }\n\t\t})\n\n\t\t// 当前元素获取焦点\n\t\tif (formEl.getElementsByTagName('input')[0]) {\n\t\t\tformEl.getElementsByTagName('input')[0].select()\n\t\t}\n\t}\n\n\t// 元素被隐藏使用 floattip\n\telse {\n\t\t// ToTip.danger(desc)\n\t\t$tip.warning(desc)\n\t}\n}\n\n/**\n * 表单验证函数\n * 该函数用于验证网页表单中的输入是否符合规范\n * 它可以接受一个DOM元素、Vue实例或元素ID作为参数,并验证指定元素及其子元素中带有.to-validate类的元素\n * @param {string|HTMLElement|Vue} dom - 表单的DOM元素、Vue实例或元素ID\n * @param {boolean} isAll - 是否验证所有输入项,默认为false,只验证第一个不符合规则的项\n * @returns {boolean} - 如果所有验证项都通过验证,则返回true;否则返回false\n */\nconst validate = function (dom: string | HTMLElement | VueInstance, isAll = false): boolean {\n\t// 存储待验证的DOM节点\n\tlet nodes: Element[] = []\n\n\t// 标记验证是否全部通过\n\tlet allPass = true\n\n\t// 标记所有在滚动条之外的节点\n\tconst hiddenErrorNodes = []\n\n\t// 记录第一个校验不通过的节点(按 DOM 顺序),用于滚动定位\n\tlet firstErrorNode: any = null\n\n\t/**\n\t * 标记所有在滚动条之外的节点信息\n\t * 此函数用于检查给定的表单元素是否在滚动条之外,从而决定是将其标记为可见错误还是隐藏错误\n\t * @param {HTMLElement} formEl - 需要检查的表单元素\n\t */\n\tfunction setHiddenErrorNodes(formEl) {\n\t\t// 记录首个错误节点(仅记录第一次)\n\t\tif (!firstErrorNode) firstErrorNode = formEl\n\t\t// 如果表单元素在滚动条之外,则将其添加到隐藏错误节点列表中\n\t\telse {\n\t\t\thiddenErrorNodes.push(formEl)\n\t\t}\n\t}\n\n\t// 根据传入参数类型获取待验证的节点列表\n\tif (typeof dom === 'string' && document.getElementById(dom)) {\n\t\tnodes = Array.from(document.getElementById(dom).querySelectorAll('.to-validate'))\n\t} else if (dom instanceof HTMLElement) {\n\t\tnodes = Array.from(dom.querySelectorAll('.to-validate'))\n\t} else if (typeof dom !== 'string' && dom && dom.$el) {\n\t\tnodes = Array.from(dom.$el.querySelectorAll('.to-validate'))\n\t}\n\n\t// 如果没有找到任何待验证的节点,直接返回true\n\tif (nodes.length === 0) {\n\t\treturn true\n\t}\n\n\t// 遍历所有待验证的节点\n\tfor (let i = 0; i < nodes.length; i++) {\n\t\tconst node = nodes[i]\n\n\t\t// 获取验证规则、是否需要trim空格、描述、是否必填等属性\n\t\tconst rule = node.getAttribute('rule')\n\t\tconst trim = node.getAttribute('trim') === 'true'\n\t\tconst value = (function () {\n\t\t\tif (node.getAttribute('value')) {\n\t\t\t\treturn trim ? node.getAttribute('value').trim() : node.getAttribute('value')\n\t\t\t} else {\n\t\t\t\treturn ''\n\t\t\t}\n\t\t})()\n\t\tconst desc = node.getAttribute('desc')\n\t\tconst required = node.getAttribute('req') === 'true'\n\t\tconst formEl = node.parentNode\n\t\t// 修改这里,将formEl转换为any类型以访问Vue特定属性\n\t\tlet formVue = (formEl as any).__vueParentComponent || (formEl as any).__vue_app__?.$parent\n\n\t\t// 特殊处理ToDatePicker组件的验证 (兼容Vue2/Vue3)\n\t\tconst vueInstance = formVue || (formEl as any).__vue_app__?.$parent\n\t\tif (vueInstance && ['ToDatePicker'].includes(vueInstance.$options?.name)) {\n\t\t\tformVue = vueInstance.$refs.inputBox\n\t\t}\n\n\t\t// 根据isAll参数决定验证流程\n\t\tif (isAll) {\n\t\t\t// 如果值存在且有规则,则应用规则验证\n\t\t\tif (value) {\n\t\t\t\tif (rule) {\n\t\t\t\t\tformVue.exposed.errorType.value = 'rule'\n\t\t\t\t\tlet reg\n\t\t\t\t\tif (regs[rule] && regs[rule].rule) {\n\t\t\t\t\t\treg = regs[rule].rule\n\t\t\t\t\t\tif (!reg.test(value)) {\n\t\t\t\t\t\t\tformVue.exposed.errorTip.value = t('to.validate.tip.common', desc, `${regs[rule].desc}${regs[rule].remark ? ',' + regs[rule].remark : ''}`)\n\t\t\t\t\t\t\tallPass = false\n\t\t\t\t\t\t\tsetHiddenErrorNodes(formEl)\n\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\treg = new RegExp(rule)\n\t\t\t\t\t\tif (!reg.test(value)) {\n\t\t\t\t\t\t\tformVue.errorTip = t('to.validate.tip.customRemark', desc, formVue.validateTip ? `,${formVue.validateTip}` : '')\n\t\t\t\t\t\t\tallPass = false\n\t\t\t\t\t\t\tsetHiddenErrorNodes(formEl)\n\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t} else if (required) {\n\t\t\t\tformVue.exposed.errorType.value = 'required'\n\t\t\t\tformVue.exposed.errorTip.value = t('to.validate.tip.requiredRemark', desc)\n\t\t\t\tallPass = false\n\t\t\t\tsetHiddenErrorNodes(formEl)\n\t\t\t\tcontinue\n\t\t\t} else {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t} else {\n\t\t\t// 如果值存在且有规则,则应用规则验证\n\t\t\tif (value) {\n\t\t\t\tif (rule) {\n\t\t\t\t\tlet reg\n\t\t\t\t\tif (regs[rule] && regs[rule].rule) {\n\t\t\t\t\t\treg = regs[rule].rule\n\t\t\t\t\t\tif (!reg.test(value)) {\n\t\t\t\t\t\t\tshowTip(formEl, t('to.validate.tip.common', desc, `${regs[rule].desc}${regs[rule].remark ? ',' + regs[rule].remark : ''}`))\n\t\t\t\t\t\t\treturn false\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\treg = new RegExp(rule)\n\t\t\t\t\t\tif (!reg.test(value)) {\n\t\t\t\t\t\t\tshowTip(formEl, t('to.validate.tip.customRemark', desc, formVue.validateTip ? `,${formVue.validateTip}` : ''))\n\t\t\t\t\t\t\treturn false\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t} else if (required) {\n\t\t\t\tshowTip(formEl, t('to.validate.tip.requiredRemark', desc))\n\t\t\t\treturn false\n\t\t\t} else {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\t}\n\n\t// 根据isAll参数返回相应的结果\n\tif (isAll) {\n\t\t// 校验不通过时,自动滚动到第一个不通过的表单项(若其位于 to-scroll 内)\n\t\tif (!allPass && firstErrorNode) {\n\t\t\t// 用纯 DOM 向上查找最近的 .to-scroll 容器,兼容 Vue 3\n\t\t\tlet scrollEl: any = firstErrorNode\n\t\t\twhile (scrollEl && scrollEl.nodeName !== 'BODY' && !(scrollEl.classList && scrollEl.classList.contains('to-scroll'))) {\n\t\t\t\tscrollEl = scrollEl.parentNode\n\t\t\t}\n\t\t\tif (scrollEl && scrollEl.nodeName !== 'BODY') {\n\t\t\t\t// 真正可滚动的元素是 .to-scroll-content,回退到 .to-scroll 自身\n\t\t\t\tconst inner = scrollEl.querySelector('.to-scroll-content') || scrollEl\n\t\t\t\tconst targetRect = (firstErrorNode as HTMLElement).getBoundingClientRect()\n\t\t\t\tconst scrollRect = (inner as HTMLElement).getBoundingClientRect()\n\t\t\t\t;(inner as HTMLElement).scrollTo({\n\t\t\t\t\ttop: (inner as HTMLElement).scrollTop + targetRect.top - scrollRect.top - 10,\n\t\t\t\t\tbehavior: 'smooth'\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t\treturn allPass\n\t} else {\n\t\treturn true\n\t}\n}\n\nconst validateAll = function (dom) {\n\treturn validate(dom, true)\n}\nexport { validate, validateAll }\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"validate.mjs","sources":["../../../../packages/utils/validate.ts"],"sourcesContent":["import { createVNode, render, nextTick, type ComponentPublicInstance } from 'vue'\ntype VueInstance = ComponentPublicInstance\nimport { ToTooltip, $tip } from '@touchvue/components'\nimport { hasClass } from './dom'\nimport { t } from '@touchvue/locale'\n\ninterface ValidationRule {\n\trule: RegExp\n\tdesc: string\n\tremark?: string\n}\n\ninterface Regs {\n\t[key: string]: ValidationRule\n}\nconst regs: Regs = {\n\t// 基础判断\n\ten: {\n\t\trule: /^[A-Za-z]+$/,\n\t\tdesc: t('to.validate.desc.en')\n\t},\n\t'en-lower': {\n\t\trule: /^[a-z]+$/,\n\t\tdesc: t('to.validate.desc.enLower')\n\t},\n\t'en-upper': {\n\t\trule: /^[A-Z]+$/,\n\t\tdesc: t('to.validate.desc.enUpper')\n\t},\n\t'en-none': {\n\t\trule: /^[^A-Za-z]*$/,\n\t\tdesc: t('to.validate.desc.enNone')\n\t},\n\tcn: {\n\t\trule: /^(?:[\\u3400-\\u4DB5\\u4E00-\\u9FEA\\uFA0E\\uFA0F\\uFA11\\uFA13\\uFA14\\uFA1F\\uFA21\\uFA23\\uFA24\\uFA27-\\uFA29]|[\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879][\\uDC00-\\uDFFF]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0])+$/,\n\t\tdesc: t('to.validate.desc.cn')\n\t},\n\tnumber: {\n\t\trule: /^[-+]?([1-9][0-9]*|0)(\\.[0-9]+)?$/,\n\t\tdesc: t('to.validate.desc.number')\n\t},\n\tinteger: {\n\t\trule: /^-?[0-9]\\d*$/,\n\t\tdesc: t('to.validate.desc.integer')\n\t},\n\t'integer-p': {\n\t\trule: /^\\+?[1-9]\\d*$/,\n\t\tdesc: t('to.validate.desc.integerP')\n\t},\n\t'integer-n': {\n\t\trule: /^-[1-9]\\d*$/,\n\t\tdesc: t('to.validate.desc.integerN')\n\t},\n\tnature: {\n\t\trule: /^\\d+$/,\n\t\tdesc: t('to.validate.desc.nature')\n\t},\n\tdate: {\n\t\trule: /^\\d{4}(-)(1[0-2]|0?\\d)\\1([0-2]\\d|\\d|30|31)$/,\n\t\tdesc: t('to.validate.desc.date')\n\t},\n\ttime: {\n\t\trule: /^(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$/,\n\t\tdesc: t('to.validate.desc.time')\n\t},\n\t'time-12': {\n\t\trule: /^(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$/,\n\t\tdesc: t('to.validate.desc.time12')\n\t},\n\t// 基本数据格式\n\tmoney: {\n\t\trule: /^-?\\d+(,\\d{3})*(\\.\\d{1,2})?$/,\n\t\tdesc: t('to.validate.desc.money')\n\t},\n\tip: {\n\t\trule: /^((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5]).){3}(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])(?::(?:[0-9]|[1-9][0-9]{1,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]))?$/,\n\t\tdesc: t('to.validate.desc.ip')\n\t},\n\t'ip-v6': {\n\t\trule: /^(?:(?:(?:[0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b)\\.){3}(\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b)\\.){3}(\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b)\\.){3}(\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))|\\[(?:(?:(?:[0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b)\\.){3}(\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b)\\.){3}(\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b)\\.){3}(\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))\\](?::(?:[0-9]|[1-9][0-9]{1,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]))?$/i,\n\t\tdesc: t('to.validate.desc.ipV6')\n\t},\n\tpassword: {\n\t\trule: /^\\S*(?=\\S{6,})(?=\\S*\\d)(?=\\S*[A-Z])(?=\\S*[a-z])(?=\\S*[!@#$%^&*? ])\\S*$/,\n\t\tdesc: t('to.validate.desc.password'),\n\t\tremark: t('to.validate.remark.password')\n\t},\n\tusername: {\n\t\trule: /^[a-zA-Z0-9_-]{4,16}$/,\n\t\tdesc: t('to.validate.desc.username'),\n\t\tremark: t('to.validate.remark.username')\n\t},\n\t// 用户信息\n\tname: {\n\t\trule: /^([\\u4e00-\\u9fa5·]{2,16}|[a-zA-Z.\\s]{1,20})$/,\n\t\tdesc: t('to.validate.desc.name')\n\t},\n\t'name-cn': {\n\t\trule: /^(?:[\\u4e00-\\u9fa5·]{2,16})$/,\n\t\tdesc: t('to.validate.desc.nameCn')\n\t},\n\t'name-en': {\n\t\trule: /(^[a-zA-Z]{1}[a-zA-Z\\s]{0,20}[a-zA-Z]{1}$)/,\n\t\tdesc: t('to.validate.desc.nameEn')\n\t},\n\temail: {\n\t\trule: /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/,\n\t\tdesc: t('to.validate.desc.email')\n\t},\n\tqq: {\n\t\trule: /^[1-9][0-9]{4,10}$/,\n\t\tdesc: t('to.validate.desc.qq')\n\t},\n\twechat: {\n\t\trule: /^[a-zA-Z][-_a-zA-Z0-9]{5,19}$/,\n\t\tdesc: t('to.validate.desc.wechat')\n\t},\n\tweb: {\n\t\trule: /^(((ht|f)tps?):\\/\\/)?[\\w-]+(\\.[\\w-]+)+([\\w.,@?^=%&:/~+#-]*[\\w@?^=%&/~+#-])?$/,\n\t\tdesc: t('to.validate.desc.web')\n\t},\n\tuscc: {\n\t\trule: /^[0-9A-HJ-NPQRTUWXY]{2}\\d{6}[0-9A-HJ-NPQRTUWXY]{10}$/,\n\t\tdesc: t('to.validate.desc.uscc')\n\t},\n\tbank: {\n\t\trule: /^[1-9]\\d{9,29}$/,\n\t\tdesc: t('to.validate.desc.bank')\n\t},\n\tphone: {\n\t\trule: /^1[3456789]\\d{9}$/,\n\t\tdesc: t('to.validate.desc.phone')\n\t},\n\ttelphone: {\n\t\trule: /^\\d{3}-\\d{8}$|^\\d{4}-\\d{7,8}$/,\n\t\tdesc: t('to.validate.desc.telphone')\n\t},\n\tid: {\n\t\trule: /^[1-9]\\d{5}(?:18|19|20)\\d{2}(?:0[1-9]|10|11|12)(?:0[1-9]|[1-2]\\d|30|31)\\d{3}[\\dXx]$/,\n\t\tdesc: t('to.validate.desc.id')\n\t},\n\tpassport: {\n\t\trule: /(^[EeKkGgDdSsPpHh]\\d{8}$)|(^(([Ee][a-fA-F])|([DdSsPp][Ee])|([Kk][Jj])|([Mm][Aa])|(1[45]))\\d{7}$)/,\n\t\tdesc: t('to.validate.desc.passport')\n\t},\n\tmac: {\n\t\trule: /^((([a-f0-9]{2}:){5})|(([a-f0-9]{2}-){5}))[a-f0-9]{2}$/i,\n\t\tdesc: t('to.validate.desc.mac')\n\t}\n}\n\n// 判断是否在滚动条以内\nfunction isHideByScroller(node) {\n\tconst el = node\n\twhile (node && !hasClass(node, 'to-scroll') && node.nodeName !== 'BODY') {\n\t\tnode = (node as VueInstance & { __vueParentComponent?: any; __vue_app__?: any }).__vueParentComponent || node.parentNode\n\t}\n\tif (node && node.nodeName !== 'BODY') {\n\t\tconst scroller = node\n\t\treturn el.getBoundingClientRect().top > scroller.getBoundingClientRect().top + scroller.offsetHeight || el.getBoundingClientRect().top + el.offsetHeight <= scroller.getBoundingClientRect().top\n\t} else {\n\t\treturn false\n\t}\n}\n\n// 显示提示的方法\nfunction showTip(formEl, desc = '') {\n\t// 元素未被隐藏使用 tooltip\n\tif (formEl.offsetWidth > 0 && !isHideByScroller(formEl)) {\n\t\tconst tooltip = createVNode(\n\t\t\tToTooltip,\n\t\t\t{\n\t\t\t\tevent: '',\n\t\t\t\tshadow: false,\n\t\t\t\tposition: 'auto',\n\t\t\t\talign: 'auto',\n\t\t\t\tcolor: 'danger',\n\t\t\t\twidth: '',\n\t\t\t\tlazy: true,\n\t\t\t\tcloseOnBlur: true,\n\t\t\t\tisScrollClose: true,\n\t\t\t\tdelay: 0,\n\t\t\t\tmode: ''\n\t\t\t},\n\t\t\t{\n\t\t\t\tdefault: () => desc\n\t\t\t}\n\t\t)\n\t\tconst container = document.createElement('div')\n\t\trender(tooltip, container)\n\t\tdocument.body.appendChild(container)\n\n\t\t// 首次聚焦会触发输入框更新,需要在挂载校验提示前完成\n\t\tif (formEl.getElementsByTagName('input')[0]) {\n\t\t\tformEl.getElementsByTagName('input')[0].select()\n\t\t}\n\n\t\tnextTick(() => {\n\t\t\tformEl._tip = {\n\t\t\t\tvnode: tooltip,\n\t\t\t\tcontainer\n\t\t\t}\n\t\t\tconst open = () => {\n\t\t\t\ttooltip.component.exposed.open(formEl)\n\t\t\t}\n\t\t\t// const close = () => {\n\t\t\t// \ttooltip.component.exposed.close(formEl)\n\t\t\t// }\n\t\t\t// 参数 click,弹出方式\n\t\t\t// if (binding.arg) {\n\t\t\t// \tformEl.addEventListener('click', open)\n\t\t\t// } else {\n\t\t\t// formEl.addEventListener('mouseenter', open)\n\t\t\t// formEl.addEventListener('mouseleave', close)\n\t\t\topen()\n\t\t\t// }\n\t\t})\n\t}\n\n\t// 元素被隐藏使用 floattip\n\telse {\n\t\t// ToTip.danger(desc)\n\t\t$tip.warning(desc)\n\t}\n}\n\n/**\n * 表单验证函数\n * 该函数用于验证网页表单中的输入是否符合规范\n * 它可以接受一个DOM元素、Vue实例或元素ID作为参数,并验证指定元素及其子元素中带有.to-validate类的元素\n * @param {string|HTMLElement|Vue} dom - 表单的DOM元素、Vue实例或元素ID\n * @param {boolean} isAll - 是否验证所有输入项,默认为false,只验证第一个不符合规则的项\n * @returns {boolean} - 如果所有验证项都通过验证,则返回true;否则返回false\n */\nconst validate = function (dom: string | HTMLElement | VueInstance, isAll = false): boolean {\n\t// 存储待验证的DOM节点\n\tlet nodes: Element[] = []\n\n\t// 标记验证是否全部通过\n\tlet allPass = true\n\n\t// 标记所有在滚动条之外的节点\n\tconst hiddenErrorNodes = []\n\n\t// 记录第一个校验不通过的节点(按 DOM 顺序),用于滚动定位\n\tlet firstErrorNode: any = null\n\n\t/**\n\t * 标记所有在滚动条之外的节点信息\n\t * 此函数用于检查给定的表单元素是否在滚动条之外,从而决定是将其标记为可见错误还是隐藏错误\n\t * @param {HTMLElement} formEl - 需要检查的表单元素\n\t */\n\tfunction setHiddenErrorNodes(formEl) {\n\t\t// 记录首个错误节点(仅记录第一次)\n\t\tif (!firstErrorNode) firstErrorNode = formEl\n\t\t// 如果表单元素在滚动条之外,则将其添加到隐藏错误节点列表中\n\t\telse {\n\t\t\thiddenErrorNodes.push(formEl)\n\t\t}\n\t}\n\n\t// 根据传入参数类型获取待验证的节点列表\n\tif (typeof dom === 'string' && document.getElementById(dom)) {\n\t\tnodes = Array.from(document.getElementById(dom).querySelectorAll('.to-validate'))\n\t} else if (dom instanceof HTMLElement) {\n\t\tnodes = Array.from(dom.querySelectorAll('.to-validate'))\n\t} else if (typeof dom !== 'string' && dom && dom.$el) {\n\t\tnodes = Array.from(dom.$el.querySelectorAll('.to-validate'))\n\t}\n\n\t// 如果没有找到任何待验证的节点,直接返回true\n\tif (nodes.length === 0) {\n\t\treturn true\n\t}\n\n\t// 遍历所有待验证的节点\n\tfor (let i = 0; i < nodes.length; i++) {\n\t\tconst node = nodes[i]\n\n\t\t// 获取验证规则、是否需要trim空格、描述、是否必填等属性\n\t\tconst rule = node.getAttribute('rule')\n\t\tconst trim = node.getAttribute('trim') === 'true'\n\t\tconst value = (function () {\n\t\t\tif (node.getAttribute('value')) {\n\t\t\t\treturn trim ? node.getAttribute('value').trim() : node.getAttribute('value')\n\t\t\t} else {\n\t\t\t\treturn ''\n\t\t\t}\n\t\t})()\n\t\tconst desc = node.getAttribute('desc')\n\t\tconst required = node.getAttribute('req') === 'true'\n\t\tconst formEl = node.parentNode\n\t\t// 修改这里,将formEl转换为any类型以访问Vue特定属性\n\t\tlet formVue = (formEl as any).__vueParentComponent || (formEl as any).__vue_app__?.$parent\n\n\t\t// 特殊处理ToDatePicker组件的验证 (兼容Vue2/Vue3)\n\t\tconst vueInstance = formVue || (formEl as any).__vue_app__?.$parent\n\t\tif (vueInstance && ['ToDatePicker'].includes(vueInstance.$options?.name)) {\n\t\t\tformVue = vueInstance.$refs.inputBox\n\t\t}\n\n\t\t// 根据isAll参数决定验证流程\n\t\tif (isAll) {\n\t\t\t// 如果值存在且有规则,则应用规则验证\n\t\t\tif (value) {\n\t\t\t\tif (rule) {\n\t\t\t\t\tformVue.exposed.errorType.value = 'rule'\n\t\t\t\t\tlet reg\n\t\t\t\t\tif (regs[rule] && regs[rule].rule) {\n\t\t\t\t\t\treg = regs[rule].rule\n\t\t\t\t\t\tif (!reg.test(value)) {\n\t\t\t\t\t\t\tformVue.exposed.errorTip.value = t('to.validate.tip.common', desc, `${regs[rule].desc}${regs[rule].remark ? ',' + regs[rule].remark : ''}`)\n\t\t\t\t\t\t\tallPass = false\n\t\t\t\t\t\t\tsetHiddenErrorNodes(formEl)\n\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\treg = new RegExp(rule)\n\t\t\t\t\t\tif (!reg.test(value)) {\n\t\t\t\t\t\t\tformVue.errorTip = t('to.validate.tip.customRemark', desc, formVue.validateTip ? `,${formVue.validateTip}` : '')\n\t\t\t\t\t\t\tallPass = false\n\t\t\t\t\t\t\tsetHiddenErrorNodes(formEl)\n\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t} else if (required) {\n\t\t\t\tformVue.exposed.errorType.value = 'required'\n\t\t\t\tformVue.exposed.errorTip.value = t('to.validate.tip.requiredRemark', desc)\n\t\t\t\tallPass = false\n\t\t\t\tsetHiddenErrorNodes(formEl)\n\t\t\t\tcontinue\n\t\t\t} else {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t} else {\n\t\t\t// 如果值存在且有规则,则应用规则验证\n\t\t\tif (value) {\n\t\t\t\tif (rule) {\n\t\t\t\t\tlet reg\n\t\t\t\t\tif (regs[rule] && regs[rule].rule) {\n\t\t\t\t\t\treg = regs[rule].rule\n\t\t\t\t\t\tif (!reg.test(value)) {\n\t\t\t\t\t\t\tshowTip(formEl, t('to.validate.tip.common', desc, `${regs[rule].desc}${regs[rule].remark ? ',' + regs[rule].remark : ''}`))\n\t\t\t\t\t\t\treturn false\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\treg = new RegExp(rule)\n\t\t\t\t\t\tif (!reg.test(value)) {\n\t\t\t\t\t\t\tshowTip(formEl, t('to.validate.tip.customRemark', desc, formVue.validateTip ? `,${formVue.validateTip}` : ''))\n\t\t\t\t\t\t\treturn false\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t} else if (required) {\n\t\t\t\tshowTip(formEl, t('to.validate.tip.requiredRemark', desc))\n\t\t\t\treturn false\n\t\t\t} else {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\t}\n\n\t// 根据isAll参数返回相应的结果\n\tif (isAll) {\n\t\t// 校验不通过时,自动滚动到第一个不通过的表单项(若其位于 to-scroll 内)\n\t\tif (!allPass && firstErrorNode) {\n\t\t\t// 用纯 DOM 向上查找最近的 .to-scroll 容器,兼容 Vue 3\n\t\t\tlet scrollEl: any = firstErrorNode\n\t\t\twhile (scrollEl && scrollEl.nodeName !== 'BODY' && !(scrollEl.classList && scrollEl.classList.contains('to-scroll'))) {\n\t\t\t\tscrollEl = scrollEl.parentNode\n\t\t\t}\n\t\t\tif (scrollEl && scrollEl.nodeName !== 'BODY') {\n\t\t\t\t// 真正可滚动的元素是 .to-scroll-content,回退到 .to-scroll 自身\n\t\t\t\tconst inner = scrollEl.querySelector('.to-scroll-content') || scrollEl\n\t\t\t\tconst targetRect = (firstErrorNode as HTMLElement).getBoundingClientRect()\n\t\t\t\tconst scrollRect = (inner as HTMLElement).getBoundingClientRect()\n\t\t\t\t;(inner as HTMLElement).scrollTo({\n\t\t\t\t\ttop: (inner as HTMLElement).scrollTop + targetRect.top - scrollRect.top - 10,\n\t\t\t\t\tbehavior: 'smooth'\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t\treturn allPass\n\t} else {\n\t\treturn true\n\t}\n}\n\nconst validateAll = function (dom) {\n\treturn validate(dom, true)\n}\nexport { validate, validateAll }\n"],"names":[],"mappings":"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"}
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
var vue = require('vue');
|
|
6
|
-
var ratio = require('../../../utils/ratio.js');
|
|
7
6
|
var useSetClass = require('../../../hooks/useSetClass.js');
|
|
7
|
+
var ratio = require('../../../utils/ratio.js');
|
|
8
8
|
|
|
9
9
|
const __default__ = vue.defineComponent({
|
|
10
10
|
name: "ToButton"
|
|
@@ -116,6 +116,10 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
116
116
|
content.value.parentElement.parentNode.removeChild(content.value.parentElement);
|
|
117
117
|
}
|
|
118
118
|
};
|
|
119
|
+
const onDragStart = (event) => {
|
|
120
|
+
if (props.draggable)
|
|
121
|
+
event.preventDefault();
|
|
122
|
+
};
|
|
119
123
|
const onMouseDown = (event) => {
|
|
120
124
|
if (!props.draggable)
|
|
121
125
|
return;
|
|
@@ -248,7 +252,8 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
248
252
|
class: "to-fix-wrapper",
|
|
249
253
|
style: vue.normalizeStyle(setStyle.value),
|
|
250
254
|
onMousedown: onMouseDown,
|
|
251
|
-
onTouchstart: onTouchStart
|
|
255
|
+
onTouchstart: onTouchStart,
|
|
256
|
+
onDragstart: onDragStart
|
|
252
257
|
},
|
|
253
258
|
[
|
|
254
259
|
vue.renderSlot(_ctx.$slots, "default"),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Fix.vue2.js","sources":["../../../../../../packages/components/fix/src/Fix.vue"],"sourcesContent":["<script lang=\"ts\">\nconst DRAG_THRESHOLD = 5\n\nimport { defineComponent as DO_defineComponent } from 'vue';\nexport default /*#__PURE__*/ DO_defineComponent({\n\tname: 'ToFix'\n});</script>\n<template>\n\t<div class=\"to-fix\" :class=\"setClass\">\n\t\t<div ref=\"content\" class=\"to-fix-wrapper\" :style=\"setStyle\" @mousedown=\"onMouseDown\" @touchstart=\"onTouchStart\">\n\t\t\t<slot></slot>\n\t\t\t<to-tag v-if=\"Number(number)\" class=\"to-fix-number\" type=\"number\">{{ number }}</to-tag>\n\t\t</div>\n\t</div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed, watch, onMounted, onActivated, onDeactivated, onBeforeUnmount, nextTick } from 'vue'\nimport { getModeClasses } from '@touchvue/hooks'\nimport { getEm } from '@touchvue/utils'\n\n// 定义 props\nconst props = defineProps({\n\tmode: {\n\t\ttype: String,\n\t\tdefault: 'default'\n\t},\n\ttop: {\n\t\ttype: [String, Number],\n\t\tdefault: 'auto'\n\t},\n\tnumber: {\n\t\ttype: [String, Number],\n\t\tdefault: ''\n\t},\n\tleft: {\n\t\ttype: [String, Number],\n\t\tdefault: 'auto'\n\t},\n\tright: {\n\t\ttype: [String, Number],\n\t\tdefault: 1\n\t},\n\tbottom: {\n\t\ttype: [String, Number],\n\t\tdefault: 1\n\t},\n\tappendToBody: {\n\t\ttype: Boolean,\n\t\tdefault: true\n\t},\n\tdraggable: Boolean\n})\n\n// 响应式数据\nconst content = ref<HTMLElement | null>(null)\nconst resizeTimer = ref<number | null>(null)\nconst isDown = ref(false)\nconst offsetX = ref(0)\nconst offsetY = ref(0)\nconst currentTop = ref<string | null>(null)\nconst currentLeft = ref<string | null>(null)\nconst currentRight = ref<string | null>(null)\nconst currentBottom = ref<string | null>(null)\nconst isDraging = ref(false) // 拖动开始标志\nconst startX = ref(0) // 记录起始X位置\nconst startY = ref(0) // 记录起始Y位置\n // 拖动阈值,5px\n\n// 计算属性\nconst setStyle = computed(() => {\n\tconst obj: Record<string, string> = {}\n\tif (currentTop.value) {\n\t\tobj.top = currentTop.value\n\t\tobj.bottom = 'auto'\n\t} else {\n\t\tif (props.top && props.top !== 'auto') {\n\t\t\tobj.top = props.top + 'em'\n\t\t\tobj.bottom = 'auto'\n\t\t} else if (props.bottom && props.bottom !== 'auto') {\n\t\t\tobj.bottom = props.bottom + 'em'\n\t\t\tobj.top = 'auto'\n\t\t}\n\t}\n\tif (currentLeft.value) {\n\t\tobj.left = currentLeft.value\n\t\tobj.right = 'auto'\n\t} else {\n\t\tif (props.left && props.left !== 'auto') {\n\t\t\tobj.left = props.left + 'em'\n\t\t\tobj.right = 'auto'\n\t\t} else if (props.right && props.right !== 'auto') {\n\t\t\tobj.right = props.right + 'em'\n\t\t\tobj.left = 'auto'\n\t\t}\n\t}\n\treturn obj\n})\n\nconst setClass = computed(() => {\n\tconst arr = []\n\tif (props.mode) {\n\t\tarr.push(...getModeClasses(props.mode))\n\t}\n\tif (isDraging.value) {\n\t\tarr.push(`is-dragging`)\n\t}\n\treturn arr\n})\n\n// 监听器\nwatch(isDown, val => {\n\tif (val) {\n\t\tdocument.body.style.userSelect = 'none'\n\t} else {\n\t\tdocument.body.style.userSelect = ''\n\t}\n})\n\n// 方法\nconst init = () => {\n\tif (props.appendToBody && content.value?.parentElement) {\n\t\tdocument.body.appendChild(content.value.parentElement)\n\t}\n\twindow.addEventListener('resize', resize)\n}\n\nconst destroy = () => {\n\twindow.removeEventListener('resize', resize)\n\tif (props.appendToBody && content.value?.parentElement?.parentNode) {\n\t\tcontent.value.parentElement.parentNode.removeChild(content.value.parentElement)\n\t}\n}\n\n// 鼠标事件\nconst onMouseDown = (event: MouseEvent) => {\n\tif (!props.draggable) return\n\n\tisDown.value = true\n\tisDraging.value = false // 重置拖动开始标志\n\tstartX.value = event.clientX // 记录起始位置\n\tstartY.value = event.clientY\n\tif (content.value) {\n\t\tconst rect = content.value.getBoundingClientRect()\n\t\toffsetX.value = event.clientX - rect.left\n\t\toffsetY.value = event.clientY - rect.top\n\t}\n\tdocument.addEventListener('mousemove', onMouseMove)\n\tdocument.addEventListener('mouseup', onMouseUp)\n}\n\nconst onMouseMove = (event: MouseEvent) => {\n\tif (!isDown.value) return\n\n\t// 计算移动距离\n\tconst distance = Math.sqrt(Math.pow(event.clientX - startX.value, 2) + Math.pow(event.clientY - startY.value, 2))\n\n\t// 只有当移动距离超过阈值时才开始拖动\n\tif (distance >= DRAG_THRESHOLD) {\n\t\tisDraging.value = true // 标记拖动已经开始\n\t\tsetPosition(event.clientX, event.clientY)\n\t}\n}\n\nconst onMouseUp = () => {\n\tisDown.value = false\n\tisDraging.value = false\n\tdocument.removeEventListener('mousemove', onMouseMove)\n\tdocument.removeEventListener('mouseup', onMouseUp)\n\tsetEmUnit()\n}\n\n// 触摸事件\nconst onTouchStart = (event: TouchEvent) => {\n\tif (!props.draggable) return\n\n\tisDown.value = true\n\tisDraging.value = false // 重置拖动开始标志\n\n\tconst touch = event.touches[0]\n\tstartX.value = touch.clientX // 记录起始位置\n\tstartY.value = touch.clientY\n\tif (content.value) {\n\t\tconst rect = content.value.getBoundingClientRect()\n\t\toffsetX.value = touch.clientX - rect.left\n\t\toffsetY.value = touch.clientY - rect.top\n\t}\n\n\tdocument.addEventListener('touchmove', onTouchMove)\n\tdocument.addEventListener('touchend', onTouchEnd)\n}\n\nconst onTouchMove = (event: TouchEvent) => {\n\tif (!isDown.value) return\n\n\tconst touch = event.touches[0]\n\t// 计算移动距离\n\tconst distance = Math.sqrt(Math.pow(touch.clientX - startX.value, 2) + Math.pow(touch.clientY - startY.value, 2))\n\n\t// 只有当移动距离超过阈值时才开始拖动\n\tif (distance >= DRAG_THRESHOLD) {\n\t\tisDraging.value = true // 标记拖动已经开始\n\t\tsetPosition(touch.clientX, touch.clientY)\n\t}\n}\n\nconst onTouchEnd = () => {\n\tisDown.value = false\n\tisDraging.value = false\n\tdocument.removeEventListener('touchmove', onTouchMove)\n\tdocument.removeEventListener('touchend', onTouchEnd)\n\tsetEmUnit()\n}\n\nconst setEmUnit = () => {\n\tif (content.value) {\n\t\tcurrentTop.value = content.value.getBoundingClientRect().top / getEm() + 'em'\n\t\tcurrentLeft.value = content.value.getBoundingClientRect().left / getEm() + 'em'\n\t}\n}\n\nconst setPosition = (clientX?: number, clientY?: number) => {\n\tif (!content.value) return\n\n\tconst container = content.value.offsetParent || document.documentElement\n\tconst containerRect = container.getBoundingClientRect()\n\tconst elRect = content.value.getBoundingClientRect()\n\tconst elWidth = content.value.offsetWidth\n\tconst elHeight = content.value.offsetHeight\n\tlet newLeft = clientX ? clientX - offsetX.value : elRect.left\n\tlet newTop = clientY ? clientY - offsetY.value : elRect.top\n\n\t// 确保元素不会拖出可视范围\n\tif (newLeft < 0) newLeft = 0\n\tif (newLeft + elWidth > containerRect.width) newLeft = containerRect.width - elWidth\n\tif (newTop < 0) newTop = 0\n\tif (newTop + elHeight > containerRect.height) newTop = containerRect.height - elHeight\n\n\tcurrentTop.value = `${newTop}px`\n\tcurrentLeft.value = `${newLeft}px`\n\tcurrentRight.value = 'auto'\n\tcurrentBottom.value = 'auto'\n}\n\nconst resize = () => {\n\tif (resizeTimer.value) {\n\t\tclearTimeout(resizeTimer.value)\n\t}\n\tresizeTimer.value = window.setTimeout(() => {\n\t\tsetPosition()\n\t\tnextTick(() => {\n\t\t\tsetEmUnit()\n\t\t})\n\t}, 300)\n}\n\n// 生命周期钩子\nonMounted(() => {\n\tinit()\n})\n\nonActivated(() => {\n\tinit()\n})\n\nonDeactivated(() => {\n\tdestroy()\n})\n\nonBeforeUnmount(() => {\n\tdestroy()\n})\n</script>\n"],"names":["DO_defineComponent","ref","computed","getModeClasses","watch","getEm","nextTick","onMounted","onActivated","onDeactivated","onBeforeUnmount","_createElementBlock","_normalizeClass","_createElementVNode","_renderSlot","_createBlock"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Fix.vue2.js","sources":["../../../../../../packages/components/fix/src/Fix.vue"],"sourcesContent":["<script lang=\"ts\">\nconst DRAG_THRESHOLD = 5\n\nimport { defineComponent as DO_defineComponent } from 'vue';\nexport default /*#__PURE__*/ DO_defineComponent({\n\tname: 'ToFix'\n});</script>\n<template>\n\t<div class=\"to-fix\" :class=\"setClass\">\n\t\t<div ref=\"content\" class=\"to-fix-wrapper\" :style=\"setStyle\" @mousedown=\"onMouseDown\" @touchstart=\"onTouchStart\" @dragstart=\"onDragStart\">\n\t\t\t<slot></slot>\n\t\t\t<to-tag v-if=\"Number(number)\" class=\"to-fix-number\" type=\"number\">{{ number }}</to-tag>\n\t\t</div>\n\t</div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed, watch, onMounted, onActivated, onDeactivated, onBeforeUnmount, nextTick } from 'vue'\nimport { getModeClasses } from '@touchvue/hooks'\nimport { getEm } from '@touchvue/utils'\n\n// 定义 props\nconst props = defineProps({\n\tmode: {\n\t\ttype: String,\n\t\tdefault: 'default'\n\t},\n\ttop: {\n\t\ttype: [String, Number],\n\t\tdefault: 'auto'\n\t},\n\tnumber: {\n\t\ttype: [String, Number],\n\t\tdefault: ''\n\t},\n\tleft: {\n\t\ttype: [String, Number],\n\t\tdefault: 'auto'\n\t},\n\tright: {\n\t\ttype: [String, Number],\n\t\tdefault: 1\n\t},\n\tbottom: {\n\t\ttype: [String, Number],\n\t\tdefault: 1\n\t},\n\tappendToBody: {\n\t\ttype: Boolean,\n\t\tdefault: true\n\t},\n\tdraggable: Boolean\n})\n\n// 响应式数据\nconst content = ref<HTMLElement | null>(null)\nconst resizeTimer = ref<number | null>(null)\nconst isDown = ref(false)\nconst offsetX = ref(0)\nconst offsetY = ref(0)\nconst currentTop = ref<string | null>(null)\nconst currentLeft = ref<string | null>(null)\nconst currentRight = ref<string | null>(null)\nconst currentBottom = ref<string | null>(null)\nconst isDraging = ref(false) // 拖动开始标志\nconst startX = ref(0) // 记录起始X位置\nconst startY = ref(0) // 记录起始Y位置\n // 拖动阈值,5px\n\n// 计算属性\nconst setStyle = computed(() => {\n\tconst obj: Record<string, string> = {}\n\tif (currentTop.value) {\n\t\tobj.top = currentTop.value\n\t\tobj.bottom = 'auto'\n\t} else {\n\t\tif (props.top && props.top !== 'auto') {\n\t\t\tobj.top = props.top + 'em'\n\t\t\tobj.bottom = 'auto'\n\t\t} else if (props.bottom && props.bottom !== 'auto') {\n\t\t\tobj.bottom = props.bottom + 'em'\n\t\t\tobj.top = 'auto'\n\t\t}\n\t}\n\tif (currentLeft.value) {\n\t\tobj.left = currentLeft.value\n\t\tobj.right = 'auto'\n\t} else {\n\t\tif (props.left && props.left !== 'auto') {\n\t\t\tobj.left = props.left + 'em'\n\t\t\tobj.right = 'auto'\n\t\t} else if (props.right && props.right !== 'auto') {\n\t\t\tobj.right = props.right + 'em'\n\t\t\tobj.left = 'auto'\n\t\t}\n\t}\n\treturn obj\n})\n\nconst setClass = computed(() => {\n\tconst arr = []\n\tif (props.mode) {\n\t\tarr.push(...getModeClasses(props.mode))\n\t}\n\tif (isDraging.value) {\n\t\tarr.push(`is-dragging`)\n\t}\n\treturn arr\n})\n\n// 监听器\nwatch(isDown, val => {\n\tif (val) {\n\t\tdocument.body.style.userSelect = 'none'\n\t} else {\n\t\tdocument.body.style.userSelect = ''\n\t}\n})\n\n// 方法\nconst init = () => {\n\tif (props.appendToBody && content.value?.parentElement) {\n\t\tdocument.body.appendChild(content.value.parentElement)\n\t}\n\twindow.addEventListener('resize', resize)\n}\n\nconst destroy = () => {\n\twindow.removeEventListener('resize', resize)\n\tif (props.appendToBody && content.value?.parentElement?.parentNode) {\n\t\tcontent.value.parentElement.parentNode.removeChild(content.value.parentElement)\n\t}\n}\n\n// 阻止内部元素(如 img、a)触发浏览器原生拖拽,避免与组件自定义拖拽冲突导致 mousemove 失效\nconst onDragStart = (event: DragEvent) => {\n\tif (props.draggable) event.preventDefault()\n}\n\n// 鼠标事件\nconst onMouseDown = (event: MouseEvent) => {\n\tif (!props.draggable) return\n\n\tisDown.value = true\n\tisDraging.value = false // 重置拖动开始标志\n\tstartX.value = event.clientX // 记录起始位置\n\tstartY.value = event.clientY\n\tif (content.value) {\n\t\tconst rect = content.value.getBoundingClientRect()\n\t\toffsetX.value = event.clientX - rect.left\n\t\toffsetY.value = event.clientY - rect.top\n\t}\n\tdocument.addEventListener('mousemove', onMouseMove)\n\tdocument.addEventListener('mouseup', onMouseUp)\n}\n\nconst onMouseMove = (event: MouseEvent) => {\n\tif (!isDown.value) return\n\n\t// 计算移动距离\n\tconst distance = Math.sqrt(Math.pow(event.clientX - startX.value, 2) + Math.pow(event.clientY - startY.value, 2))\n\n\t// 只有当移动距离超过阈值时才开始拖动\n\tif (distance >= DRAG_THRESHOLD) {\n\t\tisDraging.value = true // 标记拖动已经开始\n\t\tsetPosition(event.clientX, event.clientY)\n\t}\n}\n\nconst onMouseUp = () => {\n\tisDown.value = false\n\tisDraging.value = false\n\tdocument.removeEventListener('mousemove', onMouseMove)\n\tdocument.removeEventListener('mouseup', onMouseUp)\n\tsetEmUnit()\n}\n\n// 触摸事件\nconst onTouchStart = (event: TouchEvent) => {\n\tif (!props.draggable) return\n\n\tisDown.value = true\n\tisDraging.value = false // 重置拖动开始标志\n\n\tconst touch = event.touches[0]\n\tstartX.value = touch.clientX // 记录起始位置\n\tstartY.value = touch.clientY\n\tif (content.value) {\n\t\tconst rect = content.value.getBoundingClientRect()\n\t\toffsetX.value = touch.clientX - rect.left\n\t\toffsetY.value = touch.clientY - rect.top\n\t}\n\n\tdocument.addEventListener('touchmove', onTouchMove)\n\tdocument.addEventListener('touchend', onTouchEnd)\n}\n\nconst onTouchMove = (event: TouchEvent) => {\n\tif (!isDown.value) return\n\n\tconst touch = event.touches[0]\n\t// 计算移动距离\n\tconst distance = Math.sqrt(Math.pow(touch.clientX - startX.value, 2) + Math.pow(touch.clientY - startY.value, 2))\n\n\t// 只有当移动距离超过阈值时才开始拖动\n\tif (distance >= DRAG_THRESHOLD) {\n\t\tisDraging.value = true // 标记拖动已经开始\n\t\tsetPosition(touch.clientX, touch.clientY)\n\t}\n}\n\nconst onTouchEnd = () => {\n\tisDown.value = false\n\tisDraging.value = false\n\tdocument.removeEventListener('touchmove', onTouchMove)\n\tdocument.removeEventListener('touchend', onTouchEnd)\n\tsetEmUnit()\n}\n\nconst setEmUnit = () => {\n\tif (content.value) {\n\t\tcurrentTop.value = content.value.getBoundingClientRect().top / getEm() + 'em'\n\t\tcurrentLeft.value = content.value.getBoundingClientRect().left / getEm() + 'em'\n\t}\n}\n\nconst setPosition = (clientX?: number, clientY?: number) => {\n\tif (!content.value) return\n\n\tconst container = content.value.offsetParent || document.documentElement\n\tconst containerRect = container.getBoundingClientRect()\n\tconst elRect = content.value.getBoundingClientRect()\n\tconst elWidth = content.value.offsetWidth\n\tconst elHeight = content.value.offsetHeight\n\tlet newLeft = clientX ? clientX - offsetX.value : elRect.left\n\tlet newTop = clientY ? clientY - offsetY.value : elRect.top\n\n\t// 确保元素不会拖出可视范围\n\tif (newLeft < 0) newLeft = 0\n\tif (newLeft + elWidth > containerRect.width) newLeft = containerRect.width - elWidth\n\tif (newTop < 0) newTop = 0\n\tif (newTop + elHeight > containerRect.height) newTop = containerRect.height - elHeight\n\n\tcurrentTop.value = `${newTop}px`\n\tcurrentLeft.value = `${newLeft}px`\n\tcurrentRight.value = 'auto'\n\tcurrentBottom.value = 'auto'\n}\n\nconst resize = () => {\n\tif (resizeTimer.value) {\n\t\tclearTimeout(resizeTimer.value)\n\t}\n\tresizeTimer.value = window.setTimeout(() => {\n\t\tsetPosition()\n\t\tnextTick(() => {\n\t\t\tsetEmUnit()\n\t\t})\n\t}, 300)\n}\n\n// 生命周期钩子\nonMounted(() => {\n\tinit()\n})\n\nonActivated(() => {\n\tinit()\n})\n\nonDeactivated(() => {\n\tdestroy()\n})\n\nonBeforeUnmount(() => {\n\tdestroy()\n})\n</script>\n"],"names":["DO_defineComponent","ref","computed","getModeClasses","watch","getEm","nextTick","onMounted","onActivated","onDeactivated","onBeforeUnmount","_createElementBlock","_normalizeClass","_createElementVNode","_renderSlot","_createBlock"],"mappings":"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"}
|
|
@@ -177,6 +177,9 @@ function showTip(formEl, desc = "") {
|
|
|
177
177
|
const container = document.createElement("div");
|
|
178
178
|
vue.render(tooltip, container);
|
|
179
179
|
document.body.appendChild(container);
|
|
180
|
+
if (formEl.getElementsByTagName("input")[0]) {
|
|
181
|
+
formEl.getElementsByTagName("input")[0].select();
|
|
182
|
+
}
|
|
180
183
|
vue.nextTick(() => {
|
|
181
184
|
formEl._tip = {
|
|
182
185
|
vnode: tooltip,
|
|
@@ -187,9 +190,6 @@ function showTip(formEl, desc = "") {
|
|
|
187
190
|
};
|
|
188
191
|
open();
|
|
189
192
|
});
|
|
190
|
-
if (formEl.getElementsByTagName("input")[0]) {
|
|
191
|
-
formEl.getElementsByTagName("input")[0].select();
|
|
192
|
-
}
|
|
193
193
|
} else {
|
|
194
194
|
index$2.$tip.warning(desc);
|
|
195
195
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.js","sources":["../../../../packages/utils/validate.ts"],"sourcesContent":["import { createVNode, render, nextTick, type ComponentPublicInstance } from 'vue'\ntype VueInstance = ComponentPublicInstance\nimport { ToTooltip, $tip } from '@touchvue/components'\nimport { hasClass } from './dom'\nimport { t } from '@touchvue/locale'\n\ninterface ValidationRule {\n\trule: RegExp\n\tdesc: string\n\tremark?: string\n}\n\ninterface Regs {\n\t[key: string]: ValidationRule\n}\nconst regs: Regs = {\n\t// 基础判断\n\ten: {\n\t\trule: /^[A-Za-z]+$/,\n\t\tdesc: t('to.validate.desc.en')\n\t},\n\t'en-lower': {\n\t\trule: /^[a-z]+$/,\n\t\tdesc: t('to.validate.desc.enLower')\n\t},\n\t'en-upper': {\n\t\trule: /^[A-Z]+$/,\n\t\tdesc: t('to.validate.desc.enUpper')\n\t},\n\t'en-none': {\n\t\trule: /^[^A-Za-z]*$/,\n\t\tdesc: t('to.validate.desc.enNone')\n\t},\n\tcn: {\n\t\trule: /^(?:[\\u3400-\\u4DB5\\u4E00-\\u9FEA\\uFA0E\\uFA0F\\uFA11\\uFA13\\uFA14\\uFA1F\\uFA21\\uFA23\\uFA24\\uFA27-\\uFA29]|[\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879][\\uDC00-\\uDFFF]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0])+$/,\n\t\tdesc: t('to.validate.desc.cn')\n\t},\n\tnumber: {\n\t\trule: /^[-+]?([1-9][0-9]*|0)(\\.[0-9]+)?$/,\n\t\tdesc: t('to.validate.desc.number')\n\t},\n\tinteger: {\n\t\trule: /^-?[0-9]\\d*$/,\n\t\tdesc: t('to.validate.desc.integer')\n\t},\n\t'integer-p': {\n\t\trule: /^\\+?[1-9]\\d*$/,\n\t\tdesc: t('to.validate.desc.integerP')\n\t},\n\t'integer-n': {\n\t\trule: /^-[1-9]\\d*$/,\n\t\tdesc: t('to.validate.desc.integerN')\n\t},\n\tnature: {\n\t\trule: /^\\d+$/,\n\t\tdesc: t('to.validate.desc.nature')\n\t},\n\tdate: {\n\t\trule: /^\\d{4}(-)(1[0-2]|0?\\d)\\1([0-2]\\d|\\d|30|31)$/,\n\t\tdesc: t('to.validate.desc.date')\n\t},\n\ttime: {\n\t\trule: /^(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$/,\n\t\tdesc: t('to.validate.desc.time')\n\t},\n\t'time-12': {\n\t\trule: /^(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$/,\n\t\tdesc: t('to.validate.desc.time12')\n\t},\n\t// 基本数据格式\n\tmoney: {\n\t\trule: /^-?\\d+(,\\d{3})*(\\.\\d{1,2})?$/,\n\t\tdesc: t('to.validate.desc.money')\n\t},\n\tip: {\n\t\trule: /^((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5]).){3}(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])(?::(?:[0-9]|[1-9][0-9]{1,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]))?$/,\n\t\tdesc: t('to.validate.desc.ip')\n\t},\n\t'ip-v6': {\n\t\trule: /^(?:(?:(?:[0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b)\\.){3}(\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b)\\.){3}(\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b)\\.){3}(\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))|\\[(?:(?:(?:[0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b)\\.){3}(\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b)\\.){3}(\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b)\\.){3}(\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))\\](?::(?:[0-9]|[1-9][0-9]{1,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]))?$/i,\n\t\tdesc: t('to.validate.desc.ipV6')\n\t},\n\tpassword: {\n\t\trule: /^\\S*(?=\\S{6,})(?=\\S*\\d)(?=\\S*[A-Z])(?=\\S*[a-z])(?=\\S*[!@#$%^&*? ])\\S*$/,\n\t\tdesc: t('to.validate.desc.password'),\n\t\tremark: t('to.validate.remark.password')\n\t},\n\tusername: {\n\t\trule: /^[a-zA-Z0-9_-]{4,16}$/,\n\t\tdesc: t('to.validate.desc.username'),\n\t\tremark: t('to.validate.remark.username')\n\t},\n\t// 用户信息\n\tname: {\n\t\trule: /^([\\u4e00-\\u9fa5·]{2,16}|[a-zA-Z.\\s]{1,20})$/,\n\t\tdesc: t('to.validate.desc.name')\n\t},\n\t'name-cn': {\n\t\trule: /^(?:[\\u4e00-\\u9fa5·]{2,16})$/,\n\t\tdesc: t('to.validate.desc.nameCn')\n\t},\n\t'name-en': {\n\t\trule: /(^[a-zA-Z]{1}[a-zA-Z\\s]{0,20}[a-zA-Z]{1}$)/,\n\t\tdesc: t('to.validate.desc.nameEn')\n\t},\n\temail: {\n\t\trule: /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/,\n\t\tdesc: t('to.validate.desc.email')\n\t},\n\tqq: {\n\t\trule: /^[1-9][0-9]{4,10}$/,\n\t\tdesc: t('to.validate.desc.qq')\n\t},\n\twechat: {\n\t\trule: /^[a-zA-Z][-_a-zA-Z0-9]{5,19}$/,\n\t\tdesc: t('to.validate.desc.wechat')\n\t},\n\tweb: {\n\t\trule: /^(((ht|f)tps?):\\/\\/)?[\\w-]+(\\.[\\w-]+)+([\\w.,@?^=%&:/~+#-]*[\\w@?^=%&/~+#-])?$/,\n\t\tdesc: t('to.validate.desc.web')\n\t},\n\tuscc: {\n\t\trule: /^[0-9A-HJ-NPQRTUWXY]{2}\\d{6}[0-9A-HJ-NPQRTUWXY]{10}$/,\n\t\tdesc: t('to.validate.desc.uscc')\n\t},\n\tbank: {\n\t\trule: /^[1-9]\\d{9,29}$/,\n\t\tdesc: t('to.validate.desc.bank')\n\t},\n\tphone: {\n\t\trule: /^1[3456789]\\d{9}$/,\n\t\tdesc: t('to.validate.desc.phone')\n\t},\n\ttelphone: {\n\t\trule: /^\\d{3}-\\d{8}$|^\\d{4}-\\d{7,8}$/,\n\t\tdesc: t('to.validate.desc.telphone')\n\t},\n\tid: {\n\t\trule: /^[1-9]\\d{5}(?:18|19|20)\\d{2}(?:0[1-9]|10|11|12)(?:0[1-9]|[1-2]\\d|30|31)\\d{3}[\\dXx]$/,\n\t\tdesc: t('to.validate.desc.id')\n\t},\n\tpassport: {\n\t\trule: /(^[EeKkGgDdSsPpHh]\\d{8}$)|(^(([Ee][a-fA-F])|([DdSsPp][Ee])|([Kk][Jj])|([Mm][Aa])|(1[45]))\\d{7}$)/,\n\t\tdesc: t('to.validate.desc.passport')\n\t},\n\tmac: {\n\t\trule: /^((([a-f0-9]{2}:){5})|(([a-f0-9]{2}-){5}))[a-f0-9]{2}$/i,\n\t\tdesc: t('to.validate.desc.mac')\n\t}\n}\n\n// 判断是否在滚动条以内\nfunction isHideByScroller(node) {\n\tconst el = node\n\twhile (node && !hasClass(node, 'to-scroll') && node.nodeName !== 'BODY') {\n\t\tnode = (node as VueInstance & { __vueParentComponent?: any; __vue_app__?: any }).__vueParentComponent || node.parentNode\n\t}\n\tif (node && node.nodeName !== 'BODY') {\n\t\tconst scroller = node\n\t\treturn el.getBoundingClientRect().top > scroller.getBoundingClientRect().top + scroller.offsetHeight || el.getBoundingClientRect().top + el.offsetHeight <= scroller.getBoundingClientRect().top\n\t} else {\n\t\treturn false\n\t}\n}\n\n// 显示提示的方法\nfunction showTip(formEl, desc = '') {\n\t// 元素未被隐藏使用 tooltip\n\tif (formEl.offsetWidth > 0 && !isHideByScroller(formEl)) {\n\t\tconst tooltip = createVNode(\n\t\t\tToTooltip,\n\t\t\t{\n\t\t\t\tevent: '',\n\t\t\t\tshadow: false,\n\t\t\t\tposition: 'auto',\n\t\t\t\talign: 'auto',\n\t\t\t\tcolor: 'danger',\n\t\t\t\twidth: '',\n\t\t\t\tlazy: true,\n\t\t\t\tcloseOnBlur: true,\n\t\t\t\tisScrollClose: true,\n\t\t\t\tdelay: 0,\n\t\t\t\tmode: ''\n\t\t\t},\n\t\t\t{\n\t\t\t\tdefault: () => desc\n\t\t\t}\n\t\t)\n\t\tconst container = document.createElement('div')\n\t\trender(tooltip, container)\n\t\tdocument.body.appendChild(container)\n\t\tnextTick(() => {\n\t\t\tformEl._tip = {\n\t\t\t\tvnode: tooltip,\n\t\t\t\tcontainer\n\t\t\t}\n\t\t\tconst open = () => {\n\t\t\t\ttooltip.component.exposed.open(formEl)\n\t\t\t}\n\t\t\t// const close = () => {\n\t\t\t// \ttooltip.component.exposed.close(formEl)\n\t\t\t// }\n\t\t\t// 参数 click,弹出方式\n\t\t\t// if (binding.arg) {\n\t\t\t// \tformEl.addEventListener('click', open)\n\t\t\t// } else {\n\t\t\t// formEl.addEventListener('mouseenter', open)\n\t\t\t// formEl.addEventListener('mouseleave', close)\n\t\t\topen()\n\t\t\t// }\n\t\t})\n\n\t\t// 当前元素获取焦点\n\t\tif (formEl.getElementsByTagName('input')[0]) {\n\t\t\tformEl.getElementsByTagName('input')[0].select()\n\t\t}\n\t}\n\n\t// 元素被隐藏使用 floattip\n\telse {\n\t\t// ToTip.danger(desc)\n\t\t$tip.warning(desc)\n\t}\n}\n\n/**\n * 表单验证函数\n * 该函数用于验证网页表单中的输入是否符合规范\n * 它可以接受一个DOM元素、Vue实例或元素ID作为参数,并验证指定元素及其子元素中带有.to-validate类的元素\n * @param {string|HTMLElement|Vue} dom - 表单的DOM元素、Vue实例或元素ID\n * @param {boolean} isAll - 是否验证所有输入项,默认为false,只验证第一个不符合规则的项\n * @returns {boolean} - 如果所有验证项都通过验证,则返回true;否则返回false\n */\nconst validate = function (dom: string | HTMLElement | VueInstance, isAll = false): boolean {\n\t// 存储待验证的DOM节点\n\tlet nodes: Element[] = []\n\n\t// 标记验证是否全部通过\n\tlet allPass = true\n\n\t// 标记所有在滚动条之外的节点\n\tconst hiddenErrorNodes = []\n\n\t// 记录第一个校验不通过的节点(按 DOM 顺序),用于滚动定位\n\tlet firstErrorNode: any = null\n\n\t/**\n\t * 标记所有在滚动条之外的节点信息\n\t * 此函数用于检查给定的表单元素是否在滚动条之外,从而决定是将其标记为可见错误还是隐藏错误\n\t * @param {HTMLElement} formEl - 需要检查的表单元素\n\t */\n\tfunction setHiddenErrorNodes(formEl) {\n\t\t// 记录首个错误节点(仅记录第一次)\n\t\tif (!firstErrorNode) firstErrorNode = formEl\n\t\t// 如果表单元素在滚动条之外,则将其添加到隐藏错误节点列表中\n\t\telse {\n\t\t\thiddenErrorNodes.push(formEl)\n\t\t}\n\t}\n\n\t// 根据传入参数类型获取待验证的节点列表\n\tif (typeof dom === 'string' && document.getElementById(dom)) {\n\t\tnodes = Array.from(document.getElementById(dom).querySelectorAll('.to-validate'))\n\t} else if (dom instanceof HTMLElement) {\n\t\tnodes = Array.from(dom.querySelectorAll('.to-validate'))\n\t} else if (typeof dom !== 'string' && dom && dom.$el) {\n\t\tnodes = Array.from(dom.$el.querySelectorAll('.to-validate'))\n\t}\n\n\t// 如果没有找到任何待验证的节点,直接返回true\n\tif (nodes.length === 0) {\n\t\treturn true\n\t}\n\n\t// 遍历所有待验证的节点\n\tfor (let i = 0; i < nodes.length; i++) {\n\t\tconst node = nodes[i]\n\n\t\t// 获取验证规则、是否需要trim空格、描述、是否必填等属性\n\t\tconst rule = node.getAttribute('rule')\n\t\tconst trim = node.getAttribute('trim') === 'true'\n\t\tconst value = (function () {\n\t\t\tif (node.getAttribute('value')) {\n\t\t\t\treturn trim ? node.getAttribute('value').trim() : node.getAttribute('value')\n\t\t\t} else {\n\t\t\t\treturn ''\n\t\t\t}\n\t\t})()\n\t\tconst desc = node.getAttribute('desc')\n\t\tconst required = node.getAttribute('req') === 'true'\n\t\tconst formEl = node.parentNode\n\t\t// 修改这里,将formEl转换为any类型以访问Vue特定属性\n\t\tlet formVue = (formEl as any).__vueParentComponent || (formEl as any).__vue_app__?.$parent\n\n\t\t// 特殊处理ToDatePicker组件的验证 (兼容Vue2/Vue3)\n\t\tconst vueInstance = formVue || (formEl as any).__vue_app__?.$parent\n\t\tif (vueInstance && ['ToDatePicker'].includes(vueInstance.$options?.name)) {\n\t\t\tformVue = vueInstance.$refs.inputBox\n\t\t}\n\n\t\t// 根据isAll参数决定验证流程\n\t\tif (isAll) {\n\t\t\t// 如果值存在且有规则,则应用规则验证\n\t\t\tif (value) {\n\t\t\t\tif (rule) {\n\t\t\t\t\tformVue.exposed.errorType.value = 'rule'\n\t\t\t\t\tlet reg\n\t\t\t\t\tif (regs[rule] && regs[rule].rule) {\n\t\t\t\t\t\treg = regs[rule].rule\n\t\t\t\t\t\tif (!reg.test(value)) {\n\t\t\t\t\t\t\tformVue.exposed.errorTip.value = t('to.validate.tip.common', desc, `${regs[rule].desc}${regs[rule].remark ? ',' + regs[rule].remark : ''}`)\n\t\t\t\t\t\t\tallPass = false\n\t\t\t\t\t\t\tsetHiddenErrorNodes(formEl)\n\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\treg = new RegExp(rule)\n\t\t\t\t\t\tif (!reg.test(value)) {\n\t\t\t\t\t\t\tformVue.errorTip = t('to.validate.tip.customRemark', desc, formVue.validateTip ? `,${formVue.validateTip}` : '')\n\t\t\t\t\t\t\tallPass = false\n\t\t\t\t\t\t\tsetHiddenErrorNodes(formEl)\n\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t} else if (required) {\n\t\t\t\tformVue.exposed.errorType.value = 'required'\n\t\t\t\tformVue.exposed.errorTip.value = t('to.validate.tip.requiredRemark', desc)\n\t\t\t\tallPass = false\n\t\t\t\tsetHiddenErrorNodes(formEl)\n\t\t\t\tcontinue\n\t\t\t} else {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t} else {\n\t\t\t// 如果值存在且有规则,则应用规则验证\n\t\t\tif (value) {\n\t\t\t\tif (rule) {\n\t\t\t\t\tlet reg\n\t\t\t\t\tif (regs[rule] && regs[rule].rule) {\n\t\t\t\t\t\treg = regs[rule].rule\n\t\t\t\t\t\tif (!reg.test(value)) {\n\t\t\t\t\t\t\tshowTip(formEl, t('to.validate.tip.common', desc, `${regs[rule].desc}${regs[rule].remark ? ',' + regs[rule].remark : ''}`))\n\t\t\t\t\t\t\treturn false\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\treg = new RegExp(rule)\n\t\t\t\t\t\tif (!reg.test(value)) {\n\t\t\t\t\t\t\tshowTip(formEl, t('to.validate.tip.customRemark', desc, formVue.validateTip ? `,${formVue.validateTip}` : ''))\n\t\t\t\t\t\t\treturn false\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t} else if (required) {\n\t\t\t\tshowTip(formEl, t('to.validate.tip.requiredRemark', desc))\n\t\t\t\treturn false\n\t\t\t} else {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\t}\n\n\t// 根据isAll参数返回相应的结果\n\tif (isAll) {\n\t\t// 校验不通过时,自动滚动到第一个不通过的表单项(若其位于 to-scroll 内)\n\t\tif (!allPass && firstErrorNode) {\n\t\t\t// 用纯 DOM 向上查找最近的 .to-scroll 容器,兼容 Vue 3\n\t\t\tlet scrollEl: any = firstErrorNode\n\t\t\twhile (scrollEl && scrollEl.nodeName !== 'BODY' && !(scrollEl.classList && scrollEl.classList.contains('to-scroll'))) {\n\t\t\t\tscrollEl = scrollEl.parentNode\n\t\t\t}\n\t\t\tif (scrollEl && scrollEl.nodeName !== 'BODY') {\n\t\t\t\t// 真正可滚动的元素是 .to-scroll-content,回退到 .to-scroll 自身\n\t\t\t\tconst inner = scrollEl.querySelector('.to-scroll-content') || scrollEl\n\t\t\t\tconst targetRect = (firstErrorNode as HTMLElement).getBoundingClientRect()\n\t\t\t\tconst scrollRect = (inner as HTMLElement).getBoundingClientRect()\n\t\t\t\t;(inner as HTMLElement).scrollTo({\n\t\t\t\t\ttop: (inner as HTMLElement).scrollTop + targetRect.top - scrollRect.top - 10,\n\t\t\t\t\tbehavior: 'smooth'\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t\treturn allPass\n\t} else {\n\t\treturn true\n\t}\n}\n\nconst validateAll = function (dom) {\n\treturn validate(dom, true)\n}\nexport { validate, validateAll }\n"],"names":["t","hasClass","createVNode","ToTooltip","render","nextTick","$tip"],"mappings":";;;;;;;;AAeA,MAAM,IAAa,GAAA;AAAA;AAAA,EAElB,EAAI,EAAA;AAAA,IACH,IAAM,EAAA,aAAA;AAAA,IACN,IAAA,EAAMA,QAAE,qBAAqB,CAAA;AAAA,GAC9B;AAAA,EACA,UAAY,EAAA;AAAA,IACX,IAAM,EAAA,UAAA;AAAA,IACN,IAAA,EAAMA,QAAE,0BAA0B,CAAA;AAAA,GACnC;AAAA,EACA,UAAY,EAAA;AAAA,IACX,IAAM,EAAA,UAAA;AAAA,IACN,IAAA,EAAMA,QAAE,0BAA0B,CAAA;AAAA,GACnC;AAAA,EACA,SAAW,EAAA;AAAA,IACV,IAAM,EAAA,cAAA;AAAA,IACN,IAAA,EAAMA,QAAE,yBAAyB,CAAA;AAAA,GAClC;AAAA,EACA,EAAI,EAAA;AAAA,IACH,IAAM,EAAA,gVAAA;AAAA,IACN,IAAA,EAAMA,QAAE,qBAAqB,CAAA;AAAA,GAC9B;AAAA,EACA,MAAQ,EAAA;AAAA,IACP,IAAM,EAAA,mCAAA;AAAA,IACN,IAAA,EAAMA,QAAE,yBAAyB,CAAA;AAAA,GAClC;AAAA,EACA,OAAS,EAAA;AAAA,IACR,IAAM,EAAA,cAAA;AAAA,IACN,IAAA,EAAMA,QAAE,0BAA0B,CAAA;AAAA,GACnC;AAAA,EACA,WAAa,EAAA;AAAA,IACZ,IAAM,EAAA,eAAA;AAAA,IACN,IAAA,EAAMA,QAAE,2BAA2B,CAAA;AAAA,GACpC;AAAA,EACA,WAAa,EAAA;AAAA,IACZ,IAAM,EAAA,aAAA;AAAA,IACN,IAAA,EAAMA,QAAE,2BAA2B,CAAA;AAAA,GACpC;AAAA,EACA,MAAQ,EAAA;AAAA,IACP,IAAM,EAAA,OAAA;AAAA,IACN,IAAA,EAAMA,QAAE,yBAAyB,CAAA;AAAA,GAClC;AAAA,EACA,IAAM,EAAA;AAAA,IACL,IAAM,EAAA,6CAAA;AAAA,IACN,IAAA,EAAMA,QAAE,uBAAuB,CAAA;AAAA,GAChC;AAAA,EACA,IAAM,EAAA;AAAA,IACL,IAAM,EAAA,qCAAA;AAAA,IACN,IAAA,EAAMA,QAAE,uBAAuB,CAAA;AAAA,GAChC;AAAA,EACA,SAAW,EAAA;AAAA,IACV,IAAM,EAAA,qCAAA;AAAA,IACN,IAAA,EAAMA,QAAE,yBAAyB,CAAA;AAAA,GAClC;AAAA;AAAA,EAEA,KAAO,EAAA;AAAA,IACN,IAAM,EAAA,8BAAA;AAAA,IACN,IAAA,EAAMA,QAAE,wBAAwB,CAAA;AAAA,GACjC;AAAA,EACA,EAAI,EAAA;AAAA,IACH,IAAM,EAAA,oLAAA;AAAA,IACN,IAAA,EAAMA,QAAE,qBAAqB,CAAA;AAAA,GAC9B;AAAA,EACA,OAAS,EAAA;AAAA,IACR,IAAM,EAAA,wzDAAA;AAAA,IACN,IAAA,EAAMA,QAAE,uBAAuB,CAAA;AAAA,GAChC;AAAA,EACA,QAAU,EAAA;AAAA,IACT,IAAM,EAAA,wEAAA;AAAA,IACN,IAAA,EAAMA,QAAE,2BAA2B,CAAA;AAAA,IACnC,MAAA,EAAQA,QAAE,6BAA6B,CAAA;AAAA,GACxC;AAAA,EACA,QAAU,EAAA;AAAA,IACT,IAAM,EAAA,uBAAA;AAAA,IACN,IAAA,EAAMA,QAAE,2BAA2B,CAAA;AAAA,IACnC,MAAA,EAAQA,QAAE,6BAA6B,CAAA;AAAA,GACxC;AAAA;AAAA,EAEA,IAAM,EAAA;AAAA,IACL,IAAM,EAAA,8CAAA;AAAA,IACN,IAAA,EAAMA,QAAE,uBAAuB,CAAA;AAAA,GAChC;AAAA,EACA,SAAW,EAAA;AAAA,IACV,IAAM,EAAA,8BAAA;AAAA,IACN,IAAA,EAAMA,QAAE,yBAAyB,CAAA;AAAA,GAClC;AAAA,EACA,SAAW,EAAA;AAAA,IACV,IAAM,EAAA,4CAAA;AAAA,IACN,IAAA,EAAMA,QAAE,yBAAyB,CAAA;AAAA,GAClC;AAAA,EACA,KAAO,EAAA;AAAA,IACN,IAAM,EAAA,uJAAA;AAAA,IACN,IAAA,EAAMA,QAAE,wBAAwB,CAAA;AAAA,GACjC;AAAA,EACA,EAAI,EAAA;AAAA,IACH,IAAM,EAAA,oBAAA;AAAA,IACN,IAAA,EAAMA,QAAE,qBAAqB,CAAA;AAAA,GAC9B;AAAA,EACA,MAAQ,EAAA;AAAA,IACP,IAAM,EAAA,+BAAA;AAAA,IACN,IAAA,EAAMA,QAAE,yBAAyB,CAAA;AAAA,GAClC;AAAA,EACA,GAAK,EAAA;AAAA,IACJ,IAAM,EAAA,8EAAA;AAAA,IACN,IAAA,EAAMA,QAAE,sBAAsB,CAAA;AAAA,GAC/B;AAAA,EACA,IAAM,EAAA;AAAA,IACL,IAAM,EAAA,sDAAA;AAAA,IACN,IAAA,EAAMA,QAAE,uBAAuB,CAAA;AAAA,GAChC;AAAA,EACA,IAAM,EAAA;AAAA,IACL,IAAM,EAAA,iBAAA;AAAA,IACN,IAAA,EAAMA,QAAE,uBAAuB,CAAA;AAAA,GAChC;AAAA,EACA,KAAO,EAAA;AAAA,IACN,IAAM,EAAA,mBAAA;AAAA,IACN,IAAA,EAAMA,QAAE,wBAAwB,CAAA;AAAA,GACjC;AAAA,EACA,QAAU,EAAA;AAAA,IACT,IAAM,EAAA,+BAAA;AAAA,IACN,IAAA,EAAMA,QAAE,2BAA2B,CAAA;AAAA,GACpC;AAAA,EACA,EAAI,EAAA;AAAA,IACH,IAAM,EAAA,qFAAA;AAAA,IACN,IAAA,EAAMA,QAAE,qBAAqB,CAAA;AAAA,GAC9B;AAAA,EACA,QAAU,EAAA;AAAA,IACT,IAAM,EAAA,kGAAA;AAAA,IACN,IAAA,EAAMA,QAAE,2BAA2B,CAAA;AAAA,GACpC;AAAA,EACA,GAAK,EAAA;AAAA,IACJ,IAAM,EAAA,yDAAA;AAAA,IACN,IAAA,EAAMA,QAAE,sBAAsB,CAAA;AAAA,GAC/B;AACD,CAAA,CAAA;AAGA,SAAS,iBAAiB,IAAM,EAAA;AAC/B,EAAA,MAAM,EAAK,GAAA,IAAA,CAAA;AACX,EAAO,OAAA,IAAA,IAAQ,CAACC,YAAS,CAAA,IAAA,EAAM,WAAW,CAAK,IAAA,IAAA,CAAK,aAAa,MAAQ,EAAA;AACxE,IAAQ,IAAA,GAAA,IAAA,CAAyE,wBAAwB,IAAK,CAAA,UAAA,CAAA;AAAA,GAC/G;AACA,EAAI,IAAA,IAAA,IAAQ,IAAK,CAAA,QAAA,KAAa,MAAQ,EAAA;AACrC,IAAA,MAAM,QAAW,GAAA,IAAA,CAAA;AACjB,IAAA,OAAO,GAAG,qBAAsB,EAAA,CAAE,MAAM,QAAS,CAAA,qBAAA,GAAwB,GAAM,GAAA,QAAA,CAAS,YAAgB,IAAA,EAAA,CAAG,uBAAwB,CAAA,GAAA,GAAM,GAAG,YAAgB,IAAA,QAAA,CAAS,uBAAwB,CAAA,GAAA,CAAA;AAAA,GACvL,MAAA;AACN,IAAO,OAAA,KAAA,CAAA;AAAA,GACR;AACD,CAAA;AAGA,SAAS,OAAA,CAAQ,MAAQ,EAAA,IAAA,GAAO,EAAI,EAAA;AAEnC,EAAA,IAAI,OAAO,WAAc,GAAA,CAAA,IAAK,CAAC,gBAAA,CAAiB,MAAM,CAAG,EAAA;AACxD,IAAA,MAAM,OAAU,GAAAC,eAAA;AAAA,MACfC,iBAAA;AAAA,MACA;AAAA,QACC,KAAO,EAAA,EAAA;AAAA,QACP,MAAQ,EAAA,KAAA;AAAA,QACR,QAAU,EAAA,MAAA;AAAA,QACV,KAAO,EAAA,MAAA;AAAA,QACP,KAAO,EAAA,QAAA;AAAA,QACP,KAAO,EAAA,EAAA;AAAA,QACP,IAAM,EAAA,IAAA;AAAA,QACN,WAAa,EAAA,IAAA;AAAA,QACb,aAAe,EAAA,IAAA;AAAA,QACf,KAAO,EAAA,CAAA;AAAA,QACP,IAAM,EAAA,EAAA;AAAA,OACP;AAAA,MACA;AAAA,QACC,SAAS,MAAM,IAAA;AAAA,OAChB;AAAA,KACD,CAAA;AACA,IAAM,MAAA,SAAA,GAAY,QAAS,CAAA,aAAA,CAAc,KAAK,CAAA,CAAA;AAC9C,IAAAC,UAAA,CAAO,SAAS,SAAS,CAAA,CAAA;AACzB,IAAS,QAAA,CAAA,IAAA,CAAK,YAAY,SAAS,CAAA,CAAA;AACnC,IAAAC,YAAA,CAAS,MAAM;AACd,MAAA,MAAA,CAAO,IAAO,GAAA;AAAA,QACb,KAAO,EAAA,OAAA;AAAA,QACP,SAAA;AAAA,OACD,CAAA;AACA,MAAA,MAAM,OAAO,MAAM;AAClB,QAAQ,OAAA,CAAA,SAAA,CAAU,OAAQ,CAAA,IAAA,CAAK,MAAM,CAAA,CAAA;AAAA,OACtC,CAAA;AAUA,MAAK,IAAA,EAAA,CAAA;AAAA,KAEL,CAAA,CAAA;AAGD,IAAA,IAAI,MAAO,CAAA,oBAAA,CAAqB,OAAO,CAAA,CAAE,CAAC,CAAG,EAAA;AAC5C,MAAA,MAAA,CAAO,oBAAqB,CAAA,OAAO,CAAE,CAAA,CAAC,EAAE,MAAO,EAAA,CAAA;AAAA,KAChD;AAAA,GAII,MAAA;AAEJ,IAAAC,YAAA,CAAK,QAAQ,IAAI,CAAA,CAAA;AAAA,GAClB;AACD,CAAA;AAUA,MAAM,QAAW,GAAA,SAAU,GAAyC,EAAA,KAAA,GAAQ,KAAgB,EAAA;AAzO5F,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA;AA2OC,EAAA,IAAI,QAAmB,EAAC,CAAA;AAGxB,EAAA,IAAI,OAAU,GAAA,IAAA,CAAA;AAMd,EAAA,IAAI,cAAsB,GAAA,IAAA,CAAA;AAO1B,EAAA,SAAS,oBAAoB,MAAQ,EAAA;AAEpC,IAAA,IAAI,CAAC,cAAA;AAAgB,MAAiB,cAAA,GAAA,MAAA,CAItC;AAAA,GACD;AAGA,EAAA,IAAI,OAAO,GAAQ,KAAA,QAAA,IAAY,QAAS,CAAA,cAAA,CAAe,GAAG,CAAG,EAAA;AAC5D,IAAQ,KAAA,GAAA,KAAA,CAAM,KAAK,QAAS,CAAA,cAAA,CAAe,GAAG,CAAE,CAAA,gBAAA,CAAiB,cAAc,CAAC,CAAA,CAAA;AAAA,GACjF,MAAA,IAAW,eAAe,WAAa,EAAA;AACtC,IAAA,KAAA,GAAQ,KAAM,CAAA,IAAA,CAAK,GAAI,CAAA,gBAAA,CAAiB,cAAc,CAAC,CAAA,CAAA;AAAA,aAC7C,OAAO,GAAA,KAAQ,QAAY,IAAA,GAAA,IAAO,IAAI,GAAK,EAAA;AACrD,IAAA,KAAA,GAAQ,MAAM,IAAK,CAAA,GAAA,CAAI,GAAI,CAAA,gBAAA,CAAiB,cAAc,CAAC,CAAA,CAAA;AAAA,GAC5D;AAGA,EAAI,IAAA,KAAA,CAAM,WAAW,CAAG,EAAA;AACvB,IAAO,OAAA,IAAA,CAAA;AAAA,GACR;AAGA,EAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,KAAA,CAAM,QAAQ,CAAK,EAAA,EAAA;AACtC,IAAM,MAAA,IAAA,GAAO,MAAM,CAAC,CAAA,CAAA;AAGpB,IAAM,MAAA,IAAA,GAAO,IAAK,CAAA,YAAA,CAAa,MAAM,CAAA,CAAA;AACrC,IAAA,MAAM,IAAO,GAAA,IAAA,CAAK,YAAa,CAAA,MAAM,CAAM,KAAA,MAAA,CAAA;AAC3C,IAAA,MAAM,QAAS,WAAY;AAC1B,MAAI,IAAA,IAAA,CAAK,YAAa,CAAA,OAAO,CAAG,EAAA;AAC/B,QAAO,OAAA,IAAA,GAAO,KAAK,YAAa,CAAA,OAAO,EAAE,IAAK,EAAA,GAAI,IAAK,CAAA,YAAA,CAAa,OAAO,CAAA,CAAA;AAAA,OACrE,MAAA;AACN,QAAO,OAAA,EAAA,CAAA;AAAA,OACR;AAAA,KACE,EAAA,CAAA;AACH,IAAM,MAAA,IAAA,GAAO,IAAK,CAAA,YAAA,CAAa,MAAM,CAAA,CAAA;AACrC,IAAA,MAAM,QAAW,GAAA,IAAA,CAAK,YAAa,CAAA,KAAK,CAAM,KAAA,MAAA,CAAA;AAC9C,IAAA,MAAM,SAAS,IAAK,CAAA,UAAA,CAAA;AAEpB,IAAA,IAAI,OAAW,GAAA,MAAA,CAAe,oBAAyB,KAAA,CAAA,EAAA,GAAA,MAAA,CAAe,gBAAf,IAA4B,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAA,CAAA,CAAA;AAGnF,IAAA,MAAM,WAAc,GAAA,OAAA,KAAA,CAAY,EAAe,GAAA,MAAA,CAAA,WAAA,KAAf,IAA4B,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAA,CAAA,CAAA;AAC5D,IAAI,IAAA,WAAA,IAAe,CAAC,cAAc,CAAA,CAAE,UAAS,EAAY,GAAA,WAAA,CAAA,QAAA,KAAZ,IAAsB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,CAAG,EAAA;AACzE,MAAA,OAAA,GAAU,YAAY,KAAM,CAAA,QAAA,CAAA;AAAA,KAC7B;AAGA,IAAA,IAAI,KAAO,EAAA;AAEV,MAAA,IAAI,KAAO,EAAA;AACV,QAAA,IAAI,IAAM,EAAA;AACT,UAAQ,OAAA,CAAA,OAAA,CAAQ,UAAU,KAAQ,GAAA,MAAA,CAAA;AAClC,UAAI,IAAA,GAAA,CAAA;AACJ,UAAA,IAAI,KAAK,IAAI,CAAA,IAAK,IAAK,CAAA,IAAI,EAAE,IAAM,EAAA;AAClC,YAAM,GAAA,GAAA,IAAA,CAAK,IAAI,CAAE,CAAA,IAAA,CAAA;AACjB,YAAA,IAAI,CAAC,GAAA,CAAI,IAAK,CAAA,KAAK,CAAG,EAAA;AACrB,cAAQ,OAAA,CAAA,OAAA,CAAQ,SAAS,KAAQ,GAAAN,OAAA,CAAE,0BAA0B,IAAM,EAAA,CAAA,EAAG,KAAK,IAAI,CAAA,CAAE,OAAO,IAAK,CAAA,IAAI,EAAE,MAAS,GAAA,QAAA,GAAM,KAAK,IAAI,CAAA,CAAE,SAAS,EAAI,CAAA,CAAA,CAAA,CAAA;AAC1I,cAAU,OAAA,GAAA,KAAA,CAAA;AACV,cAAA,mBAAA,CAAoB,MAAM,CAAA,CAAA;AAC1B,cAAA,SAAA;AAAA,aACM,MAAA;AACN,cAAA,SAAA;AAAA,aACD;AAAA,WACM,MAAA;AACN,YAAM,GAAA,GAAA,IAAI,OAAO,IAAI,CAAA,CAAA;AACrB,YAAA,IAAI,CAAC,GAAA,CAAI,IAAK,CAAA,KAAK,CAAG,EAAA;AACrB,cAAQ,OAAA,CAAA,QAAA,GAAWA,QAAE,8BAAgC,EAAA,IAAA,EAAM,QAAQ,WAAc,GAAA,CAAA,MAAA,EAAI,OAAQ,CAAA,WAAA,CAAA,CAAA,GAAgB,EAAE,CAAA,CAAA;AAC/G,cAAU,OAAA,GAAA,KAAA,CAAA;AACV,cAAA,mBAAA,CAAoB,MAAM,CAAA,CAAA;AAC1B,cAAA,SAAA;AAAA,aACM,MAAA;AACN,cAAA,SAAA;AAAA,aACD;AAAA,WACD;AAAA,SACM,MAAA;AACN,UAAA,SAAA;AAAA,SACD;AAAA,iBACU,QAAU,EAAA;AACpB,QAAQ,OAAA,CAAA,OAAA,CAAQ,UAAU,KAAQ,GAAA,UAAA,CAAA;AAClC,QAAA,OAAA,CAAQ,OAAQ,CAAA,QAAA,CAAS,KAAQ,GAAAA,OAAA,CAAE,kCAAkC,IAAI,CAAA,CAAA;AACzE,QAAU,OAAA,GAAA,KAAA,CAAA;AACV,QAAA,mBAAA,CAAoB,MAAM,CAAA,CAAA;AAC1B,QAAA,SAAA;AAAA,OACM,MAAA;AACN,QAAA,SAAA;AAAA,OACD;AAAA,KACM,MAAA;AAEN,MAAA,IAAI,KAAO,EAAA;AACV,QAAA,IAAI,IAAM,EAAA;AACT,UAAI,IAAA,GAAA,CAAA;AACJ,UAAA,IAAI,KAAK,IAAI,CAAA,IAAK,IAAK,CAAA,IAAI,EAAE,IAAM,EAAA;AAClC,YAAM,GAAA,GAAA,IAAA,CAAK,IAAI,CAAE,CAAA,IAAA,CAAA;AACjB,YAAA,IAAI,CAAC,GAAA,CAAI,IAAK,CAAA,KAAK,CAAG,EAAA;AACrB,cAAA,OAAA,CAAQ,QAAQA,OAAE,CAAA,wBAAA,EAA0B,MAAM,CAAG,EAAA,IAAA,CAAK,IAAI,CAAE,CAAA,IAAA,CAAA,EAAO,KAAK,IAAI,CAAA,CAAE,SAAS,QAAM,GAAA,IAAA,CAAK,IAAI,CAAE,CAAA,MAAA,GAAS,IAAI,CAAC,CAAA,CAAA;AAC1H,cAAO,OAAA,KAAA,CAAA;AAAA,aACD,MAAA;AACN,cAAA,SAAA;AAAA,aACD;AAAA,WACM,MAAA;AACN,YAAM,GAAA,GAAA,IAAI,OAAO,IAAI,CAAA,CAAA;AACrB,YAAA,IAAI,CAAC,GAAA,CAAI,IAAK,CAAA,KAAK,CAAG,EAAA;AACrB,cAAQ,OAAA,CAAA,MAAA,EAAQA,OAAE,CAAA,8BAAA,EAAgC,IAAM,EAAA,OAAA,CAAQ,cAAc,CAAI,MAAA,EAAA,OAAA,CAAQ,WAAgB,CAAA,CAAA,GAAA,EAAE,CAAC,CAAA,CAAA;AAC7G,cAAO,OAAA,KAAA,CAAA;AAAA,aACD,MAAA;AACN,cAAA,SAAA;AAAA,aACD;AAAA,WACD;AAAA,SACM,MAAA;AACN,UAAA,SAAA;AAAA,SACD;AAAA,iBACU,QAAU,EAAA;AACpB,QAAA,OAAA,CAAQ,MAAQ,EAAAA,OAAA,CAAE,gCAAkC,EAAA,IAAI,CAAC,CAAA,CAAA;AACzD,QAAO,OAAA,KAAA,CAAA;AAAA,OACD,MAAA;AACN,QAAA,SAAA;AAAA,OACD;AAAA,KACD;AAAA,GACD;AAGA,EAAA,IAAI,KAAO,EAAA;AAEV,IAAI,IAAA,CAAC,WAAW,cAAgB,EAAA;AAE/B,MAAA,IAAI,QAAgB,GAAA,cAAA,CAAA;AACpB,MAAO,OAAA,QAAA,IAAY,QAAS,CAAA,QAAA,KAAa,MAAU,IAAA,EAAE,QAAS,CAAA,SAAA,IAAa,QAAS,CAAA,SAAA,CAAU,QAAS,CAAA,WAAW,CAAI,CAAA,EAAA;AACrH,QAAA,QAAA,GAAW,QAAS,CAAA,UAAA,CAAA;AAAA,OACrB;AACA,MAAI,IAAA,QAAA,IAAY,QAAS,CAAA,QAAA,KAAa,MAAQ,EAAA;AAE7C,QAAA,MAAM,KAAQ,GAAA,QAAA,CAAS,aAAc,CAAA,oBAAoB,CAAK,IAAA,QAAA,CAAA;AAC9D,QAAM,MAAA,UAAA,GAAc,eAA+B,qBAAsB,EAAA,CAAA;AACzE,QAAM,MAAA,UAAA,GAAc,MAAsB,qBAAsB,EAAA,CAAA;AAC/D,QAAC,MAAsB,QAAS,CAAA;AAAA,UAChC,KAAM,KAAsB,CAAA,SAAA,GAAY,UAAW,CAAA,GAAA,GAAM,WAAW,GAAM,GAAA,EAAA;AAAA,UAC1E,QAAU,EAAA,QAAA;AAAA,SACV,CAAA,CAAA;AAAA,OACF;AAAA,KACD;AACA,IAAO,OAAA,OAAA,CAAA;AAAA,GACD,MAAA;AACN,IAAO,OAAA,IAAA,CAAA;AAAA,GACR;AACD,EAAA;AAEM,MAAA,WAAA,GAAc,SAAU,GAAK,EAAA;AAClC,EAAO,OAAA,QAAA,CAAS,KAAK,IAAI,CAAA,CAAA;AAC1B;;;;;"}
|
|
1
|
+
{"version":3,"file":"validate.js","sources":["../../../../packages/utils/validate.ts"],"sourcesContent":["import { createVNode, render, nextTick, type ComponentPublicInstance } from 'vue'\ntype VueInstance = ComponentPublicInstance\nimport { ToTooltip, $tip } from '@touchvue/components'\nimport { hasClass } from './dom'\nimport { t } from '@touchvue/locale'\n\ninterface ValidationRule {\n\trule: RegExp\n\tdesc: string\n\tremark?: string\n}\n\ninterface Regs {\n\t[key: string]: ValidationRule\n}\nconst regs: Regs = {\n\t// 基础判断\n\ten: {\n\t\trule: /^[A-Za-z]+$/,\n\t\tdesc: t('to.validate.desc.en')\n\t},\n\t'en-lower': {\n\t\trule: /^[a-z]+$/,\n\t\tdesc: t('to.validate.desc.enLower')\n\t},\n\t'en-upper': {\n\t\trule: /^[A-Z]+$/,\n\t\tdesc: t('to.validate.desc.enUpper')\n\t},\n\t'en-none': {\n\t\trule: /^[^A-Za-z]*$/,\n\t\tdesc: t('to.validate.desc.enNone')\n\t},\n\tcn: {\n\t\trule: /^(?:[\\u3400-\\u4DB5\\u4E00-\\u9FEA\\uFA0E\\uFA0F\\uFA11\\uFA13\\uFA14\\uFA1F\\uFA21\\uFA23\\uFA24\\uFA27-\\uFA29]|[\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879][\\uDC00-\\uDFFF]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0])+$/,\n\t\tdesc: t('to.validate.desc.cn')\n\t},\n\tnumber: {\n\t\trule: /^[-+]?([1-9][0-9]*|0)(\\.[0-9]+)?$/,\n\t\tdesc: t('to.validate.desc.number')\n\t},\n\tinteger: {\n\t\trule: /^-?[0-9]\\d*$/,\n\t\tdesc: t('to.validate.desc.integer')\n\t},\n\t'integer-p': {\n\t\trule: /^\\+?[1-9]\\d*$/,\n\t\tdesc: t('to.validate.desc.integerP')\n\t},\n\t'integer-n': {\n\t\trule: /^-[1-9]\\d*$/,\n\t\tdesc: t('to.validate.desc.integerN')\n\t},\n\tnature: {\n\t\trule: /^\\d+$/,\n\t\tdesc: t('to.validate.desc.nature')\n\t},\n\tdate: {\n\t\trule: /^\\d{4}(-)(1[0-2]|0?\\d)\\1([0-2]\\d|\\d|30|31)$/,\n\t\tdesc: t('to.validate.desc.date')\n\t},\n\ttime: {\n\t\trule: /^(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$/,\n\t\tdesc: t('to.validate.desc.time')\n\t},\n\t'time-12': {\n\t\trule: /^(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$/,\n\t\tdesc: t('to.validate.desc.time12')\n\t},\n\t// 基本数据格式\n\tmoney: {\n\t\trule: /^-?\\d+(,\\d{3})*(\\.\\d{1,2})?$/,\n\t\tdesc: t('to.validate.desc.money')\n\t},\n\tip: {\n\t\trule: /^((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5]).){3}(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])(?::(?:[0-9]|[1-9][0-9]{1,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]))?$/,\n\t\tdesc: t('to.validate.desc.ip')\n\t},\n\t'ip-v6': {\n\t\trule: /^(?:(?:(?:[0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b)\\.){3}(\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b)\\.){3}(\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b)\\.){3}(\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))|\\[(?:(?:(?:[0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b)\\.){3}(\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b)\\.){3}(\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b)\\.){3}(\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))\\](?::(?:[0-9]|[1-9][0-9]{1,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]))?$/i,\n\t\tdesc: t('to.validate.desc.ipV6')\n\t},\n\tpassword: {\n\t\trule: /^\\S*(?=\\S{6,})(?=\\S*\\d)(?=\\S*[A-Z])(?=\\S*[a-z])(?=\\S*[!@#$%^&*? ])\\S*$/,\n\t\tdesc: t('to.validate.desc.password'),\n\t\tremark: t('to.validate.remark.password')\n\t},\n\tusername: {\n\t\trule: /^[a-zA-Z0-9_-]{4,16}$/,\n\t\tdesc: t('to.validate.desc.username'),\n\t\tremark: t('to.validate.remark.username')\n\t},\n\t// 用户信息\n\tname: {\n\t\trule: /^([\\u4e00-\\u9fa5·]{2,16}|[a-zA-Z.\\s]{1,20})$/,\n\t\tdesc: t('to.validate.desc.name')\n\t},\n\t'name-cn': {\n\t\trule: /^(?:[\\u4e00-\\u9fa5·]{2,16})$/,\n\t\tdesc: t('to.validate.desc.nameCn')\n\t},\n\t'name-en': {\n\t\trule: /(^[a-zA-Z]{1}[a-zA-Z\\s]{0,20}[a-zA-Z]{1}$)/,\n\t\tdesc: t('to.validate.desc.nameEn')\n\t},\n\temail: {\n\t\trule: /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/,\n\t\tdesc: t('to.validate.desc.email')\n\t},\n\tqq: {\n\t\trule: /^[1-9][0-9]{4,10}$/,\n\t\tdesc: t('to.validate.desc.qq')\n\t},\n\twechat: {\n\t\trule: /^[a-zA-Z][-_a-zA-Z0-9]{5,19}$/,\n\t\tdesc: t('to.validate.desc.wechat')\n\t},\n\tweb: {\n\t\trule: /^(((ht|f)tps?):\\/\\/)?[\\w-]+(\\.[\\w-]+)+([\\w.,@?^=%&:/~+#-]*[\\w@?^=%&/~+#-])?$/,\n\t\tdesc: t('to.validate.desc.web')\n\t},\n\tuscc: {\n\t\trule: /^[0-9A-HJ-NPQRTUWXY]{2}\\d{6}[0-9A-HJ-NPQRTUWXY]{10}$/,\n\t\tdesc: t('to.validate.desc.uscc')\n\t},\n\tbank: {\n\t\trule: /^[1-9]\\d{9,29}$/,\n\t\tdesc: t('to.validate.desc.bank')\n\t},\n\tphone: {\n\t\trule: /^1[3456789]\\d{9}$/,\n\t\tdesc: t('to.validate.desc.phone')\n\t},\n\ttelphone: {\n\t\trule: /^\\d{3}-\\d{8}$|^\\d{4}-\\d{7,8}$/,\n\t\tdesc: t('to.validate.desc.telphone')\n\t},\n\tid: {\n\t\trule: /^[1-9]\\d{5}(?:18|19|20)\\d{2}(?:0[1-9]|10|11|12)(?:0[1-9]|[1-2]\\d|30|31)\\d{3}[\\dXx]$/,\n\t\tdesc: t('to.validate.desc.id')\n\t},\n\tpassport: {\n\t\trule: /(^[EeKkGgDdSsPpHh]\\d{8}$)|(^(([Ee][a-fA-F])|([DdSsPp][Ee])|([Kk][Jj])|([Mm][Aa])|(1[45]))\\d{7}$)/,\n\t\tdesc: t('to.validate.desc.passport')\n\t},\n\tmac: {\n\t\trule: /^((([a-f0-9]{2}:){5})|(([a-f0-9]{2}-){5}))[a-f0-9]{2}$/i,\n\t\tdesc: t('to.validate.desc.mac')\n\t}\n}\n\n// 判断是否在滚动条以内\nfunction isHideByScroller(node) {\n\tconst el = node\n\twhile (node && !hasClass(node, 'to-scroll') && node.nodeName !== 'BODY') {\n\t\tnode = (node as VueInstance & { __vueParentComponent?: any; __vue_app__?: any }).__vueParentComponent || node.parentNode\n\t}\n\tif (node && node.nodeName !== 'BODY') {\n\t\tconst scroller = node\n\t\treturn el.getBoundingClientRect().top > scroller.getBoundingClientRect().top + scroller.offsetHeight || el.getBoundingClientRect().top + el.offsetHeight <= scroller.getBoundingClientRect().top\n\t} else {\n\t\treturn false\n\t}\n}\n\n// 显示提示的方法\nfunction showTip(formEl, desc = '') {\n\t// 元素未被隐藏使用 tooltip\n\tif (formEl.offsetWidth > 0 && !isHideByScroller(formEl)) {\n\t\tconst tooltip = createVNode(\n\t\t\tToTooltip,\n\t\t\t{\n\t\t\t\tevent: '',\n\t\t\t\tshadow: false,\n\t\t\t\tposition: 'auto',\n\t\t\t\talign: 'auto',\n\t\t\t\tcolor: 'danger',\n\t\t\t\twidth: '',\n\t\t\t\tlazy: true,\n\t\t\t\tcloseOnBlur: true,\n\t\t\t\tisScrollClose: true,\n\t\t\t\tdelay: 0,\n\t\t\t\tmode: ''\n\t\t\t},\n\t\t\t{\n\t\t\t\tdefault: () => desc\n\t\t\t}\n\t\t)\n\t\tconst container = document.createElement('div')\n\t\trender(tooltip, container)\n\t\tdocument.body.appendChild(container)\n\n\t\t// 首次聚焦会触发输入框更新,需要在挂载校验提示前完成\n\t\tif (formEl.getElementsByTagName('input')[0]) {\n\t\t\tformEl.getElementsByTagName('input')[0].select()\n\t\t}\n\n\t\tnextTick(() => {\n\t\t\tformEl._tip = {\n\t\t\t\tvnode: tooltip,\n\t\t\t\tcontainer\n\t\t\t}\n\t\t\tconst open = () => {\n\t\t\t\ttooltip.component.exposed.open(formEl)\n\t\t\t}\n\t\t\t// const close = () => {\n\t\t\t// \ttooltip.component.exposed.close(formEl)\n\t\t\t// }\n\t\t\t// 参数 click,弹出方式\n\t\t\t// if (binding.arg) {\n\t\t\t// \tformEl.addEventListener('click', open)\n\t\t\t// } else {\n\t\t\t// formEl.addEventListener('mouseenter', open)\n\t\t\t// formEl.addEventListener('mouseleave', close)\n\t\t\topen()\n\t\t\t// }\n\t\t})\n\t}\n\n\t// 元素被隐藏使用 floattip\n\telse {\n\t\t// ToTip.danger(desc)\n\t\t$tip.warning(desc)\n\t}\n}\n\n/**\n * 表单验证函数\n * 该函数用于验证网页表单中的输入是否符合规范\n * 它可以接受一个DOM元素、Vue实例或元素ID作为参数,并验证指定元素及其子元素中带有.to-validate类的元素\n * @param {string|HTMLElement|Vue} dom - 表单的DOM元素、Vue实例或元素ID\n * @param {boolean} isAll - 是否验证所有输入项,默认为false,只验证第一个不符合规则的项\n * @returns {boolean} - 如果所有验证项都通过验证,则返回true;否则返回false\n */\nconst validate = function (dom: string | HTMLElement | VueInstance, isAll = false): boolean {\n\t// 存储待验证的DOM节点\n\tlet nodes: Element[] = []\n\n\t// 标记验证是否全部通过\n\tlet allPass = true\n\n\t// 标记所有在滚动条之外的节点\n\tconst hiddenErrorNodes = []\n\n\t// 记录第一个校验不通过的节点(按 DOM 顺序),用于滚动定位\n\tlet firstErrorNode: any = null\n\n\t/**\n\t * 标记所有在滚动条之外的节点信息\n\t * 此函数用于检查给定的表单元素是否在滚动条之外,从而决定是将其标记为可见错误还是隐藏错误\n\t * @param {HTMLElement} formEl - 需要检查的表单元素\n\t */\n\tfunction setHiddenErrorNodes(formEl) {\n\t\t// 记录首个错误节点(仅记录第一次)\n\t\tif (!firstErrorNode) firstErrorNode = formEl\n\t\t// 如果表单元素在滚动条之外,则将其添加到隐藏错误节点列表中\n\t\telse {\n\t\t\thiddenErrorNodes.push(formEl)\n\t\t}\n\t}\n\n\t// 根据传入参数类型获取待验证的节点列表\n\tif (typeof dom === 'string' && document.getElementById(dom)) {\n\t\tnodes = Array.from(document.getElementById(dom).querySelectorAll('.to-validate'))\n\t} else if (dom instanceof HTMLElement) {\n\t\tnodes = Array.from(dom.querySelectorAll('.to-validate'))\n\t} else if (typeof dom !== 'string' && dom && dom.$el) {\n\t\tnodes = Array.from(dom.$el.querySelectorAll('.to-validate'))\n\t}\n\n\t// 如果没有找到任何待验证的节点,直接返回true\n\tif (nodes.length === 0) {\n\t\treturn true\n\t}\n\n\t// 遍历所有待验证的节点\n\tfor (let i = 0; i < nodes.length; i++) {\n\t\tconst node = nodes[i]\n\n\t\t// 获取验证规则、是否需要trim空格、描述、是否必填等属性\n\t\tconst rule = node.getAttribute('rule')\n\t\tconst trim = node.getAttribute('trim') === 'true'\n\t\tconst value = (function () {\n\t\t\tif (node.getAttribute('value')) {\n\t\t\t\treturn trim ? node.getAttribute('value').trim() : node.getAttribute('value')\n\t\t\t} else {\n\t\t\t\treturn ''\n\t\t\t}\n\t\t})()\n\t\tconst desc = node.getAttribute('desc')\n\t\tconst required = node.getAttribute('req') === 'true'\n\t\tconst formEl = node.parentNode\n\t\t// 修改这里,将formEl转换为any类型以访问Vue特定属性\n\t\tlet formVue = (formEl as any).__vueParentComponent || (formEl as any).__vue_app__?.$parent\n\n\t\t// 特殊处理ToDatePicker组件的验证 (兼容Vue2/Vue3)\n\t\tconst vueInstance = formVue || (formEl as any).__vue_app__?.$parent\n\t\tif (vueInstance && ['ToDatePicker'].includes(vueInstance.$options?.name)) {\n\t\t\tformVue = vueInstance.$refs.inputBox\n\t\t}\n\n\t\t// 根据isAll参数决定验证流程\n\t\tif (isAll) {\n\t\t\t// 如果值存在且有规则,则应用规则验证\n\t\t\tif (value) {\n\t\t\t\tif (rule) {\n\t\t\t\t\tformVue.exposed.errorType.value = 'rule'\n\t\t\t\t\tlet reg\n\t\t\t\t\tif (regs[rule] && regs[rule].rule) {\n\t\t\t\t\t\treg = regs[rule].rule\n\t\t\t\t\t\tif (!reg.test(value)) {\n\t\t\t\t\t\t\tformVue.exposed.errorTip.value = t('to.validate.tip.common', desc, `${regs[rule].desc}${regs[rule].remark ? ',' + regs[rule].remark : ''}`)\n\t\t\t\t\t\t\tallPass = false\n\t\t\t\t\t\t\tsetHiddenErrorNodes(formEl)\n\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\treg = new RegExp(rule)\n\t\t\t\t\t\tif (!reg.test(value)) {\n\t\t\t\t\t\t\tformVue.errorTip = t('to.validate.tip.customRemark', desc, formVue.validateTip ? `,${formVue.validateTip}` : '')\n\t\t\t\t\t\t\tallPass = false\n\t\t\t\t\t\t\tsetHiddenErrorNodes(formEl)\n\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t} else if (required) {\n\t\t\t\tformVue.exposed.errorType.value = 'required'\n\t\t\t\tformVue.exposed.errorTip.value = t('to.validate.tip.requiredRemark', desc)\n\t\t\t\tallPass = false\n\t\t\t\tsetHiddenErrorNodes(formEl)\n\t\t\t\tcontinue\n\t\t\t} else {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t} else {\n\t\t\t// 如果值存在且有规则,则应用规则验证\n\t\t\tif (value) {\n\t\t\t\tif (rule) {\n\t\t\t\t\tlet reg\n\t\t\t\t\tif (regs[rule] && regs[rule].rule) {\n\t\t\t\t\t\treg = regs[rule].rule\n\t\t\t\t\t\tif (!reg.test(value)) {\n\t\t\t\t\t\t\tshowTip(formEl, t('to.validate.tip.common', desc, `${regs[rule].desc}${regs[rule].remark ? ',' + regs[rule].remark : ''}`))\n\t\t\t\t\t\t\treturn false\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\treg = new RegExp(rule)\n\t\t\t\t\t\tif (!reg.test(value)) {\n\t\t\t\t\t\t\tshowTip(formEl, t('to.validate.tip.customRemark', desc, formVue.validateTip ? `,${formVue.validateTip}` : ''))\n\t\t\t\t\t\t\treturn false\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t} else if (required) {\n\t\t\t\tshowTip(formEl, t('to.validate.tip.requiredRemark', desc))\n\t\t\t\treturn false\n\t\t\t} else {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\t}\n\n\t// 根据isAll参数返回相应的结果\n\tif (isAll) {\n\t\t// 校验不通过时,自动滚动到第一个不通过的表单项(若其位于 to-scroll 内)\n\t\tif (!allPass && firstErrorNode) {\n\t\t\t// 用纯 DOM 向上查找最近的 .to-scroll 容器,兼容 Vue 3\n\t\t\tlet scrollEl: any = firstErrorNode\n\t\t\twhile (scrollEl && scrollEl.nodeName !== 'BODY' && !(scrollEl.classList && scrollEl.classList.contains('to-scroll'))) {\n\t\t\t\tscrollEl = scrollEl.parentNode\n\t\t\t}\n\t\t\tif (scrollEl && scrollEl.nodeName !== 'BODY') {\n\t\t\t\t// 真正可滚动的元素是 .to-scroll-content,回退到 .to-scroll 自身\n\t\t\t\tconst inner = scrollEl.querySelector('.to-scroll-content') || scrollEl\n\t\t\t\tconst targetRect = (firstErrorNode as HTMLElement).getBoundingClientRect()\n\t\t\t\tconst scrollRect = (inner as HTMLElement).getBoundingClientRect()\n\t\t\t\t;(inner as HTMLElement).scrollTo({\n\t\t\t\t\ttop: (inner as HTMLElement).scrollTop + targetRect.top - scrollRect.top - 10,\n\t\t\t\t\tbehavior: 'smooth'\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t\treturn allPass\n\t} else {\n\t\treturn true\n\t}\n}\n\nconst validateAll = function (dom) {\n\treturn validate(dom, true)\n}\nexport { validate, validateAll }\n"],"names":["t","hasClass","createVNode","ToTooltip","render","nextTick","$tip"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -717,6 +717,26 @@ html body .height-full {
|
|
|
717
717
|
.to-grid.dir-v > * {
|
|
718
718
|
white-space: normal;
|
|
719
719
|
}
|
|
720
|
+
.to-grid > *[align="top"],
|
|
721
|
+
.to-grid > *.to-grid-item.align-top {
|
|
722
|
+
align-self: flex-start;
|
|
723
|
+
}
|
|
724
|
+
.to-grid > *[align="center"],
|
|
725
|
+
.to-grid > *.to-grid-item.align-center {
|
|
726
|
+
align-self: center;
|
|
727
|
+
}
|
|
728
|
+
.to-grid > *[align="bottom"],
|
|
729
|
+
.to-grid > *.to-grid-item.align-bottom {
|
|
730
|
+
align-self: flex-end;
|
|
731
|
+
}
|
|
732
|
+
.to-grid > *[align="stretch"],
|
|
733
|
+
.to-grid > *.to-grid-item.align-stretch {
|
|
734
|
+
align-self: stretch;
|
|
735
|
+
}
|
|
736
|
+
.to-grid > *[align="baseline"],
|
|
737
|
+
.to-grid > *.to-grid-item.align-baseline {
|
|
738
|
+
align-self: baseline;
|
|
739
|
+
}
|
|
720
740
|
.to-grid.va-top {
|
|
721
741
|
align-items: flex-start;
|
|
722
742
|
}
|
|
@@ -731,10 +751,13 @@ html body .height-full {
|
|
|
731
751
|
align-items: stretch;
|
|
732
752
|
}
|
|
733
753
|
.to-grid.is-col {
|
|
734
|
-
display:
|
|
754
|
+
display: grid;
|
|
755
|
+
grid-template-columns: repeat(var(--col), minmax(0, 1fr));
|
|
756
|
+
column-gap: var(--gap-x);
|
|
757
|
+
row-gap: var(--gap-y);
|
|
735
758
|
}
|
|
736
759
|
.to-grid.is-col > * {
|
|
737
|
-
|
|
760
|
+
grid-column: span var(--merge);
|
|
738
761
|
}
|
|
739
762
|
.to-grid.is-col > *[merge="1"] {
|
|
740
763
|
--merge: 1;
|
|
@@ -766,10 +789,6 @@ html body .height-full {
|
|
|
766
789
|
.to-grid.is-col > *[merge="10"] {
|
|
767
790
|
--merge: 10;
|
|
768
791
|
}
|
|
769
|
-
.to-grid.is-col > .to-grid {
|
|
770
|
-
--item-col: var(--col);
|
|
771
|
-
width: calc((100% - (var(--item-col) - 1) * var(--gap-x)) / var(--item-col) * var(--merge) + (var(--merge) - 1) * var(--gap-x));
|
|
772
|
-
}
|
|
773
792
|
.to-grid.col-avg {
|
|
774
793
|
display: flex;
|
|
775
794
|
}
|
|
@@ -820,21 +839,6 @@ html body .height-full {
|
|
|
820
839
|
.to-grid-item {
|
|
821
840
|
box-sizing: border-box;
|
|
822
841
|
}
|
|
823
|
-
.to-grid-item.align-top {
|
|
824
|
-
align-self: flex-start;
|
|
825
|
-
}
|
|
826
|
-
.to-grid-item.align-center {
|
|
827
|
-
align-self: center;
|
|
828
|
-
}
|
|
829
|
-
.to-grid-item.align-bottom {
|
|
830
|
-
align-self: flex-end;
|
|
831
|
-
}
|
|
832
|
-
.to-grid-item.align-stretch {
|
|
833
|
-
align-self: stretch;
|
|
834
|
-
}
|
|
835
|
-
.to-grid-item.align-baseline {
|
|
836
|
-
align-self: baseline;
|
|
837
|
-
}
|
|
838
842
|
.to-grid.height-full:not(.dir-v) > .to-grid-item {
|
|
839
843
|
height: 100%;
|
|
840
844
|
}
|
|
@@ -2252,6 +2256,8 @@ html body .height-full {
|
|
|
2252
2256
|
}
|
|
2253
2257
|
.to-box.is-checked {
|
|
2254
2258
|
overflow: hidden;
|
|
2259
|
+
}
|
|
2260
|
+
.to-box.is-checked:before {
|
|
2255
2261
|
border: var(--check-border);
|
|
2256
2262
|
}
|
|
2257
2263
|
.to-box.is-checked .to-box-check {
|
|
@@ -4703,6 +4709,8 @@ html body .height-full {
|
|
|
4703
4709
|
}
|
|
4704
4710
|
.to-msg.dir-h .to-msg-main {
|
|
4705
4711
|
flex: 1;
|
|
4712
|
+
margin-left: var(--main-margin);
|
|
4713
|
+
margin-top: 0;
|
|
4706
4714
|
}
|
|
4707
4715
|
.to-msg.dir-h .to-msg-fn {
|
|
4708
4716
|
--fn-align: right;
|
|
@@ -7129,6 +7137,7 @@ html body .height-full {
|
|
|
7129
7137
|
--color: var(--color-fg);
|
|
7130
7138
|
--lh: 1.5em;
|
|
7131
7139
|
--align: center;
|
|
7140
|
+
--content-margin: 0.5em;
|
|
7132
7141
|
--remove-margin: 0.5em;
|
|
7133
7142
|
--close-margin: 0.5em;
|
|
7134
7143
|
}
|
|
@@ -7303,6 +7312,14 @@ html body .height-full {
|
|
|
7303
7312
|
bottom: 1em;
|
|
7304
7313
|
pointer-events: all;
|
|
7305
7314
|
}
|
|
7315
|
+
.to-fix-wrapper img,
|
|
7316
|
+
.to-fix-wrapper a {
|
|
7317
|
+
-webkit-user-drag: none;
|
|
7318
|
+
user-select: none;
|
|
7319
|
+
}
|
|
7320
|
+
.to-fix-wrapper img {
|
|
7321
|
+
-webkit-touch-callout: none;
|
|
7322
|
+
}
|
|
7306
7323
|
.to-fix-number {
|
|
7307
7324
|
--inset: -0.5em -0.5em auto auto;
|
|
7308
7325
|
position: absolute;
|
|
@@ -7700,6 +7717,7 @@ html body .height-full {
|
|
|
7700
7717
|
}
|
|
7701
7718
|
.to-segment.type-sku {
|
|
7702
7719
|
--item-on-border: var(--sku-border);
|
|
7720
|
+
--check-margin: 0;
|
|
7703
7721
|
}
|
|
7704
7722
|
.to-segment.type-sku .to-segment-check {
|
|
7705
7723
|
position: absolute;
|
package/theme/index.css
CHANGED
|
@@ -720,6 +720,26 @@ html body .height-full {
|
|
|
720
720
|
.to-grid.dir-v > * {
|
|
721
721
|
white-space: normal;
|
|
722
722
|
}
|
|
723
|
+
.to-grid > *[align="top"],
|
|
724
|
+
.to-grid > *.to-grid-item.align-top {
|
|
725
|
+
align-self: flex-start;
|
|
726
|
+
}
|
|
727
|
+
.to-grid > *[align="center"],
|
|
728
|
+
.to-grid > *.to-grid-item.align-center {
|
|
729
|
+
align-self: center;
|
|
730
|
+
}
|
|
731
|
+
.to-grid > *[align="bottom"],
|
|
732
|
+
.to-grid > *.to-grid-item.align-bottom {
|
|
733
|
+
align-self: flex-end;
|
|
734
|
+
}
|
|
735
|
+
.to-grid > *[align="stretch"],
|
|
736
|
+
.to-grid > *.to-grid-item.align-stretch {
|
|
737
|
+
align-self: stretch;
|
|
738
|
+
}
|
|
739
|
+
.to-grid > *[align="baseline"],
|
|
740
|
+
.to-grid > *.to-grid-item.align-baseline {
|
|
741
|
+
align-self: baseline;
|
|
742
|
+
}
|
|
723
743
|
.to-grid.va-top {
|
|
724
744
|
align-items: flex-start;
|
|
725
745
|
}
|
|
@@ -734,10 +754,13 @@ html body .height-full {
|
|
|
734
754
|
align-items: stretch;
|
|
735
755
|
}
|
|
736
756
|
.to-grid.is-col {
|
|
737
|
-
display:
|
|
757
|
+
display: grid;
|
|
758
|
+
grid-template-columns: repeat(var(--col), minmax(0, 1fr));
|
|
759
|
+
column-gap: var(--gap-x);
|
|
760
|
+
row-gap: var(--gap-y);
|
|
738
761
|
}
|
|
739
762
|
.to-grid.is-col > * {
|
|
740
|
-
|
|
763
|
+
grid-column: span var(--merge);
|
|
741
764
|
}
|
|
742
765
|
.to-grid.is-col > *[merge="1"] {
|
|
743
766
|
--merge: 1;
|
|
@@ -769,10 +792,6 @@ html body .height-full {
|
|
|
769
792
|
.to-grid.is-col > *[merge="10"] {
|
|
770
793
|
--merge: 10;
|
|
771
794
|
}
|
|
772
|
-
.to-grid.is-col > .to-grid {
|
|
773
|
-
--item-col: var(--col);
|
|
774
|
-
width: calc((100% - (var(--item-col) - 1) * var(--gap-x)) / var(--item-col) * var(--merge) + (var(--merge) - 1) * var(--gap-x));
|
|
775
|
-
}
|
|
776
795
|
.to-grid.col-avg {
|
|
777
796
|
display: flex;
|
|
778
797
|
}
|
|
@@ -823,21 +842,6 @@ html body .height-full {
|
|
|
823
842
|
.to-grid-item {
|
|
824
843
|
box-sizing: border-box;
|
|
825
844
|
}
|
|
826
|
-
.to-grid-item.align-top {
|
|
827
|
-
align-self: flex-start;
|
|
828
|
-
}
|
|
829
|
-
.to-grid-item.align-center {
|
|
830
|
-
align-self: center;
|
|
831
|
-
}
|
|
832
|
-
.to-grid-item.align-bottom {
|
|
833
|
-
align-self: flex-end;
|
|
834
|
-
}
|
|
835
|
-
.to-grid-item.align-stretch {
|
|
836
|
-
align-self: stretch;
|
|
837
|
-
}
|
|
838
|
-
.to-grid-item.align-baseline {
|
|
839
|
-
align-self: baseline;
|
|
840
|
-
}
|
|
841
845
|
.to-grid.height-full:not(.dir-v) > .to-grid-item {
|
|
842
846
|
height: 100%;
|
|
843
847
|
}
|
|
@@ -2255,6 +2259,8 @@ html body .height-full {
|
|
|
2255
2259
|
}
|
|
2256
2260
|
.to-box.is-checked {
|
|
2257
2261
|
overflow: hidden;
|
|
2262
|
+
}
|
|
2263
|
+
.to-box.is-checked:before {
|
|
2258
2264
|
border: var(--check-border);
|
|
2259
2265
|
}
|
|
2260
2266
|
.to-box.is-checked .to-box-check {
|
|
@@ -4706,6 +4712,8 @@ html body .height-full {
|
|
|
4706
4712
|
}
|
|
4707
4713
|
.to-msg.dir-h .to-msg-main {
|
|
4708
4714
|
flex: 1;
|
|
4715
|
+
margin-left: var(--main-margin);
|
|
4716
|
+
margin-top: 0;
|
|
4709
4717
|
}
|
|
4710
4718
|
.to-msg.dir-h .to-msg-fn {
|
|
4711
4719
|
--fn-align: right;
|
|
@@ -7132,6 +7140,7 @@ html body .height-full {
|
|
|
7132
7140
|
--color: var(--color-fg);
|
|
7133
7141
|
--lh: 1.5em;
|
|
7134
7142
|
--align: center;
|
|
7143
|
+
--content-margin: 0.5em;
|
|
7135
7144
|
--remove-margin: 0.5em;
|
|
7136
7145
|
--close-margin: 0.5em;
|
|
7137
7146
|
}
|
|
@@ -7306,6 +7315,14 @@ html body .height-full {
|
|
|
7306
7315
|
bottom: 1em;
|
|
7307
7316
|
pointer-events: all;
|
|
7308
7317
|
}
|
|
7318
|
+
.to-fix-wrapper img,
|
|
7319
|
+
.to-fix-wrapper a {
|
|
7320
|
+
-webkit-user-drag: none;
|
|
7321
|
+
user-select: none;
|
|
7322
|
+
}
|
|
7323
|
+
.to-fix-wrapper img {
|
|
7324
|
+
-webkit-touch-callout: none;
|
|
7325
|
+
}
|
|
7309
7326
|
.to-fix-number {
|
|
7310
7327
|
--inset: -0.5em -0.5em auto auto;
|
|
7311
7328
|
position: absolute;
|
|
@@ -7703,6 +7720,7 @@ html body .height-full {
|
|
|
7703
7720
|
}
|
|
7704
7721
|
.to-segment.type-sku {
|
|
7705
7722
|
--item-on-border: var(--sku-border);
|
|
7723
|
+
--check-margin: 0;
|
|
7706
7724
|
}
|
|
7707
7725
|
.to-segment.type-sku .to-segment-check {
|
|
7708
7726
|
position: absolute;
|
package/theme/skin/default.css
CHANGED
|
@@ -720,6 +720,26 @@ html body .height-full {
|
|
|
720
720
|
.to-grid.dir-v > * {
|
|
721
721
|
white-space: normal;
|
|
722
722
|
}
|
|
723
|
+
.to-grid > *[align="top"],
|
|
724
|
+
.to-grid > *.to-grid-item.align-top {
|
|
725
|
+
align-self: flex-start;
|
|
726
|
+
}
|
|
727
|
+
.to-grid > *[align="center"],
|
|
728
|
+
.to-grid > *.to-grid-item.align-center {
|
|
729
|
+
align-self: center;
|
|
730
|
+
}
|
|
731
|
+
.to-grid > *[align="bottom"],
|
|
732
|
+
.to-grid > *.to-grid-item.align-bottom {
|
|
733
|
+
align-self: flex-end;
|
|
734
|
+
}
|
|
735
|
+
.to-grid > *[align="stretch"],
|
|
736
|
+
.to-grid > *.to-grid-item.align-stretch {
|
|
737
|
+
align-self: stretch;
|
|
738
|
+
}
|
|
739
|
+
.to-grid > *[align="baseline"],
|
|
740
|
+
.to-grid > *.to-grid-item.align-baseline {
|
|
741
|
+
align-self: baseline;
|
|
742
|
+
}
|
|
723
743
|
.to-grid.va-top {
|
|
724
744
|
align-items: flex-start;
|
|
725
745
|
}
|
|
@@ -734,10 +754,13 @@ html body .height-full {
|
|
|
734
754
|
align-items: stretch;
|
|
735
755
|
}
|
|
736
756
|
.to-grid.is-col {
|
|
737
|
-
display:
|
|
757
|
+
display: grid;
|
|
758
|
+
grid-template-columns: repeat(var(--col), minmax(0, 1fr));
|
|
759
|
+
column-gap: var(--gap-x);
|
|
760
|
+
row-gap: var(--gap-y);
|
|
738
761
|
}
|
|
739
762
|
.to-grid.is-col > * {
|
|
740
|
-
|
|
763
|
+
grid-column: span var(--merge);
|
|
741
764
|
}
|
|
742
765
|
.to-grid.is-col > *[merge="1"] {
|
|
743
766
|
--merge: 1;
|
|
@@ -769,10 +792,6 @@ html body .height-full {
|
|
|
769
792
|
.to-grid.is-col > *[merge="10"] {
|
|
770
793
|
--merge: 10;
|
|
771
794
|
}
|
|
772
|
-
.to-grid.is-col > .to-grid {
|
|
773
|
-
--item-col: var(--col);
|
|
774
|
-
width: calc((100% - (var(--item-col) - 1) * var(--gap-x)) / var(--item-col) * var(--merge) + (var(--merge) - 1) * var(--gap-x));
|
|
775
|
-
}
|
|
776
795
|
.to-grid.col-avg {
|
|
777
796
|
display: flex;
|
|
778
797
|
}
|
|
@@ -823,21 +842,6 @@ html body .height-full {
|
|
|
823
842
|
.to-grid-item {
|
|
824
843
|
box-sizing: border-box;
|
|
825
844
|
}
|
|
826
|
-
.to-grid-item.align-top {
|
|
827
|
-
align-self: flex-start;
|
|
828
|
-
}
|
|
829
|
-
.to-grid-item.align-center {
|
|
830
|
-
align-self: center;
|
|
831
|
-
}
|
|
832
|
-
.to-grid-item.align-bottom {
|
|
833
|
-
align-self: flex-end;
|
|
834
|
-
}
|
|
835
|
-
.to-grid-item.align-stretch {
|
|
836
|
-
align-self: stretch;
|
|
837
|
-
}
|
|
838
|
-
.to-grid-item.align-baseline {
|
|
839
|
-
align-self: baseline;
|
|
840
|
-
}
|
|
841
845
|
.to-grid.height-full:not(.dir-v) > .to-grid-item {
|
|
842
846
|
height: 100%;
|
|
843
847
|
}
|
|
@@ -2255,6 +2259,8 @@ html body .height-full {
|
|
|
2255
2259
|
}
|
|
2256
2260
|
.to-box.is-checked {
|
|
2257
2261
|
overflow: hidden;
|
|
2262
|
+
}
|
|
2263
|
+
.to-box.is-checked:before {
|
|
2258
2264
|
border: var(--check-border);
|
|
2259
2265
|
}
|
|
2260
2266
|
.to-box.is-checked .to-box-check {
|
|
@@ -4706,6 +4712,8 @@ html body .height-full {
|
|
|
4706
4712
|
}
|
|
4707
4713
|
.to-msg.dir-h .to-msg-main {
|
|
4708
4714
|
flex: 1;
|
|
4715
|
+
margin-left: var(--main-margin);
|
|
4716
|
+
margin-top: 0;
|
|
4709
4717
|
}
|
|
4710
4718
|
.to-msg.dir-h .to-msg-fn {
|
|
4711
4719
|
--fn-align: right;
|
|
@@ -7132,6 +7140,7 @@ html body .height-full {
|
|
|
7132
7140
|
--color: var(--color-fg);
|
|
7133
7141
|
--lh: 1.5em;
|
|
7134
7142
|
--align: center;
|
|
7143
|
+
--content-margin: 0.5em;
|
|
7135
7144
|
--remove-margin: 0.5em;
|
|
7136
7145
|
--close-margin: 0.5em;
|
|
7137
7146
|
}
|
|
@@ -7306,6 +7315,14 @@ html body .height-full {
|
|
|
7306
7315
|
bottom: 1em;
|
|
7307
7316
|
pointer-events: all;
|
|
7308
7317
|
}
|
|
7318
|
+
.to-fix-wrapper img,
|
|
7319
|
+
.to-fix-wrapper a {
|
|
7320
|
+
-webkit-user-drag: none;
|
|
7321
|
+
user-select: none;
|
|
7322
|
+
}
|
|
7323
|
+
.to-fix-wrapper img {
|
|
7324
|
+
-webkit-touch-callout: none;
|
|
7325
|
+
}
|
|
7309
7326
|
.to-fix-number {
|
|
7310
7327
|
--inset: -0.5em -0.5em auto auto;
|
|
7311
7328
|
position: absolute;
|
|
@@ -7703,6 +7720,7 @@ html body .height-full {
|
|
|
7703
7720
|
}
|
|
7704
7721
|
.to-segment.type-sku {
|
|
7705
7722
|
--item-on-border: var(--sku-border);
|
|
7723
|
+
--check-margin: 0;
|
|
7706
7724
|
}
|
|
7707
7725
|
.to-segment.type-sku .to-segment-check {
|
|
7708
7726
|
position: absolute;
|