Skip to content

Commit 8c59f13

Browse files
authored
Merge pull request #1880 from fabienwnklr/master
Several fix for consolidation
2 parents 07e3904 + 40af370 commit 8c59f13

File tree

9 files changed

+42
-17
lines changed

9 files changed

+42
-17
lines changed

examples/js/index.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ $(function() {
77
var themes = ['default','legacy','bootstrap2','bootstrap3','bootstrap4','bootstrap5'];
88
$('head').append('<link rel="stylesheet" href="../dist/css/selectize.' + theme + '.css">');
99

10+
if (theme === 'bootstrap5') $('head').append('<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-Zenh87qX5JnK2Jl0vWa8Ck2rdkQ2Bzep5IDxbcnCeuOxjzrPF/et3URy9Bv1WTRi" crossorigin="anonymous">');
11+
1012
var $themes = $('<div>').addClass('theme-selector').insertAfter('h1');
1113
for (var i = 0; i < themes.length; i++) {
1214
$themes.append('<a href="?theme=' + themes[i] + '"' + (themes[i] === theme ? ' class="active"' : '') + '>' + themes[i] + '</a>');

examples/plugins.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ <h2>Plugin: "remove_button"</h2>
6161
create: true,
6262
render: {
6363
item: function(data, escape) {
64-
return '<div>"' + escape(data.text) + '"</div>';
64+
return '<div class="item">"' + escape(data.text) + '"</div>';
6565
}
6666
},
6767
onDelete: function(values) {

src/plugins/clear_button/plugin.less

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
.selectize-control.plugin-clear_button {
22
.clear {
3+
text-decoration: none;
34
display: flex;
45
position: absolute;
56
height: 100%;

src/plugins/clear_button/plugin.scss

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
.#{$selectize}-control.plugin-clear_button {
22
.clear {
3+
text-decoration: none;
34
display: flex;
45
position: absolute;
56
height: 100%;
@@ -24,5 +25,5 @@
2425
&.single .clear {
2526
right: calc(#{$select-padding-x} - #{$select-padding-item-x} + 1.5rem);
2627
}
27-
28-
}
28+
29+
}

src/plugins/dropdown_header/plugin.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,10 @@ Selectize.define('dropdown_header', function(options) {
4242
return function() {
4343
original.apply(self, arguments);
4444
self.$dropdown_header = $(options.html(options));
45-
self.$dropdown.prepend(self.$dropdown_header);
45+
self.$dropdown.prepend(self.$dropdown_header);
46+
self.$dropdown_header.find('.' + options.closeClass).on('click', function () {
47+
self.close();
48+
});
4649
};
4750
})();
4851

src/plugins/dropdown_header/plugin.less

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@
1414
margin-top: -12px;
1515
line-height: 20px;
1616
font-size: 20px !important;
17+
text-decoration: none;
1718
}
1819
.selectize-dropdown-header-close:hover {
1920
color: darken(@selectize-color-text, 25%);
20-
}
21+
}

src/plugins/dropdown_header/plugin.scss

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
.#{$selectize}-control {
1+
.#{$selectize}-dropdown.plugin-dropdown_header {
22
.#{$selectize}-dropdown-header {
33
position: relative;
44
padding: ($select-padding-dropdown-item-y * 2)
@@ -16,6 +16,7 @@
1616
margin-top: -12px;
1717
line-height: 20px;
1818
font-size: 20px !important;
19+
text-decoration: none;
1920
}
2021
.#{$selectize}-dropdown-header-close:hover {
2122
color: darken($select-color-text, 25%);

src/scss/selectize.bootstrap5.scss

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ $select-arrow-offset: calc(#{$select-padding-x} + 5px) !default;
137137

138138
.#{$selectize}-control {
139139
&.form-control-sm {
140-
.#{$selectize}-input.has-items {
140+
.#{$selectize}-input {
141141
min-height: $input-height-sm !important;
142142
height: $input-height-sm;
143143
padding: $input-padding-y-sm $input-padding-x-sm !important;
@@ -147,7 +147,7 @@ $select-arrow-offset: calc(#{$select-padding-x} + 5px) !default;
147147
}
148148

149149
&.multi {
150-
.#{$selectize}-input.has-items {
150+
.#{$selectize}-input {
151151
height: auto;
152152
padding-left: calc(#{$select-padding-x} - #{$select-padding-item-x});
153153
padding-right: calc(#{$select-padding-x} - #{$select-padding-item-x});

src/selectize.js

Lines changed: 25 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1199,7 +1199,11 @@ $.extend(Selectize.prototype, {
11991199
for (i = 0, n = self.items.length; i < n; i++) {
12001200
self.getOption(self.items[i]).addClass('selected');
12011201
}
1202-
}
1202+
}
1203+
1204+
if (self.settings.dropdownSize.sizeType !== 'auto' && self.isOpen) {
1205+
self.setupDropdownHeight();
1206+
}
12031207

12041208
// add create option
12051209
has_create_option = self.canCreate(query);
@@ -1952,18 +1956,30 @@ $.extend(Selectize.prototype, {
19521956
var height = this.settings.dropdownSize.sizeValue;
19531957

19541958
if (this.settings.dropdownSize.sizeType === 'numberItems') {
1955-
var $items = this.$dropdown_content.children();
1959+
// retrieve all items (included optgroup but exept the container .optgroup)
1960+
var $items = this.$dropdown_content.find('*').not('.optgroup, .highlight');
19561961
var totalHeight = 0;
19571962

1958-
$items.each(function (i, $item) {
1959-
if (i === height) return false;
19601963

1961-
totalHeight += $($item).outerHeight(true);
1962-
});
1964+
for (var i = 0; i < height; i++) {
1965+
var $item = $($items[i]);
1966+
1967+
if ($item.length === 0) break;
1968+
1969+
totalHeight += $($items[i]).outerHeight(true);
1970+
// If not selectable, it's an optgroup so we "ignore" for count items
1971+
if (typeof $item.data('selectable') == 'undefined') height++;
1972+
1973+
}
1974+
1975+
// Get padding top for add to global height
1976+
var paddingTop = this.$dropdown_content.css('padding-top') ? Number(this.$dropdown_content.css('padding-top').replace(/\W*(\w)\w*/g, '$1')) : 0;
1977+
var paddingBottom = this.$dropdown_content.css('padding-bottom') ? Number(this.$dropdown_content.css('padding-bottom').replace(/\W*(\w)\w*/g, '$1')) : 0;
19631978

1964-
// Get padding top for subtract to global height to avoid seeing the next item
1965-
var padding = this.$dropdown_content.css('padding-top') ? this.$dropdown_content.css('padding-top').replace(/\W*(\w)\w*/g, '$1') : 0;
1966-
height = (totalHeight - padding) + 'px';
1979+
height = (totalHeight + paddingTop + paddingBottom) + 'px';
1980+
} else if (this.settings.dropdownSize.sizeType !== 'fixedHeight') {
1981+
console.warn('Selectize.js - Value of "sizeType" must be "fixedHeight" or "numberItems');
1982+
return;
19671983
}
19681984

19691985
this.$dropdown_content.css({ height: height, maxHeight: 'none' });

0 commit comments

Comments
 (0)