Skip to content

Commit 6c1d910

Browse files
authored
Merge pull request #1625 from merico-dev/1624-accept-searchbutton-instead-of-searchbuttonprops-for-better-customization
1624 accept searchbutton instead of searchbuttonprops for better customization
2 parents 2f3026d + 2ca6e53 commit 6c1d910

File tree

12 files changed

+30
-23
lines changed

12 files changed

+30
-23
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": "14.14.0",
3+
"version": "14.15.0",
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": "14.14.0",
3+
"version": "14.15.0",
44
"license": "Apache-2.0",
55
"publishConfig": {
66
"access": "public",

dashboard/src/components/filter/index.tsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,10 @@ export const Filters = observer(function _Filters({ view }: { view: ViewMetaInst
7070
}
7171
};
7272

73+
const submit = useMemo(() => handleSubmit(content.filters.setValues), [handleSubmit, content.filters.setValues]);
74+
7375
return (
74-
<form onSubmit={handleSubmit(content.filters.setValues)}>
76+
<form>
7577
<FilterToggler opened={opened} toggle={toggle} />
7678
<Collapse in={opened}>
7779
<Group
@@ -94,7 +96,7 @@ export const Filters = observer(function _Filters({ view }: { view: ViewMetaInst
9496
</Group>
9597
{!allAutoSubmit && (
9698
<Group sx={{ alignSelf: 'flex-end' }}>
97-
<SearchButton disabled={searchButtonDisabled} />
99+
<SearchButton disabled={searchButtonDisabled} onSubmit={submit} />
98100
</Group>
99101
)}
100102
</Group>
Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
import { Button } from '@mantine/core';
22
import { useDashboardThemeContext } from '~/contexts';
3+
import { RenderSearchButtonProps } from '~/index';
34

4-
export const SearchButton = ({ disabled }: { disabled: boolean }) => {
5-
const { searchButtonProps } = useDashboardThemeContext();
6-
const { children = 'Search', ...rest } = searchButtonProps;
5+
export const SearchButton = ({ disabled, onSubmit }: RenderSearchButtonProps) => {
6+
const { renderSearchButton } = useDashboardThemeContext();
7+
if (renderSearchButton) {
8+
return renderSearchButton({ disabled, onSubmit });
9+
}
710
return (
8-
<Button color="blue" size="sm" type="submit" {...rest} disabled={disabled || rest.disabled}>
9-
{children}
11+
<Button color="blue" size="sm" onClick={onSubmit} disabled={disabled}>
12+
Search
1013
</Button>
1114
);
1215
};

dashboard/src/contexts/dashboard-theme-context.ts

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
1-
import { ButtonProps } from '@mantine/core';
2-
import React from 'react';
1+
import React, { ReactNode } from 'react';
2+
import { RenderSearchButtonProps } from '..';
33

44
const DashboardThemeContext = React.createContext<{
5-
searchButtonProps: ButtonProps;
6-
}>({
7-
searchButtonProps: {},
8-
});
5+
renderSearchButton?: (props: RenderSearchButtonProps) => ReactNode;
6+
}>({});
97

108
export const DashboardThemeContextProvider = DashboardThemeContext.Provider;
119

dashboard/src/dashboard-editor/dashboard-editor.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ const _DashboardEditor = (
162162
<I18nextContextProvider lang={lang}>
163163
<ModalsProvider>
164164
<DatesProvider>
165-
<DashboardThemeContextProvider value={{ searchButtonProps: config.searchButtonProps }}>
165+
<DashboardThemeContextProvider value={{ renderSearchButton: config.renderSearchButton }}>
166166
<DashboardModelContextProvider value={model}>
167167
<ContentModelContextProvider value={model.content}>
168168
<LayoutStateContext.Provider

dashboard/src/dashboard-render/dashboard-render.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ const _ReadOnlyDashboard = ({
135135
<I18nextContextProvider lang={lang}>
136136
<ModalsProvider>
137137
<DatesProvider>
138-
<DashboardThemeContextProvider value={{ searchButtonProps: config.searchButtonProps }}>
138+
<DashboardThemeContextProvider value={{ renderSearchButton: config.renderSearchButton }}>
139139
<DashboardModelContextProvider value={model}>
140140
<ContentModelContextProvider value={model.content}>
141141
<FullScreenPanelContext.Provider

dashboard/src/index.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { ButtonProps } from '@mantine/core';
22
import './init-dayjs';
33
import './i18n';
4+
import { ReactNode } from 'react';
45

56
export const getVersion = () =>
67
import('../package.json').then(({ version }) => {
@@ -19,15 +20,18 @@ export * from './model';
1920
export * from './api-caller/request';
2021
export type { AnyObject } from './types/utils';
2122

22-
// NOTE: keep it align with global.d.ts
23+
export type RenderSearchButtonProps = {
24+
disabled: boolean;
25+
onSubmit: () => void;
26+
};
2327
export interface IDashboardConfig {
2428
basename: string;
2529
apiBaseURL: string;
2630
makeQueryENV?: () => Record<string, any>;
2731
app_id?: string;
2832
app_secret?: string;
2933
monacoPath: string;
30-
searchButtonProps: ButtonProps;
34+
renderSearchButton?: (props: RenderSearchButtonProps) => ReactNode;
3135
}
3236

3337
export { pluginManager, onVizRendered, notifyVizRendered } from './components/plugins';

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": "14.14.0",
3+
"version": "14.15.0",
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": "14.14.0",
3+
"version": "14.15.0",
44
"license": "Apache-2.0",
55
"publishConfig": {
66
"access": "public",

0 commit comments

Comments
 (0)