<style include="cr-shared-style os-settings-icons settings-shared iron-flex">
#networkListDiv {
min-height: var(--cr-section-two-line-min-height);
}
:host(:not([is-showing-vpn_], [is-showing-tether_])) #networkListDiv {
margin-top: var(--cr-section-vertical-margin);
}
#cellularNetworkList {
/* No extra margin-top when displaying the cellular network list. */
margin-top: calc(-1*var(--cr-section-vertical-margin));
}
#instant-tether-notifications-toggle {
border-bottom: var(--cr-separator-line);
min-height: var(--cr-section-min-height);
}
#your-device-hotspots-header {
color: var(--cros-text-color-primary);
font: var(--cros-button-1-font);
margin-bottom: 5px;
}
/* Set padding on children instead of the container itself to ensure that
separator lines can fill the entire width of the page. */
#networkListDiv > * {
/* network-list is padded to the right to allow space for a ripple */
padding-inline-end: calc(var(--cr-section-padding) -
var(--cr-icon-ripple-padding));
padding-inline-start: var(--cr-section-padding);
}
.add-button {
margin-inline-end: 20px;
}
.vpn-header {
margin-bottom: 8px;
margin-inline-end: 12px;
margin-inline-start: 4px;
margin-top: 8px;
}
.no-networks {
min-height: var(--cr-section-two-line-min-height);
}
network-list {
flex: 1;
}
network-always-on-vpn {
width: 100%;
}
#gmscore-notifications-container {
border-top: var(--cr-separator-line);
margin: 10px 0;
padding-bottom: var(--cr-section-padding);
padding-top: var(--cr-section-padding);
}
#gmscore-notifications-container[no-networks-text-below] {
border-bottom: var(--cr-separator-line);
margin-top: 0;
}
#gmscore-notifications-device-string {
margin-top: 5px;
}
#gmscore-notifications-instructions {
margin: 0;
padding-inline-start: 15px;
}
#cellularNetworkList {
padding-inline-end: 0;
padding-inline-start: 0;
}
</style>
<template is="dom-if" if="[[shouldShowBluetoothDisabledTetherErrorMessage_(deviceState)]]">
<div id="networkListDiv" class="layout horizontal center">
<localized-link
localized-string="[[getBluetoothDisabledErrorMessageForTether_()]]">
</localized-link>
</div>
</template>
<template is="dom-if" if="[[enableToggleIsVisible_(deviceState)]]">
<div class="settings-box first">
<div class="primary-toggle start" on$="[[deviceIsEnabled_(deviceState)]]"
aria-hidden="true">
[[getOffOnString_(deviceState,
'$i18nPolymer{deviceOn}', '$i18nPolymer{deviceOff}')]]
</div>
<!-- The add button in this row is only shown for WiFi networks. -->
<cr-icon-button class="icon-add-wifi add-button" id="addWifiButton"
hidden$="[[!showAddWifiButton_(deviceState, globalPolicy)]]"
aria-label="$i18n{internetAddWiFi}" on-click="onAddWifiButtonClick_"
tabindex$="[[tabindex]]"
deep-link-focus-id$="[[Setting.kWifiAddNetwork]]">
</cr-icon-button>
<cr-toggle id="deviceEnabledButton"
aria-label$="[[getToggleA11yString_(deviceState)]]"
checked="[[deviceIsEnabled_(deviceState)]]"
disabled="[[!enableToggleIsEnabled_(deviceState,
deviceState.inhibitReason)]]"
on-change="onDeviceEnabledChange_"
deep-link-focus-id$="[[Setting.kWifiOnOff]]
[[Setting.kMobileOnOff]]">
</cr-toggle>
</div>
</template>
<template is="dom-if" if="[[knownNetworksIsVisible_(deviceState)]]">
<cr-link-row
id="knownNetworksSubpageButton"
class="hr"
label="$i18n{knownNetworksButton}"
on-click="onKnownNetworksClick_"
role-description="$i18n{subpageArrowRoleDescription}">
</cr-link-row>
</template>
<template is="dom-if" if="[[shouldShowTetherNotificationControl_(deviceState)]]">
<settings-toggle-button
id="instant-tether-notifications-toggle"
label="$i18n{internetTetherNotificationControlTitle}"
sub-label="$i18n{internetTetherNotificationControlDescription}"
pref="{{prefs.tether.notifications_enabled}}">
</settings-toggle-button>
</template>
<template is="dom-if" if="[[deviceIsEnabled_(deviceState)]]">
<div id="networkListDiv" class="layout vertical flex">
<!-- VPN only header for built-in VPNs. -->
<template is="dom-if" if="[[isShowingVpn_]]">
<div class="vpn-header layout horizontal center">
<div class="flex settings-box-text">$i18n{networkVpnBuiltin}</div>
<template is="dom-if" if="[[isBuiltInVpnManagementBlocked]]">
<cr-policy-indicator indicator-type="devicePolicy">
</cr-policy-indicator>
</template>
<cr-icon-button class="icon-add-circle"
id="addBuiltInVpnButton"
disabled="[[isBuiltInVpnManagementBlocked]]"
aria-label="$i18n{internetAddVPN}"
on-click="onAddVpnButtonClick_"
tabindex$="[[tabindex]]">
</cr-icon-button>
</div>
</template>
<!-- List of networks (empty if no networks exist). -->
<template is="dom-if"
if="[[shouldShowNetworkList_(networkStateList_, deviceState)]]">
<template is="dom-if" if="[[shouldShowTetherDeviceListHeader_(deviceState)]]">
<div id="your-device-hotspots-title">$i18n{internetYourDeviceHotspots}</div>
</template>
<network-list id="networkList" show-buttons
class="layout horizontal center"
is-built-in-vpn-management-blocked="[[isBuiltInVpnManagementBlocked]]"
show-technology-badge="[[showTechnologyBadge_]]"
networks="[[networkStateList_]]"
global-policy="[[globalPolicy]]"
on-selected="onNetworkSelected_"
device-state="[[deviceState]]">
</network-list>
</template>
<!-- List of cellular and instant tethering networks -->
<template is="dom-if"
if="[[shouldShowCellularNetworkList_(networkStateList_,
deviceState)]]">
<cellular-networks-list id="cellularNetworkList"
networks="[[networkStateList_]]"
show-technology-badge="[[showTechnologyBadge_]]"
on-selected="onNetworkSelected_"
cellular-device-state="[[deviceState]]"
tether-device-state="[[tetherDeviceState]]"
global-policy="[[globalPolicy]]"
is-connected-to-non-cellular-network="[[isConnectedToNonCellularNetwork]]"
can-show-spinner="[[!isCellularSetupActive]]">
</cellular-networks-list>
</template>
<!-- Instructions for how to enable "Google Play Services" notifications
(needed for Instant Tethering). -->
<template is="dom-if" if="[[showGmsCoreNotificationsSection_(
notificationsDisabledDeviceNames_)]]">
<div id="gmscore-notifications-container"
no-networks-text-below$="[[!networkStateList_.length]]">
<div>$i18n{gmscoreNotificationsTitle}</div>
<div id="gmscore-notifications-device-string"
class="cr-secondary-text">
[[getGmsCoreNotificationsDevicesString_(
notificationsDisabledDeviceNames_)]]
</div>
<ol id="gmscore-notifications-instructions"
class="cr-secondary-text">
<li>$i18n{gmscoreNotificationsFirstStep}</li>
<li>$i18n{gmscoreNotificationsSecondStep}</li>
<li>$i18n{gmscoreNotificationsThirdStep}</li>
<li>$i18n{gmscoreNotificationsFourthStep}</li>
</ol>
</div>
</template>
<!-- Text shown if no networks exist. -->
<template is="dom-if" if="[[!hideNoNetworksMessage_(networkStateList_, deviceState)]]">
<div class="layout horizontal center no-networks">
<localized-link
localized-string="[[getNoNetworksInnerHtml_(deviceState, tetherDeviceState)]]">
</localized-link>
</div>
</template>
<template is="dom-if" if="[[isShowingVpn_]]">
<!-- Third party VPNs. -->
<template is="dom-repeat"
items="[[getVpnProviders_(vpnProviders, thirdPartyVpns_)]]">
<div id="[[item.providerName]]"
class="vpn-header layout horizontal center">
<div class="flex settings-box-text">[[item.providerName]]</div>
<cr-icon-button class="icon-external"
aria-label$="[[getAddThirdPartyVpnA11yString_(item)]]"
on-click="onAddThirdPartyVpnClick_" tabindex$="[[tabindex]]">
</cr-icon-button>
</div>
<network-list show-buttons
hidden$="[[!haveThirdPartyVpnNetwork_(thirdPartyVpns_, item)]]"
networks="[[getThirdPartyVpnNetworks_(thirdPartyVpns_, item)]]"
on-selected="onNetworkSelected_">
</network-list>
</template>
</template>
</div>
<template is="dom-if"
if="[[shouldShowVpnPreferences_(isManaged_, isShowingVpn_)]]">
<div class="settings-box first">
<h2>$i18n{networkVpnPreferences}</h2>
</div>
<div class="settings-box first">
<network-always-on-vpn id="alwaysOnVpnSelector"
networks="[[getAlwaysOnVpnNetworks_(deviceState,
networkStateList_, thirdPartyVpns_)]]"
mode="{{alwaysOnVpnMode_}}"
service="{{alwaysOnVpnService_}}">
</network-always-on-vpn>
</div>
</template>
</template>