Skip to content

Commit

Permalink
Merge pull request #537 from openameba/feat/bottom-button
Browse files Browse the repository at this point in the history
feat(spindle-ui): create BottomButton
  • Loading branch information
tatz-ibz committed Oct 7, 2022
2 parents 9f232b5 + 9e5d79c commit 76ef394
Show file tree
Hide file tree
Showing 5 changed files with 143 additions and 0 deletions.
28 changes: 28 additions & 0 deletions packages/spindle-ui/src/BottomButton/BottomButton.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
:root {
--BottomButton-z-index: 1;
--BottomButton-backgroundColor: var(--color-surface-primary);
}

/*
* Bottom Button
*/
.spui-BottomButton {
background: var(--BottomButton-backgroundColor);
bottom: 0;
left: 0;
z-index: var(--BottomButton-z-index);
}

.spui-BottomButton-wrap {
padding: 16px 16px calc(env(safe-area-inset-bottom) + 16px);
}

/* Position */
.spui-BottomButton--fixed {
position: fixed;
width: 100%;
}

.spui-BottomButton--sticky {
position: sticky;
}
86 changes: 86 additions & 0 deletions packages/spindle-ui/src/BottomButton/BottomButton.stories.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
import { Description, Meta, Story, Source } from '@storybook/addon-docs/blocks';
import { Button } from '../Button';
import { BottomButton } from './BottomButton';

# Bottom Button

<Meta title="BottomButton" component={BottomButton} />

![stability-stable](https://img.shields.io/badge/stability-stable-green.svg)

<Source
language='javascript'
code={`import { BottomButton } from '@openameba/spindle-ui/BottomButton'`}
/>

<Source
language='css'
code={`@import './node_modules/@openameba/spindle-ui/BottomButton/BottomButton.css'`}
/>

<Source
language='html'
code={`<link rel="stylesheet" href="https://unpkg.com/@openameba/spindle-ui/BottomButton/BottomButton.css">`}
/>

## Fixed Position
<Description>画面下部に配置されます</Description>

<Preview withSource="open">
<Story name="Fixed Position">
<div style={{ ["--BottomButton-z-index"]: 2 }}>
<BottomButton position="fixed">
<Button size="large" variant="contained" layout="fullWidth">fixed button</Button>
</BottomButton>
</div>
</Story>
</Preview>

<Source
code={`
<BottomButton position="fixed">
<Button size="large" variant="contained" layout="fullWidth">fixed button</Button>
</BottomButton>
`}
/>

<Source
language='html'
code={`
<div class="spui-BottomButton spui-BottomButton--fixed">
<div class="spui-BottomButton-wrap">
<button class="spui-Button spui-Button--large spui-Button--contained">fixed button</button>
</div>
</div>
`}
/>

## Sticky Position
<Description>上部のコンテンツがスクロール中に画面下部に固定され、スクロールし終わると固定が解除されます</Description>

<Preview withSource="open">
<Story name="Sticky Position">
<BottomButton position="sticky">
<Button size="large" variant="contained" layout="fullWidth">sticky button</Button>
</BottomButton>
</Story>
</Preview>

<Source
code={`
<BottomButton position="sticky">
<Button size="large" variant="contained" layout="fullWidth">sticky button</Button>
</BottomButton>
`}
/>

<Source
language='html'
code={`
<div class="spui-BottomButton spui-BottomButton--sticky">
<div class="spui-BottomButton-wrap">
<button class="spui-Button spui-Button--fullWidth spui-Button--large spui-Button--contained">sticky button</button>
</div>
</div>
`}
/>
27 changes: 27 additions & 0 deletions packages/spindle-ui/src/BottomButton/BottomButton.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import React, { ReactNode } from 'react';

type Position = 'fixed' | 'sticky';

type Props = {
children: ReactNode;
className?: string;
position?: Position;
};

const BLOCK_NAME = 'spui-BottomButton';

export const BottomButton: React.FC<Props> = ({
children,
className = '',
position = 'fixed',
}: Props) => {
const classnames = [BLOCK_NAME, `${BLOCK_NAME}--${position}`, className]
.filter(Boolean)
.join(' ');

return (
<div className={classnames}>
<div className={`${BLOCK_NAME}-wrap`}>{children}</div>
</div>
);
};
1 change: 1 addition & 0 deletions packages/spindle-ui/src/BottomButton/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export { BottomButton } from './BottomButton';
1 change: 1 addition & 0 deletions packages/spindle-ui/src/index.css
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
/* stylelint-disable plugin/selector-bem-pattern */
@import 'ameba-color-palette.css';
@import './Breadcrumb/Breadcrumb.css';
@import './BottomButton/BottomButton.css';
@import './Button/Button.css';
@import './ButtonGroup/ButtonGroup.css';
@import './Dialog/Dialog.css';
Expand Down

0 comments on commit 76ef394

Please sign in to comment.