From 3f9cc3444b71dc537e44d13c8cf04eb5ec1dcb61 Mon Sep 17 00:00:00 2001 From: Pavel Spacil Date: Thu, 1 Sep 2022 12:31:21 +0200 Subject: [PATCH 1/4] feat(FUploadArea): add `invalid` state --- .../FUploadArea/FUploadArea.spec.js | 17 ++++++++ .../FUploadArea/FUploadArea.stories.js | 12 ++++++ src/components/FUploadArea/FUploadArea.vue | 43 +++++++++++++++++-- 3 files changed, 69 insertions(+), 3 deletions(-) diff --git a/src/components/FUploadArea/FUploadArea.spec.js b/src/components/FUploadArea/FUploadArea.spec.js index b242948..058875c 100644 --- a/src/components/FUploadArea/FUploadArea.spec.js +++ b/src/components/FUploadArea/FUploadArea.spec.js @@ -120,5 +120,22 @@ describe('FUploadArea', () => { expect(wrapper.emitted('invalid')[0]).toEqual([['Bad files Foo, Foo2']]); }); + it('should add `invalid` attr to the input if component is in invalid state', async () => { + wrapper = createWrapper({ + props: { + invalid: true, + accept: 'image/*', + }, + }); + const fileInput = wrapper.find('input[type="file"]'); + + expect(fileInput.attributes('aria-invalid')).toBe('true'); + + await wrapper.setProps({ invalid: false }); + await fileInput.trigger('change', { files: [{ type: 'text/html' }] }); + + expect(fileInput.attributes('aria-invalid')).toBe('true'); + }); + // it.todo('should be able to clear picked files by clicking on `remove` button', () => {}); }); diff --git a/src/components/FUploadArea/FUploadArea.stories.js b/src/components/FUploadArea/FUploadArea.stories.js index 4dec3d8..3bb9070 100644 --- a/src/components/FUploadArea/FUploadArea.stories.js +++ b/src/components/FUploadArea/FUploadArea.stories.js @@ -27,6 +27,18 @@ export const Multiple = () => ({ `, }); +export const Invalid = () => ({ + components: { FUploadArea }, + //language=HTML + template: ` +
+ + Invalid files + +
+ `, +}); + export const OnChange = () => ({ components: { FUploadArea }, //language=HTML diff --git a/src/components/FUploadArea/FUploadArea.vue b/src/components/FUploadArea/FUploadArea.vue index 971b69c..699eaed 100644 --- a/src/components/FUploadArea/FUploadArea.vue +++ b/src/components/FUploadArea/FUploadArea.vue @@ -1,6 +1,6 @@