Skip to content

Commit 0771895

Browse files
authored
fix: normalize event data & remove null group items (#376)
1 parent d2b94ed commit 0771895

File tree

4 files changed

+22
-15
lines changed

4 files changed

+22
-15
lines changed

packages/multiple-select-vanilla/src/MultipleSelectInstance.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -981,17 +981,17 @@ export class MultipleSelectInstance {
981981
label: group.label,
982982
selected: !!group.selected,
983983
data: group._data,
984-
children: group.children.map((child: any) => {
985-
if (child) {
984+
children: group.children
985+
.filter((c: any) => c)
986+
.map((child: any) => {
986987
return removeUndefined({
987-
text: child.text,
988+
label: child.text,
988989
value: child.value,
989990
selected: child.selected,
990991
disabled: child.disabled,
991992
data: child._data,
992993
});
993-
}
994-
}),
994+
}),
995995
}),
996996
);
997997
this.handleOnChange('onOptgroupClick', {
@@ -1027,7 +1027,7 @@ export class MultipleSelectInstance {
10271027
this._check(option, checked);
10281028
this.options.onClick(
10291029
removeUndefined({
1030-
text: option.text,
1030+
label: option.text,
10311031
value: option.value,
10321032
selected: option.selected,
10331033
data: option._data,

packages/multiple-select-vanilla/src/models/multipleSelectOption.interface.ts

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,16 @@ import type { LocaleKey, MultipleSelectLocale } from './locale.interface.js';
55

66
export interface MultipleSelectView {
77
label: string;
8-
value: any;
9-
checked: boolean;
10-
instance: any;
8+
value?: any;
9+
selected: boolean;
10+
data: any;
11+
children?: Array<{
12+
label: string;
13+
value: any;
14+
selected: boolean;
15+
disabled: boolean;
16+
data: any;
17+
}>;
1118
}
1219

1320
export interface ClickedItem<T extends 'option' | 'optgroup'> {

packages/multiple-select-vanilla/src/utils/utils.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -111,8 +111,8 @@ export function stripScripts(dirtyHtml: string) {
111111
);
112112
}
113113

114-
export function removeUndefined(obj: any) {
115-
Object.keys(obj).forEach(key => (obj[key] === undefined ? delete obj[key] : ''));
114+
export function removeUndefined<T extends Record<string, unknown> = Record<string, unknown>>(obj: T): T {
115+
Object.keys(obj).forEach(key => (!isDefined(obj[key]) ? delete obj[key] : ''));
116116
return obj;
117117
}
118118

playwright/e2e/events.spec.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ test.describe('Events Demo', () => {
3939
'onBeforeOpen event fire!',
4040
'onBlur event fire!',
4141
'onOpen event fire!',
42-
'onOptgroupClick event fire! view: {"label":"Group 1","selected":true,"children":[null,{"text":"Option 1","value":"1","selected":true,"disabled":false},null,{"text":"Option 2","value":"2","selected":true,"disabled":false},null,{"text":"Option 3","value":"3","selected":true,"disabled":false},null]}',
42+
'onOptgroupClick event fire! view: {"label":"Group 1","selected":true,"children":[{"label":"Option 1","value":"1","selected":true,"disabled":false},{"label":"Option 2","value":"2","selected":true,"disabled":false},{"label":"Option 3","value":"3","selected":true,"disabled":false}]}',
4343
'onChange event fire! data: {"eventName":"onOptgroupClick","item":{"label":"Group 1","selected":true,"type":"optgroup"},"selection":{"labels":["[Group 1: Option 1, Option 2, Option 3]"],"values":["1","2","3"]}}',
4444
].join('\n'),
4545
);
@@ -57,7 +57,7 @@ test.describe('Events Demo', () => {
5757
'onBeforeOpen event fire!',
5858
'onBlur event fire!',
5959
'onOpen event fire!',
60-
'onOptgroupClick event fire! view: {"label":"Group 1","selected":true,"children":[null,{"text":"Option 1","value":"1","selected":true,"disabled":false},null,{"text":"Option 2","value":"2","selected":true,"disabled":false},null,{"text":"Option 3","value":"3","selected":true,"disabled":false},null]}',
60+
'onOptgroupClick event fire! view: {"label":"Group 1","selected":true,"children":[{"label":"Option 1","value":"1","selected":true,"disabled":false},{"label":"Option 2","value":"2","selected":true,"disabled":false},{"label":"Option 3","value":"3","selected":true,"disabled":false}]}',
6161
'onChange event fire! data: {"eventName":"onOptgroupClick","item":{"label":"Group 1","selected":true,"type":"optgroup"},"selection":{"labels":["[Group 1: Option 1, Option 2, Option 3]"],"values":["1","2","3"]}}',
6262
'onCheckAll event fire!',
6363
'onChange event fire! data: {"eventName":"onCheckAll","selection":{"labels":["[Group 1: Option 1, Option 2, Option 3]","[Group 2: Option 4, Option 5, Option 6]","[Group 3: Option 7, Option 8, Option 9]"],"values":["1","2","3","4","5","6","7","8","9"]}}',
@@ -77,7 +77,7 @@ test.describe('Events Demo', () => {
7777
'onBeforeOpen event fire!',
7878
'onBlur event fire!',
7979
'onOpen event fire!',
80-
'onOptgroupClick event fire! view: {"label":"Group 1","selected":true,"children":[null,{"text":"Option 1","value":"1","selected":true,"disabled":false},null,{"text":"Option 2","value":"2","selected":true,"disabled":false},null,{"text":"Option 3","value":"3","selected":true,"disabled":false},null]}',
80+
'onOptgroupClick event fire! view: {"label":"Group 1","selected":true,"children":[{"label":"Option 1","value":"1","selected":true,"disabled":false},{"label":"Option 2","value":"2","selected":true,"disabled":false},{"label":"Option 3","value":"3","selected":true,"disabled":false}]}',
8181
'onChange event fire! data: {"eventName":"onOptgroupClick","item":{"label":"Group 1","selected":true,"type":"optgroup"},"selection":{"labels":["[Group 1: Option 1, Option 2, Option 3]"],"values":["1","2","3"]}}',
8282
'onCheckAll event fire!',
8383
'onChange event fire! data: {"eventName":"onCheckAll","selection":{"labels":["[Group 1: Option 1, Option 2, Option 3]","[Group 2: Option 4, Option 5, Option 6]","[Group 3: Option 7, Option 8, Option 9]"],"values":["1","2","3","4","5","6","7","8","9"]}}',
@@ -100,7 +100,7 @@ test.describe('Events Demo', () => {
100100
'onBeforeOpen event fire!',
101101
'onBlur event fire!',
102102
'onOpen event fire!',
103-
'onOptgroupClick event fire! view: {"label":"Group 1","selected":true,"children":[null,{"text":"Option 1","value":"1","selected":true,"disabled":false},null,{"text":"Option 2","value":"2","selected":true,"disabled":false},null,{"text":"Option 3","value":"3","selected":true,"disabled":false},null]}',
103+
'onOptgroupClick event fire! view: {"label":"Group 1","selected":true,"children":[{"label":"Option 1","value":"1","selected":true,"disabled":false},{"label":"Option 2","value":"2","selected":true,"disabled":false},{"label":"Option 3","value":"3","selected":true,"disabled":false}]}',
104104
'onChange event fire! data: {"eventName":"onOptgroupClick","item":{"label":"Group 1","selected":true,"type":"optgroup"},"selection":{"labels":["[Group 1: Option 1, Option 2, Option 3]"],"values":["1","2","3"]}}',
105105
'onCheckAll event fire!',
106106
'onChange event fire! data: {"eventName":"onCheckAll","selection":{"labels":["[Group 1: Option 1, Option 2, Option 3]","[Group 2: Option 4, Option 5, Option 6]","[Group 3: Option 7, Option 8, Option 9]"],"values":["1","2","3","4","5","6","7","8","9"]}}',

0 commit comments

Comments
 (0)