office-ui-fabric-react
Version:
Reusable React components for building experiences for Office 365.
67 lines • 3.2 kB
JavaScript
define(["require", "exports", "./KeytipConstants", "../../Utilities"], function (require, exports, KeytipConstants_1, Utilities_1) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
/**
* Converts a whole set of KeySequences into one keytip ID, which will be the ID for the last keytip sequence specified
* keySequences should not include the initial keytip 'start' sequence.
*
* @param keySequences - Full path of IKeySequences for one keytip.
* @returns {string} String to use for the keytip ID.
*/
function sequencesToID(keySequences) {
return keySequences.reduce(function (prevValue, keySequence) {
return prevValue + KeytipConstants_1.KTP_SEPARATOR + keySequence.split('').join(KeytipConstants_1.KTP_SEPARATOR);
}, KeytipConstants_1.KTP_PREFIX);
}
exports.sequencesToID = sequencesToID;
/**
* Merges an overflow sequence with a key sequence.
*
* @param keySequences - Full sequence for one keytip.
* @param overflowKeySequences - Full overflow keytip sequence.
* @returns {string[]} Sequence that will be used by the keytip when in the overflow.
*/
function mergeOverflows(keySequences, overflowKeySequences) {
var overflowSequenceLen = overflowKeySequences.length;
var overflowSequence = overflowKeySequences.slice().pop();
var newKeySequences = keySequences.slice();
return Utilities_1.addElementAtIndex(newKeySequences, overflowSequenceLen - 1, overflowSequence);
}
exports.mergeOverflows = mergeOverflows;
/**
* Constructs the data-ktp-target attribute selector from a full key sequence.
*
* @param keySequences - Full string[] for a Keytip.
* @returns {string} String selector to use to query for the keytip target.
*/
function ktpTargetFromSequences(keySequences) {
return '[' + KeytipConstants_1.DATAKTP_TARGET + '="' + sequencesToID(keySequences) + '"]';
}
exports.ktpTargetFromSequences = ktpTargetFromSequences;
/**
* Constructs the data-ktp-execute-target attribute selector from a keytip ID.
*
* @param keytipId - ID of the Keytip.
* @returns {string} String selector to use to query for the keytip execute target.
*/
function ktpTargetFromId(keytipId) {
return '[' + KeytipConstants_1.DATAKTP_EXECUTE_TARGET + '="' + keytipId + '"]';
}
exports.ktpTargetFromId = ktpTargetFromId;
/**
* Gets the aria-describedby value to put on the component with this keytip.
*
* @param keySequences - KeySequences of the keytip.
* @returns {string} The aria-describedby value to set on the component with this keytip.
*/
function getAriaDescribedBy(keySequences) {
var describedby = ' ' + KeytipConstants_1.KTP_LAYER_ID;
if (!keySequences.length) {
// Return just the layer ID
return describedby;
}
return describedby + ' ' + sequencesToID(keySequences);
}
exports.getAriaDescribedBy = getAriaDescribedBy;
});
//# sourceMappingURL=KeytipUtils.js.map