draftgo-cli 2.0.9 → 3.0.0

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.
@@ -0,0 +1,110 @@
1
+ ---
2
+ read_when: 页面开发时需要查 App API · 忘记某个方法签名时
3
+ ---
4
+
5
+ # App 对象速查表
6
+
7
+ ```javascript
8
+ const App = window.parent?.App;
9
+ ```
10
+
11
+ ## 请求
12
+
13
+ | 方法 | 签名 | 说明 |
14
+ |---|---|---|
15
+ | `App.get` | `(path, params?)` | GET,params 为 query 参数 |
16
+ | `App.post` | `(path, body?)` | POST |
17
+ | `App.put` | `(path, body?)` | PUT |
18
+ | `App.patch` | `(path, body?)` | PATCH |
19
+ | `App.delete` | `(path)` | DELETE |
20
+ | `App.uploadFile` | `(file, onProgress?)` | 文件上传,返回标准信封 |
21
+
22
+ **响应格式**:`{ code: 200, data: <载荷>, message: "success" }`
23
+ **消费范式**:
24
+ ```javascript
25
+ const res = await App.get('pages', { page: 1, page_size: 20 });
26
+ if (res.code !== 200) { App.showError(res.message); return; }
27
+ const items = res.data.items; // 分页列表
28
+ ```
29
+
30
+ ## 反馈
31
+
32
+ | 方法 | 签名 | 说明 |
33
+ |---|---|---|
34
+ | `App.showSuccess` | `(msg)` | 成功 Toast 3s |
35
+ | `App.showError` | `(msg)` | 错误 Toast 4s |
36
+ | `App.showWarning` | `(msg)` | 警告 Toast 3s |
37
+ | `App.showInfo` | `(msg)` | 信息 Toast 3s |
38
+ | `App.toast` | `(msg, type?)` | 通用 Toast,type: success/error/warning/info |
39
+ | `App.confirm` | `(msg, title?)` | 确认弹窗,返回 `Promise<boolean>` |
40
+ | `App.showModal` | `(msg, title?)` | 信息模态框(替代 alert) |
41
+ | `App.showLoading` | `()` | 全局 loading 蒙层 |
42
+ | `App.hideLoading` | `()` | 关闭 loading |
43
+
44
+ ## 路由
45
+
46
+ | 方法 | 说明 |
47
+ |---|---|
48
+ | `App.navigate(route)` | 路由跳转(pushState) |
49
+ | `App.getCurrentRoute()` | 当前路径字符串 |
50
+ | `App.getCurrentRouteContext()` | 完整路由上下文,含 `query` |
51
+
52
+ **读取 URL 参数**(必须用此方式,不能用 `window.location.search`):
53
+ ```javascript
54
+ const routeContext =
55
+ window.__DG_ROUTE_CONTEXT__
56
+ || window.__DG_GET_ROUTE_CONTEXT__?.()
57
+ || window.parent?.App?.getCurrentRouteContext?.()
58
+ || { query: {} };
59
+ const { patientId, visitId } = routeContext.query;
60
+ ```
61
+
62
+ ## 状态
63
+
64
+ | 属性 | 类型 | 说明 |
65
+ |---|---|---|
66
+ | `App.currentUser` | object \| null | 当前用户,未登录为 null |
67
+ | `App.isAdmin` | boolean | 是否管理员 |
68
+ | `App.isAuthenticated` | boolean | 是否已认证 |
69
+ | `App.hasToken` | boolean | 是否有 token(含未验证) |
70
+ | `App.config` | object | 系统配置 KV |
71
+ | `App.theme` | `'light'` \| `'dark'` | 当前显示模式 |
72
+ | `App.colorScheme` | string | 当前配色方案 |
73
+
74
+ ## 主题
75
+
76
+ ```javascript
77
+ App.applyTheme('dark'); // 切换显示模式
78
+ App.setColorScheme('deep-blue-white'); // 切换预设配色
79
+ App.setColorScheme('custom', customVarsObject); // 自定义配色
80
+ App.getColorScheme(); // 获取方案详情
81
+ ```
82
+
83
+ ## 外部 API
84
+
85
+ ```javascript
86
+ App.listApis(); // 列出可调用 API(含 code/name/schema)
87
+ App.callApi('weather-now', {
88
+ path_params: { city: 'beijing' },
89
+ query_params: { unit: 'metric' },
90
+ // body: {...} // POST/PUT/PATCH 才生效
91
+ });
92
+ // 返回:{ status_code, headers, body, duration_ms, error }
93
+ ```
94
+
95
+ ## 其他
96
+
97
+ ```javascript
98
+ App.logout(); // 登出并跳转登录页
99
+ App.setAuthTokens({ access_token, refresh_token }); // 登录后写入 token
100
+ App.reloadGlobalLayer(); // 重载全局层
101
+ App.openGlobalWidget(name); // 触发全局挂件打开
102
+ App.t(key, fallback?); // 国际化文本
103
+ ```
104
+
105
+ ## Token 存储
106
+
107
+ | key | 说明 |
108
+ |---|---|
109
+ | `localStorage.dg_access_token` | 访问 token |
110
+ | `localStorage.dg_refresh_token` | 刷新 token |
@@ -0,0 +1,198 @@
1
+ ---
2
+ read_when: 页面开发时需要使用 dg-* 组件时 · 确认某组件属性/用法时
3
+ ---
4
+
5
+ # dg-* 组件速查卡
6
+
7
+ > `dg-*` = shadcn/ui 的 DraftGo HTML 协议表达。完整映射说明见 `{{SKILL_DIR}}/specs/ui-protocol.md`
8
+
9
+ ## 基础组件
10
+
11
+ ### dg-button
12
+ ```html
13
+ <dg-button variant="default|destructive|outline|secondary|ghost|link"
14
+ size="default|sm|lg|icon"
15
+ disabled>
16
+ 按钮文字
17
+ </dg-button>
18
+ ```
19
+
20
+ ### dg-card
21
+ ```html
22
+ <dg-card>
23
+ <dg-card-header>
24
+ <dg-card-title>标题</dg-card-title>
25
+ <dg-card-description>描述</dg-card-description>
26
+ </dg-card-header>
27
+ <dg-card-content>内容</dg-card-content>
28
+ <dg-card-footer>底部</dg-card-footer>
29
+ </dg-card>
30
+ ```
31
+
32
+ ### dg-badge
33
+ ```html
34
+ <dg-badge variant="default|secondary|destructive|outline">标签</dg-badge>
35
+ ```
36
+
37
+ ### dg-skeleton
38
+ ```html
39
+ <dg-skeleton style="width:200px;height:20px;"></dg-skeleton>
40
+ ```
41
+
42
+ ---
43
+
44
+ ## 表单组件
45
+
46
+ ### dg-form
47
+ ```html
48
+ <dg-form>
49
+ <dg-form-item label="字段名" required>
50
+ <dg-input name="field" placeholder="请输入" />
51
+ <dg-form-message></dg-form-message>
52
+ </dg-form-item>
53
+ <dg-button type="submit">提交</dg-button>
54
+ </dg-form>
55
+ ```
56
+
57
+ ### dg-input / dg-textarea / dg-select
58
+ ```html
59
+ <dg-input type="text|password|email|number" placeholder="" value="" disabled />
60
+ <dg-textarea placeholder="" rows="4" />
61
+ <dg-select value="" placeholder="请选择">
62
+ <dg-select-item value="a">选项 A</dg-select-item>
63
+ <dg-select-item value="b">选项 B</dg-select-item>
64
+ </dg-select>
65
+ ```
66
+
67
+ ### dg-checkbox / dg-switch / dg-radio-group
68
+ ```html
69
+ <dg-checkbox checked>同意条款</dg-checkbox>
70
+ <dg-switch checked />
71
+ <dg-radio-group value="a">
72
+ <dg-radio-item value="a">选项 A</dg-radio-item>
73
+ <dg-radio-item value="b">选项 B</dg-radio-item>
74
+ </dg-radio-group>
75
+ ```
76
+
77
+ ---
78
+
79
+ ## 数据展示
80
+
81
+ ### dg-table
82
+ ```html
83
+ <dg-table source="db/order" data-dg-props='{"columns":[{"key":"name","title":"名称"},{"key":"status","title":"状态"}]}'></dg-table>
84
+ ```
85
+
86
+ ### dg-tabs
87
+ ```html
88
+ <dg-tabs default-value="tab1">
89
+ <dg-tabs-list>
90
+ <dg-tabs-trigger value="tab1">标签一</dg-tabs-trigger>
91
+ <dg-tabs-trigger value="tab2">标签二</dg-tabs-trigger>
92
+ </dg-tabs-list>
93
+ <dg-tabs-content value="tab1">内容一</dg-tabs-content>
94
+ <dg-tabs-content value="tab2">内容二</dg-tabs-content>
95
+ </dg-tabs>
96
+ ```
97
+
98
+ ---
99
+
100
+ ## 覆盖层组件(trigger/content 协议)
101
+
102
+ ### dg-dialog
103
+ ```html
104
+ <dg-dialog>
105
+ <dg-dialog-trigger>
106
+ <dg-button>打开弹窗</dg-button>
107
+ </dg-dialog-trigger>
108
+ <dg-dialog-content>
109
+ <dg-dialog-header>
110
+ <dg-dialog-title>标题</dg-dialog-title>
111
+ </dg-dialog-header>
112
+ <p>内容</p>
113
+ <dg-dialog-footer>
114
+ <dg-button variant="outline" data-close-dialog>取消</dg-button>
115
+ <dg-button>确认</dg-button>
116
+ </dg-dialog-footer>
117
+ </dg-dialog-content>
118
+ </dg-dialog>
119
+ ```
120
+
121
+ ### dg-sheet
122
+ ```html
123
+ <dg-sheet side="right|left|top|bottom">
124
+ <dg-sheet-trigger><dg-button>打开</dg-button></dg-sheet-trigger>
125
+ <dg-sheet-content>
126
+ <dg-sheet-header><dg-sheet-title>标题</dg-sheet-title></dg-sheet-header>
127
+ <p>内容</p>
128
+ </dg-sheet-content>
129
+ </dg-sheet>
130
+ ```
131
+
132
+ ### dg-dropdown-menu
133
+ ```html
134
+ <dg-dropdown-menu>
135
+ <dg-dropdown-menu-trigger><dg-button variant="ghost">操作</dg-button></dg-dropdown-menu-trigger>
136
+ <dg-dropdown-menu-content>
137
+ <dg-dropdown-menu-item>编辑</dg-dropdown-menu-item>
138
+ <dg-dropdown-menu-separator />
139
+ <dg-dropdown-menu-item variant="destructive">删除</dg-dropdown-menu-item>
140
+ </dg-dropdown-menu-content>
141
+ </dg-dropdown-menu>
142
+ ```
143
+
144
+ ### dg-tooltip
145
+ ```html
146
+ <dg-tooltip content="提示文字">
147
+ <dg-button variant="ghost" size="icon">?</dg-button>
148
+ </dg-tooltip>
149
+ ```
150
+
151
+ ### dg-popover
152
+ ```html
153
+ <dg-popover>
154
+ <dg-popover-trigger><dg-button>打开</dg-button></dg-popover-trigger>
155
+ <dg-popover-content>内容</dg-popover-content>
156
+ </dg-popover>
157
+ ```
158
+
159
+ ---
160
+
161
+ ## 布局组件
162
+
163
+ ### dg-separator
164
+ ```html
165
+ <dg-separator orientation="horizontal|vertical" />
166
+ ```
167
+
168
+ ### dg-scroll-area
169
+ ```html
170
+ <dg-scroll-area style="height:400px;">
171
+ 长内容...
172
+ </dg-scroll-area>
173
+ ```
174
+
175
+ ### dg-avatar
176
+ ```html
177
+ <dg-avatar>
178
+ <dg-avatar-image src="/path/to/img.jpg" alt="用户名" />
179
+ <dg-avatar-fallback>UN</dg-avatar-fallback>
180
+ </dg-avatar>
181
+ ```
182
+
183
+ ---
184
+
185
+ ## 状态 / 反馈
186
+
187
+ ### dg-alert
188
+ ```html
189
+ <dg-alert variant="default|destructive">
190
+ <dg-alert-title>标题</dg-alert-title>
191
+ <dg-alert-description>描述</dg-alert-description>
192
+ </dg-alert>
193
+ ```
194
+
195
+ ### dg-progress
196
+ ```html
197
+ <dg-progress value="60" max="100" />
198
+ ```