forked from jchomaz/Vulture
Tracking de l'application VApp (IHM du jeu)
This commit is contained in:
180
VApp/node_modules/vuetify/lib/components/VDataTable/composables/select.mjs
generated
vendored
Normal file
180
VApp/node_modules/vuetify/lib/components/VDataTable/composables/select.mjs
generated
vendored
Normal file
@@ -0,0 +1,180 @@
|
||||
// Composables
|
||||
import { useProxiedModel } from "../../../composables/proxiedModel.mjs"; // Utilities
|
||||
import { computed, inject, provide } from 'vue';
|
||||
import { deepEqual, propsFactory, wrapInArray } from "../../../util/index.mjs"; // Types
|
||||
const singleSelectStrategy = {
|
||||
showSelectAll: false,
|
||||
allSelected: () => [],
|
||||
select: _ref => {
|
||||
let {
|
||||
items,
|
||||
value
|
||||
} = _ref;
|
||||
return new Set(value ? [items[0]?.value] : []);
|
||||
},
|
||||
selectAll: _ref2 => {
|
||||
let {
|
||||
selected
|
||||
} = _ref2;
|
||||
return selected;
|
||||
}
|
||||
};
|
||||
const pageSelectStrategy = {
|
||||
showSelectAll: true,
|
||||
allSelected: _ref3 => {
|
||||
let {
|
||||
currentPage
|
||||
} = _ref3;
|
||||
return currentPage;
|
||||
},
|
||||
select: _ref4 => {
|
||||
let {
|
||||
items,
|
||||
value,
|
||||
selected
|
||||
} = _ref4;
|
||||
for (const item of items) {
|
||||
if (value) selected.add(item.value);else selected.delete(item.value);
|
||||
}
|
||||
return selected;
|
||||
},
|
||||
selectAll: _ref5 => {
|
||||
let {
|
||||
value,
|
||||
currentPage,
|
||||
selected
|
||||
} = _ref5;
|
||||
return pageSelectStrategy.select({
|
||||
items: currentPage,
|
||||
value,
|
||||
selected
|
||||
});
|
||||
}
|
||||
};
|
||||
const allSelectStrategy = {
|
||||
showSelectAll: true,
|
||||
allSelected: _ref6 => {
|
||||
let {
|
||||
allItems
|
||||
} = _ref6;
|
||||
return allItems;
|
||||
},
|
||||
select: _ref7 => {
|
||||
let {
|
||||
items,
|
||||
value,
|
||||
selected
|
||||
} = _ref7;
|
||||
for (const item of items) {
|
||||
if (value) selected.add(item.value);else selected.delete(item.value);
|
||||
}
|
||||
return selected;
|
||||
},
|
||||
selectAll: _ref8 => {
|
||||
let {
|
||||
value,
|
||||
allItems,
|
||||
selected
|
||||
} = _ref8;
|
||||
return allSelectStrategy.select({
|
||||
items: allItems,
|
||||
value,
|
||||
selected
|
||||
});
|
||||
}
|
||||
};
|
||||
export const makeDataTableSelectProps = propsFactory({
|
||||
showSelect: Boolean,
|
||||
selectStrategy: {
|
||||
type: [String, Object],
|
||||
default: 'page'
|
||||
},
|
||||
modelValue: {
|
||||
type: Array,
|
||||
default: () => []
|
||||
},
|
||||
valueComparator: {
|
||||
type: Function,
|
||||
default: deepEqual
|
||||
}
|
||||
}, 'DataTable-select');
|
||||
export const VDataTableSelectionSymbol = Symbol.for('vuetify:data-table-selection');
|
||||
export function provideSelection(props, _ref9) {
|
||||
let {
|
||||
allItems,
|
||||
currentPage
|
||||
} = _ref9;
|
||||
const selected = useProxiedModel(props, 'modelValue', props.modelValue, v => {
|
||||
return new Set(wrapInArray(v).map(v => {
|
||||
return allItems.value.find(item => props.valueComparator(v, item.value))?.value ?? v;
|
||||
}));
|
||||
}, v => {
|
||||
return [...v.values()];
|
||||
});
|
||||
const allSelectable = computed(() => allItems.value.filter(item => item.selectable));
|
||||
const currentPageSelectable = computed(() => currentPage.value.filter(item => item.selectable));
|
||||
const selectStrategy = computed(() => {
|
||||
if (typeof props.selectStrategy === 'object') return props.selectStrategy;
|
||||
switch (props.selectStrategy) {
|
||||
case 'single':
|
||||
return singleSelectStrategy;
|
||||
case 'all':
|
||||
return allSelectStrategy;
|
||||
case 'page':
|
||||
default:
|
||||
return pageSelectStrategy;
|
||||
}
|
||||
});
|
||||
function isSelected(items) {
|
||||
return wrapInArray(items).every(item => selected.value.has(item.value));
|
||||
}
|
||||
function isSomeSelected(items) {
|
||||
return wrapInArray(items).some(item => selected.value.has(item.value));
|
||||
}
|
||||
function select(items, value) {
|
||||
const newSelected = selectStrategy.value.select({
|
||||
items,
|
||||
value,
|
||||
selected: new Set(selected.value)
|
||||
});
|
||||
selected.value = newSelected;
|
||||
}
|
||||
function toggleSelect(item) {
|
||||
select([item], !isSelected([item]));
|
||||
}
|
||||
function selectAll(value) {
|
||||
const newSelected = selectStrategy.value.selectAll({
|
||||
value,
|
||||
allItems: allSelectable.value,
|
||||
currentPage: currentPageSelectable.value,
|
||||
selected: new Set(selected.value)
|
||||
});
|
||||
selected.value = newSelected;
|
||||
}
|
||||
const someSelected = computed(() => selected.value.size > 0);
|
||||
const allSelected = computed(() => {
|
||||
const items = selectStrategy.value.allSelected({
|
||||
allItems: allSelectable.value,
|
||||
currentPage: currentPageSelectable.value
|
||||
});
|
||||
return !!items.length && isSelected(items);
|
||||
});
|
||||
const data = {
|
||||
toggleSelect,
|
||||
select,
|
||||
selectAll,
|
||||
isSelected,
|
||||
isSomeSelected,
|
||||
someSelected,
|
||||
allSelected,
|
||||
showSelectAll: selectStrategy.value.showSelectAll
|
||||
};
|
||||
provide(VDataTableSelectionSymbol, data);
|
||||
return data;
|
||||
}
|
||||
export function useSelection() {
|
||||
const data = inject(VDataTableSelectionSymbol);
|
||||
if (!data) throw new Error('Missing selection!');
|
||||
return data;
|
||||
}
|
||||
//# sourceMappingURL=select.mjs.map
|
||||
Reference in New Issue
Block a user