
* Update changelog with file attributes * Add file type attribute * Update attribute properties form * Update translation messages with file upload * Create generic attributes component (#832) * Create generic Attributes component * Add story for Attributes component * Remove deprecated attribute value type field from queries * Update test snapshots of attributes component * Add file upload field to atributes (#888) * Add story for Attributes component * Update test snapshots of attributes component * Create file upload field in attributes * Update upload file input data-test * Update storybook test snapshots of attributes * Add dedicated input props to file field * Run Cypress using custom API * Add missing error handling in file upload field Co-authored-by: Krzysztof Wolski <krzysztof.k.wolski@gmail.com> * Add file attribute upload to page attributes (#894) * Support upload file attribute for pages * Update after review * Add file attribute upload to variant attributes (#892) * Support upload file attribute for variants * Update after review * Refactor attribute values errors merging * Update after review * Add file attribute upload to product attributes (#826) * Support upload file attribute for products * Update after review * Refactor attribute values errors merging * Refactor product attribute value delete handling * Fix deleting file in file upload field * Fix delete attribute values errors handling * Add link to file upload field (#898) * Update file attributes updates (#899) * Update file attributes updates * Refactor file uploads handling * Move attributes utils to attributes directory * Fix product channel listing updates * Clear file field value if file is not passed as prop * Delete attribute values before update (#908) * Delete file attributes after file update * Triggr CI * Show skeleton in file upload field during loading Co-authored-by: Krzysztof Wolski <krzysztof.k.wolski@gmail.com>
68 lines
1.7 KiB
TypeScript
68 lines
1.7 KiB
TypeScript
import CardDecorator from "@saleor/storybook/CardDecorator";
|
|
import Decorator from "@saleor/storybook/Decorator";
|
|
import { storiesOf } from "@storybook/react";
|
|
import React, { useState } from "react";
|
|
|
|
import FileUploadField, { FileUploadFieldProps } from "./FileUploadField";
|
|
import * as fixtures from "./fixtures";
|
|
|
|
const props: FileUploadFieldProps = {
|
|
disabled: false,
|
|
file: { label: undefined, value: undefined },
|
|
inputProps: {
|
|
name: "country",
|
|
placeholder: "Select country"
|
|
},
|
|
loading: false,
|
|
onFileDelete: () => undefined,
|
|
onFileUpload: () => undefined
|
|
};
|
|
|
|
const InteractiveStory: React.FC = () => {
|
|
const [file, setFile] = useState<File>();
|
|
|
|
return (
|
|
<FileUploadField
|
|
disabled={false}
|
|
loading={false}
|
|
file={{
|
|
label: file?.name,
|
|
value: file?.name
|
|
}}
|
|
onFileUpload={file => setFile(file)}
|
|
onFileDelete={() => setFile(null)}
|
|
/>
|
|
);
|
|
};
|
|
|
|
storiesOf("Generics / File upload field", module)
|
|
.addDecorator(CardDecorator)
|
|
.addDecorator(Decorator)
|
|
.add("default", () => <FileUploadField {...props} />)
|
|
.add("with ready to upload file", () => (
|
|
<FileUploadField
|
|
{...props}
|
|
file={{
|
|
label: "some_file.png",
|
|
value: "some_file.png"
|
|
}}
|
|
/>
|
|
))
|
|
.add("with uploaded file", () => (
|
|
<FileUploadField
|
|
{...props}
|
|
file={{
|
|
file: fixtures.UPLOADED_FILE,
|
|
label: "some_file_with_link.png",
|
|
value: "some_file_with_link.png"
|
|
}}
|
|
/>
|
|
))
|
|
.add("with error", () => (
|
|
<FileUploadField
|
|
{...props}
|
|
error={true}
|
|
helperText="Something went wrong"
|
|
/>
|
|
))
|
|
.add("interactive", () => <InteractiveStory />);
|