Skip to content

Commit 9e1d025

Browse files
committed
move DropdownSelect to -> dropdown/ dir and move <li> tag to a new class named Item
1 parent 3304065 commit 9e1d025

File tree

11 files changed

+522
-400
lines changed

11 files changed

+522
-400
lines changed

dist/js/app.js

Lines changed: 212 additions & 167 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/js/app.js.gz

156 Bytes
Binary file not shown.

dist/js/app.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/js/app.js.map.gz

167 Bytes
Binary file not shown.

dist/js/multiple-select.js

Lines changed: 212 additions & 167 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/js/multiple-select.js.gz

157 Bytes
Binary file not shown.

dist/js/multiple-select.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/js/multiple-select.js.map.gz

167 Bytes
Binary file not shown.

src/components/Container.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import DropdownSelect from "./DropdownSelect";
1+
import DropdownSelect from "./dropdown/DropdownSelect";
22
import SelectButton from "./SelectButton";
33

44
class Container {
Lines changed: 11 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
import SearchInput from "./SearchInput";
1+
import SearchInput from "../SearchInput";
2+
import Item from "./Item";
23

34
class DropdownSelect {
45
constructor ({ container }) {
@@ -31,7 +32,6 @@ class DropdownSelect {
3132
})
3233

3334
this.$container.$root.$store.on('hoveredItemIndexChange', index => {
34-
console.log('hovered item index', index)
3535
this._rerenderOptionsItems()
3636
})
3737

@@ -45,7 +45,6 @@ class DropdownSelect {
4545
}
4646

4747
_buildOptionItems () {
48-
let store = this.$container.$root.$store
4948
let listGroup = this.$dropdownSelect.querySelector('.list-group')
5049

5150
this.$optionItems = []
@@ -62,53 +61,16 @@ class DropdownSelect {
6261
listGroup.removeChild(listGroup.lastChild)
6362
}
6463

65-
this.filteredItems.forEach((item, i) => {
66-
let itemDom = document.createElement('li')
67-
68-
69-
itemDom.classList.add(
70-
'list-group-item', 'd-flex', 'flex-row',
71-
'justify-content-between', 'p-2', 'rounded-0'
72-
)
73-
74-
if (item.disabled) {
75-
itemDom.classList.add('disabled')
76-
}
77-
78-
itemDom.setAttribute('value', item.value)
79-
itemDom.innerText = item.label
80-
81-
itemDom.addEventListener('click', (e) => {
82-
let selectedItems = store.selectedItems
83-
let currentTarget = e.currentTarget
84-
let index = selectedItems.findIndex(item => item.value === currentTarget.getAttribute('value'))
85-
86-
if (index > -1) {
87-
selectedItems.splice(index, 1)
88-
} else {
89-
if (store.isMultiple) {
90-
selectedItems.push({
91-
value: currentTarget.getAttribute('value'),
92-
label: currentTarget.innerText
93-
})
94-
} else {
95-
selectedItems = [{
96-
value: currentTarget.getAttribute('value'),
97-
label: currentTarget.innerText
98-
}]
99-
100-
// close this dropdown
101-
this.$container.$root.$store.isOpened = false
102-
}
103-
}
104-
105-
store.selectedItems = selectedItems
106-
this._rerenderOptionsItems()
107-
this.$input.focus()
64+
this.filteredItems.forEach((item, index) => {
65+
let itemDom = new Item({
66+
root: this.$container.$root,
67+
dropdownSelect: this,
68+
item,
69+
index
10870
})
10971

11072
this.$optionItems.push(itemDom)
111-
listGroup.appendChild(itemDom)
73+
listGroup.appendChild(itemDom.el)
11274
})
11375

11476
// if no result
@@ -125,22 +87,8 @@ class DropdownSelect {
12587
}
12688

12789
_rerenderOptionsItems () {
128-
let store = this.$container.$root.$store
129-
130-
this.$optionItems.forEach((itemDom, i) => {
131-
// is selected
132-
if (store.selectedItems.find(item => item.value === itemDom.getAttribute('value'))) {
133-
itemDom.classList.add('list-group-item-primary')
134-
} else {
135-
itemDom.classList.remove('list-group-item-primary')
136-
}
137-
138-
// if this item is hovered
139-
if (i === this.$container.$root.$store.hoveredItemIndex) {
140-
itemDom.classList.add('hover')
141-
} else {
142-
itemDom.classList.remove('hover')
143-
}
90+
this.$optionItems.forEach((itemDom) => {
91+
itemDom.render()
14492
})
14593
}
14694

0 commit comments

Comments
 (0)