mirror of
https://github.com/wassname/talk.git
synced 2026-08-05 13:30:26 +08:00
Merge branch 'master' into akismet-bug
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
import { handlePopupAuth } from 'plugin-api/beta/client/utils';
|
||||
|
||||
export const loginWithFacebook = () => (dispatch, _, { rest }) => {
|
||||
window.location = `${rest.uri}/auth/facebook`;
|
||||
handlePopupAuth(`${rest.uri}/auth/facebook`);
|
||||
};
|
||||
|
||||
@@ -5,6 +5,7 @@ import translations from './translations.yml';
|
||||
export default {
|
||||
translations,
|
||||
slots: {
|
||||
authExternalAdminSignIn: [SignIn],
|
||||
authExternalSignIn: [SignIn],
|
||||
authExternalSignUp: [SignUp],
|
||||
},
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
import { handlePopupAuth } from 'plugin-api/beta/client/utils';
|
||||
|
||||
export const loginWithGoogle = () => (dispatch, _, { rest }) => {
|
||||
window.location = `${rest.uri}/auth/google`;
|
||||
handlePopupAuth(`${rest.uri}/auth/google`);
|
||||
};
|
||||
|
||||
@@ -5,6 +5,7 @@ import translations from './translations.yml';
|
||||
export default {
|
||||
translations,
|
||||
slots: {
|
||||
authExternalAdminSignIn: [SignIn],
|
||||
authExternalSignIn: [SignIn],
|
||||
authExternalSignUp: [SignUp],
|
||||
},
|
||||
|
||||
@@ -69,6 +69,76 @@ en:
|
||||
description_2: "You can change your account settings by visiting"
|
||||
path: "My Profile > Settings"
|
||||
alert: "Email Added!"
|
||||
de:
|
||||
email:
|
||||
email_change_original:
|
||||
subject: Änderung Ihrer E-Mail-Adresse
|
||||
body: Ihre E-Mail-Adresse wurde von {0} zu {1} geändert. Falls Sie diese Änderung nicht selbst vorgenommen haben, kontaktieren Sie bitte zur Sicherheit {2}.
|
||||
error:
|
||||
NO_LOCAL_PROFILE: Mit diesem Benutzerkonto ist keine E-Mail-Adresse verbunden.
|
||||
LOCAL_PROFILE: Es ist bereits eine bestätigte E-Mail-Adresse mit diesem Benutzerkonto verbunden.
|
||||
INCORRECT_PASSWORD: Das Passwort war nicht korrekt.
|
||||
talk-plugin-local-auth:
|
||||
change_password:
|
||||
change_password: "Passwort ändern"
|
||||
passwords_dont_match: "Die Passwörter stimmen nicht überein"
|
||||
required_field: "Diese Angabe ist erforderlich"
|
||||
forgot_password: "Passwort vergessen?"
|
||||
save: "Speichern"
|
||||
cancel: "Abbrechen"
|
||||
edit: "Ändern"
|
||||
changed_password_msg: "Passwort geändert - Ihr Passwort wurde erfolgreich geändert"
|
||||
forgot_password_sent: "Passwort vergessen - Wir haben Ihnen eine E-Mail zum Zurücksetzen des Passwortes geschickt"
|
||||
change_username:
|
||||
change_username_note: "Nutzernamen können nur alle 14 Tage geändert werden. Ihr Nutzername ist zur Zeit nicht editierbar."
|
||||
save: "Speichern"
|
||||
edit_profile: "Profil ändern"
|
||||
cancel: "Abbrechen"
|
||||
confirm_username_change: "Änderung des Nutzernamens bestätigen"
|
||||
description: "Sie möchten Ihren Nutzernamen ändern: der neue Nutzername wird an allen alten und neuen Kommentaren erscheinen."
|
||||
old_username: "Alter Nutzername"
|
||||
new_username: "Neuer Nutzername"
|
||||
bottom_note: "Achtung: die nächste Änderung des Nutzernamens ist erst nach 14 Tagen möglich"
|
||||
confirm_changes: "Änderung bestätigen"
|
||||
username_does_not_match: "Die Nutzernamen stimmen nicht überein"
|
||||
cant_be_equal: "Der neue Nutzername {0} muss sich vom alten unterscheiden."
|
||||
changed_username_success_msg: "Nutzername geändert - Ihr Nutzername wurde erfolgreich aktualisiert. Die nächste Änderung des Nutzernamens ist erst nach 14 Tagen möglich."
|
||||
change_username_attempt: "Der Nutzername kann zur Zeit nicht aktualisiert werden. Änderungen sind nur nach jeweils 14 Tagen möglich."
|
||||
change_email:
|
||||
confirm_email_change: "Änderung der E-Mail-Adresse bestätigen"
|
||||
description: "Sie versuchen, Ihre E-Mail-Adresse ändern: die neue E-Mail-Adresse wird zum Login sowie für Benachrichtigungen bzgl. Ihres Benutzerkontos verwendet."
|
||||
old_email: "Alte E-Mail-Adresse"
|
||||
new_email: "Neue E-Mail-Adresse"
|
||||
enter_password: "Passwort"
|
||||
incorrect_password: "Passwort nicht korrekt"
|
||||
confirm_change: "Änderung bestätigen"
|
||||
cancel: "Abbrechen"
|
||||
change_email_msg: "E-Mail-Adresse erfolgreich aktualisiert - die neue E-Mail-Adresse ab sofort zum Anmelden und für Benachrichtigungen verwendet."
|
||||
add_email:
|
||||
add_email_address: "E-Mail-Adresse hinzufügen"
|
||||
enter_email_address: "E-Mail-Adresse:"
|
||||
invalid_email_address: "Ungültige E-Mail-Adresse"
|
||||
confirm_email_address: "Bestätigung der E-Mail-Adresse:"
|
||||
email_does_not_match: "Die E-Mail-Adressen stimmen nicht überein"
|
||||
insert_password: "Passwort auswählen:"
|
||||
required_field: "Dieses Feld ist erforderlich"
|
||||
done: "Fertig"
|
||||
content:
|
||||
title: "E-Mail-Adresse hinzufügen"
|
||||
description: "Aus Sicherheitsgründen benötigen wir eine E-Mail-Adresse zu jedem Benutzerkonto. Ihre E-Mail-Adresse wird für folgendes verwendet:"
|
||||
item_1: "Benachrichtigungen über Änderungen am Benutzerkonto (Nutzername, E-Mail-Adresse, Passwort)"
|
||||
item_2: "Ermöglicht den Download des eigenen Kommentar-Archivs"
|
||||
item_3: "Kommentar-Benachrichtigungen erhalten, die Sie explizit angefordert haben"
|
||||
verify:
|
||||
title: "E-Mail-Adresse bestätigen"
|
||||
description: "Wir haben einen E-Mail an {0} geschickt. Bitte bestätigen Sie Ihre E-Mail-Adresse, um damit Benachrichtigungen über Änderungen am Benutzerkonto zu erhalten."
|
||||
added:
|
||||
title: "E-Mail-Adresse hinzugefügt"
|
||||
description: "Ihre E-Mail-Adresse wurde dem Benutzerkonto hinzugefügt."
|
||||
subtitle: "Sie möchten Ihre E-Mail-Adresse ändern?"
|
||||
description_2: "Sie können Ihre Konto-Einstellugen ändern unter"
|
||||
path: "Mein Profil > Profil-Einstellungen"
|
||||
alert: "E-Mail-Adresse hinzugefügt!"
|
||||
es:
|
||||
talk-plugin-local-auth:
|
||||
change_password:
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
en:
|
||||
talk-plugin-notifications-category-featured:
|
||||
toggle_description: My comment is featured
|
||||
de:
|
||||
talk-plugin-notifications-category-featured:
|
||||
toggle_description: Mein Kommentar wird empfohlen
|
||||
|
||||
@@ -3,4 +3,10 @@ en:
|
||||
categories:
|
||||
featured:
|
||||
subject: "One of your comments was featured on {0}"
|
||||
body: "{0}\nA member of our team has selected this comment to be featured for other readers: {1}"
|
||||
body: "{0}\nA member of our team has selected this comment to be featured for other readers: {1}"
|
||||
de:
|
||||
talk-plugin-notifications:
|
||||
categories:
|
||||
featured:
|
||||
subject: "Einer Ihrer Kommentare wurde auf {0} hervorgehoben"
|
||||
body: "{0}\nEin Mitglied unseres Teams hat diesen Kommentar ausgewählt, er wird jetzt für andere Leser besonders hervorgehoben: {1}"
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
en:
|
||||
talk-plugin-notifications-category-reply:
|
||||
toggle_description: My comment receives a reply
|
||||
de:
|
||||
talk-plugin-notifications-category-reply:
|
||||
toggle_description: Jemand antwortet auf meinen Kommentar
|
||||
|
||||
@@ -3,4 +3,10 @@ en:
|
||||
categories:
|
||||
reply:
|
||||
subject: "Someone has replied to your comment on {0}"
|
||||
body: "{0}\n{1} replied to your comment: {2}"
|
||||
body: "{0}\n{1} replied to your comment: {2}"
|
||||
de:
|
||||
talk-plugin-notifications:
|
||||
categories:
|
||||
reply:
|
||||
subject: "Jemand hat bei {0} auf Ihren Kommentar geantwortet"
|
||||
body: "{0}\n{1} antwortete auf Ihren Kommentar: {2}"
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
en:
|
||||
talk-plugin-notifications-category-staff:
|
||||
toggle_description: A staff member replies to my comment
|
||||
de:
|
||||
talk-plugin-notifications-category-staff:
|
||||
toggle_description: Ein Redaktionsmitglied antwortet auf meinen Kommentar
|
||||
|
||||
@@ -3,4 +3,10 @@ en:
|
||||
categories:
|
||||
staff:
|
||||
subject: "Someone at {0} has replied to your comment"
|
||||
body: "{0}\n{1} works for {2} and has replied to your comment: {3}"
|
||||
body: "{0}\n{1} works for {2} and has replied to your comment: {3}"
|
||||
de:
|
||||
talk-plugin-notifications:
|
||||
categories:
|
||||
staff:
|
||||
subject: "Jemand hat bei {0} auf Ihren Kommentar geantwortet"
|
||||
body: "{0}\n{1} arbeitet für {2} und hat auf Ihren Kommentar geantwortet: {3}"
|
||||
|
||||
@@ -2,3 +2,7 @@ en:
|
||||
talk-plugin-notifications:
|
||||
digest_enum:
|
||||
DAILY: In a daily digest
|
||||
de:
|
||||
talk-plugin-notifications:
|
||||
digest_enum:
|
||||
DAILY: Einmal täglich
|
||||
|
||||
@@ -2,3 +2,7 @@ en:
|
||||
talk-plugin-notifications:
|
||||
digest_enum:
|
||||
HOURLY: In an hourly digest
|
||||
de:
|
||||
talk-plugin-notifications:
|
||||
digest_enum:
|
||||
HOURLY: Stündlich
|
||||
|
||||
@@ -16,3 +16,21 @@ en:
|
||||
digest_option: Send notifications
|
||||
digest_enum:
|
||||
NONE: Immediately
|
||||
de:
|
||||
talk-plugin-notifications:
|
||||
settings_title: Benachrichtigungen
|
||||
settings_subtitle: Benachrichtige mich wenn
|
||||
turn_off_all: Ich möchte keine Benachrichtigungen erhalten
|
||||
banner_info:
|
||||
title: Bestätigte E-Mail-Adresse benötigt
|
||||
text: Um E-Mail-Benachrichtigungen zu erhalten, müssen Sie eine bestätigte E-Mail-Adresse haben.
|
||||
verify_now: E-Mail-Adresse jetzt bestätigen
|
||||
banner_success:
|
||||
title: E-Mail-Bestätigungsanfrage verschickt
|
||||
text: Eine E-Mail mit einem Bestätigungslink wurde an {0} geschickt.
|
||||
banner_error:
|
||||
title: Fehler
|
||||
text: Beim Versand der Bestätigungsmail gab es einen Fehler. Bitte versuchen Sie es später erneut.
|
||||
digest_option: Benachrichtigungen senden
|
||||
digest_enum:
|
||||
NONE: Sofort
|
||||
|
||||
@@ -11,4 +11,18 @@ en:
|
||||
click_to_confirm: "Click below to confirm that you would like to unsubscribe from all notifications"
|
||||
confirm: "Confirm"
|
||||
are_unsubscribed: "You are now unsubscribed from all notifications."
|
||||
token_invalid: "Unsubscribe link is invalid, click the link from a more recent email or visit a comment stream and login to change your notification preferences"
|
||||
token_invalid: "Unsubscribe link is invalid, click the link from a more recent email or visit a comment stream and login to change your notification preferences"
|
||||
de:
|
||||
talk-plugin-notifications:
|
||||
templates:
|
||||
digest:
|
||||
subject: "Ihre Kommentaraktivität bei {0}"
|
||||
footer: "Sie erhalten diese Benachrichtigung, weil Sie Community-Mitglied bei {0} sind und diese E-Mails abonniert haben."
|
||||
links:
|
||||
unsubscribe: "E-Mail-Benachrichtigungen abbestellen"
|
||||
unsubscribe_page:
|
||||
unsubscribe: "Kommentar-Benachrichtigungen abbestellen"
|
||||
click_to_confirm: "Klicken Sie folgenden Link, um zu bestätigen, dass Sie alle Benachrichtigungen abbestellen möchten"
|
||||
confirm: "Bestätigen"
|
||||
are_unsubscribed: "Sie haben haben alle Benachrichtigungen erfolgreich abbestellt."
|
||||
token_invalid: "Der Abbestell-Link ist ungültig. Klicken Sie den Link einer neueren E-Mail oder gehen Sie zu einem Kommentarbereich, melden Sie sich an und ändern Sie dort Ihre Benachrichtigungseinstellungen"
|
||||
|
||||
@@ -63,17 +63,18 @@ class DeleteMyAccount extends React.Component {
|
||||
<p className="talk-plugin-auth--delete-my-account-description">
|
||||
{t('delete_request.delete_my_account_description')}
|
||||
</p>
|
||||
<p className="talk-plugin-auth--delete-my-account-description">
|
||||
{scheduledDeletionDate &&
|
||||
t(
|
||||
'delete_request.already_submitted_request_description',
|
||||
moment(scheduledDeletionDate).format('MMM Do YYYY, h:mm:ss a')
|
||||
)}
|
||||
</p>
|
||||
{scheduledDeletionDate ? (
|
||||
<Button onClick={this.cancelAccountDeletion}>
|
||||
{t('delete_request.cancel_account_deletion_request')}
|
||||
</Button>
|
||||
<div>
|
||||
<p className="talk-plugin-auth--delete-my-account-description">
|
||||
{t(
|
||||
'delete_request.already_submitted_request_description',
|
||||
moment(scheduledDeletionDate).format('MMM Do YYYY, h:mm:ss a')
|
||||
)}
|
||||
</p>
|
||||
<Button onClick={this.cancelAccountDeletion}>
|
||||
{t('delete_request.cancel_account_deletion_request')}
|
||||
</Button>
|
||||
</div>
|
||||
) : (
|
||||
<Button icon="delete" onClick={this.showDialog}>
|
||||
{t('delete_request.delete_my_account')}
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
.button {
|
||||
margin: 0;
|
||||
|
||||
&:disabled {
|
||||
/* TODO: better optimize for mobile so this styling is not necessary */
|
||||
height: auto;
|
||||
}
|
||||
i {
|
||||
font-size: inherit;
|
||||
vertical-align: sub;
|
||||
|
||||
@@ -49,3 +49,54 @@ en:
|
||||
subtitle: "Are you sure you want to delete your account?"
|
||||
description: "To confirm you would like to delete your account please type in the following phrase into the text box below:"
|
||||
type_to_confirm: "Type phrase below to confirm"
|
||||
de:
|
||||
download_request:
|
||||
section_title: "Mein Kommentar-Archiv herunterladen"
|
||||
you_will_get_a_copy: "Sie werden eine E-Mail mit einem Download-Link erhalten. Sie können"
|
||||
download_rate: "eine Download-Anfrage alle {0} Tage stellen"
|
||||
most_recent_request: "Ihre letzte Anfrage"
|
||||
request: "Kommentar-Archiv anfordern"
|
||||
rate_limit: "Sie können die nächste Anfrage stellen in {0}"
|
||||
hours: "{0} Stunden"
|
||||
days: "{0} Tagen"
|
||||
hour: "{0} Stunde"
|
||||
day: "{0} Tag"
|
||||
download_preparing: "Bereite Konto-Download vor - Überprüfen Sie Ihr E-Mail-Postfach, sie sollten den Download-Link demnächst erhalten"
|
||||
delete_request:
|
||||
account_deletion_cancelled: 'Konto-Löschung abgebrochen - Ihre Anfrage, Ihr Konto zu löschen wurde abgebrochen.'
|
||||
account_deletion_requested: 'Konto-Löschung angefordert'
|
||||
received_on: "Die Anfrage, Ihr Konto zu löschen haben wir erhalten am "
|
||||
cancel_request_description: "Fall Sie ihr Konto wieder aktivieren möchten, können Sie die Lösch-Anfrage hier abbrechen"
|
||||
before: "vorher"
|
||||
cancel_account_deletion_request: "Konto-Lösch-Anfrage abbrechen"
|
||||
delete_my_account: "Mein Benutzerkonto löschen"
|
||||
delete_my_account_description: "Mit dem Löschen Ihres Kontos werden Ihr Profil sowie alle Ihre Kommentare dauerhaft von dieser Website entfernt."
|
||||
already_submitted_request_description: "Sie haben bereits eine Lösch-Anfrage gestellt. Ihr Konto wird nach dem {0} gelöscht. Bis zu diesem Zeitpunkt können Sie die Anfrage noch abbrechen"
|
||||
your_request_submitted_description: "Ihre Lösch-Anfrage wurde übermittelt und eine Bestätigungsanfrage an die dem Konto zugehörige E-Mail-Adresse geschickt."
|
||||
your_account_deletion_scheduled: "Ihr Benutzerkonto wird gelöscht nach dem:"
|
||||
changed_your_mind: "Haben Sie Ihre Meinung geändert?"
|
||||
simply_go_to: "Gehen Sie einfach vor dem Zeitpunkt zu Ihrem Konto und klicken Sie"
|
||||
tell_us_why: "Sagen Sie uns warum"
|
||||
feedback_copy: "Wir würden gern erfahren, warum Sie sich entschieden haben, Ihr Konto zu löschen. Schicken Sie uns eine E-Mail mit Feedback an"
|
||||
done: "Fertig"
|
||||
cancel: "Abbrechen"
|
||||
proceed: "Fortfahren"
|
||||
input_is_not_correct: "Die Eingabe ist nicht korrekt"
|
||||
step_0:
|
||||
you_are_attempting: "Sie versuchen Ihr Konto zu löschen. Das bedeutet:"
|
||||
item_1: "Alle Ihre Kommentare werden von der Website entfernt"
|
||||
item_2: "Alle Ihre Kommentare werden aus unserer Datenbank gelöscht"
|
||||
item_3: "Ihr Nutzername und Ihre E-Mail-Adresse werden aus unserem System gelöscht"
|
||||
step_1:
|
||||
subtitle: "Wann wird mein Benutzerkonto entfernt?"
|
||||
description: "Ihr Konto wird {0} Stunden nachdem Sie die Anfrage gestellt haben gelöscht."
|
||||
subtitle_2: "Kann ich weiterhin Kommentare schreiben, bis mein Konto gelöscht wird?"
|
||||
description_2: "Ja, Sie können kommentieren, antworten usw. bis die {0} Stunden abgelaufen sind."
|
||||
step_2:
|
||||
description: "Bevor Ihr Konto gelöscht wird, empfehlen wir Ihnen, Ihr Kommentar-Archiv herunterzuladen. Nach der Konto-Löschung ist dies nicht mehr möglich."
|
||||
to_download: "Um Ihr Konto-Archiv herunterzuladen gehen sie zu:"
|
||||
path: "Profil > Mein Kommentar-Archiv herunterladen"
|
||||
step_3:
|
||||
subtitle: "Sind Sie sicher, dass Sie Ihr Benutzerkonto löschen möchten?"
|
||||
description: "Um zu bestätigen, dass Sie Ihr Konto löschen möchten, geben Sie bitte folgende Zeichen in das Textfeld ein:"
|
||||
type_to_confirm: "Zur Bestätigung Zeichenfolge eingeben"
|
||||
|
||||
@@ -35,3 +35,40 @@ en:
|
||||
body: "You have cancelled your account deletion request for {0}. Your account is now reactivated."
|
||||
error:
|
||||
DOWNLOAD_TOKEN_INVALID: "Your download link is not valid."
|
||||
de:
|
||||
download_landing:
|
||||
download_your_account: "Mein Kommentar-Archiv herunterladen"
|
||||
download_details: "Ihr Kommentar-Archiv wird als ZIP-Datei bereitgestellt. Nach dem Entpacken erhalten Sie eine CSV-Datei, die einfach in ein Tabellenkalkulationsprogramm importiert werden kann."
|
||||
all_information_included: "Für jeden Ihrer Kommentare sind folgende Informationen enthalten:"
|
||||
information_included:
|
||||
date: "Wann Sie den Kommentar geschrieben haben"
|
||||
url: "Die dauerhafte URL (Internetadresse) des Kommentars"
|
||||
body: "Der Kommentar-Text"
|
||||
asset_url: "Die URL (Internetadresse) des Artikels an dem der Kommentar erscheint"
|
||||
confirm: "Kommentar-Archiv herunterladen"
|
||||
email:
|
||||
download:
|
||||
subject: "Ihre Kommentare sind zum Download bereit: {0}"
|
||||
download_link_ready: "Hier klicken, um Ihre Kommentare von {0} bis {1} herunterzuladen:"
|
||||
download_archive: "Archiv herunterladen"
|
||||
delete:
|
||||
subject: "Ihr Benutzerkonto bei {0} ist zur Löschung vorgesehen"
|
||||
body: |
|
||||
Wir haben eine Anfrage erhalten, Ihr Benutzerkonto zu löschen. Die Löschung ist geplant für den {1}.
|
||||
|
||||
Nach diesem Zeitpunkt werden alle Ihre Kommentare von der Website und aus unserer Datenbank gelöscht. Außerdem werden Ihr Nutzername und Ihre E-Mail-Adresse aus unserem System enfernt.
|
||||
|
||||
Falls Sie es sich noch anders überlegen, können Sie sich bis spätestens zum angegebenen Lösch-Zeitpunkt einloggen und die Lösch-Anfrage abbrechen.
|
||||
deleted:
|
||||
subject: "Ihre Benutzerkonto bei {0} wurde gelöscht"
|
||||
body: |
|
||||
Ihr Kommentar-Konto bei {0} ist nun gelöscht. Schade, auf Wiedersehen!
|
||||
|
||||
Falls Sie sich in Zukunft erneut an der Diskussion beteiligen möchten, können Sie jederzeit ein neues Benutzerkonto einrichten.
|
||||
|
||||
Wenn Sie Lust haben, schreiben Sie uns doch eine Rückmeldung, Feedback, oder Kritik an {1}, damit wir unsere Community verbessern können. Vielen Dank!
|
||||
cancelDelete:
|
||||
subject: "Die Lösch-Anfrage für Ihr Benutzerkonto bei {0} wurde abgebrochen"
|
||||
body: "Sie haben die Lösch-Anfrage für Ihr Benutzerkonto bei {0} abgebrochen. Das Konto ist nun wieder aktiv."
|
||||
error:
|
||||
DOWNLOAD_TOKEN_INVALID: "Der Download-Link ist ungültig."
|
||||
|
||||
@@ -7,21 +7,17 @@ class Button extends React.Component {
|
||||
render() {
|
||||
const {
|
||||
className,
|
||||
title,
|
||||
onClick,
|
||||
children,
|
||||
active,
|
||||
activeClassName,
|
||||
disabled,
|
||||
...rest
|
||||
} = this.props;
|
||||
return (
|
||||
<button
|
||||
className={cn(className, styles.button, {
|
||||
[cn(styles.active, activeClassName)]: active,
|
||||
})}
|
||||
title={title}
|
||||
onClick={onClick}
|
||||
disabled={disabled}
|
||||
{...rest}
|
||||
>
|
||||
{children}
|
||||
</button>
|
||||
@@ -32,11 +28,8 @@ class Button extends React.Component {
|
||||
Button.propTypes = {
|
||||
className: PropTypes.string,
|
||||
activeClassName: PropTypes.string,
|
||||
title: PropTypes.string,
|
||||
onClick: PropTypes.func,
|
||||
children: PropTypes.node,
|
||||
active: PropTypes.bool,
|
||||
disabled: PropTypes.bool,
|
||||
};
|
||||
|
||||
export default Button;
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import React from 'react';
|
||||
import PropTypes from 'prop-types';
|
||||
import Button from '../components/Button';
|
||||
import bowser from 'bowser';
|
||||
|
||||
/**
|
||||
* createToggle creates a button that can be active, inactive or disabled
|
||||
@@ -32,7 +33,17 @@ const createToggle = (
|
||||
this.execCommand();
|
||||
};
|
||||
|
||||
// Detect whether there was focus on the RTE before the click.
|
||||
hadFocusBeforeClick = false;
|
||||
handleMouseDown = () => (this.hadFocusBeforeClick = this.props.api.focused);
|
||||
|
||||
handleClick = () => {
|
||||
// Skip IOS when the focus was not there before.
|
||||
// IOS fails to focus to the RTE correctly and scrolls to nirvana.
|
||||
// See https://www.pivotaltracker.com/story/show/157607216
|
||||
if (!this.hadFocusBeforeClick && bowser.ios) {
|
||||
return;
|
||||
}
|
||||
this.props.api.focus();
|
||||
this.formatToggle();
|
||||
this.props.api.focus();
|
||||
@@ -62,6 +73,7 @@ const createToggle = (
|
||||
<Button
|
||||
className={className}
|
||||
title={title}
|
||||
onMouseDown={this.handleMouseDown}
|
||||
onClick={this.handleClick}
|
||||
active={this.state.active}
|
||||
disabled={disabled || this.state.disabled}
|
||||
|
||||
@@ -381,9 +381,13 @@ export function isBogusBR(node) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an array of all nodes after `node`.
|
||||
* Returns an array of all nodes after `node` in a _line_.
|
||||
*/
|
||||
export function getRightOfNode(node) {
|
||||
if (node.tagName === 'BR') {
|
||||
return [];
|
||||
}
|
||||
|
||||
let result = [];
|
||||
let cur = node;
|
||||
while (
|
||||
@@ -515,10 +519,10 @@ export function outdentBlock(node, changeSelection) {
|
||||
|
||||
// A new lines to substitute the missing block element.
|
||||
const needLineAfter =
|
||||
node.nextSibling &&
|
||||
!isBlockElement(node.nextSibling) &&
|
||||
node.lastChild &&
|
||||
!isBlockElement(node.lastChild);
|
||||
!node.lastChild ||
|
||||
(node.nextSibling &&
|
||||
!isBlockElement(node.nextSibling) &&
|
||||
!isBlockElement(node.lastChild));
|
||||
const needLineBefore =
|
||||
node.previousSibling &&
|
||||
!isBlockElement(node.previousSibling) &&
|
||||
|
||||
Reference in New Issue
Block a user