Index: sky/framework/sky-radio/sky-radio.sky |
diff --git a/sky/framework/sky-radio/sky-radio.sky b/sky/framework/sky-radio/sky-radio.sky |
deleted file mode 100644 |
index 687dd5dc8fa9d4f9cc0af79a8a2d24509786b0d9..0000000000000000000000000000000000000000 |
--- a/sky/framework/sky-radio/sky-radio.sky |
+++ /dev/null |
@@ -1,105 +0,0 @@ |
-<!-- |
-// Copyright 2014 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/framework/sky-button/sky-button.sky" as="SkyButton" /> |
- |
-<sky-element |
- name="sky-radio" |
- attributes="selected:boolean, group:string" |
- on-click="handleClick"> |
-<template> |
- <style> |
- :host { |
- display: inline-block; |
- -webkit-user-select: none; |
- width: 14px; |
- height: 14px; |
- border-radius: 7px; |
- border: 1px solid blue; |
- margin: 0 5px; |
- } |
- :host([highlight=true]) box { |
- background-color: orange; |
- } |
- dot { |
- -webkit-user-select: none; |
- width: 10px; |
- height: 10px; |
- border-radius: 5px; |
- background-color: black; |
- margin: 2px; |
- } |
- </style> |
- <template if="{{ selected }}"> |
- <dot /> |
- </template> |
-</template> |
-<script> |
-const kControllerMap = new WeakMap(); |
- |
-class RadioGroupController { |
- static forRadio(radio) { |
- var scope = radio.ownerScope; |
- var controller = kControllerMap.get(scope); |
- if (!controller) |
- kControllerMap.set(scope, new RadioGroupController()); |
- return kControllerMap.get(scope); |
- } |
- constructor() { |
- this.radios = new Set(); |
- } |
- addRadio(radio) { |
- this.radios.add(radio); |
- // If this new radio is default-selected, take selection from the group. |
- if (radio.selected) |
- this.takeSelectionFromGroup(radio); |
- } |
- removeRadio(radio) { |
- this.radios.remove(radio); |
- } |
- takeSelectionFromGroup(selectedRadio) { |
- // Emtpy/null/undefined group means an isolated radio. |
- if (!selectedRadio.group) |
- return; |
- this.radios.forEach(function(radio) { |
- if (selectedRadio === radio) |
- return; |
- if (radio.group != selectedRadio.group) |
- return; |
- radio.selected = false; |
- }); |
- } |
-}; |
- |
-module.exports = class extends SkyButton { |
- created() { |
- super.created(); |
- |
- this.controller = null; |
- } |
- attached() { |
- super.attached(); |
- this.controller = RadioGroupController.forRadio(this); |
- this.controller.addRadio(this); |
- } |
- detached() { |
- super.detached(); |
- this.controller.removeRadio(this); |
- this.controller = null; |
- } |
- selectedChanged(oldValue, newValue) { |
- if (newValue && this.controller) |
- this.controller.takeSelectionFromGroup(this); |
- } |
- groupChanged(oldValue, newValue) { |
- if (this.selected && this.controller) |
- this.controller.takeSelectionFromGroup(this); |
- } |
- handleClick() { |
- this.selected = true; |
- } |
-}.register(); |
-</script> |
-</sky-element> |