Skip to content

Commit db7f435

Browse files
authored
feat(file-uploader): improve sizing (#573)
* feat(file-uploader): allow height sizing from outside of component * chore: updated non breaking changes * chore: increment version * feat(file-uploader): fix style binding * chore: ignore setup test error * chore: update breaking changes * chore: fix lint issues
1 parent 0a9a0c8 commit db7f435

File tree

8 files changed

+2311
-11544
lines changed

8 files changed

+2311
-11544
lines changed

package-lock.json

Lines changed: 2268 additions & 11508 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@karnama/vueish",
3-
"version": "0.20.0",
3+
"version": "0.21.0",
44
"files": [
55
"dist",
66
"types"
@@ -46,14 +46,14 @@
4646
"@types/requestidlecallback": "^0.3.1",
4747
"@typescript-eslint/eslint-plugin": "^5.4.0",
4848
"@typescript-eslint/parser": "^5.4.0",
49-
"@vitejs/plugin-vue": "^3.0.0",
49+
"@vitejs/plugin-vue": "^4.0.0",
5050
"@vue/compiler-sfc": "^3.2.11",
5151
"@vue/eslint-config-typescript": "^11.0.0",
5252
"@vue/test-utils": "2.0.0-rc.16",
5353
"@vue/vue3-jest": "^29.0.0",
5454
"autoprefixer": "^10.4.0",
5555
"babel-jest": "^29.0.2",
56-
"babel-loader": "^8.2.2",
56+
"babel-loader": "^9.1.2",
5757
"commitlint": "^17.0.2",
5858
"eslint": "^8.23.1",
5959
"eslint-plugin-import": "^2.22.1",
@@ -63,8 +63,8 @@
6363
"husky": "^8.0.1",
6464
"jest": "^29.0.2",
6565
"jest-environment-jsdom": "^29.0.2",
66-
"jest-junit": "^14.0.0",
67-
"jest-serializer-vue": "^2.0.2",
66+
"jest-junit": "^15.0.0",
67+
"jest-serializer-vue": "^3.1.0",
6868
"lint-staged": "^13.0.1",
6969
"lodash-es": "^4.17.20",
7070
"minimist": "^1.2.5",
@@ -74,7 +74,7 @@
7474
"ts-jest": "^29.0.1",
7575
"ts-node": "^10.0.0",
7676
"typescript": "^4.3.4",
77-
"vite": "^3.0.0",
77+
"vite": "^4.0.4",
7878
"vue": "^3.2.25",
7979
"vue-docgen-api": "^4.52.0",
8080
"vue-router": "^4.0.6",

src/DemoBoard.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@
7070
<script lang="ts">
7171
import { computed, defineComponent, getCurrentInstance, ref, watch } from 'vue';
7272
import LocalCache from '@/helpers/cache/LocalCache';
73-
import type { Router, RouteRecord } from 'vue-router';
73+
import type { RouteRecord } from 'vue-router';
7474
import { getIcon } from '@/helpers';
7575
import { getVersion } from '@/main';
7676
@@ -86,7 +86,7 @@ export default defineComponent({
8686
8787
const darkMode = ref(cache.get<'light' | 'dark'>('theme', 'light') === 'dark');
8888
const routeMap = computed(() => {
89-
const routes = (instance.appContext.app.config.globalProperties.$router as Router).getRoutes();
89+
const routes = instance.appContext.app.config.globalProperties.$router .getRoutes();
9090
const map: { Directives?: RouteRecord[]; Components?: RouteRecord[] } = {};
9191
9292
routes.forEach(route => {

src/components/file-uploader/Demo.vue

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -6,25 +6,27 @@
66
</UIButton>
77
</div>
88

9-
<UIFileUploader :error="error"
10-
:upload="upload"
11-
class="border-brand-400"
12-
@validation-error="logError" />
13-
14-
<UIFileUploader :error="error"
15-
:upload="upload"
16-
class="border-brand-400"
17-
@validation-error="logError">
18-
<template #default="{ uploadIcon }">
19-
<p class="text-pink-600" v-html="uploadIcon" />
20-
<p class="text-lg">
21-
Drop files here to upload them
22-
</p>
23-
<UIButton theme="pink" class="mt-2">
24-
Browse
25-
</UIButton>
26-
</template>
27-
</UIFileUploader>
9+
<div class="grid grid-cols-2 grid-rows-2 gap-2" style="height: calc(100vh - 200px)">
10+
<UIFileUploader :error="error"
11+
:upload="upload"
12+
class="border-brand-400 col-span-1"
13+
@validation-error="logError" />
14+
<div />
15+
<UIFileUploader :error="error"
16+
:upload="upload"
17+
class="border-brand-400 col-span-2"
18+
@validation-error="logError">
19+
<template #default="{ uploadIcon }">
20+
<p class="text-pink-600" v-html="uploadIcon" />
21+
<p class="text-lg">
22+
Drop files here to upload them
23+
</p>
24+
<UIButton theme="pink" class="mt-2">
25+
Browse
26+
</UIButton>
27+
</template>
28+
</UIFileUploader>
29+
</div>
2830
</div>
2931
</template>
3032

src/components/file-uploader/UIFileUploader.vue

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
<template>
2-
<div>
2+
<div class="h-full" :class="$attrs.class" :style="$attrs.style">
33
<div :class="{
44
'active': isDraggedOver && !isLoading,
55
'pointer-events-none': isLoading,
66
error
77
}"
88
aria-label="File Upload"
99
class="rounded-lg drop-zone border-2 border-dashed transition-colors flex flex-wrap items-stretch
10-
dark:text-white relative border-current"
10+
dark:text-white relative border-current h-full"
1111
tabindex="0"
12-
v-bind="$attrs"
12+
v-bind="omit($attrs, 'class', 'style')"
1313
@dragover.prevent="isDraggedOver = true"
1414
@keydown.enter="openFileBrowser"
1515
@dragleave="isDraggedOver = false"
@@ -21,7 +21,7 @@
2121
:accept="acceptedMimes.join(',')"
2222
@change.prevent="addFiles">
2323

24-
<div class="grow flex flex-col items-center justify-center py-24 px-2 text-center cursor-pointer"
24+
<div class="grow flex flex-col items-center justify-center p-2 text-center cursor-pointer"
2525
@click="openFileBrowser">
2626
<slot :upload-icon="uploadIcon">
2727
<p class="mb-4 text-brand-600" v-html="uploadIcon" />
@@ -80,6 +80,7 @@ import type { FileError } from 'types';
8080
import UIFadeTransition from 'components/transitions/UIFadeTransition.vue';
8181
import UIExpandTransition from 'components/transitions/UIExpandTransition.vue';
8282
import { error, positiveOptionalNumber } from '@/shared-props';
83+
import { omit } from 'lodash-es';
8384
8485
// todo - UIFile may make the uploader overflow if the side menu is open when using files with long titles
8586
export default defineComponent({
@@ -234,7 +235,8 @@ export default defineComponent({
234235
addFiles,
235236
removeFile,
236237
openFileBrowser,
237-
uploadFiles
238+
uploadFiles,
239+
omit
238240
};
239241
}
240242
});

src/components/file-uploader/__snapshots__/UIFileUploader.test.ts.snap

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
// Jest Snapshot v1, https://goo.gl/fbAQLP
22

33
exports[`UIFileUploader should display correctly 1`] = `
4-
<div>
4+
<div
5+
class="h-full"
6+
>
57
<div
68
aria-label="File Upload"
7-
class="rounded-lg drop-zone border-2 border-dashed transition-colors flex flex-wrap items-stretch dark:text-white relative border-current"
9+
class="rounded-lg drop-zone border-2 border-dashed transition-colors flex flex-wrap items-stretch dark:text-white relative border-current h-full"
810
tabindex="0"
911
>
1012
<input
@@ -14,7 +16,7 @@ exports[`UIFileUploader should display correctly 1`] = `
1416
type="file"
1517
/>
1618
<div
17-
class="grow flex flex-col items-center justify-center py-24 px-2 text-center cursor-pointer"
19+
class="grow flex flex-col items-center justify-center p-2 text-center cursor-pointer"
1820
>
1921
2022
<p

src/directives/click-away/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ export const createClickAwayListener = (el: ClickAwayElement, binding: Directive
2727
event.preventDefault();
2828
}
2929

30-
if ((!el || !el.contains(event.target as Node)) && nextTick && cb && typeof cb === 'function') {
30+
if (!el?.contains(event.target as Node) && nextTick && cb && typeof cb === 'function') {
3131
return cb.call(event);
3232
}
3333
}

src/setupTests.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import defaultSettings from '@/defaultSettings';
44
import type { ComponentPublicInstance } from 'vue';
55

66
beforeAll(() => {
7+
// @ts-expect-error - shim doesn't have vueish, added as user doesn't need to know
78
config.global.config.globalProperties = {
89
// eslint-disable-next-line @typescript-eslint/naming-convention
910
Vueish: defaultSettings

0 commit comments

Comments
 (0)