diff --git a/packages/app/constants/settings/components/slidersWithPresets/index.jsx b/packages/app/constants/settings/components/slidersWithPresets/index.jsx new file mode 100644 index 00000000..634f290f --- /dev/null +++ b/packages/app/constants/settings/components/slidersWithPresets/index.jsx @@ -0,0 +1,127 @@ +import React from "react" +import { Select, Input, Button, Modal } from "antd" +import { Icons } from "components/Icons" + +import Sliders from "../sliderValues" + +export default (props) => { + const [selectedPreset, setSelectedPreset] = React.useState(props.controller.presets.currentPresetKey) + const [presets, setPresets] = React.useState(props.controller.presets.presets ?? {}) + + const createPreset = (key) => { + setPresets(props.controller.createPreset(key)) + setSelectedPreset(key) + } + + const handleCreateNewPreset = () => { + app.layout.modal.open("create_preset", (props) => { + const [presetKey, setPresetKey] = React.useState("") + + return
+

New preset

+ + { + setPresetKey(e.target.value.trim()) + }} + /> + + +
+ }) + } + + const handleDeletePreset = () => { + Modal.confirm({ + title: "Delete preset", + content: "Are you sure you want to delete this preset?", + onOk: () => { + props.controller.deletePreset(selectedPreset) + setPresets(props.controller.presets.presets ?? {}) + setSelectedPreset(props.controller.presets.currentPresetKey) + } + }) + } + + const options = [ + { + value: "new", + label: Create new, + }, + ...Object.keys(presets).map((key) => { + return { + value: key, + label: key, + } + }) + ] + + React.useEffect(() => { + const presets = props.controller.presets.presets ?? {} + const preset = presets[selectedPreset] + + if (props.controller.presets.currentPresetKey !== selectedPreset) { + props.controller.changePreset(selectedPreset) + } + + props.ctx.updateCurrentValue(preset) + }, [selectedPreset]) + + return <> +
+ +