Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commite87b0bb

Browse files
fix(site): set min and max attributes for workspace number parameters (#15182)
Implements#14532.This PR sets `min` and `max` attributes for workspace number parameter`<input>` elements using[inputProps](https://mui.com/material-ui/api/text-field/#text-field-prop-inputProps).Note: When we update MUI to v6 or later, it is better to use`slotProps.htmlInput` instead.---------Co-authored-by: Muhammad Atif Ali <atif@coder.com>
1 parente3cc3be commite87b0bb

File tree

4 files changed

+65
-2
lines changed

4 files changed

+65
-2
lines changed

‎site/src/components/RichParameterInput/RichParameterInput.stories.tsx‎

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,38 @@ export const NumberType: Story = {
9999
},
100100
};
101101

102+
exportconstNumberTypeWithIncreasingMonotonicity:Story={
103+
args:{
104+
value:4,
105+
id:"number_parameter",
106+
parameter:createTemplateVersionParameter({
107+
name:"number_parameter",
108+
type:"number",
109+
description:"Numeric parameter",
110+
default_value:"",
111+
validation_min:0,
112+
validation_max:10,
113+
validation_monotonic:"increasing",
114+
}),
115+
},
116+
};
117+
118+
exportconstNumberTypeWithDecreasingMonotonicity:Story={
119+
args:{
120+
value:4,
121+
id:"number_parameter",
122+
parameter:createTemplateVersionParameter({
123+
name:"number_parameter",
124+
type:"number",
125+
description:"Numeric parameter",
126+
default_value:"",
127+
validation_min:0,
128+
validation_max:10,
129+
validation_monotonic:"decreasing",
130+
}),
131+
},
132+
};
133+
102134
exportconstBooleanType:Story={
103135
args:{
104136
value:"false",

‎site/src/components/RichParameterInput/RichParameterInput.tsx‎

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import ErrorOutline from "@mui/icons-material/ErrorOutline";
33
importButtonfrom"@mui/material/Button";
44
importFormControlLabelfrom"@mui/material/FormControlLabel";
55
importFormHelperTextfrom"@mui/material/FormHelperText";
6+
importtype{InputBaseComponentProps}from"@mui/material/InputBase";
67
importRadiofrom"@mui/material/Radio";
78
importRadioGroupfrom"@mui/material/RadioGroup";
89
importTextField,{typeTextFieldProps}from"@mui/material/TextField";
@@ -217,6 +218,7 @@ export const RichParameterInput: FC<RichParameterInputProps> = ({
217218
onChange={onChange}
218219
size={size}
219220
parameter={parameter}
221+
parameterAutofill={parameterAutofill}
220222
/>
221223
{!parameter.ephemeral&&
222224
autofillSource==="user_history"&&
@@ -250,6 +252,7 @@ const RichParameterField: FC<RichParameterInputProps> = ({
250252
disabled,
251253
onChange,
252254
parameter,
255+
parameterAutofill,
253256
value,
254257
size,
255258
...props
@@ -375,6 +378,30 @@ const RichParameterField: FC<RichParameterInputProps> = ({
375378
);
376379
}
377380

381+
letinputProps:InputBaseComponentProps={};
382+
if(parameter.type==="number"){
383+
switch(parameter.validation_monotonic){
384+
case"increasing":
385+
inputProps={
386+
max:parameter.validation_max,
387+
min:parameterAutofill?.value,
388+
};
389+
break;
390+
case"decreasing":
391+
inputProps={
392+
max:parameterAutofill?.value,
393+
min:parameter.validation_min,
394+
};
395+
break;
396+
default:
397+
inputProps={
398+
max:parameter.validation_max,
399+
min:parameter.validation_min,
400+
};
401+
break;
402+
}
403+
}
404+
378405
// A text field can technically handle all cases!
379406
// As other cases become more prominent (like filtering for numbers),
380407
// we should break this out into more finely scoped input fields.
@@ -389,6 +416,7 @@ const RichParameterField: FC<RichParameterInputProps> = ({
389416
required={parameter.required}
390417
placeholder={parameter.default_value}
391418
value={value}
419+
inputProps={inputProps}
392420
onChange={(event)=>{
393421
onChange(event.target.value);
394422
}}

‎site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersForm.tsx‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,9 @@ export const WorkspaceParametersForm: FC<WorkspaceParameterFormProps> = ({
112112
);
113113
}}
114114
parameter={parameter}
115+
parameterAutofill={autofillParams?.find(
116+
({ name})=>name===parameter.name,
117+
)}
115118
/>
116119
) :null,
117120
)}

‎site/src/pages/WorkspaceSettingsPage/WorkspaceParametersPage/WorkspaceParametersPage.test.tsx‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ test("Submit the workspace settings page successfully", async () => {
6060
{exact:false},
6161
);
6262
awaituser.clear(parameter2);
63-
awaituser.type(parameter2,"1");
63+
awaituser.type(parameter2,"3");
6464
awaituser.click(
6565
within(form).getByRole("button",{name:"Submit and restart"}),
6666
);
@@ -70,7 +70,7 @@ test("Submit the workspace settings page successfully", async () => {
7070
transition:"start",
7171
rich_parameter_values:[
7272
{name:MockTemplateVersionParameter1.name,value:"new-value"},
73-
{name:MockTemplateVersionParameter2.name,value:"1"},
73+
{name:MockTemplateVersionParameter2.name,value:"3"},
7474
],
7575
});
7676
});

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp