@@ -104,88 +104,90 @@ onUnmounted(() => {
104
104
</script >
105
105
106
106
<template >
107
- <div block h-full of-auto class =" drawer-container relative" >
108
- <Navbar ref =" navbar" v-model:search =" search" pb2 :no-padding =" true" >
109
- <template #actions >
110
- <div flex-none flex =" ~ gap2 items-center" text-lg >
111
- <!-- <VueIcon
107
+ <div block h-full of-hidden class =" drawer-container relative" >
108
+ <div h-full w-full of-auto >
109
+ <Navbar ref =" navbar" v-model:search =" search" pb2 :no-padding =" true" >
110
+ <template #actions >
111
+ <div flex-none flex =" ~ gap2 items-center" text-lg >
112
+ <!-- <VueIcon
112
113
v-tooltip.bottom-end="'File Upload'"
113
114
icon="i-carbon:cloud-upload"
114
115
title="File Upload" :border="false" flex="~ gap-0!" action
115
116
@click="dropzone = !dropzone"
116
117
/> -->
117
- <VueSelect v-model =" filteredExtensions" :multiple =" true" :options =" uniqAssetsTypes" >
118
- <template #button >
119
- <IconTitle
120
- v-tooltip.bottom-end =" 'Filter'"
121
- icon =" i-carbon-filter hover:op50" :border =" false"
122
- title =" Filter" relative cursor-pointer p2 text-lg
123
- @click =" () => { }"
118
+ <VueSelect v-model =" filteredExtensions" :multiple =" true" :options =" uniqAssetsTypes" >
119
+ <template #button >
120
+ <IconTitle
121
+ v-tooltip.bottom-end =" 'Filter'"
122
+ icon =" i-carbon-filter hover:op50" :border =" false"
123
+ title =" Filter" relative cursor-pointer p2 text-lg
124
+ @click =" () => { }"
125
+ >
126
+ <span flex =" ~ items-center justify-center" absolute bottom-0 right-2px h-4 w-4 rounded-full bg-primary-800 text-8px text-white >
127
+ {{ filteredExtensions.length }}
128
+ </span >
129
+ </IconTitle >
130
+ </template >
131
+ <template
132
+ #item =" {
133
+ item , active ,
134
+ } "
124
135
>
125
- <span flex =" ~ items-center justify-center" absolute bottom-0 right-2px h-4 w-4 rounded-full bg-primary-800 text-8px text-white >
126
- {{ filteredExtensions.length }}
127
- </span >
128
- </IconTitle >
129
- </template >
130
- <template
131
- #item =" {
132
- item , active ,
133
- } "
134
- >
135
- <div
136
- w-full flex =" ~ gap-2 items-center" rounded px2 py2
137
- >
138
- <VueCheckbox :model-value =" active" />
139
- <span text-xs op75 >{{ item.label }}</span >
140
- </div >
141
- </template >
142
- </VueSelect >
143
- <VueIcon
144
- v-tooltip.bottom-end =" 'Toggle View'"
145
- :border =" false"
146
- :icon =" view === 'grid' ? 'i-carbon-list' : 'i-carbon-grid'"
147
- title =" Toggle view"
148
- action cursor-pointer text-lg
149
- @click =" toggleView"
150
- />
136
+ <div
137
+ w-full flex =" ~ gap-2 items-center" rounded px2 py2
138
+ >
139
+ <VueCheckbox :model-value =" active" />
140
+ <span text-xs op75 >{{ item.label }}</span >
141
+ </div >
142
+ </template >
143
+ </VueSelect >
144
+ <VueIcon
145
+ v-tooltip.bottom-end =" 'Toggle View'"
146
+ :border =" false"
147
+ :icon =" view === 'grid' ? 'i-carbon-list' : 'i-carbon-grid'"
148
+ title =" Toggle view"
149
+ action cursor-pointer text-lg
150
+ @click =" toggleView"
151
+ />
152
+ </div >
153
+ </template >
154
+ <div op50 >
155
+ <span v-if =" search" >{{ filtered.length }} matched · </span >
156
+ <span >{{ assets?.length }} assets in total</span >
151
157
</div >
152
- </template >
153
- <div op50 >
154
- <span v-if =" search" >{{ filtered.length }} matched · </span >
155
- <span >{{ assets?.length }} assets in total</span >
156
- </div >
157
- </Navbar >
158
+ </Navbar >
158
159
159
- <template v-if =" view === ' grid' " >
160
- <template v-if =" byFolders .length > 1 " >
161
- <SectionBlock
162
- v-for =" [folder, items] of byFolders"
163
- :key =" folder"
164
- :text =" folder"
165
- :description =" `${items.length} items`"
166
- :open =" items.length <= DETAILS_MAX_ITEMS"
167
- :padding =" false"
168
- >
169
- <div mt--4 px2 grid =" ~ cols-minmax-8rem" >
170
- <AssetGridItem v-for =" a of items" :key =" a.path" :asset =" a" :folder =" folder" @click =" selected = a" />
171
- </div >
172
- </SectionBlock >
160
+ <template v-if =" view === ' grid' " >
161
+ <template v-if =" byFolders .length > 1 " >
162
+ <SectionBlock
163
+ v-for =" [folder, items] of byFolders"
164
+ :key =" folder"
165
+ :text =" folder"
166
+ :description =" `${items.length} items`"
167
+ :open =" items.length <= DETAILS_MAX_ITEMS"
168
+ :padding =" false"
169
+ >
170
+ <div mt--4 px2 grid =" ~ cols-minmax-8rem" >
171
+ <AssetGridItem v-for =" a of items" :key =" a.path" :asset =" a" :folder =" folder" @click =" selected = a" />
172
+ </div >
173
+ </SectionBlock >
174
+ </template >
175
+ <div v-else p2 grid =" ~ cols-minmax-8rem" >
176
+ <AssetGridItem v-for =" a of filtered" :key =" a.path" :asset =" a" @click =" selected = a" />
177
+ </div >
173
178
</template >
174
- <div v-else p2 grid =" ~ cols-minmax-8rem" >
175
- <AssetGridItem v-for =" a of filtered" :key =" a.path" :asset =" a" @click =" selected = a" />
179
+ <div v-else >
180
+ <AssetListItem
181
+ v-for =" item, key of byTree" :key =" key"
182
+ v-model =" selected"
183
+ :item =" item"
184
+ />
176
185
</div >
177
- </template >
178
- <div v-else >
179
- <AssetListItem
180
- v-for =" item, key of byTree" :key =" key"
181
- v-model =" selected"
182
- :item =" item"
183
- />
184
186
</div >
185
187
<VueDrawer
186
188
:model-value =" !!selected"
187
189
:top =" navbar"
188
- permanent mount-to =" .drawer-container"
190
+ permanent mount-to =" .drawer-container" position = " absolute "
189
191
content-class =" w120 text-sm" @update:model-value =" (v) => {
190
192
if (!v) selected = undefined
191
193
}"
0 commit comments