@k-table/report 1.0.0 → 1.0.3

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/dist/index.css CHANGED
@@ -136,9 +136,9 @@ table.kt-sheet-region-table td {
136
136
  padding: 6px 8px;
137
137
  border-bottom-width: 1px;
138
138
  border-bottom-style: solid;
139
- border-bottom-color: #e5e6eb;
140
- background: #fff;
141
- color: #1d2129;
139
+ border-bottom-color: var(--kt-forms-border, var(--kt-border, #e5e6eb));
140
+ background: var(--kt-forms-chrome-bar, var(--kt-header-bg, #fff));
141
+ color: var(--kt-forms-text, var(--kt-text, #1d2129));
142
142
  }
143
143
  .kt-compose-preview-pane-head__start {
144
144
  display: flex;
@@ -156,29 +156,28 @@ table.kt-sheet-region-table td {
156
156
  .kt-preview-print-bar {
157
157
  display: flex;
158
158
  align-items: center;
159
+ flex-wrap: wrap;
159
160
  gap: 8px;
160
- height: 28px;
161
- min-height: 28px;
161
+ min-height: 40px;
162
162
  margin-bottom: 8px;
163
163
  box-sizing: border-box;
164
+ color: var(--kt-forms-text, var(--kt-text, #1d2129));
164
165
  }
165
166
  .kt-preview-print-bar-main,
166
167
  .kt-preview-print-bar-end,
167
168
  .kt-preview-zoom {
168
169
  display: flex;
169
170
  align-items: center;
170
- min-height: 0;
171
- height: 28px;
171
+ min-height: 28px;
172
172
  }
173
173
  .kt-preview-print-bar-main {
174
174
  min-width: 0;
175
- flex: 1;
175
+ flex: 1 1 auto;
176
176
  gap: 8px;
177
- flex-wrap: nowrap;
178
- overflow-x: auto;
177
+ flex-wrap: wrap;
179
178
  }
180
179
  .kt-preview-print-bar-end {
181
- flex-shrink: 0;
180
+ flex: 0 0 auto;
182
181
  margin-left: auto;
183
182
  gap: 4px;
184
183
  }
@@ -191,34 +190,48 @@ table.kt-sheet-region-table td {
191
190
  height: 28px;
192
191
  line-height: 28px;
193
192
  font-size: 12px;
194
- color: #8c8c8c;
193
+ color: var(--kt-forms-text-secondary, var(--kt-text-secondary, #8c8c8c));
195
194
  white-space: nowrap;
196
195
  }
197
196
  .kt-preview-fill-icon-btn {
198
197
  display: inline-flex;
199
198
  align-items: center;
200
199
  justify-content: center;
201
- width: 24px;
202
- height: 24px;
200
+ width: 28px;
201
+ height: 28px;
203
202
  padding: 0;
204
203
  border-width: 0;
205
204
  background: transparent;
206
- color: #4e5969;
205
+ color: var(--kt-forms-text-secondary, var(--kt-text-secondary, #4e5969));
207
206
  cursor: pointer;
208
207
  border-radius: 2px;
209
208
  flex-shrink: 0;
210
209
  font-size: 16px;
211
210
  }
212
211
  .kt-preview-fill-icon-btn:hover {
213
- background: #e5e6eb;
214
- color: #1d2129;
212
+ background: var(--kt-primary-soft, #e5e6eb);
213
+ color: var(--kt-forms-text, var(--kt-text, #1d2129));
215
214
  }
216
215
  .kt-preview-page-chrome {
217
216
  box-sizing: border-box;
218
217
  min-height: calc(100vh - 104px);
219
- background: #fff;
218
+ background: var(--kt-forms-preview-host, var(--kt-page-bg, #f2f3f5));
219
+ color: var(--kt-forms-text, var(--kt-text));
220
220
  padding: 16px;
221
221
  }
222
+ .kt-preview--modal {
223
+ min-width: 0;
224
+ min-height: 0;
225
+ }
226
+ .kt-preview--modal .kt-preview-print-bar {
227
+ position: sticky;
228
+ top: 0;
229
+ z-index: 2;
230
+ background: var(--kt-forms-preview-host, var(--kt-page-bg, #f2f3f5));
231
+ }
232
+ .kt-preview--modal .kt-report-preview-host {
233
+ padding-top: 8px;
234
+ }
222
235
  .kt-preview-page-chrome--fill {
223
236
  min-height: 100vh;
224
237
  padding: 8px;
package/dist/index.d.ts CHANGED
@@ -226,8 +226,8 @@ export interface KtPreviewHooks {
226
226
  ) => void;
227
227
  }
228
228
  export interface KtDesignerHooks {
229
- /** 业务绑定字段目录,并入设计器字段面板 */
230
- bindingSchemas?: unknown[];
229
+ /** 业务绑定字段目录,并入设计器字段面板;函数形式按当前 artifact 动态解析 */
230
+ bindingSchemas?: unknown[] | ((ctx: { artifactId?: string }) => unknown[] | undefined);
231
231
  /** 公式试算(宿主业务 API,按字段);缺省时公式面板只编辑不试算 */
232
232
  trialFormula?: (ctx: {
233
233
  artifactId?: string;
@@ -433,7 +433,17 @@ export function KtReportDesigner(props: {
433
433
  allowImportPack?: boolean;
434
434
  extraActions?: ReactNode;
435
435
  leadingActions?: ReactNode;
436
+ /** 宿主桥(如 AI 设计助手):挂载后注入当前稿读写能力 */
437
+ bridgeRef?: { current: KtReportDesignerBridge | null };
438
+ /** 只读:隐藏保存/另存/导入入口(权限降级;画布仍可交互但不持久化) */
439
+ readOnly?: boolean;
436
440
  }): JSX.Element;
441
+ /** 设计器宿主桥:读当前 KTL / 应用 KTL(带诊断)/ 当前预览字段袋文本 */
442
+ export type KtReportDesignerBridge = {
443
+ getCurrentKtl: () => string;
444
+ applyKtl: (ktl: string) => { ok: boolean; diagnostics?: { severity: string; message: string }[] };
445
+ getFieldDataText?: () => string;
446
+ };
437
447
  export function KtReportPreview(props: {
438
448
  artifact?: Artifact;
439
449
  artifactId?: string;
@@ -466,6 +476,8 @@ export function KtReportPreview(props: {
466
476
  next: { showOpinion: boolean; showQr: boolean; showReviewer: boolean },
467
477
  remember: { rememberUnit?: boolean; rememberMaster?: boolean },
468
478
  ) => void;
479
+ /** page = 整页预览台;modal = 设计器弹层 */
480
+ chrome?: "page" | "modal";
469
481
  }): JSX.Element;
470
482
  // C3:低层逃生舱与通用预览工具
471
483
  export type PageChromeRegions = { showOpinion: boolean; showQr: boolean; showReviewer: boolean };
@@ -536,14 +548,23 @@ export function KtReportPreviewSurface(props: {
536
548
  pageChrome?: PageChromeRegions | null;
537
549
  onPageChromeCommit?: (next: PageChromeRegions, remember: PageChromeRemember) => void;
538
550
  watermarkOverride?: unknown;
551
+ /** 只构建指定 sheet(宿主分副本/隐藏副页场景) */
552
+ sheetIds?: string[];
553
+ /** 文档后处理(宿主业务变换):内建构建完成、空白变换之后调用 */
554
+ transformDocument?: (doc: unknown, ctx: { fieldData: ReportFieldData }) => unknown;
539
555
  }): JSX.Element;
540
556
  export function KtReportCatalog(props: {
541
557
  store?: ArtifactStore;
542
558
  kinds?: ArtifactKind[];
543
559
  onOpenDesign: (id: string) => void;
544
- onOpenPreview: (id: string) => void;
560
+ /** 不提供则行内无「预览」入口(如母版等不可独立预览的 kind) */
561
+ onOpenPreview?: (id: string) => void;
545
562
  /** 提供且 features.fill 开启时,行内出现「录入」入口 */
546
563
  onOpenFill?: (id: string) => void;
564
+ /** 宿主行操作插槽:追加在内建操作之后(如启用开关/变体/提升/重置等宿主语义) */
565
+ renderRowActions?: (row: ArtifactMeta, ctx: { reload: () => void }) => ReactNode;
566
+ /** 行选择(宿主批量操作):提供后出现勾选列 */
567
+ rowSelection?: { selectedIds: string[]; onChange: (ids: string[]) => void };
547
568
  }): JSX.Element;
548
569
  export function KtThemeBar(props?: { variant?: "default" | "onPrimary" }): JSX.Element;
549
570
  export function KtBrandBar(props: { title: string; themeBar?: boolean }): JSX.Element;
@@ -576,7 +597,10 @@ export function validateFieldsFormulas(fields: FormulaField[]): string | null;
576
597
  export function prepageSaveError(workbook: unknown): string | null;
577
598
  export function readPrepage(workbook: unknown): { sheetId?: string; rules: unknown[] } | null;
578
599
  export function isPrepageSheet(workbook: unknown, sheetId: string): boolean;
579
- export function parseKtlSafe(ktl: string): { workbook: any; diagnostics: { severity: string; message: string }[] };
600
+ export function parseKtlSafe(ktl: string): {
601
+ workbook: import("@k-table/sheet-core").TemplateWorkbookState | null;
602
+ diagnostics: { severity: string; message: string }[];
603
+ };
580
604
  export function workbookToKtlText(workbook: unknown): string;
581
605
 
582
606
  // ---- C2a:实例填报(KtReportFill + 画布三件套) ----
@@ -670,6 +694,7 @@ export const KtReportFill: React.ForwardRefExoticComponent<
670
694
  request?: <T>(path: string, init?: RequestInit) => Promise<T>;
671
695
  scheme?: any;
672
696
  onSchemeChange?: (s: any, b: any) => void;
697
+ loadMaster?: (masterId: string) => Promise<string | null>;
673
698
  };
674
699
  dicts?: Record<string, { value: string; label: string }[]>;
675
700
  className?: string;