Skip to content

Commit c77dfa8

Browse files
committed
Use FileInputDefault, not use SCSS
1 parent a849724 commit c77dfa8

File tree

4 files changed

+69
-55
lines changed

4 files changed

+69
-55
lines changed

src/components/FileInput.vue

Lines changed: 12 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
<script setup lang="ts">
2-
import FileInputDefaultHoverText from "./FileInputDefaultHoverText.vue";
3-
import FileInputDefaultText from "./FileInputDefaultText.vue";
4-
import {FileInputState, HTMLFileInputElement} from "../index";
5-
62
import {
73
ref, toRefs, onMounted, computed, onBeforeUnmount, watchEffect,
84
Ref, ComputedRef
95
} from "vue";
6+
import {FileInputState, HTMLFileInputElement} from "../index";
7+
import FileInputDefault from "./FileInputDefault.vue";
8+
109
1110
const templateInputElem: Ref<HTMLFileInputElement | null> = ref(null);
1211
@@ -34,8 +33,6 @@ const {
3433
} = toRefs(props);
3534
3635
const {
37-
parsing,
38-
file,
3936
dropHover,
4037
setFiles,
4138
setDataTransfer,
@@ -145,12 +142,11 @@ function onKeyDown(event: KeyboardEvent) {
145142
fileInputElem.value?.querySelector("label")?.click();
146143
}
147144
}
148-
149145
</script>
150146

151147
<template>
152148
<div
153-
class="file-input" data-comp="FileInput"
149+
class="file-input" data-component="FileInput"
154150
ref="fileInputElem"
155151
:class="{'drop-hover': dropHover}"
156152
tabindex="0"
@@ -165,20 +161,14 @@ function onKeyDown(event: KeyboardEvent) {
165161
:nwdirectory="nwdirectory"
166162
ref="templateInputElem"
167163
>
168-
169-
<span class="content hover" v-if="dropHover">
170-
<slot name="hover"><FileInputDefaultHoverText :state="state"/></slot>
171-
</span>
172-
<span class="content selected" v-else-if="file && !parsing">
173-
<slot name="selected"><FileInputDefaultText :state="state"/></slot>
174-
</span>
175-
<span class="content prompt" v-else>
176-
<slot name="prompt"><FileInputDefaultText :state="state"/></slot>
177-
</span>
178-
164+
<slot>
165+
<FileInputDefault :state="state"/>
166+
</slot>
179167
</label>
180168
<teleport to="body">
181-
<div class="file-input-hover-modal" :class="{'drop-hover': dropHover}"></div>
169+
<slot name="modal">
170+
<div class="file-input-hover-modal" :class="{'drop-hover': dropHover}"></div>
171+
</slot>
182172
</teleport>
183173
</div>
184174
</template>
@@ -193,8 +183,8 @@ function onKeyDown(event: KeyboardEvent) {
193183
</style>
194184

195185
<style scoped>
196-
.file-input, label, .content {
197-
width: 100%;
186+
.file-input {
187+
width: 100%;
198188
height: 100%;
199189
}
200190
@@ -230,13 +220,3 @@ function onKeyDown(event: KeyboardEvent) {
230220
opacity: 1;
231221
}
232222
</style>
233-
234-
235-
236-
237-
238-
239-
240-
241-
242-
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
<template>
2+
<div>
3+
<span class="content hover" v-if="state.private.dropHover">
4+
<slot name="hover">
5+
<FileInputDefaultHoverText :state="state"/>
6+
</slot>
7+
</span>
8+
<span class="content selected" v-else-if="state.private.file && !state.private.parsing">
9+
<slot name="selected">
10+
<FileInputDefaultText :state="state"/>
11+
</slot>
12+
</span>
13+
<span class="content prompt" v-else>
14+
<slot name="prompt">
15+
<FileInputDefaultText :state="state"/>
16+
</slot>
17+
</span>
18+
</div>
19+
</template>
20+
21+
<script setup lang="ts">
22+
import FileInputDefaultHoverText from "./FileInputDefaultHoverText.vue";
23+
import FileInputDefaultText from "./FileInputDefaultText.vue";
24+
import {FileInputState} from "./file-input-state";
25+
26+
defineProps<{
27+
state: FileInputState,
28+
}>();
29+
</script>
30+
31+
<style scoped>
32+
.content {
33+
width: 100%;
34+
height: 100%;
35+
}
36+
</style>

src/components/FileInputDefaultText.vue

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,21 +10,20 @@
1010

1111
<script setup lang="ts">
1212
import {computed} from "vue";
13-
import {FileInputState} from "../index";
13+
import {FileInputState, WebFileEntry} from "../index";
1414
1515
const props = defineProps<{state: FileInputState}>();
1616
const {
1717
count, fileEntries, parsing
1818
} = props.state.private;
1919
2020
const names = computed(() => {
21-
/** @type {WebFileEntry[]} */
22-
const entries = fileEntries.value;
21+
const entries: WebFileEntry[] = fileEntries.value;
2322
return entries.slice(0, 50).map(file => file.name).join("\n");
2423
});
2524
</script>
2625

27-
<style lang="scss" scoped>
26+
<style scoped>
2827
.default-prompt-text {
2928
width: inherit;
3029
height: inherit;
@@ -35,11 +34,13 @@ const names = computed(() => {
3534
3635
cursor: pointer;
3736
38-
&:hover {
39-
//text-decoration: underline;
40-
}
4137
overflow: hidden;
4238
white-space: nowrap;
4339
text-overflow: ellipsis;
4440
}
41+
/*
42+
.default-prompt-text:hover {
43+
text-decoration: underline;
44+
}
45+
*/
4546
</style>
Lines changed: 13 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<template>
22
<span class="file-info" v-if="file">
33
<span class="file-name" :title="file.name">{{file.name}}</span>
4-
<span class="file-size" :title="file.size">{{bytesToSizeWinLike(file.size)}}</span>
4+
<span class="file-size" :title="file.size.toString()">{{bytesToSizeWinLike(file.size)}}</span>
55
<span class="file-mtime" v-if="file.mtime">{{dateToDayDateTimeString(file.mtime, false)}}</span>
66
</span>
77
</template>
@@ -16,27 +16,24 @@ const {
1616
} = props.state.private;
1717
</script>
1818

19-
<style lang="scss" scoped>
19+
<style scoped>
2020
.file-info {
2121
width: 100%;
2222
height: 100%;
2323
display: flex;
2424
flex-direction: column;
2525
justify-content: center;
2626
max-width: 100%;
27-
.select-prompt {
28-
align-self: center;
29-
}
30-
> * {
31-
padding: 4px 12px;
32-
}
33-
.file-name {
34-
text-overflow: ellipsis;
35-
overflow: hidden;
36-
white-space: nowrap;
37-
}
38-
.file-mtime {
39-
opacity: 0.9;
40-
}
27+
}
28+
.file-info > * {
29+
padding: 4px 12px;
30+
}
31+
.file-info .file-name {
32+
text-overflow: ellipsis;
33+
overflow: hidden;
34+
white-space: nowrap;
35+
}
36+
.file-info .file-mtime {
37+
opacity: 0.9;
4138
}
4239
</style>

0 commit comments

Comments
 (0)