@reykjavik/webtools 0.3.9 → 0.3.11
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 +3 -3
- package/README.md +7 -5
- package/alertsStore/index.d.ts +3 -1
- package/alertsStore/index.js +5 -1
- package/alertsStore/react.d.ts +1 -0
- package/alertsStore/react.js +3 -0
- package/esm/alertsStore/index.d.ts +3 -1
- package/esm/alertsStore/index.js +5 -1
- package/esm/alertsStore/react.d.ts +1 -0
- package/esm/alertsStore/react.js +3 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,14 +4,14 @@
|
|
|
4
4
|
|
|
5
5
|
- ... <!-- Add new lines here. -->
|
|
6
6
|
|
|
7
|
-
## 0.3.
|
|
7
|
+
## 0.3.11
|
|
8
8
|
|
|
9
9
|
_2026-03-16_
|
|
10
10
|
|
|
11
11
|
- `@reykjavik/webtools/alertsStore/react`:
|
|
12
|
-
- feat:
|
|
12
|
+
- feat: Support rendering `br` and `em` elements in alert messages
|
|
13
13
|
|
|
14
|
-
## 0.3.7 – 0.3.
|
|
14
|
+
## 0.3.7 – 0.3.10
|
|
15
15
|
|
|
16
16
|
_2026-03-16_
|
|
17
17
|
|
package/README.md
CHANGED
|
@@ -1164,15 +1164,17 @@ import { Toast } from '../components/Toast';
|
|
|
1164
1164
|
#### `renderAlertMessage`
|
|
1165
1165
|
|
|
1166
1166
|
**Syntax:**
|
|
1167
|
-
`renderAlertMessage(message: AlertInfo['message'],
|
|
1167
|
+
`renderAlertMessage(message: AlertInfo['message'], onLinkClick?: (e: MouseEvent) => void, linkComponent?: renderAlertMessage.LinkRenderer): ReactNode`
|
|
1168
1168
|
|
|
1169
1169
|
Helper to render an alerter alert message, which can be a simple string or a
|
|
1170
|
-
more complex array of strings and objects representing links
|
|
1171
|
-
text formatting.
|
|
1170
|
+
more complex array of strings and objects representing links, `br` elements
|
|
1171
|
+
and rich (`strong`/`em`) text formatting.
|
|
1172
|
+
|
|
1173
|
+
You can optionally pass an additional `onLinkClick` handler as a second
|
|
1174
|
+
parameter. (For example the alert's `dismiss` dispatcher.)
|
|
1172
1175
|
|
|
1173
1176
|
It renders link objects as simple `<a href="" />` elements, by default, but
|
|
1174
|
-
you can optionally provide a custom `linkComponent` as a
|
|
1175
|
-
with an additional `onLinkClick` handler for the links.
|
|
1177
|
+
you can optionally provide a custom `linkComponent` as a third parameter.
|
|
1176
1178
|
|
|
1177
1179
|
Third
|
|
1178
1180
|
|
package/alertsStore/index.d.ts
CHANGED
|
@@ -7,7 +7,9 @@ declare const messageSchema: v.UnionSchema<[v.StringSchema<undefined>, v.ArraySc
|
|
|
7
7
|
readonly hrefLang: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
8
8
|
readonly lang: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
9
9
|
}, undefined>, v.ObjectSchema<{
|
|
10
|
-
readonly tag: v.LiteralSchema<"
|
|
10
|
+
readonly tag: v.LiteralSchema<"br", undefined>;
|
|
11
|
+
}, undefined>, v.ObjectSchema<{
|
|
12
|
+
readonly tag: v.PicklistSchema<["strong", "em"], undefined>;
|
|
11
13
|
readonly text: v.StringSchema<undefined>;
|
|
12
14
|
}, undefined>], undefined>, undefined>], undefined>;
|
|
13
15
|
export type AlertMessage = v.InferOutput<typeof messageSchema>;
|
package/alertsStore/index.js
CHANGED
|
@@ -50,9 +50,13 @@ const messageSchema = v.union([
|
|
|
50
50
|
hrefLang: v.optional(v.string()),
|
|
51
51
|
lang: v.optional(v.string()),
|
|
52
52
|
}),
|
|
53
|
+
// line break elements
|
|
54
|
+
v.object({
|
|
55
|
+
tag: v.literal('br'),
|
|
56
|
+
}),
|
|
53
57
|
// strong/bold elements
|
|
54
58
|
v.object({
|
|
55
|
-
tag: v.
|
|
59
|
+
tag: v.picklist(['strong', 'em']),
|
|
56
60
|
text: v.string(),
|
|
57
61
|
}),
|
|
58
62
|
])),
|
package/alertsStore/react.d.ts
CHANGED
|
@@ -31,6 +31,7 @@ export declare namespace renderAlertMessage {
|
|
|
31
31
|
type LinkRendererProps = Omit<Extract<AlertMessage[number], {
|
|
32
32
|
tag: 'a';
|
|
33
33
|
}>, 'tag' | 'text'> & {
|
|
34
|
+
onClick?: (e: MouseEvent) => void;
|
|
34
35
|
children: ReactNode;
|
|
35
36
|
};
|
|
36
37
|
export type LinkRenderer = (props: LinkRendererProps) => ReactNode;
|
package/alertsStore/react.js
CHANGED
|
@@ -81,6 +81,9 @@ const renderAlertMessage = (message, onLinkClick, linkComponent) => {
|
|
|
81
81
|
react_1.default.createElement(Link, { key: i, ...linkProps, onClick: onLinkClick && ((e) => onLinkClick(e)) }, text),
|
|
82
82
|
];
|
|
83
83
|
}
|
|
84
|
+
if (part.tag === 'br') {
|
|
85
|
+
return react_1.default.createElement("br", { key: i });
|
|
86
|
+
}
|
|
84
87
|
return [' ', react_1.default.createElement(part.tag, { key: i }, part.text)];
|
|
85
88
|
});
|
|
86
89
|
};
|
|
@@ -7,7 +7,9 @@ declare const messageSchema: v.UnionSchema<[v.StringSchema<undefined>, v.ArraySc
|
|
|
7
7
|
readonly hrefLang: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
8
8
|
readonly lang: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
9
9
|
}, undefined>, v.ObjectSchema<{
|
|
10
|
-
readonly tag: v.LiteralSchema<"
|
|
10
|
+
readonly tag: v.LiteralSchema<"br", undefined>;
|
|
11
|
+
}, undefined>, v.ObjectSchema<{
|
|
12
|
+
readonly tag: v.PicklistSchema<["strong", "em"], undefined>;
|
|
11
13
|
readonly text: v.StringSchema<undefined>;
|
|
12
14
|
}, undefined>], undefined>, undefined>], undefined>;
|
|
13
15
|
export type AlertMessage = v.InferOutput<typeof messageSchema>;
|
package/esm/alertsStore/index.js
CHANGED
|
@@ -14,9 +14,13 @@ const messageSchema = v.union([
|
|
|
14
14
|
hrefLang: v.optional(v.string()),
|
|
15
15
|
lang: v.optional(v.string()),
|
|
16
16
|
}),
|
|
17
|
+
// line break elements
|
|
18
|
+
v.object({
|
|
19
|
+
tag: v.literal('br'),
|
|
20
|
+
}),
|
|
17
21
|
// strong/bold elements
|
|
18
22
|
v.object({
|
|
19
|
-
tag: v.
|
|
23
|
+
tag: v.picklist(['strong', 'em']),
|
|
20
24
|
text: v.string(),
|
|
21
25
|
}),
|
|
22
26
|
])),
|
|
@@ -31,6 +31,7 @@ export declare namespace renderAlertMessage {
|
|
|
31
31
|
type LinkRendererProps = Omit<Extract<AlertMessage[number], {
|
|
32
32
|
tag: 'a';
|
|
33
33
|
}>, 'tag' | 'text'> & {
|
|
34
|
+
onClick?: (e: MouseEvent) => void;
|
|
34
35
|
children: ReactNode;
|
|
35
36
|
};
|
|
36
37
|
export type LinkRenderer = (props: LinkRendererProps) => ReactNode;
|
package/esm/alertsStore/react.js
CHANGED
|
@@ -44,6 +44,9 @@ export const renderAlertMessage = (message, onLinkClick, linkComponent) => {
|
|
|
44
44
|
React.createElement(Link, { key: i, ...linkProps, onClick: onLinkClick && ((e) => onLinkClick(e)) }, text),
|
|
45
45
|
];
|
|
46
46
|
}
|
|
47
|
+
if (part.tag === 'br') {
|
|
48
|
+
return React.createElement("br", { key: i });
|
|
49
|
+
}
|
|
47
50
|
return [' ', React.createElement(part.tag, { key: i }, part.text)];
|
|
48
51
|
});
|
|
49
52
|
};
|
package/package.json
CHANGED