- From: Joe Pea <notifications@github.com>
- Date: Mon, 07 Jan 2019 22:54:22 +0000 (UTC)
- To: w3c/webcomponents <webcomponents@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
- Message-ID: <w3c/webcomponents/issues/727/452111406@github.com>
Look how easy it is to define a a new Custom Element with a set of default behaviors in my lib: ```js import Class from 'lowclass' import Node from './Node' // defines the `<i-obj-model>` element, which is short for `<i-node has="obj-model">` export default Class('ObjModel').extends( Node, ({ Super }) => ({ static: { defaultElementName: 'i-obj-model', defaultBehaviors: [ 'obj-model' ], }, })) ``` That defines a Custom Element whose tag name is `i-obj-model`, which has a default `obj-model` behavior. Here's how we'd use the `obj-model` behavior without the Custom Element: ```html <!-- an i-node element with an obj-model behavior. The obj-model behavior observes the obj and mtl attributes. --> <i-node id="model" rotation="0 40 0" align="0.5 0.5 0" size="0 0 0" scale="200 200 200" has="obj-model" obj="./models/spaceship/ship.obj" mtl="./models/spaceship/ship.mtl" > </i-node> ``` And with the simple Custom Element definition above, here's how we'd use the `i-obj-model` which includes the behavior: ```html <!-- alternatively, the i-obj-model is an node element that implicityly has an obj-model behavior. We've omitted the mtl, so the model will have a random-colored phong material: --> <i-obj-model id="model2" rotation="0 20 0" align="0.5 0.5 0" size="0 0 0" scale="200 200 200" obj="./models/spaceship/ship.obj" > </i-obj-model> ``` This opens up the doors of composability; ability to compose JS features dynamically (add or remove them any time at runtime). Just imagine, ```html <red-monster ...> ``` then a user gets close enough to the monster, so we make it have rage: ```html <red-monster has="rage-mode" ...> ``` Then the user gets far enough away, so we remove the rage: ```html <red-monster ...> ``` -- You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub: https://github.com/w3c/webcomponents/issues/727#issuecomment-452111406
Received on Monday, 7 January 2019 22:54:45 UTC