Add select-all button to cards layout (#695)

This commit is contained in:
Rijk van Zanten
2020-06-09 18:20:06 -04:00
committed by GitHub
parent e2e86957eb
commit 13c3fb8373
3 changed files with 20 additions and 3 deletions

View File

@@ -143,6 +143,8 @@
"date": "Date",
"year": "Year",
"select_all": "Select All",
"months": {
"january": "January",
"february": "February",

View File

@@ -55,7 +55,13 @@
</portal>
<template v-if="loading || itemCount > 0">
<cards-header :fields="availableFields" :size.sync="size" :selection.sync="_selection" :sort.sync="sort" />
<cards-header
@select-all="selectAll"
:fields="availableFields"
:size.sync="size"
:selection.sync="_selection"
:sort.sync="sort"
/>
<div class="grid" :class="{ 'single-row': isSingleRow }">
<template v-if="loading">
@@ -136,6 +142,7 @@ import CardsHeader from './components/header.vue';
import i18n from '@/lang';
import adjustFieldsForDisplays from '@/utils/adjust-fields-for-displays';
import useElementSize from '@/composables/use-element-size';
import { clone } from 'lodash';
type Item = Record<string, any>;
@@ -292,6 +299,7 @@ export default defineComponent({
layoutElement,
activeFilterCount,
refresh,
selectAll,
};
function refresh() {
@@ -400,6 +408,14 @@ export default defineComponent({
primaryKey: item[primaryKeyField.value!.field],
});
}
function selectAll() {
if (!primaryKeyField.value) return;
emit(
'update:selection',
clone(items.value).map((item: any) => item[primaryKeyField.value.field])
);
}
},
});
</script>

View File

@@ -5,10 +5,9 @@
<v-icon name="close" @click="_selection = []" />
{{ $tc('n_items_selected', _selection.length) }}
</div>
<button class="select-all" v-else @click="$emit('select-all')">{{ $t('select_all') }}</button>
</div>
<div class="end">
<!-- <v-slider class="size-selector" v-model="_size" :min="100" :max="200" :step="1" /> -->
<v-icon
class="size-selector"
:name="`grid_${7 - size}`"