Skip to content

Commit f69ce90

Browse files
committed
update event delegation
1 parent fd794d8 commit f69ce90

File tree

2 files changed

+37
-19
lines changed

2 files changed

+37
-19
lines changed

frameworks/keyed/million/package.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@
1717
"js-framework-benchmark": {
1818
"frameworkVersionFromPackage": "million",
1919
"customURL": "/dist",
20-
"frameworkHomeURL": "https://github.com/aidenybai/million"
20+
"frameworkHomeURL": "https://github.com/aidenybai/million",
21+
"issues": [
22+
801
23+
]
2124
}
2225
}

frameworks/keyed/million/src/main.js

Lines changed: 33 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
import {
22
Block,
33
fragment,
4-
FragmentBlock,
54
stringToDOM,
6-
withKey,
75
} from '/Users/aidenybai/Projects/aidenybai/million/packages/block/index';
86

97
const adjectives = [
@@ -128,21 +126,41 @@ const swapRows = () => {
128126
return false;
129127
};
130128

131-
let prevSelected;
132-
const select = (id, el) => {
133-
if (prevSelected) prevSelected.className = '';
134-
selected = id;
135-
el.className = 'danger';
136-
prevSelected = el;
137-
const row = main.children.findIndex((block) => block.props.id === id);
138-
row.props.className = 'danger';
139-
const prevRow = main.children.findIndex((block) => block.props.id === id);
140-
prevRow.props.className = '';
129+
let prevBlock;
130+
131+
const select = (id) => {
132+
const block = main.children.find((block) => block.props.id === id);
133+
const row = Row(
134+
{
135+
id: block.props.id,
136+
label: block.props.label,
137+
className: 'danger',
138+
},
139+
id
140+
);
141+
row.memo = [block.props.label, true];
142+
block.patch(row);
143+
144+
if (prevBlock) {
145+
const row = Row(
146+
{
147+
id: prevBlock.props.id,
148+
label: prevBlock.props.label,
149+
className: '',
150+
},
151+
prevBlock.props.id
152+
);
153+
row.memo = [prevBlock.props.label, false];
154+
prevBlock.patch(row);
155+
}
156+
157+
prevBlock = block;
141158
};
142159

143160
const remove = (id) => {
144161
const index = list.findIndex((item) => item.id === id);
145162
list.splice(index, 1);
163+
main.children[index].remove();
146164
main.children.splice(index, 1);
147165
};
148166

@@ -217,8 +235,7 @@ function render(oldCache, newCache) {
217235
label: item.label,
218236
className: isSelected ? 'danger' : '',
219237
},
220-
id,
221-
false
238+
id
222239
);
223240
row.memo = [item.label, isSelected];
224241
newCache[item.id] = row;
@@ -310,13 +327,11 @@ function render(oldCache, newCache) {
310327
name: 'onClick',
311328
listener: (event) => {
312329
const el = event.target;
313-
const row = el.closest('tr');
314-
const id = Number(row.firstChild.textContent);
330+
const id = Number(el.closest('tr').firstChild.textContent);
315331
if (el.matches('.glyphicon-remove')) {
316-
row.remove();
317332
remove(id);
318333
} else {
319-
select(id, row);
334+
select(id);
320335
}
321336
return false;
322337
},

0 commit comments

Comments
 (0)