diff --git a/packages/runtime/example/conditional-render/hidden.html b/packages/runtime/example/conditional-render/hidden.html new file mode 100644 index 00000000..aff85bf1 --- /dev/null +++ b/packages/runtime/example/conditional-render/hidden.html @@ -0,0 +1,79 @@ + + + + + + meta-ui runtime example: hidden trait + + +
+ + + diff --git a/packages/runtime/src/traits/core/hidden.tsx b/packages/runtime/src/traits/core/hidden.tsx new file mode 100644 index 00000000..c42f3b0a --- /dev/null +++ b/packages/runtime/src/traits/core/hidden.tsx @@ -0,0 +1,47 @@ +import React from "react"; +import { createTrait } from "@meta-ui/core"; +import { Static, Type } from "@sinclair/typebox"; +import { TraitImplementation } from "../../registry"; +import { useExpression } from "../../store"; + +type HiddenProps = { + hidden: Static; +}; + +const Hidden: React.FC = ({ hidden: _hidden, children }) => { + const hidden = useExpression(_hidden.toString()); + if (hidden) { + return null; + } + return <>{children}; +}; + +const useHiddenState: TraitImplementation = ({ hidden }) => { + return { + props: null, + component: (props) =>