зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1515206 - Add Pocket layout code, snippets and perf bug fixes to Activity Stream r=Mardak
Differential Revision: https://phabricator.services.mozilla.com/D14923 --HG-- extra : moz-landing-system : lando
This commit is contained in:
Родитель
0fc58f5ee3
Коммит
2c424c573a
|
@ -33,6 +33,7 @@ for (const type of [
|
|||
"AS_ROUTER_TELEMETRY_USER_EVENT",
|
||||
"BLOCK_URL",
|
||||
"BOOKMARK_URL",
|
||||
"CONTENT_LAYOUT",
|
||||
"COPY_DOWNLOAD_LINK",
|
||||
"DELETE_BOOKMARK_BY_ID",
|
||||
"DELETE_FROM_POCKET",
|
||||
|
|
|
@ -47,6 +47,7 @@ const INITIAL_STATE = {
|
|||
pocketCta: {},
|
||||
waitingForSpoc: true,
|
||||
},
|
||||
Layout: [],
|
||||
};
|
||||
|
||||
function App(prevState = INITIAL_STATE.App, action) {
|
||||
|
@ -429,10 +430,19 @@ function Pocket(prevState = INITIAL_STATE.Pocket, action) {
|
|||
}
|
||||
}
|
||||
|
||||
function Layout(prevState = INITIAL_STATE.Layout, action) {
|
||||
switch (action.type) {
|
||||
case at.CONTENT_LAYOUT:
|
||||
return action.data;
|
||||
default:
|
||||
return prevState;
|
||||
}
|
||||
}
|
||||
|
||||
this.INITIAL_STATE = INITIAL_STATE;
|
||||
this.TOP_SITES_DEFAULT_ROWS = TOP_SITES_DEFAULT_ROWS;
|
||||
this.TOP_SITES_MAX_SITES_PER_ROW = TOP_SITES_MAX_SITES_PER_ROW;
|
||||
|
||||
this.reducers = {TopSites, App, ASRouter, Snippets, Prefs, Dialog, Sections, Pocket};
|
||||
this.reducers = {TopSites, App, ASRouter, Snippets, Prefs, Dialog, Sections, Pocket, Layout};
|
||||
|
||||
const EXPORTED_SYMBOLS = ["reducers", "INITIAL_STATE", "insertPinned", "TOP_SITES_DEFAULT_ROWS", "TOP_SITES_MAX_SITES_PER_ROW"];
|
||||
|
|
|
@ -42,6 +42,7 @@
|
|||
}
|
||||
|
||||
.monthly-checkbox-container {
|
||||
display: flex;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
|
|
|
@ -27,7 +27,7 @@ export class _StartupOverlay extends React.PureComponent {
|
|||
try {
|
||||
this.didFetch = true;
|
||||
const fxaParams = "entrypoint=activity-stream-firstrun&utm_source=activity-stream&utm_campaign=firstrun&form_type=email";
|
||||
const response = await fetch(`${this.props.fxa_endpoint}/metrics-flow?${fxaParams}`);
|
||||
const response = await fetch(`${this.props.fxa_endpoint}/metrics-flow?${fxaParams}`, {credentials: "omit"});
|
||||
if (response.status === 200) {
|
||||
const {flowId, flowBeginTime} = await response.json();
|
||||
this.setState({flowId, flowBeginTime});
|
||||
|
|
|
@ -47,7 +47,7 @@ export class SubmitFormSnippet extends React.PureComponent {
|
|||
{url: this.refs.form.action, formData: new FormData(this.refs.form)};
|
||||
|
||||
try {
|
||||
const fetchRequest = new Request(url, {body: formData, method: "POST"});
|
||||
const fetchRequest = new Request(url, {body: formData, method: "POST", credentials: "omit"});
|
||||
const response = await fetch(fetchRequest);
|
||||
json = await response.json();
|
||||
} catch (err) {
|
||||
|
|
|
@ -67,6 +67,7 @@
|
|||
font-size: 12px;
|
||||
color: var(--newtab-text-secondary-color);
|
||||
margin-top: 10px;
|
||||
display: flex;
|
||||
flex: 0 0 100%;
|
||||
}
|
||||
|
||||
|
|
|
@ -24,6 +24,7 @@ export class _CollapsibleSection extends React.PureComponent {
|
|||
this.onMenuButtonMouseLeave = this.onMenuButtonMouseLeave.bind(this);
|
||||
this.onMenuUpdate = this.onMenuUpdate.bind(this);
|
||||
this.state = {enableAnimation: true, isAnimating: false, menuButtonHover: false, showContextMenu: false};
|
||||
this.setContextMenuButtonRef = this.setContextMenuButtonRef.bind(this);
|
||||
}
|
||||
|
||||
componentWillMount() {
|
||||
|
@ -41,8 +42,19 @@ export class _CollapsibleSection extends React.PureComponent {
|
|||
}
|
||||
}
|
||||
|
||||
setContextMenuButtonRef(element) {
|
||||
this.contextMenuButtonRef = element;
|
||||
}
|
||||
|
||||
componentDidMount() {
|
||||
this.contextMenuButtonRef.addEventListener("mouseenter", this.onMenuButtonMouseEnter);
|
||||
this.contextMenuButtonRef.addEventListener("mouseleave", this.onMenuButtonMouseLeave);
|
||||
}
|
||||
|
||||
componentWillUnmount() {
|
||||
this.props.document.removeEventListener(VISIBILITY_CHANGE_EVENT, this.enableOrDisableAnimation);
|
||||
this.contextMenuButtonRef.removeEventListener("mouseenter", this.onMenuButtonMouseEnter);
|
||||
this.contextMenuButtonRef.removeEventListener("mouseleave", this.onMenuButtonMouseLeave);
|
||||
}
|
||||
|
||||
enableOrDisableAnimation() {
|
||||
|
@ -148,7 +160,7 @@ export class _CollapsibleSection extends React.PureComponent {
|
|||
<span className="click-target" onClick={this.onHeaderClick}>
|
||||
{isCollapsible && <span className={`collapsible-arrow icon ${collapsed ? "icon-arrowhead-forward-small" : "icon-arrowhead-down-small"}`} />}
|
||||
</span>
|
||||
<span>
|
||||
<span className="learn-more-link-wrapper">
|
||||
{learnMore &&
|
||||
<span className="learn-more-link">
|
||||
<a href={learnMore.link.href}>
|
||||
|
@ -164,8 +176,7 @@ export class _CollapsibleSection extends React.PureComponent {
|
|||
className="context-menu-button icon"
|
||||
title={this.props.intl.formatMessage({id: "context_menu_title"})}
|
||||
onClick={this.onMenuButtonClick}
|
||||
onMouseEnter={this.onMenuButtonMouseEnter}
|
||||
onMouseLeave={this.onMenuButtonMouseLeave}>
|
||||
ref={this.setContextMenuButtonRef}>
|
||||
<span className="sr-only">
|
||||
<FormattedMessage id="section_context_menu_button_sr" />
|
||||
</span>
|
||||
|
|
|
@ -17,6 +17,20 @@
|
|||
}
|
||||
|
||||
.click-target-container {
|
||||
// Center "How it works" for "mobile" viewport
|
||||
@media (max-width: $break-point-medium - 1) {
|
||||
display: block;
|
||||
|
||||
.learn-more-link-wrapper {
|
||||
display: block;
|
||||
text-align: center;
|
||||
|
||||
.learn-more-link {
|
||||
margin-inline-start: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
vertical-align: top;
|
||||
|
||||
.click-target {
|
||||
|
@ -128,4 +142,12 @@
|
|||
overflow: hidden;
|
||||
}
|
||||
}
|
||||
|
||||
// Hide first story card for the medium breakpoint to prevent orphaned third story
|
||||
&[data-section-id='topstories'] .card-outer:first-child {
|
||||
@media (min-width: $break-point-medium) and (max-width: $break-point-large - 1) {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -3,9 +3,11 @@
|
|||
$min-button-height: 18px;
|
||||
font-size: 13px;
|
||||
margin-inline-end: 20px;
|
||||
display: inline-block;
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
|
||||
.pocket-cta-button {
|
||||
white-space: nowrap;
|
||||
background: $blue-60;
|
||||
letter-spacing: -0.34px;
|
||||
color: $white;
|
||||
|
|
|
@ -248,11 +248,19 @@ export class Section extends React.PureComponent {
|
|||
</div>}
|
||||
{id === "topstories" &&
|
||||
<div className="top-stories-bottom-container">
|
||||
<div>
|
||||
{shouldShowTopics && <Topics topics={this.props.topics} />}
|
||||
{shouldShowPocketCta && <PocketLoggedInCta />}
|
||||
</div>
|
||||
<div>
|
||||
{shouldShowTopics &&
|
||||
<div className="wrapper-topics">
|
||||
<Topics topics={this.props.topics} />
|
||||
</div>
|
||||
}
|
||||
|
||||
{shouldShowPocketCta &&
|
||||
<div className="wrapper-cta">
|
||||
<PocketLoggedInCta />
|
||||
</div>
|
||||
}
|
||||
|
||||
<div className="wrapper-more-recommendations">
|
||||
{shouldShowReadMore &&
|
||||
<MoreRecommendations read_more_endpoint={read_more_endpoint} />}
|
||||
</div>
|
||||
|
@ -298,7 +306,26 @@ export class _Sections extends React.PureComponent {
|
|||
return sections;
|
||||
}
|
||||
|
||||
renderLayout() {
|
||||
return (
|
||||
<div className="sections-list layout">
|
||||
{this.props.Layout.map((section, sectionIndex) => (
|
||||
<div key={`section-${sectionIndex}`} className={`column column-${section.width}`}>
|
||||
{section.components.map((component, componentIndex) => (
|
||||
<div key={`component-${componentIndex}`}>
|
||||
<div>{component.type}</div>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
render() {
|
||||
if (this.props.Layout && this.props.Layout.length) {
|
||||
return this.renderLayout();
|
||||
}
|
||||
return (
|
||||
<div className="sections-list">
|
||||
{this.renderSections()}
|
||||
|
@ -307,4 +334,4 @@ export class _Sections extends React.PureComponent {
|
|||
}
|
||||
}
|
||||
|
||||
export const Sections = connect(state => ({Sections: state.Sections, Prefs: state.Prefs}))(_Sections);
|
||||
export const Sections = connect(state => ({Sections: state.Sections, Prefs: state.Prefs, Layout: state.Layout}))(_Sections);
|
||||
|
|
|
@ -1,4 +1,25 @@
|
|||
.sections-list {
|
||||
&.layout {
|
||||
$columns: 12;
|
||||
display: grid;
|
||||
grid-template-columns: repeat($columns, 1fr);
|
||||
grid-column-gap: 10px;
|
||||
grid-row-gap: 10px;
|
||||
|
||||
.column {
|
||||
border: 1px solid $black;
|
||||
}
|
||||
|
||||
@while $columns > 0 {
|
||||
.column-#{$columns} {
|
||||
grid-column-start: auto;
|
||||
grid-column-end: span $columns;
|
||||
}
|
||||
|
||||
$columns: $columns - 1;
|
||||
}
|
||||
}
|
||||
|
||||
.section-list {
|
||||
display: grid;
|
||||
grid-gap: $base-gutter;
|
||||
|
@ -84,6 +105,43 @@
|
|||
font-size: 13px;
|
||||
}
|
||||
}
|
||||
|
||||
.wrapper-topics,
|
||||
.wrapper-cta + .wrapper-more-recommendations {
|
||||
@media (max-width: $break-point-large - 1) {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: $break-point-medium - 1) {
|
||||
.wrapper-cta {
|
||||
text-align: center;
|
||||
|
||||
.pocket-logged-in-cta {
|
||||
display: block;
|
||||
margin-inline-end: 0;
|
||||
|
||||
.pocket-cta-button {
|
||||
max-width: none;
|
||||
display: block;
|
||||
margin-inline-end: 0;
|
||||
margin: 5px 0 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.wrapper-more-recommendations {
|
||||
width: 100%;
|
||||
|
||||
.more-recommendations {
|
||||
justify-content: center;
|
||||
|
||||
&::after {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: $break-point-widest) {
|
||||
|
|
|
@ -96,6 +96,8 @@ $wrapper-max-width-widest: $grid-unit * 8 + $base-gutter * 7 + $section-horizont
|
|||
// layout issues when the scrollbar is visible. 16px is wide enough to cover all
|
||||
// OSes and keeps it simpler than a per-OS value.
|
||||
$scrollbar-width: 16px;
|
||||
|
||||
// Breakpoints
|
||||
$break-point-medium: $wrapper-max-width-medium + $base-gutter * 2 + $scrollbar-width;
|
||||
$break-point-large: $wrapper-max-width-large + $base-gutter * 2 + $scrollbar-width;
|
||||
$break-point-widest: $wrapper-max-width-widest + $base-gutter * 2 + $scrollbar-width;
|
||||
|
|
|
@ -846,6 +846,50 @@ main {
|
|||
opacity: 1;
|
||||
transform: translateY(0); } }
|
||||
|
||||
.sections-list.layout {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(12, 1fr);
|
||||
grid-column-gap: 10px;
|
||||
grid-row-gap: 10px; }
|
||||
.sections-list.layout .column {
|
||||
border: 1px solid #000; }
|
||||
.sections-list.layout .column-12 {
|
||||
grid-column-start: auto;
|
||||
grid-column-end: span 12; }
|
||||
.sections-list.layout .column-11 {
|
||||
grid-column-start: auto;
|
||||
grid-column-end: span 11; }
|
||||
.sections-list.layout .column-10 {
|
||||
grid-column-start: auto;
|
||||
grid-column-end: span 10; }
|
||||
.sections-list.layout .column-9 {
|
||||
grid-column-start: auto;
|
||||
grid-column-end: span 9; }
|
||||
.sections-list.layout .column-8 {
|
||||
grid-column-start: auto;
|
||||
grid-column-end: span 8; }
|
||||
.sections-list.layout .column-7 {
|
||||
grid-column-start: auto;
|
||||
grid-column-end: span 7; }
|
||||
.sections-list.layout .column-6 {
|
||||
grid-column-start: auto;
|
||||
grid-column-end: span 6; }
|
||||
.sections-list.layout .column-5 {
|
||||
grid-column-start: auto;
|
||||
grid-column-end: span 5; }
|
||||
.sections-list.layout .column-4 {
|
||||
grid-column-start: auto;
|
||||
grid-column-end: span 4; }
|
||||
.sections-list.layout .column-3 {
|
||||
grid-column-start: auto;
|
||||
grid-column-end: span 3; }
|
||||
.sections-list.layout .column-2 {
|
||||
grid-column-start: auto;
|
||||
grid-column-end: span 2; }
|
||||
.sections-list.layout .column-1 {
|
||||
grid-column-start: auto;
|
||||
grid-column-end: span 1; }
|
||||
|
||||
.sections-list .section-list {
|
||||
display: grid;
|
||||
grid-gap: 32px;
|
||||
|
@ -918,6 +962,27 @@ main {
|
|||
.top-stories-bottom-container a.more-recommendations {
|
||||
font-weight: normal;
|
||||
font-size: 13px; }
|
||||
@media (max-width: 865px) {
|
||||
.top-stories-bottom-container .wrapper-topics,
|
||||
.top-stories-bottom-container .wrapper-cta + .wrapper-more-recommendations {
|
||||
display: none; } }
|
||||
@media (max-width: 609px) {
|
||||
.top-stories-bottom-container .wrapper-cta {
|
||||
text-align: center; }
|
||||
.top-stories-bottom-container .wrapper-cta .pocket-logged-in-cta {
|
||||
display: block;
|
||||
margin-inline-end: 0; }
|
||||
.top-stories-bottom-container .wrapper-cta .pocket-logged-in-cta .pocket-cta-button {
|
||||
max-width: none;
|
||||
display: block;
|
||||
margin-inline-end: 0;
|
||||
margin: 5px 0 10px; }
|
||||
.top-stories-bottom-container .wrapper-more-recommendations {
|
||||
width: 100%; }
|
||||
.top-stories-bottom-container .wrapper-more-recommendations .more-recommendations {
|
||||
justify-content: center; }
|
||||
.top-stories-bottom-container .wrapper-more-recommendations .more-recommendations::after {
|
||||
display: none; } }
|
||||
|
||||
@media (min-width: 1122px) {
|
||||
.sections-list .normal-cards .section-list {
|
||||
|
@ -1471,6 +1536,14 @@ main {
|
|||
vertical-align: middle; }
|
||||
.collapsible-section .section-title .click-target-container {
|
||||
vertical-align: top; }
|
||||
@media (max-width: 609px) {
|
||||
.collapsible-section .section-title .click-target-container {
|
||||
display: block; }
|
||||
.collapsible-section .section-title .click-target-container .learn-more-link-wrapper {
|
||||
display: block;
|
||||
text-align: center; }
|
||||
.collapsible-section .section-title .click-target-container .learn-more-link-wrapper .learn-more-link {
|
||||
margin-inline-start: 0; } }
|
||||
.collapsible-section .section-title .click-target-container .click-target {
|
||||
cursor: pointer;
|
||||
white-space: nowrap; }
|
||||
|
@ -1532,6 +1605,9 @@ main {
|
|||
.collapsible-section.collapsed .section-body {
|
||||
max-height: 0;
|
||||
overflow: hidden; }
|
||||
@media (min-width: 610px) and (max-width: 865px) {
|
||||
.collapsible-section[data-section-id='topstories'] .card-outer:first-child {
|
||||
display: none; } }
|
||||
|
||||
.asrouter-admin {
|
||||
max-width: 996px;
|
||||
|
@ -1606,8 +1682,10 @@ main {
|
|||
.pocket-logged-in-cta {
|
||||
font-size: 13px;
|
||||
margin-inline-end: 20px;
|
||||
display: inline-block; }
|
||||
display: flex;
|
||||
align-items: flex-start; }
|
||||
.pocket-logged-in-cta .pocket-cta-button {
|
||||
white-space: nowrap;
|
||||
background: #0060DF;
|
||||
letter-spacing: -0.34px;
|
||||
color: #FFF;
|
||||
|
@ -2059,6 +2137,7 @@ main {
|
|||
font-size: 12px;
|
||||
color: var(--newtab-text-secondary-color);
|
||||
margin-top: 10px;
|
||||
display: flex;
|
||||
flex: 0 0 100%; }
|
||||
.SubmitFormSnippet .innerWrapper {
|
||||
max-width: 670px;
|
||||
|
@ -2245,6 +2324,7 @@ main {
|
|||
.EOYSnippetForm input[type='radio']:not(:checked):focus + .donation-amount {
|
||||
border: 1px dotted var(--newtab-link-primary-color); }
|
||||
.EOYSnippetForm .monthly-checkbox-container {
|
||||
display: flex;
|
||||
width: 100%; }
|
||||
.EOYSnippetForm .donation-form-url {
|
||||
margin-inline-start: 18px;
|
||||
|
|
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
|
@ -849,6 +849,50 @@ main {
|
|||
opacity: 1;
|
||||
transform: translateY(0); } }
|
||||
|
||||
.sections-list.layout {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(12, 1fr);
|
||||
grid-column-gap: 10px;
|
||||
grid-row-gap: 10px; }
|
||||
.sections-list.layout .column {
|
||||
border: 1px solid #000; }
|
||||
.sections-list.layout .column-12 {
|
||||
grid-column-start: auto;
|
||||
grid-column-end: span 12; }
|
||||
.sections-list.layout .column-11 {
|
||||
grid-column-start: auto;
|
||||
grid-column-end: span 11; }
|
||||
.sections-list.layout .column-10 {
|
||||
grid-column-start: auto;
|
||||
grid-column-end: span 10; }
|
||||
.sections-list.layout .column-9 {
|
||||
grid-column-start: auto;
|
||||
grid-column-end: span 9; }
|
||||
.sections-list.layout .column-8 {
|
||||
grid-column-start: auto;
|
||||
grid-column-end: span 8; }
|
||||
.sections-list.layout .column-7 {
|
||||
grid-column-start: auto;
|
||||
grid-column-end: span 7; }
|
||||
.sections-list.layout .column-6 {
|
||||
grid-column-start: auto;
|
||||
grid-column-end: span 6; }
|
||||
.sections-list.layout .column-5 {
|
||||
grid-column-start: auto;
|
||||
grid-column-end: span 5; }
|
||||
.sections-list.layout .column-4 {
|
||||
grid-column-start: auto;
|
||||
grid-column-end: span 4; }
|
||||
.sections-list.layout .column-3 {
|
||||
grid-column-start: auto;
|
||||
grid-column-end: span 3; }
|
||||
.sections-list.layout .column-2 {
|
||||
grid-column-start: auto;
|
||||
grid-column-end: span 2; }
|
||||
.sections-list.layout .column-1 {
|
||||
grid-column-start: auto;
|
||||
grid-column-end: span 1; }
|
||||
|
||||
.sections-list .section-list {
|
||||
display: grid;
|
||||
grid-gap: 32px;
|
||||
|
@ -921,6 +965,27 @@ main {
|
|||
.top-stories-bottom-container a.more-recommendations {
|
||||
font-weight: normal;
|
||||
font-size: 13px; }
|
||||
@media (max-width: 865px) {
|
||||
.top-stories-bottom-container .wrapper-topics,
|
||||
.top-stories-bottom-container .wrapper-cta + .wrapper-more-recommendations {
|
||||
display: none; } }
|
||||
@media (max-width: 609px) {
|
||||
.top-stories-bottom-container .wrapper-cta {
|
||||
text-align: center; }
|
||||
.top-stories-bottom-container .wrapper-cta .pocket-logged-in-cta {
|
||||
display: block;
|
||||
margin-inline-end: 0; }
|
||||
.top-stories-bottom-container .wrapper-cta .pocket-logged-in-cta .pocket-cta-button {
|
||||
max-width: none;
|
||||
display: block;
|
||||
margin-inline-end: 0;
|
||||
margin: 5px 0 10px; }
|
||||
.top-stories-bottom-container .wrapper-more-recommendations {
|
||||
width: 100%; }
|
||||
.top-stories-bottom-container .wrapper-more-recommendations .more-recommendations {
|
||||
justify-content: center; }
|
||||
.top-stories-bottom-container .wrapper-more-recommendations .more-recommendations::after {
|
||||
display: none; } }
|
||||
|
||||
@media (min-width: 1122px) {
|
||||
.sections-list .normal-cards .section-list {
|
||||
|
@ -1474,6 +1539,14 @@ main {
|
|||
vertical-align: middle; }
|
||||
.collapsible-section .section-title .click-target-container {
|
||||
vertical-align: top; }
|
||||
@media (max-width: 609px) {
|
||||
.collapsible-section .section-title .click-target-container {
|
||||
display: block; }
|
||||
.collapsible-section .section-title .click-target-container .learn-more-link-wrapper {
|
||||
display: block;
|
||||
text-align: center; }
|
||||
.collapsible-section .section-title .click-target-container .learn-more-link-wrapper .learn-more-link {
|
||||
margin-inline-start: 0; } }
|
||||
.collapsible-section .section-title .click-target-container .click-target {
|
||||
cursor: pointer;
|
||||
white-space: nowrap; }
|
||||
|
@ -1535,6 +1608,9 @@ main {
|
|||
.collapsible-section.collapsed .section-body {
|
||||
max-height: 0;
|
||||
overflow: hidden; }
|
||||
@media (min-width: 610px) and (max-width: 865px) {
|
||||
.collapsible-section[data-section-id='topstories'] .card-outer:first-child {
|
||||
display: none; } }
|
||||
|
||||
.asrouter-admin {
|
||||
max-width: 996px;
|
||||
|
@ -1609,8 +1685,10 @@ main {
|
|||
.pocket-logged-in-cta {
|
||||
font-size: 13px;
|
||||
margin-inline-end: 20px;
|
||||
display: inline-block; }
|
||||
display: flex;
|
||||
align-items: flex-start; }
|
||||
.pocket-logged-in-cta .pocket-cta-button {
|
||||
white-space: nowrap;
|
||||
background: #0060DF;
|
||||
letter-spacing: -0.34px;
|
||||
color: #FFF;
|
||||
|
@ -2062,6 +2140,7 @@ main {
|
|||
font-size: 12px;
|
||||
color: var(--newtab-text-secondary-color);
|
||||
margin-top: 10px;
|
||||
display: flex;
|
||||
flex: 0 0 100%; }
|
||||
.SubmitFormSnippet .innerWrapper {
|
||||
max-width: 670px;
|
||||
|
@ -2248,6 +2327,7 @@ main {
|
|||
.EOYSnippetForm input[type='radio']:not(:checked):focus + .donation-amount {
|
||||
border: 1px dotted var(--newtab-link-primary-color); }
|
||||
.EOYSnippetForm .monthly-checkbox-container {
|
||||
display: flex;
|
||||
width: 100%; }
|
||||
.EOYSnippetForm .donation-form-url {
|
||||
margin-inline-start: 18px;
|
||||
|
|
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
|
@ -846,6 +846,50 @@ main {
|
|||
opacity: 1;
|
||||
transform: translateY(0); } }
|
||||
|
||||
.sections-list.layout {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(12, 1fr);
|
||||
grid-column-gap: 10px;
|
||||
grid-row-gap: 10px; }
|
||||
.sections-list.layout .column {
|
||||
border: 1px solid #000; }
|
||||
.sections-list.layout .column-12 {
|
||||
grid-column-start: auto;
|
||||
grid-column-end: span 12; }
|
||||
.sections-list.layout .column-11 {
|
||||
grid-column-start: auto;
|
||||
grid-column-end: span 11; }
|
||||
.sections-list.layout .column-10 {
|
||||
grid-column-start: auto;
|
||||
grid-column-end: span 10; }
|
||||
.sections-list.layout .column-9 {
|
||||
grid-column-start: auto;
|
||||
grid-column-end: span 9; }
|
||||
.sections-list.layout .column-8 {
|
||||
grid-column-start: auto;
|
||||
grid-column-end: span 8; }
|
||||
.sections-list.layout .column-7 {
|
||||
grid-column-start: auto;
|
||||
grid-column-end: span 7; }
|
||||
.sections-list.layout .column-6 {
|
||||
grid-column-start: auto;
|
||||
grid-column-end: span 6; }
|
||||
.sections-list.layout .column-5 {
|
||||
grid-column-start: auto;
|
||||
grid-column-end: span 5; }
|
||||
.sections-list.layout .column-4 {
|
||||
grid-column-start: auto;
|
||||
grid-column-end: span 4; }
|
||||
.sections-list.layout .column-3 {
|
||||
grid-column-start: auto;
|
||||
grid-column-end: span 3; }
|
||||
.sections-list.layout .column-2 {
|
||||
grid-column-start: auto;
|
||||
grid-column-end: span 2; }
|
||||
.sections-list.layout .column-1 {
|
||||
grid-column-start: auto;
|
||||
grid-column-end: span 1; }
|
||||
|
||||
.sections-list .section-list {
|
||||
display: grid;
|
||||
grid-gap: 32px;
|
||||
|
@ -918,6 +962,27 @@ main {
|
|||
.top-stories-bottom-container a.more-recommendations {
|
||||
font-weight: normal;
|
||||
font-size: 13px; }
|
||||
@media (max-width: 865px) {
|
||||
.top-stories-bottom-container .wrapper-topics,
|
||||
.top-stories-bottom-container .wrapper-cta + .wrapper-more-recommendations {
|
||||
display: none; } }
|
||||
@media (max-width: 609px) {
|
||||
.top-stories-bottom-container .wrapper-cta {
|
||||
text-align: center; }
|
||||
.top-stories-bottom-container .wrapper-cta .pocket-logged-in-cta {
|
||||
display: block;
|
||||
margin-inline-end: 0; }
|
||||
.top-stories-bottom-container .wrapper-cta .pocket-logged-in-cta .pocket-cta-button {
|
||||
max-width: none;
|
||||
display: block;
|
||||
margin-inline-end: 0;
|
||||
margin: 5px 0 10px; }
|
||||
.top-stories-bottom-container .wrapper-more-recommendations {
|
||||
width: 100%; }
|
||||
.top-stories-bottom-container .wrapper-more-recommendations .more-recommendations {
|
||||
justify-content: center; }
|
||||
.top-stories-bottom-container .wrapper-more-recommendations .more-recommendations::after {
|
||||
display: none; } }
|
||||
|
||||
@media (min-width: 1122px) {
|
||||
.sections-list .normal-cards .section-list {
|
||||
|
@ -1471,6 +1536,14 @@ main {
|
|||
vertical-align: middle; }
|
||||
.collapsible-section .section-title .click-target-container {
|
||||
vertical-align: top; }
|
||||
@media (max-width: 609px) {
|
||||
.collapsible-section .section-title .click-target-container {
|
||||
display: block; }
|
||||
.collapsible-section .section-title .click-target-container .learn-more-link-wrapper {
|
||||
display: block;
|
||||
text-align: center; }
|
||||
.collapsible-section .section-title .click-target-container .learn-more-link-wrapper .learn-more-link {
|
||||
margin-inline-start: 0; } }
|
||||
.collapsible-section .section-title .click-target-container .click-target {
|
||||
cursor: pointer;
|
||||
white-space: nowrap; }
|
||||
|
@ -1532,6 +1605,9 @@ main {
|
|||
.collapsible-section.collapsed .section-body {
|
||||
max-height: 0;
|
||||
overflow: hidden; }
|
||||
@media (min-width: 610px) and (max-width: 865px) {
|
||||
.collapsible-section[data-section-id='topstories'] .card-outer:first-child {
|
||||
display: none; } }
|
||||
|
||||
.asrouter-admin {
|
||||
max-width: 996px;
|
||||
|
@ -1606,8 +1682,10 @@ main {
|
|||
.pocket-logged-in-cta {
|
||||
font-size: 13px;
|
||||
margin-inline-end: 20px;
|
||||
display: inline-block; }
|
||||
display: flex;
|
||||
align-items: flex-start; }
|
||||
.pocket-logged-in-cta .pocket-cta-button {
|
||||
white-space: nowrap;
|
||||
background: #0060DF;
|
||||
letter-spacing: -0.34px;
|
||||
color: #FFF;
|
||||
|
@ -2059,6 +2137,7 @@ main {
|
|||
font-size: 12px;
|
||||
color: var(--newtab-text-secondary-color);
|
||||
margin-top: 10px;
|
||||
display: flex;
|
||||
flex: 0 0 100%; }
|
||||
.SubmitFormSnippet .innerWrapper {
|
||||
max-width: 670px;
|
||||
|
@ -2245,6 +2324,7 @@ main {
|
|||
.EOYSnippetForm input[type='radio']:not(:checked):focus + .donation-amount {
|
||||
border: 1px dotted var(--newtab-link-primary-color); }
|
||||
.EOYSnippetForm .monthly-checkbox-container {
|
||||
display: flex;
|
||||
width: 100%; }
|
||||
.EOYSnippetForm .donation-form-url {
|
||||
margin-inline-start: 18px;
|
||||
|
|
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
|
@ -211,7 +211,7 @@ const globalImportContext = typeof Window === "undefined" ? BACKGROUND_PROCESS :
|
|||
// }
|
||||
const actionTypes = {};
|
||||
|
||||
for (const type of ["ADDONS_INFO_REQUEST", "ADDONS_INFO_RESPONSE", "ARCHIVE_FROM_POCKET", "AS_ROUTER_INITIALIZED", "AS_ROUTER_PREF_CHANGED", "AS_ROUTER_TELEMETRY_USER_EVENT", "BLOCK_URL", "BOOKMARK_URL", "COPY_DOWNLOAD_LINK", "DELETE_BOOKMARK_BY_ID", "DELETE_FROM_POCKET", "DELETE_HISTORY_URL", "DIALOG_CANCEL", "DIALOG_OPEN", "DOWNLOAD_CHANGED", "FILL_SEARCH_TERM", "INIT", "MIGRATION_CANCEL", "MIGRATION_COMPLETED", "MIGRATION_START", "NEW_TAB_INIT", "NEW_TAB_INITIAL_STATE", "NEW_TAB_LOAD", "NEW_TAB_REHYDRATED", "NEW_TAB_STATE_REQUEST", "NEW_TAB_UNLOAD", "OPEN_DOWNLOAD_FILE", "OPEN_LINK", "OPEN_NEW_WINDOW", "OPEN_PRIVATE_WINDOW", "OPEN_WEBEXT_SETTINGS", "PAGE_PRERENDERED", "PLACES_BOOKMARK_ADDED", "PLACES_BOOKMARK_REMOVED", "PLACES_HISTORY_CLEARED", "PLACES_LINKS_CHANGED", "PLACES_LINK_BLOCKED", "PLACES_LINK_DELETED", "PLACES_SAVED_TO_POCKET", "POCKET_CTA", "POCKET_LOGGED_IN", "POCKET_WAITING_FOR_SPOC", "PREFS_INITIAL_VALUES", "PREF_CHANGED", "PREVIEW_REQUEST", "PREVIEW_REQUEST_CANCEL", "PREVIEW_RESPONSE", "REMOVE_DOWNLOAD_FILE", "RICH_ICON_MISSING", "SAVE_SESSION_PERF_DATA", "SAVE_TO_POCKET", "SCREENSHOT_UPDATED", "SECTION_DEREGISTER", "SECTION_DISABLE", "SECTION_ENABLE", "SECTION_MOVE", "SECTION_OPTIONS_CHANGED", "SECTION_REGISTER", "SECTION_UPDATE", "SECTION_UPDATE_CARD", "SETTINGS_CLOSE", "SETTINGS_OPEN", "SET_PREF", "SHOW_DOWNLOAD_FILE", "SHOW_FIREFOX_ACCOUNTS", "SKIPPED_SIGNIN", "SNIPPETS_BLOCKLIST_CLEARED", "SNIPPETS_BLOCKLIST_UPDATED", "SNIPPETS_DATA", "SNIPPETS_PREVIEW_MODE", "SNIPPETS_RESET", "SNIPPET_BLOCKED", "SUBMIT_EMAIL", "SYSTEM_TICK", "TELEMETRY_IMPRESSION_STATS", "TELEMETRY_PERFORMANCE_EVENT", "TELEMETRY_UNDESIRED_EVENT", "TELEMETRY_USER_EVENT", "TOP_SITES_CANCEL_EDIT", "TOP_SITES_CLOSE_SEARCH_SHORTCUTS_MODAL", "TOP_SITES_EDIT", "TOP_SITES_INSERT", "TOP_SITES_OPEN_SEARCH_SHORTCUTS_MODAL", "TOP_SITES_PIN", "TOP_SITES_PREFS_UPDATED", "TOP_SITES_UNPIN", "TOP_SITES_UPDATED", "TOTAL_BOOKMARKS_REQUEST", "TOTAL_BOOKMARKS_RESPONSE", "UNINIT", "UPDATE_PINNED_SEARCH_SHORTCUTS", "UPDATE_SEARCH_SHORTCUTS", "UPDATE_SECTION_PREFS", "WEBEXT_CLICK", "WEBEXT_DISMISS"]) {
|
||||
for (const type of ["ADDONS_INFO_REQUEST", "ADDONS_INFO_RESPONSE", "ARCHIVE_FROM_POCKET", "AS_ROUTER_INITIALIZED", "AS_ROUTER_PREF_CHANGED", "AS_ROUTER_TELEMETRY_USER_EVENT", "BLOCK_URL", "BOOKMARK_URL", "CONTENT_LAYOUT", "COPY_DOWNLOAD_LINK", "DELETE_BOOKMARK_BY_ID", "DELETE_FROM_POCKET", "DELETE_HISTORY_URL", "DIALOG_CANCEL", "DIALOG_OPEN", "DOWNLOAD_CHANGED", "FILL_SEARCH_TERM", "INIT", "MIGRATION_CANCEL", "MIGRATION_COMPLETED", "MIGRATION_START", "NEW_TAB_INIT", "NEW_TAB_INITIAL_STATE", "NEW_TAB_LOAD", "NEW_TAB_REHYDRATED", "NEW_TAB_STATE_REQUEST", "NEW_TAB_UNLOAD", "OPEN_DOWNLOAD_FILE", "OPEN_LINK", "OPEN_NEW_WINDOW", "OPEN_PRIVATE_WINDOW", "OPEN_WEBEXT_SETTINGS", "PAGE_PRERENDERED", "PLACES_BOOKMARK_ADDED", "PLACES_BOOKMARK_REMOVED", "PLACES_HISTORY_CLEARED", "PLACES_LINKS_CHANGED", "PLACES_LINK_BLOCKED", "PLACES_LINK_DELETED", "PLACES_SAVED_TO_POCKET", "POCKET_CTA", "POCKET_LOGGED_IN", "POCKET_WAITING_FOR_SPOC", "PREFS_INITIAL_VALUES", "PREF_CHANGED", "PREVIEW_REQUEST", "PREVIEW_REQUEST_CANCEL", "PREVIEW_RESPONSE", "REMOVE_DOWNLOAD_FILE", "RICH_ICON_MISSING", "SAVE_SESSION_PERF_DATA", "SAVE_TO_POCKET", "SCREENSHOT_UPDATED", "SECTION_DEREGISTER", "SECTION_DISABLE", "SECTION_ENABLE", "SECTION_MOVE", "SECTION_OPTIONS_CHANGED", "SECTION_REGISTER", "SECTION_UPDATE", "SECTION_UPDATE_CARD", "SETTINGS_CLOSE", "SETTINGS_OPEN", "SET_PREF", "SHOW_DOWNLOAD_FILE", "SHOW_FIREFOX_ACCOUNTS", "SKIPPED_SIGNIN", "SNIPPETS_BLOCKLIST_CLEARED", "SNIPPETS_BLOCKLIST_UPDATED", "SNIPPETS_DATA", "SNIPPETS_PREVIEW_MODE", "SNIPPETS_RESET", "SNIPPET_BLOCKED", "SUBMIT_EMAIL", "SYSTEM_TICK", "TELEMETRY_IMPRESSION_STATS", "TELEMETRY_PERFORMANCE_EVENT", "TELEMETRY_UNDESIRED_EVENT", "TELEMETRY_USER_EVENT", "TOP_SITES_CANCEL_EDIT", "TOP_SITES_CLOSE_SEARCH_SHORTCUTS_MODAL", "TOP_SITES_EDIT", "TOP_SITES_INSERT", "TOP_SITES_OPEN_SEARCH_SHORTCUTS_MODAL", "TOP_SITES_PIN", "TOP_SITES_PREFS_UPDATED", "TOP_SITES_UNPIN", "TOP_SITES_UPDATED", "TOTAL_BOOKMARKS_REQUEST", "TOTAL_BOOKMARKS_RESPONSE", "UNINIT", "UPDATE_PINNED_SEARCH_SHORTCUTS", "UPDATE_SEARCH_SHORTCUTS", "UPDATE_SECTION_PREFS", "WEBEXT_CLICK", "WEBEXT_DISMISS"]) {
|
||||
actionTypes[type] = type;
|
||||
}
|
||||
|
||||
|
@ -2017,7 +2017,7 @@ class _StartupOverlay extends react__WEBPACK_IMPORTED_MODULE_3___default.a.PureC
|
|||
try {
|
||||
_this.didFetch = true;
|
||||
const fxaParams = "entrypoint=activity-stream-firstrun&utm_source=activity-stream&utm_campaign=firstrun&form_type=email";
|
||||
const response = yield fetch(`${_this.props.fxa_endpoint}/metrics-flow?${fxaParams}`);
|
||||
const response = yield fetch(`${_this.props.fxa_endpoint}/metrics-flow?${fxaParams}`, { credentials: "omit" });
|
||||
if (response.status === 200) {
|
||||
const { flowId, flowBeginTime } = yield response.json();
|
||||
_this.setState({ flowId, flowBeginTime });
|
||||
|
@ -3942,15 +3942,19 @@ class Section extends react__WEBPACK_IMPORTED_MODULE_8___default.a.PureComponent
|
|||
id === "topstories" && react__WEBPACK_IMPORTED_MODULE_8___default.a.createElement(
|
||||
"div",
|
||||
{ className: "top-stories-bottom-container" },
|
||||
react__WEBPACK_IMPORTED_MODULE_8___default.a.createElement(
|
||||
shouldShowTopics && react__WEBPACK_IMPORTED_MODULE_8___default.a.createElement(
|
||||
"div",
|
||||
null,
|
||||
shouldShowTopics && react__WEBPACK_IMPORTED_MODULE_8___default.a.createElement(content_src_components_Topics_Topics__WEBPACK_IMPORTED_MODULE_9__["Topics"], { topics: this.props.topics }),
|
||||
shouldShowPocketCta && react__WEBPACK_IMPORTED_MODULE_8___default.a.createElement(content_src_components_PocketLoggedInCta_PocketLoggedInCta__WEBPACK_IMPORTED_MODULE_7__["PocketLoggedInCta"], null)
|
||||
{ className: "wrapper-topics" },
|
||||
react__WEBPACK_IMPORTED_MODULE_8___default.a.createElement(content_src_components_Topics_Topics__WEBPACK_IMPORTED_MODULE_9__["Topics"], { topics: this.props.topics })
|
||||
),
|
||||
shouldShowPocketCta && react__WEBPACK_IMPORTED_MODULE_8___default.a.createElement(
|
||||
"div",
|
||||
{ className: "wrapper-cta" },
|
||||
react__WEBPACK_IMPORTED_MODULE_8___default.a.createElement(content_src_components_PocketLoggedInCta_PocketLoggedInCta__WEBPACK_IMPORTED_MODULE_7__["PocketLoggedInCta"], null)
|
||||
),
|
||||
react__WEBPACK_IMPORTED_MODULE_8___default.a.createElement(
|
||||
"div",
|
||||
null,
|
||||
{ className: "wrapper-more-recommendations" },
|
||||
shouldShowReadMore && react__WEBPACK_IMPORTED_MODULE_8___default.a.createElement(content_src_components_MoreRecommendations_MoreRecommendations__WEBPACK_IMPORTED_MODULE_6__["MoreRecommendations"], { read_more_endpoint: read_more_endpoint })
|
||||
)
|
||||
)
|
||||
|
@ -3995,7 +3999,30 @@ class _Sections extends react__WEBPACK_IMPORTED_MODULE_8___default.a.PureCompone
|
|||
return sections;
|
||||
}
|
||||
|
||||
renderLayout() {
|
||||
return react__WEBPACK_IMPORTED_MODULE_8___default.a.createElement(
|
||||
"div",
|
||||
{ className: "sections-list layout" },
|
||||
this.props.Layout.map((section, sectionIndex) => react__WEBPACK_IMPORTED_MODULE_8___default.a.createElement(
|
||||
"div",
|
||||
{ key: `section-${sectionIndex}`, className: `column column-${section.width}` },
|
||||
section.components.map((component, componentIndex) => react__WEBPACK_IMPORTED_MODULE_8___default.a.createElement(
|
||||
"div",
|
||||
{ key: `component-${componentIndex}` },
|
||||
react__WEBPACK_IMPORTED_MODULE_8___default.a.createElement(
|
||||
"div",
|
||||
null,
|
||||
component.type
|
||||
)
|
||||
))
|
||||
))
|
||||
);
|
||||
}
|
||||
|
||||
render() {
|
||||
if (this.props.Layout && this.props.Layout.length) {
|
||||
return this.renderLayout();
|
||||
}
|
||||
return react__WEBPACK_IMPORTED_MODULE_8___default.a.createElement(
|
||||
"div",
|
||||
{ className: "sections-list" },
|
||||
|
@ -4004,7 +4031,7 @@ class _Sections extends react__WEBPACK_IMPORTED_MODULE_8___default.a.PureCompone
|
|||
}
|
||||
}
|
||||
|
||||
const Sections = Object(react_redux__WEBPACK_IMPORTED_MODULE_5__["connect"])(state => ({ Sections: state.Sections, Prefs: state.Prefs }))(_Sections);
|
||||
const Sections = Object(react_redux__WEBPACK_IMPORTED_MODULE_5__["connect"])(state => ({ Sections: state.Sections, Prefs: state.Prefs, Layout: state.Layout }))(_Sections);
|
||||
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(1)))
|
||||
|
||||
/***/ }),
|
||||
|
@ -4510,6 +4537,7 @@ class _CollapsibleSection extends react__WEBPACK_IMPORTED_MODULE_3___default.a.P
|
|||
this.onMenuButtonMouseLeave = this.onMenuButtonMouseLeave.bind(this);
|
||||
this.onMenuUpdate = this.onMenuUpdate.bind(this);
|
||||
this.state = { enableAnimation: true, isAnimating: false, menuButtonHover: false, showContextMenu: false };
|
||||
this.setContextMenuButtonRef = this.setContextMenuButtonRef.bind(this);
|
||||
}
|
||||
|
||||
componentWillMount() {
|
||||
|
@ -4527,8 +4555,19 @@ class _CollapsibleSection extends react__WEBPACK_IMPORTED_MODULE_3___default.a.P
|
|||
}
|
||||
}
|
||||
|
||||
setContextMenuButtonRef(element) {
|
||||
this.contextMenuButtonRef = element;
|
||||
}
|
||||
|
||||
componentDidMount() {
|
||||
this.contextMenuButtonRef.addEventListener("mouseenter", this.onMenuButtonMouseEnter);
|
||||
this.contextMenuButtonRef.addEventListener("mouseleave", this.onMenuButtonMouseLeave);
|
||||
}
|
||||
|
||||
componentWillUnmount() {
|
||||
this.props.document.removeEventListener(VISIBILITY_CHANGE_EVENT, this.enableOrDisableAnimation);
|
||||
this.contextMenuButtonRef.removeEventListener("mouseenter", this.onMenuButtonMouseEnter);
|
||||
this.contextMenuButtonRef.removeEventListener("mouseleave", this.onMenuButtonMouseLeave);
|
||||
}
|
||||
|
||||
enableOrDisableAnimation() {
|
||||
|
@ -4647,7 +4686,7 @@ class _CollapsibleSection extends react__WEBPACK_IMPORTED_MODULE_3___default.a.P
|
|||
),
|
||||
react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(
|
||||
"span",
|
||||
null,
|
||||
{ className: "learn-more-link-wrapper" },
|
||||
learnMore && react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(
|
||||
"span",
|
||||
{ className: "learn-more-link" },
|
||||
|
@ -4669,8 +4708,7 @@ class _CollapsibleSection extends react__WEBPACK_IMPORTED_MODULE_3___default.a.P
|
|||
className: "context-menu-button icon",
|
||||
title: this.props.intl.formatMessage({ id: "context_menu_title" }),
|
||||
onClick: this.onMenuButtonClick,
|
||||
onMouseEnter: this.onMenuButtonMouseEnter,
|
||||
onMouseLeave: this.onMenuButtonMouseLeave },
|
||||
ref: this.setContextMenuButtonRef },
|
||||
react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(
|
||||
"span",
|
||||
{ className: "sr-only" },
|
||||
|
@ -6755,7 +6793,7 @@ class SubmitFormSnippet_SubmitFormSnippet extends external_React_default.a.PureC
|
|||
const { url, formData } = _this.props.processFormData ? _this.props.processFormData(_this.refs.mainInput, _this.props) : { url: _this.refs.form.action, formData: new FormData(_this.refs.form) };
|
||||
|
||||
try {
|
||||
const fetchRequest = new Request(url, { body: formData, method: "POST" });
|
||||
const fetchRequest = new Request(url, { body: formData, method: "POST", credentials: "omit" });
|
||||
const response = yield fetch(fetchRequest);
|
||||
json = yield response.json();
|
||||
} catch (err) {
|
||||
|
@ -9840,7 +9878,8 @@ const INITIAL_STATE = {
|
|||
isUserLoggedIn: null,
|
||||
pocketCta: {},
|
||||
waitingForSpoc: true
|
||||
}
|
||||
},
|
||||
Layout: []
|
||||
};
|
||||
|
||||
|
||||
|
@ -10224,7 +10263,16 @@ function Pocket(prevState = INITIAL_STATE.Pocket, action) {
|
|||
}
|
||||
}
|
||||
|
||||
var reducers = { TopSites, App, ASRouter, Snippets, Prefs, Dialog, Sections, Pocket };
|
||||
function Layout(prevState = INITIAL_STATE.Layout, action) {
|
||||
switch (action.type) {
|
||||
case Actions["actionTypes"].CONTENT_LAYOUT:
|
||||
return action.data;
|
||||
default:
|
||||
return prevState;
|
||||
}
|
||||
}
|
||||
|
||||
var reducers = { TopSites, App, ASRouter, Snippets, Prefs, Dialog, Sections, Pocket, Layout };
|
||||
|
||||
/***/ }),
|
||||
/* 56 */
|
||||
|
|
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
|
@ -68,8 +68,7 @@ class PageAction {
|
|||
// Wait for layout to flush to avoid a synchronous reflow then calculate the
|
||||
// label width. We can safely get the width even though the recommendation is
|
||||
// collapsed; the label itself remains full width (with its overflow hidden)
|
||||
await this.window.promiseDocumentFlushed;
|
||||
const [{width}] = this.label.getClientRects();
|
||||
let [{width}] = await this.window.promiseDocumentFlushed(() => this.label.getClientRects());
|
||||
this.urlbar.style.setProperty("--cfr-label-width", `${width}px`);
|
||||
|
||||
this.container.addEventListener("click", this._handleClick);
|
||||
|
@ -244,7 +243,6 @@ class PageAction {
|
|||
// See https://searchfox.org/mozilla-central/rev/847b64cc28b74b44c379f9bff4f415b97da1c6d7/toolkit/modules/PopupNotifications.jsm#42
|
||||
browser.cfrpopupnotificationanchor = this.container;
|
||||
|
||||
const notification = this.window.document.getElementById("contextual-feature-recommendation-notification");
|
||||
const headerLabel = this.window.document.getElementById("cfr-notification-header-label");
|
||||
const headerLink = this.window.document.getElementById("cfr-notification-header-link");
|
||||
const headerImage = this.window.document.getElementById("cfr-notification-header-image");
|
||||
|
|
|
@ -9,10 +9,22 @@ ChromeUtils.import("resource://gre/modules/addons/AddonRepository.jsm");
|
|||
|
||||
async function getAddonName() {
|
||||
try {
|
||||
const {content} = await AttributionCode.getAttrDataAsync();
|
||||
if (!content) {
|
||||
let {content, source} = await AttributionCode.getAttrDataAsync();
|
||||
if (!content || source !== "addons.mozilla.org") {
|
||||
return null;
|
||||
}
|
||||
// Attribution data can be double encoded
|
||||
while (content.includes("%")) {
|
||||
try {
|
||||
const result = decodeURIComponent(content);
|
||||
if (result === content) {
|
||||
break;
|
||||
}
|
||||
content = result;
|
||||
} catch (e) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
const addons = await AddonRepository.getAddonsByIDs([content]);
|
||||
return addons[0].name;
|
||||
} catch (e) {
|
||||
|
|
|
@ -151,7 +151,7 @@ const MESSAGES = () => ([
|
|||
scene1_title_icon: TEST_ICON_16,
|
||||
|
||||
scene2_button_label: "Send",
|
||||
scene2_disclaimer_html: "The intended recipient of the email must have consented. <privacyLink>Learn more.</privacyLink>",
|
||||
scene2_disclaimer_html: "The intended recipient of the email must have consented. <privacyLink>Learn more</privacyLink>.",
|
||||
scene2_dismiss_button_text: "Dismiss",
|
||||
scene2_icon: TEST_ICON,
|
||||
scene2_input_placeholder: "Your email address or phone number",
|
||||
|
|
|
@ -29,7 +29,7 @@ this.TippyTopProvider = class TippyTopProvider {
|
|||
async init() {
|
||||
// Load the Tippy Top sites from the json manifest.
|
||||
try {
|
||||
for (const site of await (await fetch(TIPPYTOP_JSON_PATH)).json()) {
|
||||
for (const site of await (await fetch(TIPPYTOP_JSON_PATH, {credentials: "omit"})).json()) {
|
||||
// The tippy top manifest can have a url property (string) or a
|
||||
// urls property (array of strings)
|
||||
for (const url of site.url ? [site.url] : site.urls || []) {
|
||||
|
|
|
@ -112,6 +112,13 @@ this.TopStoriesFeed = class TopStoriesFeed {
|
|||
this.store.dispatch(shouldBroadcast ? ac.BroadcastToContent(action) : ac.AlsoToPreloaded(action));
|
||||
}
|
||||
|
||||
maybeDispatchLayoutUpdate(data, shouldBroadcast) {
|
||||
if (data && data.length) {
|
||||
const action = {type: at.CONTENT_LAYOUT, data};
|
||||
this.store.dispatch(shouldBroadcast ? ac.BroadcastToContent(action) : ac.AlsoToPreloaded(action));
|
||||
}
|
||||
}
|
||||
|
||||
doContentUpdate(shouldBroadcast) {
|
||||
let updateProps = {};
|
||||
if (this.stories) {
|
||||
|
@ -168,12 +175,13 @@ this.TopStoriesFeed = class TopStoriesFeed {
|
|||
return;
|
||||
}
|
||||
try {
|
||||
const response = await fetch(this.stories_endpoint);
|
||||
const response = await fetch(this.stories_endpoint, {credentials: "omit"});
|
||||
if (!response.ok) {
|
||||
throw new Error(`Stories endpoint returned unexpected status: ${response.status}`);
|
||||
}
|
||||
|
||||
const body = await response.json();
|
||||
this.maybeDispatchLayoutUpdate(body.layout);
|
||||
this.updateSettings(body.settings);
|
||||
this.stories = this.rotate(this.transform(body.recommendations));
|
||||
this.cleanUpTopRecImpressionPref();
|
||||
|
@ -194,7 +202,9 @@ this.TopStoriesFeed = class TopStoriesFeed {
|
|||
async loadCachedData() {
|
||||
const data = await this.cache.get();
|
||||
let stories = data.stories && data.stories.recommendations;
|
||||
let layout = data.stories && data.stories.layout;
|
||||
let topics = data.topics && data.topics.topics;
|
||||
this.maybeDispatchLayoutUpdate(layout);
|
||||
|
||||
let affinities = data.domainAffinities;
|
||||
if (this.personalized && affinities && affinities.scores) {
|
||||
|
@ -288,7 +298,7 @@ this.TopStoriesFeed = class TopStoriesFeed {
|
|||
return;
|
||||
}
|
||||
try {
|
||||
const response = await fetch(this.topics_endpoint);
|
||||
const response = await fetch(this.topics_endpoint, {credentials: "omit"});
|
||||
if (!response.ok) {
|
||||
throw new Error(`Topics endpoint returned unexpected status: ${response.status}`);
|
||||
}
|
||||
|
|
|
@ -143,9 +143,7 @@ pocket_read_more=Temes populars:
|
|||
# LOCALIZATION NOTE (pocket_read_even_more): This is shown as a link at the
|
||||
# end of the list of popular topic links.
|
||||
pocket_read_even_more=Mostra més articles
|
||||
|
||||
pocket_more_reccommendations=Més recomanacions
|
||||
pocket_learn_more=Més informació
|
||||
pocket_how_it_works=Com funciona
|
||||
pocket_cta_button=Obtén el Pocket
|
||||
pocket_cta_text=Deseu els vostres articles preferits al Pocket i gaudiu d'altres recomanacions fascinants.
|
||||
|
@ -197,7 +195,6 @@ firstrun_form_header=Introduïu la vostra adreça electrònica
|
|||
firstrun_form_sub_header=per continuar al Firefox Sync.
|
||||
|
||||
firstrun_email_input_placeholder=Adreça electrònica
|
||||
|
||||
firstrun_invalid_input=Cal una adreça electrònica vàlida
|
||||
|
||||
# LOCALIZATION NOTE (firstrun_extra_legal_links): {terms} is equal to firstrun_terms_of_service, and
|
||||
|
@ -208,3 +205,6 @@ firstrun_privacy_notice=Avís de privadesa
|
|||
|
||||
firstrun_continue_to_login=Continua
|
||||
firstrun_skip_login=Omet aquest pas
|
||||
|
||||
# LOCALIZATION NOTE (context_menu_title): Action tooltip to open a context menu
|
||||
context_menu_title=Obre el menú
|
||||
|
|
|
@ -60,7 +60,7 @@ menu_action_open_file=Otevřít soubor
|
|||
# link that belongs to this downloaded item"
|
||||
menu_action_copy_download_link=Kopírovat stahovaný odkaz
|
||||
menu_action_go_to_download_page=Přejít na stránku stahování
|
||||
menu_action_remove_download=Odebrat z historie
|
||||
menu_action_remove_download=Odstranit z historie
|
||||
|
||||
# LOCALIZATION NOTE (search_button): This is screenreader only text for the
|
||||
# search button.
|
||||
|
@ -144,7 +144,6 @@ pocket_read_more=Populární témata:
|
|||
# end of the list of popular topic links.
|
||||
pocket_read_even_more=Zobrazit více článků
|
||||
pocket_more_reccommendations=Další doporučení
|
||||
pocket_learn_more=Zjistit více
|
||||
pocket_how_it_works=Jak to funguje
|
||||
pocket_cta_button=Získejte Pocket
|
||||
pocket_cta_text=Ukládejte si články do služby Pocket a užívejte si skvělé čtení.
|
||||
|
@ -178,7 +177,7 @@ section_menu_action_expand_section=Rozbalit sekci
|
|||
section_menu_action_manage_section=Nastavení sekce
|
||||
section_menu_action_manage_webext=Správa rozšíření
|
||||
section_menu_action_add_topsite=Přidat mezi top stránky
|
||||
section_menu_action_add_search_engine=Přidat vyhledávací modul
|
||||
section_menu_action_add_search_engine=Přidat vyhledávač
|
||||
section_menu_action_move_up=Posunout nahoru
|
||||
section_menu_action_move_down=Posunout dolů
|
||||
section_menu_action_privacy_notice=Zásady ochrany osobních údajů
|
||||
|
@ -202,7 +201,7 @@ firstrun_invalid_input=Je požadován platný e-mail
|
|||
# {privacy} is equal to firstrun_privacy_notice. {terms} and {privacy} are clickable links.
|
||||
firstrun_extra_legal_links=Pokračováním souhlasíte s {terms} a {privacy}.
|
||||
firstrun_terms_of_service=Podmínkami používání služby
|
||||
firstrun_privacy_notice=Zásadami ochrany soukromí
|
||||
firstrun_privacy_notice=Zásadami ochrany osobních údajů
|
||||
|
||||
firstrun_continue_to_login=Pokračovat
|
||||
firstrun_skip_login=Přeskočit tento krok
|
||||
|
|
|
@ -143,9 +143,7 @@ pocket_read_more=Gai ezagunak:
|
|||
# LOCALIZATION NOTE (pocket_read_even_more): This is shown as a link at the
|
||||
# end of the list of popular topic links.
|
||||
pocket_read_even_more=Ikusi istorio gehiago
|
||||
|
||||
pocket_more_reccommendations=Gomendio gehiago
|
||||
pocket_learn_more=Argibide gehiago
|
||||
pocket_how_it_works=Nola dabilen
|
||||
pocket_cta_button=Eskuratu Pocket
|
||||
pocket_cta_text=Gorde gogoko dituzun istorioak Pocket-en eta piztu zure gogoa irakurgai erakargarriekin.
|
||||
|
@ -197,7 +195,6 @@ firstrun_form_header=Idatzi zure helbide elektronikoa
|
|||
firstrun_form_sub_header=Firefox Sync-ekin jarraitzeko.
|
||||
|
||||
firstrun_email_input_placeholder=Helbide elektronikoa
|
||||
|
||||
firstrun_invalid_input=Baliozko helbide elektronikoa behar da
|
||||
|
||||
# LOCALIZATION NOTE (firstrun_extra_legal_links): {terms} is equal to firstrun_terms_of_service, and
|
||||
|
@ -208,3 +205,6 @@ firstrun_privacy_notice=Pribatutasun-oharra
|
|||
|
||||
firstrun_continue_to_login=Jarraitu
|
||||
firstrun_skip_login=Saltatu urrats hau
|
||||
|
||||
# LOCALIZATION NOTE (context_menu_title): Action tooltip to open a context menu
|
||||
context_menu_title=Ireki menua
|
||||
|
|
|
@ -143,9 +143,9 @@ pocket_read_more=נושאים פופולריים:
|
|||
# LOCALIZATION NOTE (pocket_read_even_more): This is shown as a link at the
|
||||
# end of the list of popular topic links.
|
||||
pocket_read_even_more=צפייה בחדשות נוספות
|
||||
|
||||
pocket_more_reccommendations=המלצות נוספות
|
||||
pocket_learn_more=מידע נוסף
|
||||
pocket_how_it_works=איך זה עובד
|
||||
pocket_cta_button=קבלת Pocket
|
||||
|
||||
highlights_empty_state=ניתן להתחיל בגלישה ואנו נציג בפניך מספר כתבות, סרטונים ועמודים שונים מעולים בהם ביקרת לאחרונה או שהוספת לסימניות.
|
||||
|
@ -195,7 +195,6 @@ firstrun_form_header=נא להקליד את כתובת הדוא״ל שלך
|
|||
firstrun_form_sub_header=כדי להמשיך אל Firefox Sync.
|
||||
|
||||
firstrun_email_input_placeholder=דוא״ל
|
||||
|
||||
firstrun_invalid_input=נדרשת כתובת דוא״ל חוקית
|
||||
|
||||
# LOCALIZATION NOTE (firstrun_extra_legal_links): {terms} is equal to firstrun_terms_of_service, and
|
||||
|
@ -204,5 +203,8 @@ firstrun_extra_legal_links=בחירתך להמשיך בתהליך מהווה א
|
|||
firstrun_terms_of_service=תנאי השירות
|
||||
firstrun_privacy_notice=הצהרת הפרטיות
|
||||
|
||||
firstrun_continue_to_login=להמשיך
|
||||
firstrun_skip_login=לדלג על שלב זה
|
||||
firstrun_continue_to_login=המשך
|
||||
firstrun_skip_login=דילוג על שלב זה
|
||||
|
||||
# LOCALIZATION NOTE (context_menu_title): Action tooltip to open a context menu
|
||||
context_menu_title=פתיחת תפריט
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
newtab_page_title=Նոր ներդիր
|
||||
|
||||
header_top_sites=Լավագույն կայքեր
|
||||
header_highlights=Գունանշում
|
||||
header_highlights=Գունանշումներ
|
||||
# LOCALIZATION NOTE(header_recommended_by): This is followed by the name
|
||||
# of the corresponding content provider.
|
||||
header_recommended_by=Առաջարկվում է {provider}
|
||||
|
@ -31,6 +31,7 @@ menu_action_open_new_window=Բացել Նոր Պատուհանով
|
|||
menu_action_open_private_window=Բացել Նոր Գաղտնի դիտարկմամբ
|
||||
menu_action_dismiss=Բաց թողնել
|
||||
menu_action_delete=Ջնջել Պատմությունից
|
||||
menu_action_pin=Ամրացնել
|
||||
menu_action_unpin=Ապամրացնել
|
||||
confirm_history_delete_p1=Վստահ եք, որ ցանկանում եք ջնջել այս էջի ամեն մի օրինակ ձեր պատմությունից?
|
||||
# LOCALIZATION NOTE (confirm_history_delete_notice_p2): this string is displayed in
|
||||
|
|
|
@ -144,7 +144,6 @@ pocket_read_more=Subjectos popular:
|
|||
# end of the list of popular topic links.
|
||||
pocket_read_even_more=Vider plus historias
|
||||
pocket_more_reccommendations=Altere recommendationes
|
||||
pocket_learn_more=Saper plus
|
||||
pocket_how_it_works=Como illo labora
|
||||
pocket_cta_button=Installa Pocket
|
||||
pocket_cta_text=Salvar le chronologias que tu ama in Pocket, e alimenta tu mente con lecturas fascinante.
|
||||
|
|
|
@ -1,15 +1,19 @@
|
|||
newtab_page_title=Nýr flipi
|
||||
|
||||
header_highlights=Úrdrættir
|
||||
header_top_sites=Efstu vefsvæðin
|
||||
header_highlights=Hápunktar
|
||||
# LOCALIZATION NOTE(header_recommended_by): This is followed by the name
|
||||
# of the corresponding content provider.
|
||||
header_recommended_by=Með þessu mælir {provider}
|
||||
|
||||
# LOCALIZATION NOTE(context_menu_button_sr): This is for screen readers when
|
||||
# the context menu button is focused/active. Title is the label or hostname of
|
||||
# the site.
|
||||
context_menu_button_sr=Opna samhengisvalmynd fyrir {title}
|
||||
|
||||
# LOCALIZATION NOTE(section_context_menu_button_sr): This is for screen readers when
|
||||
# the section edit context menu button is focused/active.
|
||||
section_context_menu_button_sr=Opnaðu samhengisvalmyndina
|
||||
|
||||
# LOCALIZATION NOTE (type_label_*): These labels are associated to pages to give
|
||||
# context on how the element is related to the user, e.g. type indicates that
|
||||
|
@ -24,13 +28,22 @@ type_label_downloaded=Niðurhalað
|
|||
# menu and are meant as a call to action for a given page.
|
||||
# LOCALIZATION NOTE (menu_action_bookmark): Bookmark is a verb, as in "Add to
|
||||
# bookmarks"
|
||||
menu_action_bookmark=Bókamerkja
|
||||
menu_action_remove_bookmark=Fjarlægja bókamerki
|
||||
menu_action_open_new_window=Opna í nýjum glugga
|
||||
menu_action_open_private_window=Opna í nýjum huliðsglugga
|
||||
menu_action_dismiss=Hafna
|
||||
menu_action_delete=Eyða úr ferli
|
||||
menu_action_pin=Festa
|
||||
menu_action_unpin=Leysa
|
||||
confirm_history_delete_p1=Ertu viss um að þú viljir eyða öllum tilvikum af þessari síðu úr vafraferli þínum?
|
||||
# LOCALIZATION NOTE (confirm_history_delete_notice_p2): this string is displayed in
|
||||
# the same dialog as confirm_history_delete_p1. "This action" refers to deleting a
|
||||
# page from history.
|
||||
confirm_history_delete_notice_p2=Ekki er ekki hægt að bakfæra þessa aðgerð.
|
||||
menu_action_save_to_pocket=Vista í Pocket
|
||||
menu_action_delete_pocket=Eyða úr Pocket
|
||||
menu_action_archive_pocket=Safna í Pocket
|
||||
|
||||
# LOCALIZATION NOTE (menu_action_show_file_*): These are platform specific strings
|
||||
# found in the context menu of an item that has been downloaded. The intention behind
|
||||
|
@ -45,74 +58,153 @@ menu_action_open_file=Opna skrá
|
|||
# LOCALIZATION NOTE (menu_action_copy_download_link, menu_action_go_to_download_page):
|
||||
# "Download" here, in both cases, is not a verb, it is a noun. As in, "Copy the
|
||||
# link that belongs to this downloaded item"
|
||||
menu_action_copy_download_link=Afrita niðurhalsslóð
|
||||
menu_action_go_to_download_page=Opna niðurhalssíðu
|
||||
menu_action_remove_download=Eyða úr vafraferli
|
||||
|
||||
# LOCALIZATION NOTE (search_button): This is screenreader only text for the
|
||||
# search button.
|
||||
search_button=Leita
|
||||
|
||||
# LOCALIZATION NOTE (search_header): Displayed at the top of the panel
|
||||
# showing search suggestions. {search_engine_name} is replaced with the name of
|
||||
# the current default search engine. e.g. 'Google Search'
|
||||
search_header={search_engine_name} Leita
|
||||
|
||||
# LOCALIZATION NOTE (search_web_placeholder): This is shown in the searchbox when
|
||||
# the user hasn't typed anything yet.
|
||||
search_web_placeholder=Leita á vefnum
|
||||
|
||||
# LOCALIZATION NOTE (section_disclaimer_topstories): This is shown below
|
||||
# the topstories section title to provide additional information about
|
||||
# how the stories are selected.
|
||||
section_disclaimer_topstories=Áhugaverðustu sögurnar á vefnum, valdar út frá því sem þú lest. Frá Pocket, nú hluti af Mozilla.
|
||||
section_disclaimer_topstories_linktext=Læra hvernig það virkar.
|
||||
# LOCALIZATION NOTE (section_disclaimer_topstories_buttontext): The text of
|
||||
# the button used to acknowledge, and hide this disclaimer in the future.
|
||||
section_disclaimer_topstories_buttontext=Allt í lagi, ég skil
|
||||
|
||||
# LOCALIZATION NOTE (prefs_*, settings_*): These are shown in about:preferences
|
||||
# for a "Firefox Home" section. "Firefox" should be treated as a brand and kept
|
||||
# in English, while "Home" should be localized matching the about:preferences
|
||||
# sidebar mozilla-central string for the panel that has preferences related to
|
||||
# what is shown for the homepage, new windows, and new tabs.
|
||||
prefs_home_header=Upphafssíða Firefox
|
||||
prefs_home_description=Veldu hvaða efni þú vilt á Firefox heimaskjánum þínum.
|
||||
# LOCALIZATION NOTE (prefs_section_rows_option): This is a semi-colon list of
|
||||
# plural forms used in a drop down of multiple row options (1 row, 2 rows).
|
||||
# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
|
||||
prefs_section_rows_option={num} röð;{num} raðir
|
||||
prefs_search_header=Vefleit
|
||||
prefs_topsites_description=Mest heimsóttu vefsíður
|
||||
prefs_topstories_description2=Frábært efni víðsvegar að af vefnum, sérsniðið fyrir þig
|
||||
prefs_topstories_options_sponsored_label=Kostaðar sögur
|
||||
prefs_topstories_sponsored_learn_more=Læra meira
|
||||
prefs_highlights_description=Úrval af vefsvæðum sem þú hefur vistað eða heimsótt
|
||||
prefs_highlights_options_visited_label=Heimsóttar síður
|
||||
prefs_highlights_options_download_label=Síðasta niðurhal
|
||||
prefs_highlights_options_pocket_label=Síður vistaðar í Pocket
|
||||
prefs_snippets_description=Uppfærslur frá Mozilla og Firefox
|
||||
settings_pane_button_label=Sérsníða ræsisíðuna
|
||||
settings_pane_topsites_header=Efstu vefsvæði
|
||||
settings_pane_highlights_header=Hápunktar
|
||||
settings_pane_highlights_options_bookmarks=Bókamerki
|
||||
# LOCALIZATION NOTE(settings_pane_snippets_header): For the "Snippets" feature
|
||||
# traditionally on about:home. Alternative translation options: "Small Note" or
|
||||
# something that expresses the idea of "a small message, shortened from
|
||||
# something else, and non-essential but also not entirely trivial and useless."
|
||||
settings_pane_snippets_header=Bútar
|
||||
|
||||
# LOCALIZATION NOTE (edit_topsites_*): This is shown in the Edit Top Sites modal
|
||||
# dialog.
|
||||
edit_topsites_button_text=Breyta
|
||||
edit_topsites_edit_button=Breyta þessari síðu
|
||||
|
||||
# LOCALIZATION NOTE (topsites_form_*): This is shown in the New/Edit Topsite modal.
|
||||
topsites_form_add_header=Ný toppsíða
|
||||
topsites_form_edit_header=Breyta toppsíðu
|
||||
topsites_form_title_label=Titill
|
||||
topsites_form_title_placeholder=Sláðu inn titil
|
||||
topsites_form_url_label=Vefslóð
|
||||
topsites_form_image_url_label=Sérsniðin myndslóð
|
||||
topsites_form_url_placeholder=Slá inn eða líma vefslóð
|
||||
topsites_form_use_image_link=Nota sérsniðna mynd…
|
||||
# LOCALIZATION NOTE (topsites_form_*_button): These are verbs/actions.
|
||||
topsites_form_preview_button=Forskoðun
|
||||
topsites_form_add_button=Bæta við
|
||||
topsites_form_save_button=Vista
|
||||
topsites_form_cancel_button=Hætta við
|
||||
topsites_form_url_validation=Gildrar vefslóðar krafist
|
||||
topsites_form_image_validation=Ekki tókst að hlaða mynd. Prófið aðra vefslóð.
|
||||
|
||||
# LOCALIZATION NOTE (pocket_read_more): This is shown at the bottom of the
|
||||
# trending stories section and precedes a list of links to popular topics.
|
||||
pocket_read_more=Helstu umræðuefni:
|
||||
# LOCALIZATION NOTE (pocket_read_even_more): This is shown as a link at the
|
||||
# end of the list of popular topic links.
|
||||
pocket_read_even_more=Skoða fleiri sögur
|
||||
pocket_more_reccommendations=Fleiri meðmæli
|
||||
pocket_how_it_works=Hvernig það virkar
|
||||
pocket_cta_button=Sækja Pocket
|
||||
pocket_cta_text=Vistaðu sögurnar sem þú elskar í Pocket og fáðu innblástur í huga þinn með heillandi lesningu.
|
||||
|
||||
|
||||
highlights_empty_state=Byrjaðu að vafra og við sýnum þér frábærar greinar, myndbönd og önnur vefsvæði sem þú hefur nýverið heimsótt eða bókarmerkt.
|
||||
# LOCALIZATION NOTE (topstories_empty_state): When there are no recommendations,
|
||||
# in the space that would have shown a few stories, this is shown instead.
|
||||
# {provider} is replaced by the name of the content provider for this section.
|
||||
topstories_empty_state=Þú hefur lesið allt. Athugaðu aftur síðar eftir fleiri fréttum frá {provider}. Geturðu ekki beðið? Veldu vinsælt umfjöllunarefni til að finna fleiri áhugaverðar greinar hvaðanæva að af vefnum.
|
||||
|
||||
# LOCALIZATION NOTE (manual_migration_explanation2): This message is shown to encourage users to
|
||||
# import their browser profile from another browser they might be using.
|
||||
manual_migration_explanation2=Reyndu Firefox með bókamerkjum, sögu og lykilorðum úr öðrum vafra.
|
||||
# LOCALIZATION NOTE (manual_migration_cancel_button): This message is shown on a button that cancels the
|
||||
# process of importing another browser’s profile into Firefox.
|
||||
manual_migration_cancel_button=Nei takk
|
||||
# LOCALIZATION NOTE (manual_migration_import_button): This message is shown on a button that starts the process
|
||||
# of importing another browser’s profile profile into Firefox.
|
||||
manual_migration_import_button=Yfirfæra núna
|
||||
|
||||
# LOCALIZATION NOTE (error_fallback_default_*): This message and suggested
|
||||
# action link are shown in each section of UI that fails to render
|
||||
error_fallback_default_info=Úbbs, eitthvað fór úrskeiðis við að hlaða þessu efni inn.
|
||||
error_fallback_default_refresh_suggestion=Endurhlaðið síðu til að reyna aftur.
|
||||
|
||||
# LOCALIZATION NOTE (section_menu_action_*). These strings are displayed in the section
|
||||
# context menu and are meant as a call to action for the given section.
|
||||
section_menu_action_remove_section=Fjarlægja kafla
|
||||
section_menu_action_collapse_section=Fella kafla
|
||||
section_menu_action_expand_section=Stækka kafla
|
||||
section_menu_action_manage_section=Stjórna kafla
|
||||
section_menu_action_manage_webext=Stjórna viðbót
|
||||
section_menu_action_add_topsite=Bæta við toppsíðu
|
||||
section_menu_action_add_search_engine=Bæta við leitarvél
|
||||
section_menu_action_move_up=Færa upp
|
||||
section_menu_action_move_down=Færa niður
|
||||
section_menu_action_privacy_notice=Tilkynning um friðhelgi
|
||||
|
||||
# LOCALIZATION NOTE (firstrun_*). These strings are displayed only once, on the
|
||||
# firstrun of the browser, they give an introduction to Firefox and Sync.
|
||||
firstrun_title=Taktu Firefox með þér
|
||||
firstrun_content=Fáðu bókamerki, sögu, lykilorð og aðrar stillingar á öllum tækjunum þínum.
|
||||
firstrun_learn_more_link=Frekari upplýsingar um Firefox reikninga
|
||||
|
||||
# LOCALIZATION NOTE (firstrun_form_header and firstrun_form_sub_header):
|
||||
# firstrun_form_sub_header is a continuation of firstrun_form_header, they are one sentence.
|
||||
# firstrun_form_header is displayed more boldly as the call to action.
|
||||
firstrun_form_header=Sláðu inn netfangið þitt
|
||||
firstrun_form_sub_header=fara áfram á Firefox Sync
|
||||
|
||||
|
||||
firstrun_email_input_placeholder=Netfang
|
||||
firstrun_invalid_input=Krafist er gilds netfangs
|
||||
|
||||
# LOCALIZATION NOTE (firstrun_extra_legal_links): {terms} is equal to firstrun_terms_of_service, and
|
||||
# {privacy} is equal to firstrun_privacy_notice. {terms} and {privacy} are clickable links.
|
||||
firstrun_extra_legal_links=Með því að halda áfram samþykkir þú {terms} og {privacy}.
|
||||
firstrun_terms_of_service=Skilmálar þjónustu
|
||||
firstrun_privacy_notice=Tilkynning um friðhelgi
|
||||
|
||||
firstrun_continue_to_login=Áfram
|
||||
firstrun_skip_login=Sleppa þessu skrefi
|
||||
|
||||
# LOCALIZATION NOTE (context_menu_title): Action tooltip to open a context menu
|
||||
context_menu_title=Opna valmynd
|
||||
|
|
|
@ -77,7 +77,6 @@ topsites_form_image_validation=Errore durante il caricamento dell’immagine. Pr
|
|||
pocket_read_more=Argomenti popolari:
|
||||
pocket_read_even_more=Visualizza altre storie
|
||||
pocket_more_reccommendations = Altri suggerimenti
|
||||
pocket_learn_more = Ulteriori informazioni
|
||||
pocket_how_it_works = Come funziona
|
||||
pocket_cta_button = Ottieni Pocket
|
||||
pocket_cta_text = Salva le storie che ami in Pocket e nutri la tua mente con letture appassionanti.
|
||||
|
|
|
@ -143,9 +143,9 @@ pocket_read_more=人気のトピック:
|
|||
# LOCALIZATION NOTE (pocket_read_even_more): This is shown as a link at the
|
||||
# end of the list of popular topic links.
|
||||
pocket_read_even_more=他の記事を見る
|
||||
|
||||
pocket_more_reccommendations=他のおすすめ
|
||||
pocket_learn_more=詳細
|
||||
pocket_how_it_works=使い方
|
||||
pocket_cta_button=Pocket を入手
|
||||
pocket_cta_text=お気に入りに記事を Pocket に保存して、魅力的な読み物を思う存分楽しみましょう。
|
||||
|
||||
|
@ -196,7 +196,6 @@ firstrun_form_header=メールアドレスを入力してください
|
|||
firstrun_form_sub_header=Firefox Sync の利用を続けるために必要です
|
||||
|
||||
firstrun_email_input_placeholder=メールアドレス
|
||||
|
||||
firstrun_invalid_input=メールアドレスを正しく入力してください
|
||||
|
||||
# LOCALIZATION NOTE (firstrun_extra_legal_links): {terms} is equal to firstrun_terms_of_service, and
|
||||
|
@ -207,3 +206,6 @@ firstrun_privacy_notice=プライバシーに関する通知
|
|||
|
||||
firstrun_continue_to_login=続ける
|
||||
firstrun_skip_login=この手順をスキップ
|
||||
|
||||
# LOCALIZATION NOTE (context_menu_title): Action tooltip to open a context menu
|
||||
context_menu_title=メニューを開きます
|
||||
|
|
|
@ -143,9 +143,9 @@ pocket_read_more=人気のトピック:
|
|||
# LOCALIZATION NOTE (pocket_read_even_more): This is shown as a link at the
|
||||
# end of the list of popular topic links.
|
||||
pocket_read_even_more=他の記事を見る
|
||||
|
||||
pocket_more_reccommendations=他のおすすめ
|
||||
pocket_learn_more=詳細
|
||||
pocket_how_it_works=使い方
|
||||
pocket_cta_button=Pocket を入手
|
||||
pocket_cta_text=お気に入りに記事を Pocket に保存して、魅力的な読み物を思う存分楽しみましょう。
|
||||
|
||||
|
@ -196,7 +196,6 @@ firstrun_form_header=メールアドレスを入力してください
|
|||
firstrun_form_sub_header=Firefox Sync の利用を続けるために必要です
|
||||
|
||||
firstrun_email_input_placeholder=メールアドレス
|
||||
|
||||
firstrun_invalid_input=メールアドレスを正しく入力してください
|
||||
|
||||
# LOCALIZATION NOTE (firstrun_extra_legal_links): {terms} is equal to firstrun_terms_of_service, and
|
||||
|
@ -207,3 +206,6 @@ firstrun_privacy_notice=プライバシーに関する通知
|
|||
|
||||
firstrun_continue_to_login=続ける
|
||||
firstrun_skip_login=この手順をスキップ
|
||||
|
||||
# LOCALIZATION NOTE (context_menu_title): Action tooltip to open a context menu
|
||||
context_menu_title=メニューを開きます
|
||||
|
|
|
@ -144,7 +144,6 @@ pocket_read_more=Populaire onderwerpen:
|
|||
# end of the list of popular topic links.
|
||||
pocket_read_even_more=Meer verhalen bekijken
|
||||
pocket_more_reccommendations=Meer aanbevelingen
|
||||
pocket_learn_more=Meer info
|
||||
pocket_how_it_works=Hoe het werkt
|
||||
pocket_cta_button=Pocket gebruiken
|
||||
pocket_cta_text=Bewaar de verhalen die u interessant vindt in Pocket, en stimuleer uw gedachten met boeiende leesstof.
|
||||
|
|
|
@ -145,6 +145,7 @@ pocket_read_more=Tèmas populars :
|
|||
pocket_read_even_more=Veire mai d’articles
|
||||
pocket_more_reccommendations=Mai de recomandacions
|
||||
pocket_learn_more=Ne saber mai
|
||||
pocket_how_it_works=Cossí fonciona
|
||||
pocket_cta_button=Installar Pocket
|
||||
|
||||
highlights_empty_state=Començatz de navegar e aquí vos mostrarem los melhors articles, vidèos e autras paginas qu’avètz visitadas o apondudas als marcapaginas.
|
||||
|
|
|
@ -149,7 +149,7 @@ pocket_how_it_works=Como funciona
|
|||
pocket_cta_button=Adicionar o Pocket
|
||||
pocket_cta_text=Salve as histórias que você gosta no Pocket e abasteça sua mente com leituras fascinantes.
|
||||
|
||||
highlights_empty_state=Comece a navegar e nós mostraremos aqui alguns ótimos artigos, vídeos e outras páginas que você favoritou ou visitou recentemente.
|
||||
highlights_empty_state=Comece a navegar e mostraremos aqui alguns ótimos artigos, vídeos e outras páginas que você favoritou ou visitou recentemente.
|
||||
# LOCALIZATION NOTE (topstories_empty_state): When there are no recommendations,
|
||||
# in the space that would have shown a few stories, this is shown instead.
|
||||
# {provider} is replaced by the name of the content provider for this section.
|
||||
|
|
|
@ -144,7 +144,6 @@ pocket_read_more=Tópicos populares:
|
|||
# end of the list of popular topic links.
|
||||
pocket_read_even_more=Ver mais histórias
|
||||
pocket_more_reccommendations=Mais recomendações
|
||||
pocket_learn_more=Saber mais
|
||||
pocket_how_it_works=Como funciona
|
||||
pocket_cta_button=Obter o Pocket
|
||||
pocket_cta_text=Guarde as histórias que adora no Pocket, e abasteça a sua mente com leituras fascinantes.
|
||||
|
@ -192,7 +191,7 @@ firstrun_learn_more_link=Saber mais acerca do Contas Firefox
|
|||
# LOCALIZATION NOTE (firstrun_form_header and firstrun_form_sub_header):
|
||||
# firstrun_form_sub_header is a continuation of firstrun_form_header, they are one sentence.
|
||||
# firstrun_form_header is displayed more boldly as the call to action.
|
||||
firstrun_form_header=Introduza o seu e-mail
|
||||
firstrun_form_header=Introduza o seu email
|
||||
firstrun_form_sub_header=para continuar para o Firefox Sync.
|
||||
|
||||
firstrun_email_input_placeholder=Email
|
||||
|
|
|
@ -200,7 +200,7 @@ firstrun_invalid_input=Necesită o adresă de e-mail validă
|
|||
|
||||
# LOCALIZATION NOTE (firstrun_extra_legal_links): {terms} is equal to firstrun_terms_of_service, and
|
||||
# {privacy} is equal to firstrun_privacy_notice. {terms} and {privacy} are clickable links.
|
||||
firstrun_extra_legal_links=Continuând, ești de acord cu {terms} și {privacy}.
|
||||
firstrun_extra_legal_links=Prin continuare, agreezi {terms} și {privacy}.
|
||||
firstrun_terms_of_service=Termenii de utilizare a serviciului
|
||||
firstrun_privacy_notice=Politica de confidențialitate
|
||||
|
||||
|
|
|
@ -95,6 +95,7 @@ prefs_topsites_description=سائٹس جو آُپ سب سے زیادہ ملاح
|
|||
prefs_topstories_options_sponsored_label=سرپرست شدہ کہاناں
|
||||
prefs_topstories_sponsored_learn_more=مزید سیکھیں
|
||||
prefs_highlights_options_visited_label=دورہ کردہ صفحہات
|
||||
prefs_highlights_options_download_label=حالیہ ڈاؤن لوڈ شدہ
|
||||
prefs_highlights_options_pocket_label=صفحات Pocket میں محفوظ کر دیئے گئے ہیں
|
||||
prefs_snippets_description=Mozilla اورFirefox کی جانب سے تازہ کاریاں
|
||||
settings_pane_button_label=اپنے نئے ٹیب کہ صفحہ کی تخصیص کریں
|
||||
|
@ -134,7 +135,6 @@ pocket_read_more=مشہور مضامین:
|
|||
# end of the list of popular topic links.
|
||||
pocket_read_even_more=مزید کہانیاں دیکھیں
|
||||
pocket_more_reccommendations=اور زیادہ سفارشات
|
||||
pocket_learn_more=مزید سیکھیں
|
||||
pocket_how_it_works=یہ کس طرح کام کرتا ہے
|
||||
pocket_cta_button=Pocket حاصل کریں
|
||||
|
||||
|
|
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
|
@ -107,6 +107,5 @@ window.gActivityStreamStrings = {
|
|||
"firstrun_privacy_notice": "Avís de privadesa",
|
||||
"firstrun_continue_to_login": "Continua",
|
||||
"firstrun_skip_login": "Omet aquest pas",
|
||||
"context_menu_title": "Open menu",
|
||||
"pocket_learn_more": "Més informació"
|
||||
"context_menu_title": "Obre el menú"
|
||||
};
|
||||
|
|
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
|
@ -31,7 +31,7 @@ window.gActivityStreamStrings = {
|
|||
"menu_action_open_file": "Otevřít soubor",
|
||||
"menu_action_copy_download_link": "Kopírovat stahovaný odkaz",
|
||||
"menu_action_go_to_download_page": "Přejít na stránku stahování",
|
||||
"menu_action_remove_download": "Odebrat z historie",
|
||||
"menu_action_remove_download": "Odstranit z historie",
|
||||
"search_button": "Vyhledat",
|
||||
"search_header": "Vyhledat pomocí {search_engine_name}",
|
||||
"search_web_placeholder": "Vyhledat na webu",
|
||||
|
@ -91,7 +91,7 @@ window.gActivityStreamStrings = {
|
|||
"section_menu_action_manage_section": "Nastavení sekce",
|
||||
"section_menu_action_manage_webext": "Správa rozšíření",
|
||||
"section_menu_action_add_topsite": "Přidat mezi top stránky",
|
||||
"section_menu_action_add_search_engine": "Přidat vyhledávací modul",
|
||||
"section_menu_action_add_search_engine": "Přidat vyhledávač",
|
||||
"section_menu_action_move_up": "Posunout nahoru",
|
||||
"section_menu_action_move_down": "Posunout dolů",
|
||||
"section_menu_action_privacy_notice": "Zásady ochrany osobních údajů",
|
||||
|
@ -104,9 +104,8 @@ window.gActivityStreamStrings = {
|
|||
"firstrun_invalid_input": "Je požadován platný e-mail",
|
||||
"firstrun_extra_legal_links": "Pokračováním souhlasíte s {terms} a {privacy}.",
|
||||
"firstrun_terms_of_service": "Podmínkami používání služby",
|
||||
"firstrun_privacy_notice": "Zásadami ochrany soukromí",
|
||||
"firstrun_privacy_notice": "Zásadami ochrany osobních údajů",
|
||||
"firstrun_continue_to_login": "Pokračovat",
|
||||
"firstrun_skip_login": "Přeskočit tento krok",
|
||||
"context_menu_title": "Otevře nabídku",
|
||||
"pocket_learn_more": "Zjistit více"
|
||||
"context_menu_title": "Otevře nabídku"
|
||||
};
|
||||
|
|
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше
Загрузка…
Ссылка в новой задаче