Files
aurora-admin/frameworks/modal.html
T
aurora-admin 7e3d442dab
Deploy to GitHub Pages / deploy (push) Failing after 2m30s
Regression / regression (push) Failing after 53s
feat(S2-P7+S3-P8): 行为断言6试点全绿+RTL28文件迁移/回归1009-1009
P7: tests/_behaviors.js新建(8动词+@input/@doc定位+同步pump+page-load
    幂等缓存); _runtime聚合+重载清缓存; _template引入; 6演示页标注;
    79测试页重生成。关键修:runner兜底重跑致行为二轮误报,加缓存解决。
P8: tools/migrate-rtl.mjs新建(白名单dry-run/--write); 28个CSS转逻辑
    属性;物理清零(排除auto/拼接/居中14处人工例外);三页RTL零溢出。
回归:100%(79/79页,1009/1009断言,N/A 35)。
2026-09-14 03:37:08 +08:00

75 lines
3.6 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Aurora Admin · Modal (H5)</title>
<link rel="stylesheet" href="../.design_library/aurora-admin/colors_and_type.css">
<style>
/* 对齐 components.css 与 modal.json 契约 */
.demo { padding: 24px; background: var(--au-color-page-bg); color: var(--au-color-text-body); font-family: var(--font-family); }
h1 { font-size: 20px; margin: 0 0 4px; }
.sub { color: var(--au-color-text-secondary); margin: 0 0 24px; font-size: 12px; }
.aa-mask {
position: fixed; inset: 0; background: rgba(0,0,0,0.45);
display: flex; align-items: center; justify-content: center; z-index: 1000;
}
.aa-modal {
background: var(--au-color-card-bg); border-radius: 8px; box-shadow: 0 8px 24px rgba(0,0,0,0.12);
display: flex; flex-direction: column; max-width: 90vw;
}
.aa-modal--small { width: 320px; }
.aa-modal--default { width: 480px; }
.aa-modal--large { width: 680px; }
.aa-modal__header {
display: flex; align-items: center; justify-content: space-between;
padding: 16px 24px; font-size: 16px; font-weight: 600; color: var(--au-color-text-title);
}
.aa-modal__close { border: none; background: none; cursor: pointer; color: var(--au-color-text-secondary); font-size: 16px; line-height: 1; }
.aa-modal__close:hover { color: var(--au-color-text-body); }
.aa-modal__body { padding: 0 24px 24px; color: var(--au-color-text-body); font-size: 14px; line-height: 22px; }
.aa-modal__footer { display: flex; justify-content: flex-end; gap: 8px; padding: 12px 24px 16px; }
.btn-base { border-radius: 4px; padding: 4px 16px; height: 32px; cursor: pointer; font-size: 14px; }
.btn-ghost { border: 1px solid var(--au-color-border); background: var(--au-color-card-bg); color: var(--au-color-text-body); }
.btn-primary { border: 1px solid var(--au-color-brand); background: var(--au-color-brand); color: var(--au-color-text-inverse); }
</style>
</head>
<body>
<div class="demo">
<h1>Aurora Admin · Modal 组件(纯 H5)</h1>
<p class="sub">对齐 modal.json 契约:宽度480(默认)/680(大)/320(小),圆角8px,遮罩 rgba(0,0,0,0.45),右下角操作按钮</p>
<button class="btn-base btn-primary" onclick="openModal('default')" data-behavior="click-adds-node:@doc.aa-mask">打开默认对话框</button>
<button class="btn-base btn-ghost" onclick="openModal('large')" style="margin-left:8px">打开大对话框</button>
<button class="btn-base btn-ghost" onclick="openModal('small')" style="margin-left:8px">打开小对话框</button>
</div>
<div id="mount"></div>
<script>
function openModal(size) {
const mount = document.getElementById('mount');
mount.innerHTML = `
<div class="aa-mask" data-mask>
<div class="aa-modal aa-modal--${size}" role="dialog">
<div class="aa-modal__header">
<span>提示</span>
<button class="aa-modal__close" data-close aria-label="关闭">✕</button>
</div>
<div class="aa-modal__body">
这是 ${size === 'small' ? '小' : size === 'large' ? '大' : '默认'} 尺寸对话框的内容区,可放置表单或说明文字。
</div>
<div class="aa-modal__footer">
<button class="btn-base btn-ghost" data-close>取消</button>
<button class="btn-base btn-primary" data-close>确定</button>
</div>
</div>
</div>`;
const mask = mount.querySelector('[data-mask]');
mask.addEventListener('click', (e) => { if (e.target === mask || e.target.hasAttribute('data-close')) mount.innerHTML = ''; });
}
</script>
</body>
</html>