@reykjavik/webtools 0.3.8 → 0.3.10
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 +5 -5
- package/README.md +13 -17
- package/alertsStore/react.d.ts +4 -3
- package/alertsStore/react.js +3 -3
- package/esm/alertsStore/react.d.ts +4 -3
- package/esm/alertsStore/react.js +3 -3
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,19 +4,19 @@
|
|
|
4
4
|
|
|
5
5
|
- ... <!-- Add new lines here. -->
|
|
6
6
|
|
|
7
|
-
## 0.3.
|
|
7
|
+
## 0.3.10
|
|
8
8
|
|
|
9
9
|
_2026-03-16_
|
|
10
10
|
|
|
11
|
-
- `@reykjavik/webtools/alertsStore/react
|
|
12
|
-
- fix:
|
|
11
|
+
- `@reykjavik/webtools/alertsStore/react`:
|
|
12
|
+
- fix: Add missing `onClick` prop to `LinkRendererProps`
|
|
13
13
|
|
|
14
|
-
## 0.3.7
|
|
14
|
+
## 0.3.7 – 0.3.9
|
|
15
15
|
|
|
16
16
|
_2026-03-16_
|
|
17
17
|
|
|
18
18
|
- feat: Add `@reykjavik/webtools/alertsStore` for toasts and other global UI
|
|
19
|
-
feedback messages along with
|
|
19
|
+
feedback messages along with helpers
|
|
20
20
|
|
|
21
21
|
## 0.3.6
|
|
22
22
|
|
package/README.md
CHANGED
|
@@ -1164,14 +1164,17 @@ import { Toast } from '../components/Toast';
|
|
|
1164
1164
|
#### `renderAlertMessage`
|
|
1165
1165
|
|
|
1166
1166
|
**Syntax:**
|
|
1167
|
-
`renderAlertMessage(message: AlertInfo['message'], linkComponent?: renderAlertMessage.LinkRenderer): ReactNode`
|
|
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
1170
|
more complex array of strings and objects representing links and rich (bold)
|
|
1171
1171
|
text formatting.
|
|
1172
1172
|
|
|
1173
|
+
You can optionally pass an additional `onLinkClick` handler as a second
|
|
1174
|
+
parameter. (For example the alert's `dismiss` dispatcher.)
|
|
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
|
|
1177
|
+
you can optionally provide a custom `linkComponent` as a third parameter.
|
|
1175
1178
|
|
|
1176
1179
|
Third
|
|
1177
1180
|
|
|
@@ -1181,18 +1184,11 @@ import Link from 'next/link';
|
|
|
1181
1184
|
|
|
1182
1185
|
import { AlertInfo } from '../alertsStore';
|
|
1183
1186
|
|
|
1184
|
-
export const Toast = (props: AlertInfo) =>
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
};
|
|
1190
|
-
return (
|
|
1191
|
-
<div class="toast" onClick={dismissOnLinkClick}>
|
|
1192
|
-
{renderAlertMessage(props.message, Link)}
|
|
1193
|
-
</div>
|
|
1194
|
-
);
|
|
1195
|
-
};
|
|
1187
|
+
export const Toast = (props: AlertInfo) => (
|
|
1188
|
+
<div class="toast">
|
|
1189
|
+
{renderAlertMessage(props.message, Link, props.dismiss)}
|
|
1190
|
+
</div>
|
|
1191
|
+
);
|
|
1196
1192
|
```
|
|
1197
1193
|
|
|
1198
1194
|
To build your own custom `LinkComponent`, you can use the
|
|
@@ -1209,7 +1205,7 @@ const MyWrappedLink: renderAlertMessage.LinkRenderer = (props) => {
|
|
|
1209
1205
|
|
|
1210
1206
|
// Then elsewhere in your Alert/Toast component
|
|
1211
1207
|
<div class="toast__message">
|
|
1212
|
-
{renderAlertMessage(props.message, MyWrappedLink)};
|
|
1208
|
+
{renderAlertMessage(props.message, MyWrappedLink, props.dismiss)};
|
|
1213
1209
|
</div>;
|
|
1214
1210
|
```
|
|
1215
1211
|
|
|
@@ -1220,7 +1216,7 @@ call `renderAlertMessage`, you can use the
|
|
|
1220
1216
|
#### `renderAlertMessage.withLinkRenderer`
|
|
1221
1217
|
|
|
1222
1218
|
**Syntax:**
|
|
1223
|
-
`renderAlertMessage.withLinkRenderer(LinkComponent: renderAlertMessage.LinkRenderer): (message: AlertInfo['message']):ReactNode`
|
|
1219
|
+
`renderAlertMessage.withLinkRenderer(LinkComponent: renderAlertMessage.LinkRenderer): (message: AlertInfo['message'], onLinkClick?: (e: MouseEvent) => void):ReactNode`
|
|
1224
1220
|
|
|
1225
1221
|
It returns a curried version of [`renderAlertMessage`](#renderAlertMessage)
|
|
1226
1222
|
that uses the passed `LinkComponent` for rendering links in alert messages.
|
|
@@ -1231,7 +1227,7 @@ const curriedRenderAlertMessage =
|
|
|
1231
1227
|
|
|
1232
1228
|
// Then elsewhere in your Alert/Toast component
|
|
1233
1229
|
<div class="toast__message">
|
|
1234
|
-
{renderAlertMessage(props.message,
|
|
1230
|
+
{renderAlertMessage(props.message, props.dismiss)};
|
|
1235
1231
|
</div>;
|
|
1236
1232
|
```
|
|
1237
1233
|
|
package/alertsStore/react.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, { ReactNode } from 'react';
|
|
1
|
+
import React, { MouseEvent, ReactNode } from 'react';
|
|
2
2
|
import { AlertMessage } from './index.js';
|
|
3
3
|
type SubsScriber<AlertInfo> = (callback: (alerts: Array<AlertInfo>, meta: {
|
|
4
4
|
type: string;
|
|
@@ -24,13 +24,14 @@ export declare const makeReactSubscription: <AlertInfo>(subscribe: SubsScriber<A
|
|
|
24
24
|
* @see https://github.com/reykjavikcity/webtools/blob/v0.3/README.md#renderalertmessage
|
|
25
25
|
*/
|
|
26
26
|
export declare const renderAlertMessage: {
|
|
27
|
-
(message: AlertMessage, linkComponent?: renderAlertMessage.LinkRenderer): ReactNode;
|
|
28
|
-
withLinkRenderer(LinkCompnent: renderAlertMessage.LinkRenderer): (message: AlertMessage) => React.ReactNode;
|
|
27
|
+
(message: AlertMessage, onLinkClick?: (e: MouseEvent) => void, linkComponent?: renderAlertMessage.LinkRenderer): ReactNode;
|
|
28
|
+
withLinkRenderer(LinkCompnent: renderAlertMessage.LinkRenderer): (message: AlertMessage, onLinkClick: (e: MouseEvent) => void) => React.ReactNode;
|
|
29
29
|
};
|
|
30
30
|
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
|
@@ -66,7 +66,7 @@ exports.makeReactSubscription = makeReactSubscription;
|
|
|
66
66
|
* @see https://github.com/reykjavikcity/webtools/blob/v0.3/README.md#renderalertmessage
|
|
67
67
|
*/
|
|
68
68
|
/*#__NO_SIDE_EFFECTS__*/
|
|
69
|
-
const renderAlertMessage = (message, linkComponent) => {
|
|
69
|
+
const renderAlertMessage = (message, onLinkClick, linkComponent) => {
|
|
70
70
|
const Link = linkComponent || 'a';
|
|
71
71
|
return typeof message === 'string'
|
|
72
72
|
? message
|
|
@@ -78,7 +78,7 @@ const renderAlertMessage = (message, linkComponent) => {
|
|
|
78
78
|
const { text, tag, ...linkProps } = part;
|
|
79
79
|
return [
|
|
80
80
|
' ',
|
|
81
|
-
react_1.default.createElement(Link, { key: i, ...linkProps }, text),
|
|
81
|
+
react_1.default.createElement(Link, { key: i, ...linkProps, onClick: onLinkClick && ((e) => onLinkClick(e)) }, text),
|
|
82
82
|
];
|
|
83
83
|
}
|
|
84
84
|
return [' ', react_1.default.createElement(part.tag, { key: i }, part.text)];
|
|
@@ -93,4 +93,4 @@ exports.renderAlertMessage = renderAlertMessage;
|
|
|
93
93
|
*/
|
|
94
94
|
/*#__NO_SIDE_EFFECTS__*/
|
|
95
95
|
exports.renderAlertMessage.withLinkRenderer =
|
|
96
|
-
(LinkCompnent) => (message) => (0, exports.renderAlertMessage)(message, LinkCompnent);
|
|
96
|
+
(LinkCompnent) => (message, onLinkClick) => (0, exports.renderAlertMessage)(message, onLinkClick, LinkCompnent);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, { ReactNode } from 'react';
|
|
1
|
+
import React, { MouseEvent, ReactNode } from 'react';
|
|
2
2
|
import { AlertMessage } from './index.js';
|
|
3
3
|
type SubsScriber<AlertInfo> = (callback: (alerts: Array<AlertInfo>, meta: {
|
|
4
4
|
type: string;
|
|
@@ -24,13 +24,14 @@ export declare const makeReactSubscription: <AlertInfo>(subscribe: SubsScriber<A
|
|
|
24
24
|
* @see https://github.com/reykjavikcity/webtools/blob/v0.3/README.md#renderalertmessage
|
|
25
25
|
*/
|
|
26
26
|
export declare const renderAlertMessage: {
|
|
27
|
-
(message: AlertMessage, linkComponent?: renderAlertMessage.LinkRenderer): ReactNode;
|
|
28
|
-
withLinkRenderer(LinkCompnent: renderAlertMessage.LinkRenderer): (message: AlertMessage) => React.ReactNode;
|
|
27
|
+
(message: AlertMessage, onLinkClick?: (e: MouseEvent) => void, linkComponent?: renderAlertMessage.LinkRenderer): ReactNode;
|
|
28
|
+
withLinkRenderer(LinkCompnent: renderAlertMessage.LinkRenderer): (message: AlertMessage, onLinkClick: (e: MouseEvent) => void) => React.ReactNode;
|
|
29
29
|
};
|
|
30
30
|
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
|
@@ -29,7 +29,7 @@ export const makeReactSubscription = (subscribe) => {
|
|
|
29
29
|
* @see https://github.com/reykjavikcity/webtools/blob/v0.3/README.md#renderalertmessage
|
|
30
30
|
*/
|
|
31
31
|
/*#__NO_SIDE_EFFECTS__*/
|
|
32
|
-
export const renderAlertMessage = (message, linkComponent) => {
|
|
32
|
+
export const renderAlertMessage = (message, onLinkClick, linkComponent) => {
|
|
33
33
|
const Link = linkComponent || 'a';
|
|
34
34
|
return typeof message === 'string'
|
|
35
35
|
? message
|
|
@@ -41,7 +41,7 @@ export const renderAlertMessage = (message, linkComponent) => {
|
|
|
41
41
|
const { text, tag, ...linkProps } = part;
|
|
42
42
|
return [
|
|
43
43
|
' ',
|
|
44
|
-
React.createElement(Link, { key: i, ...linkProps }, text),
|
|
44
|
+
React.createElement(Link, { key: i, ...linkProps, onClick: onLinkClick && ((e) => onLinkClick(e)) }, text),
|
|
45
45
|
];
|
|
46
46
|
}
|
|
47
47
|
return [' ', React.createElement(part.tag, { key: i }, part.text)];
|
|
@@ -55,4 +55,4 @@ export const renderAlertMessage = (message, linkComponent) => {
|
|
|
55
55
|
*/
|
|
56
56
|
/*#__NO_SIDE_EFFECTS__*/
|
|
57
57
|
renderAlertMessage.withLinkRenderer =
|
|
58
|
-
(LinkCompnent) => (message) => renderAlertMessage(message, LinkCompnent);
|
|
58
|
+
(LinkCompnent) => (message, onLinkClick) => renderAlertMessage(message, onLinkClick, LinkCompnent);
|
package/package.json
CHANGED