diff --git a/httpdocs/theme/react/app-header/app.js b/httpdocs/theme/react/app-header/app.js
index 875f5a0c1..ad6dfb3a4 100644
--- a/httpdocs/theme/react/app-header/app.js
+++ b/httpdocs/theme/react/app-header/app.js
@@ -1,408 +1,408 @@
class SiteHeader extends React.Component {
constructor(props){
super(props);
this.state = {
baseUrl:window.json_baseurl,
searchBaseUrl:window.json_searchbaseurl,
cat_title:window.json_cat_title,
hasIdentity:window.json_hasIdentity,
is_show_title:window.json_is_show_title,
redirectString:window.json_redirectString,
serverUrl:window.json_serverUrl,
serverUri:window.json_serverUri,
store:{
sName:window.json_sname,
name:window.json_store_name,
order:window.json_store_order,
last_char_store_order:window.last_char_store_order,
},
user:window.json_member,
logo:window.json_logoWidth,
cat_title_left:window.json_cat_title_left,
tabs_left:window.tabs_left,
template:window.json_template,
status:"",
url_logout:window.json_logouturl
};
this.updateDimensions = this.updateDimensions.bind(this);
}
componentWillMount() {
this.updateDimensions();
}
componentDidMount() {
window.addEventListener("resize", this.updateDimensions);
window.addEventListener("orientationchange",this.updateDimensions);
}
updateDimensions(){
const width = window.innerWidth;
let device;
if (width >= 910){
device = "large";
} else if (width < 910 && width >= 610){
device = "mid";
} else if (width < 610){
device = "tablet";
}
this.setState({device:device});
}
render(){
let userMenuDisplay, loginMenuDisplay, siteHeaderTopRightCssClass;
if (this.state.user){
userMenuDisplay = (
);
siteHeaderTopRightCssClass = "w-user";
} else {
loginMenuDisplay = (
);
}
let logoLink = this.state.serverUrl;
if (this.state.serverUri.indexOf('/s/') > -1){
logoLink += "/s/" + this.state.store.name;
}
let siteHeaderStoreNameDisplay;
if (this.state.is_show_title === "1"){
siteHeaderStoreNameDisplay = (
);
}
let HeaderDisplay;
if (this.state.device !== "tablet"){
HeaderDisplay = (
);
} else {
HeaderDisplay = (
)
}
let templateHeaderStyle;
if (this.state.template){
templateHeaderStyle = {
"backgroundImage":this.state.template.header['background-image'],
"backgroundColor":this.state.template.header['background-color'],
"height":this.state.template.header['height']
}
}
return (
)
}
}
class SiteHeaderSearchForm extends React.Component {
constructor(props){
super(props);
this.state = {
searchText:''
};
this.onSearchTextChange = this.onSearchTextChange.bind(this);
this.onSearchFormSubmit = this.onSearchFormSubmit.bind(this);
}
onSearchTextChange(e){
this.setState({searchText:e.target.value});
}
onSearchFormSubmit(e){
e.preventDefault();
window.location.href = this.props.searchBaseUrl + this.state.searchText;
}
render(){
return (
)
}
}
class SiteHeaderLoginMenu extends React.Component {
constructor(props){
super(props);
this.state = {};
}
render(){
let registerButtonCssClass,
loginButtonCssClass;
if (window.location.href.indexOf('/register') > -1){
registerButtonCssClass = "active";
}
if (window.location.href.indexOf('/login') > -1){
loginButtonCssClass = "active";
}
const menuItemCssClass = {
"borderColor":this.props.template['header-nav-tabs']['border-color'],
"backgroundColor":this.props.template['header-nav-tabs']['background-color']
}
return (
)
}
}
class SiteHeaderUserMenu extends React.Component {
constructor(props){
super(props);
this.state = {};
this.handleClick = this.handleClick.bind(this);
}
componentWillMount() {
document.addEventListener('mousedown',this.handleClick, false);
}
componentWillUnmount() {
document.removeEventListener('mousedown',this.handleClick, false);
}
handleClick(e){
let dropdownClass = "";
if (this.node.contains(e.target)){
if (this.state.dropdownClass === "open"){
if (e.target.className === "profile-menu-toggle" ||
e.target.className === "profile-menu-image" ||
e.target.className === "profile-menu-username"){
dropdownClass = "";
} else {
dropdownClass = "open";
}
} else {
dropdownClass = "open";
}
}
this.setState({dropdownClass:dropdownClass});
}
render(){
return (
)
}
}
class MobileSiteHeader extends React.Component {
constructor(props){
super(props);
this.state = {
status:"switch"
};
this.showMobileUserMenu = this.showMobileUserMenu.bind(this);
this.showMobileSearchForm = this.showMobileSearchForm.bind(this);
this.showMobileSwitchMenu = this.showMobileSwitchMenu.bind(this);
}
showMobileUserMenu(){
this.setState({status:"user"});
}
showMobileSearchForm(){
this.setState({status:"search"});
}
showMobileSwitchMenu(){
this.setState({status:"switch"});
}
render(){
const menuItemCssClass = {
"borderColor":this.props.template['header-nav-tabs']['border-color'],
"backgroundColor":this.props.template['header-nav-tabs']['background-color']
}
const closeMenuElementDisplay = (
);
let mobileMenuDisplay;
if (this.state.status === "switch"){
mobileMenuDisplay = (
);
} else if (this.state.status === "user"){
mobileMenuDisplay = (
)
} else if (this.state.status === "search"){
mobileMenuDisplay = (
)
}
let logoElementCssClass = this.props.store.name;
if (this.state.status !== "switch"){
logoElementCssClass += " mini-version";
}
return(
);
}
}
class MobileUserContainer extends React.Component {
constructor(props){
super(props);
this.state = {};
}
render(){
let userDisplay;
if (this.props.user){
userDisplay = (
);
} else {
userDisplay = (
);
}
return (
{userDisplay}
)
}
}
ReactDOM.render(
,
document.getElementById('site-header-container')
);
diff --git a/httpdocs/theme/react/header.js b/httpdocs/theme/react/header.js
index 6f7f50910..f8ad9a434 100644
--- a/httpdocs/theme/react/header.js
+++ b/httpdocs/theme/react/header.js
@@ -1,571 +1,571 @@
"use strict";
window.appHelpers = function () {
function getEnv(domain) {
var env;
var lastDotSplit = this.splitByLastDot(domain);
if (lastDotSplit.indexOf('/') > -1) {
lastDotSplit = lastDotSplit.split('/')[0];
}
if (lastDotSplit === 'com' || lastDotSplit === 'org') {
env = 'live';
} else {
env = 'test';
}
return env;
}
function splitByLastDot(text) {
var index = text.lastIndexOf('.');
return text.slice(index + 1);
}
return {
getEnv: getEnv,
splitByLastDot: splitByLastDot
};
}();
"use strict";
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
var SiteHeader =
/*#__PURE__*/
function (_React$Component) {
_inherits(SiteHeader, _React$Component);
function SiteHeader(props) {
var _this;
_classCallCheck(this, SiteHeader);
_this = _possibleConstructorReturn(this, _getPrototypeOf(SiteHeader).call(this, props));
_this.state = {
baseUrl: window.json_baseurl,
searchBaseUrl: window.json_searchbaseurl,
cat_title: window.json_cat_title,
hasIdentity: window.json_hasIdentity,
is_show_title: window.json_is_show_title,
redirectString: window.json_redirectString,
serverUrl: window.json_serverUrl,
serverUri: window.json_serverUri,
store: {
sName: window.json_sname,
name: window.json_store_name,
order: window.json_store_order,
last_char_store_order: window.last_char_store_order
},
user: window.json_member,
logo: window.json_logoWidth,
cat_title_left: window.json_cat_title_left,
tabs_left: window.tabs_left,
template: window.json_template,
status: "",
url_logout: window.json_logouturl
};
_this.updateDimensions = _this.updateDimensions.bind(_assertThisInitialized(_assertThisInitialized(_this)));
return _this;
}
_createClass(SiteHeader, [{
key: "componentWillMount",
value: function componentWillMount() {
this.updateDimensions();
}
}, {
key: "componentDidMount",
value: function componentDidMount() {
window.addEventListener("resize", this.updateDimensions);
window.addEventListener("orientationchange", this.updateDimensions);
}
}, {
key: "updateDimensions",
value: function updateDimensions() {
var width = window.innerWidth;
var device;
if (width >= 910) {
device = "large";
} else if (width < 910 && width >= 610) {
device = "mid";
} else if (width < 610) {
device = "tablet";
}
this.setState({
device: device
});
}
}, {
key: "render",
value: function render() {
var userMenuDisplay, loginMenuDisplay, siteHeaderTopRightCssClass;
if (this.state.user) {
userMenuDisplay = React.createElement(SiteHeaderUserMenu, {
serverUrl: this.state.serverUrl,
baseUrl: this.state.baseUrl,
user: this.state.user
});
siteHeaderTopRightCssClass = "w-user";
} else {
loginMenuDisplay = React.createElement(SiteHeaderLoginMenu, {
baseUrl: this.state.baseUrl,
redirectString: this.state.redirectString,
template: this.state.template
});
}
var logoLink = this.state.serverUrl;
if (this.state.serverUri.indexOf('/s/') > -1) {
logoLink += "/s/" + this.state.store.name;
}
var siteHeaderStoreNameDisplay;
if (this.state.is_show_title === "1") {
siteHeaderStoreNameDisplay = React.createElement("div", {
id: "site-header-store-name-container"
}, React.createElement("a", {
href: logoLink
}, this.state.store.name));
}
var HeaderDisplay;
if (this.state.device !== "tablet") {
HeaderDisplay = React.createElement("section", {
id: "site-header-wrapper",
style: {
"paddingLeft": this.state.template['header-logo']['width']
}
}, React.createElement("div", {
id: "siter-header-left"
}, React.createElement("div", {
id: "site-header-logo-container",
style: this.state.template['header-logo']
}, React.createElement("a", {
href: logoLink
}, React.createElement("img", {
src: this.state.template['header-logo']['image-src']
}))), siteHeaderStoreNameDisplay), React.createElement("div", {
id: "site-header-right"
}, React.createElement("div", {
id: "site-header-right-top",
className: siteHeaderTopRightCssClass
}, React.createElement(SiteHeaderSearchForm, {
baseUrl: this.state.baseUrl,
searchBaseUrl: this.state.searchBaseUrl
}), userMenuDisplay), React.createElement("div", {
id: "site-header-right-bottom"
}, loginMenuDisplay)));
} else {
HeaderDisplay = React.createElement(MobileSiteHeader, {
logoLink: logoLink,
template: this.state.template,
user: this.state.user,
baseUrl: this.state.baseUrl,
searchBaseUrl: this.state.searchBaseUrl,
serverUrl: this.state.serverUrl,
store: this.state.store,
redirectString: this.state.redirectString
});
}
var templateHeaderStyle;
if (this.state.template) {
templateHeaderStyle = {
"backgroundImage": this.state.template.header['background-image'],
"backgroundColor": this.state.template.header['background-color'],
"height": this.state.template.header['height']
};
}
return React.createElement("section", {
id: "site-header",
style: templateHeaderStyle
}, HeaderDisplay);
}
}]);
return SiteHeader;
}(React.Component);
var SiteHeaderSearchForm =
/*#__PURE__*/
function (_React$Component2) {
_inherits(SiteHeaderSearchForm, _React$Component2);
function SiteHeaderSearchForm(props) {
var _this2;
_classCallCheck(this, SiteHeaderSearchForm);
_this2 = _possibleConstructorReturn(this, _getPrototypeOf(SiteHeaderSearchForm).call(this, props));
_this2.state = {
searchText: ''
};
_this2.onSearchTextChange = _this2.onSearchTextChange.bind(_assertThisInitialized(_assertThisInitialized(_this2)));
_this2.onSearchFormSubmit = _this2.onSearchFormSubmit.bind(_assertThisInitialized(_assertThisInitialized(_this2)));
return _this2;
}
_createClass(SiteHeaderSearchForm, [{
key: "onSearchTextChange",
value: function onSearchTextChange(e) {
this.setState({
searchText: e.target.value
});
}
}, {
key: "onSearchFormSubmit",
value: function onSearchFormSubmit(e) {
e.preventDefault();
window.location.href = this.props.searchBaseUrl + this.state.searchText;
}
}, {
key: "render",
value: function render() {
return React.createElement("div", {
id: "site-header-search-form"
}, React.createElement("form", {
id: "search-form",
onSubmit: this.onSearchFormSubmit
}, React.createElement("input", {
onChange: this.onSearchTextChange,
value: this.state.searchText,
type: "text",
name: "projectSearchText"
}), React.createElement("a", {
onClick: this.onSearchFormSubmit
})));
}
}]);
return SiteHeaderSearchForm;
}(React.Component);
var SiteHeaderLoginMenu =
/*#__PURE__*/
function (_React$Component3) {
_inherits(SiteHeaderLoginMenu, _React$Component3);
function SiteHeaderLoginMenu(props) {
var _this3;
_classCallCheck(this, SiteHeaderLoginMenu);
_this3 = _possibleConstructorReturn(this, _getPrototypeOf(SiteHeaderLoginMenu).call(this, props));
_this3.state = {};
return _this3;
}
_createClass(SiteHeaderLoginMenu, [{
key: "render",
value: function render() {
var registerButtonCssClass, loginButtonCssClass;
if (window.location.href.indexOf('/register') > -1) {
registerButtonCssClass = "active";
}
if (window.location.href.indexOf('/login') > -1) {
loginButtonCssClass = "active";
}
var menuItemCssClass = {
"borderColor": this.props.template['header-nav-tabs']['border-color'],
"backgroundColor": this.props.template['header-nav-tabs']['background-color']
};
return React.createElement("div", {
id: "site-header-login-menu"
}, React.createElement("ul", null, React.createElement("li", {
style: menuItemCssClass,
className: registerButtonCssClass
}, React.createElement("a", {
href: this.props.baseUrl + "/register"
}, "Register")), React.createElement("li", {
style: menuItemCssClass,
className: loginButtonCssClass
}, React.createElement("a", {
href: this.props.baseUrl + "/login" + this.props.redirectString
}, "Login"))));
}
}]);
return SiteHeaderLoginMenu;
}(React.Component);
var SiteHeaderUserMenu =
/*#__PURE__*/
function (_React$Component4) {
_inherits(SiteHeaderUserMenu, _React$Component4);
function SiteHeaderUserMenu(props) {
var _this4;
_classCallCheck(this, SiteHeaderUserMenu);
_this4 = _possibleConstructorReturn(this, _getPrototypeOf(SiteHeaderUserMenu).call(this, props));
_this4.state = {};
_this4.handleClick = _this4.handleClick.bind(_assertThisInitialized(_assertThisInitialized(_this4)));
return _this4;
}
_createClass(SiteHeaderUserMenu, [{
key: "componentWillMount",
value: function componentWillMount() {
document.addEventListener('mousedown', this.handleClick, false);
}
}, {
key: "componentWillUnmount",
value: function componentWillUnmount() {
document.removeEventListener('mousedown', this.handleClick, false);
}
}, {
key: "handleClick",
value: function handleClick(e) {
var dropdownClass = "";
if (this.node.contains(e.target)) {
if (this.state.dropdownClass === "open") {
if (e.target.className === "profile-menu-toggle" || e.target.className === "profile-menu-image" || e.target.className === "profile-menu-username") {
dropdownClass = "";
} else {
dropdownClass = "open";
}
} else {
dropdownClass = "open";
}
}
this.setState({
dropdownClass: dropdownClass
});
}
}, {
key: "render",
value: function render() {
var _this5 = this;
return React.createElement("ul", {
id: "site-header-user-menu-container"
}, React.createElement("li", {
ref: function ref(node) {
return _this5.node = node;
},
id: "user-menu-toggle",
className: this.state.dropdownClass
}, React.createElement("a", {
className: "profile-menu-toggle"
}, React.createElement("img", {
className: "profile-menu-image",
src: window.json_member_avatar
}), React.createElement("span", {
className: "profile-menu-username"
}, this.props.user.username)), React.createElement("ul", {
id: "user-profile-menu"
}, React.createElement("div", {
className: "dropdown-header"
}), React.createElement("li", null, React.createElement("a", {
href: window.json_baseurl + "product/add"
}, "Add Product")), React.createElement("li", null, React.createElement("a", {
href: window.json_baseurl + "u/" + this.props.user.username + "/products"
}, "Products")), React.createElement("li", null, React.createElement("a", {
href: window.json_baseurl + "u/" + this.props.user.username + "/plings"
}, "Plings")), React.createElement("li", null, React.createElement("a", {
href: window.json_baseurl + "settings"
}, "Settings")), React.createElement("li", null, React.createElement("a", {
- href: "{window.url_logout}"
+ href: window.json_logouturl
}, "Logout")))));
}
}]);
return SiteHeaderUserMenu;
}(React.Component);
var MobileSiteHeader =
/*#__PURE__*/
function (_React$Component5) {
_inherits(MobileSiteHeader, _React$Component5);
function MobileSiteHeader(props) {
var _this6;
_classCallCheck(this, MobileSiteHeader);
_this6 = _possibleConstructorReturn(this, _getPrototypeOf(MobileSiteHeader).call(this, props));
_this6.state = {
status: "switch"
};
_this6.showMobileUserMenu = _this6.showMobileUserMenu.bind(_assertThisInitialized(_assertThisInitialized(_this6)));
_this6.showMobileSearchForm = _this6.showMobileSearchForm.bind(_assertThisInitialized(_assertThisInitialized(_this6)));
_this6.showMobileSwitchMenu = _this6.showMobileSwitchMenu.bind(_assertThisInitialized(_assertThisInitialized(_this6)));
return _this6;
}
_createClass(MobileSiteHeader, [{
key: "showMobileUserMenu",
value: function showMobileUserMenu() {
this.setState({
status: "user"
});
}
}, {
key: "showMobileSearchForm",
value: function showMobileSearchForm() {
this.setState({
status: "search"
});
}
}, {
key: "showMobileSwitchMenu",
value: function showMobileSwitchMenu() {
this.setState({
status: "switch"
});
}
}, {
key: "render",
value: function render() {
var menuItemCssClass = {
"borderColor": this.props.template['header-nav-tabs']['border-color'],
"backgroundColor": this.props.template['header-nav-tabs']['background-color']
};
var closeMenuElementDisplay = React.createElement("a", {
className: "menu-item",
onClick: this.showMobileSwitchMenu
}, React.createElement("span", {
className: "glyphicon glyphicon-remove"
}));
var mobileMenuDisplay;
if (this.state.status === "switch") {
mobileMenuDisplay = React.createElement("div", {
id: "switch-menu"
}, React.createElement("a", {
className: "menu-item",
onClick: this.showMobileSearchForm,
id: "user-menu-switch"
}, React.createElement("span", {
className: "glyphicon glyphicon-search"
})), React.createElement("a", {
className: "menu-item",
onClick: this.showMobileUserMenu,
id: "search-menu-switch"
}, React.createElement("span", {
className: "glyphicon glyphicon-option-horizontal"
})));
} else if (this.state.status === "user") {
mobileMenuDisplay = React.createElement("div", {
id: "mobile-user-menu"
}, React.createElement("div", {
className: "menu-content-wrapper"
}, React.createElement(MobileUserContainer, {
user: this.props.user,
baseUrl: this.props.baseUrl,
serverUrl: this.state.serverUrl,
template: this.props.template,
redirectString: this.props.redirectString
})), closeMenuElementDisplay);
} else if (this.state.status === "search") {
mobileMenuDisplay = React.createElement("div", {
id: "mobile-search-menu"
}, React.createElement("div", {
className: "menu-content-wrapper"
}, React.createElement(SiteHeaderSearchForm, {
baseUrl: this.props.baseUrl,
searchBaseUrl: this.props.searchBaseUrl
})), closeMenuElementDisplay);
}
var logoElementCssClass = this.props.store.name;
if (this.state.status !== "switch") {
logoElementCssClass += " mini-version";
}
return React.createElement("section", {
id: "mobile-site-header"
}, React.createElement("div", {
id: "mobile-site-header-logo",
className: logoElementCssClass
}, React.createElement("a", {
href: this.props.logoLink
}, React.createElement("img", {
src: this.props.template['header-logo']['image-src']
}))), React.createElement("div", {
id: "mobile-site-header-menus-container"
}, mobileMenuDisplay));
}
}]);
return MobileSiteHeader;
}(React.Component);
var MobileUserContainer =
/*#__PURE__*/
function (_React$Component6) {
_inherits(MobileUserContainer, _React$Component6);
function MobileUserContainer(props) {
var _this7;
_classCallCheck(this, MobileUserContainer);
_this7 = _possibleConstructorReturn(this, _getPrototypeOf(MobileUserContainer).call(this, props));
_this7.state = {};
return _this7;
}
_createClass(MobileUserContainer, [{
key: "render",
value: function render() {
var userDisplay;
if (this.props.user) {
userDisplay = React.createElement(SiteHeaderUserMenu, {
serverUrl: this.state.serverUrl,
baseUrl: this.state.baseUrl,
user: this.props.user
});
} else {
userDisplay = React.createElement(SiteHeaderLoginMenu, {
user: this.props.user,
baseUrl: this.props.baseUrl,
template: this.props.template,
redirectString: this.props.redirectString
});
}
return React.createElement("div", {
id: "mobile-user-container"
}, userDisplay);
}
}]);
return MobileUserContainer;
}(React.Component);
ReactDOM.render(React.createElement(SiteHeader, null), document.getElementById('site-header-container'));