web2app-spa
Version:
This template is primarily designed to easily convert HTML pages and URLs into a Capacitor/Cordova based iOS/Android app that can be used as Single-page application (SPA).
240 lines (179 loc) • 5.63 kB
JavaScript
/* Bismillah */
/*
UI COMPONENT TEMPLATE
- You can customize, this template code as you need:
Started Date: 22 February 2022
Developer: Bugra Ozden
Email: bugra.ozden@gmail.com
Site: https://bug7a.github.io/javascript-mobile-app-template/
*/
const topBar = {};
topBar.backButton = {};
topBar.menuButton = {};
topBar.backButton.onClickFunc = function() {};
topBar.menuButton.onClickFunc = function() {};
topBar.default = {};
topBar.resetDefault = function() {
topBar.default.width = "container-width";
topBar.default.height = 105;
topBar.default.showWithMotion = 0;
}
topBar.resetDefault();
topBar.create = function(parameters = {}) {
// BOX: Object container.
topBar.box = createBox();
// Default values.
for (let parameterName in topBar.default) {
topBar.default[parameterName] = (parameters[parameterName] != undefined) ? parameters[parameterName] : topBar.default[parameterName];
}
if (topBar.default.width == "container-width") {
topBar.default.width = getDefaultContainerBox().width;
}
// *** OBJECT MODEL:
that.width = topBar.default.width;
that.height = topBar.default.height;
that.border = 0;
that.color = "white";
//that.element.style.boxShadow = "0px 6px 8px rgba(0, 0, 0, 0.1)";
that.borderColor = "rgba(0, 0, 0, 0)";
that.element.style.borderBottomWidth = "2px";
that.visible = 0;
that.opacity = 0;
that.top = -1 * that.height;
that.left = 0;
that.setMotion("top 0.2s, opacity 0.2s");
// IMAGE: Go back button.
topBar.box.btnBack = createImage(20, 32, 34, 34);
topBar.box.add(that);
that.load("assets/ui-top-bar/back.svg");
that.space = 0;
that.visible = 0;
that.opacity = 0.8;
that.bottom = 24;
//that.border = 1;
that.onClick(function() {
topBar.backButton.onClickFunc();
})
// LABEL: Title text.
topBar.box.lblTitle = createLabel(0, 37, 400); // top 37
topBar.box.add(that);
that.textAlign = "center";
that.element.style.fontFamily = "opensans-bold";
that.fontSize = 28; //28
that.textColor = "rgba(0, 0, 0, 0.8)";
that.bottom = 24;
//that.top = 37;
//that.border = 1;
that.center("left");
// IMAGE: Open/close menu button.
topBar.box.btnMenu = createImage(0, 0, 40, 40);
topBar.box.add(that);
that.load("assets/ui-top-bar/menu6.svg");
that.border = 0;
that.borderColor = "lightgray";
that.space = 8;
that.round = 8;
that.right = 20;
//that.top = 30;
that.bottom = 24;
that.opacity = 0.8;
that.visible = 0;
//that.border = 1;
that.onClick(function() {
topBar.menuButton.onClickFunc();
});
}
topBar.setTitle = function(titleText) {
topBar.box.lblTitle.text = titleText;
}
topBar.setTitleAlign = function(alignType) {
if (alignType == "center") {
topBar.box.lblTitle.center("left");
topBar.box.lblTitle.textAlign = "center";
} else if (alignType == "left") {
topBar.box.lblTitle.left = 20;
topBar.box.lblTitle.textAlign = "left";
}
}
topBar.setSubTitle = function(subTitleText) {
// No sub title.
}
topBar.setVisible = function(visible) {
if (visible != topBar.box.visibleValue) {
topBar.box.visibleValue = visible;
if (topBar.default.showWithMotion) {
if (visible) {
clearTimeout(topBar.box.visibleTimeout);
topBar.box.top = -1 * topBar.box.height;
topBar.box.opacity = 0;
topBar.box.visible = 1;
topBar.box.withMotion(function(self) {
self.top = 0;
self.opacity = 1;
});
} else {
topBar.box.withMotion(function(self) {
self.top = -1 * self.height;
self.opacity = 0;
topBar.box.visibleTimeout = setTimeout(function() {
topBar.box.visible = 0;
}, 250);
});
}
} else {
if (visible) {
topBar.box.top = -1 * topBar.box.height;
topBar.box.top = 0;
topBar.box.opacity = 1;
} else {
topBar.box.top = -1 * self.height;
topBar.box.opacity = 0;
}
topBar.box.visible = visible;
}
}
/*
if (visible) {
topBar.box.opacity = 0;
topBar.box.top = 300 - topBar.box.height;
topBar.box.visible = 1;
topBar.box.withMotion(function(self) {
self.top = 0;
topBar.box.opacity = 1;
})
} else {
topBar.box.visible = 0;
}
*/
}
topBar.getVisible = function() {
return topBar.box.visible;
}
topBar.backButton.setVisible = function(visible) {
topBar.box.btnBack.visible = visible;
}
topBar.menuButton.setVisible = function(visible) {
topBar.box.btnMenu.visible = visible;
}
topBar.backButton.onClick = function(func) {
topBar.backButton.onClickFunc = func;
}
topBar.menuButton.onClick = function(func) {
topBar.menuButton.onClickFunc = func;
}
topBar.getHeight = function() {
return topBar.box.height;
}
topBar.setBorderLine = function(isShown) {
if (isShown) {
topBar.box.borderColor = "rgba(0, 0, 0, 0.1)";
} else {
topBar.box.borderColor = "rgba(0, 0, 0, 0)";
}
}
topBar.setBackgroundColor = function(color) {
topBar.box.color = color;
}
topBar.setTitleColor = function(color) {
topBar.box.lblTitle.textColor = color;
}