diff --git a/vite/src/pipedal/NumericInput.tsx b/vite/src/pipedal/NumericInput.tsx index cd89c58..1321b90 100644 --- a/vite/src/pipedal/NumericInput.tsx +++ b/vite/src/pipedal/NumericInput.tsx @@ -32,11 +32,10 @@ const styles = ({ palette }: Theme) => createStyles({ }); -function isSamsungDevice() { - const userAgent = navigator.userAgent.toLowerCase(); - return userAgent.includes('samsung') || userAgent.includes('sm-'); -} +function isMobileDevice() { + return (navigator.maxTouchPoints && navigator.maxTouchPoints > 1); +} interface NumericInputProps extends WithStyles { ariaLabel: string; @@ -160,8 +159,8 @@ export const NumericInput = inputProps={{ 'aria-label': this.props.ariaLabel, style: { textAlign: 'right' }, - type: isSamsungDevice()? "text": "number", - inputMode: "decimal", + type: isMobileDevice()? "text": "number", // Avoids missing minus sign on Samsung mobile keyboard. + inputMode: "numeric", autoComplete: "off", autoCorrect: "off", autoCapitalize: "off", diff --git a/vite/src/pipedal/PluginControl.tsx b/vite/src/pipedal/PluginControl.tsx index 8dcdf13..43f2ced 100644 --- a/vite/src/pipedal/PluginControl.tsx +++ b/vite/src/pipedal/PluginControl.tsx @@ -48,11 +48,11 @@ const MAX_ANGLE = 135; const FONT_SIZE = "0.8em"; -function isSamsungDevice() { - const userAgent = navigator.userAgent.toLowerCase(); - return userAgent.includes('samsung') || userAgent.includes('sm-'); +function isMobileDevice() { + return (navigator.maxTouchPoints && navigator.maxTouchPoints > 1); } + enum ButtonStyle { None, Trigger, Momentary, MomentaryOnByDefault } @@ -1094,7 +1094,8 @@ const PluginControl = ) : (