From 2eddf74e77b4c61eeec0cb9f888ab53c6c10b624 Mon Sep 17 00:00:00 2001 From: -l Date: Fri, 8 Nov 2024 14:14:47 +0100 Subject: [PATCH 01/16] add Value.Upload component --- .../forms/Value/SummaryList/Examples.tsx | 33 +- .../uilib/extensions/forms/Value/Upload.mdx | 26 + .../forms/Value/Upload/Examples.tsx | 443 ++++++++++++++++++ .../extensions/forms/Value/Upload/demos.mdx | 51 ++ .../extensions/forms/Value/Upload/info.mdx | 14 + .../forms/Value/Upload/properties.mdx | 20 + .../docs/uilib/extensions/forms/changelog.mdx | 4 + .../more-fields/Upload/info.mdx | 2 + .../components/upload/UploadFileListCell.tsx | 25 +- .../__tests__/UploadFileListCell.test.tsx | 34 +- .../extensions/forms/Value/Upload/Upload.tsx | 131 ++++++ .../forms/Value/Upload/UploadDocs.ts | 17 + .../__tests__/Upload.screenshot.test.ts | 31 ++ .../Value/Upload/__tests__/Upload.test.tsx | 403 ++++++++++++++++ ...upload-have-to-list-upload-inline.snap.png | Bin 0 -> 12239 bytes ...eupload-have-to-list-upload-value.snap.png | Bin 0 -> 24042 bytes ...ave-to-match-default-upload-value.snap.png | Bin 0 -> 8051 bytes .../extensions/forms/Value/Upload/index.ts | 2 + .../Value/Upload/stories/Upload.stories.tsx | 75 +++ .../src/extensions/forms/Value/index.ts | 1 + 20 files changed, 1290 insertions(+), 22 deletions(-) create mode 100644 packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/Value/Upload.mdx create mode 100644 packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/Value/Upload/Examples.tsx create mode 100644 packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/Value/Upload/demos.mdx create mode 100644 packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/Value/Upload/info.mdx create mode 100644 packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/Value/Upload/properties.mdx create mode 100644 packages/dnb-eufemia/src/extensions/forms/Value/Upload/Upload.tsx create mode 100644 packages/dnb-eufemia/src/extensions/forms/Value/Upload/UploadDocs.ts create mode 100644 packages/dnb-eufemia/src/extensions/forms/Value/Upload/__tests__/Upload.screenshot.test.ts create mode 100644 packages/dnb-eufemia/src/extensions/forms/Value/Upload/__tests__/Upload.test.tsx create mode 100644 packages/dnb-eufemia/src/extensions/forms/Value/Upload/__tests__/__image_snapshots__/valueupload-have-to-list-upload-inline.snap.png create mode 100644 packages/dnb-eufemia/src/extensions/forms/Value/Upload/__tests__/__image_snapshots__/valueupload-have-to-list-upload-value.snap.png create mode 100644 packages/dnb-eufemia/src/extensions/forms/Value/Upload/__tests__/__image_snapshots__/valueupload-have-to-match-default-upload-value.snap.png create mode 100644 packages/dnb-eufemia/src/extensions/forms/Value/Upload/index.ts create mode 100644 packages/dnb-eufemia/src/extensions/forms/Value/Upload/stories/Upload.stories.tsx diff --git a/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/Value/SummaryList/Examples.tsx b/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/Value/SummaryList/Examples.tsx index 93f658babe3..b60f2c2af3d 100644 --- a/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/Value/SummaryList/Examples.tsx +++ b/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/Value/SummaryList/Examples.tsx @@ -2,6 +2,16 @@ import ComponentBox from '../../../../../../shared/tags/ComponentBox' import { Card } from '@dnb/eufemia/src' import { Field, Form, Value } from '@dnb/eufemia/src/extensions/forms' +function createMockFile(name: string, size: number, type: string) { + const file = new File([], name, { type }) + Object.defineProperty(file, 'size', { + get() { + return size + }, + }) + return file +} + export const DefaultLayout = () => { return ( @@ -132,15 +142,36 @@ export function InheritVisibility() { export function InheritLabel() { return ( - + + + diff --git a/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/Value/Upload.mdx b/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/Value/Upload.mdx new file mode 100644 index 00000000000..605c8dc47fa --- /dev/null +++ b/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/Value/Upload.mdx @@ -0,0 +1,26 @@ +--- +title: 'Upload' +description: '`Value.Upload` is a wrapper component for displaying Upload files, with user experience tailored for an array of files.' +componentType: 'feature-value' +showTabs: true +tabs: + - title: Info + key: '/info' + - title: Demos + key: '/demos' + - title: Properties + key: '/properties' +breadcrumb: + - text: Forms + href: /uilib/extensions/forms/ + - text: Value + href: /uilib/extensions/forms/Value/ + - text: Upload + href: /uilib/extensions/forms/Value/Upload/ +--- + +import Info from 'Docs/uilib/extensions/forms/Value/Upload/info' +import Demos from 'Docs/uilib/extensions/forms/Value/Upload/demos' + + + diff --git a/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/Value/Upload/Examples.tsx b/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/Value/Upload/Examples.tsx new file mode 100644 index 00000000000..c020ed6b983 --- /dev/null +++ b/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/Value/Upload/Examples.tsx @@ -0,0 +1,443 @@ +import ComponentBox from '../../../../../../shared/tags/ComponentBox' +import { Form, Value, Field } from '@dnb/eufemia/src/extensions/forms' +import { Flex, Span } from '@dnb/eufemia/src' + +function createMockFile(name: string, size: number, type: string) { + const file = new File([], name, { type }) + Object.defineProperty(file, 'size', { + get() { + return size + }, + }) + return file +} + +export const Placeholder = () => { + return ( + + + + ) +} + +export const WithValue = () => { + return ( + + + + ) +} + +export const WithSize = () => { + return ( + + + + ) +} + +export const WithDownload = () => { + return ( + + + + ) +} + +export const WithCustomFormat = () => { + return ( + + + + + + ) +} + +export const FieldUploadSelectionPath = () => { + return ( + + + + + + + + + ) +} + +export const Label = () => { + return ( + + + + ) +} + +export const LabelAndValue = () => { + return ( + + + + ) +} + +export const Inline = () => { + return ( + + + This is before the component + + This is after the component + + + ) +} + +export const ListVariants = () => { + return ( + + + + + ) +} + +export const ListTypes = () => { + return ( + + + + + + + + + ) +} diff --git a/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/Value/Upload/demos.mdx b/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/Value/Upload/demos.mdx new file mode 100644 index 00000000000..845ea216ee0 --- /dev/null +++ b/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/Value/Upload/demos.mdx @@ -0,0 +1,51 @@ +--- +showTabs: true +--- + +import * as Examples from './Examples' + +## Demos + +### Placeholder + + + +### Value + + + +### With `displaySize` property + + + +### With `download` property + + + +### Custom format + + + +### Label + + + +### Label and value + + + +### Inline + + + +### List variants + + + +### List types + + + +### Field.Upload path + + diff --git a/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/Value/Upload/info.mdx b/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/Value/Upload/info.mdx new file mode 100644 index 00000000000..d6e65bea3da --- /dev/null +++ b/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/Value/Upload/info.mdx @@ -0,0 +1,14 @@ +--- +showTabs: true +--- + +## Description + +`Value.Upload` is a wrapper component for displaying Upload files, with user experience tailored for an array of files. + +There is a corresponding [Field.Upload](/uilib/extensions/forms/feature-fields/more-fields/Upload) component. + +```jsx +import { Value } from '@dnb/eufemia/extensions/forms' +render() +``` diff --git a/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/Value/Upload/properties.mdx b/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/Value/Upload/properties.mdx new file mode 100644 index 00000000000..a47f5154732 --- /dev/null +++ b/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/Value/Upload/properties.mdx @@ -0,0 +1,20 @@ +--- +showTabs: true +--- + +import { UploadProperties } from '@dnb/eufemia/src/extensions/forms/Value/Upload/UploadDocs' +import PropertiesTable from 'dnb-design-system-portal/src/shared/parts/PropertiesTable' +import { ValueProperties } from '@dnb/eufemia/src/extensions/forms/Value/ValueDocs' + +## Properties + +### Value-specific properties + + + +### General properties + + diff --git a/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/changelog.mdx b/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/changelog.mdx index fe03c63d274..85fbb373da0 100644 --- a/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/changelog.mdx +++ b/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/changelog.mdx @@ -11,6 +11,10 @@ breadcrumb: # Change log +## 10.55 + +- Added [Value.Upload](/uilib/extensions/forms/Value/Upload/) component to render a file value. + Change log for the Eufemia Forms extension. ## v10.54 diff --git a/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/feature-fields/more-fields/Upload/info.mdx b/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/feature-fields/more-fields/Upload/info.mdx index c2603ec6acc..58eeb8a6b50 100644 --- a/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/feature-fields/more-fields/Upload/info.mdx +++ b/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/feature-fields/more-fields/Upload/info.mdx @@ -11,6 +11,8 @@ import { Field } from '@dnb/eufemia/extensions/forms' render() ``` +There is a corresponding [Value.Upload](/uilib/extensions/forms/Value/Upload) component. + ## The data and file format The returned data is an array of objects containing a file object and a unique ID. The file object contains the file itself and some additional properties like an unique ID. diff --git a/packages/dnb-eufemia/src/components/upload/UploadFileListCell.tsx b/packages/dnb-eufemia/src/components/upload/UploadFileListCell.tsx index 34e55153e8c..45e1c8b2045 100644 --- a/packages/dnb-eufemia/src/components/upload/UploadFileListCell.tsx +++ b/packages/dnb-eufemia/src/components/upload/UploadFileListCell.tsx @@ -12,6 +12,9 @@ import ProgressIndicator from '../../components/progress-indicator' import { trash as TrashIcon, exclamation_medium as ExclamationIcon, + file_png_medium as png, + file_jpg_medium as jpg, + file_word_medium as doc, file_pdf_medium as pdf, file_xls_medium as xls, file_ppt_medium as ppt, @@ -27,8 +30,15 @@ import { getPreviousSibling, warn } from '../../shared/component-helper' import useUpload from './useUpload' import { getFileTypeFromExtension } from './UploadVerify' -const images = { +// Will be deprecated - and then default to only showing the file icon, +// and not file icon per extension type +export const fileExtensionImages = { + png, + jpg, pdf, + doc, + docx: doc, + odt: doc, xls, ppt, csv, @@ -142,14 +152,21 @@ const UploadFileListCell = ({ if (!iconFileType) { const mimeParts = file.type.split('/') - iconFileType = images[mimeParts[0]] || images[mimeParts[1]] + iconFileType = + fileExtensionImages[mimeParts[0]] || + fileExtensionImages[mimeParts[1]] } - if (!Object.prototype.hasOwnProperty.call(images, iconFileType)) { + if ( + !Object.prototype.hasOwnProperty.call( + fileExtensionImages, + iconFileType + ) + ) { iconFileType = 'file' } - return + return } function getTitle() { diff --git a/packages/dnb-eufemia/src/components/upload/__tests__/UploadFileListCell.test.tsx b/packages/dnb-eufemia/src/components/upload/__tests__/UploadFileListCell.test.tsx index 748f2ed2d19..45a0184f6ab 100644 --- a/packages/dnb-eufemia/src/components/upload/__tests__/UploadFileListCell.test.tsx +++ b/packages/dnb-eufemia/src/components/upload/__tests__/UploadFileListCell.test.tsx @@ -40,23 +40,6 @@ describe('UploadFileListCell', () => { expect(element.className).toMatch('dnb-upload__file-cell--warning') }) - it('renders the upload attribute', () => { - render( - - ) - - const element = document.querySelector('.dnb-upload__file-cell a') - - expect(element).toHaveAttribute('download', 'file.png') - }) - it('supports special file extensions', async () => { render( { expect(anchorElement.href).toMatch(mockUrl) }) + it('renders the download attribute', () => { + render( + + ) + + const element = document.querySelector('.dnb-upload__file-cell a') + + expect(element).toHaveAttribute('download', 'file.png') + }) + it('renders without the error style', () => { const fileName = 'file.png' diff --git a/packages/dnb-eufemia/src/extensions/forms/Value/Upload/Upload.tsx b/packages/dnb-eufemia/src/extensions/forms/Value/Upload/Upload.tsx new file mode 100644 index 00000000000..65bfb2592f0 --- /dev/null +++ b/packages/dnb-eufemia/src/extensions/forms/Value/Upload/Upload.tsx @@ -0,0 +1,131 @@ +import React, { useMemo } from 'react' +import classnames from 'classnames' +import { useValueProps } from '../../hooks' +import { ValueProps } from '../../types' +import ValueBlock from '../../ValueBlock' +import { Anchor } from '../../../../components' +import Icon from '../../../../components/Icon' +import Span from '../../../../elements/Span' +import ListFormat, { + ListFormatProps, +} from '../../../../components/list-format' +import type { + UploadFile, + UploadProps, +} from '../../../../components/upload/types' +import { fileExtensionImages } from '../../../../components/upload/UploadFileListCell' +import { + BYTES_IN_A_MEGA_BYTE, + getFileTypeFromExtension, +} from '../../../../components/upload/UploadVerify' +import { format } from '../../../../components/number-format/NumberUtils' + +export type Props = ValueProps> & + Omit & + Pick & { + displaySize?: boolean + } + +function Upload(props: Props) { + const { + path, + value, + format, + className, + variant = 'text', + listType, + download = false, + displaySize = false, + ...rest + } = useValueProps(props) + + const list = useMemo(() => { + const valueToUse = + value?.map((uploadFile, index) => { + const { file } = uploadFile || {} + if (!file) { + return + } + const imageUrl = URL.createObjectURL(file) + return ( + + {getIcon(file)} + + {file.name} + {getSize(displaySize, file.size)} + + + ) + }) || undefined + + if (typeof valueToUse === 'undefined') { + return undefined + } + + return ( + + ) + }, [path, value, variant, listType]) + + return ( + + {list} + + ) +} + +function getSize(displaySize: boolean, size: number) { + if (!displaySize || !size) { + return + } + // Converts from b (binary) to MB (decimal) + const sizeInMb = size / BYTES_IN_A_MEGA_BYTE + return ` (${format(sizeInMb, { + decimals: 0, + })} MB)` +} + +function getIcon(file: File) { + if (!file) { + return + } + const fileType = getFileTypeFromExtension(file) + + let iconFileType = fileType + + if (!iconFileType) { + const mimeParts = file.type.split('/') + iconFileType = + fileExtensionImages[mimeParts[0]] || + fileExtensionImages[mimeParts[1]] + } + + if ( + !Object.prototype.hasOwnProperty.call( + fileExtensionImages, + iconFileType + ) + ) { + iconFileType = 'file' + } + + return +} + +Upload._supportsSpacingProps = true +export default Upload diff --git a/packages/dnb-eufemia/src/extensions/forms/Value/Upload/UploadDocs.ts b/packages/dnb-eufemia/src/extensions/forms/Value/Upload/UploadDocs.ts new file mode 100644 index 00000000000..29ab7016fc9 --- /dev/null +++ b/packages/dnb-eufemia/src/extensions/forms/Value/Upload/UploadDocs.ts @@ -0,0 +1,17 @@ +import { PropertiesTableProps } from '../../../../shared/types' + +import { ListFormatProperties } from '../../../../components/list-format/ListFormatDocs' + +export const UploadProperties: PropertiesTableProps = { + download: { + doc: 'Causes the browser to treat all listed files as downloadable instead of opening them in a new browser tab or window. Defaults to `false`.', + type: 'boolean', + status: 'optional', + }, + displaySize: { + doc: 'Can be used to display the file size of the file. Defaults to `false`.', + type: 'boolean', + status: 'optional', + }, + ...ListFormatProperties, +} diff --git a/packages/dnb-eufemia/src/extensions/forms/Value/Upload/__tests__/Upload.screenshot.test.ts b/packages/dnb-eufemia/src/extensions/forms/Value/Upload/__tests__/Upload.screenshot.test.ts new file mode 100644 index 00000000000..b7b8d6a333d --- /dev/null +++ b/packages/dnb-eufemia/src/extensions/forms/Value/Upload/__tests__/Upload.screenshot.test.ts @@ -0,0 +1,31 @@ +import { + makeScreenshot, + setupPageScreenshot, +} from '../../../../../core/jest/jestSetupScreenshots' + +describe('Value.Upload', () => { + setupPageScreenshot({ + url: '/uilib/extensions/forms/Value/Upload/demos/', + }) + + it('have to match default upload value', async () => { + const screenshot = await makeScreenshot({ + selector: '[data-visual-test="upload-value-default"]', + }) + expect(screenshot).toMatchImageSnapshot() + }) + + it('have to list upload inline', async () => { + const screenshot = await makeScreenshot({ + selector: '[data-visual-test="upload-value-inline"]', + }) + expect(screenshot).toMatchImageSnapshot() + }) + + it('have to list upload value', async () => { + const screenshot = await makeScreenshot({ + selector: '[data-visual-test="upload-value-lists"]', + }) + expect(screenshot).toMatchImageSnapshot() + }) +}) diff --git a/packages/dnb-eufemia/src/extensions/forms/Value/Upload/__tests__/Upload.test.tsx b/packages/dnb-eufemia/src/extensions/forms/Value/Upload/__tests__/Upload.test.tsx new file mode 100644 index 00000000000..da1f60417e4 --- /dev/null +++ b/packages/dnb-eufemia/src/extensions/forms/Value/Upload/__tests__/Upload.test.tsx @@ -0,0 +1,403 @@ +import React from 'react' +import { screen, render } from '@testing-library/react' +import { Value, Form } from '../../..' +import { createMockFile } from '../../../../../components/upload/__tests__/testHelpers' + +global.URL.createObjectURL = jest.fn(() => 'url') + +const files = [ + { + file: createMockFile('foo.png', 1000000, 'image/png'), + exists: false, + id: '1', + }, + { + file: createMockFile('bar.png', 2000000, 'image/png'), + exists: false, + id: '2', + }, + { + file: createMockFile('baz.png', 3000000, 'image/png'), + exists: false, + id: '3', + }, +] + +describe('Value.Upload', () => { + it('renders file values', () => { + render() + + expect( + document.querySelector( + '.dnb-forms-value-upload .dnb-forms-value-block__content' + ) + ).toHaveTextContent('foo.png, bar.png og baz.png') + }) + + it('renders empty array of file values', () => { + render() + + expect( + document.querySelector( + '.dnb-forms-value-upload .dnb-forms-value-block__content' + ) + ).toHaveTextContent('') + }) + + it('renders array of falsy values', () => { + render() + + expect( + document.querySelector( + '.dnb-forms-value-upload .dnb-forms-value-block__content' + ) + ).toHaveTextContent('') + }) + + it('renders custom format', () => { + render( + + ) + + expect( + document.querySelector( + '.dnb-forms-value-upload .dnb-forms-value-block__content' + ) + ).toHaveTextContent('foo.png, bar.png eller baz.png') + }) + + it('should render different variants', () => { + const { rerender } = render( + + ) + + const valueBlock = document.querySelector( + '.dnb-forms-value-upload .dnb-forms-value-block__content' + ) + + const ol = valueBlock.querySelector('.dnb-ol') as HTMLOListElement + + expect(ol).toBeInTheDocument() + expect(ol.children.length).toBe(3) + + rerender() + + const ul = valueBlock.querySelector('.dnb-ul') as HTMLUListElement + + expect(ol).not.toBeInTheDocument() + expect(ul).toBeInTheDocument() + expect(ul.children.length).toBe(3) + + rerender() + + expect(ol).not.toBeInTheDocument() + expect(ul).not.toBeInTheDocument() + expect(valueBlock).toHaveTextContent('foo.png, bar.png og baz.png') + }) + + it('should render different `listTypes`', () => { + const { rerender } = render( + + ) + + const valueBlock = document.querySelector( + '.dnb-forms-value-upload .dnb-forms-value-block__content' + ) + + const list = (type: 'ol' | 'ul') => + valueBlock.querySelector(`.dnb-${type}`) + + expect(list('ol')).toHaveAttribute('type', 'a') + + rerender() + expect(list('ol')).toHaveAttribute('type', 'A') + + rerender() + expect(list('ol')).toHaveAttribute('type', 'i') + + rerender() + expect(list('ol')).toHaveAttribute('type', 'I') + + rerender() + expect(list('ul')).toHaveAttribute('type', 'circle') + + rerender() + expect(list('ul')).toHaveAttribute('type', 'disc') + + rerender() + expect(list('ul')).toHaveAttribute('type', 'square') + }) + + it('renders label when showEmpty is true', () => { + render() + expect(document.querySelector('.dnb-form-label')).toHaveTextContent( + 'My label' + ) + }) + + it('renders value and label', () => { + render() + expect( + document.querySelector( + '.dnb-forms-value-upload .dnb-forms-value-block__content' + ) + ).toHaveTextContent('foo.png, bar.png og baz.png') + + expect(document.querySelector('.dnb-form-label')).toHaveTextContent( + 'My selections' + ) + }) + + it('renders custom label', () => { + render() + expect(document.querySelector('.dnb-form-label')).toHaveTextContent( + 'Custom label' + ) + }) + + it('renders placeholder', () => { + render() + expect(screen.getByText('Please select a value')).toBeInTheDocument() + }) + + it('renders value from path', () => { + render( + + + + ) + + expect( + document.querySelector( + '.dnb-forms-value-upload .dnb-forms-value-block__content' + ) + ).toHaveTextContent('foo.png, bar.png og baz.png') + }) + + it('formats value in different locale', () => { + render( + + + + ) + + expect( + document.querySelector( + '.dnb-forms-value-upload .dnb-forms-value-block__content' + ) + ).toHaveTextContent('foo.png, bar.png and baz.png') + }) + + describe('Icons', () => { + it('renders the pdf icon', () => { + render( + + ) + + expect( + screen.queryByTestId('file pdf medium icon') + ).toBeInTheDocument() + }) + + it('renders the xls icon', () => { + render( + + ) + + expect( + screen.queryByTestId('file xls medium icon') + ).toBeInTheDocument() + }) + + it('renders the ppt icon', () => { + render( + + ) + + expect( + screen.queryByTestId('file ppt medium icon') + ).toBeInTheDocument() + }) + + it('renders the csv icon', () => { + render( + + ) + + expect( + screen.queryByTestId('file csv medium icon') + ).toBeInTheDocument() + }) + + it('renders the txt icon', () => { + render( + + ) + + expect( + screen.queryByTestId('file txt medium icon') + ).toBeInTheDocument() + }) + + it('renders the xml icon', () => { + render( + + ) + + expect( + screen.queryByTestId('file xml medium icon') + ).toBeInTheDocument() + }) + + it('renders the file icon as default', () => { + render( + + ) + + expect(screen.queryByTestId('file medium icon')).toBeInTheDocument() + }) + }) + + describe('File Anchor', () => { + it('renders the anchor', () => { + const fileName = 'file.png' + + render( + + ) + expect(screen.queryByText(fileName)).toBeInTheDocument() + }) + + it('renders the anchor href', () => { + const fileName = 'file.png' + const mockUrl = 'mock-url' + + global.URL.createObjectURL = jest.fn().mockReturnValueOnce(mockUrl) + + render( + + ) + const anchorElement = screen.queryByText( + fileName + ) as HTMLAnchorElement + expect(anchorElement.href).toMatch(mockUrl) + }) + + it('renders the download attribute', () => { + render( + + ) + + const element = document.querySelector('a') + + expect(element).toHaveAttribute('download', 'file.png') + }) + + it('renders the file size', () => { + const fileName = 'file.png' + + render( + + ) + + expect(screen.queryByText(`${fileName} (1 MB)`)).toBeInTheDocument() + }) + }) +}) diff --git a/packages/dnb-eufemia/src/extensions/forms/Value/Upload/__tests__/__image_snapshots__/valueupload-have-to-list-upload-inline.snap.png b/packages/dnb-eufemia/src/extensions/forms/Value/Upload/__tests__/__image_snapshots__/valueupload-have-to-list-upload-inline.snap.png new file mode 100644 index 0000000000000000000000000000000000000000..3cd85eb2135020fcc4eba85163bc9f5f0d47e57d GIT binary patch literal 12239 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 literal 0 HcmV?d00001 diff --git a/packages/dnb-eufemia/src/extensions/forms/Value/Upload/__tests__/__image_snapshots__/valueupload-have-to-list-upload-value.snap.png b/packages/dnb-eufemia/src/extensions/forms/Value/Upload/__tests__/__image_snapshots__/valueupload-have-to-list-upload-value.snap.png new file mode 100644 index 0000000000000000000000000000000000000000..d5d514f7f1f14b276bc190551e4cd82a71ba7b49 GIT binary patch literal 24042 zcmeFZRahL|*0zhgd+=bvC4t7haSMdt(pZ8t5IndgxO*T#f;)}71t$T5H=Y2&-JM;$ z%h$KR>p$2h|G_>2it16bX3eS^&ol1P;V;z{aIq+{5D*Y>l@!5Rz|VOE1Vld!G~hRE zX2)U#1bPG|u(bAjlf6vLT9T==v&vUY7*8WGFqBD1HwJ!1S@Y(6L1Mr_A$b|b`20Z* zkyK8qo1W+=0fE&^O9D9*>Q2l!CGcm0&@iFco+3W$l?MO1C12Aq_l}C0MNnnB%e0ru zZbh@(&O*z9@Z06>Ing^NmpAK(C!IX|ftfhaj>gzMr1ii~WHe9)#(JQbXJ=>1GlhAp zACDW5|F7Gi(Dviu{z9_hWJFX!d?6+>9^DzQUf0xjip!vOz<#M!_?>JtrGQZ)i`v40 z|HIAaMyvDP+5Kq2rFU<$JPYi8evww6`yt23C?ECi;cC=>AwSh*`+Uj!AX}ixX;og( zZkkiK$=S+d)+&{`Z7svGeXFANSXsBl-Coe|_I<;Iy6B%AyJ`6+M^frt?lZ<7P2t4P zSla4hXhfT{#J%76&ih`UI*p2*M76A^+Zknm?5iDkba6ks&)Mt)!JJ;a9dSjcegA7T z-S>K{(0IAsck%w_;DFZWuq!Xs>gf{+pZ5f_wEnkF7xT;aAgzo0+YQMU$BsLYkVnVe zd8BI$O_D$U8V(d+@)p)|wVn|i?!4c$(JXoU8{Z+-*xgA({46O$&@t=gsGn}};coe% z37fl-zO;qY5{5`YRvL^i0T%#Hu{!(ktmFQSN6?}V$K$6ox}3x)-j7OjXQXnU&b8xQ&~IFao=R(OWcgn6|LJDrf}GuMwD@pESOwWBalGx4EJ_ zWi|Cr;{ESWvK@}s1|51MNcU?-C9wCKbSq7yTV@O5C*6Q6Y5ejeKEc8g1z-F$&ij1! z?c(*>POx{b25<)Mk>ot?z|0iR*V?>#$8)paQh75~>G$XUv{151r`+I=2g~f#xEK91 z2o=9|oMGcTGlY=+#g=DnMU@+Aos(n~z>4j7*gIcv(YOFE40=EiZC&f^g$^}19C zHwKyhGrq8lah7Dk-E+Q_CWt5Eey>$j}898CD~#^NkL_=HmI2}l!vWU0@3<(0 zLDv37)z{AM_-JdVfv2G)*)!#af)^{1JZMtb!EwlnHDL%6)mIj;nxd74EYIR`BWQWO zksF_7x@yIRJE+58P{bHBuqt(8HjxX zKgLd1txO??U6I85KGka4o+@>m$kvd&AtV2Fuf3p*N(lHqTbPZ?-Kf?VnKOBC)HujU|B_?sBko=AWxY1Io!gbGXPO~SbiJRCIFFE5zm&& z7M9Stj+p|y6nLz^Q?W5Y#E*K2gJX*xAUsqcCEzgdF+VHbMW12LcC z#`&CG**3B#8AZ&A1>7@jOD7+9_le4%~y&gvN-^?7xAXIU_rl@6Q_odO0wm zV54!cA}twqXOAzZaWg-?d{}E9l-gsEIkoX(*B0B>z-&2iAhV-mP6-|_lYc5_ge%U`rZ0@2WgT& z>8e^~Ot2$yNQk{zn-D`prnrw-xYmxU1lz>#Nyxo9PTwd7Svk2-Z%2&qL6B zAzU1u6E%}+>i1-~7qL+_O5$cG`IMe_9$UP!NWj4GD*t|o89HbUmHY5s}~cVdIB22@1QlF^Twi}-{H z^G);*ANg`VTlA-)SD#7kcA<3=r2OLQY~^{L>E!dAIo)+*_F_E{Do)@HJ9=ZjtI?aMi7Xn!5g35qDmCJ&;HYCL0vJ+1GL>dA*q{g-uTt?U-S_9#}-nN(@;QKX09& zYug()V2O{m`;rkYgt`)jz^#mBptUTKJb8dqJS@h2ckm+r#ZO}|`%0yj8^&;-&lM!( z8H{Ssb~>K?X=5f4qN)3G-OP)mv^9DgmdPYe-5mSro4Zg&xeZ(6lQ4#}=_32okE;?% zv6~OLTIJ=GUrAW8eMj=}=SiWhx^$mRlEetBrQ&jHQ`q2*BUI^^ipGdSNw(EheMBVs zT%KiQ3CpDA-Ui4 z;(<(adGT~>;zh}F%Ka+cep1K%)Nn$Dhut7nVKua?KC*|rs<5(kTp;N(w?QZ3HMDEWQrajwE6oO9vQ+~-%qOtrJH!zACN zdv%Y&&ch*ettYhzw=L`nj-JTr>4<~uBbT{+XULYlDD%G zXj&J?2j0D{7lhNR5D2v%^--y)C2^);ZOX6($0QLvC2q*-bdIu>LMuIMyJ#lWBK9>E zu&L%xNUz)Z@yTJm*{vd)!JL?oBa$gpOeOL1d2x9RbV*ETG#Hm)m&5nqghj)>JkLZ# zp(GEOu3Q!qM!C64rfCf8@7SD)`8R5&bd$mxq-@zbP4`~9`kip!8DnD)wv={`y9TFp zy|dRYNYmHN=6=RlzOCay z<b6O*|dD z2E`7aChN;vE*n=Pyr264DNVUSiIPk8crP!!BJPd*K`5PjZtv1kF$wicmPqI*_SzKx zARcSN>w5!%vGx)*{kskKEh3}H@J6|STkW%g*o3yp^F7-PMbK*~7ux&MZ9Rr>%6xs` z&TWIVd+o}s3@uljencU~uTLW=kx72%7_dMxxZYe4T|skvHuk8Br<`L$RrcS@#nSd( zTz({rxj@5Zf8%`jzH47gL&N_!>WpUo5527v(|oypsvk%C;{l-y&tZccvv~oU&t#id zpQBQJF+20Q-!2W_T#0^ti84rrKMkgLQ$?XF6%ttSl3RPN?0EU04PEOu*b?67Qes|a zUpyLO$eljlHx?t*pUrMwiCD3_L4_1-YvhzSxUi_>Xqo4nifx4f>Y6zm$;?g?P&y26 zJpE=Wq-YQ>EVE({Nh`_t)oxQAv8U9UA_|r7a$Ztpg_fyS z9wxcbFLhc`cdG5|B zu5s26kpuVMOo3*24A$IL#vHX;JkarQwlm4KLqno#NeC>lLF0S=xK#COqPO@0_JV^+i%xBx}avr=Vz=2fug@aHR9sffS)%gPnbR z65l@OUB7D@m+u&r=P%7~Yja?*RZPB>KkAYVZ5DT57Po^{32Q{ODzhl2>G$u1_FH?(1t*ADu`xc41YEiJ=~X$JB&-nbb-k}|$jA!f>pxRaa4 zA+{ktHx%G9;?0HC>5;(r{0Nkzx;}vHBlLgWo4Y8r6~DE>t-nY%X)T?iXi;G5GF0{m zA>orqt~H=}-IHcNS3782?3<6x)B3Xxm$ZAStJt>wPc?>+muYM2@+<+;As5DZe0Z zbtm6KJj9AfgB7iU_kZk97N;F?%FBF{Y%I(_XeIU;`u5xe=eKdWVN1GP{Pr$`0WDpo zYd=jz{rIn&2rcO}+3|shW)`=Zt8L^-$$KkJPnlUv=sRtg6ZPGj(t?V0RP1r(t3U0vqa2+DJA|w77yUK^-QK@$N_3*Ii zud<=^-{K`g7^#+tr@n2yDZyNojKu}YkXi%e6Uyd+T z(^NjCSxO9Ij$)sFVO;rG^{u(=q-zV+OOcXcyq`JUxwaG#M*EPJ&;YZqW*S86?qBqN z_Q{Rrq@Y2mRWbrDaj(h($1TXD5HM<5^x5p{by$iXTm_GULA)L+RgSNS;6(m1$N`8G zC}T}=%(&$*B`xrb8BdSwS< zY5CKv+}g%uttn_Zq${P|V)wRsC(tN3TJ5@kVPu-UuDos|YhTcd+M#WmKMVAP6+|vC zNd5-${UdpKbgNgu2KiOK+}kPbrstsM*^>`AzZ=2{UWq+3FnkzJegdyPT~n8%>d^;T z6!v!_XVnhYmR6xt{V;P8hhgtfSRqp?WR`@wTqV16|L9D?=IP6grlE!65K~R=X3O~| z)AT4*bdtr|n746a(}ww4a$u|1N~EFZyzlHJ>s4`&@}x%x)9R#GEDjsLhZg!N?CEiZ|B}z=ORr-ip~*R3{Ji5%JWNmyRVD3% zBG1~|-GiG-%@piZ)RXkK*{Tg$KMru^q`gqXrMRJz_q=VisDV2ubTM94@N5ZJc_;V#xC zCs2#5gfT8;dG%jog;RVPKG(&Z&D2_?PH9db{tDH=Vm9Q;n6S_RJ`#<}}j(e_p& zQth1t>DJbov1(Qg_Jo-TC0lmNa={)>X zd-$F=|3)nd?lY^hOzqAI*;<#TZeMnQsQjS@V}#oVIK{?=nU<`&Al5_YHaUt70f|wo zrCX}U_Y!Z9{r7tkAgX!`Y+c92B;hjzF~)D@J9 z$W}`_XniX9L!8#6uEY>1P8^9dxZN&&k?vKkpyPoXZ*OfS`0cX>LCai!RF3DY;(lA_ zv@%fSAt!;iei6rE4m#818i645mt~Eb`nnMqw^m_g^S+6qDhrp|PQw7{9KEXLmCmTt z^6Gw=NtC#h*$VbX^j@BRloNQfbB3v$n5T6!|1Bog<;d+B!TvE?-j8CURoB#wYrkDI zECCz{tIHOddR_doYgm_3u}2;v0o}Pd!e1N%~?b}9j8JFU*q&RQK{W#2MlSZOnt;K>yDu13Uh|CKDxck%*8Q`{TOYQPK0 z5cjU9;{JN5KF+;Q>#R)DnVeTVd_}q@#+38k7R4(Ycdxy~0|r*J*Ha36GV=SfDAvV_ za#nrD9g$6$o$t!sZ3iu$kq~<7o2b>^tn8~4&k|-S);IZ$F*Ia=|0F&sUTk4# zFY+*XNka)59|wQ+ymsp|_CRI3MB<{@(t6n`PjZ_I{{hY|*kd^?`-$Z4Q*M9=PiIZn zIDk84$a0kW4{O&Dwl$s0PuXOU+!2*u1Vx>RnPeQ3* zGUzJqDgwlZ6r&u?zljgHhs8tmD!on4)|4$l>4XJ` z;<JcWdoe~)_NFqAIP z>z$$5>Ao0*>HuHqb@-PQv8rb>$FD~hm<_Q-s<6*1pYQm|$kmZS9I8{A6GoOs#?nYTwC~h$RvZ z_JmbAsrzCK!aN9bRsN<<$e?iqsxoP6rZZRVH3%=s3nJC2HL}ClC-q`&;!7zItv_#c zO`BQ{^TvbBI$lqFLw$i|7%7KHwTk|=heGwI(JALU|Ei|ErOBEqwE2Z5mqo6j()f)w zBMrGrs?(U#!j+cRv}&M;A-pZ5H&p-C98Qd*Ehgtm|e|iXCCpFmL9-Xs`0I zMkj}lw`*N!-tad=Br~%3*hbt)s3MvFt3na5CIB<(O*%1nyeXwVjC#vQM0DS^s*e!u z^iWz)$?gq=c(=;TTQiQYz$&To zNN*UD{Lzk4`82?_cr+p?^h~}u3ZV99B_Ah-lQKE48Q9@pGBk*J;U`}k`w_4?Hgmls z4soZVYd$~u2Md6^J3-U%aPJV6#@Au0O$4`IZOgfiZtfvw62lTuyEtynf_$xD#F8>H zDrzRh>WCfRgm(71ecgOY=40H)WMvm%ALZ&k2o%NEUb3%VX_8^F_|POjLAM_Jtto&5 ziwDUb$#%kiA{eC22bxQFXZ+S=$T&c@*TQapntkNMf=!R`VRo@BNdS0P-av~T*3s=D z`vq+|mSoJ)ryGQe2*gwyfHvv*g$UW^m+BAD>_>bT6K+tG{DwfUc=q9V%lOhLhmzmL zhE_}6!+!2V;3?Xa28puVP@Wyn?8VD{(eECA>R#Rw^#y_bea~0B(DZ|kzJT!2nTU91 z&p%d`Fs|S^V}4^bj6{ViHxB|iUq(2TDP!(-Bs%m9B0W=t{_Keq1KfE`HmlyuaqPi1 zs61gF97ou;!OG>3uMLb^53s%{L_2o9=w~1niS5N~%% zO#8c7q1AJWH@zA|b4nS8Z}A;=YRpv*_nG5^(z@5ZAmr10LumXXBCqi`jyd*>(gL~2 zO`;U2M8)6~ETE!U$yLmFRnGko1arv` z?#NC@Ku~T*tGlQ+AVL+LOv`@^3#eF_ga`1yo19?)`c_I#JB!=sTe!94iltDEHYAY}E23HJ zj0?465z$HqVrEpXVvSZgkB|?zV`lPIH7#rDKhxHS+luVX!!VA;vAFUHN2P>vHe~Tp zE4wP#_Nu`1tyYm#3<5t(-P9f`u8Z#Hv-*$7%t_w86qO^V&QGrxS5zTkTFCPK@u#kV z15QA1^h~-FZTw>HwU-$Ov!u5Afqpi7U}t)QPqaDk#;Dh%kds30{A!yREs$b)U|Vcm z9~bb{_A^kz!0K5LRP@`#E)K|1Ph^GAoq7Gg$c|Pc-gN8Gy&4Vrnc6=$2Q*$w))l1b z_JXkTIFW(Z<1^_DW9{Af_EBwIV-hI%qbYtA*VCGuRIo7#p7(zYc$13YmgeBfbgiq_ zuS&!oZTGE<4es^`^%+dySSxJMT;tJ?7r{FpxMCnTMp`=P$~cMM(j0iQl-mJMWrKQ| zKDE2CSiDLZnRS48E3qf@bO4e)jh-_`eQtjozXd=r7_Qh1VNQhGpdS1}jqEJVyA)*{ zz9Y11)Oqf4sqU;4XB%0}2T!0Z0#fQE6fQs{;=xftO5~2!)IZ8}9m`QfRY+&DTKlqx zR&ROn5WStnVz6bPbYABe&*Cg1`3DI)TRWz!)i7yG$J+cl@uk?%S7T=CSfpnq$vfJS zoO?^+R+h3ojvrh*$=LFJHP2Lx^GDy(xu@-Li6imcZ%hodM<5UjNOQ1H$-kg1f6Ms< z9!6~)!sqyS^m)Ub&6<5i$Vo#tdv2Nn;MT;SMG;Sk`0Vc+i$P~e?7G3BcBmdY_ zs&~0s!HvI%)iRo0BA&Cy$o@Vhn`&cSYh^>#vkdYs;mV8e=QiG+KHW~<;v&t~W$Bb( zJa1>2>&BPdZNEKM5%fB>Zs^E!$khW$9qq}cL?y{!+F06zC-lzM7_wGf#m^~2R;G#d zVl;6FAayC!dss?6?WTEgpD1SOF`7p{ZxK{0P&R~zk#3XK7V{+b>?vY~K+HZZ`{p0{ z{7ZHSJ%Rg8_Q=N3e0(KkXaf1v>Q$FpiN8%<=@E_M@TfYbzAsXNTo2giq9%GuD$|K! z(=%;S`v@gXm90br$TeY*ixTl`_3SaEP@MFf(KrJynY#BjIpZ93{<}-@D9>j;J*&1X z2`hDp6=L{vm^*s@m8_v$@_rM^e}Fvi%chS%L&1})Wswp@zJ0<^76?9D;m^?0?L4?m z_v4KGG!3N?h(Bu18GUiuEfhCgi_k5;e}gDe=e{SU%s!nyXQn}0sdQ~BjJ*RS^j|#M zYL3rYQ?P;Or@B%%LqqLn@9p88K?s z+?^+Wlx4_cDUNEL7QfP9s{E(e@kQ9=k#{f}>5C@6R)|M&VWG-(Q!Ykz)i_^=a%7BP z+G-8c1y0jzUdZZt7`K?afPN`RmFXec+zIVJs~R8pEEXVYC|dnsSXD%J&On`sgkk<^ z$V25b-@}jN=od)m?d7p`<1WpDf-`%WCer!FG)iDpOWMy5QwgfMc3RcR$&h4}!_VDEnsggO{MCP}d1#v-?`==x zGAJ;>8+kB7{w7GQ9go+lEE*80*v9noU#m&Yvl1Q#EB8{FJBw@?d_hhJ}fntsb*O{h5zY8e&S~8|jjW3x95(?xg zBjAX>-+b8+nzjV(>RT5(V;u_>?^WHEENRf=4HGeA+}73^QfQ_!LHX8yIdI+{pe@^p zXPElr#R7>q>+cItZopnMD)s`bH*(P{UOk*@JMa6cKt1F}GZS4A!9K{@e6;yD{{SKD zWf8xRQv9&w4Tawj9RXnz+?3I4O4t4y9o6pN#7O+~^?w&jiX6`VN3o=se7y@KGxq8F z@Wqt5H-~*sm@=VyYM$Oia$g&3+LO?C<7rErxiHz8?T*F!n zc&Fw1f2oq~*&nPBi(C36ieStV@;jeh9#HCJh8L(F(k(2;<(z*WNjdn{Uz_iaDqmJZ z;wsPk_NafciioAdm^e6N=@Hyp_(*O-0e%0>pqW2m6_MQACNJ#POyG3#+y7agc;|nA zIg{x+3iBd4f!XGng7M&O37zt7(~341SXYC=xH^^5v}BuK`y05)1COI<$-bzKH!G(L zslH>dDX?K`|0*7^WT4??l=m!voz?tXP7HC=iVZPZ|J zYTGJmGYo&wEUOR>jD_PBmGfV==V<>dj3;$d+vd&!1zz`eaI$N#iU#8L_S`gNe}4C!tWJF)6nLIZkO^eAzYK0Dt~z?Ru_*8Z{)tw zA;50uwn(TJAYjo^KBhT)V&8dPrGY8j#b~qIQ|*-#glVc!_heM95+hID*gr$CE(PhMr#^cuDV+juk#2xO1rAOnRIWl zsbu{mr^I;Y2^Q=GZ)52{SH_|JuOf;KT3~Ye9Z&Ys$5G}I=@+T%Pye{i6sS=sI>P+G zU$yg8o6i$`@&B~f_~@Eo%N6vw%LrxSG;}}e6|aqd>XjsLtK~RPUr9`sWuQ?I@6hxR z3cR{0T(zrDfOu9BRCkq0^;ks#>(^9o1cG6Iaze%IyO(kvrcex-8^Y-sk4H2O7TD48 z<;gkW&U^^d^0TK>6VYuSm_^1 z?J^qbzsou65+it26|5%J7C(@M4*}_bu3pRX16lJ?wyZFV_KC$I1Iohr7ufFG|G(=$ zW*}mV?;(-pbYwgS#6d+nfC;Dd+I)JkU0T@;aE@qmZ_T_-$BQqPyesDcaB$&Is;LQR z-=OVsEm32kC!E;$>iCawrAgb6YR4mSl=XfE(*tf6`bZoz?~&gXJUo^r6sVoR;}!rf zy#0ucdz=glw!Bgo&i}En9J3JrIlvwuCHJfPXSZgT@l4y*F2 zKGxFs0eF3yg+9Ou?tdUwe|L9%=Hk8I^!AA6<;kM|!`(jcaDSKWf8Qj!o@TMIRhYe> z4zf4!!P&xhQ%&VI4l;NHu;TlL*?#QmhRZ%DYW?7qbkV)qMA7@pRpXjB!;g&s*ERgd zDz@JzZ4Q@L+x*dLZU)%vaJ2#@T-;JIQ4WE`e&nIta#>gdF^k%mv*aD!~^%b(G zD~xy8bt`r$`K^D6xbJS3Xct!x574WrnhM7pjEJ46UX+^N4J`t5u3s3Rmv*`n!BK(1 zKpH|v>v#E^er4=o86d>>OG+!8r%GO9`y2t-I-{a^u|;@D%YL)nFTt9H_mGx==V7YxAqa?d4Gy%Jy`*;k!(rML;O+_E8_s zTcsK=09omxK6`KFrv?pPG<4i?Z9bD1KLa`~MD<7{?k_Do zIuX%PHjb{oeZ*b_h0$5S$u1UEBOyLklZ~7q`j|HbLh7aPGzk>HSb7S$yp8pshSO{Q$%>j5JdjK;8 zbdX?P_YL96-2qeHKb$2l8YYz|nHQWVAz(Yn+KxWrx&G;GkhRR@F=QTS0|>SVXQv?i zR`~K{eb~k4!2Wb|%;EZUs~3Wd08Ug+W=H)+f9x4N%ox;VfTSL?dP(KjI+p1&BHY{0 zrC;3xw20i95{!w#u8t#l+A;34m4-jC_~xmRWhl^kT4q!|U0i^f$;Pp75JB^{5UBmD z5BY5;2WWt0J8v}KNrnuIFNu>d_Brb9+I|AsCe)JF5|jFH#ZUATLC8@x;Gq46TPUWe zn>`yUbFI{MG^t7pEzEQ`=q&I&iARbkj1bU8%a1UG}5DDP5~(1r}rYv*@u*L#=Si6cMsl>3>)HXjnMofhxMprEVER7EqbSH9w5SX!gn5XKxS5rQo} zoNxB;A@5;V7FYi5CpOlXCM7!M+kSUDriCa}ZWJ~v;m@-4sH=!WV_lQf>|(Har0#{z znTl0hXl8wGCVP3>FU_SAq)-UEW*M0QKc^P~TG?^$6_*al(@{NKbe|t?0~Te4$H9^` zm&;z=O!LX8q~vpWS{T6hU}D7ZK9RYW?|Rs4SVk-5$9cmJbK=`((m5`zY!@k-;2p_N z32wxgfu1@7jS-UboGgn>y=MY?B?I#OEU%G^#9pu330L%k3s^q*1bjGzvTMv-7D^S7 z3!{A(fGbYWz5f+RU;bvS^KkI^&-X=ml|?XWkVLonINh~XiXr}5-kV%J3SnnUJ~f=* z(tF*OeXK)QSw#Ur_Jl|UVRq)zS9%hz`g2>=RthB`+yL<7Uw;PCYx_`*NkwUDmku4W=l1O&*J zlwjvj&1fW$-b>qgm{TkPYdA`HCGpYIt#bf^|3wS5?W}wZ95u60+Iga}pSp*k9Pmy) zZhou5q7Gu;;3*8;g#?>AUUT} zb>C(xavL!ljUxT52ow@y?W#IJKs&~-W+)%;m4?Vx9^}Ch$Qw1VL3m%*KNJO`TCJ?0 z=TxB^z)gY0cK#(et79!eg+cRSu)r43bH;$K^9SS^vvXGj(N>dV-+B->HwKxkg)s*w@Bu74u|0<&7;r4B z_wUN=KK=ndU>04tsP^O>I2I0mj9WPjNcuR+j%r)jx`AUQ|L&@)ApQR|IKXV?VGldk zBa!v&Q<0GqUW(zvU;FmRxFFng)7=wmVoZqdA9=Mh= z>y62bcl7T!WbZr`_{5lZ(k7ko&2+)1=BAv)=UU0i^+S?v{r1VC%uvA=+I}|C&$cX$srao}~1Ys-!jiSt)&z0m}Dlh3^AqwJ{|cAO>a2-eM^M>tGrJ8H-M(9+$?GG+|yF69rLX6rSaYx5o&IG5aNh=pFzE%n^$>$^y z$c^ckSUf{|IFy!Sai+@eX}2zx|A>xH2Q%G1QYrhNyYYGU*L4QzmUEhq_@cWrv_ix+ z)4d+~_5@ri4w}xtI2CirFMJj0f=-x@`Qq0mJT!!e8O(U^o-xaYWw)xw?~cIT74ZvoBJe< z%PC9Ok-pa`owt>@av9kCF?Y4mr{2-a{~%WOvc`i>@_Sy?)a~Jcz{D8>cIyPo*i?1e zf~2=woK#;f>z}H`J!Ogh@qtw-S-t>y-bn6Pr^Jv&N#SNC?t0_W>U&VFZ86L6pfY(k zq-A9-(b%y#IVNS{DAQa3(W-jjyj98s08j(k&aoU$?54ms?8a}-vgh+v_~7*zasOc* z7eq*XLvVbpW&i;2N~FYyrQdY{qHI)+O(bL$fjaLefm}3V#5+wcV%RWQjd!>Ys7f*T zvz;#^q5A&OJDZTo&9U4|+K!*!j{bvP(aP8>O7|_(HvNlTS-<2gUXpPjMS=fxa+s-D z9PRrk{^GoAT%Wr$WuJ1ZeUt|Z7s&EuKthi=aFUM@TDCG7wo|8A_QlVrO}%?xld=Zf|C@);f9khYrtgqY zU5Z~9u$%ZL#XFA-KgU`+AX=P9r_f2M?V!Q#>Tr4e;-f&Sh7y?A0UDOjRDpJdrCklHR1X(Jtgi%-zSV*BSbB<2Kw zIu`s&XvX!~VONDpKWik^#sUlFzg!@Cn8srRg#Tn{UYQRb$Dm8fquHIE{e!<+b90%; z`J=TaH_0r~f$$T!P@e)9$J0v$1e#Be-wTkIs7=SMJGXi9$feXa%&38JixZYvCI0e) zYinyzsWMLT21=8(steP~0h(utJkAyaZnpE>A|#{wjoQ)D8xojt10;~D{(Y5UrKgkj z+4g*`Lh~)%R0t|EXg@}&-RL6+bnU7{u0+m34e6TW2$D7S5IKhjOy#D9zGl2*aPHhsMgeWt$*=Y`k!FBMgK^Jc z!%1uvp|s1*MkqrsfZpd?B?Db0;3nNj6wlmHS}jrre5~fg#gBQ z220AGn|POuu>wgzW8=$WeiA=Ax${SWWVRtl@6hc@Vp4e^Z&d;o^z#JdbTerOt}!If z3lJnzZ~mJgf$?Cwh`!{sUd?%{se%lO$ybxQ4e^0d7x#~m#OX2T^M zl0?1=VxcE2mkq^3#89FGI-L)~ZGXGIn3o6{{U2Pr@v`;*N* zrVn3&(WxwP`-11hsN)n{ExmpFN=6QUBQ~L!C6$x%Kl1dluE?sywH`=-6^wsSovM(D zwn?G7-59OBBgA4moU%s`zsi3^N|Zg^k8}TxbbmFh{!h}~J`|NIM&)mGye0C#==dfy zs*F>$*WW8&+Zx)9iZ42z3N3g|*@)Rce+lJ|a^Nll2zl%cJu0gSWU-C`9xjp6f}!N9 zvEi&|mKYssAJSHY$L6jbD*%=~|CtB-9Q{c36H#$A+QU4x0%HM~)pk?P2@X_Wgjc@s z;1Cil46P_!HKWOeO1-Er+*W$;mv8@ucAya5oNo3V**_8Z&_J&2i60do(Xo)AprrLc zp-0>#RI^%w>;sV2qw+<$6FWUxxOlmizML43Ilno@9?Qxj15YhKc&$h9s33ZH=hS+- z0No%Im2g%?|CsWJnbl^51p^_RD42IFq=Be91l`txgy=ws6<+1({vaS~Ieo~O0|VY8 zd197S7K{2Dh$@Yfy9lO!w2He~_35y`0a1e}mgiA9EzrgbHhRP4wS2;yS|{IZtDs`PNxfD5 zbVfU@zB?$o3v5P$h>H+fq6V7QyM~wM>o3aKepOsPw+1|vr$;Ba#kem zZR>crAhGY*CS&6vU%|aB#6ZO^DQ_QFExmE)Y-6vz&JG#2=sK<6r7#;54RR1W`SI&7 z5pX#Blt{Q$b*RW+_+sIg`_Bpq!@2EIrFhrxTn$Oe>_Ul7-!Fs#nCYF68`VnaM4`rL zk)KMwSh`RepaRIZ`pq;{SQ@`-gW7rtp+&toe!$n3cx;8|>eHBf5wWHwQ*jqAqfd8) z+!D=jynxK-G_L{^fZyb;&th-n)cRd zInu&Dn+(Z}}xLec3dmjM+0*{8*}p;Qe)C|ifZ!%gkc>S9oZvGJ>`r=Q$X zO*>xEcxP0{2P(^sF)6&d!PydzYxnlF967sC>>vc8tg(hKE!5h)r1O$hzXUju0nIkH zCM*6XfD>^Y_y;F)Bz{Hw9R;qVoO+dRSK+j54db))=#P4`I%K1jUjq$TnGfN7!iM{H zd|;f2IkN6;!%L)H#=7Lrp7Lif>RigWE?cg>4bpL-5~mmg;;a6OIqkNtD(JG#HYHzKjAKqFJzLX$@O4_anT<@473!D81Dgs{S*4k2^ZoqZ?~h^k+1XpLd-<#Gb_%>s;q>54DVY;#ayP}I-qRQnJynLw zv!TiKwG)*yBL^IBbq|#QJ1o!EqjQzxnsEp23b5>XSs7e;{MAQo4>~%7$zWHX@TRg% z3c8#5G>(d8n(ZAbXBe%(a1*vPrOj!by_L``LDN>W0o&1T|`L^o0LZjsgXD5k@Y3Oyi$y%5~KdK-&+aY)g^ph9$5U%8y7 zqXBCH-QS+8p8Fxijqi?dO$!Q-g8@ejV^irGel(O z&P>S{TD=u^oR;`slJMOncGa1`S7=5sH{|-L#3_(LoP{$hR;NYa{9Z**4oDKey07o0 zVr^ec7pA>@yH!AL*=9q8x@l}k^x!|)koxvGSvH#b3b#$(#fzJ%q2k@Y@*$hO1tofs zY@W3w4T#^&#`3G_jkQfGQl%km z9G}dHXtB;5AX|c@Ej2rjLt<&UxzZjmV^3!1Lccn(x21bp{HiM05lFw$z?qy!gC(A$ zqTb?|ga{=m-u%Me46rK(5p}IO(U(1)^|tTqJx!Y&xKp~N406N3^AjQgk1w&c%DLY5 zk3+%m^5;XLu$-R~Uhnt74Li>-<6VuLRRZ93h8@gno$UDIjXKtBEKhXmI$u1|W2@Cz zPnKn3Lc<#_$8;DdetR{975`<*KKx?JV%@#W?^H;&1_PRGs#7pKJvtza1&Wl;djxw( zHNrwW7Wo}~9suFHpUvoV_!jymd`s`qp|*VzZiek2hv;!;NRcI1m-#ET9!m1ZqGNa^ zw{M2O?u3SK)LD>#-`f}WJd;NKyM+Fi@O3t3^oR(LOC_5Xxn;#7&ivZS{gb+=l`i$D z%s+R);j)y0X!~UOk9N7)p?7a+Lm$f{c(;}>Znl8YIj20*DF)`wRq)AJr5o}PGkuR_ zr-J$>|B&7pB;>3d7ZloAz$GR~>3#F0Y+Kt9^(*ZHyfZwz5JCMbQSduAb-0Gh5wL({{i zxeAf@qc*H70|d|ywRDOT&llevaN8YXx#9f9pN$;@(2qnI6!kMS{aLQz zGgJf&t>6+n|C#=vzhi{W@l98}09{?)2PYZyAcBtvfoj&ePgKXH5qVQk$mW=lo1+D0 z@)I|`M;JrHnkY@D%lk~E!UNSzd2;*j1~IFv%q6PYdf*z?cjGYX35>UU?PdzOOt#)< zXiu@y@k5mll9dxf8?W^D{ejZ7mby%w<@tS3R*ulBJ4Zr1tcWrBB-q0LRE?)w<>D-N zSn{g;p27Eb^ZAUFdSn=XKsx$X!oBi6QJG7RH`o20p2mOJ%%+v+%e(u$diU3!nLy^d zR%HyVF|zxLAVK5f+e}ADn$B4UXbHPESJ~M75eX?91_#Ie>C3W#W8qne*f4vqYgi)P{lwvXM58>?y@Irw`3r`_Wb+>k$G7J~ zUF-5!fP)5{+h>;H6@mjaWHkj`+*J>e&)Y(TTXUgxJ`-2-LEO8Z6)gmc@}Mhc#f*mu zk7h3)ZLnz-Pu+w#4nLi!0?rZIhQL7}{`wAIj zIlx%<`&f1b!qk(vejR&Q{Yup2!qY_yCVhX zB9xz>Sy&Ya7(1{yaK`C-`}OQE?bml#5a5XSExXCtwp~DfJ{C?s0TtF+`9DXN{~Pd5 z(_KHMZ0oK&bbI~ZH@k2bXTAd{l!hk#&`+YSmMkA;wH4Ccy*g`UHK z#Ui`V%4r$Ze=Z>o@81p3>aL>Of~vWq4Wgd=Xy@JpAtuKqVew(o6JY6s$Nrmv= z=EP|ozi7&eb}@6km{>Zk&k)7I%6H9~+J7_A_|)%SSDA$)>W9;KO0M36A34aYzdz~*+43*7 z)Ku0(^7S#V3yi}OtjdsPMUC-D2VE3tO5XJ7rcu>7WDZ6_uyoPa=qBATU!Mp-3wUQ0 zgrw!z)V#G*X?E617O&79jUvqgi#YmrK-J$X^SSC52Pb)-vtn(&UmxQ(rP2q{ul6?< z9OQl{EG9zGjwK$(hZg*h?jiMX!xyosidz2({I2$O&!UgLxT{TOLcIF<*^t2E>NLBy z#R{7&JLpN|Zs47vg_XA^v*+lGGS4EPQr-Z{!PDxa1l-5HU+8ZU@)!EsT6D*Mpucw> z`{QvS*vJbx8mHBXH4W32c$_z+B^0SXwzPw4T5$eB95! z{f2yrEvD0(Slz)yCb~M6Rq*iXp+j@Xh7z8z@F@Wtj>FQuwYwx4zObRqb~7f06O#pO z*6b7u%DI4zK6%em6H7g!JCc}&V&S{~Vbm(FI}mu_wzN*3zPNN7Ow00OEs0O0vSbbu z4D4%$x(9an?o{a&*!6h3zAqi!uJ5xulnslh_}}T=Lq^#rcV^w%Xp;_ClZ#{VD;>JO zyecSjz9mbF%29wjAX{Bzj+{$RI_9^Gpuaia&U@;JMfqywi9IRa-rrK+v!Mu0ns++M z4|u2M4Ada_v;gSzrSX{X>7hH%GgQShPJ^X6<&Xln4kn@I&> za@e%YHg*)70B@&0r(Lrebz~wLy;PnvOV)a{q^6`YKxhqq48GtFOGRbuWbsmEv!UB? zzg_Uig=ddc>>b}&xvkm%tAeVEDy_lz)$zR}l#*O5w<_(bz{YUr%f~Eg=I%QmE)S_5 zl1P=Glm9N(PZb{PE1b!_(i`@`LGMD*ddhXn1i!_h&Gu4G zAw`xS+x!oOr8~3Zlq_HKf(LiFLy}b_FbNhP!P+Hj*5Z~@HLthkb@v6|<2!H|wLDBc zDGh5Dvk96{-5*{{8G2b0cK{;2VP<8E4ECr4)w4uJ&UW2YmPf?Ikl>ko08a6_(>K2J z1`kY7PSZ+#G~;w*#rDEY4D;+v9p#pAF-Lf>N4iE$ow>%fn|~$!Ps%{je-s_8>4cpP z`Jv;-ecSQhuf4j6kl73G#(;!_>;d?yY9rIKi%@>9`w1t>Ev<8$qoSwWP9ru|&!EjL)a=OsHO(&5E4-c`BB69SN5{g#sziF%d1r{}S(qp) z(5b7iGVBUUbtCen^_vHMSS3~X1k9xld$Q44=igXwHgwMLmJoE|>}j(eKi&Y#b9Ab; zmc<~nA-E&Yf8lXQS$bdH8T?@MOL%_*z9&^atK)#7_n}-NiR>tI)-Z=1Tq18M-n8qOJlfmyvhQ z-n7w$4N5Ai&JH|0*6edj=#Fm;`aWaOnzOtd`1Abg`;jZFRS0RV;-WJ1U9yRyqkPIE2$Z1_f8 z$Nsh4yE2jlZ8}S$liojG05BgWmygJwTT#3)IMyU;__3~MP3CXGbm)MpwsAx~rre70 zYSogsyx&hpaLQcGS{yx|8B8+deNOqJj&f_tnjhqh>@pJ`3`>|NdNKVS~NGxtC*Rh^7y=rh2O1uEUR>nV1m8Mpa-!(GRN;^al)ARInXn4Ry@so z!95DU9IN57{<}Qm>*j7pF literal 0 HcmV?d00001 diff --git a/packages/dnb-eufemia/src/extensions/forms/Value/Upload/__tests__/__image_snapshots__/valueupload-have-to-match-default-upload-value.snap.png b/packages/dnb-eufemia/src/extensions/forms/Value/Upload/__tests__/__image_snapshots__/valueupload-have-to-match-default-upload-value.snap.png new file mode 100644 index 0000000000000000000000000000000000000000..74789389807f6ae8e689d71e773d875498b43cd7 GIT binary patch literal 8051 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 Z9mH(TySz!a_qUm@rmU@0sbKx~zW`MFSoi<{ literal 0 HcmV?d00001 diff --git a/packages/dnb-eufemia/src/extensions/forms/Value/Upload/index.ts b/packages/dnb-eufemia/src/extensions/forms/Value/Upload/index.ts new file mode 100644 index 00000000000..c2369c59991 --- /dev/null +++ b/packages/dnb-eufemia/src/extensions/forms/Value/Upload/index.ts @@ -0,0 +1,2 @@ +export { default } from './Upload' +export * from './Upload' diff --git a/packages/dnb-eufemia/src/extensions/forms/Value/Upload/stories/Upload.stories.tsx b/packages/dnb-eufemia/src/extensions/forms/Value/Upload/stories/Upload.stories.tsx new file mode 100644 index 00000000000..fdbff7d665e --- /dev/null +++ b/packages/dnb-eufemia/src/extensions/forms/Value/Upload/stories/Upload.stories.tsx @@ -0,0 +1,75 @@ +import { Form, Value } from '../../..' +import { Card } from '../../../../../components' + +export default { + title: 'Eufemia/Extensions/Forms/Value/Upload', +} + +function createMockFile(name: string, size: number, type: string) { + const file = new File([], name, { type }) + Object.defineProperty(file, 'size', { + get() { + return size + }, + }) + return file +} + +export function Upload() { + return ( + + + label.toUpperCase()} + > + + + + + + + label.toUpperCase()} + > + + + + + + + label.toUpperCase()} + > + + + + + + + ) +} diff --git a/packages/dnb-eufemia/src/extensions/forms/Value/index.ts b/packages/dnb-eufemia/src/extensions/forms/Value/index.ts index 05e14cc75f4..bc35941251e 100644 --- a/packages/dnb-eufemia/src/extensions/forms/Value/index.ts +++ b/packages/dnb-eufemia/src/extensions/forms/Value/index.ts @@ -16,3 +16,4 @@ export { default as OrganizationNumber } from './OrganizationNumber' export { default as SelectCountry } from './SelectCountry' export { default as ArraySelection } from './ArraySelection' export { default as Selection } from './Selection' +export { default as Upload } from './Upload' From 6d8c4c69f51d4baf480b82bd366a324bd4cee759 Mon Sep 17 00:00:00 2001 From: Anders Date: Fri, 8 Nov 2024 14:19:00 +0100 Subject: [PATCH 02/16] Update packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/changelog.mdx --- .../src/docs/uilib/extensions/forms/changelog.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/changelog.mdx b/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/changelog.mdx index 85fbb373da0..566e85abe7f 100644 --- a/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/changelog.mdx +++ b/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/changelog.mdx @@ -13,7 +13,7 @@ breadcrumb: ## 10.55 -- Added [Value.Upload](/uilib/extensions/forms/Value/Upload/) component to render a file value. +- Added [Value.Upload](/uilib/extensions/forms/Value/Upload/) component to render file values. Change log for the Eufemia Forms extension. From f3128bae8c48399f028cd5dfd1c43596824764d0 Mon Sep 17 00:00:00 2001 From: -l Date: Fri, 8 Nov 2024 14:20:17 +0100 Subject: [PATCH 03/16] add Value.Upload component --- .../src/docs/uilib/extensions/forms/changelog.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/changelog.mdx b/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/changelog.mdx index 566e85abe7f..13ff4629205 100644 --- a/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/changelog.mdx +++ b/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/changelog.mdx @@ -11,12 +11,12 @@ breadcrumb: # Change log +Change log for the Eufemia Forms extension. + ## 10.55 - Added [Value.Upload](/uilib/extensions/forms/Value/Upload/) component to render file values. -Change log for the Eufemia Forms extension. - ## v10.54 - Deprecated Ajv `validationRule` in [FormError](/uilib/extensions/forms/Form/error-messages/info/#error-messages) and deprecated `errorMessages` keys like `pattern` in favor of Eufemia translation keys like `Field.errorPattern`. For a migration guide, take a look at [release notes for the future major release, v11](/uilib/about-the-lib/releases/eufemia/v11-info/#forms-error-handling). From 0a7c91c8a28156a437929f1ff63e98e2725f26fb Mon Sep 17 00:00:00 2001 From: Anders Date: Fri, 8 Nov 2024 14:20:59 +0100 Subject: [PATCH 04/16] Update packages/dnb-eufemia/src/components/upload/UploadFileListCell.tsx --- .../dnb-eufemia/src/components/upload/UploadFileListCell.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/dnb-eufemia/src/components/upload/UploadFileListCell.tsx b/packages/dnb-eufemia/src/components/upload/UploadFileListCell.tsx index 45e1c8b2045..6dbc6e1755b 100644 --- a/packages/dnb-eufemia/src/components/upload/UploadFileListCell.tsx +++ b/packages/dnb-eufemia/src/components/upload/UploadFileListCell.tsx @@ -31,7 +31,7 @@ import useUpload from './useUpload' import { getFileTypeFromExtension } from './UploadVerify' // Will be deprecated - and then default to only showing the file icon, -// and not file icon per extension type +// and not file icon per file extension type export const fileExtensionImages = { png, jpg, From f02681d9b5caa9e5b92cfec9d3e033607c4ca075 Mon Sep 17 00:00:00 2001 From: -l Date: Fri, 8 Nov 2024 14:23:42 +0100 Subject: [PATCH 05/16] removes value.upload from summarylist examples --- .../forms/Value/SummaryList/Examples.tsx | 33 +------------------ 1 file changed, 1 insertion(+), 32 deletions(-) diff --git a/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/Value/SummaryList/Examples.tsx b/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/Value/SummaryList/Examples.tsx index b60f2c2af3d..93f658babe3 100644 --- a/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/Value/SummaryList/Examples.tsx +++ b/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/Value/SummaryList/Examples.tsx @@ -2,16 +2,6 @@ import ComponentBox from '../../../../../../shared/tags/ComponentBox' import { Card } from '@dnb/eufemia/src' import { Field, Form, Value } from '@dnb/eufemia/src/extensions/forms' -function createMockFile(name: string, size: number, type: string) { - const file = new File([], name, { type }) - Object.defineProperty(file, 'size', { - get() { - return size - }, - }) - return file -} - export const DefaultLayout = () => { return ( @@ -142,36 +132,15 @@ export function InheritVisibility() { export function InheritLabel() { return ( - + - - From bc8b6236413569c36714d3e7f7a09ac7ab87e967 Mon Sep 17 00:00:00 2001 From: -l Date: Fri, 8 Nov 2024 14:25:42 +0100 Subject: [PATCH 06/16] import createMockFile in Examples.tsx --- .../src/docs/uilib/components/upload/Examples.tsx | 11 +---------- .../uilib/extensions/forms/Value/Upload/Examples.tsx | 10 +--------- .../feature-fields/more-fields/Upload/Examples.tsx | 11 +---------- 3 files changed, 3 insertions(+), 29 deletions(-) diff --git a/packages/dnb-design-system-portal/src/docs/uilib/components/upload/Examples.tsx b/packages/dnb-design-system-portal/src/docs/uilib/components/upload/Examples.tsx index 607ed271d2a..0eb2e7dd665 100644 --- a/packages/dnb-design-system-portal/src/docs/uilib/components/upload/Examples.tsx +++ b/packages/dnb-design-system-portal/src/docs/uilib/components/upload/Examples.tsx @@ -12,16 +12,7 @@ import { Section, Upload, } from '@dnb/eufemia/src' - -const createMockFile = (name: string, size: number, type: string) => { - const file = new File([], name, { type }) - Object.defineProperty(file, 'size', { - get() { - return size - }, - }) - return file -} +import { createMockFile } from '@dnb/eufemia/src/components/upload/__tests__/testHelpers' const useMockFiles = (setFiles, extend) => { React.useEffect(() => { diff --git a/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/Value/Upload/Examples.tsx b/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/Value/Upload/Examples.tsx index c020ed6b983..3ad884f3634 100644 --- a/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/Value/Upload/Examples.tsx +++ b/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/Value/Upload/Examples.tsx @@ -2,15 +2,7 @@ import ComponentBox from '../../../../../../shared/tags/ComponentBox' import { Form, Value, Field } from '@dnb/eufemia/src/extensions/forms' import { Flex, Span } from '@dnb/eufemia/src' -function createMockFile(name: string, size: number, type: string) { - const file = new File([], name, { type }) - Object.defineProperty(file, 'size', { - get() { - return size - }, - }) - return file -} +import { createMockFile } from '@dnb/eufemia/src/components/upload/__tests__/testHelpers' export const Placeholder = () => { return ( diff --git a/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/feature-fields/more-fields/Upload/Examples.tsx b/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/feature-fields/more-fields/Upload/Examples.tsx index 1d0f2e47528..3b0b3546033 100644 --- a/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/feature-fields/more-fields/Upload/Examples.tsx +++ b/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/feature-fields/more-fields/Upload/Examples.tsx @@ -1,6 +1,7 @@ import { Flex } from '@dnb/eufemia/src' import ComponentBox from '../../../../../../../shared/tags/ComponentBox' import { Field, Form } from '@dnb/eufemia/src/extensions/forms' +import { createMockFile } from '@dnb/eufemia/src/components/upload/__tests__/testHelpers' export const BasicUsage = () => { return ( @@ -62,16 +63,6 @@ export const Customized = () => { } export const WithPath = () => { - const createMockFile = (name: string, size: number, type: string) => { - const file = new File([], name, { type }) - Object.defineProperty(file, 'size', { - get() { - return size - }, - }) - return file - } - return ( Date: Fri, 8 Nov 2024 14:27:40 +0100 Subject: [PATCH 07/16] import createMockFile in Examples.tsx --- .../src/docs/uilib/extensions/forms/Value/Upload/Examples.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/Value/Upload/Examples.tsx b/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/Value/Upload/Examples.tsx index 3ad884f3634..c64cd6e5eb1 100644 --- a/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/Value/Upload/Examples.tsx +++ b/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/Value/Upload/Examples.tsx @@ -1,7 +1,6 @@ import ComponentBox from '../../../../../../shared/tags/ComponentBox' import { Form, Value, Field } from '@dnb/eufemia/src/extensions/forms' import { Flex, Span } from '@dnb/eufemia/src' - import { createMockFile } from '@dnb/eufemia/src/components/upload/__tests__/testHelpers' export const Placeholder = () => { From 68bd389d32b8b658c7a2e1c4727e51316d8fbd5a Mon Sep 17 00:00:00 2001 From: -l Date: Fri, 8 Nov 2024 14:32:50 +0100 Subject: [PATCH 08/16] update examples --- .../forms/Value/Upload/Examples.tsx | 24 ++----------------- 1 file changed, 2 insertions(+), 22 deletions(-) diff --git a/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/Value/Upload/Examples.tsx b/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/Value/Upload/Examples.tsx index c64cd6e5eb1..d9ebb2dc48f 100644 --- a/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/Value/Upload/Examples.tsx +++ b/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/Value/Upload/Examples.tsx @@ -30,11 +30,6 @@ export const WithValue = () => { exists: false, id: '2', }, - { - file: createMockFile('fileName-3.png', 3000000, 'image/png'), - exists: false, - id: '3', - }, ]} /> @@ -91,11 +86,6 @@ export const WithDownload = () => { exists: false, id: '2', }, - { - file: createMockFile('fileName-3.png', 3000000, 'image/png'), - exists: false, - id: '3', - }, ]} /> @@ -119,11 +109,6 @@ export const WithCustomFormat = () => { exists: false, id: '2', }, - { - file: createMockFile('fileName-3.png', 3000000, 'image/png'), - exists: false, - id: '3', - }, ], }} > @@ -200,11 +185,6 @@ export const LabelAndValue = () => { exists: false, id: '2', }, - { - file: createMockFile('fileName-3.png', 3000000, 'image/png'), - exists: false, - id: '3', - }, ]} /> @@ -219,7 +199,7 @@ export const Inline = () => { data-visual-test="upload-value-inline" > - This is before the component + This is before the component{' '} { }, ]} inline - /> + />{' '} This is after the component From 903fb87e58ebc3b6bb27047b861394dd2b82bc8d Mon Sep 17 00:00:00 2001 From: -l Date: Fri, 8 Nov 2024 14:35:58 +0100 Subject: [PATCH 09/16] update screenshot tests --- .../forms/Value/Upload/Examples.tsx | 2 +- .../__tests__/Upload.screenshot.test.ts | 7 +++++++ ...upload-have-to-list-upload-inline.snap.png | Bin 12239 -> 9993 bytes ...ave-to-match-default-upload-value.snap.png | Bin 8051 -> 5894 bytes ...e-to-match-upload-displaying-size.snap.png | Bin 0 -> 13191 bytes 5 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 packages/dnb-eufemia/src/extensions/forms/Value/Upload/__tests__/__image_snapshots__/valueupload-have-to-match-upload-displaying-size.snap.png diff --git a/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/Value/Upload/Examples.tsx b/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/Value/Upload/Examples.tsx index d9ebb2dc48f..fdd147b147f 100644 --- a/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/Value/Upload/Examples.tsx +++ b/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/Value/Upload/Examples.tsx @@ -41,7 +41,7 @@ export const WithSize = () => { { expect(screenshot).toMatchImageSnapshot() }) + it('have to match upload displaying size', async () => { + const screenshot = await makeScreenshot({ + selector: '[data-visual-test="upload-value-size"]', + }) + expect(screenshot).toMatchImageSnapshot() + }) + it('have to list upload inline', async () => { const screenshot = await makeScreenshot({ selector: '[data-visual-test="upload-value-inline"]', diff --git a/packages/dnb-eufemia/src/extensions/forms/Value/Upload/__tests__/__image_snapshots__/valueupload-have-to-list-upload-inline.snap.png b/packages/dnb-eufemia/src/extensions/forms/Value/Upload/__tests__/__image_snapshots__/valueupload-have-to-list-upload-inline.snap.png index 3cd85eb2135020fcc4eba85163bc9f5f0d47e57d..b2ddeebe3a86177056fd3c6cf774c3ec5198a762 100644 GIT binary patch literal 9993 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 literal 12239 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 diff --git a/packages/dnb-eufemia/src/extensions/forms/Value/Upload/__tests__/__image_snapshots__/valueupload-have-to-match-default-upload-value.snap.png b/packages/dnb-eufemia/src/extensions/forms/Value/Upload/__tests__/__image_snapshots__/valueupload-have-to-match-default-upload-value.snap.png index 74789389807f6ae8e689d71e773d875498b43cd7..11b559c4559e5911848fa2aec06b414d7ea1db38 100644 GIT binary patch literal 5894 zcmd6r!7#bx+MjAv~Kp3Qk?yeD# zp*y91eD6QvS1eOeDMo1kkhi=^%oqca~ zcfR6$F0O{A^Z-7FCnB#1@6lJFEd^~h7Aj}_==B9*!iCfqiVSP-!>2cXKWaif6Rj{ zxw`-4T>(YQ4bY2o{h785B z={|)k%{J||G>JNmW1J>RYNs!~ujbraU2(agEy?FLBZv4U0KBt}68VL_OmYAL)j5e! zvlVx?Ptt-%J6YX;*c?Z|2e*aB87duVy*zKQ`82r~P+uM$EJ;9d4OUV3q6x|(#l5G3 zR{r$H%_77X9S{uSPtNUd*ZUC*7l(bPnC+Rm?-f&aQ|7LdxZJtPkS zmx*<*u05P->On)fp_c=L&3m#^Z})zcxApSh?ldQ~UUWUl5$SGOU$>Ak9iP5m?GjtO-SK2QmKH~4rf&uDj-!ObCgF`#cUjohvI z-{!~`x&QXF*Hx-yTR*#*Xu?-gb>t8gGFUXeYq5a$AH4>D2g3-(9c|_+e${1nOU z>3X~Ca_QRaxx8f@g>Pv@A>%*J6L`DzeP^J0 zsIJSdLzgk9yd;N}8K5&)7;0LHHcszvh`plCl{Dn2IWcuMk-2u`zrNI;s-Tpfv+zw7 ztRB}t^+|t16TWpbWl=pTz5ok8o$Y(F7<${99hhp2F=zHihqN5)mlkiO$L_E{Va2#| zKX_%{gXs`os*&U`v!Y6U>c(1eQD~A%36UQ(77JRA;a24cx!kG8Ap}kQB1nYdgfU0Q zRNJTN7O|kK-`A%fLyUOf-UyP@1@T6mc}*nRM6~AmtaaxiL9T9A)cKJ@FVR(K{wE=L z;l|k8feh=YC9jV%o}0yb%M@ip?c{T5pM;`ZYmNATE$^$&)HvZu3*F_^L|J7`e=$h0 z-Sd^5FWTY=3tS&_XpL&RnT__O*;tO`PEE5!L1WIVZ@>pUD=9Q*TT?^pFMeXfNe+KI zZeH%qRYVZZW#lKs3#XbH^T4YOI}052cd8ZxNZbu#f$`1bmw8d!`{ng@7joCI!bR@{ zD*u^iT1Bkmg-FumPb#iyI?WfGd=dS2k#Df)B2_c|3r#{^x%wRYftJA&UHmIdlNAeW z9@$Ud#4TK19i3|5-qg*HYT-JcO`M?kxIMxY6zOGy8W#NKTxllTo18PFPG!_g{ADDT zWBUYbv;C&q2Gh9wKdC!@SVa`u_4T;`Z*Z2OGc*ZuZd5go{4bJqT(<6$ZKJitepEE= zyb9BL=ZK3B}Nm{do$R4z=s zd|kLxU(Z}?#v~ft7|hDp8Y!H&MJ~bd&-^VxJ?~z#t>|ALMjs0~yIao<`!W$tV|twp zCWoNF_4!3p@b|{6Lz=^ShMad@(3Z>H4&b6n!wsqtZAaV~+?^nPJi3IE+5I)5iu9S_ zFeU`;VZ6!d{M5x5Cd-}a9A}uSIGFs}m_uKMA}5s*?Q@nv)>0Ks71_nk0~e>So7^@H z1OJp&^BqGYADi*O={CnW*sEnP`&(`<>|eW27_lP)&#j|WTJWsJm#pxcs*Fn4X{sq9 zAtD}!ut2kxh&^Q6trpq+a!#T9Bw)=@gc38tTFb7CoX49i4S}{CcG?jhpb7dnwG^7b zk$pq>*lMo48tU_C#V>5_pnPX;PMfViDuq%hWByG4q8BDJB=2}S#_3yO)Kqt3q`gs8 zpiM_#QWGQ@G7^#?Z9}(V-vVl$tm=E?i@+AnsR#TtoYsDKW?tGls)^KjUYKaLvgcoz zq++bGViCGf#0qZ{Eq^`7cx!u9#q_mT5IXXzwL`U;yQk*2jQ`-)to z*tpOYvL^jcjIe1#U~_6(1_e4#e92`@_8cvXbc?nFpIfr+LEkRWkO3p(gAK2;zJQ4NG{}%rFZccLu#_%UO8m6GgEQYuGj7_Jh-E(;O6>BzAHKm zZ{+5^<;jae&BK3Y)4C!{F4Y4r&BB9IsS*QVg~h_%ulI>lJo(=TwfhpEY?y(2mqAyg zzlN+h@u~w)Vy`%-t$)9d%MeImdBnZ1D(RNKRq%Dh%g%>Epk*SVEtu zC&$Zd^#mt;m4b?q=$ zAyk(2iBB9zChFKxr)i1aC->W=E*Fqo^z3E}&E<`X)p5DW5Q4XIACltn&A-1?+FeJ$ z1e#Y=doj!A;Ibg6Ei>V>&k53_&=ge({lS~!@X^hH(*{vJdA7bjRV>_rH_RP{ez+aW zUs1_T17uEY?rJqx;cBM_eda&|em@$G=*oEC@c&t4&wF zXa?Vdg+t&}9zB(;rpF$ue8RnV?y4sq%6s3-wAa}|%WAF4sBQfI(V^FdP0ZGjka2yAbT>qO0>i(u4!Y9an@AxY0A*r0*x2rrbqTx@ehgm6|NSAGqj6!0h8)M*hW$Z(p`7g$RtLSE%9lFFYnHHaukr-8M*NWq@+P((sXrlEO7mThWI(&yFcuw+0BKB_6{V7px4fiNaZI%`v?*#SsK{KbRpeNDIIK3EXEAO1WR>TP=9`Y9Gb$B#X9rXsYeJtKW*<>Wn9q4 zqK7%AtL5mT;xzR}e%ME#WC!@*Kk4FV)nFa1zY23ss3&|C*P0=igE7X{?>?0WWOCDqM)Qt91LK&^=Xh$T5Ss*ts8X z7ajAz{rRwX$pIV`PPZ9)anZTvbQa5?Pf1Yi0+cnx^A88iT$^fi?r=J`oYSsKYqYtc z!qNGrb(1No^e)@eKg4uR^i@F38M4{r@FTa+S`n(YZwQQY?ASfx$zcpZlE-i*E7!l? z7=&8UT2*t>Jut9pOavsYo!g>U8kH>C;K7}5RB6=~sX7Kp=3^(l7x%G~C9oiS0bRyX;wI$zgG_4C%e= z(O5#8E-y-mm(|hMcX19n0SXA1N#)m6${)h~&j2D$GJsBBAuZ}HeBs*!jX2#@T2xK!(oA$ z@d!O2@$Ih$1$9kq&C~3BmxS=H3a4@#6aUrndR14C?jlX7I3a=fu_TI6*sM{qmwmsX zoe)syjLMExg@|cs5VM*k$9=2AtZUO`V9t+Hb|a1k}ck7q)M`ga~+&SS3q`_maU7 zuSvaS+9YK#U!@xKTXozQc@{w;B7$=kmw;bLwez;gQRQoBXEEfiW!R)}&XKQ1hX%Pg zJxr%eF+V-Ay60hGJ;z1ELuqwt&bs4c#XZa=-G3<|Ll=4`cpyO`mv61glo{^Y&3QeM zP-tB&{*{)pqG;1+W0pt?$XTZ~?+rmVL$}J&M>;ugN(gS)BDL=ZOk|VjVC%TB#hZ9Q zk4Fkn6aHPyo0L?J6gBv}SGr4Avfp;sOx@nv0Q~pLd5AB>p2H(YKe%3rU7Aqs>I-TV zmK-fJ*kv#{EiBHzWVPkKT+~qTCD1Nn;(N;4HjeOh_DHzU1872Beh~%sMj?fCmu~EE}B`3VRCu~N3)8p5vlkQdpcmv+~Yt_ zmC@P1xivIcffhwN?kvSCGDx>4pTAAu4`mM&M&ypdf8UUVQ@+~aJ!C}X1ctMxrJyBf z-B=~q6t18Px=l_YK8CvG-zSb*h|4ldaarURgUo#8h^Oj2K7@%HQSLd-Jo@ZMZr`H^ zIOHW`?6Ftb+fq+zSC4Fd4zm7BGJ(x4sGcGwjgaK#g1a*fT-n@h86X&*V+hMSp#5B-Lm275>O5VMPU72aql|LeF9b5U`>m6jz1nP9`xgL1{ z7o;7%@F10qCNBdY-7kuWyxCVQ*C&!bqN;}dp%4)?7jQJ0t;z(*fZ3v0hC7$^JC-w0 zkNopk&M#<`Sd!8FetxI+T|+np0QpH!v|nI4ObGW%z^chLCX|5&WIj< zbT8AK$7R);{r)YEB2h9DTE7`3KMRDWHMBahyX=062xoMC{w=Wj&-?Qxhb zIT1dXMAf=EKVV%-{m@jn?iQ^sVN7-^OzSODm3*@FxTh6{U3*kGq;MBp2_KI~<6Ti>3 zyru+2PV|P1mT=u2sF&%_ruVgC@GMdDzqoI5JvJ0P<1@*CZD0;HuUv&L@NRYvC(4RP z8aq|z3FpGb$b_0dw+wejMb1BlZ$^h*`uIMk2`z8|QNO^NrD#jk*!~z3j?v5V0qBIM zFdG>C4>r;qhAhRhBof14u6_t9`wxi5%S+x7)xwB;%g+Cp?AJS{YT<*q{_r0qMMd1v zQ%T4_qsMr6%$7&;4$7)T&AYGvhg|42vo@TAwYj^MA!4``D4n`?wz z1hX|TCy#G5>(yT~gt+aUpeND-#coZ z(LB>48m&u>_8thsGe zygv=;w|w`p$!(Zo#;yQ-|D*^eyu`WV|%)JuA*CO z2}?ai8cQ>>H)QPxtAYF5Ic7E8+5SDmUxV+?wsI@?e(JQfK4aLUrt>pbIL|scTiE|l zVP^4RXR07a)aNVU{D!ZqdDJmG?T7E9E9?317tq5{(Bfz~UW>s{y05X}m({ab- z8@$g;B|Q(j+G}##*lTLT!=`^vIHF!k;4ORElPzN(Rpx{KTB*K0vG1m(`DmunH{%`6 zmK&t&SMXQN{o>^}-hoS=k-wRfJGv}8!uI`s*NwHxdvCRF&sc1YrqvO>L|txxWShhH z=2?A~-b%ffvFvoz>F*koIZ{23W9w9=))6L@o|Im$E#mroX!im~i8+x3&_B!zJLrI8 z4_co_U}M3T&5E_r2DQLZ;nr+FOOM=Y2WEJkbF#=hSgn1<3wAtBI(j$xtd^)^&(!r&R8hdoT*cy%{FW#7dL{Ata(0D`*fOy-tMh~zlMoa zrQvJhpJ47kLU=fCUi0~Orx$-*b*r*iSOV(@m>u=~X?$fDfC_#|be1i>pp|jf3`%SO>IPr_+-JY8Kz+Bgnv!T}-iIzWpT+O`1_L-_s> z9w+O7(1`tLkh)w)(9qs&esD|i`6F03PWW{q_%6Pl+tM>@n<*y#Nal+u01tDCoqRz z@^eG~xpW(>XxhBe%zcI29ZgQ{6Hj!>EQexR3LJd8jUtAdd#UxtJe5Wl?O-St+KeTi zM^73337hSUE>d?`X25mmHgm^3Akk?*xZG+Z+@V3{6N?>e*Yw6>nA#pJ`GG1I3|@&h zJB_324_hq{jI9XP@m6_`SuxT`wMC~(R=bk|R7k zVide$nsi-R{#@7wCQGs|7)j`BHbqIf~|^!&mw2V>u0>r*VCOK{hY-s zHT|uxyGM20I+uTJ9l$oy3w4%4 z$~N7`>j)=jr3_&|xE+DXX9&|xErTCL%Pv)z_9mv;t@#pSz#r>1{fphgE{j)z`_bws zVB2%;taTi93+}OOZ2{PZx~ORnv;$yxLoI?odJH72NuLO5^Y~6Rb8)e@WUxbK0*2o) z36vF)f8ERtCS-fd%#3 zA-^0hLSfQiYA~P-L-46h;=@93Bl-Q&}LZCm{ zaWqShCq_Y}5hKb(!N23}CL{PxG^>__>bQ!RpX#7!CaatY>1o@8Z!IAQ1hHWB)^gyO zuzoK5-FSw-2vYC>&vsGyp)U^gYUQWsTcIR(-_zxqfZQq$DvfKVdKw=Y81Vr^zg>gS zA6V@=Ulaw2W4>&wQna;gahH}GQfdr58U{_3^1!LfxUv)qJc#96^z2T%)ksD(P=~V9 z`Xrit@_ZKDtkwmZun#?qU!DLCUReL(H`?y6J9!hy@#FjZZzg)V=f4WRg5`3VqC;>A z>2gp$Agx=?(sBINY<`=!F6A}PTf7|3zf@x8DfWS)|HRshi>~!2fK*#^*v6j+be=lT z{Pfb)7Fz*|!mfPIdq{Pfk4y(aEw9_@E4^Y4f!2 zdqN?YKAiypQrycaYL({bEa)uL#_o zcrci?Vj4S|5xZRiYjrKdik|jaBp(xVkGBItP#3f_Jz`NwD8c)iDn7IacX8tDK`J|a z)kZj?nBOFPPSs{>uiq+|Am@;ZI0}T4M*(|e+J0B=;?wi_Crv2^0o)tsdZOLX;gnby zNSepQz7Zf0;Kw0Rvn*d$SgnFm3JpAWw#glxBeOHXDycitd<+~7G%G;y zJ#=MTEy_wnSF+&Jnlo}p>AU|rlm?r%S9rg#X7n(6r+I<&e9%Oa1vb(8!6pko$*7x< z=NijcuSik;soir|%?3Pixr!2f+sM~>*SQdMck{I;GpdGJ!dQRO*?(45ug1tX2N7LR zJwZ^_**ZMD&jy;oK4LWW5_M>4$ zaR^GBZ?Exao7|U?7WCAV(AgOdRL~%61`v6gLCt%^qP>^gwEB0su(q>jpcBG|8^drQBVE8nVI2>(1JNY7E_C7=GT*Rwn* zX2)FWyq~x2dqa-YT-?M&U;$gvKnTi{+8TPjkcG%pJ^wu~Z1NCw8XkvB?*87xk z2m-Z@5^Q>pY~@rann&j#E4jL-!2~3%>BRSGZW}wSDcNdTuLvouS3f+;$^@dp3HqfkY{c;el~>FA z1{BYMx1Ia&rh|%@0e?}t*p!vH==S6{47}nvgZb5?Up3C<&j!*#E)!reLJNkmX|tE7 zr1tNspAMQAP5l5Tu@ZJ)=0OwWZ|bsXWNje$w0$0c$x;fO`Si@(6WCBDC=Ir%5(=@X&YA&(62YhWdJJ2rg-o z6Fl2qZwsWiBU1Wf{t2k9yMc=-cj)|Bw}zVe0EXC!8OlfE*5(76_VvJ(11kqGZqnN_SwvhdbC=1Jg!BhPQ?k#|C z_-EBj4gbB3r%>i2fvr#eDtCU+PhuI*(mq$J-bIC zUtyL&mTLQ@Cko^IkVtH+mbpNOKd)}}tBl@{4N0{F_!)}q{<5={nT zfK8HKs1h$rEMX7`>TjKlQR@(qW;eZ$O5>)lw|nbBBs>Qiz~h-@aKg6oP3F^y09tw2 z*5G{Xx`br1d%RKX$3A$v`0Rk8BNswu*#!#Qf+&2&aHPTQl-jT$ez)af4VVY2dotqi zZk}vBUEed-{&kU|0!6BdiDAy(t)C>eYP^1wJ0A#OABEQhJQM|U?CZ!XFxyWN^T9(O zkzNJFQRalJrTIL!Rj~K&W%h_V=Ngc`l_$QbY{p-n=+JxZHuKw5nuLWoJI1#d^55OdOX?u?l5ipX3N7#F3m|d%24Ek_lCj9sn!rfxZC0|kv-b9ASNJ6J797RozwK%x$IbK@u$2Q07+>+E zNJL*;M4X4*j;yDqtQ2J=ty2!8E4xzD#_#Kp7f0fxun(Qm98LZ#4zF_L=> zLqAq%Z}*RThn>FXva}q(($WPAB-yGz>%sN{dSc($spCiy@1pfhRs&wL1o0w8Ib5P$ zebN>>TG%q#kpr(0X7S`=BYOekx7u0M^n|Uy8~Ih)arPZxPQ>Cwhl%J_=Foz{#&Eyh zjF15U&^I`V(#&8Ecjk$AX!%=1Dy6UL%oB>eitI)F;|cj*&ZG=IA$b{11AQyEE4N88 zj?5!ujy7hGQ(D4 zI7{(vDk8$K#lkP}Ca{zA;tbFJjf^q34ritadWv({uj>QLm)Ed*vKMKGsp-GtSbqj_ z9~|Lr*CnX3R8Tz&;mJIkZ8>DRmtAX;f@gZ=mb35U-2v}SaBW$RYpB;;T<#7H1kP6q zvN6&K!W2Vb>@6>{zznsJ0m_3yAG5l}zbuWepk9)B3K-vSV(bNYX=`tQ_FeJXMne59 z8p>Hy`njcvXDNX3A1BoW$hd6uc{9H^ISGd;4V)8Oy6a#iwXqI%6hf&;G&n5$8dj|b z_#Ag6L$1N>3)i;p~KU?lG-i63qRTzjD=cH&Tk#t~?-C9jI9`*FP`=SbD;LFga z?My5OU?$HXYEAQ*>zUq$usp0kekt87r=5?V83NtoXWl6e8-UXPW zS0(tRZ*!V5xwSc)RurH{3SIQ8#rO{v1nU3ghw3Z!v5)`p%HVrmxy3O3n*ARH{9l}M zLpUE7ZJh1&d&6P%3(hPYA}35%nbI`;B1EePijYo@q#%76^5R8uhSUqX?d~Vl8A>47 z8;vxgJ60QYy?GT%mh&uWz1h%@3K+Y7-Ho4;%v#+F78V@tQ)B%0kGD-@?FGFV#*)}g z(xQ_ciq(5GexQ}@3JJjLt<5t4Upm@C0d3bU;17O zjI6-;42$Q150(p<8~q%~Yd1dczQTta_z`QQBU)5M_tg7g-RaT5(Fn!JG9{|9Rj$(O zs{~Em@zOOD&{H_KH!N8}g6{ieK=Yj~Zhv@pZ@w2G+V$HTPs0%9?G zUdi2>Dj{m|G-ZijS%%|>D&h1(jzg+?=9yaAvv+n;oK0x6XOL4Hmg{cLA4A%(T{Sx7 zS!y?NxxnT&z2Voq&KH!#UIJ#H^xNTq*D(^~t>B_xjsHW2B%Ae!Lf;a)UM2XDS8DF( zCcPH4sh+`I_=YrYs&q+&2)zxgR^GmeVW}R&ySCCLTBWdvWu^*k=szJLPY@BjulGcO z@g<y~!c{iaoR%bYA>8e}t$PBql1;&rQd3T(6jCbM~b zie}AQS3wyxkeb>-O6ZI5W>fQzL<|>9kx%%%JENjF1(V4AgD}0U2)VMbwaGJ+nR)RR zZOO2o6qT|;zf8)XtgFBys|uF`-E*AzFt$bsq};3yl5z9G2I$AqIuZ{jzeM}{Zw$G8 z9GIp7Yoi(?+sz7-pmEe;hN}Hficd>Q%c_f9xIc6<#l&EC;apqS`QhsHv98Epu^D0biNZN z0$+oV5<)T#Q}8kwS0SIsk{a=Oyp zbnC7O<|`>*d{AMZ$Www%&8th(8Nu!`G;xVLbeDatxNkkI(Qd$zYW`;NXUo%67U+epvu0M|GJsV#4*gMuzO zK&C>e;RC=#5u>erzwyG1V3B23;LNX3LHYX+zm8|Benou0sLyPjN?C*L z(_93Y(Vu9x3mCcYwG~||=1;3yj7{A3D$eYb+Ge%+M!x-46Y}c80l6d9bObJ$f~$Q! zG<&g&jg5Rjw22I{nQUbFqlQb;@7DOCdFPO;SU^3E$5%{w3RP_&()8h!C0=;|#(z#7 zho;>3%8On^e%XaQ>~m|&*zI;XH@!XkDuxPb;Wgv@6al=QF|i7WG_yp~9i44*CR_`_ zAZlmd9M<}=UwVu{=-;^#0^IBk7^P7w$x}(B@PgnOYJnae^EQzWh{4Tf=%Uz+cJ6eO zp2)BZXWy`Jl2A;{J4P+3Hv@5#UDd_EaZ@>WU2#zrNvdgT)`~_d1phQYA6r%FbKw#n zoiqGXU~vf!|CN_^AJ}6t6oh5JV7?_-qiKLO+RUl}hz{3G4h4hY#9zWUzz?-tr@5O8 zGjvNfM`0JvDMAY9qBz0lO@y@})li&|YfhpsbA!m$%_wkn*nm<&`k*+(u|WGSt)le; z^L>rlJM)j3&AgIv5jI5pImlQ%R7EnO2EBiSfWsoAgVIIN=0}{5E$o%kRzvRW%=$35v39Jn|43^>j^ zjlYcZWt1AZesT71p}EX^Wgr*8bl(foSx-Vg85}#CP`NN~ch{dLnft}r6zHubpwphT z2XCU~^2k~^&A-V$>Bv_4L>4?!mXtLBBprFb?o^c_!dx~{H%G~!v_VEYqR|F5CO=Vr z^3d7{{I`pmXo<5f2``>mb9~{#j4MU1^VPU)z4LmBR;_KffY08PNs3jiq~=v+8s7Uo z>IgaYd;O-v@$u5T#*kDD8N5WyvZ&unH$=fj5u{Xa-YRPK>NSJ{lqvNu^qYG{Q@kuW z*r2>?+)bFsQ>a%wq-q6b&kbP>Y$KI=VfEhYswwlnd0NQ+R~j+x727o0F`}CQz5j;G z{2e~lrh1)zf4||X#oD*V0c)WosVvW$|Fvif3GO?#FONCPnf{sJ`<5!y7CJZn|I>Mg Z9mH(TySz!a_qUm@rmU@0sbKx~zW`MFSoi<{ diff --git a/packages/dnb-eufemia/src/extensions/forms/Value/Upload/__tests__/__image_snapshots__/valueupload-have-to-match-upload-displaying-size.snap.png b/packages/dnb-eufemia/src/extensions/forms/Value/Upload/__tests__/__image_snapshots__/valueupload-have-to-match-upload-displaying-size.snap.png new file mode 100644 index 0000000000000000000000000000000000000000..b5dee2b025849de34299cd26331605b8f6885b57 GIT binary patch literal 13191 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 literal 0 HcmV?d00001 From c596b76ce4683535211012f82cdf960808d62e42 Mon Sep 17 00:00:00 2001 From: -l Date: Fri, 8 Nov 2024 14:45:15 +0100 Subject: [PATCH 10/16] update exampels --- .../forms/Value/Upload/Examples.tsx | 1 - .../Value/Upload/stories/Upload.stories.tsx | 19 +++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/Value/Upload/Examples.tsx b/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/Value/Upload/Examples.tsx index fdd147b147f..ebb0191c9d1 100644 --- a/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/Value/Upload/Examples.tsx +++ b/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/Value/Upload/Examples.tsx @@ -173,7 +173,6 @@ export const LabelAndValue = () => { +

layout="grid"

label.toUpperCase()} @@ -48,9 +51,11 @@ export function Upload() { +
+

layout="horizontal"

label.toUpperCase()} @@ -58,9 +63,11 @@ export function Upload() { +
+

layout="vertical"

label.toUpperCase()} @@ -68,6 +75,18 @@ export function Upload() { + + +
+ +

empty values

+ label.toUpperCase()} + > + + + +
From db36f7f68116e500dbe3c95b6db255f1dbc55ff4 Mon Sep 17 00:00:00 2001 From: Anders Date: Fri, 8 Nov 2024 14:46:32 +0100 Subject: [PATCH 11/16] Update packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/Value/Upload/Examples.tsx MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Tobias Høegh --- .../src/docs/uilib/extensions/forms/Value/Upload/Examples.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/Value/Upload/Examples.tsx b/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/Value/Upload/Examples.tsx index ebb0191c9d1..e6f33f1df21 100644 --- a/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/Value/Upload/Examples.tsx +++ b/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/Value/Upload/Examples.tsx @@ -74,7 +74,6 @@ export const WithDownload = () => { Date: Fri, 8 Nov 2024 14:51:04 +0100 Subject: [PATCH 12/16] address comments from review --- .../src/docs/uilib/extensions/forms/Value/Upload.mdx | 2 +- .../docs/uilib/extensions/forms/Value/Upload/info.mdx | 2 +- .../src/extensions/forms/Value/Upload/Upload.tsx | 11 +++++------ 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/Value/Upload.mdx b/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/Value/Upload.mdx index 605c8dc47fa..2f5ba725e3e 100644 --- a/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/Value/Upload.mdx +++ b/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/Value/Upload.mdx @@ -1,6 +1,6 @@ --- title: 'Upload' -description: '`Value.Upload` is a wrapper component for displaying Upload files, with user experience tailored for an array of files.' +description: '`Value.Upload` is a value component for displaying a list of files.' componentType: 'feature-value' showTabs: true tabs: diff --git a/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/Value/Upload/info.mdx b/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/Value/Upload/info.mdx index d6e65bea3da..2bd0a26e60e 100644 --- a/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/Value/Upload/info.mdx +++ b/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/Value/Upload/info.mdx @@ -4,7 +4,7 @@ showTabs: true ## Description -`Value.Upload` is a wrapper component for displaying Upload files, with user experience tailored for an array of files. +`Value.Upload` is a value component for displaying a list of files. There is a corresponding [Field.Upload](/uilib/extensions/forms/feature-fields/more-fields/Upload) component. diff --git a/packages/dnb-eufemia/src/extensions/forms/Value/Upload/Upload.tsx b/packages/dnb-eufemia/src/extensions/forms/Value/Upload/Upload.tsx index 65bfb2592f0..08e873bc2d8 100644 --- a/packages/dnb-eufemia/src/extensions/forms/Value/Upload/Upload.tsx +++ b/packages/dnb-eufemia/src/extensions/forms/Value/Upload/Upload.tsx @@ -5,7 +5,6 @@ import { ValueProps } from '../../types' import ValueBlock from '../../ValueBlock' import { Anchor } from '../../../../components' import Icon from '../../../../components/Icon' -import Span from '../../../../elements/Span' import ListFormat, { ListFormatProps, } from '../../../../components/list-format' @@ -48,7 +47,7 @@ function Upload(props: Props) { } const imageUrl = URL.createObjectURL(file) return ( - + {getIcon(file)} {file.name} - {getSize(displaySize, file.size)} + {displaySize && getSize(file.size)} - + ) }) || undefined @@ -89,8 +88,8 @@ function Upload(props: Props) { ) } -function getSize(displaySize: boolean, size: number) { - if (!displaySize || !size) { +function getSize(size: number) { + if (!size) { return } // Converts from b (binary) to MB (decimal) From c4fc398f3effaa6da2667d4872930aa141ad855b Mon Sep 17 00:00:00 2001 From: Anders Date: Fri, 8 Nov 2024 14:51:29 +0100 Subject: [PATCH 13/16] Update packages/dnb-eufemia/src/extensions/forms/Value/Upload/Upload.tsx MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Tobias Høegh --- .../extensions/forms/Value/Upload/Upload.tsx | 20 +++++++++---------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/packages/dnb-eufemia/src/extensions/forms/Value/Upload/Upload.tsx b/packages/dnb-eufemia/src/extensions/forms/Value/Upload/Upload.tsx index 08e873bc2d8..7e2f95674ac 100644 --- a/packages/dnb-eufemia/src/extensions/forms/Value/Upload/Upload.tsx +++ b/packages/dnb-eufemia/src/extensions/forms/Value/Upload/Upload.tsx @@ -64,18 +64,16 @@ function Upload(props: Props) { ) }) || undefined - if (typeof valueToUse === 'undefined') { - return undefined + if (valueToUse) { + return ( + + ) } - - return ( - - ) }, [path, value, variant, listType]) return ( From ab5972740fcd980bb3764c88242e9d4c88867798 Mon Sep 17 00:00:00 2001 From: -l Date: Fri, 8 Nov 2024 14:57:19 +0100 Subject: [PATCH 14/16] import createMockFile from Examples in upload component --- .../src/docs/uilib/components/upload/Examples.tsx | 11 ++++++++++- .../uilib/extensions/forms/Value/Upload/Examples.tsx | 2 +- .../feature-fields/more-fields/Upload/Examples.tsx | 2 +- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/packages/dnb-design-system-portal/src/docs/uilib/components/upload/Examples.tsx b/packages/dnb-design-system-portal/src/docs/uilib/components/upload/Examples.tsx index 0eb2e7dd665..ed3ce133a2d 100644 --- a/packages/dnb-design-system-portal/src/docs/uilib/components/upload/Examples.tsx +++ b/packages/dnb-design-system-portal/src/docs/uilib/components/upload/Examples.tsx @@ -12,7 +12,16 @@ import { Section, Upload, } from '@dnb/eufemia/src' -import { createMockFile } from '@dnb/eufemia/src/components/upload/__tests__/testHelpers' + +export function createMockFile(name: string, size: number, type: string) { + const file = new File([], name, { type }) + Object.defineProperty(file, 'size', { + get() { + return size + }, + }) + return file +} const useMockFiles = (setFiles, extend) => { React.useEffect(() => { diff --git a/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/Value/Upload/Examples.tsx b/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/Value/Upload/Examples.tsx index e6f33f1df21..73fd3cd62ea 100644 --- a/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/Value/Upload/Examples.tsx +++ b/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/Value/Upload/Examples.tsx @@ -1,7 +1,7 @@ import ComponentBox from '../../../../../../shared/tags/ComponentBox' import { Form, Value, Field } from '@dnb/eufemia/src/extensions/forms' import { Flex, Span } from '@dnb/eufemia/src' -import { createMockFile } from '@dnb/eufemia/src/components/upload/__tests__/testHelpers' +import { createMockFile } from '../../../../../../docs/uilib/components/upload/Examples' export const Placeholder = () => { return ( diff --git a/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/feature-fields/more-fields/Upload/Examples.tsx b/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/feature-fields/more-fields/Upload/Examples.tsx index 3b0b3546033..785b9e4a226 100644 --- a/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/feature-fields/more-fields/Upload/Examples.tsx +++ b/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/feature-fields/more-fields/Upload/Examples.tsx @@ -1,7 +1,7 @@ import { Flex } from '@dnb/eufemia/src' import ComponentBox from '../../../../../../../shared/tags/ComponentBox' import { Field, Form } from '@dnb/eufemia/src/extensions/forms' -import { createMockFile } from '@dnb/eufemia/src/components/upload/__tests__/testHelpers' +import { createMockFile } from '../../../../../../../docs/uilib/components/upload/Examples' export const BasicUsage = () => { return ( From 1ee7aac60fac3c59306b800f2e7d09e630f884cc Mon Sep 17 00:00:00 2001 From: -l Date: Fri, 8 Nov 2024 15:02:04 +0100 Subject: [PATCH 15/16] update screenshot tests --- .../forms/Value/Upload/Examples.tsx | 17 ----------------- ...e-to-match-upload-displaying-size.snap.png | Bin 13191 -> 4428 bytes 2 files changed, 17 deletions(-) diff --git a/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/Value/Upload/Examples.tsx b/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/Value/Upload/Examples.tsx index 73fd3cd62ea..97c24738739 100644 --- a/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/Value/Upload/Examples.tsx +++ b/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/Value/Upload/Examples.tsx @@ -45,24 +45,12 @@ export const WithSize = () => { > @@ -80,11 +68,6 @@ export const WithDownload = () => { exists: false, id: '1', }, - { - file: createMockFile('fileName-2.png', 2000000, 'image/png'), - exists: false, - id: '2', - }, ]} />
diff --git a/packages/dnb-eufemia/src/extensions/forms/Value/Upload/__tests__/__image_snapshots__/valueupload-have-to-match-upload-displaying-size.snap.png b/packages/dnb-eufemia/src/extensions/forms/Value/Upload/__tests__/__image_snapshots__/valueupload-have-to-match-upload-displaying-size.snap.png index b5dee2b025849de34299cd26331605b8f6885b57..90181c49bd528c92b78691eef876f69b957bef9c 100644 GIT binary patch literal 4428 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 Dcwt`# literal 13191 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 From 4532980818a49920219047a75b92de826515c596 Mon Sep 17 00:00:00 2001 From: -l Date: Fri, 8 Nov 2024 15:04:29 +0100 Subject: [PATCH 16/16] removes changelog --- .../src/docs/uilib/extensions/forms/changelog.mdx | 4 ---- 1 file changed, 4 deletions(-) diff --git a/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/changelog.mdx b/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/changelog.mdx index 13ff4629205..fe03c63d274 100644 --- a/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/changelog.mdx +++ b/packages/dnb-design-system-portal/src/docs/uilib/extensions/forms/changelog.mdx @@ -13,10 +13,6 @@ breadcrumb: Change log for the Eufemia Forms extension. -## 10.55 - -- Added [Value.Upload](/uilib/extensions/forms/Value/Upload/) component to render file values. - ## v10.54 - Deprecated Ajv `validationRule` in [FormError](/uilib/extensions/forms/Form/error-messages/info/#error-messages) and deprecated `errorMessages` keys like `pattern` in favor of Eufemia translation keys like `Field.errorPattern`. For a migration guide, take a look at [release notes for the future major release, v11](/uilib/about-the-lib/releases/eufemia/v11-info/#forms-error-handling).