Skip to content
ONIWC
iwc 0.1.0

component element

Renders a reusable .component.iwc with props, optionally passing child elements into its slot.

Renders

whatever the component's root renders

Required

use. Required props of the component must be given; unknown props are errors.

Native apps

Compiled native apps and server-driven apps

Syntax

component element
{ "type": "component" }

An element lives in a screen's sections, another element's elements, a layout slot or a component root.

Properties

PropertyTypeDescription
usestringcomponent: the component file to render; widget: the widget file
propsobject {name: any}
elementsarray of element

Plus the properties every element accepts: id, className, style, responsive, states, animation, visible, ariaLabel, attributes and more.

Example

component example
{
  "type": "component",
  "use": "stat.component.iwc",
  "props": { "label": "Orders today", "value": "42" }
}

See component development for defining one.

Expected output

The HTML IWC rendered for the example above (inside the page's content wrapper). Class names such as i807b63fc are generated per element for its scoped CSS.

Rendered HTML
<div class="iwc-page ipage" id="iwc-content">
  <div class="iwc-column i594a104a stat">
    <small class="iwc-text i3bf3fa10 iwc-text-caption" data-bind="props.label">Orders today</small>
    <h3 class="iwc-text i91fabcd2 iwc-text-h3" data-bind="props.value">
      42
    </h3>
  </div>
</div>

Data, conditions & styling

  • Conditional rendering: "visible": {"auth": "signed-in"}, {"roles": ["admin"]} or an expression such as "=product.stock > 0". Decided on the server: hidden elements are never sent.
  • Data binding: bind takes text from data (name, user.name, props.title, params.slug, state.cart.count); binds binds attributes. Containers become data-driven with data + item. See data binding.
  • Styling: className for your stylesheets, style for CSS in JSON, states for hover/focus/active, animation for entrance motion. See the style property reference.
  • Responsive behaviour: responsive applies CSS at or below a breakpoint ({"mobile": {"padding": "12px"}}); grids also take responsiveColumns.