@dbcdk/react-components 0.0.54 → 0.0.55
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/components/card/Card.d.ts +1 -1
- package/dist/components/card/Card.js +0 -2
- package/dist/components/card/Card.module.css +0 -5
- package/dist/components/menu/Menu.module.css +14 -6
- package/dist/components/popover/Popover.js +18 -4
- package/dist/components/popover/Popover.module.css +3 -1
- package/dist/components/toast/Toast.module.css +4 -0
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { JSX, ReactNode } from 'react';
|
|
2
2
|
import type { Severity } from '../../constants/severity.types';
|
|
3
3
|
import { CardMeta, CardMetaRow } from './components/CardMeta';
|
|
4
|
-
type CardVariant = 'default' | 'subtle'
|
|
4
|
+
type CardVariant = 'default' | 'subtle';
|
|
5
5
|
type CardSize = 'sm' | 'md' | 'lg';
|
|
6
6
|
type CardImagePlacement = 'left' | 'right' | 'top';
|
|
7
7
|
export interface CardProps {
|
|
@@ -31,11 +31,6 @@
|
|
|
31
31
|
background-color: var(--card-bg-subtle, var(--color-bg-contextual-subtle));
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
-
.variantStrong {
|
|
35
|
-
background-color: var(--card-bg-strong, var(--color-bg-surface-strong));
|
|
36
|
-
color: var(--card-fg-on-strong, var(--color-fg-on-strong));
|
|
37
|
-
}
|
|
38
|
-
|
|
39
34
|
/* SIZE VARIANTS (define vars once; inner uses them) */
|
|
40
35
|
.sm {
|
|
41
36
|
--card-pad: var(--spacing-md);
|
|
@@ -95,15 +95,10 @@
|
|
|
95
95
|
cursor: pointer;
|
|
96
96
|
}
|
|
97
97
|
|
|
98
|
-
.row + .row .interactive,
|
|
99
|
-
.row + .row > .interactiveChild {
|
|
100
|
-
box-shadow: inset 0 1px 0 var(--color-border-subtle);
|
|
101
|
-
}
|
|
102
|
-
|
|
103
98
|
/* Hover: support both cases (interactive element, or wrapper child) */
|
|
104
99
|
.interactive:hover:not(.selected),
|
|
105
100
|
.row:hover > .interactiveChild:not(.selected) {
|
|
106
|
-
background-color: var(--color-bg-hover
|
|
101
|
+
background-color: var(--color-bg-toolbar-hover);
|
|
107
102
|
}
|
|
108
103
|
|
|
109
104
|
/* Focus ring: support both cases */
|
|
@@ -134,6 +129,19 @@
|
|
|
134
129
|
color: var(--color-fg-default);
|
|
135
130
|
}
|
|
136
131
|
|
|
132
|
+
.selected:hover,
|
|
133
|
+
.interactive.selected:hover,
|
|
134
|
+
.interactive[aria-selected='true']:hover,
|
|
135
|
+
.row:hover > .interactiveChild.selected,
|
|
136
|
+
.row:hover > .interactiveChild[aria-selected='true'],
|
|
137
|
+
.active.selected,
|
|
138
|
+
.interactive.active.selected,
|
|
139
|
+
.interactive.active[aria-selected='true'],
|
|
140
|
+
.row > .interactiveChild.active.selected,
|
|
141
|
+
.row > .interactiveChild.active[aria-selected='true'] {
|
|
142
|
+
background-color: var(--color-bg-selected-hover);
|
|
143
|
+
}
|
|
144
|
+
|
|
137
145
|
/* Checked (legacy support; kept in case any interactive element still uses aria-checked) */
|
|
138
146
|
.interactive[aria-checked='true'],
|
|
139
147
|
.row > .interactiveChild[aria-checked='true'] {
|
|
@@ -66,7 +66,8 @@ export const Popover = forwardRef(function Popover({ trigger: Trigger, children,
|
|
|
66
66
|
setOpen(false);
|
|
67
67
|
}, [setOpen]);
|
|
68
68
|
const togglePopover = useCallback((e) => {
|
|
69
|
-
|
|
69
|
+
var _a;
|
|
70
|
+
triggerElRef.current = (_a = containerRef.current) !== null && _a !== void 0 ? _a : e.currentTarget;
|
|
70
71
|
if (isOpen)
|
|
71
72
|
closePopover('trigger');
|
|
72
73
|
else
|
|
@@ -86,11 +87,14 @@ export const Popover = forwardRef(function Popover({ trigger: Trigger, children,
|
|
|
86
87
|
if (!triggerEl)
|
|
87
88
|
return;
|
|
88
89
|
const triggerRect = triggerEl.getBoundingClientRect();
|
|
90
|
+
const overlayWidthBuffer = 8;
|
|
89
91
|
// Only compute a forced width when requested.
|
|
90
92
|
let forcedWidthPx = null;
|
|
91
93
|
if (matchTriggerWidth) {
|
|
92
94
|
const minWidthPx = parseMinWidthPx(minWidth, triggerEl);
|
|
93
|
-
|
|
95
|
+
// Make the overlay slightly wider than the trigger so it reads as a
|
|
96
|
+
// floating layer instead of blending into adjacent form fields.
|
|
97
|
+
forcedWidthPx = Math.max(triggerRect.width + overlayWidthBuffer, minWidthPx || 0);
|
|
94
98
|
setTriggerWidth(forcedWidthPx);
|
|
95
99
|
}
|
|
96
100
|
else {
|
|
@@ -154,15 +158,16 @@ export const Popover = forwardRef(function Popover({ trigger: Trigger, children,
|
|
|
154
158
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
155
159
|
}, [isOpen]);
|
|
156
160
|
useEffect(() => {
|
|
157
|
-
var _a;
|
|
161
|
+
var _a, _b;
|
|
158
162
|
if (!isOpen)
|
|
159
163
|
return;
|
|
160
164
|
const content = contentRef.current;
|
|
161
165
|
if (!content)
|
|
162
166
|
return;
|
|
167
|
+
const triggerEl = (_a = triggerElRef.current) !== null && _a !== void 0 ? _a : containerRef.current;
|
|
163
168
|
if (autoFocusContent) {
|
|
164
169
|
const focusables = getFocusable(content);
|
|
165
|
-
(
|
|
170
|
+
(_b = focusables[0]) === null || _b === void 0 ? void 0 : _b.focus();
|
|
166
171
|
}
|
|
167
172
|
const handlePointerDownCapture = (e) => {
|
|
168
173
|
const container = containerRef.current;
|
|
@@ -179,15 +184,24 @@ export const Popover = forwardRef(function Popover({ trigger: Trigger, children,
|
|
|
179
184
|
closePopover('escape');
|
|
180
185
|
};
|
|
181
186
|
const handleReposition = () => computeAndSetPosition();
|
|
187
|
+
const resizeObserver = typeof ResizeObserver !== 'undefined'
|
|
188
|
+
? new ResizeObserver(() => {
|
|
189
|
+
handleReposition();
|
|
190
|
+
})
|
|
191
|
+
: null;
|
|
182
192
|
document.addEventListener('pointerdown', handlePointerDownCapture, true);
|
|
183
193
|
document.addEventListener('keydown', handleEscape, true);
|
|
184
194
|
window.addEventListener('resize', handleReposition);
|
|
185
195
|
window.addEventListener('scroll', handleReposition, true);
|
|
196
|
+
resizeObserver === null || resizeObserver === void 0 ? void 0 : resizeObserver.observe(content);
|
|
197
|
+
if (triggerEl)
|
|
198
|
+
resizeObserver === null || resizeObserver === void 0 ? void 0 : resizeObserver.observe(triggerEl);
|
|
186
199
|
return () => {
|
|
187
200
|
document.removeEventListener('pointerdown', handlePointerDownCapture, true);
|
|
188
201
|
document.removeEventListener('keydown', handleEscape, true);
|
|
189
202
|
window.removeEventListener('resize', handleReposition);
|
|
190
203
|
window.removeEventListener('scroll', handleReposition, true);
|
|
204
|
+
resizeObserver === null || resizeObserver === void 0 ? void 0 : resizeObserver.disconnect();
|
|
191
205
|
};
|
|
192
206
|
}, [isOpen, closePopover, computeAndSetPosition, autoFocusContent]);
|
|
193
207
|
useEffect(() => {
|