UNPKG

vuikit

Version:

A responsive Vue UI library for web site interfaces based on UIkit

89 lines (83 loc) 2.02 kB
/** * Vuikit 0.8.10 * (c) 2018 Miljan Aleksic * @license MIT **/ /* Substantial part of the code is adapted from UIkit, Copyright (c) 2013-2018 YOOtheme GmbH, getuikit.com */ import { mergeData } from './util/vue'; import { toggleClass } from './util/class'; import { assign } from './util/lang'; import VkMargin from './margin'; var ElementGrid = { functional: true, props: { tag: { type: String, default: 'div' }, divided: { type: Boolean, default: false }, matched: { type: Boolean, default: false }, gutter: { type: String, validator: function (val) { return !val || /^(small|medium|large|collapse)$/.test(val); } } }, render: function render (h, ref) { var obj; var props = ref.props; var data = ref.data; var children = ref.children; var tag = props.tag; var gutter = props.gutter; var divided = props.divided; var matched = props.matched; return h(tag, mergeData(data, { class: ['uk-grid', ( obj = { 'uk-grid-match': matched, 'uk-grid-divider': divided }, obj[("uk-grid-" + gutter)] = gutter, obj)] }), children) } } var grid = { name: 'VkGrid', directives: { VkMargin: VkMargin }, props: assign({}, ElementGrid.props, { margin: { type: String, default: 'uk-grid-margin' }, firstColumn: { type: String, default: 'uk-first-column' } }), render: function render (h) { var clsStack = 'uk-grid-stack'; var ref = this; var margin = ref.margin; var firstColumn = ref.firstColumn; return h(ElementGrid, { props: this.$props, directives: [{ name: 'vk-margin', value: { margin: margin, firstColumn: firstColumn, onUpdate: function (el, ref) { var stacks = ref.stacks; toggleClass(el, clsStack, stacks); } } }] }, this.$slots.default) } } export { ElementGrid, grid as Grid };