2020-04-15 11:42:11 +00:00
|
|
|
import React from "react";
|
|
|
|
|
import BaseControl, { ControlProps } from "./BaseControl";
|
2021-03-15 12:17:56 +00:00
|
|
|
import StepComponent from "components/ads/StepComponent";
|
2022-06-03 05:07:02 +00:00
|
|
|
|
|
|
|
|
const MIN = 0;
|
|
|
|
|
const MAX = 100;
|
|
|
|
|
|
2020-04-15 11:42:11 +00:00
|
|
|
class StepControl extends BaseControl<StepControlProps> {
|
|
|
|
|
getStepTypeControls = () => {
|
|
|
|
|
const { stepType } = this.props;
|
|
|
|
|
if (stepType === "ZOOM_PERCENTAGE") {
|
|
|
|
|
return {
|
2022-06-03 05:07:02 +00:00
|
|
|
min: MIN,
|
|
|
|
|
max: MAX,
|
2020-04-15 11:42:11 +00:00
|
|
|
steps: 5,
|
|
|
|
|
displayFormat: (value: number): string => {
|
|
|
|
|
return `${value}%`;
|
|
|
|
|
},
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
return {
|
2022-06-03 05:07:02 +00:00
|
|
|
min: MIN,
|
|
|
|
|
max: MAX,
|
2020-04-15 11:42:11 +00:00
|
|
|
steps: 1,
|
|
|
|
|
displayFormat: (value: number): string => {
|
|
|
|
|
return `${value}`;
|
|
|
|
|
},
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
render() {
|
2021-05-13 08:35:39 +00:00
|
|
|
const { displayFormat, max, min, steps } = this.getStepTypeControls();
|
2020-04-15 11:42:11 +00:00
|
|
|
return (
|
|
|
|
|
<StepComponent
|
2021-04-28 10:28:39 +00:00
|
|
|
displayFormat={displayFormat}
|
2020-04-15 11:42:11 +00:00
|
|
|
max={max}
|
2021-04-28 10:28:39 +00:00
|
|
|
min={min}
|
2020-04-15 11:42:11 +00:00
|
|
|
onChange={(value: number) => {
|
|
|
|
|
this.updateProperty(this.props.propertyName, value);
|
|
|
|
|
}}
|
2021-04-28 10:28:39 +00:00
|
|
|
steps={steps}
|
|
|
|
|
value={this.props.propertyValue}
|
2020-04-15 11:42:11 +00:00
|
|
|
/>
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static getControlType() {
|
|
|
|
|
return "STEP";
|
|
|
|
|
}
|
2022-06-03 05:07:02 +00:00
|
|
|
|
|
|
|
|
static canDisplayValueInUI(config: StepControlProps, value: any): boolean {
|
|
|
|
|
let steps = 1;
|
|
|
|
|
if (config.stepType === "ZOOM_PERCENTAGE") {
|
|
|
|
|
steps = 5;
|
|
|
|
|
}
|
|
|
|
|
return value >= MIN && value <= MAX && value % steps === 0;
|
|
|
|
|
}
|
2020-04-15 11:42:11 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export type StepType = "ZOOM_PERCENTAGE";
|
|
|
|
|
|
|
|
|
|
export interface StepControlProps extends ControlProps {
|
|
|
|
|
stepType: StepType;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export default StepControl;
|