From eeb1511282b3042ec9c3d84361b83456fdb42529 Mon Sep 17 00:00:00 2001 From: git-mahade Date: Fri, 24 Nov 2023 17:52:03 +0600 Subject: [PATCH 1/7] file-input --- src/App.vue | 17 +++++-- src/components/DFileInput.vue | 87 +++++++++++++++++++++++++++++++++++ src/index.ts | 7 +-- 3 files changed, 105 insertions(+), 6 deletions(-) create mode 100644 src/components/DFileInput.vue diff --git a/src/App.vue b/src/App.vue index a0d7a19..6307b48 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,5 +1,16 @@ + + diff --git a/src/components/DFileInput.vue b/src/components/DFileInput.vue new file mode 100644 index 0000000..d9ee314 --- /dev/null +++ b/src/components/DFileInput.vue @@ -0,0 +1,87 @@ + + + diff --git a/src/index.ts b/src/index.ts index ee2ff8d..c3bd811 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,4 +1,5 @@ -import DButton from "./components/DButton.vue" -import DInput from "./components/DInput.vue" +import DButton from './components/DButton.vue' +import DInput from './components/DInput.vue' +import DInput from './components/DFileInput.vue' -export default {DButton, DInput} \ No newline at end of file +export default { DButton, DInput, DFileInput } From f72189c497a52df7a6bfd7341824d51fd2660895 Mon Sep 17 00:00:00 2001 From: git-mahade Date: Fri, 24 Nov 2023 18:29:34 +0600 Subject: [PATCH 2/7] file-input --- src/App.vue | 8 ++++---- src/components/DFileInput.vue | 14 ++++++-------- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/src/App.vue b/src/App.vue index 6307b48..72761a1 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,16 +1,16 @@ diff --git a/src/components/DFileInput.vue b/src/components/DFileInput.vue index d9ee314..0e9021f 100644 --- a/src/components/DFileInput.vue +++ b/src/components/DFileInput.vue @@ -17,7 +17,7 @@ @focus="$emit('focus')" @blur="$emit('blur')" @keyup.enter="$emit('enter')" - @input="$emit('update:modelValue', inputValue)" + @change="handleFileChange" />
diff --git a/src/components/__tests__/DFileInput.spec.ts b/src/components/__tests__/DFileInput.spec.ts new file mode 100644 index 0000000..10c304e --- /dev/null +++ b/src/components/__tests__/DFileInput.spec.ts @@ -0,0 +1,35 @@ +import { describe, it, expect, beforeEach } from 'vitest' +import { mount } from '@vue/test-utils' +import DFileInput from '../DFileInput.vue' + +describe('DFileInput', () => { + let wrapper: any + + beforeEach(() => { + wrapper = mount(DFileInput) + }) + + it('renders correctly with default props', () => { + expect(wrapper.find('label').exists()).toBe(true) + expect(wrapper.find('input[type="file"]').exists()).toBe(true) + }) + + it('displays label and placeholder text', async () => { + const label = 'File Input' + const placeholder = 'Choose a file' + + await wrapper.setProps({ label, placeholder }) + + expect(wrapper.find('span').text()).toBe(label) + expect(wrapper.find('input').attributes('placeholder')).toBe(placeholder) + }) + + it('clears file on clearFile method call', async () => { + await wrapper.setProps({ modelValue: 'test-file.txt' }) + + await wrapper.vm.clearFile() + + expect(wrapper.emitted('update:modelValue')).toBeTruthy() + expect(wrapper.emitted('update:modelValue')[0]).toEqual(['']) + }) +}) From d6e0ed1056bf988f3bbe0779fb153066b9b46481 Mon Sep 17 00:00:00 2001 From: git-mahade Date: Fri, 24 Nov 2023 23:20:44 +0600 Subject: [PATCH 4/7] file-input --- src/App.vue | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/src/App.vue b/src/App.vue index 4c16ce1..ef16a8e 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,18 +1,3 @@
- - - -
-

{{ fil.name }}

