@servicenow/ui-core
TypeScript icon, indicating that this package has built-in type declarations

24.1.1 • Public • Published

@servicenow/ui-core

createCustomElement

Define a custom element.

Param Type Description
elementName string The tag name of the custom element.
config Object The custom element configuration.
[config.setInitialState] function Function that returns the initial state for a component.
[config.properties] Object The properties used by a custom element.
config.properties.name Object The name of the property.
[config.properties.name.default] * The default value of the property.
[config.properties.name.computed] function A function that computes the property value.
config.properties.name.computed.state Object The custom element state.
[config.properties.name.onChange] function A function that will be called with the new property value, the previous value, and the dispatch function.
[config.properties.name.reflect] boolean Reflect property change to corresponding attribute.
[config.properties.name.unstableParse] boolean Parse attribute values when corresponding properties are set.
[config.properties.name.readOnly] boolean Property cannot be externally set.
[config.actions] Object The actions the custom element dispatches.
config.actions.type Object The action type, name.
[config.actions.private] boolean Indicates if the action is visible outside of the custom element.
[config.actions.handlers] Array Effect handlers to run when the action type is dispatched.
config.renderer Object The renderer to be used by the custom element.
config.renderer.type function The library that renders the view.
config.renderer.view function A function that is executed by onStateChange.
[config.renderer.transformState] function A function that executes before a component's state is passed to the handler.
[config.onDisconnect] function A function that executes when the custom element is disconnected.
[config.onConnect] function A function that executes when the custom element is connected.
[config.behaviors] Array Behaviors to applied to the custom element.

Example

import {createCustomElement} from '@servicenow/ui-core';
import snabbdom from '@servicenow/ui-renderer-snabbdom';

createCustomElement('sn-hello-world', {
	properties: {
		name: {
			default: 'Fred'
		}
	},
	renderer: {
		type: snabbdom,
		transformState({properties}) {
			return properties;
		},
		view: ({name}) => {
			return <p>Hello {name}!</p>;
		}
	}
});

Action Routing

Actions will "bubble" up the component hierarchy unless they are explictly stopped by dispatch meta data, {stopPropagtion: true}, or part of the stopPropagtion configuration for a component definition.

dispatch('SOMETHING_HAPPENED', {somethingHappened: true}, {stopPropagtion: true});

OR

createCustomElement('sn-foo', () => null, {
	stopPropagtion: ['SOMETHING_HAPPENED']
});

Readme

Keywords

none

Package Sidebar

Install

npm i @servicenow/ui-core

Weekly Downloads

43

Version

24.1.1

License

MIT

Unpacked Size

2.31 MB

Total Files

680

Last publish

Collaborators

  • chaitanyababu
  • kayleigh.french
  • mdwragg
  • crystal.barnes
  • now-build
  • cuong.tran
  • sdivatia
  • huichuan