chore: Removes common storybook (#14418)

This commit is contained in:
Michael S. Molina 2021-05-05 13:53:14 -03:00 committed by GitHub
parent b030c9801c
commit 7182a1b390
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 219 additions and 136 deletions

View File

@ -1,134 +0,0 @@
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import React, { useState, useRef, useCallback } from 'react';
import { action } from '@storybook/addon-actions';
import { withKnobs } from '@storybook/addon-knobs';
import { CronPicker, CronError } from 'src/components/CronPicker';
import Modal from 'src/components/Modal';
import InfoTooltip from 'src/components/InfoTooltip';
import { Input, Divider } from '.';
export default {
title: 'Common components',
decorators: [withKnobs],
};
export const StyledModal = () => (
<Modal
disablePrimaryButton={false}
onHandledPrimaryAction={action('Primary action')}
primaryButtonName="Danger"
primaryButtonType="danger"
show
onHide={action('hidden')}
title="I'm a modal!"
>
<div>hi!</div>
</Modal>
);
export const StyledInfoTooltip = (args: any) => {
const styles = {
padding: '100px 0 0 200px',
};
return (
<div style={styles}>
<InfoTooltip tooltip="This is the text that will display!" {...args} />
</div>
);
};
StyledInfoTooltip.args = {
placement: 'right',
trigger: 'hover',
};
StyledInfoTooltip.argTypes = {
placement: {
name: 'Placement',
control: {
type: 'select',
options: [
'bottom',
'left',
'right',
'top',
'topLeft',
'topRight',
'bottomLeft',
'bottomRight',
'leftTop',
'leftBottom',
'rightTop',
'rightBottom',
],
},
},
trigger: {
name: 'Trigger',
control: {
type: 'select',
options: ['hover', 'click'],
},
},
};
export function StyledCronPicker() {
// @ts-ignore
const inputRef = useRef<Input>(null);
const defaultValue = '30 5 * * 1,6';
const [value, setValue] = useState(defaultValue);
const customSetValue = useCallback(
(newValue: string) => {
setValue(newValue);
inputRef.current?.setValue(newValue);
},
[inputRef],
);
const [error, onError] = useState<CronError>();
return (
<div>
<Input
ref={inputRef}
onBlur={event => {
setValue(event.target.value);
}}
onPressEnter={() => {
setValue(inputRef.current?.input.value || '');
}}
/>
<Divider />
<CronPicker
clearButton={false}
value={value}
setValue={customSetValue}
onError={onError}
/>
<p style={{ marginTop: 20 }}>
Error: {error ? error.description : 'undefined'}
</p>
</div>
);
}

View File

@ -0,0 +1,88 @@
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import React, { useState, useRef, useCallback } from 'react';
import { Input, Divider } from 'src/common/components';
import { CronPicker, CronError, CronProps } from '.';
export default {
title: 'CronPicker',
component: CronPicker,
};
export const InteractiveCronPicker = (props: CronProps) => {
// @ts-ignore
const inputRef = useRef<Input>(null);
const [value, setValue] = useState(props.value);
const customSetValue = useCallback(
(newValue: string) => {
setValue(newValue);
inputRef.current?.setValue(newValue);
},
[inputRef],
);
const [error, onError] = useState<CronError>();
return (
<div>
<Input
ref={inputRef}
onBlur={event => {
setValue(event.target.value);
}}
onChange={e => setValue(e.target.value || '')}
/>
<Divider />
<CronPicker
{...props}
value={value}
setValue={customSetValue}
onError={onError}
/>
{error && <p style={{ marginTop: 20 }}>Error: {error.description}</p>}
</div>
);
};
InteractiveCronPicker.args = {
clearButton: false,
disabled: false,
readOnly: false,
};
InteractiveCronPicker.argTypes = {
value: {
defaultValue: '30 5 * * *',
table: {
disable: true,
},
},
theme: {
table: {
disable: true,
},
},
};
InteractiveCronPicker.story = {
parameters: {
knobs: {
disable: true,
},
},
};

View File

@ -0,0 +1,79 @@
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import React from 'react';
import InfoTooltip, { InfoTooltipProps } from 'src/components/InfoTooltip';
export default {
title: 'InfoTooltip',
component: InfoTooltip,
};
export const InteractiveInfoTooltip = (props: InfoTooltipProps) => {
const styles = {
padding: '100px 0 0 200px',
};
return (
<div style={styles}>
<InfoTooltip {...props} />
</div>
);
};
InteractiveInfoTooltip.args = {
tooltip: 'This is the text that will display!',
};
InteractiveInfoTooltip.argTypes = {
placement: {
defaultValue: 'top',
control: {
type: 'select',
options: [
'bottom',
'left',
'right',
'top',
'topLeft',
'topRight',
'bottomLeft',
'bottomRight',
'leftTop',
'leftBottom',
'rightTop',
'rightBottom',
],
},
},
trigger: {
defaultValue: 'hover',
control: {
type: 'select',
options: ['hover', 'click'],
},
},
};
InteractiveInfoTooltip.story = {
parameters: {
knobs: {
disable: true,
},
},
};

View File

@ -22,7 +22,7 @@ import { styled } from '@superset-ui/core';
import { Tooltip } from 'src/components/Tooltip';
import Icon from 'src/components/Icon';
interface InfoTooltipProps {
export interface InfoTooltipProps {
className?: string;
tooltip: string;
placement?:

View File

@ -0,0 +1,50 @@
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import React from 'react';
import Modal, { ModalProps } from '.';
export default {
title: 'Modal',
component: Modal,
};
export const InteractiveModal = (props: ModalProps) => (
<Modal {...props}>Hi</Modal>
);
InteractiveModal.args = {
disablePrimaryButton: false,
primaryButtonName: 'Danger',
primaryButtonType: 'danger',
show: true,
title: "I'm a modal!",
};
InteractiveModal.argTypes = {
onHandledPrimaryAction: { action: 'onHandledPrimaryAction' },
onHide: { action: 'onHide' },
};
InteractiveModal.story = {
parameters: {
knobs: {
disable: true,
},
},
};

View File

@ -23,7 +23,7 @@ import { css } from '@emotion/react';
import { Modal as BaseModal } from 'src/common/components';
import Button from 'src/components/Button';
interface ModalProps {
export interface ModalProps {
className?: string;
children: React.ReactNode;
disablePrimaryButton?: boolean;