UNPKG

@progress/kendo-ui

Version:

This package is part of the [Kendo UI for jQuery](http://www.telerik.com/kendo-ui) suite.

100 lines (98 loc) 3.26 kB
//#region ../src/kendo.multicolumncombobox.js const __meta__ = { id: "multicolumncombobox", name: "MultiColumnComboBox", category: "web", description: "The MultiColumnComboBox widget allows the selection from pre-defined values or entering a new value where the list popup is rendered in table layout.", depends: ["combobox"], features: [{ id: "mobile-scroller", name: "Mobile scroller", description: "Support for kinetic scrolling in mobile device", depends: ["mobile.scroller"] }, { id: "virtualization", name: "VirtualList", description: "Support for virtualization", depends: ["virtuallist"] }] }; (function($, undefined) { var kendo = window.kendo, ui = kendo.ui, ComboBox = ui.ComboBox, Select = ui.Select, percentageUnitsRegex = /^\d+(\.\d+)?%$/i, MCCOMBOBOX = "k-dropdowngrid", POPUPCLASS = "k-dropdowngrid-popup"; var MultiColumnComboBox = ComboBox.extend({ init: function(element, options) { ComboBox.fn.init.call(this, element, options); this.list.parent().addClass(POPUPCLASS); if (this._allColumnsWidthsAreSet(this.options)) { this.list.parent().width(this._calculateDropDownWidth(this.options)); } else if (this.options.dropDownWidth) { this.list.parent().width(this.options.dropDownWidth); } }, options: { name: "MultiColumnComboBox", ns: ".kendoMultiColumnComboBox", columns: [], dropDownWidth: null, filterFields: [] }, setOptions: function(options) { ComboBox.fn.setOptions.call(this, options); if (this._allColumnsWidthsAreSet(options)) { this.list.parent().width(this._calculateDropDownWidth(options)); } else if (this.options.dropDownWidth) { this.list.parent().width(this.options.dropDownWidth); } }, _popup: function() { Select.fn._popup.call(this); this.popup.element.removeClass("k-list-container"); }, _allColumnsWidthsAreSet: function(options) { var columns = options.columns; if (!columns || !columns.length) { return false; } for (var i = 0; i < columns.length; i++) { var currentWidth = columns[i].width; if (!currentWidth || isNaN(parseInt(currentWidth, 10)) || percentageUnitsRegex.test(currentWidth)) { return false; } } return true; }, _calculateDropDownWidth: function(options) { var columns = options.columns; var totalWidth = kendo.support.scrollbar(); for (var i = 0; i < columns.length; i++) { var currentWidth = columns[i].width; totalWidth = totalWidth + parseInt(currentWidth, 10); } return totalWidth; }, _wrapper: function() { ComboBox.fn._wrapper.call(this); this.wrapper.addClass(MCCOMBOBOX); } }); ui.plugin(MultiColumnComboBox); kendo.cssProperties.registerPrefix("MultiColumnComboBox", "k-input-"); kendo.cssProperties.registerValues("MultiColumnComboBox", [{ prop: "rounded", values: kendo.cssProperties.roundedValues.concat([["full", "full"]]) }]); })(window.kendo.jQuery); var kendo_multicolumncombobox_default = kendo; //#endregion Object.defineProperty(exports, '__meta__', { enumerable: true, get: function () { return __meta__; } }); Object.defineProperty(exports, 'kendo_multicolumncombobox_default', { enumerable: true, get: function () { return kendo_multicolumncombobox_default; } });