Skip to content

Commit 5d13be7

Browse files
authored
Merge pull request #457 from platanus/fix/filters
Fix filters style
2 parents e49f076 + 2c4e012 commit 5d13be7

File tree

1 file changed

+28
-10
lines changed

1 file changed

+28
-10
lines changed

app/javascript/activeadmin_addons/inputs/slim-select.js

Lines changed: 28 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,8 @@ const selectTypes = {
1818
tagsSelect,
1919
};
2020

21-
// eslint-disable-next-line max-statements
21+
// eslint-disable-next-line max-statements, complexity
2222
function setupSelect(el) {
23-
const emptyOption = el.querySelector('option[value=""]');
24-
if (!emptyOption) {
25-
el.insertAdjacentHTML('afterbegin', '<option value=""></option>');
26-
}
27-
el.querySelector('option[value=""]').dataset.placeholder = true;
28-
29-
el.style.width = el.dataset.width;
3023
let settings = {
3124
select: el,
3225
settings: {
@@ -35,6 +28,31 @@ function setupSelect(el) {
3528
},
3629
};
3730

31+
const selectStyles = window.getComputedStyle(el);
32+
el.style.width = el.dataset.width;
33+
el.style.fontSize = selectStyles.fontSize;
34+
35+
const searchSelectFilter = el.closest('.filter_form_field');
36+
if (searchSelectFilter) {
37+
if (searchSelectFilter.classList.contains('search_select_filter') ||
38+
searchSelectFilter.classList.contains('filter_string')) {
39+
settings.settings.allowDeselect = false;
40+
}
41+
42+
if (el.options.length > 0) {
43+
el.style.width = el.dataset.width || selectStyles.width;
44+
if (selectStyles.display === 'inline-block') {
45+
el.style.display = 'inline-flex';
46+
}
47+
}
48+
}
49+
50+
const emptyOption = el.querySelector('option[value=""]');
51+
if (!emptyOption) {
52+
el.insertAdjacentHTML('afterbegin', '<option value=""></option>');
53+
}
54+
el.querySelector('option[value=""]').dataset.placeholder = true;
55+
3856
Object.keys(selectTypes).forEach((type) => {
3957
if (selectTypes[type].classes.some((className) => el.classList.contains(className))) {
4058
settings = merge({}, settings, selectTypes[type].settings(el));
@@ -44,8 +62,8 @@ function setupSelect(el) {
4462
}
4563
});
4664

47-
const slim = new SlimSelect(settings);
48-
el.dataset.slimSelectId = slim.settings.id;
65+
// eslint-disable-next-line no-new
66+
new SlimSelect(settings);
4967
}
5068

5169
function initSelects(node = document) {

0 commit comments

Comments
 (0)