bootstrap-table
Version:
An extended table to integration with some of the most widely used CSS frameworks. (Supports Bootstrap, Semantic UI, Bulma, Material Design, Foundation)
218 lines (201 loc) • 6.39 kB
JavaScript
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
typeof define === 'function' && define.amd ? define(factory) :
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.BootstrapTable = factory());
})(this, (function () { 'use strict';
//
//
//
//
const $ = window.jQuery;
const deepCopy = arg => {
if (arg === undefined) {
return arg
}
return $.fn.bootstrapTable.utils.extend(true, Array.isArray(arg) ? [] : {}, arg)
};
var script = {
name: 'BootstrapTable',
props: {
columns: {
type: Array,
require: true
},
data: {
type: [Array, Object],
default () {
return undefined
}
},
options: {
type: Object,
default () {
return {}
}
}
},
mounted () {
this.$table = $(this.$el);
this.$table.on('all.bs.table', (e, name, args) => {
let eventName = $.fn.bootstrapTable.events[name];
eventName = eventName.replace(/([A-Z])/g, '-$1').toLowerCase();
this.$emit('on-all', ...args);
this.$emit(eventName, ...args);
});
this._initTable();
},
methods: {
_initTable () {
const options = {
...deepCopy(this.options),
columns: deepCopy(this.columns),
data: deepCopy(this.data)
};
if (!this._hasInit) {
this.$table.bootstrapTable(options);
this._hasInit = true;
} else {
this.refreshOptions(options);
}
},
...(() => {
const res = {};
for (const method of $.fn.bootstrapTable.methods) {
res[method] = function (...args) {
return this.$table.bootstrapTable(method, ...args)
};
}
return res
})()
},
watch: {
options: {
handler () {
this._initTable();
},
deep: true
},
columns: {
handler () {
this._initTable();
},
deep: true
},
data: {
handler () {
this.load(deepCopy(this.data));
},
deep: true
}
}
};
function normalizeComponent(template, style, script, scopeId, isFunctionalTemplate, moduleIdentifier /* server only */, shadowMode, createInjector, createInjectorSSR, createInjectorShadow) {
if (typeof shadowMode !== 'boolean') {
createInjectorSSR = createInjector;
createInjector = shadowMode;
shadowMode = false;
}
// Vue.extend constructor export interop.
const options = typeof script === 'function' ? script.options : script;
// render functions
if (template && template.render) {
options.render = template.render;
options.staticRenderFns = template.staticRenderFns;
options._compiled = true;
// functional template
if (isFunctionalTemplate) {
options.functional = true;
}
}
// scopedId
if (scopeId) {
options._scopeId = scopeId;
}
let hook;
if (moduleIdentifier) {
// server build
hook = function (context) {
// 2.3 injection
context =
context || // cached call
(this.$vnode && this.$vnode.ssrContext) || // stateful
(this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext); // functional
// 2.2 with runInNewContext: true
if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
context = __VUE_SSR_CONTEXT__;
}
// inject component styles
if (style) {
style.call(this, createInjectorSSR(context));
}
// register component module identifier for async chunk inference
if (context && context._registeredComponents) {
context._registeredComponents.add(moduleIdentifier);
}
};
// used by ssr in case component is cached and beforeCreate
// never gets called
options._ssrRegister = hook;
}
else if (style) {
hook = shadowMode
? function (context) {
style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot));
}
: function (context) {
style.call(this, createInjector(context));
};
}
if (hook) {
if (options.functional) {
// register for functional component in vue file
const originalRender = options.render;
options.render = function renderWithStyleInjection(h, context) {
hook.call(context);
return originalRender(h, context);
};
}
else {
// inject component registration as beforeCreate hook
const existing = options.beforeCreate;
options.beforeCreate = existing ? [].concat(existing, hook) : [hook];
}
}
return script;
}
/* script */
const __vue_script__ = script;
/* template */
var __vue_render__ = function () {
var _vm = this;
var _h = _vm.$createElement;
var _c = _vm._self._c || _h;
return _c("table")
};
var __vue_staticRenderFns__ = [];
__vue_render__._withStripped = true;
/* style */
const __vue_inject_styles__ = undefined;
/* scoped */
const __vue_scope_id__ = undefined;
/* module identifier */
const __vue_module_identifier__ = undefined;
/* functional template */
const __vue_is_functional_template__ = false;
/* style inject */
/* style inject SSR */
/* style inject shadow dom */
const __vue_component__ = /*#__PURE__*/normalizeComponent(
{ render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },
__vue_inject_styles__,
__vue_script__,
__vue_scope_id__,
__vue_is_functional_template__,
__vue_module_identifier__,
false,
undefined,
undefined,
undefined
);
return __vue_component__;
}));