@uifabric/utilities
Version:
Fluent UI React utilities for building components.
64 lines • 2.49 kB
JavaScript
define(["require", "exports", "./KeyCodes", "./dom/getDocument", "./sessionStorage", "@uifabric/merge-styles"], function (require, exports, KeyCodes_1, getDocument_1, sessionStorage_1, merge_styles_1) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var RTL_LOCAL_STORAGE_KEY = 'isRTL';
// Default to undefined so that we initialize on first read.
var _isRTL;
/**
* Gets the rtl state of the page (returns true if in rtl.)
*/
function getRTL(theme) {
if (theme === void 0) { theme = {}; }
if (theme.rtl !== undefined) {
return theme.rtl;
}
if (_isRTL === undefined) {
// Fabric supports persisting the RTL setting between page refreshes via session storage
var savedRTL = sessionStorage_1.getItem(RTL_LOCAL_STORAGE_KEY);
if (savedRTL !== null) {
_isRTL = savedRTL === '1';
setRTL(_isRTL);
}
var doc = getDocument_1.getDocument();
if (_isRTL === undefined && doc) {
_isRTL = ((doc.body && doc.body.getAttribute('dir')) || doc.documentElement.getAttribute('dir')) === 'rtl';
merge_styles_1.setRTL(_isRTL);
}
}
return !!_isRTL;
}
exports.getRTL = getRTL;
/**
* Sets the rtl state of the page (by adjusting the dir attribute of the html element.)
*/
function setRTL(isRTL, persistSetting) {
if (persistSetting === void 0) { persistSetting = false; }
var doc = getDocument_1.getDocument();
if (doc) {
doc.documentElement.setAttribute('dir', isRTL ? 'rtl' : 'ltr');
}
if (persistSetting) {
sessionStorage_1.setItem(RTL_LOCAL_STORAGE_KEY, isRTL ? '1' : '0');
}
_isRTL = isRTL;
merge_styles_1.setRTL(_isRTL);
}
exports.setRTL = setRTL;
/**
* Returns the given key, but flips right/left arrows if necessary.
*/
function getRTLSafeKeyCode(key, theme) {
if (theme === void 0) { theme = {}; }
if (getRTL(theme)) {
if (key === KeyCodes_1.KeyCodes.left) {
key = KeyCodes_1.KeyCodes.right;
}
else if (key === KeyCodes_1.KeyCodes.right) {
key = KeyCodes_1.KeyCodes.left;
}
}
return key;
}
exports.getRTLSafeKeyCode = getRTLSafeKeyCode;
});
//# sourceMappingURL=rtl.js.map