@antelopejs/interface-dms 0.5.0 → 0.5.1
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 +31 -0
- package/dist/base/activity-feed.d.ts +43 -31
- package/dist/base/activity-feed.js +11 -6
- package/dist/base/activity-feed.js.map +1 -1
- package/dist/base/banner.d.ts +61 -4
- package/dist/base/banner.js +13 -2
- package/dist/base/banner.js.map +1 -1
- package/dist/base/block-types.d.ts +1 -0
- package/dist/base/block-types.js +1 -0
- package/dist/base/block-types.js.map +1 -1
- package/dist/base/chart-card.d.ts +1 -1
- package/dist/base/chart-schemas.d.ts +52 -52
- package/dist/base/chart-schemas.js +2 -6
- package/dist/base/chart-schemas.js.map +1 -1
- package/dist/base/chart.js +2 -20
- package/dist/base/chart.js.map +1 -1
- package/dist/base/code-block.d.ts +89 -0
- package/dist/base/code-block.js +93 -0
- package/dist/base/code-block.js.map +1 -0
- package/dist/base/display.d.ts +27 -4
- package/dist/base/display.js +28 -6
- package/dist/base/display.js.map +1 -1
- package/dist/base/empty-state.d.ts +35 -0
- package/dist/base/empty-state.js +10 -0
- package/dist/base/empty-state.js.map +1 -1
- package/dist/base/index.d.ts +1 -0
- package/dist/base/index.js +1 -0
- package/dist/base/index.js.map +1 -1
- package/dist/base/internal/composed-text.d.ts +8 -1
- package/dist/base/internal/composed-text.js +9 -1
- package/dist/base/internal/composed-text.js.map +1 -1
- package/dist/base/internal/realtime-topics.d.ts +15 -0
- package/dist/base/internal/realtime-topics.js +36 -0
- package/dist/base/internal/realtime-topics.js.map +1 -0
- package/dist/base/key-value-list.d.ts +23 -0
- package/dist/base/key-value-list.js +8 -2
- package/dist/base/key-value-list.js.map +1 -1
- package/dist/base/meter.d.ts +38 -17
- package/dist/base/meter.js +15 -6
- package/dist/base/meter.js.map +1 -1
- package/dist/base/nav-card-grid.d.ts +41 -31
- package/dist/base/nav-card-grid.js +11 -7
- package/dist/base/nav-card-grid.js.map +1 -1
- package/dist/base/stat-group.d.ts +6 -0
- package/dist/base/stat-group.js +3 -2
- package/dist/base/stat-group.js.map +1 -1
- package/dist/base/tab.d.ts +8 -0
- package/dist/base/tab.js +5 -2
- package/dist/base/tab.js.map +1 -1
- package/dist/base/table-view/column-display.d.ts +43 -3
- package/dist/base/table-view/column-display.js +3 -2
- package/dist/base/table-view/column-display.js.map +1 -1
- package/dist/base/table-view/factory.js +2 -0
- package/dist/base/table-view/factory.js.map +1 -1
- package/dist/base/table-view/internal/realtime.d.ts +7 -0
- package/dist/base/table-view/internal/realtime.js +14 -0
- package/dist/base/table-view/internal/realtime.js.map +1 -1
- package/dist/base/table-view/options.d.ts +9 -0
- package/dist/base/table-view/schema.d.ts +3 -0
- package/dist/base/table-view/schema.js +5 -0
- package/dist/base/table-view/schema.js.map +1 -1
- package/dist/base/table-view/source.d.ts +10 -2
- package/dist/base/table-view/source.js +9 -1
- package/dist/base/table-view/source.js.map +1 -1
- package/dist/base/top-list-card.d.ts +21 -14
- package/dist/base/top-list-card.js +3 -2
- package/dist/base/top-list-card.js.map +1 -1
- package/dist/base/types/action-target.d.ts +14 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,36 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## v0.5.1
|
|
4
|
+
|
|
5
|
+
[compare changes](https://github.com/AntelopeJS/dms/compare/interface-v0.5.0...v0.5.1)
|
|
6
|
+
|
|
7
|
+
### 🚀 Enhancements
|
|
8
|
+
|
|
9
|
+
- **table-view:** Resolve route tokens in TableView.fromSource fetchUrl ([#178](https://github.com/AntelopeJS/dms/pull/178))
|
|
10
|
+
- **blocks:** Accept composed texts in ActivityFeed, Meter, TopListCard and NavCardGrid ([#179](https://github.com/AntelopeJS/dms/pull/179))
|
|
11
|
+
- **key-value-list:** Add a copy button to key / value rows ([#180](https://github.com/AntelopeJS/dms/pull/180))
|
|
12
|
+
- **blocks:** Add a read-only CodeBlock block ([#182](https://github.com/AntelopeJS/dms/pull/182))
|
|
13
|
+
- **dms-ui:** Open a drawer action target from a chosen edge ([#188](https://github.com/AntelopeJS/dms/pull/188))
|
|
14
|
+
- **table-view:** Tone status pills and pills per row ([#181](https://github.com/AntelopeJS/dms/pull/181))
|
|
15
|
+
- **blocks:** Follow a period scope and realtime topics on list blocks, Meter and Tab badges ([#184](https://github.com/AntelopeJS/dms/pull/184))
|
|
16
|
+
- **banner:** Read a banner's content from a route ([#186](https://github.com/AntelopeJS/dms/pull/186))
|
|
17
|
+
- **table-view:** Reload rows on page refresh and on realtimeTopic events ([#185](https://github.com/AntelopeJS/dms/pull/185))
|
|
18
|
+
|
|
19
|
+
### 🩹 Fixes
|
|
20
|
+
|
|
21
|
+
- **ui:** Lay out DmsMasterDetail from its own width ([#183](https://github.com/AntelopeJS/dms/pull/183))
|
|
22
|
+
- **tenancy:** Register each tenant as an instance of the dms-tenant schema ([#190](https://github.com/AntelopeJS/dms/pull/190))
|
|
23
|
+
- **ui:** Table search label, mono cell ellipsis, flow canvas delete badge and late empty-state slots ([#187](https://github.com/AntelopeJS/dms/pull/187))
|
|
24
|
+
- **table-view:** Treat URL query filters as filters and reset the page when they change ([#189](https://github.com/AntelopeJS/dms/pull/189))
|
|
25
|
+
|
|
26
|
+
### 🏡 Chore
|
|
27
|
+
|
|
28
|
+
- **release:** @antelopejs/dms v0.7.1 ([23cf94c](https://github.com/AntelopeJS/dms/commit/23cf94c))
|
|
29
|
+
|
|
30
|
+
### ❤️ Contributors
|
|
31
|
+
|
|
32
|
+
- Antony Rizzitelli <rizzitelli.antony@pm.me>
|
|
33
|
+
|
|
3
34
|
## v0.5.0
|
|
4
35
|
|
|
5
36
|
[compare changes](https://github.com/AntelopeJS/dms/compare/interface-v0.4.2...v0.5.0)
|
|
@@ -2,6 +2,7 @@ import { ComponentBuilder } from "../component";
|
|
|
2
2
|
import { z } from "zod";
|
|
3
3
|
import { type BlockItemsSource, type BlockLinkAction } from "./display";
|
|
4
4
|
import type { BaseComponentProps } from "./types";
|
|
5
|
+
import type { BlockText, ComposedTextParam } from "./types/composed-text";
|
|
5
6
|
import { type Tone } from "./types/tone";
|
|
6
7
|
/** One entry of an activity feed. */
|
|
7
8
|
export interface ActivityFeedItem {
|
|
@@ -9,21 +10,26 @@ export interface ActivityFeedItem {
|
|
|
9
10
|
/** Icon of the entry's well, e.g. `i-ph-check-circle`. */
|
|
10
11
|
icon?: string;
|
|
11
12
|
tone?: Tone;
|
|
12
|
-
/** Title (i18n key with `$` or literal). */
|
|
13
|
-
title: string;
|
|
14
|
-
/** Details under the title, joined by "·". */
|
|
15
|
-
meta?: string[];
|
|
16
13
|
/**
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
* with the item's other values: `{ device: "$…device", browser: "Chrome",
|
|
20
|
-
* os: "Windows" }`.
|
|
14
|
+
* Title: a literal, a `$`-prefixed i18n key, or a `ComposedText` that
|
|
15
|
+
* carries its own values.
|
|
21
16
|
*/
|
|
22
|
-
|
|
17
|
+
title: BlockText;
|
|
18
|
+
/** Details under the title, joined by "·"; each one like the title. */
|
|
19
|
+
meta?: BlockText[];
|
|
20
|
+
/**
|
|
21
|
+
* Values the `$`-prefixed title and details interpolate (`{device}`). A
|
|
22
|
+
* typed value is formatted for the reader (`{ type: "count", value: 3 }`,
|
|
23
|
+
* which also picks the plural form of the message; `{ type: "relative",
|
|
24
|
+
* value: "2026-10-10T08:00:00Z" }`), as in a `ComposedText`. A string
|
|
25
|
+
* written as a `$`-prefixed key is translated first, with the item's other
|
|
26
|
+
* values: `{ device: "$…device", browser: "Chrome", os: "Windows" }`.
|
|
27
|
+
*/
|
|
28
|
+
params?: Record<string, ComposedTextParam>;
|
|
23
29
|
/** ISO date: files the entry under its day and gives its time. */
|
|
24
30
|
date?: string;
|
|
25
|
-
/**
|
|
26
|
-
time?:
|
|
31
|
+
/** Trailing text, in place of the formatted time; a `BlockText`. */
|
|
32
|
+
time?: BlockText;
|
|
27
33
|
/** Accent dot after the time. */
|
|
28
34
|
unread?: boolean;
|
|
29
35
|
/** Path the entry links to. */
|
|
@@ -83,6 +89,8 @@ export declare const ActivityFeedSchema: z.ZodObject<{
|
|
|
83
89
|
card: z.ZodDefault<z.ZodBoolean>;
|
|
84
90
|
fetchUrl: z.ZodOptional<z.ZodString>;
|
|
85
91
|
fetchUrlMethod: z.ZodOptional<z.ZodNativeEnum<typeof import("./types").HttpMethod>>;
|
|
92
|
+
periodScope: z.ZodOptional<z.ZodString>;
|
|
93
|
+
realtimeTopic: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
|
|
86
94
|
empty: z.ZodOptional<z.ZodObject<{
|
|
87
95
|
title: z.ZodString;
|
|
88
96
|
description: z.ZodOptional<z.ZodString>;
|
|
@@ -99,32 +107,32 @@ export declare const ActivityFeedSchema: z.ZodObject<{
|
|
|
99
107
|
id: z.ZodOptional<z.ZodString>;
|
|
100
108
|
icon: z.ZodOptional<z.ZodString>;
|
|
101
109
|
tone: z.ZodOptional<z.ZodEnum<["primary" | "secondary" | "success" | "info" | "warning" | "error" | "neutral", ...("primary" | "secondary" | "success" | "info" | "warning" | "error" | "neutral")[]]>>;
|
|
102
|
-
title: z.
|
|
103
|
-
meta: z.ZodOptional<z.ZodArray<z.
|
|
104
|
-
params: z.ZodOptional<z.ZodRecord<z.ZodString, z.
|
|
110
|
+
title: z.ZodType<BlockText, z.ZodTypeDef, BlockText>;
|
|
111
|
+
meta: z.ZodOptional<z.ZodArray<z.ZodType<BlockText, z.ZodTypeDef, BlockText>, "many">>;
|
|
112
|
+
params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodType<ComposedTextParam, z.ZodTypeDef, ComposedTextParam>>>;
|
|
105
113
|
date: z.ZodOptional<z.ZodString>;
|
|
106
|
-
time: z.ZodOptional<z.
|
|
114
|
+
time: z.ZodOptional<z.ZodType<BlockText, z.ZodTypeDef, BlockText>>;
|
|
107
115
|
unread: z.ZodOptional<z.ZodBoolean>;
|
|
108
116
|
to: z.ZodOptional<z.ZodString>;
|
|
109
117
|
}, "strip", z.ZodTypeAny, {
|
|
110
|
-
title:
|
|
118
|
+
title: BlockText;
|
|
111
119
|
date?: string | undefined;
|
|
112
|
-
time?:
|
|
113
|
-
params?: Record<string,
|
|
120
|
+
time?: BlockText | undefined;
|
|
121
|
+
params?: Record<string, ComposedTextParam> | undefined;
|
|
114
122
|
id?: string | undefined;
|
|
115
123
|
icon?: string | undefined;
|
|
116
|
-
meta?:
|
|
124
|
+
meta?: BlockText[] | undefined;
|
|
117
125
|
to?: string | undefined;
|
|
118
126
|
tone?: "primary" | "secondary" | "success" | "info" | "warning" | "error" | "neutral" | undefined;
|
|
119
127
|
unread?: boolean | undefined;
|
|
120
128
|
}, {
|
|
121
|
-
title:
|
|
129
|
+
title: BlockText;
|
|
122
130
|
date?: string | undefined;
|
|
123
|
-
time?:
|
|
124
|
-
params?: Record<string,
|
|
131
|
+
time?: BlockText | undefined;
|
|
132
|
+
params?: Record<string, ComposedTextParam> | undefined;
|
|
125
133
|
id?: string | undefined;
|
|
126
134
|
icon?: string | undefined;
|
|
127
|
-
meta?:
|
|
135
|
+
meta?: BlockText[] | undefined;
|
|
128
136
|
to?: string | undefined;
|
|
129
137
|
tone?: "primary" | "secondary" | "success" | "info" | "warning" | "error" | "neutral" | undefined;
|
|
130
138
|
unread?: boolean | undefined;
|
|
@@ -154,13 +162,13 @@ export declare const ActivityFeedSchema: z.ZodObject<{
|
|
|
154
162
|
}, "strip", z.ZodTypeAny, {
|
|
155
163
|
card: boolean;
|
|
156
164
|
items?: {
|
|
157
|
-
title:
|
|
165
|
+
title: BlockText;
|
|
158
166
|
date?: string | undefined;
|
|
159
|
-
time?:
|
|
160
|
-
params?: Record<string,
|
|
167
|
+
time?: BlockText | undefined;
|
|
168
|
+
params?: Record<string, ComposedTextParam> | undefined;
|
|
161
169
|
id?: string | undefined;
|
|
162
170
|
icon?: string | undefined;
|
|
163
|
-
meta?:
|
|
171
|
+
meta?: BlockText[] | undefined;
|
|
164
172
|
to?: string | undefined;
|
|
165
173
|
tone?: "primary" | "secondary" | "success" | "info" | "warning" | "error" | "neutral" | undefined;
|
|
166
174
|
unread?: boolean | undefined;
|
|
@@ -169,7 +177,9 @@ export declare const ActivityFeedSchema: z.ZodObject<{
|
|
|
169
177
|
title?: string | undefined;
|
|
170
178
|
fetchUrl?: string | undefined;
|
|
171
179
|
fetchUrlMethod?: import("./types").HttpMethod | undefined;
|
|
180
|
+
periodScope?: string | undefined;
|
|
172
181
|
mono?: boolean | undefined;
|
|
182
|
+
realtimeTopic?: string | string[] | undefined;
|
|
173
183
|
fillHeight?: boolean | undefined;
|
|
174
184
|
actions?: {
|
|
175
185
|
label: string;
|
|
@@ -186,13 +196,13 @@ export declare const ActivityFeedSchema: z.ZodObject<{
|
|
|
186
196
|
skeletonCount?: number | undefined;
|
|
187
197
|
}, {
|
|
188
198
|
items?: {
|
|
189
|
-
title:
|
|
199
|
+
title: BlockText;
|
|
190
200
|
date?: string | undefined;
|
|
191
|
-
time?:
|
|
192
|
-
params?: Record<string,
|
|
201
|
+
time?: BlockText | undefined;
|
|
202
|
+
params?: Record<string, ComposedTextParam> | undefined;
|
|
193
203
|
id?: string | undefined;
|
|
194
204
|
icon?: string | undefined;
|
|
195
|
-
meta?:
|
|
205
|
+
meta?: BlockText[] | undefined;
|
|
196
206
|
to?: string | undefined;
|
|
197
207
|
tone?: "primary" | "secondary" | "success" | "info" | "warning" | "error" | "neutral" | undefined;
|
|
198
208
|
unread?: boolean | undefined;
|
|
@@ -202,7 +212,9 @@ export declare const ActivityFeedSchema: z.ZodObject<{
|
|
|
202
212
|
fetchUrl?: string | undefined;
|
|
203
213
|
fetchUrlMethod?: import("./types").HttpMethod | undefined;
|
|
204
214
|
card?: boolean | undefined;
|
|
215
|
+
periodScope?: string | undefined;
|
|
205
216
|
mono?: boolean | undefined;
|
|
217
|
+
realtimeTopic?: string | string[] | undefined;
|
|
206
218
|
fillHeight?: boolean | undefined;
|
|
207
219
|
actions?: {
|
|
208
220
|
label: string;
|
|
@@ -7,7 +7,9 @@ const zod_1 = require("zod");
|
|
|
7
7
|
const block_registry_1 = require("./block-registry");
|
|
8
8
|
const display_1 = require("./display");
|
|
9
9
|
const display_2 = require("./internal/display");
|
|
10
|
+
const composed_text_1 = require("./internal/composed-text");
|
|
10
11
|
const tone_1 = require("./types/tone");
|
|
12
|
+
const realtime_topics_1 = require("./internal/realtime-topics");
|
|
11
13
|
const ACTIVITY_FEED_COMPONENT_NAME = "dms-activity-feed-block";
|
|
12
14
|
const DEFAULT_ICON = "i-ph-pulse";
|
|
13
15
|
/**
|
|
@@ -28,12 +30,12 @@ const DEFAULT_ICON = "i-ph-pulse";
|
|
|
28
30
|
* ```
|
|
29
31
|
*/
|
|
30
32
|
function ActivityFeed(options) {
|
|
31
|
-
return new component_1.ComponentBuilder(ACTIVITY_FEED_COMPONENT_NAME)
|
|
33
|
+
return (0, realtime_topics_1.attachRealtimeTopicsHook)(new component_1.ComponentBuilder(ACTIVITY_FEED_COMPONENT_NAME)
|
|
32
34
|
.options({ ...options })
|
|
33
35
|
.meta({
|
|
34
36
|
name: options?.title || "Activity feed",
|
|
35
37
|
icon: DEFAULT_ICON,
|
|
36
|
-
});
|
|
38
|
+
}), options?.realtimeTopic);
|
|
37
39
|
}
|
|
38
40
|
const ActivityFeedItemSchema = zod_1.z.object({
|
|
39
41
|
id: zod_1.z.string().optional(),
|
|
@@ -42,16 +44,19 @@ const ActivityFeedItemSchema = zod_1.z.object({
|
|
|
42
44
|
label: "Tone",
|
|
43
45
|
widget: "select",
|
|
44
46
|
}),
|
|
45
|
-
title: (0, block_registry_1.ui)(
|
|
46
|
-
meta: (0, block_registry_1.ui)(zod_1.z.array(
|
|
47
|
-
params: (0, block_registry_1.ui)(zod_1.z.record(zod_1.z.string(),
|
|
47
|
+
title: (0, block_registry_1.ui)((0, composed_text_1.blockTextSchema)(), { label: "Title", widget: "text" }),
|
|
48
|
+
meta: (0, block_registry_1.ui)(zod_1.z.array((0, composed_text_1.blockTextSchema)()).optional(), { label: "Details" }),
|
|
49
|
+
params: (0, block_registry_1.ui)(zod_1.z.record(zod_1.z.string(), (0, composed_text_1.composedTextParamSchema)()).optional(), {
|
|
48
50
|
label: "Text values",
|
|
49
51
|
widget: "json",
|
|
50
52
|
}),
|
|
51
53
|
date: (0, block_registry_1.ui)(zod_1.z.string().optional().describe("ISO date of the event."), {
|
|
52
54
|
label: "Date",
|
|
53
55
|
}),
|
|
54
|
-
time: (0, block_registry_1.ui)(
|
|
56
|
+
time: (0, block_registry_1.ui)((0, composed_text_1.blockTextSchema)().optional(), {
|
|
57
|
+
label: "Time text",
|
|
58
|
+
widget: "text",
|
|
59
|
+
}),
|
|
55
60
|
unread: (0, block_registry_1.ui)(zod_1.z.boolean().optional(), { label: "Unread", widget: "switch" }),
|
|
56
61
|
to: (0, block_registry_1.ui)(zod_1.z.string().optional(), { label: "Link", widget: "url" }),
|
|
57
62
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"activity-feed.js","sourceRoot":"","sources":["../../src/base/activity-feed.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"activity-feed.js","sourceRoot":"","sources":["../../src/base/activity-feed.ts"],"names":[],"mappings":"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"}
|
package/dist/base/banner.d.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { ComponentBuilder } from "../component";
|
|
2
2
|
import { z } from "zod";
|
|
3
3
|
import { type BlockLinkAction } from "./display";
|
|
4
|
-
import type { BaseComponentProps } from "./types";
|
|
4
|
+
import type { BaseComponentProps, EnumOption } from "./types";
|
|
5
|
+
import type { CustomButtonSerialized } from "./types/custom-button";
|
|
6
|
+
import type { HttpMethod } from "./types/http";
|
|
5
7
|
import type { BlockText } from "./types/composed-text";
|
|
6
8
|
import type { Tone } from "./types/tone";
|
|
7
9
|
/** The tones a banner washes with. */
|
|
@@ -11,8 +13,22 @@ export type BannerTone = Extract<Tone, (typeof BANNER_TONES)[number]>;
|
|
|
11
13
|
export declare const BANNER_SIZES: readonly ["md", "sm"];
|
|
12
14
|
/** `md` boxed banner; `sm` compact one-line banner, for cards and panels. */
|
|
13
15
|
export type BannerSize = (typeof BANNER_SIZES)[number];
|
|
14
|
-
/**
|
|
15
|
-
|
|
16
|
+
/**
|
|
17
|
+
* A button a fetched banner offers besides its links: the target of a page
|
|
18
|
+
* header or toolbar button (`CustomButton`) — an API call, a modal, a drawer,
|
|
19
|
+
* a quick action, a link or an export — with its confirmation, as the route
|
|
20
|
+
* serializes it. Pressing one that changes something refreshes the page's
|
|
21
|
+
* blocks, the banner included.
|
|
22
|
+
*/
|
|
23
|
+
export type BannerButtonAction = Pick<CustomButtonSerialized, "label" | "icon" | "variant" | "color" | "target" | "confirm">;
|
|
24
|
+
/** An action of a banner: a link, or a button only a route answers. */
|
|
25
|
+
export type BannerAction = BlockLinkAction | BannerButtonAction;
|
|
26
|
+
/**
|
|
27
|
+
* What a banner shows. A banner's `fetchUrl` answers it, or `null`, `{}` or
|
|
28
|
+
* a 204 for no banner at all; its fields override the static options one by
|
|
29
|
+
* one.
|
|
30
|
+
*/
|
|
31
|
+
export interface BannerContent {
|
|
16
32
|
/**
|
|
17
33
|
* `$`-prefixed for an i18n key, like every text of the block, or a
|
|
18
34
|
* `ComposedText` composed in the reader's language ("Payment failed, retry
|
|
@@ -25,7 +41,7 @@ export interface BannerProps extends BaseComponentProps {
|
|
|
25
41
|
/** Overrides the tone's icon. */
|
|
26
42
|
icon?: string;
|
|
27
43
|
size?: BannerSize;
|
|
28
|
-
actions?:
|
|
44
|
+
actions?: BannerAction[];
|
|
29
45
|
/** Adds a close button; the dismissal is remembered. */
|
|
30
46
|
dismissible?: boolean;
|
|
31
47
|
/**
|
|
@@ -36,11 +52,38 @@ export interface BannerProps extends BaseComponentProps {
|
|
|
36
52
|
*/
|
|
37
53
|
dismissKey?: string;
|
|
38
54
|
}
|
|
55
|
+
/** The options `Banner` takes. */
|
|
56
|
+
export interface BannerProps extends BaseComponentProps, BannerContent {
|
|
57
|
+
/**
|
|
58
|
+
* Link buttons. A button running a target (`BannerButtonAction`) is only
|
|
59
|
+
* answered by `fetchUrl`, which decides per request who is shown it.
|
|
60
|
+
*/
|
|
61
|
+
actions?: BlockLinkAction[];
|
|
62
|
+
/**
|
|
63
|
+
* Route answering the banner's `BannerContent`, or `null`, `{}` or a 204
|
|
64
|
+
* when there is nothing to tell: the block then draws nothing, and nothing
|
|
65
|
+
* either until its first answer lands. It may name the page it is shown
|
|
66
|
+
* on: `{{params.X}}` and `{{query.X}}` name the page URL, as in
|
|
67
|
+
* `BlockItemsSource.fetchUrl`.
|
|
68
|
+
*
|
|
69
|
+
* Read again, keeping the banner on screen, when the page asks its blocks
|
|
70
|
+
* to refresh: see `BlockFunctions.REFRESH_PAGE`.
|
|
71
|
+
*/
|
|
72
|
+
fetchUrl?: string;
|
|
73
|
+
fetchUrlMethod?: EnumOption<HttpMethod>;
|
|
74
|
+
/** Id of the PeriodSelector whose period is sent to `fetchUrl`. */
|
|
75
|
+
periodScope?: string;
|
|
76
|
+
/** Realtime topic(s); the banner reads `fetchUrl` again when they publish. */
|
|
77
|
+
realtimeTopic?: string | string[];
|
|
78
|
+
}
|
|
39
79
|
/**
|
|
40
80
|
* Banner — a notice across the top of a page or a card: a tinted wash, a
|
|
41
81
|
* boxed icon, a title and a line of explanation, with link actions and an
|
|
42
82
|
* optional dismiss that is remembered.
|
|
43
83
|
*
|
|
84
|
+
* With a `fetchUrl` the route decides what the banner says, and whether there
|
|
85
|
+
* is a banner at all: a computed health status, an outage notice.
|
|
86
|
+
*
|
|
44
87
|
* Distinct from `RegisterLayoutBanner` (the dashboard-wide strip under the
|
|
45
88
|
* header): this one is a block placed on one page.
|
|
46
89
|
*
|
|
@@ -53,6 +96,8 @@ export interface BannerProps extends BaseComponentProps {
|
|
|
53
96
|
* dismissible: true,
|
|
54
97
|
* dismissKey: "sales-beta-2026",
|
|
55
98
|
* })
|
|
99
|
+
*
|
|
100
|
+
* Banner({ fetchUrl: "/api/mailing/{{params.id}}/provider-status" })
|
|
56
101
|
* ```
|
|
57
102
|
*/
|
|
58
103
|
export declare function Banner(options?: BannerProps): ComponentBuilder<BannerProps>;
|
|
@@ -84,12 +129,20 @@ export declare const BannerSchema: z.ZodObject<{
|
|
|
84
129
|
size: z.ZodDefault<z.ZodEnum<["md", "sm"]>>;
|
|
85
130
|
dismissible: z.ZodOptional<z.ZodBoolean>;
|
|
86
131
|
dismissKey: z.ZodOptional<z.ZodString>;
|
|
132
|
+
fetchUrl: z.ZodOptional<z.ZodString>;
|
|
133
|
+
fetchUrlMethod: z.ZodOptional<z.ZodNativeEnum<typeof HttpMethod>>;
|
|
134
|
+
periodScope: z.ZodOptional<z.ZodString>;
|
|
135
|
+
realtimeTopic: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
|
|
87
136
|
}, "strip", z.ZodTypeAny, {
|
|
88
137
|
size: "sm" | "md";
|
|
89
138
|
tone: "primary" | "success" | "info" | "warning" | "error";
|
|
90
139
|
description?: BlockText | undefined;
|
|
91
140
|
title?: BlockText | undefined;
|
|
92
141
|
icon?: string | undefined;
|
|
142
|
+
fetchUrl?: string | undefined;
|
|
143
|
+
fetchUrlMethod?: HttpMethod | undefined;
|
|
144
|
+
periodScope?: string | undefined;
|
|
145
|
+
realtimeTopic?: string | string[] | undefined;
|
|
93
146
|
actions?: {
|
|
94
147
|
label: string;
|
|
95
148
|
to: string;
|
|
@@ -104,6 +157,10 @@ export declare const BannerSchema: z.ZodObject<{
|
|
|
104
157
|
size?: "sm" | "md" | undefined;
|
|
105
158
|
title?: BlockText | undefined;
|
|
106
159
|
icon?: string | undefined;
|
|
160
|
+
fetchUrl?: string | undefined;
|
|
161
|
+
fetchUrlMethod?: HttpMethod | undefined;
|
|
162
|
+
periodScope?: string | undefined;
|
|
163
|
+
realtimeTopic?: string | string[] | undefined;
|
|
107
164
|
actions?: {
|
|
108
165
|
label: string;
|
|
109
166
|
to: string;
|
package/dist/base/banner.js
CHANGED
|
@@ -8,6 +8,7 @@ const block_registry_1 = require("./block-registry");
|
|
|
8
8
|
const display_1 = require("./display");
|
|
9
9
|
const display_2 = require("./internal/display");
|
|
10
10
|
const composed_text_1 = require("./internal/composed-text");
|
|
11
|
+
const realtime_topics_1 = require("./internal/realtime-topics");
|
|
11
12
|
/** The tones a banner washes with. */
|
|
12
13
|
exports.BANNER_TONES = [
|
|
13
14
|
"info",
|
|
@@ -26,6 +27,9 @@ const BANNER_DEFAULTS = { tone: "info", size: "md" };
|
|
|
26
27
|
* boxed icon, a title and a line of explanation, with link actions and an
|
|
27
28
|
* optional dismiss that is remembered.
|
|
28
29
|
*
|
|
30
|
+
* With a `fetchUrl` the route decides what the banner says, and whether there
|
|
31
|
+
* is a banner at all: a computed health status, an outage notice.
|
|
32
|
+
*
|
|
29
33
|
* Distinct from `RegisterLayoutBanner` (the dashboard-wide strip under the
|
|
30
34
|
* header): this one is a block placed on one page.
|
|
31
35
|
*
|
|
@@ -38,15 +42,18 @@ const BANNER_DEFAULTS = { tone: "info", size: "md" };
|
|
|
38
42
|
* dismissible: true,
|
|
39
43
|
* dismissKey: "sales-beta-2026",
|
|
40
44
|
* })
|
|
45
|
+
*
|
|
46
|
+
* Banner({ fetchUrl: "/api/mailing/{{params.id}}/provider-status" })
|
|
41
47
|
* ```
|
|
42
48
|
*/
|
|
43
49
|
function Banner(options) {
|
|
44
|
-
|
|
50
|
+
const builder = new component_1.ComponentBuilder(BANNER_COMPONENT_NAME)
|
|
45
51
|
.options({ ...BANNER_DEFAULTS, ...options })
|
|
46
52
|
.meta({
|
|
47
53
|
name: (typeof options?.title === "string" && options.title) || "Banner",
|
|
48
54
|
icon: options?.icon || BANNER_ICON,
|
|
49
55
|
});
|
|
56
|
+
return (0, realtime_topics_1.attachRealtimeTopicsHook)(builder, options?.realtimeTopic);
|
|
50
57
|
}
|
|
51
58
|
/** The options `Banner` accepts. */
|
|
52
59
|
exports.BannerSchema = zod_1.z.object({
|
|
@@ -83,6 +90,10 @@ exports.BannerSchema = zod_1.z.object({
|
|
|
83
90
|
.string()
|
|
84
91
|
.optional()
|
|
85
92
|
.describe("Key the dismissal is remembered under; change it to reset."), { label: "Dismiss key", group: "behavior", advanced: true }),
|
|
93
|
+
fetchUrl: (0, display_1.blockFetchUrlOption)("Route answering the banner's content, or nothing to hide it."),
|
|
94
|
+
fetchUrlMethod: (0, display_1.blockFetchUrlMethodOption)(),
|
|
95
|
+
periodScope: (0, display_1.blockPeriodScopeOption)(),
|
|
96
|
+
realtimeTopic: (0, display_1.blockRealtimeTopicOption)(),
|
|
86
97
|
});
|
|
87
98
|
(0, block_registry_1.RegisterBlockType)({
|
|
88
99
|
type: "Banner",
|
|
@@ -91,7 +102,7 @@ exports.BannerSchema = zod_1.z.object({
|
|
|
91
102
|
meta: {
|
|
92
103
|
name: "Banner",
|
|
93
104
|
icon: BANNER_ICON,
|
|
94
|
-
description: "Notice with a tone, link actions and a remembered dismiss.",
|
|
105
|
+
description: "Notice with a tone, link actions and a remembered dismiss, static or fetched.",
|
|
95
106
|
group: "content",
|
|
96
107
|
},
|
|
97
108
|
});
|
package/dist/base/banner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"banner.js","sourceRoot":"","sources":["../../src/base/banner.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"banner.js","sourceRoot":"","sources":["../../src/base/banner.ts"],"names":[],"mappings":"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"}
|
package/dist/base/block-types.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"block-types.js","sourceRoot":"","sources":["../../src/base/block-types.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;GAWG;AACH,2BAAyB;AACzB,oBAAkB;AAClB,kBAAgB;AAChB,oCAAkC;AAClC,wBAAsB;AACtB,yBAAuB;AACvB,+BAA6B;AAC7B,kBAAgB;AAChB,4BAA0B;AAC1B,sBAAoB;AACpB,mBAAiB;AACjB,2BAAyB;AACzB,6BAA2B;AAC3B,yBAAuB;AACvB,kCAAgC;AAChC,qBAAmB;AACnB,mBAAiB;AACjB,wBAAsB;AACtB,iBAAe;AACf,+BAA6B;AAC7B,2BAAyB;AAEzB,2EAA2E;AAC3E,6DAA6D;AAC7D,iDAA+B;AAC/B,2DAAyC;AACzC,4DAA0C;AAC1C,yDAAuC"}
|
|
1
|
+
{"version":3,"file":"block-types.js","sourceRoot":"","sources":["../../src/base/block-types.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;GAWG;AACH,2BAAyB;AACzB,oBAAkB;AAClB,kBAAgB;AAChB,oCAAkC;AAClC,wBAAsB;AACtB,wBAAsB;AACtB,yBAAuB;AACvB,+BAA6B;AAC7B,kBAAgB;AAChB,4BAA0B;AAC1B,sBAAoB;AACpB,mBAAiB;AACjB,2BAAyB;AACzB,6BAA2B;AAC3B,yBAAuB;AACvB,kCAAgC;AAChC,qBAAmB;AACnB,mBAAiB;AACjB,wBAAsB;AACtB,iBAAe;AACf,+BAA6B;AAC7B,2BAAyB;AAEzB,2EAA2E;AAC3E,6DAA6D;AAC7D,iDAA+B;AAC/B,2DAAyC;AACzC,4DAA0C;AAC1C,yDAAuC"}
|
|
@@ -68,8 +68,8 @@ export declare const ChartCardSchema: z.ZodObject<{
|
|
|
68
68
|
icon?: string | undefined;
|
|
69
69
|
fetchUrl?: string | undefined;
|
|
70
70
|
fetchUrlMethod?: HttpMethod | undefined;
|
|
71
|
-
showLegend?: boolean | undefined;
|
|
72
71
|
periodScope?: string | undefined;
|
|
72
|
+
showLegend?: boolean | undefined;
|
|
73
73
|
valueFormat?: "number" | "percent" | "compact" | "currency" | undefined;
|
|
74
74
|
currencyCode?: string | undefined;
|
|
75
75
|
showDelta?: boolean | undefined;
|