2021-08-05 11:16:26 +00:00
|
|
|
import * as React from "react";
|
|
|
|
|
|
2022-06-16 09:47:35 +00:00
|
|
|
import BaseControl, { ControlData, ControlProps } from "./BaseControl";
|
2022-06-24 14:23:02 +00:00
|
|
|
import { TooltipComponent } from "design-system";
|
2022-05-04 09:45:57 +00:00
|
|
|
import { boxShadowOptions } from "constants/ThemeConstants";
|
|
|
|
|
import CloseLineIcon from "remixicon-react/CloseLineIcon";
|
|
|
|
|
import { ButtonTabComponent } from "components/ads";
|
2021-08-05 11:16:26 +00:00
|
|
|
export interface BoxShadowOptionsControlProps extends ControlProps {
|
2022-05-04 09:45:57 +00:00
|
|
|
propertyValue: string | undefined;
|
2021-08-05 11:16:26 +00:00
|
|
|
}
|
|
|
|
|
|
2022-05-04 09:45:57 +00:00
|
|
|
const options = Object.keys(boxShadowOptions).map((optionKey) => ({
|
|
|
|
|
icon: (
|
|
|
|
|
<TooltipComponent
|
|
|
|
|
content={
|
|
|
|
|
<div>
|
|
|
|
|
<div>{optionKey}</div>
|
|
|
|
|
</div>
|
|
|
|
|
}
|
|
|
|
|
key={optionKey}
|
|
|
|
|
openOnTargetFocus={false}
|
|
|
|
|
>
|
2022-05-06 11:24:33 +00:00
|
|
|
<button tabIndex={-1}>
|
2022-05-04 09:45:57 +00:00
|
|
|
<div
|
|
|
|
|
className="flex items-center justify-center w-5 h-5 bg-white"
|
|
|
|
|
style={{ boxShadow: boxShadowOptions[optionKey] }}
|
|
|
|
|
>
|
|
|
|
|
{boxShadowOptions[optionKey] === "none" && (
|
|
|
|
|
<CloseLineIcon className="text-gray-700" />
|
|
|
|
|
)}
|
|
|
|
|
</div>
|
|
|
|
|
</button>
|
|
|
|
|
</TooltipComponent>
|
|
|
|
|
),
|
|
|
|
|
value: boxShadowOptions[optionKey],
|
|
|
|
|
}));
|
2021-08-24 05:37:16 +00:00
|
|
|
|
2022-06-16 09:47:35 +00:00
|
|
|
const optionsValues = new Set(Object.values(boxShadowOptions));
|
|
|
|
|
|
2021-08-05 11:16:26 +00:00
|
|
|
class BoxShadowOptionsControl extends BaseControl<
|
|
|
|
|
BoxShadowOptionsControlProps
|
|
|
|
|
> {
|
|
|
|
|
static getControlType() {
|
|
|
|
|
return "BOX_SHADOW_OPTIONS";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public render() {
|
|
|
|
|
return (
|
2022-05-04 09:45:57 +00:00
|
|
|
<ButtonTabComponent
|
|
|
|
|
options={options}
|
|
|
|
|
selectButton={(value) => {
|
|
|
|
|
this.updateProperty(this.props.propertyName, value);
|
|
|
|
|
}}
|
|
|
|
|
values={this.props.evaluatedValue ? [this.props.evaluatedValue] : []}
|
|
|
|
|
/>
|
2021-08-05 11:16:26 +00:00
|
|
|
);
|
|
|
|
|
}
|
2022-06-16 09:47:35 +00:00
|
|
|
|
|
|
|
|
static canDisplayValueInUI(config: ControlData, value: any): boolean {
|
|
|
|
|
return optionsValues.has(value);
|
|
|
|
|
}
|
2021-08-05 11:16:26 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export default BoxShadowOptionsControl;
|