for admin form page

This commit is contained in:
2025-10-17 14:39:35 +08:00
parent 411f068d75
commit 40a5f4e29c
10 changed files with 445 additions and 17 deletions

View File

@@ -94,6 +94,23 @@ export const LOOKUP_COPY_SUPPORTED_TYPES = [
FIELD_TYPES.RECORD_NUMBER,
];
// DOM 类名常量定义(用于 admin 表单页面)
export const DOM_CLASSES = {
CANVAS_ELEMENT: 'fm-canvas-gaia',
CONTENT_ELEMENT: 'fm-canvas-contentElement-gaia',
INSERT_LABEL_ELEMENT: 'input-label-cybozu',
INSERT_GROUP_LABEL_ELEMENT: 'group-label-gaia',
INSERT_SPACER_LABEL_ELEMENT: 'fm-control-spacer-gaia',
ROW_ELEMENT: 'fm-row-gaia',
FIELD_ELEMENT: 'fm-control-gaia',
SUBTABLE: 'fm-subtable-gaia',
GROUP: 'fm-control-group-gaia',
REFERENCE_TABLE: 'fm-control-reference_table-field-gaia',
SPACER: 'fm-control-spacer-field-gaia',
HR: 'fm-control-hr-field-gaia',
LABEL: 'fm-control-label-field-gaia',
};
// 页面类型常量定义
export const PAGE_TYPES = {
DETAIL: 'detail',

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);
},
};

View File

@@ -34,7 +34,7 @@ const getAppIdFromUrl = () => {
export const getAppId = () => {
try {
if (isInAdminPage()) {
return getAppIdFromUrl() || null;
return Number(cybozu?.data?.page?.APP_ID) || getAppIdFromUrl() || null;
}
if (!isGlobalKintoneExist()) {