@cellarnode/ui 0.190.0 → 0.192.0
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/country-flag.d.ts +19 -1
- package/dist/components/country-flag.d.ts.map +1 -1
- package/dist/components/country-flag.js +66 -11
- package/dist/components/country-flag.js.map +1 -1
- package/dist/markets/deadline.d.ts +35 -0
- package/dist/markets/deadline.d.ts.map +1 -0
- package/dist/markets/deadline.js +58 -0
- package/dist/markets/deadline.js.map +1 -0
- package/dist/markets/index.d.ts +4 -0
- package/dist/markets/index.d.ts.map +1 -0
- package/dist/markets/index.js +4 -0
- package/dist/markets/index.js.map +1 -0
- package/dist/markets/market-list-item.d.ts +41 -0
- package/dist/markets/market-list-item.d.ts.map +1 -0
- package/dist/markets/market-list-item.js +25 -0
- package/dist/markets/market-list-item.js.map +1 -0
- package/dist/markets/market-opportunities-table.d.ts +137 -0
- package/dist/markets/market-opportunities-table.d.ts.map +1 -0
- package/dist/markets/market-opportunities-table.js +282 -0
- package/dist/markets/market-opportunities-table.js.map +1 -0
- package/dist/markets/market-workspace-header.d.ts +53 -0
- package/dist/markets/market-workspace-header.d.ts.map +1 -0
- package/dist/markets/market-workspace-header.js +34 -0
- package/dist/markets/market-workspace-header.js.map +1 -0
- package/dist/opportunities/opportunities-table.d.ts +3 -1
- package/dist/opportunities/opportunities-table.d.ts.map +1 -1
- package/dist/opportunities/opportunities-table.js +24 -56
- package/dist/opportunities/opportunities-table.js.map +1 -1
- package/dist/opportunities/opportunity-detail-panel.d.ts +7 -0
- package/dist/opportunities/opportunity-detail-panel.d.ts.map +1 -1
- package/dist/opportunities/opportunity-detail-panel.js +2 -2
- package/dist/opportunities/opportunity-detail-panel.js.map +1 -1
- package/dist/opportunity-facts/edit-labels.d.ts +56 -0
- package/dist/opportunity-facts/edit-labels.d.ts.map +1 -0
- package/dist/opportunity-facts/edit-labels.js +37 -0
- package/dist/opportunity-facts/edit-labels.js.map +1 -0
- package/dist/opportunity-facts/editable-section.d.ts +119 -0
- package/dist/opportunity-facts/editable-section.d.ts.map +1 -0
- package/dist/opportunity-facts/editable-section.js +267 -0
- package/dist/opportunity-facts/editable-section.js.map +1 -0
- package/dist/opportunity-facts/index.d.ts +2 -0
- package/dist/opportunity-facts/index.d.ts.map +1 -1
- package/dist/opportunity-facts/index.js +1 -0
- package/dist/opportunity-facts/index.js.map +1 -1
- package/dist/opportunity-facts/opportunity-fact-sheet.d.ts +39 -1
- package/dist/opportunity-facts/opportunity-fact-sheet.d.ts.map +1 -1
- package/dist/opportunity-facts/opportunity-fact-sheet.js +285 -13
- package/dist/opportunity-facts/opportunity-fact-sheet.js.map +1 -1
- package/package.json +6 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opportunities-table.js","sourceRoot":"","sources":["../../src/opportunities/opportunities-table.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"opportunities-table.js","sourceRoot":"","sources":["../../src/opportunities/opportunities-table.tsx"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,13 @@ import type { OpportunityTab } from "./types.js";
|
|
|
3
3
|
export interface OpportunityDetailPanelProps {
|
|
4
4
|
tabs: OpportunityTab[];
|
|
5
5
|
defaultTabId?: string;
|
|
6
|
+
/**
|
|
7
|
+
* Controlled active tab (CEL-2129). When set, the panel follows it and
|
|
8
|
+
* reports user switches through `onTabChange`; `defaultTabId` is then
|
|
9
|
+
* ignored. Leave unset for the original uncontrolled behaviour.
|
|
10
|
+
*/
|
|
11
|
+
tabId?: string;
|
|
12
|
+
onTabChange?: (tabId: string) => void;
|
|
6
13
|
className?: string;
|
|
7
14
|
}
|
|
8
15
|
declare const OpportunityDetailPanelWithSkeleton: React.FC<OpportunityDetailPanelProps> & {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opportunity-detail-panel.d.ts","sourceRoot":"","sources":["../../src/opportunities/opportunity-detail-panel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,cAAc,EAAE,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;
|
|
1
|
+
{"version":3,"file":"opportunity-detail-panel.d.ts","sourceRoot":"","sources":["../../src/opportunities/opportunity-detail-panel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,cAAc,EAAE,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAyLD,QAAA,MAAM,kCAAkC,EACZ,KAAK,CAAC,EAAE,CAAC,2BAA2B,CAAC,GAAG;IAChE,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC;CACpB,CAAC;AAGJ,OAAO,EAAE,kCAAkC,IAAI,sBAAsB,EAAE,CAAC;AACxE,YAAY,EAAE,2BAA2B,IAAI,oCAAoC,EAAE,CAAC"}
|
|
@@ -38,7 +38,7 @@ function useMeasuredHeight() {
|
|
|
38
38
|
}, []);
|
|
39
39
|
return [ref, height];
|
|
40
40
|
}
|
|
41
|
-
function OpportunityDetailPanel({ tabs, defaultTabId, className }) {
|
|
41
|
+
function OpportunityDetailPanel({ tabs, defaultTabId, tabId, onTabChange, className, }) {
|
|
42
42
|
const prefersReducedMotion = useReducedMotion();
|
|
43
43
|
const [measureRef, height] = useMeasuredHeight();
|
|
44
44
|
const visible = tabs.filter((t) => !t.hidden);
|
|
@@ -57,7 +57,7 @@ function OpportunityDetailPanel({ tabs, defaultTabId, className }) {
|
|
|
57
57
|
return (_jsx("div", { className: cn("flex min-w-0 flex-col gap-4", className), children: _jsx(motion.div, { className: "min-w-0 overflow-hidden", animate: prefersReducedMotion ? undefined : { height: height ?? "auto" }, style: prefersReducedMotion ? { height: height ?? "auto" } : undefined, transition: { type: "spring", stiffness: 380, damping: 32 }, children: _jsx("div", { ref: measureRef, className: "min-w-0", children: _jsx("div", { className: "grid min-w-0", "data-panel-id": only.id, children: only.content }) }) }) }));
|
|
58
58
|
}
|
|
59
59
|
const initial = defaultTabId && visible.some((t) => t.id === defaultTabId) ? defaultTabId : visible[0].id;
|
|
60
|
-
return (_jsxs(Tabs.Root, { defaultValue: initial, activationMode: "manual", className: cn("flex min-w-0 flex-col gap-4", className), children: [_jsx(Tabs.List, { "aria-label": "Opportunity detail sections", className: "flex flex-wrap gap-1 border-b border-border", children: visible.map((t) => (_jsx(Tabs.Trigger, { value: t.id, className: cn(
|
|
60
|
+
return (_jsxs(Tabs.Root, { defaultValue: initial, value: tabId, onValueChange: onTabChange, activationMode: "manual", className: cn("flex min-w-0 flex-col gap-4", className), children: [_jsx(Tabs.List, { "aria-label": "Opportunity detail sections", className: "flex flex-wrap gap-1 border-b border-border", children: visible.map((t) => (_jsx(Tabs.Trigger, { value: t.id, className: cn(
|
|
61
61
|
// min-h-11: 44px WCAG 2.5.5 touch target (py-2 alone is ~36px).
|
|
62
62
|
"relative inline-flex min-h-11 items-center rounded-t-md px-3 py-2 text-sm font-medium text-muted-foreground ring-inset", "transition-colors duration-[var(--duration-micro)] ease-[var(--ease-emphasized)]", "hover:text-foreground",
|
|
63
63
|
// Active state: stronger weight + accent fill, plus a brand
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opportunity-detail-panel.js","sourceRoot":"","sources":["../../src/opportunities/opportunity-detail-panel.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,IAAI,MAAM,sBAAsB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"opportunity-detail-panel.js","sourceRoot":"","sources":["../../src/opportunities/opportunity-detail-panel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type { TranslateFn } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Why the delivery terms are locked. A closed union: the consumer passes the
|
|
4
|
+
* code, the sheet renders the matching copy from `editLabels.locked.reasons`,
|
|
5
|
+
* and an unknown code falls back to the generic copy. A raw code never renders.
|
|
6
|
+
*/
|
|
7
|
+
export type OpportunityTermsLockedReason = "live_offers";
|
|
8
|
+
/** Sections of an `OpportunityFactSheet` that can switch to an in-place edit mode (CEL-2129). */
|
|
9
|
+
export type OpportunityEditableSectionId = "product-requirements" | "delivery-terms";
|
|
10
|
+
/**
|
|
11
|
+
* Copy for the in-place edit mode of `OpportunityFactSheet` (CEL-2129). Every
|
|
12
|
+
* string is overridable: pass a partial `editLabels` or build the whole object
|
|
13
|
+
* through `defaultOpportunityFactEditLabels(t)` with an i18next-shaped `t`.
|
|
14
|
+
* English defaults only; none of them contains an em dash.
|
|
15
|
+
*/
|
|
16
|
+
export interface OpportunityFactEditLabels {
|
|
17
|
+
/** Visible text of the section Edit button. */
|
|
18
|
+
readonly edit: string;
|
|
19
|
+
/** Accessible name of the Edit button, e.g. "Edit product requirements". */
|
|
20
|
+
readonly editSection: (section: string) => string;
|
|
21
|
+
/** Row action for a missing value, e.g. "Add vintage". */
|
|
22
|
+
readonly add: (fact: string) => string;
|
|
23
|
+
/** Save button text, named after what it saves, e.g. "Save product requirements". */
|
|
24
|
+
readonly saveSection: (section: string) => string;
|
|
25
|
+
/** Note under the footer when other tabs hold unsaved changes of the same draft; `tabs` is a comma separated list of tab names. */
|
|
26
|
+
readonly saveAlsoOn: (tabs: string) => string;
|
|
27
|
+
readonly saving: string;
|
|
28
|
+
readonly cancel: string;
|
|
29
|
+
/** Polite announcement after a successful save (the edit mode has closed by then). */
|
|
30
|
+
readonly saved: string;
|
|
31
|
+
/** Used when `onSave` rejects with an error that carries no message. */
|
|
32
|
+
readonly saveFailed: string;
|
|
33
|
+
readonly unsaved: {
|
|
34
|
+
readonly title: string;
|
|
35
|
+
readonly body: string;
|
|
36
|
+
readonly keepEditing: string;
|
|
37
|
+
readonly discard: string;
|
|
38
|
+
};
|
|
39
|
+
/** Lower-case noun phrase used inside sentences ("Edit delivery terms"). */
|
|
40
|
+
readonly section: Readonly<Record<OpportunityEditableSectionId, string>>;
|
|
41
|
+
/** Heading of the delivery-terms card on the Commercial tab. */
|
|
42
|
+
readonly deliveryTermsHeading: string;
|
|
43
|
+
readonly locked: {
|
|
44
|
+
readonly title: string;
|
|
45
|
+
/** Generic reason: used when no reason, or an unknown one, is passed. */
|
|
46
|
+
readonly reason: string;
|
|
47
|
+
/** Copy per `termsLockedReason` code. */
|
|
48
|
+
readonly reasons: Readonly<Record<OpportunityTermsLockedReason, string>>;
|
|
49
|
+
/** Announced when the lock lands while the section was being edited. */
|
|
50
|
+
readonly arrivedWhileEditing: string;
|
|
51
|
+
readonly sentOffersNote: string;
|
|
52
|
+
readonly reviewOffers: string;
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
export declare function defaultOpportunityFactEditLabels(t?: TranslateFn): OpportunityFactEditLabels;
|
|
56
|
+
//# sourceMappingURL=edit-labels.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edit-labels.d.ts","sourceRoot":"","sources":["../../src/opportunity-facts/edit-labels.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C;;;;GAIG;AACH,MAAM,MAAM,4BAA4B,GAAG,aAAa,CAAC;AAEzD,iGAAiG;AACjG,MAAM,MAAM,4BAA4B,GAAG,sBAAsB,GAAG,gBAAgB,CAAC;AAErF;;;;;GAKG;AACH,MAAM,WAAW,yBAAyB;IACxC,+CAA+C;IAC/C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,4EAA4E;IAC5E,QAAQ,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC;IAClD,0DAA0D;IAC1D,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IACvC,qFAAqF;IACrF,QAAQ,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC;IAClD,mIAAmI;IACnI,QAAQ,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAC9C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,sFAAsF;IACtF,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,wEAAwE;IACxE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE;QAChB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;KAC1B,CAAC;IACF,4EAA4E;IAC5E,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,4BAA4B,EAAE,MAAM,CAAC,CAAC,CAAC;IACzE,gEAAgE;IAChE,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,MAAM,EAAE;QACf,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,yEAAyE;QACzE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,yCAAyC;QACzC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,4BAA4B,EAAE,MAAM,CAAC,CAAC,CAAC;QACzE,wEAAwE;QACxE,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;QACrC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;QAChC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;KAC/B,CAAC;CACH;AAED,wBAAgB,gCAAgC,CAC9C,CAAC,GAAE,WAA0C,GAC5C,yBAAyB,CAiD3B"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { interpolate } from "../portfolio/interpolate.js";
|
|
2
|
+
export function defaultOpportunityFactEditLabels(t = (_key, fallback) => fallback) {
|
|
3
|
+
const i = (key, fallback, vars) => interpolate(t(key, fallback), vars);
|
|
4
|
+
return {
|
|
5
|
+
edit: t("opportunity.edit.edit", "Edit"),
|
|
6
|
+
editSection: (section) => i("opportunity.edit.editSection", "Edit {{section}}", { section }),
|
|
7
|
+
add: (fact) => i("opportunity.edit.add", "Add {{fact}}", { fact }),
|
|
8
|
+
saveSection: (section) => i("opportunity.edit.saveSection", "Save {{section}}", { section }),
|
|
9
|
+
saveAlsoOn: (tabs) => i("opportunity.edit.saveAlsoOn", "Also saves your changes on {{tabs}}", { tabs }),
|
|
10
|
+
saving: t("opportunity.edit.saving", "Saving"),
|
|
11
|
+
cancel: t("opportunity.edit.cancel", "Cancel"),
|
|
12
|
+
saved: t("opportunity.edit.saved", "Changes saved"),
|
|
13
|
+
saveFailed: t("opportunity.edit.saveFailed", "Couldn't save. Your changes are still here. Try again."),
|
|
14
|
+
unsaved: {
|
|
15
|
+
title: t("opportunity.edit.unsaved.title", "Discard unsaved changes?"),
|
|
16
|
+
body: t("opportunity.edit.unsaved.body", "Your edits to this section have not been saved."),
|
|
17
|
+
keepEditing: t("opportunity.edit.unsaved.keepEditing", "Keep editing"),
|
|
18
|
+
discard: t("opportunity.edit.unsaved.discard", "Discard changes"),
|
|
19
|
+
},
|
|
20
|
+
section: {
|
|
21
|
+
"product-requirements": t("opportunity.edit.section.productRequirements", "product requirements"),
|
|
22
|
+
"delivery-terms": t("opportunity.edit.section.deliveryTerms", "delivery terms"),
|
|
23
|
+
},
|
|
24
|
+
deliveryTermsHeading: t("opportunity.edit.deliveryTermsHeading", "Delivery terms"),
|
|
25
|
+
locked: {
|
|
26
|
+
title: t("opportunity.edit.locked.title", "Delivery terms are locked"),
|
|
27
|
+
reason: t("opportunity.edit.locked.reason", "These delivery terms can no longer be changed."),
|
|
28
|
+
reasons: {
|
|
29
|
+
live_offers: t("opportunity.edit.locked.reasons.liveOffers", "Producers have live offers based on these terms, so they can no longer be changed."),
|
|
30
|
+
},
|
|
31
|
+
arrivedWhileEditing: t("opportunity.edit.locked.arrivedWhileEditing", "Delivery terms were locked while you were editing. Your changes were not saved."),
|
|
32
|
+
sentOffersNote: t("opportunity.edit.locked.sentOffersNote", "Sent offers are never changed."),
|
|
33
|
+
reviewOffers: t("opportunity.edit.locked.reviewOffers", "Review offers"),
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=edit-labels.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edit-labels.js","sourceRoot":"","sources":["../../src/opportunity-facts/edit-labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AA2DvD,MAAM,UAAU,gCAAgC,CAC9C,IAAiB,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,QAAQ;IAE7C,MAAM,CAAC,GAAG,CAAC,GAAW,EAAE,QAAgB,EAAE,IAAqC,EAAE,EAAE,CACjF,WAAW,CAAC,CAAC,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC;IAEtC,OAAO;QACL,IAAI,EAAE,CAAC,CAAC,uBAAuB,EAAE,MAAM,CAAC;QACxC,WAAW,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,8BAA8B,EAAE,kBAAkB,EAAE,EAAE,OAAO,EAAE,CAAC;QAC5F,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,sBAAsB,EAAE,cAAc,EAAE,EAAE,IAAI,EAAE,CAAC;QAClE,WAAW,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,8BAA8B,EAAE,kBAAkB,EAAE,EAAE,OAAO,EAAE,CAAC;QAC5F,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE,CACnB,CAAC,CAAC,6BAA6B,EAAE,qCAAqC,EAAE,EAAE,IAAI,EAAE,CAAC;QACnF,MAAM,EAAE,CAAC,CAAC,yBAAyB,EAAE,QAAQ,CAAC;QAC9C,MAAM,EAAE,CAAC,CAAC,yBAAyB,EAAE,QAAQ,CAAC;QAC9C,KAAK,EAAE,CAAC,CAAC,wBAAwB,EAAE,eAAe,CAAC;QACnD,UAAU,EAAE,CAAC,CACX,6BAA6B,EAC7B,wDAAwD,CACzD;QACD,OAAO,EAAE;YACP,KAAK,EAAE,CAAC,CAAC,gCAAgC,EAAE,0BAA0B,CAAC;YACtE,IAAI,EAAE,CAAC,CAAC,+BAA+B,EAAE,iDAAiD,CAAC;YAC3F,WAAW,EAAE,CAAC,CAAC,sCAAsC,EAAE,cAAc,CAAC;YACtE,OAAO,EAAE,CAAC,CAAC,kCAAkC,EAAE,iBAAiB,CAAC;SAClE;QACD,OAAO,EAAE;YACP,sBAAsB,EAAE,CAAC,CACvB,8CAA8C,EAC9C,sBAAsB,CACvB;YACD,gBAAgB,EAAE,CAAC,CAAC,wCAAwC,EAAE,gBAAgB,CAAC;SAChF;QACD,oBAAoB,EAAE,CAAC,CAAC,uCAAuC,EAAE,gBAAgB,CAAC;QAClF,MAAM,EAAE;YACN,KAAK,EAAE,CAAC,CAAC,+BAA+B,EAAE,2BAA2B,CAAC;YACtE,MAAM,EAAE,CAAC,CAAC,gCAAgC,EAAE,gDAAgD,CAAC;YAC7F,OAAO,EAAE;gBACP,WAAW,EAAE,CAAC,CACZ,4CAA4C,EAC5C,oFAAoF,CACrF;aACF;YACD,mBAAmB,EAAE,CAAC,CACpB,6CAA6C,EAC7C,iFAAiF,CAClF;YACD,cAAc,EAAE,CAAC,CAAC,wCAAwC,EAAE,gCAAgC,CAAC;YAC7F,YAAY,EAAE,CAAC,CAAC,sCAAsC,EAAE,eAAe,CAAC;SACzE;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import type { OpportunityEditableSectionId, OpportunityFactEditLabels, OpportunityTermsLockedReason } from "./edit-labels.js";
|
|
3
|
+
import type { FactKey } from "./types.js";
|
|
4
|
+
/** What a field control needs to wire itself to its row (label, server error). */
|
|
5
|
+
export interface FactFieldContext {
|
|
6
|
+
/** id of the visible row label (`<dt>`); use as `aria-labelledby`. */
|
|
7
|
+
readonly labelId: string;
|
|
8
|
+
/** id of the inline server error for this field, set only while one is shown. */
|
|
9
|
+
readonly errorId: string | undefined;
|
|
10
|
+
/** True while a server error is shown for this field; map to `aria-invalid`. */
|
|
11
|
+
readonly invalid: boolean;
|
|
12
|
+
}
|
|
13
|
+
export type FactFieldNode = React.ReactNode | ((ctx: FactFieldContext) => React.ReactNode);
|
|
14
|
+
export interface OpportunityFactSectionEditing {
|
|
15
|
+
/**
|
|
16
|
+
* Controls keyed by the fact they edit. A control renders in the row of its
|
|
17
|
+
* fact (the label stays, the read-only value is replaced) wherever that fact
|
|
18
|
+
* lives: product facts on Overview, compliance facts on the Compliance tab,
|
|
19
|
+
* and so on. The tab that hosts the fact also shows Save and Cancel, so the
|
|
20
|
+
* decision stays next to the facts. A key with no fact row anywhere renders
|
|
21
|
+
* nothing: fold such a value into the control of the fact that carries it. A key listed here also gets an "Add {fact}" action wherever its
|
|
22
|
+
* fact is shown as missing.
|
|
23
|
+
*/
|
|
24
|
+
readonly fields?: Partial<Record<FactKey, FactFieldNode>>;
|
|
25
|
+
/** A free block rendered below the facts while editing (e.g. a picker). */
|
|
26
|
+
readonly editor?: React.ReactNode;
|
|
27
|
+
/** Server errors per field, rendered under the field's control. */
|
|
28
|
+
readonly fieldErrors?: Partial<Record<FactKey, string>>;
|
|
29
|
+
/**
|
|
30
|
+
* Persist the draft. Resolve to close the edit mode; REJECT to keep it open
|
|
31
|
+
* (the error's message is shown inline unless `error` is set). The consumer
|
|
32
|
+
* owns the draft state and the mutation.
|
|
33
|
+
*/
|
|
34
|
+
readonly onSave: () => void | Promise<void>;
|
|
35
|
+
/** Discard the draft (Cancel, Escape, or Discard in the unsaved-changes guard). */
|
|
36
|
+
readonly onCancel?: () => void;
|
|
37
|
+
/** Whether the draft differs from the saved value. Drives the guard and the Save button. */
|
|
38
|
+
readonly isDirty?: boolean;
|
|
39
|
+
/** `false` blocks Save (client-side validation). Default `true`. */
|
|
40
|
+
readonly canSave?: boolean;
|
|
41
|
+
/** A section-level error (e.g. mapped from a server response). Overrides a rejection's message. */
|
|
42
|
+
readonly error?: string | null;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* The state machine of one editable section, shared by every tab that hosts
|
|
46
|
+
* its controls (the product requirements span Overview and Compliance, so two
|
|
47
|
+
* footers drive one session). Lives in `OpportunityFactSheet`.
|
|
48
|
+
*/
|
|
49
|
+
export interface EditSession {
|
|
50
|
+
readonly config: OpportunityFactSectionEditing | undefined;
|
|
51
|
+
readonly saving: boolean;
|
|
52
|
+
readonly error: string | null;
|
|
53
|
+
readonly guardOpen: boolean;
|
|
54
|
+
readonly justSaved: boolean;
|
|
55
|
+
/** Tabs where the user changed a control of this draft since edit mode opened. */
|
|
56
|
+
readonly touchedTabs: readonly string[];
|
|
57
|
+
touch(tabId: string): void;
|
|
58
|
+
readonly dirty: boolean;
|
|
59
|
+
readonly saveBlocked: boolean;
|
|
60
|
+
/** Whether any shell has moved focus on entering edit mode yet. */
|
|
61
|
+
hasFocused(): boolean;
|
|
62
|
+
markFocused(): void;
|
|
63
|
+
readonly failTick: number;
|
|
64
|
+
save(): Promise<void>;
|
|
65
|
+
requestCancel(): void;
|
|
66
|
+
keepEditing(): void;
|
|
67
|
+
discard(): void;
|
|
68
|
+
/** Asks before leaving (e.g. to another tab); runs `proceed` after a discard. */
|
|
69
|
+
requestLeave(proceed: () => void): void;
|
|
70
|
+
}
|
|
71
|
+
export declare function useEditSession({ config, labels, isEditing, onClose, }: {
|
|
72
|
+
config: OpportunityFactSectionEditing | undefined;
|
|
73
|
+
labels: OpportunityFactEditLabels;
|
|
74
|
+
isEditing: boolean;
|
|
75
|
+
onClose: () => void;
|
|
76
|
+
}): EditSession;
|
|
77
|
+
export interface EditableSectionProps {
|
|
78
|
+
readonly id: OpportunityEditableSectionId;
|
|
79
|
+
readonly session: EditSession;
|
|
80
|
+
readonly heading: string;
|
|
81
|
+
readonly headingAs: `h${2 | 3 | 4 | 5 | 6}`;
|
|
82
|
+
readonly labels: OpportunityFactEditLabels;
|
|
83
|
+
readonly isEditing: boolean;
|
|
84
|
+
/** The shell's tab is the visible one; focus work and the guard wait for this. */
|
|
85
|
+
readonly active: boolean;
|
|
86
|
+
/** The tab this shell sits on (its id), to attribute edits to a tab. */
|
|
87
|
+
readonly tabId: string;
|
|
88
|
+
/** Tab names by id, for the "also saves" note. */
|
|
89
|
+
readonly tabLabels: Readonly<Record<string, string>>;
|
|
90
|
+
/**
|
|
91
|
+
* A continuation of a section whose Edit button lives elsewhere (the
|
|
92
|
+
* requirements' compliance facts): no Edit button, no focus return, same
|
|
93
|
+
* Save and Cancel.
|
|
94
|
+
*/
|
|
95
|
+
readonly secondary?: boolean;
|
|
96
|
+
/** False hides the Edit button (no editor, or the section is locked). */
|
|
97
|
+
readonly canEdit?: boolean;
|
|
98
|
+
/** True while a different section is being edited: this Edit button is disabled. */
|
|
99
|
+
readonly editBlocked?: boolean;
|
|
100
|
+
readonly focusKey?: FactKey;
|
|
101
|
+
readonly onEdit?: () => void;
|
|
102
|
+
/** Rendered between the heading and the body when the section is locked. */
|
|
103
|
+
readonly lockedPanel?: React.ReactNode;
|
|
104
|
+
/** Moves focus to the locked panel when edit mode ends with no Edit button (the lock arrived); returns whether it did. */
|
|
105
|
+
readonly focusLockedPanel?: () => boolean;
|
|
106
|
+
/** The read-only facts (and, in edit mode, the in-row controls). */
|
|
107
|
+
readonly children: React.ReactNode;
|
|
108
|
+
}
|
|
109
|
+
export declare function EditableSection({ id, session, heading, headingAs, labels, isEditing, active, tabId, tabLabels, secondary, canEdit, editBlocked, focusKey, onEdit, lockedPanel, focusLockedPanel, children, }: EditableSectionProps): import("react/jsx-runtime").JSX.Element;
|
|
110
|
+
export interface LockedTermsPanelProps {
|
|
111
|
+
readonly labels: OpportunityFactEditLabels;
|
|
112
|
+
readonly reason?: OpportunityTermsLockedReason;
|
|
113
|
+
readonly onReviewOffers?: () => void;
|
|
114
|
+
/** Called with the panel element on mount and null on unmount. */
|
|
115
|
+
readonly onMount?: (node: HTMLDivElement | null) => void;
|
|
116
|
+
}
|
|
117
|
+
/** CEL-2167 locked state: explains the lock, never offers a workaround. */
|
|
118
|
+
export declare function LockedTermsPanel({ labels, reason, onReviewOffers, onMount, }: LockedTermsPanelProps): import("react/jsx-runtime").JSX.Element;
|
|
119
|
+
//# sourceMappingURL=editable-section.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"editable-section.d.ts","sourceRoot":"","sources":["../../src/opportunity-facts/editable-section.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { Loader2, Lock } from "lucide-react";
|
|
4
|
+
import { Button } from "../components/button.js";
|
|
5
|
+
import { Eyebrow } from "../components/eyebrow.js";
|
|
6
|
+
import { cn } from "../lib/utils.js";
|
|
7
|
+
const FOCUSABLE = 'input:not([disabled]):not([type="hidden"]),select:not([disabled]),textarea:not([disabled]),button:not([disabled]),[tabindex]:not([tabindex="-1"])';
|
|
8
|
+
function firstFocusable(root) {
|
|
9
|
+
if (!root)
|
|
10
|
+
return null;
|
|
11
|
+
if (root instanceof HTMLElement && root.matches(FOCUSABLE))
|
|
12
|
+
return root;
|
|
13
|
+
return root.querySelector(FOCUSABLE);
|
|
14
|
+
}
|
|
15
|
+
function errorMessage(error, fallback) {
|
|
16
|
+
if (error instanceof Error && error.message.trim())
|
|
17
|
+
return error.message;
|
|
18
|
+
if (typeof error === "string" && error.trim())
|
|
19
|
+
return error;
|
|
20
|
+
return fallback;
|
|
21
|
+
}
|
|
22
|
+
export function useEditSession({ config, labels, isEditing, onClose, }) {
|
|
23
|
+
const mountedRef = React.useRef(true);
|
|
24
|
+
const focusDoneRef = React.useRef(false);
|
|
25
|
+
const pendingLeaveRef = React.useRef(null);
|
|
26
|
+
const hasFocused = React.useCallback(() => focusDoneRef.current, []);
|
|
27
|
+
const markFocused = React.useCallback(() => {
|
|
28
|
+
focusDoneRef.current = true;
|
|
29
|
+
}, []);
|
|
30
|
+
const [saving, setSaving] = React.useState(false);
|
|
31
|
+
const [saveError, setSaveError] = React.useState(null);
|
|
32
|
+
const [failTick, setFailTick] = React.useState(0);
|
|
33
|
+
const [guardOpen, setGuardOpen] = React.useState(false);
|
|
34
|
+
const [justSaved, setJustSaved] = React.useState(false);
|
|
35
|
+
const [touchedTabs, setTouchedTabs] = React.useState([]);
|
|
36
|
+
const touch = React.useCallback((tabId) => {
|
|
37
|
+
setTouchedTabs((prev) => (prev.includes(tabId) ? prev : [...prev, tabId]));
|
|
38
|
+
}, []);
|
|
39
|
+
React.useEffect(() => {
|
|
40
|
+
mountedRef.current = true;
|
|
41
|
+
return () => {
|
|
42
|
+
mountedRef.current = false;
|
|
43
|
+
};
|
|
44
|
+
}, []);
|
|
45
|
+
React.useEffect(() => {
|
|
46
|
+
/* eslint-disable @eslint-react/set-state-in-effect -- edit mode is controlled from outside; the transient state resets when it flips */
|
|
47
|
+
if (isEditing) {
|
|
48
|
+
setJustSaved(false);
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
focusDoneRef.current = false;
|
|
52
|
+
pendingLeaveRef.current = null;
|
|
53
|
+
setSaveError(null);
|
|
54
|
+
setGuardOpen(false);
|
|
55
|
+
setSaving(false);
|
|
56
|
+
setTouchedTabs([]);
|
|
57
|
+
/* eslint-enable @eslint-react/set-state-in-effect */
|
|
58
|
+
}, [isEditing]);
|
|
59
|
+
const dirty = config?.isDirty === true;
|
|
60
|
+
const saveBlocked = saving || config?.isDirty === false || config?.canSave === false;
|
|
61
|
+
const discard = React.useCallback(() => {
|
|
62
|
+
const proceed = pendingLeaveRef.current;
|
|
63
|
+
pendingLeaveRef.current = null;
|
|
64
|
+
config?.onCancel?.();
|
|
65
|
+
onClose();
|
|
66
|
+
proceed?.();
|
|
67
|
+
}, [config, onClose]);
|
|
68
|
+
const requestCancel = React.useCallback(() => {
|
|
69
|
+
if (saving)
|
|
70
|
+
return;
|
|
71
|
+
if (dirty)
|
|
72
|
+
setGuardOpen(true);
|
|
73
|
+
else
|
|
74
|
+
discard();
|
|
75
|
+
}, [dirty, discard, saving]);
|
|
76
|
+
const requestLeave = React.useCallback((proceed) => {
|
|
77
|
+
if (saving)
|
|
78
|
+
return;
|
|
79
|
+
pendingLeaveRef.current = proceed;
|
|
80
|
+
setGuardOpen(true);
|
|
81
|
+
}, [saving]);
|
|
82
|
+
const keepEditing = React.useCallback(() => {
|
|
83
|
+
pendingLeaveRef.current = null;
|
|
84
|
+
setGuardOpen(false);
|
|
85
|
+
}, []);
|
|
86
|
+
const save = React.useCallback(async () => {
|
|
87
|
+
if (!config || saveBlocked)
|
|
88
|
+
return;
|
|
89
|
+
setSaving(true);
|
|
90
|
+
setSaveError(null);
|
|
91
|
+
try {
|
|
92
|
+
await config.onSave();
|
|
93
|
+
}
|
|
94
|
+
catch (error) {
|
|
95
|
+
if (!mountedRef.current)
|
|
96
|
+
return;
|
|
97
|
+
setSaving(false);
|
|
98
|
+
setSaveError(errorMessage(error, labels.saveFailed));
|
|
99
|
+
setFailTick((n) => n + 1);
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
if (!mountedRef.current)
|
|
103
|
+
return;
|
|
104
|
+
setSaving(false);
|
|
105
|
+
setJustSaved(true);
|
|
106
|
+
onClose();
|
|
107
|
+
}, [config, labels.saveFailed, onClose, saveBlocked]);
|
|
108
|
+
return {
|
|
109
|
+
config,
|
|
110
|
+
saving,
|
|
111
|
+
error: config?.error ?? saveError,
|
|
112
|
+
guardOpen,
|
|
113
|
+
justSaved,
|
|
114
|
+
touchedTabs,
|
|
115
|
+
touch,
|
|
116
|
+
dirty,
|
|
117
|
+
saveBlocked,
|
|
118
|
+
hasFocused,
|
|
119
|
+
markFocused,
|
|
120
|
+
failTick,
|
|
121
|
+
save,
|
|
122
|
+
requestCancel,
|
|
123
|
+
keepEditing,
|
|
124
|
+
discard,
|
|
125
|
+
requestLeave,
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
export function EditableSection({ id, session, heading, headingAs, labels, isEditing, active, tabId, tabLabels, secondary = false, canEdit = false, editBlocked = false, focusKey, onEdit, lockedPanel, focusLockedPanel, children, }) {
|
|
129
|
+
const rootRef = React.useRef(null);
|
|
130
|
+
const editButtonRef = React.useRef(null);
|
|
131
|
+
const alertRef = React.useRef(null);
|
|
132
|
+
const keepEditingRef = React.useRef(null);
|
|
133
|
+
const guardOriginRef = React.useRef(null);
|
|
134
|
+
const wasEditingRef = React.useRef(false);
|
|
135
|
+
const [notice, setNotice] = React.useState(null);
|
|
136
|
+
const { saving, guardOpen, failTick, hasFocused, markFocused } = session;
|
|
137
|
+
// Leaving edit mode returns focus to the Edit button; when there is none
|
|
138
|
+
// (the lock arrived mid-edit) focus moves to the locked panel and the
|
|
139
|
+
// arrival is announced.
|
|
140
|
+
React.useEffect(() => {
|
|
141
|
+
if (secondary)
|
|
142
|
+
return;
|
|
143
|
+
if (isEditing) {
|
|
144
|
+
wasEditingRef.current = true;
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
if (!wasEditingRef.current)
|
|
148
|
+
return;
|
|
149
|
+
wasEditingRef.current = false;
|
|
150
|
+
if (editButtonRef.current) {
|
|
151
|
+
editButtonRef.current.focus();
|
|
152
|
+
}
|
|
153
|
+
else if (focusLockedPanel?.()) {
|
|
154
|
+
// eslint-disable-next-line @eslint-react/set-state-in-effect -- announce the externally triggered lock
|
|
155
|
+
setNotice(labels.locked.arrivedWhileEditing);
|
|
156
|
+
}
|
|
157
|
+
}, [isEditing, secondary, focusLockedPanel, labels.locked.arrivedWhileEditing]);
|
|
158
|
+
// The lock announcement is only true while the panel is shown and nothing
|
|
159
|
+
// newer has been announced: reopening edit mode or leaving the locked state
|
|
160
|
+
// retires it, so it can never mask a later "Changes saved".
|
|
161
|
+
const lockedShown = lockedPanel != null;
|
|
162
|
+
React.useEffect(() => {
|
|
163
|
+
// eslint-disable-next-line @eslint-react/set-state-in-effect -- retire a stale announcement when the state it described ends
|
|
164
|
+
if (isEditing || !lockedShown)
|
|
165
|
+
setNotice(null);
|
|
166
|
+
}, [isEditing, lockedShown]);
|
|
167
|
+
// Entering edit mode moves focus (once, on whichever tab hosts the target):
|
|
168
|
+
// the requested field, else the first control of the primary section. Waits
|
|
169
|
+
// for the tab to be visible and for lazily rendered controls (a few frames).
|
|
170
|
+
React.useEffect(() => {
|
|
171
|
+
if (!isEditing || !active || hasFocused())
|
|
172
|
+
return;
|
|
173
|
+
let frame = 0;
|
|
174
|
+
let attempts = 0;
|
|
175
|
+
const attempt = () => {
|
|
176
|
+
const root = rootRef.current;
|
|
177
|
+
if (!root || hasFocused())
|
|
178
|
+
return;
|
|
179
|
+
const byKey = focusKey
|
|
180
|
+
? firstFocusable(root.querySelector(`[data-fact-key="${focusKey}"]`))
|
|
181
|
+
: null;
|
|
182
|
+
let target = byKey;
|
|
183
|
+
// Only the primary section falls back to its first control, and only
|
|
184
|
+
// when no field was asked for or the asked-for one never appeared.
|
|
185
|
+
if (!target && !secondary && (!focusKey || attempts >= 19)) {
|
|
186
|
+
target = firstFocusable(root.querySelector('[data-slot="fact-edit-body"]'));
|
|
187
|
+
}
|
|
188
|
+
if (target) {
|
|
189
|
+
target.focus();
|
|
190
|
+
markFocused();
|
|
191
|
+
return;
|
|
192
|
+
}
|
|
193
|
+
attempts += 1;
|
|
194
|
+
if (attempts < 20)
|
|
195
|
+
frame = requestAnimationFrame(attempt);
|
|
196
|
+
};
|
|
197
|
+
attempt();
|
|
198
|
+
return () => cancelAnimationFrame(frame);
|
|
199
|
+
}, [isEditing, active, focusKey, secondary, hasFocused, markFocused]);
|
|
200
|
+
// A failed save puts focus on the first invalid field, else on the alert.
|
|
201
|
+
React.useEffect(() => {
|
|
202
|
+
if (failTick === 0 || !active)
|
|
203
|
+
return;
|
|
204
|
+
const root = rootRef.current;
|
|
205
|
+
const invalid = root?.querySelector('[aria-invalid="true"]');
|
|
206
|
+
(invalid ?? alertRef.current)?.focus();
|
|
207
|
+
}, [failTick, active]);
|
|
208
|
+
const showGuard = guardOpen && active;
|
|
209
|
+
React.useEffect(() => {
|
|
210
|
+
if (showGuard) {
|
|
211
|
+
guardOriginRef.current ??=
|
|
212
|
+
document.activeElement instanceof HTMLElement ? document.activeElement : null;
|
|
213
|
+
keepEditingRef.current?.focus();
|
|
214
|
+
}
|
|
215
|
+
}, [showGuard]);
|
|
216
|
+
const keepEditing = () => {
|
|
217
|
+
session.keepEditing();
|
|
218
|
+
guardOriginRef.current?.focus();
|
|
219
|
+
guardOriginRef.current = null;
|
|
220
|
+
};
|
|
221
|
+
const onKeyDown = (event) => {
|
|
222
|
+
if (event.key !== "Escape" || !isEditing || event.defaultPrevented)
|
|
223
|
+
return;
|
|
224
|
+
const target = event.target;
|
|
225
|
+
// Escape inside an open popup (select, combobox, popover) closes that popup only.
|
|
226
|
+
if (target instanceof Element &&
|
|
227
|
+
target.closest('[aria-expanded="true"],[role="listbox"],[role="dialog"],[role="menu"]')) {
|
|
228
|
+
return;
|
|
229
|
+
}
|
|
230
|
+
event.preventDefault();
|
|
231
|
+
if (saving)
|
|
232
|
+
return;
|
|
233
|
+
if (guardOpen)
|
|
234
|
+
keepEditing();
|
|
235
|
+
else {
|
|
236
|
+
guardOriginRef.current =
|
|
237
|
+
document.activeElement instanceof HTMLElement ? document.activeElement : null;
|
|
238
|
+
session.requestCancel();
|
|
239
|
+
}
|
|
240
|
+
};
|
|
241
|
+
const shownError = session.error;
|
|
242
|
+
const otherTabs = session.touchedTabs
|
|
243
|
+
.filter((touched) => touched !== tabId)
|
|
244
|
+
.map((touched) => tabLabels[touched] ?? touched);
|
|
245
|
+
const alsoSaves = otherTabs.length > 0 ? labels.saveAlsoOn(otherTabs.join(", ")) : null;
|
|
246
|
+
const showEdit = !secondary && canEdit && !isEditing;
|
|
247
|
+
const legend = labels.editSection(labels.section[id]);
|
|
248
|
+
return (_jsxs("div", { ref: rootRef, "data-slot": "opportunity-fact-edit-section", "data-section": id, "data-editing": isEditing ? "true" : undefined, onKeyDown: onKeyDown, onInput: () => {
|
|
249
|
+
if (isEditing)
|
|
250
|
+
session.touch(tabId);
|
|
251
|
+
}, className: cn("flex flex-col gap-2", isEditing && "rounded-lg border border-border p-4"), children: [!secondary ? (_jsx("div", { role: "status", "aria-live": "polite", className: "sr-only", children: session.justSaved && !isEditing ? labels.saved : (notice ?? "") })) : null, _jsxs("div", { className: "flex items-center justify-between gap-2", children: [_jsx(Eyebrow, { as: headingAs, size: "xs", children: heading }), showEdit ? (_jsx(Button, { ref: editButtonRef, type: "button", outline: true, "aria-label": legend, "aria-disabled": editBlocked || undefined, onClick: () => {
|
|
252
|
+
if (!editBlocked)
|
|
253
|
+
onEdit?.();
|
|
254
|
+
}, "data-slot": "opportunity-fact-edit-button", children: labels.edit })) : null] }), lockedPanel ?? null, _jsxs("fieldset", { disabled: saving, "data-slot": "fact-edit-body", className: "m-0 flex min-w-0 flex-col gap-2 border-0 p-0", children: [_jsx("legend", { className: "sr-only", children: legend }), children] }), isEditing && active && session.config ? (_jsxs("div", { className: "flex flex-col gap-3 pt-2", children: [_jsx("div", { role: "status", "aria-live": "polite", className: "sr-only", children: saving ? labels.saving : "" }), shownError ? (_jsx("div", { ref: alertRef, role: "alert", tabIndex: -1, "data-slot": "opportunity-fact-edit-error", className: "rounded-md border border-[var(--tone-danger-border)] bg-[var(--tone-danger-soft)] px-3 py-2 text-sm/6 text-[var(--tone-danger-fg)]", children: shownError })) : null, showGuard ? (_jsxs("div", { role: "alert", "data-slot": "opportunity-fact-edit-guard", className: "flex flex-col gap-3 rounded-md border border-border bg-muted px-3 py-3", children: [_jsxs("div", { className: "flex flex-col gap-1", children: [_jsx("p", { className: "text-sm/6 font-medium text-foreground", children: labels.unsaved.title }), _jsx("p", { className: "text-sm/6 text-muted-foreground", children: labels.unsaved.body })] }), _jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [_jsx(Button, { ref: keepEditingRef, type: "button", onClick: keepEditing, children: labels.unsaved.keepEditing }), _jsx(Button, { type: "button", outline: true, onClick: session.discard, children: labels.unsaved.discard })] })] })) : (_jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [_jsxs(Button, { type: "button", "aria-disabled": session.saveBlocked || undefined, "aria-busy": saving || undefined, onClick: () => void session.save(), "data-slot": "opportunity-fact-edit-save", children: [saving ? (_jsx(Loader2, { "aria-hidden": true, className: "size-4 animate-spin motion-reduce:animate-none" })) : null, saving ? labels.saving : labels.saveSection(labels.section[id])] }), _jsx(Button, { type: "button", outline: true, "aria-disabled": saving || undefined, onClick: () => {
|
|
255
|
+
guardOriginRef.current =
|
|
256
|
+
document.activeElement instanceof HTMLElement ? document.activeElement : null;
|
|
257
|
+
session.requestCancel();
|
|
258
|
+
}, "data-slot": "opportunity-fact-edit-cancel", children: labels.cancel })] })), alsoSaves ? (_jsx("p", { "data-slot": "opportunity-fact-edit-also-saves", className: "text-xs/5 text-muted-foreground", children: alsoSaves })) : null] })) : null] }));
|
|
259
|
+
}
|
|
260
|
+
/** CEL-2167 locked state: explains the lock, never offers a workaround. */
|
|
261
|
+
export function LockedTermsPanel({ labels, reason, onReviewOffers, onMount, }) {
|
|
262
|
+
// An unknown code (the union is closed at compile time, not at runtime)
|
|
263
|
+
// falls back to the generic copy; a raw code never renders.
|
|
264
|
+
const reasonCopy = (reason && labels.locked.reasons[reason]) || labels.locked.reason;
|
|
265
|
+
return (_jsxs("div", { ref: onMount, role: "status", tabIndex: -1, "data-slot": "opportunity-fact-terms-locked", className: "flex items-start gap-3 rounded-md border border-border bg-muted px-3 py-3 focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring/70", children: [_jsx(Lock, { "aria-hidden": true, className: "mt-0.5 size-4 shrink-0 text-muted-foreground" }), _jsxs("div", { className: "flex min-w-0 flex-col gap-2", children: [_jsxs("div", { className: "flex flex-col gap-1", children: [_jsx("p", { className: "text-sm/6 font-medium text-foreground", children: labels.locked.title }), _jsx("p", { className: "text-sm/6 text-muted-foreground", children: reasonCopy }), _jsx("p", { className: "text-sm/6 text-muted-foreground", children: labels.locked.sentOffersNote })] }), onReviewOffers ? (_jsx("div", { children: _jsx(Button, { type: "button", outline: true, onClick: onReviewOffers, children: labels.locked.reviewOffers }) })) : null] })] }));
|
|
266
|
+
}
|
|
267
|
+
//# sourceMappingURL=editable-section.js.map
|