@k-table/report 1.0.1 → 1.0.4

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
@@ -212,6 +212,52 @@ table.kt-sheet-region-table td {
212
212
  background: var(--kt-primary-soft, #e5e6eb);
213
213
  color: var(--kt-forms-text, var(--kt-text, #1d2129));
214
214
  }
215
+ .kt-preview-body {
216
+ display: flex;
217
+ align-items: flex-start;
218
+ gap: 12px;
219
+ }
220
+ .kt-preview-main {
221
+ flex: 1 1 auto;
222
+ min-width: 0;
223
+ }
224
+ .kt-preview-options-panel {
225
+ flex: 0 0 auto;
226
+ width: 232px;
227
+ box-sizing: border-box;
228
+ padding: 4px 12px 12px 0;
229
+ border-right: 1px solid var(--kt-forms-border, var(--kt-border, #f0e6d8));
230
+ position: sticky;
231
+ top: 48px;
232
+ align-self: flex-start;
233
+ max-height: calc(100vh - 160px);
234
+ overflow-y: auto;
235
+ font-size: 12px;
236
+ color: var(--kt-forms-text, var(--kt-text, #1d2129));
237
+ }
238
+ .kt-preview-options-section {
239
+ display: flex;
240
+ flex-direction: column;
241
+ align-items: flex-start;
242
+ gap: 8px;
243
+ margin-bottom: 16px;
244
+ }
245
+ .kt-preview-options-section:last-child {
246
+ margin-bottom: 0;
247
+ }
248
+ .kt-preview-options-section-title {
249
+ font-size: 12px;
250
+ font-weight: 500;
251
+ color: var(--kt-forms-text-secondary, var(--kt-text-secondary, #8c8c8c));
252
+ }
253
+ .kt-preview-options-toggle--open {
254
+ color: var(--kt-primary, #165dff) !important;
255
+ border-color: var(--kt-primary, #165dff) !important;
256
+ background: var(--kt-primary-soft, rgba(22, 93, 255, 0.12)) !important;
257
+ }
258
+ .kt-preview-page-chrome .kt-preview-options-panel {
259
+ top: 16px;
260
+ }
215
261
  .kt-preview-page-chrome {
216
262
  box-sizing: border-box;
217
263
  min-height: calc(100vh - 104px);
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;
@@ -538,14 +548,23 @@ export function KtReportPreviewSurface(props: {
538
548
  pageChrome?: PageChromeRegions | null;
539
549
  onPageChromeCommit?: (next: PageChromeRegions, remember: PageChromeRemember) => void;
540
550
  watermarkOverride?: unknown;
551
+ /** 只构建指定 sheet(宿主分副本/隐藏副页场景) */
552
+ sheetIds?: string[];
553
+ /** 文档后处理(宿主业务变换):内建构建完成、空白变换之后调用 */
554
+ transformDocument?: (doc: unknown, ctx: { fieldData: ReportFieldData }) => unknown;
541
555
  }): JSX.Element;
542
556
  export function KtReportCatalog(props: {
543
557
  store?: ArtifactStore;
544
558
  kinds?: ArtifactKind[];
545
559
  onOpenDesign: (id: string) => void;
546
- onOpenPreview: (id: string) => void;
560
+ /** 不提供则行内无「预览」入口(如母版等不可独立预览的 kind) */
561
+ onOpenPreview?: (id: string) => void;
547
562
  /** 提供且 features.fill 开启时,行内出现「录入」入口 */
548
563
  onOpenFill?: (id: string) => void;
564
+ /** 宿主行操作插槽:追加在内建操作之后(如启用开关/变体/提升/重置等宿主语义) */
565
+ renderRowActions?: (row: ArtifactMeta, ctx: { reload: () => void }) => ReactNode;
566
+ /** 行选择(宿主批量操作):提供后出现勾选列 */
567
+ rowSelection?: { selectedIds: string[]; onChange: (ids: string[]) => void };
549
568
  }): JSX.Element;
550
569
  export function KtThemeBar(props?: { variant?: "default" | "onPrimary" }): JSX.Element;
551
570
  export function KtBrandBar(props: { title: string; themeBar?: boolean }): JSX.Element;
@@ -578,7 +597,10 @@ export function validateFieldsFormulas(fields: FormulaField[]): string | null;
578
597
  export function prepageSaveError(workbook: unknown): string | null;
579
598
  export function readPrepage(workbook: unknown): { sheetId?: string; rules: unknown[] } | null;
580
599
  export function isPrepageSheet(workbook: unknown, sheetId: string): boolean;
581
- 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
+ };
582
604
  export function workbookToKtlText(workbook: unknown): string;
583
605
 
584
606
  // ---- C2a:实例填报(KtReportFill + 画布三件套) ----