@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.
- package/CHANGELOG.md +814 -0
- package/README.md +6 -0
- package/dist/DetailSection.d.ts.map +1 -1
- package/dist/DetailView.d.ts.map +1 -1
- package/dist/HeaderHighlight.d.ts.map +1 -1
- package/dist/InlineFieldInput.d.ts.map +1 -1
- package/dist/RecordActivityTimeline.d.ts +19 -2
- package/dist/RecordActivityTimeline.d.ts.map +1 -1
- package/dist/RecordMetaFooter.d.ts.map +1 -1
- package/dist/RelatedList.d.ts +11 -1
- package/dist/RelatedList.d.ts.map +1 -1
- package/dist/fieldEnrichment.d.ts +36 -0
- package/dist/fieldEnrichment.d.ts.map +1 -0
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2052 -1483
- package/dist/index.umd.cjs +3 -3
- package/dist/renderers/record-activity.d.ts +10 -2
- package/dist/renderers/record-activity.d.ts.map +1 -1
- package/dist/renderers/record-details.d.ts.map +1 -1
- package/dist/renderers/record-quick-actions.d.ts.map +1 -1
- package/dist/renderers/record-related-list.d.ts.map +1 -1
- package/dist/renderers/recordActivityFeed.d.ts +93 -0
- package/dist/renderers/recordActivityFeed.d.ts.map +1 -0
- package/dist/synth/buildDefaultPageSchema.d.ts +37 -3
- package/dist/synth/buildDefaultPageSchema.d.ts.map +1 -1
- package/dist/useDetailTranslation.d.ts +10 -13
- package/dist/useDetailTranslation.d.ts.map +1 -1
- package/dist/useRecordEditable.d.ts +12 -0
- package/dist/useRecordEditable.d.ts.map +1 -0
- package/package.json +16 -16
|
@@ -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 &
|
|
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
|
|
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;
|
|
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;
|
|
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;
|
|
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,
|
|
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
|
-
|
|
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":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAGrD;;2BAE2B;AAC3B,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,
|
|
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
|
-
*
|
|
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
|
|
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;
|
|
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": "
|
|
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": "^
|
|
27
|
+
"@objectstack/spec": "^17.0.0-rc.1",
|
|
28
28
|
"lucide-react": "^1.25.0",
|
|
29
|
-
"@object-ui/i18n": "
|
|
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": "^
|
|
35
|
-
"@object-ui/core": "^
|
|
36
|
-
"@object-ui/fields": "^
|
|
37
|
-
"@object-ui/permissions": "^
|
|
38
|
-
"@object-ui/react": "^
|
|
39
|
-
"@object-ui/types": "^
|
|
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.
|
|
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": "
|
|
50
|
-
"@object-ui/core": "
|
|
51
|
-
"@object-ui/fields": "
|
|
52
|
-
"@object-ui/react": "
|
|
53
|
-
"@object-ui/types": "
|
|
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
|
}
|