# CustomDialog - 完全自定义弹窗

## 说明

内容完全自定义的弹窗。顶部为标题栏（居中标题 + 右上角关闭按钮），其下直接渲染 `children`，不内置底部按钮。适合放置复杂自定义界面（表单、列表、图文、自定义操作区等）。

与 `ActionCustomDialog` 的区别：`CustomDialog` 没有 `buttons`、`titleIcon` 等属性，顶部固定带一个关闭图标按钮，关闭交互由右上角按钮和遮罩点击承担。该组件是独立实现（`CustomDialogPropsType`，不继承 `BaseDialogPropsType`），因此**不包含** `cancelable`、`buttons`、`titleIcon`、`accessibilityLabel` 之外的无障碍字段等公共属性。

## 属性

| 属性 | 说明 | 类型 | 默认值 | 必填 |
|------|------|------|--------|------|
| **visible** | 是否显示弹窗 | `boolean` | - | 是 |
| **title** | 标题文案（最多 3 行） | `string` | - | 否 |
| **children** | 标题栏下方的自定义内容 | `ReactNode` | - | 否 |
| **colorDepth** | 弹窗底色深度 | `'base' \| 'low'` | `'base'` | 否 |
| **canDismiss** | 点击遮罩是否可关闭 | `boolean` | `true` | 否 |
| **hasShade** | 是否显示半透明遮罩背景 | `boolean` | `true` | 否 |
| **onDismiss** | 关闭（右上角按钮、遮罩、返回键）时回调 | `() => void` | - | 否 |
| **onModalShow** | 弹窗显示时回调 | `() => void` | - | 否 |
| **onModalHide** | 弹窗隐藏时回调 | `() => void` | - | 否 |
| **accessible** | 无障碍：是否启用 | `boolean` | `true` | 否 |
| **accessibilityLabel** | 右上角关闭按钮的无障碍标签 | `string` | - | 否 |

## 使用示例

```tsx
import { CustomDialog } from 'miot/ui/hyperOSUI';
import { View, Text } from 'react-native';

<CustomDialog
  visible={visible}
  title="自定义内容"
  onDismiss={() => setVisible(false)}
>
  <View style={{ paddingHorizontal: 24, paddingBottom: 24 }}>
    <Text>这里是完全自定义的弹窗内容</Text>
  </View>
</CustomDialog>
```

## 注意事项

- 顶部关闭按钮固定存在，点击即关闭弹窗并触发 `onDismiss`，无法隐藏；需要底部按钮组的场景请使用 `ActionCustomDialog`。
- 关闭按钮的点击交互无条件生效，`canDismiss` 仅控制点击遮罩是否关闭（内部 `cancelable` 固定为 `true`，返回键可关闭）。
- 标题最多显示 3 行，超出省略。
- `children` 的内边距需自行处理，组件只提供标题栏，不对内容区添加水平/底部 padding。
- 标题文字禁用了字体缩放（`allowFontScaling={false}`）。

## 修改记录

| 日期 | 版本 | 修改内容 | 修改原因 | 关联 |
|------|------|----------|----------|------|
| 2026-07-20 | v1.18.17 | 适配 118 版本组件规格调整 | — | feef8025 |
| 2026-07-03 | v1.18.14 | 兼容性处理 | — | a8f0deed |
| 2026-06-05 | v1.18.12 | 修复自定义弹窗显示问题 | — | 8dfce8e4 |
| 2026-06-04 | v1.18.12 | 弹窗样式优化 | — | 12981332 |
| 2026-05-25 | v1.18.8 | 标题文案禁用字体缩放，避免大字体下布局异常 | — | bd7536c6 |
| 2026-05-18 | v1.18.8 | 修复弹窗若干显示问题 | — | b618cec8 |
| 2026-04-29 | v1.18.6 | 修复弹窗若干显示问题 | — | e15b02a4 |
| 2026-04-16 | v1.18.5-alpha.0 | 弹窗细节样式优化 | — | 805a263e |
| 2026-04-14 | v1.18.5-alpha.0 | HyperOS 完全自定义弹窗初版实现 | — | 9dc50c99 |
