@squareetlabs/cordova-plugin-android-edge-to-edge
Version:
Edge-to-edge support for Android 15 (API 35) in Cordova and Ionic 3 apps. Handles system bars transparency, WindowInsets, and safe areas to avoid toolbar overlap.
89 lines (80 loc) • 3.58 kB
JavaScript
/**
* @fileoverview Plugin para implementar soporte Edge-to-Edge en aplicaciones Cordova para Android.
* @license MIT
* @copyright Squareet Labs 2025
*/
var exec = require('cordova/exec');
/**
* API JavaScript para el plugin AndroidEdgeToEdge
* @namespace
*/
var AndroidEdgeToEdge = {
/**
* Habilita el modo edge-to-edge en la aplicación Android
* @param {Object} [opts] - Opciones de configuración
* @param {boolean} [opts.lightStatusBar=true] - Si true, usa iconos claros en la barra de estado
* @param {boolean} [opts.lightNavigationBar=true] - Si true, usa iconos claros en la barra de navegación
* @param {string} [opts.backgroundColor="#FFFFFF"] - Color de fondo para el contenedor de la WebView (formato CSS)
* @param {string|string[]} [opts.ignoredPackages] - Paquetes a ignorar al enviar eventos de insets
* (útil para evitar problemas con plugins como camera)
* @returns {Promise<void>} Promesa que se resuelve cuando se habilita el modo edge-to-edge
*/
enable: function (opts) {
return new Promise(function (resolve, reject) {
exec(resolve, reject, "AndroidEdgeToEdge", "enable", [opts || {}]);
});
},
/**
* Deshabilita el modo edge-to-edge en la aplicación Android
* @returns {Promise<void>} Promesa que se resuelve cuando se deshabilita el modo edge-to-edge
*/
disable: function () {
return new Promise(function (resolve, reject) {
exec(resolve, reject, "AndroidEdgeToEdge", "disable", []);
});
},
/**
* Obtiene los valores actuales de insets del sistema
* @returns {Promise<{top: number, bottom: number, left: number, right: number}>} Promesa que se resuelve con los valores de insets
*/
getInsets: function () {
return new Promise(function (resolve, reject) {
exec(resolve, reject, "AndroidEdgeToEdge", "getInsets", []);
});
},
/**
* Suscribe a cambios en los insets del sistema
* @param {Function} cb - Función de callback que recibe los valores de insets actualizados
* @param {Object} cb.insets - Objeto con los valores de insets
* @param {number} cb.insets.top - Altura en píxeles del inset superior (barra de estado)
* @param {number} cb.insets.bottom - Altura en píxeles del inset inferior (barra de navegación)
* @param {number} cb.insets.left - Ancho en píxeles del inset izquierdo
* @param {number} cb.insets.right - Ancho en píxeles del inset derecho
*/
subscribeInsets: function (cb) {
exec(function (data) {
try { cb && cb(data); } catch (e) {}
}, function () {}, "AndroidEdgeToEdge", "subscribeInsets", []);
},
/**
* Verifica y actualiza los insets del sistema
* Útil cuando se necesita recalcular los insets después de cambios en la UI
* @returns {Promise<{top: number, bottom: number, left: number, right: number}>} Promesa que se resuelve con los valores de insets actualizados
*/
checkInsets: function () {
return new Promise(function (resolve, reject) {
exec(resolve, reject, "AndroidEdgeToEdge", "checkInsets", []);
});
},
/**
* Cambia el color de fondo del contenedor de la WebView
* @param {string} color - Color en formato CSS (#RRGGBB o #AARRGGBB)
* @returns {Promise<void>} Promesa que se resuelve cuando se cambia el color de fondo
*/
setBackgroundColor: function (color) {
return new Promise(function (resolve, reject) {
exec(resolve, reject, "AndroidEdgeToEdge", "setBackgroundColor", [color]);
});
}
};
module.exports = AndroidEdgeToEdge;