UNPKG

bootstrap-vue

Version:

With more than 85 components, over 45 available plugins, several directives, and 1000+ icons, BootstrapVue provides one of the most comprehensive implementations of the Bootstrap v4 component and grid system available for Vue.js v2.6, complete with extens

84 lines (75 loc) 2.43 kB
import get from '../utils/get'; import { stripTags } from '../utils/html'; import { isArray, isPlainObject, isUndefined } from '../utils/inspect'; import { keys } from '../utils/object'; import { warn } from '../utils/warn'; var OPTIONS_OBJECT_DEPRECATED_MSG = 'Setting prop "options" to an object is deprecated. Use the array format instead.'; // @vue/component export default { props: { options: { type: [Array, Object], default: function _default() { return []; } }, valueField: { type: String, default: 'value' }, textField: { type: String, default: 'text' }, htmlField: { type: String, default: 'html' }, disabledField: { type: String, default: 'disabled' } }, computed: { formOptions: function formOptions() { return this.normalizeOptions(this.options); } }, methods: { normalizeOption: function normalizeOption(option) { var key = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; // When the option is an object, normalize it if (isPlainObject(option)) { var value = get(option, this.valueField); var text = get(option, this.textField); return { value: isUndefined(value) ? key || text : value, text: stripTags(String(isUndefined(text) ? key : text)), html: get(option, this.htmlField), disabled: Boolean(get(option, this.disabledField)) }; } // Otherwise create an `<option>` object from the given value return { value: key || option, text: stripTags(String(option)), disabled: false }; }, normalizeOptions: function normalizeOptions(options) { var _this = this; // Normalize the given options array if (isArray(options)) { return options.map(function (option) { return _this.normalizeOption(option); }); } else if (isPlainObject(options)) { // Deprecate the object options format warn(OPTIONS_OBJECT_DEPRECATED_MSG, this.$options.name); // Normalize a `options` object to an array of options return keys(options).map(function (key) { return _this.normalizeOption(options[key] || {}, key); }); } // If not an array or object, return an empty array /* istanbul ignore next */ return []; } } };