Adam Barth b6f511c6a9 Port Sky widgets demo to Dart
This CL updates sky-box, sky-button, sky-checkbox, sky-input, and sky-radio to
work in Dart. We don't have a data binding system yet, so there's a bit more
plumbing in the code.

This CL adds support for sky-element@attributes, which lets you specify which
attributes your element supports. We use this information to synthesize getters
and setters for those attributes and to dispatch to mumbleChanged methods when
the attributes change.

I've also wrapped the widgets demo itself in a sky-scrollable so the whole
thing scrolls.

R=eseidel@chromium.org

Review URL: https://codereview.chromium.org/946813005
2015-02-23 08:30:36 -08:00

54 lines
1.1 KiB
Plaintext

<!--
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-->
<import src="sky-element.sky" />
<sky-element attributes="title:string">
<template>
<style>
:host {
display: flex;
flex-direction: column;
border-radius: 4px;
border: 1px solid gray;
margin: 10px;
}
#title {
text-align: center;
font-size: 10px;
padding: 8px 8px 4px 8px;
}
#content {
padding: 4px 8px 8px 8px;
}
div {
flex: 1;
}
</style>
<div id="title"></div>
<div id="content"><content/></div>
</template>
<script>
import "dart:sky";
@Tagname('sky-box')
class SkyBox extends SkyElement {
Element _title;
void shadowRootReady() {
_title = shadowRoot.getElementById('title');
_title.setChild(new Text(title));
}
void titleChanged(String oldValue, String newValue) {
if (_title != null)
_title.setChild(new Text(newValue));
}
}
_init(script) => register(script, SkyBox);
</script>
</sky-element>