@nivaro/react 0.2.7 → 0.2.8
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/full.css +1 -1
- package/dist/index.d.ts +289 -30
- package/dist/index.js +96382 -91483
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -501,7 +501,7 @@ export declare function BulkActionButtons({ targets, enabledKeys, tone, disabled
|
|
|
501
501
|
onDone?: (result: BulkRunResult & {
|
|
502
502
|
action: AvailableBulkAction;
|
|
503
503
|
}) => void;
|
|
504
|
-
}): JSX.Element
|
|
504
|
+
}): JSX.Element;
|
|
505
505
|
|
|
506
506
|
declare interface BulkRunResult {
|
|
507
507
|
succeeded: number;
|
|
@@ -516,6 +516,8 @@ declare interface BulkRunResult {
|
|
|
516
516
|
declare interface BulkTarget {
|
|
517
517
|
collection: string;
|
|
518
518
|
id: string | number;
|
|
519
|
+
/** Optional display label — names the row in per-row result lists. */
|
|
520
|
+
label?: string | null;
|
|
519
521
|
}
|
|
520
522
|
|
|
521
523
|
/**
|
|
@@ -532,6 +534,15 @@ export declare function CacheStamp({ envelope, onRefresh, refreshing, className
|
|
|
532
534
|
className?: string;
|
|
533
535
|
}): JSX.Element | null;
|
|
534
536
|
|
|
537
|
+
export declare function CallerChangesSection({ caller, hours }: {
|
|
538
|
+
/** `k<api key id>` or `u<user id>`. */
|
|
539
|
+
caller: {
|
|
540
|
+
key: string;
|
|
541
|
+
label: string;
|
|
542
|
+
};
|
|
543
|
+
hours: number;
|
|
544
|
+
}): JSX.Element;
|
|
545
|
+
|
|
535
546
|
export declare function canOpenCatalogItem(collection: string | null | undefined): boolean;
|
|
536
547
|
|
|
537
548
|
export declare function canOpenChatRoom(): boolean;
|
|
@@ -540,6 +551,8 @@ export declare function canOpenDm(): boolean;
|
|
|
540
551
|
|
|
541
552
|
export declare function canPreviewFile(type: string | null | undefined): boolean;
|
|
542
553
|
|
|
554
|
+
export declare function canViewAs(): boolean;
|
|
555
|
+
|
|
543
556
|
/**
|
|
544
557
|
* Grab the replay link for an error being reported right now. Resolves null
|
|
545
558
|
* when no recorder is active (both settings off, recording failed, or the
|
|
@@ -1050,7 +1063,7 @@ export declare interface CollectionBrowserColumn {
|
|
|
1050
1063
|
filterable?: boolean;
|
|
1051
1064
|
}
|
|
1052
1065
|
|
|
1053
|
-
export declare function CollectionBrowserView({ collection, quickFilters, initialColumns, initialSort, pageSize, initialSearch, initialFilters, initialConditions, onOpenItem, showCreate, className }: CollectionBrowserViewProps): React_2.JSX.Element;
|
|
1066
|
+
export declare function CollectionBrowserView({ collection, quickFilters, initialColumns, initialSort, pageSize, initialSearch, initialFilters, initialConditions, onOpenItem, initialAiPrompt, extraViews, showCreate, className }: CollectionBrowserViewProps): React_2.JSX.Element;
|
|
1054
1067
|
|
|
1055
1068
|
export declare interface CollectionBrowserViewProps {
|
|
1056
1069
|
collection: string;
|
|
@@ -1078,6 +1091,17 @@ export declare interface CollectionBrowserViewProps {
|
|
|
1078
1091
|
}>;
|
|
1079
1092
|
/** Override row-open behavior; defaults to NavigationContext itemUrl. */
|
|
1080
1093
|
onOpenItem?: (id: string | number) => void;
|
|
1094
|
+
/** Ask the table this question once on open (e.g. a command-palette
|
|
1095
|
+
* hand-off, `?ai=` on the host route). */
|
|
1096
|
+
initialAiPrompt?: string;
|
|
1097
|
+
/** Host-supplied display modes beside the table (e.g. a spreadsheet or
|
|
1098
|
+
* calendar the host app owns). Each renders instead of the table. */
|
|
1099
|
+
extraViews?: Array<{
|
|
1100
|
+
key: string;
|
|
1101
|
+
label: string;
|
|
1102
|
+
icon?: React_2.ReactNode;
|
|
1103
|
+
render: () => React_2.ReactNode;
|
|
1104
|
+
}>;
|
|
1081
1105
|
showCreate?: boolean;
|
|
1082
1106
|
className?: string;
|
|
1083
1107
|
}
|
|
@@ -2081,6 +2105,16 @@ export declare function fiscalQuarterOf(d: Date, startMonth?: number): number;
|
|
|
2081
2105
|
|
|
2082
2106
|
export declare function fiscalYearOf(d: Date, startMonth?: number): number;
|
|
2083
2107
|
|
|
2108
|
+
/** Bring a field or a child row of the open record into view (ItemEditForm
|
|
2109
|
+
* listens for 'nvr:record-focus'). */
|
|
2110
|
+
export declare function focusRecordTarget(target: {
|
|
2111
|
+
collection: string;
|
|
2112
|
+
item: string;
|
|
2113
|
+
field?: string;
|
|
2114
|
+
childCollection?: string;
|
|
2115
|
+
rowId?: string;
|
|
2116
|
+
}): void;
|
|
2117
|
+
|
|
2084
2118
|
/** The window event a host's socket layer dispatches on `client:force-refresh`. */
|
|
2085
2119
|
export declare const FORCE_RELOAD_EVENT = "nvr:force-refresh";
|
|
2086
2120
|
|
|
@@ -2466,7 +2500,7 @@ export declare interface ImportDefinition {
|
|
|
2466
2500
|
description: string | null;
|
|
2467
2501
|
staging_table: string | null;
|
|
2468
2502
|
procedure: string | null;
|
|
2469
|
-
loader: 'bulk' | 'insert' | null;
|
|
2503
|
+
loader: 'bulk' | 'bulk_only' | 'insert' | null;
|
|
2470
2504
|
file_types: string | null;
|
|
2471
2505
|
is_active: boolean;
|
|
2472
2506
|
sort: number;
|
|
@@ -2484,6 +2518,13 @@ export declare interface ImportDefinition {
|
|
|
2484
2518
|
/** JSON array of flow ids run in order after a successful run (migration 294). */
|
|
2485
2519
|
post_run_flows?: string | null;
|
|
2486
2520
|
receipt?: string | null;
|
|
2521
|
+
/** #802 — runs sharing a group never overlap; null = the staging table. */
|
|
2522
|
+
lock_group?: string | null;
|
|
2523
|
+
/** #719 — JSON string[] of collections the procedure writes (rollups recomputed). */
|
|
2524
|
+
recalc_rollups?: string | null;
|
|
2525
|
+
/** #846 — days after the last completed run the staging table is emptied; opt-in, null/0 = keep. */
|
|
2526
|
+
staging_purge_days?: number | null;
|
|
2527
|
+
staging_purged_at?: string | null;
|
|
2487
2528
|
}
|
|
2488
2529
|
|
|
2489
2530
|
declare interface ImportDryRun {
|
|
@@ -2586,6 +2627,8 @@ export declare interface ImportJob {
|
|
|
2586
2627
|
started_at: string | null;
|
|
2587
2628
|
completed_at: string | null;
|
|
2588
2629
|
rolled_back_at?: string | null;
|
|
2630
|
+
/** #748 — rows were written through the items service. */
|
|
2631
|
+
through_items?: boolean;
|
|
2589
2632
|
}
|
|
2590
2633
|
|
|
2591
2634
|
export declare type ImportJobStatus = 'pending' | 'processing' | 'complete' | 'failed';
|
|
@@ -2653,7 +2696,7 @@ export declare interface ImportRun {
|
|
|
2653
2696
|
procedure: string | null;
|
|
2654
2697
|
/** null / 'proc' = stored procedure, 'service', or a registered processor key. */
|
|
2655
2698
|
processor?: string | null;
|
|
2656
|
-
loader: 'bulk' | 'insert' | null;
|
|
2699
|
+
loader: 'bulk' | 'bulk_only' | 'insert' | null;
|
|
2657
2700
|
definition_active: boolean | null;
|
|
2658
2701
|
file_name: string | null;
|
|
2659
2702
|
file_size: string | number | null;
|
|
@@ -2768,6 +2811,20 @@ export declare function InboundCallersView({ hours: initialHours }: {
|
|
|
2768
2811
|
hours?: number;
|
|
2769
2812
|
}): JSX.Element;
|
|
2770
2813
|
|
|
2814
|
+
/**
|
|
2815
|
+
* A trigger (any inline element) that opens the request behind an inbound
|
|
2816
|
+
* write. The event-path sheet opens AFTER the popover closes, so a sheet
|
|
2817
|
+
* never mounts inside a popover.
|
|
2818
|
+
*/
|
|
2819
|
+
export declare function InboundRequestPopover({ activityId, callerName, collection, itemId, children, align }: {
|
|
2820
|
+
activityId: number;
|
|
2821
|
+
callerName: string;
|
|
2822
|
+
collection: string;
|
|
2823
|
+
itemId: string;
|
|
2824
|
+
children: ReactNode;
|
|
2825
|
+
align?: 'start' | 'center' | 'end';
|
|
2826
|
+
}): JSX.Element;
|
|
2827
|
+
|
|
2771
2828
|
/**
|
|
2772
2829
|
* Inbound: health first — the host's own live queue (an ingest backlog, say), then whether
|
|
2773
2830
|
* scheduled imports are arriving on time — and investigation last, since who
|
|
@@ -2995,6 +3052,16 @@ export declare interface IntegrationPartnerCard {
|
|
|
2995
3052
|
missing: number;
|
|
2996
3053
|
overdue: number;
|
|
2997
3054
|
};
|
|
3055
|
+
/** #612 — health-probe uptime over 24h; null when the API is not probed. */
|
|
3056
|
+
uptime24?: {
|
|
3057
|
+
pct: number | null;
|
|
3058
|
+
probes: number;
|
|
3059
|
+
buckets: Array<{
|
|
3060
|
+
at: string;
|
|
3061
|
+
ok: number;
|
|
3062
|
+
failed: number;
|
|
3063
|
+
}>;
|
|
3064
|
+
} | null;
|
|
2998
3065
|
}
|
|
2999
3066
|
|
|
3000
3067
|
export declare interface IntegrationPartnerDetail {
|
|
@@ -3047,6 +3114,29 @@ export declare type IntegrationPathDetail = {
|
|
|
3047
3114
|
from?: string | null;
|
|
3048
3115
|
to?: string | null;
|
|
3049
3116
|
comment?: string | null;
|
|
3117
|
+
} | {
|
|
3118
|
+
type: 'notify';
|
|
3119
|
+
recipient: string;
|
|
3120
|
+
/** Admins only; null for everyone else. */
|
|
3121
|
+
subject: string | null;
|
|
3122
|
+
category?: string | null;
|
|
3123
|
+
lane?: string | null;
|
|
3124
|
+
channels: Array<{
|
|
3125
|
+
channel: string;
|
|
3126
|
+
status: string;
|
|
3127
|
+
reason?: string | null;
|
|
3128
|
+
}>;
|
|
3129
|
+
} | {
|
|
3130
|
+
type: 'mail';
|
|
3131
|
+
status: string;
|
|
3132
|
+
/** Admins only; null for everyone else. */
|
|
3133
|
+
subject: string | null;
|
|
3134
|
+
template?: string | null;
|
|
3135
|
+
/** Addresses — admins only; null for everyone else. */
|
|
3136
|
+
to?: string | null;
|
|
3137
|
+
recipients: number;
|
|
3138
|
+
mail_log_id: number;
|
|
3139
|
+
error?: string | null;
|
|
3050
3140
|
};
|
|
3051
3141
|
|
|
3052
3142
|
/** One step of an event's path, with the steps it set off under it. */
|
|
@@ -3078,11 +3168,11 @@ export declare interface IntegrationPathNode {
|
|
|
3078
3168
|
members?: IntegrationPathNode[];
|
|
3079
3169
|
}
|
|
3080
3170
|
|
|
3081
|
-
/** The filter
|
|
3082
|
-
*
|
|
3083
|
-
*
|
|
3084
|
-
*
|
|
3085
|
-
*
|
|
3171
|
+
/** The filter set the collection browser (a `$integrations` condition to
|
|
3172
|
+
* `/items/:collection`) and the queue (`filters.integrations`, #630 —
|
|
3173
|
+
* services/queue-integrations.ts) both offer. Values are the bucket names
|
|
3174
|
+
* `applyIntegrationsFilter` (api/src/services/items.ts) reads, so a picked
|
|
3175
|
+
* value needs no translation on either surface. */
|
|
3086
3176
|
export declare const INTEGRATIONS_FILTER_OPTIONS: {
|
|
3087
3177
|
value: string;
|
|
3088
3178
|
label: string;
|
|
@@ -3180,26 +3270,6 @@ export declare interface IntegrationSignalView {
|
|
|
3180
3270
|
shown: number;
|
|
3181
3271
|
}
|
|
3182
3272
|
|
|
3183
|
-
export declare function IntegrationStatusBanner({ collection, itemId }: IntegrationStatusBannerProps): JSX.Element | null;
|
|
3184
|
-
|
|
3185
|
-
/**
|
|
3186
|
-
* One line per partner on the record: were they told, when, and if not, why
|
|
3187
|
-
* not. Sits above `ErpFailureBanner`, which keeps the payload/response view
|
|
3188
|
-
* and the retry mutation — this answers a different question ("was the
|
|
3189
|
-
* partner told, and when") and does not replace it.
|
|
3190
|
-
*
|
|
3191
|
-
* Renders nothing when the record has no obligations, so a collection with
|
|
3192
|
-
* no integrations pays one cached request and shows no chrome.
|
|
3193
|
-
*
|
|
3194
|
-
* `roleForTone` is imported from `IntegrationObligationsView` (the board)
|
|
3195
|
-
* rather than duplicated here, so the board and this banner can never
|
|
3196
|
-
* disagree about what "overdue" looks like.
|
|
3197
|
-
*/
|
|
3198
|
-
export declare interface IntegrationStatusBannerProps {
|
|
3199
|
-
collection: string;
|
|
3200
|
-
itemId: string | number;
|
|
3201
|
-
}
|
|
3202
|
-
|
|
3203
3273
|
/** Whether this browser pinned the chat panel open — hosts read it for their
|
|
3204
3274
|
* initial open state, so a pinned panel is still there after a reload. */
|
|
3205
3275
|
export declare function isChatPanelPinned(): boolean;
|
|
@@ -4259,6 +4329,16 @@ export declare function OpsTasksView({ onNotice }: {
|
|
|
4259
4329
|
onNotice?: (message: string) => void;
|
|
4260
4330
|
}): JSX.Element;
|
|
4261
4331
|
|
|
4332
|
+
/** #615 — the Integrations dialog's "What goes out next" block. */
|
|
4333
|
+
export declare function OutboundPreviewSection({ collection, itemId, onShowRequest, onJump }: {
|
|
4334
|
+
collection: string;
|
|
4335
|
+
itemId: string;
|
|
4336
|
+
/** Open the request log row a comparison was made against. */
|
|
4337
|
+
onShowRequest?: (submissionId: number) => void;
|
|
4338
|
+
/** A readiness issue jumps to a line — the hosting dialog closes first. */
|
|
4339
|
+
onJump?: () => void;
|
|
4340
|
+
}): JSX.Element | null;
|
|
4341
|
+
|
|
4262
4342
|
/**
|
|
4263
4343
|
* Lets a host put transient overlay state — a drill-down sheet and how deep it
|
|
4264
4344
|
* is — into browser history, so Back closes the sheet instead of abandoning the
|
|
@@ -4408,6 +4488,11 @@ declare interface PartnerContract {
|
|
|
4408
4488
|
detail: string | null;
|
|
4409
4489
|
}
|
|
4410
4490
|
|
|
4491
|
+
export declare function PartnerDependenciesPanel({ callerKey, label }: {
|
|
4492
|
+
callerKey: string;
|
|
4493
|
+
label: string;
|
|
4494
|
+
}): JSX.Element;
|
|
4495
|
+
|
|
4411
4496
|
export declare function PartnerDetail({ apiId, onClose, initialTab }: PartnerDetailProps): JSX.Element;
|
|
4412
4497
|
|
|
4413
4498
|
export declare interface PartnerDetailProps {
|
|
@@ -4424,7 +4509,7 @@ export declare interface PartnersViewProps {
|
|
|
4424
4509
|
onOpenChange?: (id: number | null) => void;
|
|
4425
4510
|
}
|
|
4426
4511
|
|
|
4427
|
-
declare type PathStepKind = 'request' | 'cron' | 'import' | 'feed' | 'write' | 'transition' | 'flow' | 'push' | 'attempt' | 'partner_call' | 'group';
|
|
4512
|
+
declare type PathStepKind = 'request' | 'cron' | 'import' | 'feed' | 'write' | 'transition' | 'flow' | 'push' | 'attempt' | 'partner_call' | 'notify' | 'mail' | 'group';
|
|
4428
4513
|
|
|
4429
4514
|
declare interface PendingTask {
|
|
4430
4515
|
title: string;
|
|
@@ -4438,6 +4523,38 @@ declare interface PendingTask {
|
|
|
4438
4523
|
priority?: string;
|
|
4439
4524
|
}
|
|
4440
4525
|
|
|
4526
|
+
/**
|
|
4527
|
+
* The same, minus machine identities (bots, integrations, service accounts,
|
|
4528
|
+
* placeholders — `account_kind` set). A person picking a contact or an
|
|
4529
|
+
* assignee should only ever be offered people; admins keep the machine
|
|
4530
|
+
* accounts because they occasionally configure one on purpose.
|
|
4531
|
+
*/
|
|
4532
|
+
export declare const PEOPLE_USER_OPTION_FILTER: {
|
|
4533
|
+
_and: ({
|
|
4534
|
+
is_redacted: {
|
|
4535
|
+
_eq: boolean;
|
|
4536
|
+
};
|
|
4537
|
+
_or?: undefined;
|
|
4538
|
+
} | {
|
|
4539
|
+
_or: ({
|
|
4540
|
+
status: {
|
|
4541
|
+
_neq: string;
|
|
4542
|
+
_null?: undefined;
|
|
4543
|
+
};
|
|
4544
|
+
} | {
|
|
4545
|
+
status: {
|
|
4546
|
+
_null: boolean;
|
|
4547
|
+
_neq?: undefined;
|
|
4548
|
+
};
|
|
4549
|
+
})[];
|
|
4550
|
+
is_redacted?: undefined;
|
|
4551
|
+
} | {
|
|
4552
|
+
account_kind: {
|
|
4553
|
+
_null: boolean;
|
|
4554
|
+
};
|
|
4555
|
+
})[];
|
|
4556
|
+
};
|
|
4557
|
+
|
|
4441
4558
|
/**
|
|
4442
4559
|
* The identity band at the top of someone's page: who they are, whether
|
|
4443
4560
|
* they are reachable right now, and the three ways to reach them. Admin-only
|
|
@@ -4531,6 +4648,12 @@ export declare interface PersonProfileData {
|
|
|
4531
4648
|
values: string[];
|
|
4532
4649
|
}>;
|
|
4533
4650
|
open_tasks: number;
|
|
4651
|
+
/** When they are usually around (UTC hours, 10th–90th percentile of their actions). */
|
|
4652
|
+
typical_hours_utc?: {
|
|
4653
|
+
start: number;
|
|
4654
|
+
end: number;
|
|
4655
|
+
samples: number;
|
|
4656
|
+
} | null;
|
|
4534
4657
|
admin: {
|
|
4535
4658
|
account_kind: string | null;
|
|
4536
4659
|
city: string | null;
|
|
@@ -4668,6 +4791,33 @@ export declare function PipelineTransitionButtons({ collection, item, onBeforeTr
|
|
|
4668
4791
|
wrap?: boolean;
|
|
4669
4792
|
}): JSX.Element | null;
|
|
4670
4793
|
|
|
4794
|
+
export declare interface PlanGridHost {
|
|
4795
|
+
renderRowHistory?: (args: PlanGridRowHistoryArgs) => ReactNode | null;
|
|
4796
|
+
}
|
|
4797
|
+
|
|
4798
|
+
export declare const PlanGridHostContext: Context<PlanGridHost | null>;
|
|
4799
|
+
|
|
4800
|
+
/**
|
|
4801
|
+
* What a host may put in place of a plan grid's generic parts (#842). Core
|
|
4802
|
+
* stays domain-free: a host that has a richer history for a collection (a
|
|
4803
|
+
* forecast history with restores and accuracy) renders it here; returning
|
|
4804
|
+
* null keeps the generic row-history sheet.
|
|
4805
|
+
*/
|
|
4806
|
+
export declare interface PlanGridRowHistoryArgs {
|
|
4807
|
+
/** The plan rows' collection ("forecasts"). */
|
|
4808
|
+
collection: string;
|
|
4809
|
+
/** The record the grid belongs to. */
|
|
4810
|
+
parentId: string;
|
|
4811
|
+
/** The saved row, when there is one. */
|
|
4812
|
+
rowId: string | null;
|
|
4813
|
+
/** The row's key value ("2026"). */
|
|
4814
|
+
key: string;
|
|
4815
|
+
/** The row's category id when the key is split by category, else null. */
|
|
4816
|
+
category: string | null;
|
|
4817
|
+
categoryLabel: (id: string | number) => string;
|
|
4818
|
+
onClose: () => void;
|
|
4819
|
+
}
|
|
4820
|
+
|
|
4671
4821
|
/** Play the configured notification sound. No-op for 'off'/unknown/unavailable audio. */
|
|
4672
4822
|
export declare function playNotificationSound(kind: NotificationSound | string | null | undefined): void;
|
|
4673
4823
|
|
|
@@ -4761,6 +4911,24 @@ declare type ProposalPollAnswer = {
|
|
|
4761
4911
|
json: any;
|
|
4762
4912
|
};
|
|
4763
4913
|
|
|
4914
|
+
/**
|
|
4915
|
+
* "Ready" / "2 lines missing Sales order" beside a button that sends
|
|
4916
|
+
* something to a partner. Give it a transition id (the pipeline pre-flight)
|
|
4917
|
+
* or an item action id (the extension's own pre-flight).
|
|
4918
|
+
*/
|
|
4919
|
+
export declare function PushReadinessChip({ collection, itemId, transitionId, itemActionId, label, compact, onJump }: {
|
|
4920
|
+
collection: string;
|
|
4921
|
+
itemId: string;
|
|
4922
|
+
transitionId?: string;
|
|
4923
|
+
itemActionId?: string;
|
|
4924
|
+
/** What the button does — "Submit to Warehouse". */
|
|
4925
|
+
label: string;
|
|
4926
|
+
/** Header use: a dot + a short word; the popover says the rest. */
|
|
4927
|
+
compact?: boolean;
|
|
4928
|
+
/** Called before a jump — a hosting dialog closes so the line shows. */
|
|
4929
|
+
onJump?: () => void;
|
|
4930
|
+
}): JSX.Element | null;
|
|
4931
|
+
|
|
4764
4932
|
export declare function QualityRulesView({ className }: {
|
|
4765
4933
|
className?: string;
|
|
4766
4934
|
}): JSX.Element;
|
|
@@ -5326,6 +5494,48 @@ export declare function RecordDrilldownSheet({ collection, itemId, layoutId, roo
|
|
|
5326
5494
|
onClose: () => void;
|
|
5327
5495
|
}): JSX.Element;
|
|
5328
5496
|
|
|
5497
|
+
export declare function RecordGraphExplorer({ collection, itemId, className }: {
|
|
5498
|
+
collection: string;
|
|
5499
|
+
itemId: string;
|
|
5500
|
+
className?: string;
|
|
5501
|
+
}): JSX.Element;
|
|
5502
|
+
|
|
5503
|
+
export declare interface RecordGraphGroup {
|
|
5504
|
+
key: string;
|
|
5505
|
+
direction: 'out' | 'in' | 'm2m';
|
|
5506
|
+
field: string;
|
|
5507
|
+
label: string;
|
|
5508
|
+
collection: string;
|
|
5509
|
+
collection_label: string;
|
|
5510
|
+
total: number;
|
|
5511
|
+
items: RecordGraphNode[];
|
|
5512
|
+
}
|
|
5513
|
+
|
|
5514
|
+
/**
|
|
5515
|
+
* Relationship explorer (#998). A record's neighbourhood drawn as a tree that
|
|
5516
|
+
* grows one hop at a time: the record, the relations it takes part in
|
|
5517
|
+
* (grouped — "Purchase orders · 3"), and the records behind each group. Any
|
|
5518
|
+
* record node expands the same way, so a workflow → its PO → the PO's
|
|
5519
|
+
* invoices is three clicks. Clicking a record opens it in the drill sheet
|
|
5520
|
+
* (or navigates when the host has none).
|
|
5521
|
+
*
|
|
5522
|
+
* Every hop is read as the viewer by GET /record-graph/:collection/:id, so
|
|
5523
|
+
* the picture never shows a record the viewer could not open themselves.
|
|
5524
|
+
*/
|
|
5525
|
+
export declare interface RecordGraphNode {
|
|
5526
|
+
collection: string;
|
|
5527
|
+
id: string;
|
|
5528
|
+
label: string;
|
|
5529
|
+
}
|
|
5530
|
+
|
|
5531
|
+
/** Right sheet hosting the explorer — hosts mount it beside the record form. */
|
|
5532
|
+
export declare function RecordGraphSheet({ collection, itemId, open, onOpenChange }: {
|
|
5533
|
+
collection: string;
|
|
5534
|
+
itemId: string;
|
|
5535
|
+
open: boolean;
|
|
5536
|
+
onOpenChange: (v: boolean) => void;
|
|
5537
|
+
}): JSX.Element;
|
|
5538
|
+
|
|
5329
5539
|
export declare function RecordGridEditor({ config }: {
|
|
5330
5540
|
config: RecordGridEditorConfig;
|
|
5331
5541
|
}): JSX.Element;
|
|
@@ -5489,6 +5699,9 @@ export declare function registerLayoutSlot(plugin: LayoutSlotPlugin): void;
|
|
|
5489
5699
|
|
|
5490
5700
|
export declare function registerRoomOpener(fn: RoomOpener): () => void;
|
|
5491
5701
|
|
|
5702
|
+
/** Register the host's opener. Returns an unregister function. */
|
|
5703
|
+
export declare function registerViewAsOpener(fn: ViewAsOpener): () => void;
|
|
5704
|
+
|
|
5492
5705
|
export declare function RelatedRecordsPanel({ collection, itemId, title, defaultExpanded }: {
|
|
5493
5706
|
collection: string;
|
|
5494
5707
|
itemId: string;
|
|
@@ -6886,6 +7099,8 @@ export declare function usePeerReadAt(room: string | null): string | null;
|
|
|
6886
7099
|
|
|
6887
7100
|
export declare function usePersonProfile(userId: string | null | undefined): UseQueryResult<NoInfer<PersonProfileData | null>, Error>;
|
|
6888
7101
|
|
|
7102
|
+
export declare function usePlanGridHost(): PlanGridHost | null;
|
|
7103
|
+
|
|
6889
7104
|
/**
|
|
6890
7105
|
* The quick picker BEFORE a record exists — the "+ New" menus open it, and on
|
|
6891
7106
|
* Create the host navigates to the new-record page with the picks in
|
|
@@ -6979,6 +7194,33 @@ export declare function useRoomMembership(): {
|
|
|
6979
7194
|
|
|
6980
7195
|
export declare function useRoomPins(room: string | null): NoInfer<PinnedMessage[]>;
|
|
6981
7196
|
|
|
7197
|
+
/** The user-picker option filter for this viewer (#732). */
|
|
7198
|
+
export declare function userOptionFilter(isAdmin: boolean): {
|
|
7199
|
+
_and: ({
|
|
7200
|
+
is_redacted: {
|
|
7201
|
+
_eq: boolean;
|
|
7202
|
+
};
|
|
7203
|
+
_or?: undefined;
|
|
7204
|
+
} | {
|
|
7205
|
+
_or: ({
|
|
7206
|
+
status: {
|
|
7207
|
+
_neq: string;
|
|
7208
|
+
_null?: undefined;
|
|
7209
|
+
};
|
|
7210
|
+
} | {
|
|
7211
|
+
status: {
|
|
7212
|
+
_null: boolean;
|
|
7213
|
+
_neq?: undefined;
|
|
7214
|
+
};
|
|
7215
|
+
})[];
|
|
7216
|
+
is_redacted?: undefined;
|
|
7217
|
+
} | {
|
|
7218
|
+
account_kind: {
|
|
7219
|
+
_null: boolean;
|
|
7220
|
+
};
|
|
7221
|
+
})[];
|
|
7222
|
+
};
|
|
7223
|
+
|
|
6982
7224
|
/** Stacked avatar cluster (+N) with a hover/pinnable portal roster whose rows
|
|
6983
7225
|
* are UserChips — the single user-display primitive for owners/user lists.
|
|
6984
7226
|
* Reused by the item-header Owners chip and the collection browser. */
|
|
@@ -7085,6 +7327,23 @@ declare interface ValidationResult {
|
|
|
7085
7327
|
unknownTokens: string[];
|
|
7086
7328
|
}
|
|
7087
7329
|
|
|
7330
|
+
export declare function viewAs(person: {
|
|
7331
|
+
id: string;
|
|
7332
|
+
name: string;
|
|
7333
|
+
}): void | Promise<void>;
|
|
7334
|
+
|
|
7335
|
+
/**
|
|
7336
|
+
* "View as" registry (#640). A profile page offers "View as <person>" only
|
|
7337
|
+
* while the host app has said how it opens itself as someone else — the
|
|
7338
|
+
* admin opens a new tab on a per-tab masquerade token; a host without the
|
|
7339
|
+
* idea never registers and the button never shows. Same shape as the chat
|
|
7340
|
+
* DM opener registry.
|
|
7341
|
+
*/
|
|
7342
|
+
declare type ViewAsOpener = (person: {
|
|
7343
|
+
id: string;
|
|
7344
|
+
name: string;
|
|
7345
|
+
}) => void | Promise<void>;
|
|
7346
|
+
|
|
7088
7347
|
export declare function WidgetSlot({ widgetId, inputBindings, itemDraft, itemCollection, ready, label, defaultExpanded, frameless, apiBase: apiBaseProp, compact, strip, onClientAction, onWidgetType, onContentChange }: WidgetSlotProps): JSX.Element | null;
|
|
7089
7348
|
|
|
7090
7349
|
declare interface WidgetSlotProps {
|