framework7-vue
Version:
Build full featured iOS & Android apps using Framework7 & Vue
53 lines • 2.07 kB
JavaScript
import { renderSlot as _renderSlot, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock } from "vue";
const _hoisted_1 = ["data-sortable-move-elements"];
function render(_ctx, _cache) {
return _openBlock(), _createElementBlock("div", {
class: _normalizeClass(_ctx.classes),
"data-sortable-move-elements": typeof _ctx.sortableMoveElements !== 'undefined' ? _ctx.sortableMoveElements.toString() : undefined
}, [_createElementVNode("ul", null, [_renderSlot(_ctx.$slots, "default")])], 10, _hoisted_1);
}
import { computed, provide, inject } from 'vue';
import { classNames } from '../shared/utils.js';
import { colorClasses, colorProps } from '../shared/mixins.js';
export default {
name: 'f7-list-group',
render,
props: {
mediaList: Boolean,
simpleList: Boolean,
sortable: Boolean,
sortableOpposite: Boolean,
sortableTapHold: Boolean,
sortableMoveElements: {
type: Boolean,
default: undefined
},
...colorProps
},
setup(props) {
const ListContextParent = inject('ListContext', {
value: {
listIsMedia: props.mediaList,
listIsSimple: props.simpleList,
listIsSortable: props.sortable,
listIsSortableOpposite: props.sortableOpposite
}
});
const ListContext = computed(() => ({
listIsMedia: props.mediaList || ListContextParent.value.listIsMedia,
listIsSimple: props.simpleList || ListContextParent.value.listIsSimple,
listIsSortable: props.sortable || ListContextParent.value.listIsSortable,
listIsSortableOpposite: props.sortableOpposite || ListContextParent.value.listIsSortableOpposite
}));
provide('ListContext', ListContext);
const classes = computed(() => classNames('list-group', {
'media-list': props.mediaList,
sortable: props.sortable,
'sortable-tap-hold': props.sortableTapHold,
'sortable-opposite': props.sortableOpposite
}, colorClasses(props)));
return {
classes
};
}
};