for admin form page

This commit is contained in:
hsueh chiahao
2025-10-11 22:56:59 +08:00
parent 2793c70010
commit c88e1faa7c
10 changed files with 445 additions and 17 deletions

View File

@@ -3,7 +3,7 @@
* 提供用于创建和管理 DOM 元素的辅助函数
*/
import { FIELD_TYPES } from './constants.js';
import { FIELD_TYPES, DOM_CLASSES } from './constants.js';
/**
* 从表元素中提取列宽度信息
@@ -68,3 +68,40 @@ export const safelyAppendLabel = (targetElement, labelElement) => {
return false;
}
};
const isRowElement = (element) => element?.classList?.contains(DOM_CLASSES.ROW_ELEMENT);
const isFieldElement = (element) => element?.classList?.contains(DOM_CLASSES.FIELD_ELEMENT);
/**
* 基于 DOM 类名判断字段类型的工具对象
* 用于 admin 表单页面通过 DOM 元素判断字段类型
*/
export const FieldTypeCheckerForAdminDom = {
isRowElement,
isFieldElement,
isSubtable: (element) => {
return !isRowElement(element) && !isFieldElement(element) &&
element?.classList?.contains(DOM_CLASSES.SUBTABLE);
},
isGroup: (element) => {
return isRowElement(element) &&
!!element?.querySelector(`.${DOM_CLASSES.GROUP}`);
},
isReferenceTable: (element) => {
return isRowElement(element) &&
!!element?.querySelector(`.${DOM_CLASSES.REFERENCE_TABLE}`);
},
isSpacer: (element) => {
return isFieldElement(element) &&
element?.classList?.contains(DOM_CLASSES.SPACER);
},
isLabel: (element) => {
return isFieldElement(element) &&
element?.classList?.contains(DOM_CLASSES.LABEL);
},
isHr: (element) => {
return isFieldElement(element) &&
element?.classList?.contains(DOM_CLASSES.HR);
},
};