Compare commits

...

6 Commits

Author SHA1 Message Date
s0up4200
41a7b492d6 feat(ui): set data-form-type to JellyfinLogin 2025-02-28 17:50:28 +01:00
s0up4200
12b428a662 feat(ui): add data attribs for dashlane 2025-02-27 23:58:29 +01:00
s0up4200
8b54dace38 feat(ui): set data-form-type attribute
For Dashlane password manager
2025-02-27 23:40:26 +01:00
s0up4200
01c3cb8b47 fix: rebase mess 2025-02-27 23:19:26 +01:00
s0up4200
e995dc4a26 feat(ui): prevent password manager autofill on Jellyfin setup form 2025-02-27 21:11:40 +01:00
soup
96fb5c4988 feat(ui): prevent password manager interference & improve service links (#3989)
(cherry picked from commit ef18b5d1de)
2025-02-27 20:49:31 +01:00
11 changed files with 45 additions and 2 deletions

View File

@@ -26,6 +26,7 @@ const SensitiveInput = ({ as = 'input', ...props }: SensitiveInputProps) => {
<>
<Component
autoComplete="off"
data-form-type="other"
data-1pignore="true"
data-lpignore="true"
data-bwignore="true"

View File

@@ -124,7 +124,7 @@ const JellyfinLogin: React.FC<JellyfinLoginProps> = ({
{({ errors, touched, isSubmitting, isValid }) => {
return (
<>
<Form>
<Form data-form-type="login">
<div>
<h2 className="mb-6 -mt-1 text-center text-lg font-bold text-neutral-200">
{intl.formatMessage(messages.loginwithapp, {
@@ -140,6 +140,7 @@ const JellyfinLogin: React.FC<JellyfinLoginProps> = ({
type="text"
placeholder={intl.formatMessage(messages.username)}
className="!bg-gray-700/80 placeholder:text-gray-400"
data-form-type="username"
/>
</div>
{errors.username && touched.username && (
@@ -157,6 +158,10 @@ const JellyfinLogin: React.FC<JellyfinLoginProps> = ({
autoComplete="current-password"
placeholder={intl.formatMessage(messages.password)}
className="!bg-gray-700/80 placeholder:text-gray-400"
data-form-type="password"
data-1pignore="false"
data-lpignore="false"
data-bwignore="false"
/>
</div>
<div className="flex">

View File

@@ -75,7 +75,7 @@ const LocalLogin = ({ revalidate }: LocalLoginProps) => {
{({ errors, touched, isSubmitting, isValid }) => {
return (
<>
<Form>
<Form data-form-type="login">
<div>
<h2 className="mb-6 -mt-1 text-center text-lg font-bold text-neutral-200">
{intl.formatMessage(messages.loginwithapp, {
@@ -94,6 +94,7 @@ const LocalLogin = ({ revalidate }: LocalLoginProps) => {
type="text"
inputMode="email"
data-testid="email"
data-form-type="username,email"
className="!bg-gray-700/80 placeholder:text-gray-400"
/>
</div>
@@ -113,6 +114,7 @@ const LocalLogin = ({ revalidate }: LocalLoginProps) => {
placeholder={intl.formatMessage(messages.password)}
autoComplete="current-password"
data-testid="password"
data-form-type="password"
className="!bg-gray-700/80 placeholder:text-gray-400"
data-1pignore="false"
data-lpignore="false"

View File

@@ -239,6 +239,7 @@ const NotificationsDiscord = () => {
type="text"
placeholder={settings.currentSettings.applicationTitle}
autoComplete="off"
data-form-type="other"
data-1pignore="true"
data-lpignore="true"
data-bwignore="true"

View File

@@ -296,6 +296,7 @@ const NotificationsEmail = () => {
type="text"
inputMode="email"
autoComplete="off"
data-form-type="other"
data-1pignore="true"
data-lpignore="true"
data-bwignore="true"
@@ -321,6 +322,7 @@ const NotificationsEmail = () => {
type="text"
inputMode="url"
autoComplete="off"
data-form-type="other"
data-1pignore="true"
data-lpignore="true"
data-bwignore="true"
@@ -346,6 +348,7 @@ const NotificationsEmail = () => {
inputMode="numeric"
className="short"
autoComplete="off"
data-form-type="other"
data-1pignore="true"
data-lpignore="true"
data-bwignore="true"
@@ -407,6 +410,7 @@ const NotificationsEmail = () => {
name="authUser"
type="text"
autoComplete="off"
data-form-type="other"
data-1pignore="true"
data-lpignore="true"
data-bwignore="true"
@@ -446,6 +450,7 @@ const NotificationsEmail = () => {
rows="10"
className="font-mono text-xs"
autoComplete="off"
data-form-type="other"
data-1pignore="true"
data-lpignore="true"
data-bwignore="true"
@@ -477,6 +482,7 @@ const NotificationsEmail = () => {
id="pgpPassword"
name="pgpPassword"
autoComplete="off"
data-form-type="other"
data-1pignore="true"
data-lpignore="true"
data-bwignore="true"

View File

@@ -269,6 +269,7 @@ const NotificationsTelegram = () => {
name="botUsername"
type="text"
autoComplete="off"
data-form-type="other"
data-1pignore="true"
data-lpignore="true"
data-bwignore="true"
@@ -307,6 +308,7 @@ const NotificationsTelegram = () => {
name="chatId"
type="text"
autoComplete="off"
data-form-type="other"
data-1pignore="true"
data-lpignore="true"
data-bwignore="true"

View File

@@ -383,6 +383,7 @@ const RadarrModal = ({ onClose, radarr, onSave }: RadarrModalProps) => {
name="name"
type="text"
autoComplete="off"
data-form-type="other"
data-1pignore="true"
data-lpignore="true"
data-bwignore="true"

View File

@@ -873,6 +873,7 @@ const SettingsPlex = ({ onComplete }: SettingsPlexProps) => {
name="tautulliPort"
className="short"
autoComplete="off"
data-form-type="other"
data-1pignore="true"
data-lpignore="true"
data-bwignore="true"
@@ -914,6 +915,7 @@ const SettingsPlex = ({ onComplete }: SettingsPlexProps) => {
id="tautulliUrlBase"
name="tautulliUrlBase"
autoComplete="off"
data-form-type="other"
data-1pignore="true"
data-lpignore="true"
data-bwignore="true"
@@ -958,6 +960,7 @@ const SettingsPlex = ({ onComplete }: SettingsPlexProps) => {
id="tautulliExternalUrl"
name="tautulliExternalUrl"
autoComplete="off"
data-form-type="other"
data-1pignore="true"
data-lpignore="true"
data-bwignore="true"

View File

@@ -416,6 +416,7 @@ const SonarrModal = ({ onClose, sonarr, onSave }: SonarrModalProps) => {
name="name"
type="text"
autoComplete="off"
data-form-type="other"
data-1pignore="true"
data-lpignore="true"
data-bwignore="true"

View File

@@ -198,6 +198,11 @@ function JellyfinSetup({
messages.hostname,
mediaServerFormatValues
)}
autoComplete="off"
data-form-type="other"
data-1pignore="true"
data-lpignore="true"
data-bwignore="true"
/>
</div>
{errors.hostname && touched.hostname && (
@@ -282,6 +287,11 @@ function JellyfinSetup({
name="email"
type="text"
placeholder={intl.formatMessage(messages.email)}
autoComplete="off"
data-form-type="other"
data-1pignore="true"
data-lpignore="true"
data-bwignore="true"
/>
</div>
{errors.email && touched.email && (
@@ -298,6 +308,11 @@ function JellyfinSetup({
name="username"
type="text"
placeholder={intl.formatMessage(messages.username)}
autoComplete="off"
data-form-type="other"
data-1pignore="true"
data-lpignore="true"
data-bwignore="true"
/>
</div>
{errors.username && touched.username && (
@@ -314,6 +329,11 @@ function JellyfinSetup({
name="password"
type="password"
placeholder={intl.formatMessage(messages.password)}
autoComplete="off"
data-form-type="other"
data-1pignore="true"
data-lpignore="true"
data-bwignore="true"
/>
</div>
{errors.password && touched.password && (

View File

@@ -400,6 +400,7 @@ const UserList = () => {
type="text"
inputMode="email"
autoComplete="off"
data-form-type="other"
data-1pignore="true"
data-lpignore="true"
data-bwignore="true"