Skip to content

Commit

Permalink
fix: collapsable code snippet (#30)
Browse files Browse the repository at this point in the history
  • Loading branch information
josefinebrorson committed Sep 13, 2023
1 parent 1768466 commit bf407c3
Show file tree
Hide file tree
Showing 3 changed files with 90 additions and 8 deletions.
1 change: 1 addition & 0 deletions src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ export interface Story {
type?: "fullsize" | "configurator";
center?: boolean;
information?: string;
codeTemplateExpanded?: boolean;
codeTemplate?: CodeTemplateFn;
render?: (
controls: ReturnType<
Expand Down
63 changes: 55 additions & 8 deletions src/webapp/layout/story/Story.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import styled from "@emotion/styled";
import { Center, Title } from "@mantine/core";
import { Center, Title, Button, Collapse } from "@mantine/core";
import { observer } from "mobx-react-lite";
import { Story } from "../../../types";
import { Markdown } from "./atom/Markdown";
Expand All @@ -10,6 +10,8 @@ import { useControl } from "./control/useControl";
import { useIsDarkMode } from "./control/useIsDarkMode";
import { DefaultComponentWrapper } from "./DefaultComponentWrapper";
import { useActionOutput } from "./useActionOutput";
import { useState } from "react";
import { ArrowDownIcon } from "../../icons/ArrowDownIcon";

export const StoryComponent = observer(({ story }: { story: Story }) => {
const controls = useControl();
Expand All @@ -30,6 +32,21 @@ export const StoryComponent = observer(({ story }: { story: Story }) => {

const sectionId = encodeURIComponent(story?.name ?? "");

const [opened, setOpen] = useState(false);

const toggleCodeSnippet = () => {
setOpen((prevOpened) => !prevOpened);
};

const handleClick = () => {
toggleCodeSnippet();
};

let codeTemplateSource = null;
if (story.codeTemplate) {
codeTemplateSource = story.codeTemplate.toString().trim();
}

return (
<Wrapper>
<SectionAnchor id={sectionId}>
Expand Down Expand Up @@ -61,13 +78,43 @@ export const StoryComponent = observer(({ story }: { story: Story }) => {
/>
</ControlsWrapper>
</Configurator>
{story.codeTemplate && (
<CodeTemplate
codeTemplate={story.codeTemplate}
controls={controls}
/>
)}
<ActionOutput outputs={outputs} />
{story.codeTemplate &&
(story.codeTemplateExpanded ? (
<>
<Button
leftIcon={<ArrowDownIcon />}
variant="default"
onClick={handleClick}
styles={() => ({
root: {
color: "gray",
margin: "20px 0",
},
leftIcon: {
transform: opened ? "rotate(180deg)" : "rotate(0deg)",
transition: "transform 0.3s ease-in-out",
},
})}
>
{opened ? "Hide code example" : "Show code example"}
</Button>
<Collapse
in={opened}
transitionDuration={300}
transitionTimingFunction="linear"
>
<CodeTemplate
codeTemplate={story.codeTemplate}
controls={controls}
/>
</Collapse>
</>
) : (
<CodeTemplate
codeTemplate={story.codeTemplate}
controls={controls}
/>
))}
</>
)}
</Wrapper>
Expand Down
34 changes: 34 additions & 0 deletions src/webapp/layout/story/story-button/StoryButton.story.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ export const story: Story = {
{
name: "Kivra Design System",
center: true,

render() {
return (
<StoryHeaderButton
Expand All @@ -33,5 +34,38 @@ export const story: Story = {
);
},
},
{
name: "Story Button",
center: true,
information:
"This is just an example how to use `<StoryHeaderButton />`s props. <br/>In this example also implemented show/hide code snippet that is possible to use in stories with `codeTemplate` function.",
codeTemplate: (props) => `
<StoryHeaderButton${props}></StoryHeaderButton>
`,
codeTemplateExpanded: false,
render({ segment, text }) {
const type = segment({
name: "type",
value: "designsystem",
options: [
["designsystem", "designsystem"],
["github", "github"],
["figma", "figmaa"],
],
showAs: "select",
});
return (
<StoryHeaderButton
type={type}
url={text({
name: "url",
value: "https://",
defaultValue: "https://design.kivra.com/",
description: "Always start with https://",
})}
/>
);
},
},
],
};

0 comments on commit bf407c3

Please sign in to comment.