-
-
- - From ed9dfe3dbbca5ffe95a4ec36006c68eafb9a6bb3 Mon Sep 17 00:00:00 2001 From: git-mahade Date: Wed, 29 Nov 2023 12:19:35 +0600 Subject: [PATCH 5/7] file-input --- src/App.vue | 9 +++++++++ src/components/DFileInput.vue | 6 +++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/App.vue b/src/App.vue index ef16a8e..a18a2b2 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,3 +1,12 @@ + + diff --git a/src/components/DFileInput.vue b/src/components/DFileInput.vue index 5d097c8..809179d 100644 --- a/src/components/DFileInput.vue +++ b/src/components/DFileInput.vue @@ -20,7 +20,7 @@ @change="handleFileChange" />
@@ -45,6 +45,7 @@ From 02d6fe2a993343cf2a425dfa89c9a36e272553ec Mon Sep 17 00:00:00 2001 From: git-mahade Date: Wed, 29 Nov 2023 12:19:58 +0600 Subject: [PATCH 6/7] file-input --- src/App.vue | 9 --------- 1 file changed, 9 deletions(-) diff --git a/src/App.vue b/src/App.vue index a18a2b2..ef16a8e 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,12 +1,3 @@ - - From fb877e2432c15ff4516b31e1ec9240f134b099a1 Mon Sep 17 00:00:00 2001 From: git-mahade Date: Wed, 13 Dec 2023 17:46:50 +0600 Subject: [PATCH 7/7] file-input --- .../{DFileInput.vue => DxhFileInput.vue} | 47 ++++++++----------- ...FileInput.spec.ts => DxhFileInput.spec.ts} | 6 +-- src/index.ts | 4 +- 3 files changed, 25 insertions(+), 32 deletions(-) rename src/components/{DFileInput.vue => DxhFileInput.vue} (74%) rename src/components/__tests__/{DFileInput.spec.ts => DxhFileInput.spec.ts} (89%) diff --git a/src/components/DFileInput.vue b/src/components/DxhFileInput.vue similarity index 74% rename from src/components/DFileInput.vue rename to src/components/DxhFileInput.vue index 809179d..549edbb 100644 --- a/src/components/DFileInput.vue +++ b/src/components/DxhFileInput.vue @@ -12,6 +12,7 @@ :disabled="disabled" :readonly="readonly" :required="required" + :autofocus="autofocus" :clearable="clearable" :multiple="multiple" class="w-full border px-2 py-1 rounded" @@ -22,14 +23,14 @@
- + () const emit = defineEmits(['focus', 'blur', 'enter', 'update:modelValue']) const fileInputKey = ref(0) const handleFileChange = (event: any) => { - if (props.multiple) { - emit('update:modelValue', event.target.files) - isClear.value = true - } else { - emit('update:modelValue', event.target.files[0]) - isClear.value = true - } + emit('update:modelValue', event) + isClear.value = true } const clearFile = () => { diff --git a/src/components/__tests__/DFileInput.spec.ts b/src/components/__tests__/DxhFileInput.spec.ts similarity index 89% rename from src/components/__tests__/DFileInput.spec.ts rename to src/components/__tests__/DxhFileInput.spec.ts index 10c304e..fc6e4b2 100644 --- a/src/components/__tests__/DFileInput.spec.ts +++ b/src/components/__tests__/DxhFileInput.spec.ts @@ -1,12 +1,12 @@ import { describe, it, expect, beforeEach } from 'vitest' import { mount } from '@vue/test-utils' -import DFileInput from '../DFileInput.vue' +import DxhFileInput from '../DxhFileInput.vue' -describe('DFileInput', () => { +describe('DxhFileInput', () => { let wrapper: any beforeEach(() => { - wrapper = mount(DFileInput) + wrapper = mount(DxhFileInput) }) it('renders correctly with default props', () => { diff --git a/src/index.ts b/src/index.ts index c3bd811..cdd33da 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,5 +1,5 @@ import DButton from './components/DButton.vue' import DInput from './components/DInput.vue' -import DInput from './components/DFileInput.vue' +import DxhFileInput from './components/DxhFileInput.vue' -export default { DButton, DInput, DFileInput } +export default { DButton, DInput, DxhFileInput }