UNPKG

@macrostrat/column-components

Version:

React rendering primitives for stratigraphic columns

52 lines (45 loc) 1.43 kB
import { hyperStyled } from "@macrostrat/hyper"; import styles from "./main.module.scss"; import { format } from "d3-format"; import Select from "react-select"; import { ColumnDivision } from "../context"; const h = hyperStyled(styles); const LabeledControl = function (props) { const { title, children, ...rest } = props; delete rest.is; return h("div.labeled-control", [ h("label.bp3-label", null, [ h.if(title != null)("span.label-text", null, title), ]), props.is != null ? h(props.is, rest) : null, ]); }; const menuStyles = (provided) => ({ ...provided, zIndex: 999, }); const RaisedSelect = (props) => h(Select, { styles: { menu: menuStyles }, ...props }); interface IntervalEditorTitleProps { showID: boolean; title: string; interval: ColumnDivision; heightFormat: string; } const IntervalEditorTitle = function (props: IntervalEditorTitleProps) { let { showID, title, interval, heightFormat } = props; const { id, top, bottom } = interval; let fmt = (v) => v; if (heightFormat != null) { fmt = format(heightFormat); } if (showID == null) { showID = true; } return h("div.editor-dialog-title.editor-title", [ h("h3.title-center", title), h("h4.height-range", `${fmt(bottom)}${fmt(top)} m`), h("h4.id", null, ["ID: ", h.if(id != null && showID)("code", id)]), ]); }; export { LabeledControl, IntervalEditorTitle, RaisedSelect };