@flamingo-stack/openframe-frontend-core 0.0.666 → 0.0.667-2387.7141.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/dist/{chunk-QSYYYL55.cjs → chunk-2FUSTKIV.cjs} +3 -3
- package/dist/{chunk-QSYYYL55.cjs.map → chunk-2FUSTKIV.cjs.map} +1 -1
- package/dist/{chunk-WI5LLFA6.cjs → chunk-3A6MM3CK.cjs} +13 -13
- package/dist/{chunk-WI5LLFA6.cjs.map → chunk-3A6MM3CK.cjs.map} +1 -1
- package/dist/{chunk-NIVLGQKS.js → chunk-4FHL6C5E.js} +2 -2
- package/dist/{chunk-HQHZZ3SL.js → chunk-57BIWOGD.js} +2 -2
- package/dist/{chunk-YVMSA7LR.js → chunk-5ZHLPC32.js} +5 -5
- package/dist/{chunk-XMY2XTHG.cjs → chunk-6M5NRLFI.cjs} +3 -3
- package/dist/{chunk-XMY2XTHG.cjs.map → chunk-6M5NRLFI.cjs.map} +1 -1
- package/dist/{chunk-O5GV3WQO.js → chunk-7ZIOUUWU.js} +2 -2
- package/dist/{chunk-JBRNIUYC.js → chunk-AAZLZBR5.js} +2 -2
- package/dist/{chunk-L7QXTWI7.cjs → chunk-AUHHSY5H.cjs} +17 -17
- package/dist/{chunk-L7QXTWI7.cjs.map → chunk-AUHHSY5H.cjs.map} +1 -1
- package/dist/{chunk-KDFSFVNX.cjs → chunk-B76ZH6HA.cjs} +10 -10
- package/dist/{chunk-KDFSFVNX.cjs.map → chunk-B76ZH6HA.cjs.map} +1 -1
- package/dist/{chunk-EYCF3GGM.js → chunk-BO2ZXX4Z.js} +5 -5
- package/dist/{chunk-CYPLD5F3.js → chunk-CEPI3A3T.js} +2 -2
- package/dist/{chunk-YAF2JKAK.cjs → chunk-CIB3QB2T.cjs} +51 -51
- package/dist/{chunk-YAF2JKAK.cjs.map → chunk-CIB3QB2T.cjs.map} +1 -1
- package/dist/{chunk-XSRIPH6U.cjs → chunk-CYBRUQ2Z.cjs} +17 -17
- package/dist/{chunk-XSRIPH6U.cjs.map → chunk-CYBRUQ2Z.cjs.map} +1 -1
- package/dist/{chunk-V3B37LQY.js → chunk-DG763XMY.js} +4 -4
- package/dist/{chunk-7H7LYI4M.cjs → chunk-DKBXW3EI.cjs} +4 -4
- package/dist/{chunk-7H7LYI4M.cjs.map → chunk-DKBXW3EI.cjs.map} +1 -1
- package/dist/{chunk-DDW7G6U7.js → chunk-DYFQCHUY.js} +4 -4
- package/dist/{chunk-CRDKQMTP.js → chunk-GKAZC2JI.js} +2 -2
- package/dist/{chunk-W2WEIVHT.cjs → chunk-JMPZUL2X.cjs} +36 -9
- package/dist/chunk-JMPZUL2X.cjs.map +1 -0
- package/dist/{chunk-R6NU4QFR.js → chunk-KS2PRUHN.js} +2 -2
- package/dist/{chunk-ZDGEJFDG.js → chunk-M6PDHXI5.js} +2 -2
- package/dist/{chunk-2S44CUCH.cjs → chunk-QHJ4GEDA.cjs} +4 -4
- package/dist/{chunk-2S44CUCH.cjs.map → chunk-QHJ4GEDA.cjs.map} +1 -1
- package/dist/{chunk-IUNCGKFP.cjs → chunk-SFMFRUY2.cjs} +3 -3
- package/dist/{chunk-IUNCGKFP.cjs.map → chunk-SFMFRUY2.cjs.map} +1 -1
- package/dist/{chunk-VI35TSB2.js → chunk-TN33GNFP.js} +3 -3
- package/dist/{chunk-ILAEMVAI.js → chunk-TSEYXPXZ.js} +54 -27
- package/dist/{chunk-ILAEMVAI.js.map → chunk-TSEYXPXZ.js.map} +1 -1
- package/dist/{chunk-OPY4JNY2.cjs → chunk-VUQWJUW7.cjs} +36 -36
- package/dist/{chunk-OPY4JNY2.cjs.map → chunk-VUQWJUW7.cjs.map} +1 -1
- package/dist/{chunk-AAIL6J56.cjs → chunk-WD73QMY3.cjs} +3 -3
- package/dist/{chunk-AAIL6J56.cjs.map → chunk-WD73QMY3.cjs.map} +1 -1
- package/dist/{chunk-VN2U4EBP.cjs → chunk-YW4LA55U.cjs} +33 -33
- package/dist/{chunk-VN2U4EBP.cjs.map → chunk-YW4LA55U.cjs.map} +1 -1
- package/dist/{chunk-VUYRTI3Z.cjs → chunk-Z5FOWR7O.cjs} +18 -18
- package/dist/{chunk-VUYRTI3Z.cjs.map → chunk-Z5FOWR7O.cjs.map} +1 -1
- package/dist/{chunk-SCRVQY42.js → chunk-ZRD3YAPM.js} +2 -2
- package/dist/components/case-studies/index.cjs +11 -11
- package/dist/components/case-studies/index.js +2 -2
- package/dist/components/contact/index.cjs +3 -3
- package/dist/components/contact/index.js +2 -2
- package/dist/components/docs/index.cjs +6 -6
- package/dist/components/docs/index.js +5 -5
- package/dist/components/embeds/index.cjs +3 -3
- package/dist/components/embeds/index.js +2 -2
- package/dist/components/faq/index.cjs +3 -3
- package/dist/components/faq/index.js +2 -2
- package/dist/components/features/board/ticket-card.d.ts +13 -3
- package/dist/components/features/board/ticket-card.d.ts.map +1 -1
- package/dist/components/features/index.cjs +2 -2
- package/dist/components/features/index.js +1 -1
- package/dist/components/help-center-pages/index.cjs +22 -22
- package/dist/components/help-center-pages/index.js +13 -13
- package/dist/components/index.cjs +31 -31
- package/dist/components/index.js +12 -12
- package/dist/components/meeting-scheduler/index.cjs +21 -21
- package/dist/components/meeting-scheduler/index.js +1 -1
- package/dist/components/navigation/index.cjs +5 -5
- package/dist/components/navigation/index.js +4 -4
- package/dist/components/onboarding-guides/index.cjs +5 -5
- package/dist/components/onboarding-guides/index.js +4 -4
- package/dist/components/tickets/index.cjs +6 -6
- package/dist/components/tickets/index.js +5 -5
- package/dist/components/ui/index.cjs +2 -2
- package/dist/components/ui/index.js +1 -1
- package/dist/index.cjs +6 -6
- package/dist/index.js +5 -5
- package/package.json +1 -1
- package/src/__tests__/ticket-card-meta.test.tsx +39 -1
- package/src/components/features/board/.ticket-card.md +2 -2
- package/src/components/features/board/ticket-card.tsx +49 -10
- package/dist/chunk-W2WEIVHT.cjs.map +0 -1
- /package/dist/{chunk-NIVLGQKS.js.map → chunk-4FHL6C5E.js.map} +0 -0
- /package/dist/{chunk-HQHZZ3SL.js.map → chunk-57BIWOGD.js.map} +0 -0
- /package/dist/{chunk-YVMSA7LR.js.map → chunk-5ZHLPC32.js.map} +0 -0
- /package/dist/{chunk-O5GV3WQO.js.map → chunk-7ZIOUUWU.js.map} +0 -0
- /package/dist/{chunk-JBRNIUYC.js.map → chunk-AAZLZBR5.js.map} +0 -0
- /package/dist/{chunk-EYCF3GGM.js.map → chunk-BO2ZXX4Z.js.map} +0 -0
- /package/dist/{chunk-CYPLD5F3.js.map → chunk-CEPI3A3T.js.map} +0 -0
- /package/dist/{chunk-V3B37LQY.js.map → chunk-DG763XMY.js.map} +0 -0
- /package/dist/{chunk-DDW7G6U7.js.map → chunk-DYFQCHUY.js.map} +0 -0
- /package/dist/{chunk-CRDKQMTP.js.map → chunk-GKAZC2JI.js.map} +0 -0
- /package/dist/{chunk-R6NU4QFR.js.map → chunk-KS2PRUHN.js.map} +0 -0
- /package/dist/{chunk-ZDGEJFDG.js.map → chunk-M6PDHXI5.js.map} +0 -0
- /package/dist/{chunk-VI35TSB2.js.map → chunk-TN33GNFP.js.map} +0 -0
- /package/dist/{chunk-SCRVQY42.js.map → chunk-ZRD3YAPM.js.map} +0 -0
|
@@ -7,6 +7,7 @@ import { preserveOffsetOnSource } from '@atlaskit/pragmatic-drag-and-drop/elemen
|
|
|
7
7
|
import { setCustomNativeDragPreview } from '@atlaskit/pragmatic-drag-and-drop/element/set-custom-native-drag-preview';
|
|
8
8
|
import {
|
|
9
9
|
memo,
|
|
10
|
+
useCallback,
|
|
10
11
|
useEffect,
|
|
11
12
|
useMemo,
|
|
12
13
|
useRef,
|
|
@@ -82,11 +83,27 @@ export interface TicketCardBodyProps {
|
|
|
82
83
|
* `TicketCard` adapts its own `(ticketId, requestId)` signature onto these). */
|
|
83
84
|
onApprove?: (requestId?: string) => void | Promise<void>;
|
|
84
85
|
onReject?: (requestId?: string) => void | Promise<void>;
|
|
86
|
+
/** Where the card opens. The body sits above the card's own link with pointer
|
|
87
|
+
* events off, but the number/time line has to take them back for its tooltip -
|
|
88
|
+
* so with an `href` that line is a link of its own, and a click on it opens the
|
|
89
|
+
* ticket like a click anywhere else on the card. That link is out of the tab
|
|
90
|
+
* order, so pass `href` only from a card that already renders its own focusable
|
|
91
|
+
* link to the same place, as `TicketCard` does. */
|
|
92
|
+
href?: string;
|
|
93
|
+
onLinkClick?: (e: MouseEvent) => void;
|
|
85
94
|
}
|
|
86
95
|
|
|
87
96
|
/** The card's inner content: title + device/org, priority + assignees, tags,
|
|
88
97
|
* timestamp, "New Message", and the approval row. Pure — driven only by props. */
|
|
89
|
-
export function TicketCardBody({
|
|
98
|
+
export function TicketCardBody({
|
|
99
|
+
ticket,
|
|
100
|
+
columnColor,
|
|
101
|
+
renderAssignSlot,
|
|
102
|
+
onApprove,
|
|
103
|
+
onReject,
|
|
104
|
+
href,
|
|
105
|
+
onLinkClick,
|
|
106
|
+
}: TicketCardBodyProps) {
|
|
90
107
|
const showNewMessage = !!ticket.hasNewMessage && !!columnColor;
|
|
91
108
|
const newMessageTextColor = columnColor ? getReadableTextColor(columnColor) : undefined;
|
|
92
109
|
|
|
@@ -143,6 +160,22 @@ export function TicketCardBody({ ticket, columnColor, renderAssignSlot, onApprov
|
|
|
143
160
|
// may be empty - the hub hero card and tickets without one send '' - so either
|
|
144
161
|
// half stands on its own and the line disappears with both missing.
|
|
145
162
|
const metaLabel = [ticket.ticketNumber || null, timestampLabel].filter(Boolean).join(' \u2022 ');
|
|
163
|
+
const metaClass = 'truncate text-ods-text-secondary text-h6';
|
|
164
|
+
// Out of the tab order: the card's own link is the one stop for the ticket.
|
|
165
|
+
const meta = href ? (
|
|
166
|
+
<Link
|
|
167
|
+
href={href}
|
|
168
|
+
draggable={false}
|
|
169
|
+
prefetch={false}
|
|
170
|
+
tabIndex={-1}
|
|
171
|
+
onClick={onLinkClick}
|
|
172
|
+
className={cn('pointer-events-auto block', metaClass)}
|
|
173
|
+
>
|
|
174
|
+
{metaLabel}
|
|
175
|
+
</Link>
|
|
176
|
+
) : (
|
|
177
|
+
<p className={cn(tooltipLabel && 'pointer-events-auto', metaClass)}>{metaLabel}</p>
|
|
178
|
+
);
|
|
146
179
|
|
|
147
180
|
return (
|
|
148
181
|
<>
|
|
@@ -165,14 +198,12 @@ export function TicketCardBody({ ticket, columnColor, renderAssignSlot, onApprov
|
|
|
165
198
|
(tooltipLabel ? (
|
|
166
199
|
<TooltipProvider>
|
|
167
200
|
<Tooltip>
|
|
168
|
-
<TooltipTrigger asChild>
|
|
169
|
-
<p className="pointer-events-auto truncate text-ods-text-secondary text-h6">{metaLabel}</p>
|
|
170
|
-
</TooltipTrigger>
|
|
201
|
+
<TooltipTrigger asChild>{meta}</TooltipTrigger>
|
|
171
202
|
<TooltipContent>{tooltipLabel}</TooltipContent>
|
|
172
203
|
</Tooltip>
|
|
173
204
|
</TooltipProvider>
|
|
174
205
|
) : (
|
|
175
|
-
|
|
206
|
+
meta
|
|
176
207
|
))}
|
|
177
208
|
{ticket.escalatedByUser && (
|
|
178
209
|
<div className="flex items-center gap-[var(--spacing-system-xxs)] text-ods-open-yellow text-h6">
|
|
@@ -215,7 +246,9 @@ export function TicketCardBody({ ticket, columnColor, renderAssignSlot, onApprov
|
|
|
215
246
|
// drag-and-drop / board context (for embeds, marketing heroes, previews).
|
|
216
247
|
// =============================================================================
|
|
217
248
|
|
|
218
|
-
|
|
249
|
+
/** No `href`: the static card has no card-wide link for keyboard users, so the
|
|
250
|
+
* number/time line must not become a pointer-only one. */
|
|
251
|
+
export interface TicketCardViewProps extends Omit<TicketCardBodyProps, 'href' | 'onLinkClick'> {
|
|
219
252
|
className?: string;
|
|
220
253
|
/** Merged over the shell's own — the board uses it to fade the copy it leaves
|
|
221
254
|
* behind and to place the one that follows the pointer. */
|
|
@@ -412,9 +445,13 @@ export const TicketCard = memo(function TicketCardImpl({
|
|
|
412
445
|
const style: CSSProperties = {};
|
|
413
446
|
if (showNewMessage) style.borderColor = columnColor;
|
|
414
447
|
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
448
|
+
// Stable between drags: it is handed into the memoized body below.
|
|
449
|
+
const handleClick = useCallback(
|
|
450
|
+
(e: MouseEvent) => {
|
|
451
|
+
if (isDragging) e.preventDefault();
|
|
452
|
+
},
|
|
453
|
+
[isDragging],
|
|
454
|
+
);
|
|
418
455
|
|
|
419
456
|
// Held as one memoized element, not re-created per render. A card being
|
|
420
457
|
// dragged over re-renders on every edge flip — it owns the hover state that
|
|
@@ -430,9 +467,11 @@ export const TicketCard = memo(function TicketCardImpl({
|
|
|
430
467
|
renderAssignSlot={renderAssignSlot}
|
|
431
468
|
onApprove={onApprove ? requestId => onApprove(ticket.id, requestId) : undefined}
|
|
432
469
|
onReject={onReject ? requestId => onReject(ticket.id, requestId) : undefined}
|
|
470
|
+
href={href}
|
|
471
|
+
onLinkClick={handleClick}
|
|
433
472
|
/>
|
|
434
473
|
),
|
|
435
|
-
[ticket, columnColor, renderAssignSlot, onApprove, onReject],
|
|
474
|
+
[ticket, columnColor, renderAssignSlot, onApprove, onReject, href, handleClick],
|
|
436
475
|
);
|
|
437
476
|
|
|
438
477
|
// No transition on the margins below, and that is not a style choice: room is
|