Index: chrome/browser/resources/settings/controls/controlled_radio_button.html |
diff --git a/chrome/browser/resources/settings/controls/controlled_radio_button.html b/chrome/browser/resources/settings/controls/controlled_radio_button.html |
index 6b56e8f0a98bbac0650948e794eec0fcc034aa84..9e88f575088ffbafd449d1e77986adc924b6d7f0 100644 |
--- a/chrome/browser/resources/settings/controls/controlled_radio_button.html |
+++ b/chrome/browser/resources/settings/controls/controlled_radio_button.html |
@@ -9,21 +9,103 @@ |
<template> |
<style include="settings-shared"> |
:host { |
+ --ink-to-circle: calc((var(--paper-radio-button-ink-size) - |
+ var(--paper-radio-button-size)) / 2); |
align-items: center; |
display: flex; |
outline: none; |
} |
- #radioButton { |
+ #labelWrapper { |
+ -webkit-margin-start: var(--paper-radio-button-label-spacing, 10px); |
flex: 1; |
} |
+ #label { |
+ color: var(--paper-radio-button-label-color, var(--primary-text-color)); |
+ } |
+ |
+ .circle, |
+ .disc, |
+ .disc-wrapper, |
+ paper-ripple { |
+ border-radius: 50%; |
+ } |
+ |
+ .disc-wrapper { |
+ height: var(--paper-radio-button-ink-size); |
+ margin: 0 calc(-1 * var(--ink-to-circle)); |
+ position: relative; |
+ width: var(--paper-radio-button-ink-size); |
+ } |
+ |
+ .circle, |
+ .disc { |
+ box-sizing: border-box; |
+ height: var(--paper-radio-button-size); |
+ left: var(--ink-to-circle); |
+ position: absolute; |
+ top: var(--ink-to-circle); |
+ width: var(--paper-radio-button-size); |
+ } |
+ |
+ .circle { |
+ border: 2px solid var(--paper-radio-button-unchecked-color, |
+ --primary-text-color); |
+ } |
+ |
+ :host([checked]) .circle { |
+ border-color: var(--paper-radio-button-checked-color, --primary-color); |
+ } |
+ |
+ .disc { |
+ background-color: var(--paper-radio-button-unchecked-background-color, |
+ transparent); |
+ transform: scale(0); |
+ transition: border-color 200ms, transform 200ms; |
+ } |
+ |
+ :host([checked]) .disc { |
+ background-color: var(--paper-radio-button-checked-color, |
+ --primary-color); |
+ transform: scale(0.5); |
+ } |
+ |
+ paper-ripple { |
+ color: var(--paper-radio-button-unchecked-ink-color, |
+ --primary-text-color); |
+ opacity: .6; |
+ } |
+ |
+ :host([checked]) paper-ripple { |
+ color: var(--paper-radio-button-checked-ink-color, |
+ --primary-text-color); |
+ } |
+ |
:host([controlled_]) { |
/* Disable pointer events for this whole element, as outer on-tap gets |
* triggered when clicking/tapping anywhere in :host. */ |
pointer-events: none; |
} |
+ :host([controlled_]) :-webkit-any(.circle, .disc) { |
+ opacity: .5; |
+ } |
+ |
+ :host([controlled_]) .circle { |
+ border-color: var(--paper-radio-button-unchecked-color, |
+ --primary-text-color); |
+ } |
+ |
+ :host([controlled_][checked]) .disc { |
+ background-color: var(--paper-radio-button-unchecked-color, |
+ --primary-text-color); |
+ } |
+ |
+ :host([controlled_]) #labelWrapper { |
+ opacity: .65; |
+ } |
+ |
cr-policy-pref-indicator { |
-webkit-margin-start: var(--settings-control-spacing); |
/* Enable pointer events for the indicator so :hover works. Disable |
@@ -32,10 +114,16 @@ |
} |
</style> |
- <paper-radio-button id="radioButton" name="{{name}}" checked="{{checked}}" |
- disabled="[[controlled_]]" tabindex$="[[tabindex]]"> |
- [[label]] <content></content> |
- </paper-radio-button> |
+ <div class="disc-wrapper"> |
+ <div class="circle"></div> |
+ <div class="disc"></div> |
+ <paper-ripple center hold-down="[[pressed_]]"></paper-ripple> |
+ </div> |
+ |
+ <div id="labelWrapper"> |
+ <span id="label" hidden$="[[!label]]">[[label]]</span> |
+ <content></content> |
+ </div> |
<template is="dom-if" if="[[showIndicator_(controlled_, name, pref.*)]]"> |
<cr-policy-pref-indicator pref="[[pref]]" on-tap="onIndicatorTap_" |