mirror of
https://github.com/gristlabs/grist-core.git
synced 2024-10-27 20:44:07 +00:00
637caf8105
Summary: On Windows, last row is selected when a user clicks the 'new row' while browser doesn't have focus. Test Plan: manual tests Reviewers: georgegevoian Reviewed By: georgegevoian Subscribers: georgegevoian Differential Revision: https://phab.getgrist.com/D3503
34 lines
1.2 KiB
TypeScript
34 lines
1.2 KiB
TypeScript
import * as Bowser from "bowser"; // TypeScript
|
|
|
|
let parser: Bowser.Parser.Parser|undefined;
|
|
|
|
function getParser() {
|
|
return parser || (parser = Bowser.getParser(window.navigator.userAgent));
|
|
}
|
|
|
|
// Returns whether the browser we are in is a desktop browser.
|
|
export function isDesktop() {
|
|
const platformType = getParser().getPlatformType();
|
|
return (!platformType || platformType === 'desktop');
|
|
}
|
|
|
|
// Returns whether the browser is on mobile iOS.
|
|
// This is used in particular in viewport.ts to set maximum-scale=1 (to prevent iOS auto-zoom when
|
|
// an input is focused, without preventing manual pinch-to-zoom).
|
|
export function isIOS() {
|
|
return navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform);
|
|
}
|
|
|
|
// Returns 'metaKey' on Mac / iOS, and 'ctrlKey' elsewhere. This is useful for various keyboard
|
|
// interactions that use Control on Windows and Linux, and Command key on Mac for the same
|
|
// purpose. Suitable to use with KeyboardEvent and MouseEvent.
|
|
// (Note: Mousetrap.js uses the same logic to interpret its "mod" key alias.)
|
|
export function modKeyProp(): 'metaKey'|'ctrlKey' {
|
|
return /Mac|iPod|iPhone|iPad/.test(navigator.platform) ? 'metaKey' : 'ctrlKey';
|
|
}
|
|
|
|
export function isWin() {
|
|
const os = getParser().getOSName();
|
|
return os === 'Windows';
|
|
}
|