-
Notifications
You must be signed in to change notification settings - Fork 0
Schema & Component Requirements
Max Heiber edited this page Jul 7, 2017
·
8 revisions
Spaces are dependent on two components and two properties in your schemas.
Spaces require:
- The
getComponentName
Handlebars Helper from nymag-handlebars. ThegetComponentName
helper is used in embedding components inside other components. - This plugin, clay-space-edit
Requirements for Space and Logic components are as follows:
The only requirement for a Logic is that its schema contains a property called embeddedComponent
which is set to an empty object. Here is an example Logic component which displays its embedded component based on time:
_description: |
A description of this Logic
startTime:
_label: Start Time
_display: settings
_has:
-
fn: text
type: datetime-local
- label
-
fn: description
value: The start time that the component should be displayed on
endTime:
_label: End Time
_display: settings
_has:
-
fn: text
type: datetime-local
- label
-
fn: description
value: The end time that the component should stop being displayed on
_groups:
settings:
fields:
- startTime
- endTime
## Optional Component Schema _targeting for Readouts
When adding a component to a space, the panel for
selecting/editing a component shows **"readouts**", which
are labels and icons that help to distinguish between
component instances that are of the same component
type.
![screen shot 2017-05-31 at 4 48 02 pm](https://cloud.githubusercontent.com/assets/4691093/26653766/3385ef6a-4622-11e7-8c5f-602504fc62e7.jpg)
schema.yml:
_targeting:
-
property: tag
icon: tag
-
property: title
icon: clock
# The component that will be inside of the logic component
embeddedComponent: {}
A Space component requires two things:
- A name that begins with
clay-space
. Name the componentclay-space-<SOMETHING DESCRIPTIVE>
- A property called
content
which has the_componentList
behavior. Instantiates as an empty array. - Only has one component in the Component List. This component is assumed to be the corresponding Logic component for the Space and will wrap each component.
An example of a Space schema might look like:
_description: |
My Space!
content:
_componentList:
min: 1
include:
- my-logic-component