Skip to content

Commit 3f47c6f

Browse files
committed
Update: Fullscreenbar component
1 parent b698095 commit 3f47c6f

File tree

5 files changed

+131
-0
lines changed

5 files changed

+131
-0
lines changed

src/classes/FullscreenBar.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"FullscreenBar":"Polaris-FullscreenBar","BackAction":"Polaris-FullscreenBar__BackAction"}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<template lang="pug">
2+
div(:class="styles.FullscreenBar")
3+
button(
4+
:class="styles.BackAction",
5+
@click="$emit('action')",
6+
:aria-label="i18n.translate('Polaris.FullscreenBar.accessibilityLabel')",
7+
)
8+
Icon(:source="ExitMajor")
9+
| {{ i18n.translate('Polaris.FullscreenBar.back') }}
10+
slot
11+
</template>
12+
<script setup lang="ts">
13+
import { UseI18n } from '@/use';
14+
import { Icon } from '@/components';
15+
import ExitMajor from '@icons/ExitMajor.svg';
16+
import styles from '@/classes/FullscreenBar.json';
17+
18+
const i18n = UseI18n();
19+
</script>
20+
<style lang="scss">
21+
@import 'polaris/polaris-react/src/components/FullscreenBar/FullscreenBar.scss';
22+
</style>
Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
import dedent from 'ts-dedent'
2+
import {Meta, Story, Canvas, ArgsTable} from '@storybook/addon-docs';
3+
import { ref } from 'vue';
4+
import { FullscreenBar, DisplayText, Button } from '@/polaris-vue';
5+
6+
<Meta
7+
title="Components / Navigation / Fullscreen bar"
8+
component={FullscreenBar}
9+
argTypes={{
10+
default: {
11+
table: { disable: true },
12+
},
13+
action: {
14+
description: 'Callback when back button is clicked.',
15+
table: { type: { summary: '() => void' } },
16+
control: { disable: true },
17+
},
18+
}}
19+
/>
20+
21+
export const Template = (args) => ({
22+
components: { FullscreenBar, DisplayText, Button },
23+
setup() {
24+
const isFullscreen = ref(true);
25+
const handleActionClick = () => {
26+
isFullscreen.value = !isFullscreen.value;
27+
}
28+
const setFullscreen = () => {
29+
isFullscreen.value = true;
30+
}
31+
return { args, isFullscreen, handleActionClick, setFullscreen };
32+
},
33+
template: `
34+
<div :style="{height: '250px'}">
35+
<FullscreenBar v-if="isFullscreen" @action="handleActionClick">
36+
<div
37+
:style="{
38+
display: 'flex',
39+
flexGrow: 1,
40+
justifyContent: 'space-between',
41+
alignItems: 'center',
42+
paddingLeft: '1rem',
43+
}"
44+
>
45+
<DisplayText>Content</DisplayText>
46+
<Button @click="() => {}">User Action 1</Button>
47+
</div>
48+
</FullscreenBar>
49+
<div :style="{padding: '1rem'}">
50+
<Button v-if="!isFullscreen" @click="setFullscreen">Go Fullscreen</Button>
51+
<DisplayText size="small">Page content</DisplayText>
52+
</div>
53+
</div>
54+
`,
55+
});
56+
57+
# Fullscreen bar
58+
59+
The Fullscreen bar is a header component that should be presented at the top of an app when it is in fullscreen mode. This is designed to ensure a uniform placement for a button to exit that mode. The Fullscreen bar can be customized by adding components to slot.
60+
61+
<Canvas>
62+
<Story
63+
name="Fullscreen bar"
64+
parameters={{
65+
docs: {
66+
source: {
67+
code: dedent`
68+
<div :style="{height: '250px'}">
69+
<FullscreenBar v-if="isFullscreen" @action="handleActionClick">
70+
<div
71+
:style="{
72+
display: 'flex',
73+
flexGrow: 1,
74+
justifyContent: 'space-between',
75+
alignItems: 'center',
76+
paddingLeft: '1rem',
77+
}"
78+
>
79+
<DisplayText>Content</DisplayText>
80+
<Button @click="() => {}">User Action 1</Button>
81+
</div>
82+
</FullscreenBar>
83+
<div :style="{padding: '1rem'}">
84+
<Button v-if="!isFullscreen" @click="setFullscreen">Go Fullscreen</Button>
85+
<DisplayText size="small">Page content</DisplayText>
86+
</div>
87+
</div>\n
88+
<script setup>
89+
const isFullscreen = ref(true);
90+
const handleActionClick = () => {
91+
isFullscreen.value = !isFullscreen.value;
92+
}
93+
const setFullscreen = () => {
94+
isFullscreen.value = true;
95+
}
96+
</script>
97+
`,
98+
},
99+
},
100+
}}
101+
>
102+
{Template.bind({})}
103+
</Story>
104+
</Canvas>
105+
106+
<ArgsTable story="Fullscreen bar"/>
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export { default as FullscreenBar } from './FullscreenBar.vue';

src/components/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ export * from './FooterHelp';
3636
export * from './Form';
3737
export * from './FormLayout';
3838
export * from './Frame';
39+
export * from './FullscreenBar';
3940
export * from './Heading';
4041
export * from './Icon';
4142
export * from './Image';

0 commit comments

Comments
 (0)