@object-ui/plugin-detail 16.1.0 → 17.2.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.
@@ -1,7 +1,15 @@
1
1
  import { default as React } from 'react';
2
- import { RecordActivityComponentProps } from '@object-ui/types';
2
+ import { FeedItem, RecordActivityComponentProps } from '@object-ui/types';
3
3
  export interface RecordActivityRendererProps {
4
- schema?: RecordActivityComponentProps & Record<string, any>;
4
+ schema?: RecordActivityComponentProps & {
5
+ /** Host-supplied feed. When present the block presents it instead of
6
+ * fetching — the `record:history` `entries` convention. */
7
+ items?: FeedItem[];
8
+ /** Host-supplied loading flag, paired with `items`. */
9
+ loading?: boolean;
10
+ properties?: Record<string, any>;
11
+ [k: string]: any;
12
+ };
5
13
  className?: string;
6
14
  [k: string]: any;
7
15
  }
@@ -1 +1 @@
1
- {"version":3,"file":"record-activity.d.ts","sourceRoot":"","sources":["../../src/renderers/record-activity.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,kBAAkB,CAAC;AAQrE,MAAM,WAAW,2BAA2B;IAC1C,MAAM,CAAC,EAAE,4BAA4B,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;CAClB;AAED,eAAO,MAAM,sBAAsB,EAAE,KAAK,CAAC,EAAE,CAAC,2BAA2B,CAgBxE,CAAC;AAEF,eAAe,sBAAsB,CAAC"}
1
+ {"version":3,"file":"record-activity.d.ts","sourceRoot":"","sources":["../../src/renderers/record-activity.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,QAAQ,EAAE,4BAA4B,EAAE,MAAM,kBAAkB,CAAC;AAgB/E,MAAM,WAAW,2BAA2B;IAC1C,MAAM,CAAC,EAAE,4BAA4B,GAAG;QACtC;oEAC4D;QAC5D,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC;QACnB,uDAAuD;QACvD,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACjC,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;KAClB,CAAC;IACF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;CAClB;AAED,eAAO,MAAM,sBAAsB,EAAE,KAAK,CAAC,EAAE,CAAC,2BAA2B,CAiKxE,CAAC;AAEF,eAAe,sBAAsB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"record-details.d.ts","sourceRoot":"","sources":["../../src/renderers/record-details.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AAgBpE,MAAM,WAAW,0BAA0B;IACzC,MAAM,CAAC,EAAE,2BAA2B,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;CAClB;AAED,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC,0BAA0B,CAmOtE,CAAC;AAEF,eAAe,qBAAqB,CAAC"}
1
+ {"version":3,"file":"record-details.d.ts","sourceRoot":"","sources":["../../src/renderers/record-details.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AAYpE,MAAM,WAAW,0BAA0B;IACzC,MAAM,CAAC,EAAE,2BAA2B,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;CAClB;AAED,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC,0BAA0B,CA2OtE,CAAC;AAEF,eAAe,qBAAqB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"record-quick-actions.d.ts","sourceRoot":"","sources":["../../src/renderers/record-quick-actions.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAM1B,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAOjE,MAAM,WAAW,+BAA+B;IAC9C,MAAM,CAAC,EAAE;QACP,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC;QACtB,QAAQ,CAAC,EAAE,cAAc,CAAC;QAC1B,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;QAC/B,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;QACnC,IAAI,CAAC,EAAE,IAAI,GAAG,SAAS,GAAG,IAAI,CAAC;QAC/B,OAAO,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,OAAO,GAAG,aAAa,GAAG,MAAM,CAAC;QACjF,IAAI,CAAC,EAAE;YAAE,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QAC1B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACjC,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;KAClB,CAAC;IACF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;CAClB;AAED,eAAO,MAAM,0BAA0B,EAAE,KAAK,CAAC,EAAE,CAAC,+BAA+B,CAsIhF,CAAC;AA0CF,eAAe,0BAA0B,CAAC"}
1
+ {"version":3,"file":"record-quick-actions.d.ts","sourceRoot":"","sources":["../../src/renderers/record-quick-actions.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAM1B,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAOjE,MAAM,WAAW,+BAA+B;IAC9C,MAAM,CAAC,EAAE;QACP,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC;QACtB,QAAQ,CAAC,EAAE,cAAc,CAAC;QAC1B,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;QAC/B,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;QACnC,IAAI,CAAC,EAAE,IAAI,GAAG,SAAS,GAAG,IAAI,CAAC;QAC/B,OAAO,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,OAAO,GAAG,aAAa,GAAG,MAAM,CAAC;QACjF,IAAI,CAAC,EAAE;YAAE,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QAC1B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACjC,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;KAClB,CAAC;IACF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;CAClB;AAED,eAAO,MAAM,0BAA0B,EAAE,KAAK,CAAC,EAAE,CAAC,+BAA+B,CAsIhF,CAAC;AA4CF,eAAe,0BAA0B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"record-related-list.d.ts","sourceRoot":"","sources":["../../src/renderers/record-related-list.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,kBAAkB,CAAC;AA2BxE,MAAM,WAAW,8BAA8B;IAC7C,MAAM,CAAC,EAAE,+BAA+B,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;CAClB;AAED,eAAO,MAAM,yBAAyB,EAAE,KAAK,CAAC,EAAE,CAAC,8BAA8B,CA2L9E,CAAC;AAEF,eAAe,yBAAyB,CAAC"}
1
+ {"version":3,"file":"record-related-list.d.ts","sourceRoot":"","sources":["../../src/renderers/record-related-list.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAM1B,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,kBAAkB,CAAC;AA4BxE,MAAM,WAAW,8BAA8B;IAC7C,MAAM,CAAC,EAAE,+BAA+B,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;CAClB;AAED,eAAO,MAAM,yBAAyB,EAAE,KAAK,CAAC,EAAE,CAAC,8BAA8B,CA2L9E,CAAC;AAEF,eAAe,yBAAyB,CAAC"}
@@ -0,0 +1,93 @@
1
+ import { FeedItem, FeedItemType } from '@object-ui/types';
2
+ import { FeedFilterMode } from '../RecordActivityTimeline';
3
+ /** Spec default for `RecordActivityProps.limit`. */
4
+ export declare const DEFAULT_ACTIVITY_LIMIT = 20;
5
+ /**
6
+ * `sys_activity.type` → `FeedItem.type`.
7
+ *
8
+ * Identical to the map `RecordDetailView` uses when it merges `sys_activity`
9
+ * into the discussion feed, deliberately: one table, one reading. Two renderers
10
+ * that disagree about what a `created` row IS would put the same record's
11
+ * history under two different icons depending on which block an author reached
12
+ * for, so the richer `record_create` / `record_delete` / `sharing` feed types
13
+ * the spec offers are NOT used here — adopting them is a change to that shared
14
+ * map, not to this block.
15
+ *
16
+ * `commented` / `mentioned` map to nothing because their content lives in
17
+ * `sys_comment` (with reactions and threading attached) — a host that has both
18
+ * merges the comment rows, and the block on its own has no comment write path
19
+ * to pair them with. `login` / `logout` are account events, not record
20
+ * activity.
21
+ */
22
+ export declare const ACTIVITY_TYPE_TO_FEED_TYPE: Readonly<Record<string, FeedItemType | undefined>>;
23
+ /** A row as `sys_activity` returns it. Loose on purpose: the block reads a
24
+ * system table it does not own, and an unknown column is not an error. */
25
+ export interface SysActivityRow {
26
+ id?: string | number;
27
+ type?: string;
28
+ summary?: string | null;
29
+ timestamp?: string | null;
30
+ created_at?: string | null;
31
+ actor_name?: string | null;
32
+ actor_avatar_url?: string | null;
33
+ source_object?: string | null;
34
+ source_id?: string | number | null;
35
+ [k: string]: unknown;
36
+ }
37
+ /**
38
+ * Coerce an authored `filterMode` to a value the timeline understands.
39
+ *
40
+ * Unknown values fall back to `'all'` rather than being passed through: a
41
+ * `<Select>` handed a value with no matching item renders blank and the
42
+ * dropdown reads as broken. Same posture as objectui#3151 — an unrecognised
43
+ * filter token is skipped, never turned into a filter that can't match.
44
+ */
45
+ export declare function normalizeFilterMode(value: unknown): FeedFilterMode;
46
+ /** Keep only the `types` entries the spec actually defines. */
47
+ export declare function normalizeFeedTypes(value: unknown): FeedItemType[] | undefined;
48
+ /** Coerce `limit` to a positive integer, falling back to the spec default. */
49
+ export declare function normalizeLimit(value: unknown): number;
50
+ /**
51
+ * Timestamp of a `sys_activity` row.
52
+ *
53
+ * Prefers the explicit `timestamp` column but tolerates older rows where the
54
+ * driver leaked the literal default `"NOW()"` — `created_at` is always a real
55
+ * ISO date. Copied from `RecordDetailView`'s merge for the same reason the
56
+ * type map is: same rows, same quirk.
57
+ */
58
+ export declare function activityTimestamp(row: SysActivityRow): string;
59
+ /**
60
+ * One `sys_activity` row → one {@link FeedItem}, or `null` when the row is not
61
+ * record activity (see {@link ACTIVITY_TYPE_TO_FEED_TYPE}).
62
+ */
63
+ export declare function activityRowToFeedItem(row: SysActivityRow, systemActorLabel: string): FeedItem | null;
64
+ /** The subset of `RecordActivityProps` that decides which items survive. */
65
+ export interface FeedConfigFilters {
66
+ types?: unknown;
67
+ showCompleted?: unknown;
68
+ unifiedTimeline?: unknown;
69
+ limit?: unknown;
70
+ }
71
+ export interface AppliedFeed {
72
+ /** Items to render, newest last (chronological, as the timeline reads). */
73
+ items: FeedItem[];
74
+ /** How many items the filters kept before `limit` trimmed the page. */
75
+ total: number;
76
+ /** True when `total` exceeds the current page — drives "Load more". */
77
+ hasMore: boolean;
78
+ }
79
+ /**
80
+ * Apply the block's declared filters to a feed, whatever its source.
81
+ *
82
+ * Order matters and is asserted: structural exclusions first
83
+ * (`unifiedTimeline`, `showCompleted`), then the explicit `types` allow-list,
84
+ * then pagination — so `limit` counts items the author can actually see.
85
+ *
86
+ * `pageSize` is the effective window (`limit` on first render, grown by
87
+ * "Load more"); it is separate from `config.limit` so paging does not have to
88
+ * rewrite the authored config.
89
+ */
90
+ export declare function applyFeedConfig(items: readonly FeedItem[], config: FeedConfigFilters, pageSize: number): AppliedFeed;
91
+ /** Sort a feed chronologically and de-duplicate by id (feeds are append-only). */
92
+ export declare function mergeFeedItems(...groups: readonly FeedItem[][]): FeedItem[];
93
+ //# sourceMappingURL=recordActivityFeed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recordActivityFeed.d.ts","sourceRoot":"","sources":["../../src/renderers/recordActivityFeed.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAKhE,oDAAoD;AACpD,eAAO,MAAM,sBAAsB,KAAK,CAAC;AAEzC;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,0BAA0B,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS,CAAC,CAYzF,CAAC;AAgBF;2EAC2E;AAC3E,MAAM,WAAW,cAAc;IAC7B,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACnC,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACtB;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,cAAc,CAIlE;AAED,+DAA+D;AAC/D,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,YAAY,EAAE,GAAG,SAAS,CAM7E;AAED,8EAA8E;AAC9E,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAGrD;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM,CAM7D;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,cAAc,EACnB,gBAAgB,EAAE,MAAM,GACvB,QAAQ,GAAG,IAAI,CAejB;AAED,4EAA4E;AAC5E,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,2EAA2E;IAC3E,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,uEAAuE;IACvE,KAAK,EAAE,MAAM,CAAC;IACd,uEAAuE;IACvE,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,SAAS,QAAQ,EAAE,EAC1B,MAAM,EAAE,iBAAiB,EACzB,QAAQ,EAAE,MAAM,GACf,WAAW,CAoCb;AAED,kFAAkF;AAClF,wBAAgB,cAAc,CAAC,GAAG,MAAM,EAAE,SAAS,QAAQ,EAAE,EAAE,GAAG,QAAQ,EAAE,CAU3E"}
@@ -5,7 +5,7 @@ import { detectStatusField } from '@object-ui/types';
5
5
  export interface ObjectDefLike {
6
6
  name?: string;
7
7
  label?: string;
8
- fields?: Record<string, ObjectFieldLike>;
8
+ fields?: Record<string, ObjectDefFieldLike>;
9
9
  /** Semantic role (ADR-0085): the linear-lifecycle field driving the
10
10
  * `record:path` stepper. `false` = the status-shaped field is NOT a
11
11
  * linear flow — suppress stage detection entirely (#2065). */
@@ -41,8 +41,32 @@ export interface ObjectDefLike {
41
41
  /** @deprecated pre-ADR-0085 pair; honoured by the shared derivation. */
42
42
  collapsed?: boolean;
43
43
  }>;
44
+ /**
45
+ * Spec `enable` capability toggles. Only `files` is read here:
46
+ * `enable.files === true` (opt-in, #2727) makes the synthesizer emit an
47
+ * Attachments tab beside Details/Related (objectstack#4358).
48
+ */
49
+ enable?: {
50
+ files?: boolean;
51
+ [key: string]: any;
52
+ };
44
53
  }
45
- export interface ObjectFieldLike {
54
+ /**
55
+ * The field keys this synthesizer reads off an {@link ObjectDefLike}.
56
+ *
57
+ * Renamed off the spec's `ObjectFieldLike` (objectui#3161, objectstack#4115
58
+ * ledger batch 7). Same two words, different subsystem: the spec's
59
+ * `ObjectFieldLike` (`@objectstack/spec/system`) is the duck type
60
+ * `translateObject` reads — `name`/`label`/`help`/`description`/`options`, i.e.
61
+ * exactly the TRANSLATABLE keys — and it ends in `[key: string]: any`, so
62
+ * deriving from it would trade this precise list for a bag that accepts
63
+ * anything (the objectstack#4075 mechanism, on the spec's side this time).
64
+ * This one is the LAYOUT input: `type` picks the widget, `group` matches a
65
+ * `fieldGroups[].key`, `hidden` drops the field — three keys the spec's
66
+ * declaration does not model and cannot report a typo in.
67
+ * Pinned by `__tests__/spec-symbol-batch7.test.ts`.
68
+ */
69
+ export interface ObjectDefFieldLike {
46
70
  name?: string;
47
71
  label?: string;
48
72
  type?: string;
@@ -72,6 +96,8 @@ export interface BuildPageOptions {
72
96
  }>;
73
97
  /** Suppress the auto-appended `record:discussion` slot. */
74
98
  hideDiscussion?: boolean;
99
+ /** Suppress the auto-emitted Attachments tab (`enable.files`, objectstack#4358). */
100
+ hideAttachments?: boolean;
75
101
  /** Suppress the auto-prepended `record:highlights` strip. */
76
102
  hideHighlights?: boolean;
77
103
  /** Suppress the auto-prepended `record:path` stepper. */
@@ -298,11 +324,17 @@ export declare function buildDefaultDetails(def: ObjectDefLike | undefined, sect
298
324
  * call `buildDefaultTabs(def, opts)` and splice their tab into
299
325
  * `.items[]`.
300
326
  */
301
- export declare function buildDefaultTabs(def: ObjectDefLike | undefined, options?: Pick<BuildPageOptions, 'sections' | 'related' | 'showActivity' | 'history' | 'highlightFields' | 'statusField' | 'hideRelatedTab' | 'relatedLayout'>): any;
327
+ export declare function buildDefaultTabs(def: ObjectDefLike | undefined, options?: Pick<BuildPageOptions, 'sections' | 'related' | 'showActivity' | 'history' | 'highlightFields' | 'statusField' | 'hideRelatedTab' | 'relatedLayout' | 'hideAttachments'>): any;
302
328
  /**
303
329
  * Sub-builder: the inline `record:discussion` footer slot.
304
330
  */
305
331
  export declare function buildDefaultDiscussion(): any;
332
+ /**
333
+ * Sub-builder: the `record:attachments` panel (#2727). Emitted only when the
334
+ * object opts in via `enable.files: true` — the same gate the server enforces
335
+ * on `sys_attachment` rows (403 FILES_DISABLED otherwise).
336
+ */
337
+ export declare function buildDefaultAttachments(): any;
306
338
  /**
307
339
  * Synthesize the canonical Page schema for an object's default detail
308
340
  * page.
@@ -311,6 +343,8 @@ export declare function buildDefaultDiscussion(): any;
311
343
  * { type:'record', template:'full-width', regions:[ { name:'main',
312
344
  * components: [page:header, record:highlights?, record:path?,
313
345
  * page:tabs, record:discussion?] } ] }
346
+ * For `enable.files: true` objects the tabs node carries a peer
347
+ * Attachments tab (`record:attachments` — objectstack#4358).
314
348
  *
315
349
  * Notes:
316
350
  * - The `record:details` tab content is registered separately and
@@ -1 +1 @@
1
- {"version":3,"file":"buildDefaultPageSchema.d.ts","sourceRoot":"","sources":["../../src/synth/buildDefaultPageSchema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"buildDefaultPageSchema.d.ts","sourceRoot":"","sources":["../../src/synth/buildDefaultPageSchema.ts"],"names":[],"mappings":"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"}
@@ -1,22 +1,17 @@
1
- /**
2
- * ObjectUI
3
- * Copyright (c) 2024-present ObjectStack Inc.
4
- *
5
- * This source code is licensed under the MIT license found in the
6
- * LICENSE file in the root directory of this source tree.
7
- */
1
+ import { createSafeTranslation } from '@object-ui/i18n';
8
2
  /**
9
3
  * Create a safe translation hook with fallback to defaults.
10
- * Follows the same pattern as useGridTranslation / useListViewTranslation.
4
+ *
5
+ * Thin alias over `@object-ui/i18n`'s `createSafeTranslation` — this used to
6
+ * be a local re-implementation that wrapped the hook call in try/catch, which
7
+ * violates rules-of-hooks (objectui#2879, same class as #2595/#2596).
8
+ * `useObjectTranslation` is provider-safe and never throws, so the testKey
9
+ * probe alone carries the "translations not configured" fallback.
11
10
  *
12
11
  * @param defaults - Fallback English translations keyed by i18n key
13
12
  * @param testKey - A key to test if i18n is properly configured
14
13
  */
15
- export declare function createSafeTranslationHook(defaults: Record<string, string>, testKey: string): () => {
16
- t: (key: string, options?: Record<string, unknown>) => string;
17
- } | {
18
- t: import('i18next').TFunction<string, undefined>;
19
- };
14
+ export declare const createSafeTranslationHook: typeof createSafeTranslation;
20
15
  /**
21
16
  * Default English translations for detail view components.
22
17
  * Used as fallback when no I18nProvider is available.
@@ -28,7 +23,9 @@ export declare const DETAIL_DEFAULT_TRANSLATIONS: Record<string, string>;
28
23
  */
29
24
  export declare const useDetailTranslation: () => {
30
25
  t: (key: string, options?: Record<string, unknown>) => string;
26
+ language: string;
31
27
  } | {
32
28
  t: import('i18next').TFunction<string, undefined>;
29
+ language: string;
33
30
  };
34
31
  //# sourceMappingURL=useDetailTranslation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useDetailTranslation.d.ts","sourceRoot":"","sources":["../src/useDetailTranslation.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAChC,OAAO,EAAE,MAAM;aAQE,MAAM,YAAY,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;EA0B3D;AAED;;;GAGG;AACH,eAAO,MAAM,2BAA2B,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAuJ9D,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,oBAAoB;aA7Ld,MAAM,YAAY,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;CAgM3D,CAAC"}
1
+ {"version":3,"file":"useDetailTranslation.d.ts","sourceRoot":"","sources":["../src/useDetailTranslation.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAExD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,yBAAyB,8BAAwB,CAAC;AAE/D;;;GAGG;AACH,eAAO,MAAM,2BAA2B,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAiK9D,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,oBAAoB;4BA9LhC,CAAC;;;;;CAiMD,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * ObjectUI
3
+ * Copyright (c) 2024-present ObjectStack Inc.
4
+ *
5
+ * This source code is licensed under the MIT license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+ export type RecordOperation = 'update' | 'delete';
9
+ export declare function useRecordEditable(objectName: string | undefined, recordId: string | undefined, operation?: RecordOperation, enabled?: boolean): boolean;
10
+ /** Test seam — drops the memoised verdicts. */
11
+ export declare function __clearRecordEditableCache(): void;
12
+ //# sourceMappingURL=useRecordEditable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useRecordEditable.d.ts","sourceRoot":"","sources":["../src/useRecordEditable.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAsCH,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAElD,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,SAAS,GAAE,eAA0B,EACrC,OAAO,UAAO,GACb,OAAO,CA6CT;AAED,+CAA+C;AAC/C,wBAAgB,0BAA0B,IAAI,IAAI,CAEjD"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@object-ui/plugin-detail",
3
- "version": "16.1.0",
3
+ "version": "17.2.0",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "description": "DetailView plugin for Object UI - comprehensive detail page with sections, tabs, and related lists",
@@ -24,33 +24,33 @@
24
24
  }
25
25
  },
26
26
  "dependencies": {
27
- "@objectstack/spec": "^16.0.0-rc.0",
27
+ "@objectstack/spec": "^17.0.0-rc.1",
28
28
  "lucide-react": "^1.25.0",
29
- "@object-ui/i18n": "16.1.0"
29
+ "@object-ui/i18n": "17.2.0"
30
30
  },
31
31
  "peerDependencies": {
32
32
  "react": "^18.0.0 || ^19.0.0",
33
33
  "react-dom": "^18.0.0 || ^19.0.0",
34
- "@object-ui/components": "^16.1.0",
35
- "@object-ui/core": "^16.1.0",
36
- "@object-ui/fields": "^16.1.0",
37
- "@object-ui/permissions": "^16.1.0",
38
- "@object-ui/react": "^16.1.0",
39
- "@object-ui/types": "^16.1.0"
34
+ "@object-ui/components": "^17.2.0",
35
+ "@object-ui/core": "^17.2.0",
36
+ "@object-ui/fields": "^17.2.0",
37
+ "@object-ui/permissions": "^17.2.0",
38
+ "@object-ui/react": "^17.2.0",
39
+ "@object-ui/types": "^17.2.0"
40
40
  },
41
41
  "devDependencies": {
42
42
  "@types/react": "19.2.17",
43
43
  "@types/react-dom": "19.2.3",
44
- "@vitejs/plugin-react": "^6.0.3",
44
+ "@vitejs/plugin-react": "^6.0.4",
45
45
  "typescript": "^6.0.3",
46
46
  "vite": "^8.1.5",
47
47
  "vite-plugin-dts": "^5.0.3",
48
48
  "vitest": "^4.1.10",
49
- "@object-ui/components": "16.1.0",
50
- "@object-ui/core": "16.1.0",
51
- "@object-ui/fields": "16.1.0",
52
- "@object-ui/react": "16.1.0",
53
- "@object-ui/types": "16.1.0"
49
+ "@object-ui/components": "17.2.0",
50
+ "@object-ui/core": "17.2.0",
51
+ "@object-ui/fields": "17.2.0",
52
+ "@object-ui/react": "17.2.0",
53
+ "@object-ui/types": "17.2.0"
54
54
  },
55
55
  "keywords": [
56
56
  "objectui",
@@ -78,7 +78,7 @@
78
78
  "build": "vite build",
79
79
  "test": "vitest run",
80
80
  "test:watch": "vitest",
81
- "type-check": "tsc --noEmit",
81
+ "type-check": "tsc --noEmit && tsc -p tsconfig.typetests.json",
82
82
  "lint": "eslint ."
83
83
  }
84
84
  }