Skip to content

Commit

Permalink
Add stories for color & resource
Browse files Browse the repository at this point in the history
  • Loading branch information
ClementPasteau committed Sep 13, 2024
1 parent 20c66a7 commit 95ba735
Show file tree
Hide file tree
Showing 5 changed files with 277 additions and 68 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import { showErrorBox } from '../../UI/Messages/MessageBox';
import useForceUpdate from '../../Utils/UseForceUpdate';
import classes from './CompactResourceSelectorWithThumbnail.module.css';
import classNames from 'classnames';
import { makeTimestampedId } from '../../Utils/TimestampedId';

const styles = {
icon: {
Expand Down Expand Up @@ -59,6 +60,7 @@ export const CompactResourceSelectorWithThumbnail = ({
const resourcesLoader = ResourcesLoader;
const forceUpdate = useForceUpdate();
const displayThumbnail = resourcesKindsWithThumbnail.includes(resourceKind);
const idToUse = React.useRef<string>(id || makeTimestampedId());

// TODO: move in a hook?
const { showConfirmation } = useAlertDialog();
Expand Down Expand Up @@ -227,7 +229,7 @@ export const CompactResourceSelectorWithThumbnail = ({
);

return (
<LineStackLayout noMargin expand>
<LineStackLayout noMargin expand id={idToUse.current}>
{displayThumbnail && (
<ResourceThumbnail
resourceName={resourceName}
Expand Down Expand Up @@ -268,8 +270,8 @@ export const CompactResourceSelectorWithThumbnail = ({
},
...externalEditors.map(externalEditor => ({
label: resourceName
? i18n._(externalEditor.createDisplayName)
: i18n._(externalEditor.editDisplayName),
? i18n._(externalEditor.editDisplayName)
: i18n._(externalEditor.createDisplayName),
click: () => editWith(i18n, externalEditor),
})),
]}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
// @flow
import * as React from 'react';

import muiDecorator from '../../ThemeDecorator';
import paperDecorator from '../../PaperDecorator';

import { action } from '@storybook/addon-actions';
import { testProject } from '../../GDevelopJsInitializerDecorator';
import { CompactResourceSelectorWithThumbnail } from '../../../ResourcesList/CompactResourceSelectorWithThumbnail';
import { ColumnStackLayout } from '../../../UI/Layout';
import ElementHighlighterProvider from '../../ElementHighlighterProvider';
import Text from '../../../UI/Text';
import fakeResourceManagementProps from '../../FakeResourceManagement';
import { emptyStorageProvider } from '../../../ProjectsStorage/ProjectStorageProviders';
import fakeResourceExternalEditors from '../../FakeResourceExternalEditors';

export default {
title: 'UI Building Blocks/CompactResourceSelectorWithThumbnail',
component: CompactResourceSelectorWithThumbnail,
decorators: [paperDecorator, muiDecorator],
};

export const Default = () => {
return (
<ElementHighlighterProvider
elements={[{ label: 'Default', id: 'default' }]}
>
<ColumnStackLayout expand>
<Text size="sub-title">No image selected</Text>
<CompactResourceSelectorWithThumbnail
resourceKind="image"
project={testProject.project}
resourceManagementProps={fakeResourceManagementProps}
resourceName=""
onChange={action('on change')}
/>
<Text size="sub-title">Image selected</Text>
<CompactResourceSelectorWithThumbnail
id="default"
resourceKind="image"
project={testProject.project}
resourceManagementProps={fakeResourceManagementProps}
resourceName="icon128.png"
onChange={action('on change')}
/>
<Text size="sub-title">With label</Text>
<CompactResourceSelectorWithThumbnail
id="default"
resourceKind="image"
project={testProject.project}
resourceManagementProps={fakeResourceManagementProps}
resourceName="icon128.png"
onChange={action('on change')}
label="Choose an image"
/>
<Text size="sub-title">With description</Text>
<CompactResourceSelectorWithThumbnail
resourceKind="image"
project={testProject.project}
resourceManagementProps={fakeResourceManagementProps}
resourceName="icon128.png"
onChange={action('on change')}
markdownDescription="This is a description"
/>
<Text size="sub-title">With multiple external editors</Text>
<CompactResourceSelectorWithThumbnail
resourceKind="image"
project={testProject.project}
resourceManagementProps={{
getStorageProvider: () => emptyStorageProvider,
onFetchNewlyAddedResources: async () => {},
resourceSources: [],
onChooseResource: () => Promise.reject('Unimplemented'),
resourceExternalEditors: [
...fakeResourceExternalEditors,
{
name: 'fake-image-editor-2',
createDisplayName: 'Create with Super Image Editor 2',
editDisplayName: 'Edit with Super Image Editor 2',
kind: 'image',
edit: async options => {
console.log(
'Open the image editor with these options:',
options
);
return null;
},
},
],
getStorageProviderResourceOperations: () => null,
canInstallPrivateAsset: () => false,
}}
resourceName="icon128.png"
onChange={action('on change')}
/>
<Text size="sub-title">Not existing</Text>
<CompactResourceSelectorWithThumbnail
resourceKind="image"
project={testProject.project}
resourceManagementProps={fakeResourceManagementProps}
resourceName="resource-that-does-not-exists-in-the-project"
onChange={action('on change')}
/>
<Text size="sub-title">Audio</Text>
<CompactResourceSelectorWithThumbnail
resourceKind="audio"
project={testProject.project}
resourceManagementProps={fakeResourceManagementProps}
resourceName="fake-audio1.mp3"
onChange={action('on change')}
/>
<Text size="sub-title">Font</Text>
<CompactResourceSelectorWithThumbnail
resourceKind="font"
project={testProject.project}
resourceManagementProps={fakeResourceManagementProps}
resourceName="font.otf"
onChange={action('on change')}
/>
</ColumnStackLayout>
</ElementHighlighterProvider>
);
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
// @flow
import * as React from 'react';

import muiDecorator from '../../ThemeDecorator';
import paperDecorator from '../../PaperDecorator';

import { CompactColorField } from '../../../UI/CompactColorField';
import { ColumnStackLayout } from '../../../UI/Layout';
import ElementHighlighterProvider from '../../ElementHighlighterProvider';
import Text from '../../../UI/Text';

export default {
title: 'UI Building Blocks/CompactColorField',
component: CompactColorField,
decorators: [paperDecorator, muiDecorator],
};

export const Default = () => {
const [value, setValue] = React.useState<string>('00;00;255');
const [value2, setValue2] = React.useState<string>('00;255;00');
const [value3, setValue3] = React.useState<string>('255;00;00');
const [value4, setValue4] = React.useState<string>('255;255;00');
return (
<ElementHighlighterProvider
elements={[{ label: 'Default', id: 'default' }]}
>
<ColumnStackLayout expand>
<Text size="sub-title">Default</Text>
<CompactColorField
color={value}
onChange={setValue}
id="default"
disableAlpha={true}
/>
<Text size="sub-title">Disabled</Text>
<CompactColorField
color={value2}
onChange={setValue2}
disableAlpha={true}
disabled
id="disabled"
/>
<Text size="sub-title">With placeholder</Text>
<CompactColorField
color={value3}
onChange={setValue3}
disableAlpha={true}
placeholder="With placeholder"
id="placeholder"
/>
<Text size="sub-title">errored</Text>
<CompactColorField
color={value4}
onChange={setValue4}
disableAlpha={true}
errored={true}
id="errored"
/>
</ColumnStackLayout>
</ElementHighlighterProvider>
);
};
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import CompactSelectField from '../../../UI/CompactSelectField';
import { ColumnStackLayout } from '../../../UI/Layout';
import Layers from '../../../UI/CustomSvgIcons/Layers';
import ElementHighlighterProvider from '../../ElementHighlighterProvider';
import Text from '../../../UI/Text';

export default {
title: 'UI Building Blocks/CompactSelectField',
Expand Down Expand Up @@ -36,25 +37,30 @@ export const Default = () => {
]}
>
<ColumnStackLayout expand>
<Text size="block-title">Without icon</Text>
<CompactSelectField value={value} onChange={setValue} id="without-icon">
{options}
</CompactSelectField>
<Text size="sub-title">Errored</Text>
<CompactSelectField value={value1} onChange={setValue1} errored>
{options}
</CompactSelectField>
<Text size="sub-title">With empty option</Text>
<CompactSelectField value={value2} onChange={setValue2}>
{[
<option style={{ display: 'none' }}>Select an option</option>,
...options,
]}
</CompactSelectField>
<Text size="sub-title">Disabled</Text>
<CompactSelectField
disabled
value={'disabled field'}
onChange={() => {}}
>
{options}
</CompactSelectField>
<Text size="block-title">With icon</Text>
<CompactSelectField
value={value3}
onChange={setValue3}
Expand All @@ -64,6 +70,7 @@ export const Default = () => {
>
{options}
</CompactSelectField>
<Text size="sub-title">errored</Text>
<CompactSelectField
value={value4}
onChange={setValue4}
Expand All @@ -73,6 +80,7 @@ export const Default = () => {
>
{options}
</CompactSelectField>
<Text size="sub-title">With empty option</Text>
<CompactSelectField
value={value5}
onChange={setValue5}
Expand All @@ -84,6 +92,7 @@ export const Default = () => {
...options,
]}
</CompactSelectField>
<Text size="sub-title">Disabled</Text>
<CompactSelectField
disabled
value={'disabled field'}
Expand Down
Loading

0 comments on commit 95ba735

Please sign in to comment.