Skip to content

Commit 67c41bd

Browse files
authored
Merge pull request #1128 from merico-dev/1127-filter-select-is-mistakenly-resetting-value
1127 filter select is mistakenly resetting value
2 parents e65ccac + dd962b0 commit 67c41bd

File tree

7 files changed

+35
-19
lines changed

7 files changed

+35
-19
lines changed

api/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@devtable/api",
3-
"version": "10.18.0",
3+
"version": "10.18.1",
44
"description": "",
55
"main": "index.js",
66
"scripts": {

dashboard/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@devtable/dashboard",
3-
"version": "10.18.0",
3+
"version": "10.18.1",
44
"license": "Apache-2.0",
55
"publishConfig": {
66
"access": "public",

dashboard/src/components/filter/filter-select/render.tsx

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
11
import { Select } from '@mantine/core';
22
import { observer } from 'mobx-react-lite';
3-
import { useEffect } from 'react';
43
import { useRenderContentModelContext } from '~/contexts';
54
import { FilterMetaInstance, FilterSelectConfigInstance } from '~/model';
65
import { FilterSelectItem } from '../select-item';
76

87
interface IFilterSelect extends Omit<FilterMetaInstance, 'key' | 'type' | 'config'> {
98
config: FilterSelectConfigInstance;
10-
value: $TSFixMe;
9+
value: string;
1110
onChange: (v: string, forceSubmit?: boolean) => void;
1211
}
1312

@@ -17,17 +16,6 @@ export const FilterSelect = observer(({ label, config, value, onChange }: IFilte
1716
const { state, error } = model.getDataStuffByID(config.options_query_id);
1817
const loading = state === 'loading';
1918

20-
useEffect(() => {
21-
const { default_selection_count } = config;
22-
if (!default_selection_count) {
23-
return;
24-
}
25-
const newValue = config.options[0]?.value ?? '';
26-
27-
console.log('Selecting the first option by default. New value: ', newValue);
28-
onChange(newValue, true);
29-
}, [config.default_selection_count, config.options]); // excluding onChange from deps, since it's always re-created
30-
3119
return (
3220
<Select
3321
label={label}

dashboard/src/model/meta-model/dashboard/content/filter/widgets/select.ts

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
import { Instance, types } from 'mobx-state-tree';
1+
import { addDisposer, getParent, getRoot, Instance, types } from 'mobx-state-tree';
22
import { FilterBaseSelectConfigMeta } from './select-base';
33
import { shallowToJS } from '~/utils/shallow-to-js';
4+
import { reaction, toJS } from 'mobx';
45

56
export const FilterSelectConfigMeta = types
67
.compose(
@@ -32,6 +33,15 @@ export const FilterSelectConfigMeta = types
3233
getSelectOption(value: string) {
3334
return self.options.find((o) => o.value === value);
3435
},
36+
get default_selection() {
37+
if (!self.usingQuery) {
38+
return self.default_value;
39+
}
40+
if (self.default_selection_count > 0 && self.options.length > 0) {
41+
return self.options[0].value;
42+
}
43+
return '';
44+
},
3545
}))
3646
.actions((self) => ({
3747
setRequired(required: boolean) {
@@ -43,6 +53,24 @@ export const FilterSelectConfigMeta = types
4353
setWidth(v: string) {
4454
self.width = v;
4555
},
56+
setDefaultSelection() {
57+
// @ts-expect-error getRoot type
58+
const filters = getRoot(self).content.filters;
59+
// @ts-expect-error Property 'key' does not exist on type 'IStateTreeNode<IAnyStateTreeNode>
60+
const key = getParent(self).key;
61+
filters.setValueByKey(key, self.default_selection);
62+
},
63+
}))
64+
.actions((self) => ({
65+
afterCreate() {
66+
addDisposer(
67+
self,
68+
reaction(() => toJS(self.default_selection), self.setDefaultSelection, {
69+
fireImmediately: true,
70+
delay: 0,
71+
}),
72+
);
73+
},
4674
}));
4775

4876
export type FilterSelectConfigInstance = Instance<typeof FilterSelectConfigMeta>;

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@devtable/root",
3-
"version": "10.18.0",
3+
"version": "10.18.1",
44
"private": true,
55
"workspaces": [
66
"api",

settings-form/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@devtable/settings-form",
3-
"version": "10.18.0",
3+
"version": "10.18.1",
44
"license": "Apache-2.0",
55
"publishConfig": {
66
"access": "public",

website/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "@devtable/website",
33
"private": true,
44
"license": "Apache-2.0",
5-
"version": "10.18.0",
5+
"version": "10.18.1",
66
"scripts": {
77
"dev": "vite",
88
"preview": "vite preview"

0 commit comments

Comments
 (0)