@marimo-team/frontend 0.24.3-dev1 → 0.24.3-dev13
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/assets/{CellStatus-LoTwk7fR.js → CellStatus-LChlPuPv.js} +1 -1
- package/dist/assets/{ConnectedDataExplorerComponent-DW6cJ-Lr.js → ConnectedDataExplorerComponent-DiXd-oqU.js} +1 -1
- package/dist/assets/JsonOutput-DCgOfk7t.js +50 -0
- package/dist/assets/LazyAnyLanguageCodeMirror-C_cwGmDg.js +2 -0
- package/dist/assets/{MarimoErrorOutput-DqpoYOvw.js → MarimoErrorOutput-DwGwWsxV.js} +2 -2
- package/dist/assets/{RenderHTML-DwhMAd9l.js → RenderHTML-B73ExmWb.js} +1 -1
- package/dist/assets/{RunButton-BlpbweyH.js → RunButton-iPopny2V.js} +1 -1
- package/dist/assets/add-cell-with-ai-DkDJWJF6.js +76 -0
- package/dist/assets/{add-connection-dialog-BGfpw5lC.js → add-connection-dialog-1fPdJRRj.js} +73 -73
- package/dist/assets/agent-panel-0drx16i_.js +286 -0
- package/dist/assets/ai-model-dropdown-B3zoJxvO.js +3 -0
- package/dist/assets/{any-language-editor-DflLjPSQ.js → any-language-editor-pGZDaSqz.js} +1 -1
- package/dist/assets/app-config-button-DlhlZpGg.js +1 -0
- package/dist/assets/{blob-B2d_dHwI.js → blob-B6ayJpoQ.js} +1 -1
- package/dist/assets/cell-editor-DHWK9sPz.js +21 -0
- package/dist/assets/cell-link-B7ZVGcSl.js +1 -0
- package/dist/assets/{cells-Cp-G34Rz.js → cells-CMLP1Dld.js} +25 -25
- package/dist/assets/chat-display-MSmOss6B.js +1 -0
- package/dist/assets/{chat-panel-BlUwNY5j.js → chat-panel-g8moS06Y.js} +2 -2
- package/dist/assets/{chat-ui-DGiVDzNh.js → chat-ui-CBqyOE_p.js} +4 -4
- package/dist/assets/{column-preview-riSXbYe_.js → column-preview-oex3TMfq.js} +1 -1
- package/dist/assets/{command-palette-CCVzJcyf.js → command-palette-D0CXuYgO.js} +1 -1
- package/dist/assets/{common-CHR7w7aQ.js → common-BN-k-WsU.js} +1 -1
- package/dist/assets/components-BPyy3wXe.js +1 -0
- package/dist/assets/components-DWwMSfV5.js +1 -0
- package/dist/assets/{config-BlNM0caL.js → config-BuGkUPaK.js} +1 -1
- package/dist/assets/{copy-icon-z8fuTE3w.js → copy-icon-BUOcnUgJ.js} +1 -1
- package/dist/assets/{datasource-DrODSIs0.js → datasource-DDYaCFxh.js} +2 -2
- package/dist/assets/{dependency-graph-panel-AY5BEVH2.js → dependency-graph-panel-XotpvJGU.js} +3 -3
- package/dist/assets/dist-0lSCnrrf.js +1 -0
- package/dist/assets/dist-CLXTUtr2.js +1 -0
- package/dist/assets/{documentation-panel-CaJF7e-j.js → documentation-panel-pxfRAT4P.js} +1 -1
- package/dist/assets/{download-DMxOzI7b.js → download-BRrPmrl5.js} +1 -1
- package/dist/assets/dropdown-menu-DnvwbPho.js +1 -0
- package/dist/assets/edit-page-BopkEdmt.js +9 -0
- package/dist/assets/{error-entries-Cv2m1yhc.js → error-entries-Bc5lubx5.js} +1 -1
- package/dist/assets/{error-panel-Bhlvt6_H.js → error-panel-n7jAw6zx.js} +1 -1
- package/dist/assets/file-explorer-panel-BOBUXkRd.js +1 -0
- package/dist/assets/file-icons-wArFRwmS.js +1 -0
- package/dist/assets/{file-name-input-K4MKESI_.js → file-name-input-Brf4MYj_.js} +3 -3
- package/dist/assets/{floating-outline-DaUHnl_e.js → floating-outline-CG-zTB22.js} +1 -1
- package/dist/assets/gallery-page-B39w2KuX.js +1 -0
- package/dist/assets/{glide-data-editor-sICUMEhk.js → glide-data-editor-BufxOYjB.js} +1 -1
- package/dist/assets/home-page-CB-Br4zp.js +4 -0
- package/dist/assets/index-C2Qgy_xA.js +29 -0
- package/dist/assets/{kiosk-mode-mxgb5lWf.js → kiosk-mode-m6yKu6eh.js} +1 -1
- package/dist/assets/{layout-DWnrxIo2.js → layout-YlSl0c7f.js} +5 -5
- package/dist/assets/logs-panel-Dpw-vNvJ.js +1 -0
- package/dist/assets/{markdown-renderer-BZKlbm2Q.js → markdown-renderer-C_dn-F0h.js} +1 -1
- package/dist/assets/{name-cell-input-BMCdK-el.js → name-cell-input-DQ1AN_b1.js} +1 -1
- package/dist/assets/{outline-panel-Dr5u73V6.js → outline-panel-CANEwLJ7.js} +1 -1
- package/dist/assets/packages-panel-l2uEMqBg.js +1 -0
- package/dist/assets/{pair-with-agent-modal-CbUFKJHP.js → pair-with-agent-modal-DYvcjx3q.js} +1 -1
- package/dist/assets/panel-accordion-state-CJxJh72n.js +1 -0
- package/dist/assets/panels-CU5fmJJo.js +4 -0
- package/dist/assets/{pathUtils-Cryrlpma.js → pathUtils-D7lk2rYQ.js} +1 -1
- package/dist/assets/paths-ClYq6Exe.js +1 -0
- package/dist/assets/process-output-DTlZ_jDn.js +1 -0
- package/dist/assets/readonly-code-display-DWORkymT.js +1 -0
- package/dist/assets/{readonly-python-code-DpIyjHqY.js → readonly-python-code-Cvz_-5Jh.js} +1 -1
- package/dist/assets/{renderShortcut-X-CJUSM8.js → renderShortcut-BE8QI9Yi.js} +1 -1
- package/dist/assets/{reveal-component-nZIAapoD.js → reveal-component-B6FIsdxS.js} +2 -2
- package/dist/assets/rotate-cw-CESctpLh.js +1 -0
- package/dist/assets/run-page-DpA2Hz2h.js +1 -0
- package/dist/assets/{scratchpad-panel-BleGt2KM.js → scratchpad-panel-FahrbepP.js} +1 -1
- package/dist/assets/{secrets-panel-D3BpDIgg.js → secrets-panel-Cf-U5wY0.js} +1 -1
- package/dist/assets/select-C1IYgK48.js +1 -0
- package/dist/assets/session-panel-2w7efICk.js +1 -0
- package/dist/assets/share-BZW3tzEX.js +1 -0
- package/dist/assets/{skeleton-BKeh8hf3.js → skeleton-CLUBZ15q.js} +1 -1
- package/dist/assets/{snippets-panel-D5yy7kj0.js → snippets-panel-CvdCemOl.js} +1 -1
- package/dist/assets/{state-B6AklCzD.js → state-CJnYkzhz.js} +1 -1
- package/dist/assets/state-DuyHh3Fk.js +3 -0
- package/dist/assets/switch-DhPDzMo3.js +1 -0
- package/dist/assets/{terminal-CQAFGBfN.js → terminal-DH54UV0y.js} +2 -2
- package/dist/assets/tooltip-BvU0ko_d.js +1 -0
- package/dist/assets/tracing-CnQSHm2x.js +1 -0
- package/dist/assets/tracing-panel-BZHx8nXa.js +2 -0
- package/dist/assets/tree-actions-5rg4Zqxe.js +1 -0
- package/dist/assets/{useAddCell-DdB_uBif.js → useAddCell-4vmbxGw5.js} +1 -1
- package/dist/assets/{useBoolean-BXC4CItZ.js → useBoolean-zcg-oxnj.js} +1 -1
- package/dist/assets/useCellActionButton-BQY2nyr_.js +1 -0
- package/dist/assets/{useDeleteCell-Bz49_cFj.js → useDeleteCell-CM1QzkEs.js} +1 -1
- package/dist/assets/useDependencyPanelTab-BsALWNfv.js +1 -0
- package/dist/assets/useInstallPackage-Cr0TevQm.js +1 -0
- package/dist/assets/useNotebookActions-BxNtZieS.js +10 -0
- package/dist/assets/{useRunCells-CX7oW5zy.js → useRunCells-C2e26LhV.js} +1 -1
- package/dist/assets/{useSplitCell-Dy2_DmJR.js → useSplitCell-CJ8nGq_h.js} +1 -1
- package/dist/assets/{vega-component-C7TCzyaU.js → vega-component-Z8mt9AUF.js} +1 -1
- package/dist/assets/{write-secret-modal-D6zoZgLY.js → write-secret-modal-CSWlDX_Z.js} +1 -1
- package/dist/index.html +36 -35
- package/package.json +1 -1
- package/src/__mocks__/requests.ts +7 -2
- package/src/components/data-table/column-explorer-panel/column-explorer.tsx +2 -6
- package/src/components/data-table/column-visibility-dropdown.tsx +9 -3
- package/src/components/datasources/components.tsx +4 -2
- package/src/components/editor/chrome/components/feedback-button.tsx +10 -9
- package/src/components/editor/chrome/panels/__tests__/packages-panel.test.tsx +143 -0
- package/src/components/editor/chrome/panels/packages-panel.tsx +145 -51
- package/src/components/editor/code/__tests__/readonly-diff.test.tsx +65 -0
- package/src/components/editor/code/readonly-diff.tsx +1 -1
- package/src/components/editor/file-tree/__tests__/tree-actions.test.tsx +54 -0
- package/src/components/editor/file-tree/tree-actions.tsx +11 -14
- package/src/components/editor/package-alert.tsx +25 -1
- package/src/components/home/components.tsx +17 -0
- package/src/components/pages/gallery-page.tsx +2 -4
- package/src/components/pages/home-page.tsx +2 -4
- package/src/components/terminal/terminal.tsx +4 -4
- package/src/core/cells/pending-delete-service.ts +12 -16
- package/src/core/codemirror/language/__tests__/sql.test.ts +70 -2
- package/src/core/codemirror/language/languages/sql/sql.ts +16 -1
- package/src/core/datasets/__tests__/data-source.test.ts +2 -0
- package/src/core/datasets/data-source-connections.ts +15 -10
- package/src/core/islands/__tests__/parse.test.ts +140 -7
- package/src/core/islands/parse.ts +20 -0
- package/src/core/packages/__tests__/useInstallPackage.test.tsx +47 -1
- package/src/core/packages/toast-components.tsx +26 -0
- package/src/core/packages/useInstallPackage.ts +7 -2
- package/src/core/runtime/__tests__/runtime.test.ts +11 -0
- package/src/core/runtime/runtime.ts +7 -2
- package/src/core/wasm/bridge.ts +1 -0
- package/src/plugins/layout/AccordionPlugin.tsx +7 -2
- package/src/plugins/layout/__test__/AccordionPlugin.test.tsx +66 -0
- package/dist/assets/JsonOutput-CzIGPEZQ.js +0 -50
- package/dist/assets/LazyAnyLanguageCodeMirror-LboTfNDv.js +0 -2
- package/dist/assets/add-cell-with-ai-R-3DS79K.js +0 -76
- package/dist/assets/agent-panel-Cgt_K0tD.js +0 -286
- package/dist/assets/ai-model-dropdown-DCmiuk7x.js +0 -3
- package/dist/assets/app-config-button-DUJC6b6x.js +0 -1
- package/dist/assets/cell-editor-Dw09J9yD.js +0 -21
- package/dist/assets/cell-link-6burT2XF.js +0 -1
- package/dist/assets/chat-display-Bu405iyc.js +0 -1
- package/dist/assets/components-C7mWrmXr.js +0 -1
- package/dist/assets/dist-DzCQtGkt.js +0 -1
- package/dist/assets/dropdown-menu-C40jM9o4.js +0 -1
- package/dist/assets/edit-page-xlMlcLnI.js +0 -9
- package/dist/assets/file-explorer-panel-s0ohSG_L.js +0 -1
- package/dist/assets/file-icons-DdGYuADJ.js +0 -1
- package/dist/assets/gallery-page-C3pBpHlY.js +0 -1
- package/dist/assets/home-page-BLd6rnbk.js +0 -4
- package/dist/assets/index-4n22QjCD.js +0 -29
- package/dist/assets/logs-panel-BGS2v3ba.js +0 -1
- package/dist/assets/packages-panel-BdpRg9tX.js +0 -1
- package/dist/assets/panel-accordion-state-DjUTN7i5.js +0 -1
- package/dist/assets/panels-CWn0Yh1D.js +0 -4
- package/dist/assets/paths-zcL04qUW.js +0 -1
- package/dist/assets/process-output-Ck7-P_xp.js +0 -1
- package/dist/assets/readonly-code-display--S2daDa6.js +0 -1
- package/dist/assets/run-page-9pl8qhQR.js +0 -1
- package/dist/assets/select-nLt2y0Sw.js +0 -1
- package/dist/assets/session-panel-DRGPlL5J.js +0 -1
- package/dist/assets/share-CPtBiNgr.js +0 -1
- package/dist/assets/state-Di9TbuV9.js +0 -3
- package/dist/assets/switch-DjXr9Y9D.js +0 -1
- package/dist/assets/tooltip-BUtPzKB4.js +0 -1
- package/dist/assets/tracing-DNk3gmWv.js +0 -1
- package/dist/assets/tracing-panel-Yqazr6w_.js +0 -2
- package/dist/assets/tree-actions-CG5g7aUQ.js +0 -1
- package/dist/assets/useCellActionButton-B31neI3m.js +0 -1
- package/dist/assets/useDependencyPanelTab-C_ps0r--.js +0 -1
- package/dist/assets/useInstallPackage-DsD08SLK.js +0 -1
- package/dist/assets/useNotebookActions-CQtbk9CB.js +0 -10
|
@@ -23,6 +23,7 @@ interface Data {
|
|
|
23
23
|
* Whether to allow multiple tabs to be open.
|
|
24
24
|
*/
|
|
25
25
|
multiple: boolean;
|
|
26
|
+
expanded: string[];
|
|
26
27
|
}
|
|
27
28
|
|
|
28
29
|
export class AccordionPlugin implements IStatelessPlugin<Data> {
|
|
@@ -31,6 +32,7 @@ export class AccordionPlugin implements IStatelessPlugin<Data> {
|
|
|
31
32
|
validator = z.object({
|
|
32
33
|
labels: z.array(z.string()),
|
|
33
34
|
multiple: z.boolean(),
|
|
35
|
+
expanded: z.array(z.string()).default([]),
|
|
34
36
|
});
|
|
35
37
|
|
|
36
38
|
render(props: IStatelessPluginProps<Data>): JSX.Element {
|
|
@@ -43,11 +45,14 @@ export class AccordionPlugin implements IStatelessPlugin<Data> {
|
|
|
43
45
|
const AccordionComponent = ({
|
|
44
46
|
labels,
|
|
45
47
|
multiple,
|
|
48
|
+
expanded,
|
|
46
49
|
children,
|
|
47
50
|
}: PropsWithChildren<Data>): JSX.Element => {
|
|
48
|
-
const
|
|
51
|
+
const expansionProps = multiple
|
|
52
|
+
? { type: "multiple" as const, defaultValue: expanded }
|
|
53
|
+
: { type: "single" as const, defaultValue: expanded[0], collapsible: true };
|
|
49
54
|
return (
|
|
50
|
-
<Accordion
|
|
55
|
+
<Accordion {...expansionProps} className="text-muted-foreground">
|
|
51
56
|
{React.Children.map(children, (child, index) => {
|
|
52
57
|
return (
|
|
53
58
|
<AccordionItem key={index} value={index.toString()}>
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
|
+
import { cleanup, fireEvent, render } from "@testing-library/react";
|
|
3
|
+
import { afterEach, describe, expect, it } from "vitest";
|
|
4
|
+
import { AccordionPlugin } from "../AccordionPlugin";
|
|
5
|
+
|
|
6
|
+
const plugin = new AccordionPlugin();
|
|
7
|
+
|
|
8
|
+
function renderAccordion(multiple: boolean, expanded?: string[]) {
|
|
9
|
+
return plugin.render({
|
|
10
|
+
host: document.createElement("marimo-accordion"),
|
|
11
|
+
data: plugin.validator.parse({
|
|
12
|
+
labels: ["Summary", "Details"],
|
|
13
|
+
multiple,
|
|
14
|
+
expanded,
|
|
15
|
+
}),
|
|
16
|
+
children: [
|
|
17
|
+
<p key="summary">Overview</p>,
|
|
18
|
+
<p key="details">More information</p>,
|
|
19
|
+
],
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
describe("AccordionPlugin", () => {
|
|
24
|
+
afterEach(cleanup);
|
|
25
|
+
|
|
26
|
+
it.each([
|
|
27
|
+
{ multiple: false, expanded: undefined, expected: ["false", "false"] },
|
|
28
|
+
{ multiple: true, expanded: [], expected: ["false", "false"] },
|
|
29
|
+
{ multiple: false, expanded: ["0"], expected: ["true", "false"] },
|
|
30
|
+
{ multiple: false, expanded: ["1"], expected: ["false", "true"] },
|
|
31
|
+
{ multiple: true, expanded: ["0", "1"], expected: ["true", "true"] },
|
|
32
|
+
])(
|
|
33
|
+
"sets initial expansion: $multiple, $expanded",
|
|
34
|
+
({ multiple, expanded, expected }) => {
|
|
35
|
+
const { getAllByRole } = render(renderAccordion(multiple, expanded));
|
|
36
|
+
expect(
|
|
37
|
+
getAllByRole("button").map((button) =>
|
|
38
|
+
button.getAttribute("aria-expanded"),
|
|
39
|
+
),
|
|
40
|
+
).toEqual(expected);
|
|
41
|
+
},
|
|
42
|
+
);
|
|
43
|
+
|
|
44
|
+
it("lets users collapse and switch the initially expanded item", () => {
|
|
45
|
+
const { getAllByRole, rerender } = render(renderAccordion(false, ["1"]));
|
|
46
|
+
const [summary, details] = getAllByRole("button");
|
|
47
|
+
fireEvent.click(details);
|
|
48
|
+
expect(details.getAttribute("aria-expanded")).toBe("false");
|
|
49
|
+
rerender(renderAccordion(false, ["1"]));
|
|
50
|
+
expect(details.getAttribute("aria-expanded")).toBe("false");
|
|
51
|
+
fireEvent.click(details);
|
|
52
|
+
fireEvent.click(summary);
|
|
53
|
+
expect(
|
|
54
|
+
[summary, details].map((button) => button.getAttribute("aria-expanded")),
|
|
55
|
+
).toEqual(["true", "false"]);
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
it("lets users collapse items independently with multiple enabled", () => {
|
|
59
|
+
const { getAllByRole } = render(renderAccordion(true, ["0", "1"]));
|
|
60
|
+
const [summary, details] = getAllByRole("button");
|
|
61
|
+
fireEvent.click(summary);
|
|
62
|
+
expect(
|
|
63
|
+
[summary, details].map((button) => button.getAttribute("aria-expanded")),
|
|
64
|
+
).toEqual(["false", "true"]);
|
|
65
|
+
});
|
|
66
|
+
});
|