zmp-vue
Version:
Build full featured iOS & Android apps using ZMP & Vue
59 lines (56 loc) • 2.37 kB
JavaScript
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
import { renderSlot as _renderSlot, createVNode as _createVNode, openBlock as _openBlock, createBlock as _createBlock } from "vue";
function render(_ctx, _cache) {
return _openBlock(), _createBlock("div", {
class: _ctx.classes,
"data-sortable-move-elements": typeof _ctx.sortableMoveElements !== 'undefined' ? _ctx.sortableMoveElements.toString() : undefined
}, [_createVNode("ul", null, [_renderSlot(_ctx.$slots, "default")])], 10, ["data-sortable-move-elements"]);
}
import { computed, provide, inject } from 'vue';
import { classNames } from '../shared/utils';
import { colorClasses, colorProps } from '../shared/mixins';
export default {
name: 'zmp-list-group',
render: render,
props: _extends({
mediaList: Boolean,
simpleList: Boolean,
sortable: Boolean,
sortableOpposite: Boolean,
sortableTapHold: Boolean,
sortableMoveElements: {
type: Boolean,
default: undefined
}
}, colorProps),
setup: function setup(props) {
var ListContextParent = inject('ListContext', {
value: {
listIsMedia: props.mediaList,
listIsSimple: props.simpleList,
listIsSortable: props.sortable,
listIsSortableOpposite: props.sortableOpposite
}
});
var ListContext = computed(function () {
return {
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);
var classes = computed(function () {
return classNames('list-group', {
'media-list': props.mediaList,
sortable: props.sortable,
'sortable-tap-hold': props.sortableTapHold,
'sortable-opposite': props.sortableOpposite
}, colorClasses(props));
});
return {
classes: classes
};
}
};