openxiangda-skill-kit 2.0.9 → 2.0.11
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/package.json
CHANGED
|
@@ -214,6 +214,31 @@ pnpm openxiangda check
|
|
|
214
214
|
|
|
215
215
|
## 移动字段呈现与分组
|
|
216
216
|
|
|
217
|
+
### 应用时区与时间限制
|
|
218
|
+
|
|
219
|
+
`OpenXiangdaApplication` 的可选 `timeZone="Asia/Shanghai"` 统一标准表单、详情、
|
|
220
|
+
审批业务摘要、待办/通知、审计和草稿时间的展示。独立使用组件时可在
|
|
221
|
+
`OpenXiangdaUiProvider` 传同一参数;不指定时保留浏览器本地时区。
|
|
222
|
+
这只影响输入与展示,`datetime` / `datetime-range` 仍读写 UTC ISO instant。
|
|
223
|
+
`date` / `date-range` 保留自然日期,`time` 保留无日期时间。
|
|
224
|
+
|
|
225
|
+
`DateTimeField`、`DateTimeFilter`、`DateTimeValueDisplay` 和 `MobileDateTimeField`
|
|
226
|
+
可显式传 `timeZone` 覆盖应用默认。日期时间输入还可传 `min` / `max`(含端点的
|
|
227
|
+
ISO instant)与 `minuteStep`(1 到 60 且整除 60)。设置步长后只接受整分钟,秒和
|
|
228
|
+
毫秒为零;例如 `minuteStep={15}`。服务端仍须验证最终业务窗口与授权。
|
|
229
|
+
|
|
230
|
+
```tsx
|
|
231
|
+
<DateTimeField field={startsAtField} value={startsAt} onChange={setStartsAt}
|
|
232
|
+
timeZone="Asia/Shanghai" minuteStep={15}
|
|
233
|
+
min="2026-09-08T01:00:00Z" max="2026-10-08T01:00:00Z" />
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
输入到夏令时不存在或重复的墙上时间时显示错误,不自动选偏移。无效时区、步长或
|
|
237
|
+
上下限配置会报错。手机指定时区的日期时间使用日期/时间滚轮,最多提供当前选择前后
|
|
238
|
+
各 365 天并按限制收窄;范围仍分两步确认,取消不修改原值。
|
|
239
|
+
|
|
240
|
+
### 字段布局
|
|
241
|
+
|
|
217
242
|
移动字段自身提供无边框输入、上下标签、行分隔和错误提示;标准表单与自定义页面使用同一
|
|
218
243
|
字段组件。页面负责把相关字段组织在浅色背景上的白色分组中,不另设移动主题配置。
|
|
219
244
|
|
|
@@ -41,6 +41,32 @@ DataQuery 使用有界 where 条件树,支持 and/or/not。标准列表的筛
|
|
|
41
41
|
|
|
42
42
|
## 标准后台扩展
|
|
43
43
|
|
|
44
|
+
### 未保存内容的离开保护
|
|
45
|
+
|
|
46
|
+
自定义表单可在 `OpenXiangdaApplication` 内调用
|
|
47
|
+
`useUnsavedChangesGuard({ when, message? })`。`when` 包含未保存表单、正在提交或
|
|
48
|
+
结果尚不确定的状态;成功后清除,组件卸载时自动注销。多个表单由应用入口统一汇总,
|
|
49
|
+
不需要应用创建路由或拦截 document 点击。
|
|
50
|
+
|
|
51
|
+
```tsx
|
|
52
|
+
useUnsavedChangesGuard({
|
|
53
|
+
when: !result && (hasDraft || pending || hasUnresolvedIntent),
|
|
54
|
+
message: '会议尚未提交完成,离开将丢失当前填写内容。',
|
|
55
|
+
});
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
站内使用 React Router 的 `Link` 或 `navigate`,前进/后退与程序跳转使用同一确认框。
|
|
59
|
+
确认框打开时保留第一次目标,取消后继续原地编辑。刷新、关闭和文档跳转使用浏览器
|
|
60
|
+
原生提示,其文案和是否展示受浏览器限制。保存成功可在状态清除后的 effect 中跳转。
|
|
61
|
+
该 hook 只保护导航,不持久化草稿或恢复提交回执;业务数据仍由各自既有能力负责。
|
|
62
|
+
不要直接调用 `history.pushState` 或修改路由内部状态。
|
|
63
|
+
|
|
64
|
+
### 应用时区
|
|
65
|
+
|
|
66
|
+
如业务采用固定时区,在现有 `OpenXiangdaApplication` 传可选 `timeZone`,例如
|
|
67
|
+
`Asia/Shanghai`。标准表单、审批摘要和各中心时间随同一 UI Provider 展示,应用无需
|
|
68
|
+
修改设备时区或保存第二份时间。具体控件参数见[字段组件](field-components.md)。
|
|
69
|
+
|
|
44
70
|
默认 CRUD、统一 Shell、current-user 权限和 Data Provider 都由 `openxiangda/react`
|
|
45
71
|
维护;应用拥有后台信息架构声明。页面实现、路由可达、菜单可见是三个不同合同:
|
|
46
72
|
|