hoodcms 5.0.14 → 5.0.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.property.js","sources":["../../../node_modules/tslib/tslib.es6.js","../../../node_modules/jquery-toast-plugin/dist/jquery.toast.min.js","../../../../src/ts/core/Alerts.ts","../../../../src/ts/core/Inline.ts","../../../../src/ts/core/DataList.ts","../../../../src/ts/core/Validator.ts","../../../../src/ts/core/Handlers.ts","../../../../src/ts/core/Loader.ts","../../../../src/ts/core/Uploader.ts","../../../../src/ts/extensions/jqueryExtensions.ts","../../../../src/ts/extensions/numberExtensions.ts","../../../../src/ts/extensions/stringExtensions.ts","../../../../src/ts/core/HoodApi.ts","../../../../src/ts/app/PropertyController.ts","../../../../src/ts/app.property.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","\"function\"!=typeof Object.create&&(Object.create=function(t){function o(){}return o.prototype=t,new o}),function(t,o,i,s){\"use strict\";var n={_positionClasses:[\"bottom-left\",\"bottom-right\",\"top-right\",\"top-left\",\"bottom-center\",\"top-center\",\"mid-center\"],_defaultIcons:[\"success\",\"error\",\"info\",\"warning\"],init:function(o,i){this.prepareOptions(o,t.toast.options),this.process()},prepareOptions:function(o,i){var s={};\"string\"==typeof o||o instanceof Array?s.text=o:s=o,this.options=t.extend({},i,s)},process:function(){this.setup(),this.addToDom(),this.position(),this.bindToast(),this.animate()},setup:function(){var o=\"\";if(this._toastEl=this._toastEl||t(\"<div></div>\",{\"class\":\"jq-toast-single\"}),o+='<span class=\"jq-toast-loader\"></span>',this.options.allowToastClose&&(o+='<span class=\"close-jq-toast-single\">&times;</span>'),this.options.text instanceof Array){this.options.heading&&(o+='<h2 class=\"jq-toast-heading\">'+this.options.heading+\"</h2>\"),o+='<ul class=\"jq-toast-ul\">';for(var i=0;i<this.options.text.length;i++)o+='<li class=\"jq-toast-li\" id=\"jq-toast-item-'+i+'\">'+this.options.text[i]+\"</li>\";o+=\"</ul>\"}else this.options.heading&&(o+='<h2 class=\"jq-toast-heading\">'+this.options.heading+\"</h2>\"),o+=this.options.text;this._toastEl.html(o),this.options.bgColor!==!1&&this._toastEl.css(\"background-color\",this.options.bgColor),this.options.textColor!==!1&&this._toastEl.css(\"color\",this.options.textColor),this.options.textAlign&&this._toastEl.css(\"text-align\",this.options.textAlign),this.options.icon!==!1&&(this._toastEl.addClass(\"jq-has-icon\"),-1!==t.inArray(this.options.icon,this._defaultIcons)&&this._toastEl.addClass(\"jq-icon-\"+this.options.icon)),this.options[\"class\"]!==!1&&this._toastEl.addClass(this.options[\"class\"])},position:function(){\"string\"==typeof this.options.position&&-1!==t.inArray(this.options.position,this._positionClasses)?\"bottom-center\"===this.options.position?this._container.css({left:t(o).outerWidth()/2-this._container.outerWidth()/2,bottom:20}):\"top-center\"===this.options.position?this._container.css({left:t(o).outerWidth()/2-this._container.outerWidth()/2,top:20}):\"mid-center\"===this.options.position?this._container.css({left:t(o).outerWidth()/2-this._container.outerWidth()/2,top:t(o).outerHeight()/2-this._container.outerHeight()/2}):this._container.addClass(this.options.position):\"object\"==typeof this.options.position?this._container.css({top:this.options.position.top?this.options.position.top:\"auto\",bottom:this.options.position.bottom?this.options.position.bottom:\"auto\",left:this.options.position.left?this.options.position.left:\"auto\",right:this.options.position.right?this.options.position.right:\"auto\"}):this._container.addClass(\"bottom-left\")},bindToast:function(){var t=this;this._toastEl.on(\"afterShown\",function(){t.processLoader()}),this._toastEl.find(\".close-jq-toast-single\").on(\"click\",function(o){o.preventDefault(),\"fade\"===t.options.showHideTransition?(t._toastEl.trigger(\"beforeHide\"),t._toastEl.fadeOut(function(){t._toastEl.trigger(\"afterHidden\")})):\"slide\"===t.options.showHideTransition?(t._toastEl.trigger(\"beforeHide\"),t._toastEl.slideUp(function(){t._toastEl.trigger(\"afterHidden\")})):(t._toastEl.trigger(\"beforeHide\"),t._toastEl.hide(function(){t._toastEl.trigger(\"afterHidden\")}))}),\"function\"==typeof this.options.beforeShow&&this._toastEl.on(\"beforeShow\",function(){t.options.beforeShow()}),\"function\"==typeof this.options.afterShown&&this._toastEl.on(\"afterShown\",function(){t.options.afterShown()}),\"function\"==typeof this.options.beforeHide&&this._toastEl.on(\"beforeHide\",function(){t.options.beforeHide()}),\"function\"==typeof this.options.afterHidden&&this._toastEl.on(\"afterHidden\",function(){t.options.afterHidden()})},addToDom:function(){var o=t(\".jq-toast-wrap\");if(0===o.length?(o=t(\"<div></div>\",{\"class\":\"jq-toast-wrap\"}),t(\"body\").append(o)):(!this.options.stack||isNaN(parseInt(this.options.stack,10)))&&o.empty(),o.find(\".jq-toast-single:hidden\").remove(),o.append(this._toastEl),this.options.stack&&!isNaN(parseInt(this.options.stack),10)){var i=o.find(\".jq-toast-single\").length,s=i-this.options.stack;s>0&&t(\".jq-toast-wrap\").find(\".jq-toast-single\").slice(0,s).remove()}this._container=o},canAutoHide:function(){return this.options.hideAfter!==!1&&!isNaN(parseInt(this.options.hideAfter,10))},processLoader:function(){if(!this.canAutoHide()||this.options.loader===!1)return!1;var t=this._toastEl.find(\".jq-toast-loader\"),o=(this.options.hideAfter-400)/1e3+\"s\",i=this.options.loaderBg,s=t.attr(\"style\")||\"\";s=s.substring(0,s.indexOf(\"-webkit-transition\")),s+=\"-webkit-transition: width \"+o+\" ease-in; -o-transition: width \"+o+\" ease-in; transition: width \"+o+\" ease-in; background-color: \"+i+\";\",t.attr(\"style\",s).addClass(\"jq-toast-loaded\")},animate:function(){var t=this;if(this._toastEl.hide(),this._toastEl.trigger(\"beforeShow\"),\"fade\"===this.options.showHideTransition.toLowerCase()?this._toastEl.fadeIn(function(){t._toastEl.trigger(\"afterShown\")}):\"slide\"===this.options.showHideTransition.toLowerCase()?this._toastEl.slideDown(function(){t._toastEl.trigger(\"afterShown\")}):this._toastEl.show(function(){t._toastEl.trigger(\"afterShown\")}),this.canAutoHide()){var t=this;o.setTimeout(function(){\"fade\"===t.options.showHideTransition.toLowerCase()?(t._toastEl.trigger(\"beforeHide\"),t._toastEl.fadeOut(function(){t._toastEl.trigger(\"afterHidden\")})):\"slide\"===t.options.showHideTransition.toLowerCase()?(t._toastEl.trigger(\"beforeHide\"),t._toastEl.slideUp(function(){t._toastEl.trigger(\"afterHidden\")})):(t._toastEl.trigger(\"beforeHide\"),t._toastEl.hide(function(){t._toastEl.trigger(\"afterHidden\")}))},this.options.hideAfter)}},reset:function(o){\"all\"===o?t(\".jq-toast-wrap\").remove():this._toastEl.remove()},update:function(t){this.prepareOptions(t,this.options),this.setup(),this.bindToast()}};t.toast=function(t){var o=Object.create(n);return o.init(t,this),{reset:function(t){o.reset(t)},update:function(t){o.update(t)}}},t.toast.options={text:\"\",heading:\"\",showHideTransition:\"fade\",allowToastClose:!0,hideAfter:3e3,loader:!0,loaderBg:\"#9EC600\",stack:5,position:\"bottom-left\",bgColor:!1,textColor:!1,textAlign:\"left\",icon:!1,beforeShow:function(){},afterShown:function(){},beforeHide:function(){},afterHidden:function(){}}}(jQuery,window,document);","import Swal, { SweetAlertOptions, SweetAlertResult } from 'sweetalert2';\r\nimport 'jquery-toast-plugin';\r\n\r\nconst BootstrapSwal = Swal.mixin({\r\n customClass: {\r\n confirmButton: 'btn btn-success m-1 px-3',\r\n cancelButton: 'btn btn-danger m-1 px-3'\r\n },\r\n buttonsStyling: false\r\n});\r\n\r\nexport class Alerts {\r\n\r\n static log(message: any, type: 'message' | 'error' | 'warning' | 'info' = 'message') {\r\n if (!document.body.classList.contains('dev-mode')) {\r\n return;\r\n }\r\n switch (type) {\r\n case 'error':\r\n console.error(message);\r\n break;\r\n case 'message':\r\n console.log(message);\r\n break;\r\n case 'warning':\r\n console.warn(message);\r\n break;\r\n case 'info':\r\n console.info(message);\r\n break;\r\n }\r\n }\r\n\r\n static error(message: string, title: string = null, hideAfter: number = null) {\r\n \r\n $.toast({\r\n heading: title,\r\n text: message,\r\n icon: 'error',\r\n position: 'bottom-left',\r\n loader: false,\r\n bgColor: '#d0100b',\r\n textColor: 'white', \r\n hideAfter: hideAfter\r\n });\r\n\r\n }\r\n\r\n static warning(message: string, title: string = null, hideAfter: number = null) {\r\n \r\n $.toast({\r\n heading: title,\r\n text: message,\r\n icon: 'error',\r\n position: 'bottom-left',\r\n loader: false,\r\n bgColor: '#ef9007',\r\n textColor: 'white',\r\n hideAfter: hideAfter\r\n });\r\n\r\n } \r\n\r\n static message(message: string, title: string = null, hideAfter: number = null) {\r\n \r\n $.toast({\r\n heading: title,\r\n text: message,\r\n icon: 'error',\r\n position: 'bottom-left',\r\n loader: false,\r\n bgColor: '#222222',\r\n textColor: 'white',\r\n hideAfter: hideAfter\r\n });\r\n\r\n } \r\n\r\n static success(message: string, title: string = null, hideAfter: number = null) {\r\n \r\n $.toast({\r\n heading: title,\r\n text: message,\r\n icon: 'error',\r\n position: 'bottom-left',\r\n loader: false,\r\n bgColor: '#28a745',\r\n textColor: 'white',\r\n hideAfter: hideAfter\r\n });\r\n\r\n } \r\n\r\n static alert(message: string, title: string = null, icon: string = 'info', hideAfter: number = 10000) {\r\n\r\n switch (icon) {\r\n case 'error':\r\n Alerts.error(message, title, hideAfter);\r\n break;\r\n case 'warning':\r\n Alerts.warning(message, title, hideAfter);\r\n break;\r\n case 'info':\r\n Alerts.message(message, title, hideAfter);\r\n break;\r\n case 'success':\r\n Alerts.success(message, title, hideAfter);\r\n break;\r\n }\r\n\r\n }\r\n\r\n static sweetAlert(options: SweetAlertOptions, callback: (result: SweetAlertResult<any>) => void) {\r\n BootstrapSwal.fire(options).then(function (result: any) {\r\n callback(result);\r\n });\r\n }\r\n\r\n static confirm(options: SweetAlertOptions, callback: (result: SweetAlertResult<any>) => void) {\r\n\r\n let baseOptions: SweetAlertOptions = {\r\n showCancelButton: true,\r\n footer: null,\r\n title: 'Are you sure?',\r\n html: 'Are you sure you want to do this?',\r\n confirmButtonText: 'Ok', \r\n cancelButtonText:'Cancel'\r\n };\r\n\r\n Alerts.sweetAlert({...baseOptions, ...options}, callback);\r\n }\r\n\r\n static prompt(options: SweetAlertOptions, callback: (result: SweetAlertResult<any>) => void) {\r\n\r\n let baseOptions: SweetAlertOptions = {\r\n input: 'text',\r\n inputAttributes: {\r\n autocapitalize: 'off'\r\n },\r\n showCancelButton: true,\r\n icon: 'info',\r\n footer: '<span class=\"text-warning\"><i class=\"fa fa-exclamation-triangle\"></i> This cannot be undone.</span>', \r\n confirmButtonText: 'Ok', \r\n cancelButtonText: 'Cancel'\r\n };\r\n\r\n Alerts.sweetAlert({...baseOptions, ...options}, callback);\r\n }\r\n\r\n log(message: string, type: 'message' | 'error' | 'warning' | 'info' = 'message') {\r\n Alerts.log(message, type);\r\n }\r\n\r\n error(message: string, title: string = null, hideAfter: number = null) {\r\n Alerts.error(message, title, hideAfter);\r\n }\r\n\r\n warning(message: string, title: string = null, hideAfter: number = null) {\r\n Alerts.warning(message, title, hideAfter);\r\n }\r\n\r\n message(message: string, title: string = null, hideAfter: number = null) {\r\n Alerts.message(message, title, hideAfter);\r\n }\r\n\r\n success(message: string, title: string = null, hideAfter: number = null) {\r\n Alerts.success(message, title, hideAfter);\r\n }\r\n\r\n alert(message: string, title: string = null, icon: string = 'info', hideAfter: number = 10000) {\r\n Alerts.alert(message, message, icon, hideAfter);\r\n }\r\n\r\n sweetAlert(options: SweetAlertOptions, callback: (result: SweetAlertResult<any>) => void) {\r\n Alerts.sweetAlert(options, callback);\r\n }\r\n\r\n confirm(options: SweetAlertOptions, callback: (result: SweetAlertResult<any>) => void) {\r\n Alerts.confirm(options, callback);\r\n }\r\n\r\n prompt(options: SweetAlertOptions, callback: (result: SweetAlertResult<any>) => void) {\r\n Alerts.prompt(options, callback);\r\n }\r\n\r\n}","import { Alerts } from \"./Alerts\";\r\nimport { Response } from \"./Response\";\r\n\r\nexport interface InlineOptions {\r\n\r\n /**\r\n * Called before the data is fetched.\r\n */\r\n onLoad?: (sender?: HTMLElement) => void;\r\n\r\n /**\r\n * Called before the fetched HTML is rendered to the list. Must return the data back to datalist to render.\r\n */\r\n onRender?: (html: string, sender?: HTMLElement) => string;\r\n\r\n /**\r\n * Called when loading and rendering is complete.\r\n */\r\n onComplete?: (html: string, sender?: HTMLElement) => void;\r\n\r\n /**\r\n * Called when an error occurs.\r\n */\r\n onError?: (jqXHR: any, textStatus: any, errorThrown: any) => void;\r\n\r\n}\r\n\r\nexport class Inline {\r\n static load(tag: HTMLElement, options: InlineOptions) {\r\n\r\n let $tag = $(tag) as JQuery<HTMLElement>;\r\n $tag.addClass('loading');\r\n if (options.onLoad) {\r\n options.onLoad(tag);\r\n }\r\n\r\n let url: string = $tag.data('url');\r\n $.get(url, function (data: string) {\r\n\r\n if (options.onRender) {\r\n data = options.onRender(data, tag);\r\n }\r\n\r\n $tag.html(data);\r\n $tag.removeClass('loading');\r\n\r\n if (options.onComplete) {\r\n options.onComplete(data, tag);\r\n }\r\n\r\n })\r\n .fail(options.onError ?? Inline.handleError);\r\n }\r\n\r\n static task(url: string, sender: HTMLElement,\r\n complete: (data: Response, sender?: HTMLElement) => void = null,\r\n error: (jqXHR: any, textStatus: any, errorThrown: any) => void = null): void {\r\n\r\n if (sender) {\r\n sender.classList.add('loading');\r\n }\r\n $.get(url, function (response: Response) {\r\n if (sender) {\r\n sender.classList.remove('loading');\r\n }\r\n if (complete) {\r\n complete(response, sender);\r\n }\r\n })\r\n .fail(error ?? Inline.handleError);\r\n\r\n }\r\n\r\n static post(url: string, sender: HTMLElement,\r\n complete: (data: Response, sender?: HTMLElement) => void = null,\r\n error: (jqXHR: any, textStatus: any, errorThrown: any) => void = null): void {\r\n\r\n if (sender) {\r\n sender.classList.add('loading');\r\n }\r\n $.post(url, function (response: Response) {\r\n if (sender) {\r\n sender.classList.remove('loading');\r\n }\r\n if (complete) {\r\n complete(response, sender);\r\n }\r\n })\r\n .fail(error ?? Inline.handleError);\r\n\r\n }\r\n\r\n static handleError(xhr: { status: string | number; }, textStatus: any, errorThrown: any) {\r\n if (xhr.status === 500) {\r\n Alerts.error(\"There was an error processing the content, please contact an administrator if this continues.\", \"Error \" + xhr.status, 10000);\r\n } else if (xhr.status === 404) {\r\n Alerts.error(\"The content could not be found.\", \"Error \" + xhr.status, 10000);\r\n } else if (xhr.status === 401) {\r\n Alerts.error(\"You are not allowed to view this resource, are you logged in correctly?\", \"Error \" + xhr.status, 10000);\r\n window.location = window.location;\r\n }\r\n }\r\n}\r\n\r\n","import { Alerts } from \"./Alerts\";\r\nimport { Inline } from \"./Inline\";\r\n\r\ndeclare global {\r\n interface HTMLElement {\r\n hoodDataList: DataList;\r\n }\r\n}\r\n\r\nexport interface DataListOptions {\r\n\r\n /**\r\n * Called before the data is fetched.\r\n */\r\n onLoad?: (sender?: HTMLElement) => void;\r\n\r\n /**\r\n * Called before the fetched HTML is rendered to the list. Must return the data back to datalist to render.\r\n */\r\n onRender?: (html: string, sender?: HTMLElement) => string;\r\n\r\n /**\r\n * Called when loading and rendering is complete.\r\n */\r\n onComplete?: (html: string, sender?: HTMLElement) => void;\r\n\r\n /**\r\n * Called when an error occurs.\r\n */\r\n onError?: (jqXHR: any, textStatus: any, errorThrown: any) => void;\r\n\r\n}\r\n\r\n/**\r\n * Attach a data list feed to an HTML element. The element must have a data-url attribute to connect to a feed.\r\n */\r\n\r\nexport class DataList {\r\n element: HTMLElement;\r\n options: DataListOptions;\r\n\r\n /**\r\n * @param element The datalist element. The element must have a data-url attribute to connect to a feed.\r\n */\r\n constructor(element: HTMLElement, options: DataListOptions) {\r\n\r\n this.element = element;\r\n this.element.hoodDataList = this;\r\n if (typeof(element) == 'undefined' || element == null) {\r\n Alerts.log('Could not DataList to element, element does not exist.', 'error');\r\n return;\r\n }\r\n\r\n this.options = { ...this.options, ...options };\r\n\r\n if ($(this.element).hasClass('query')) {\r\n let pageUrl = $(this.element).data('url') + window.location.search;\r\n $(this.element).attr('data-url', pageUrl);\r\n $(this.element).data('url', pageUrl);\r\n }\r\n\r\n if (!$(this.element).hasClass('refresh-only')) {\r\n var listUrl = document.createElement('a');\r\n listUrl.href = $(this.element).data('url');\r\n this.reload(new URL(listUrl.href));\r\n }\r\n\r\n $(this.element).on('click', '.pagination a, a.hood-inline-list-target', function (this: DataList, e: JQuery.ClickEvent) {\r\n\r\n e.preventDefault();\r\n\r\n var url = document.createElement('a');\r\n url.href = (e.currentTarget as HTMLAnchorElement).href;\r\n\r\n var listUrl = document.createElement('a');\r\n listUrl.href = $(this.element).data('url');\r\n listUrl.search = url.search;\r\n\r\n this.reload(new URL(listUrl.href));\r\n\r\n }.bind(this));\r\n\r\n $('body').on('submit', `form.inline[data-target=\"#${this.element.id}\"]`, function (this: DataList, e: JQuery.ClickEvent) {\r\n\r\n e.preventDefault();\r\n\r\n let $form = $(e.currentTarget);\r\n\r\n var listUrl = document.createElement('a');\r\n listUrl.href = $(this.element).data('url');\r\n\r\n listUrl.search = \"?\" + $form.serialize();\r\n this.reload(new URL(listUrl.href));\r\n\r\n }.bind(this));\r\n\r\n }\r\n\r\n reload(this: DataList, url: URL = null) {\r\n if (url) {\r\n if (history.pushState && $(this.element).hasClass('query')) {\r\n let newurl = window.location.protocol + \"//\" + window.location.host + window.location.pathname + (url.href.contains('?') ? \"?\" + url.href.substring(url.href.indexOf('?') + 1) : '');\r\n window.history.pushState({ path: newurl }, '', newurl);\r\n }\r\n $(this.element).data('url', url);\r\n }\r\n Inline.load(this.element, { ...this.options });\r\n }\r\n\r\n}\r\n","import { Alerts } from \"./Alerts\";\r\nimport { Inline } from \"./Inline\";\r\nimport { Response } from \"./Response\";\r\n\r\nexport interface ValidatorOptions {\r\n errorAlert?: string;\r\n\r\n /**\r\n * Called before the submit of the form data, you can return the data to be serialised.\r\n */\r\n onSubmit?: (sender: Validator) => void;\r\n\r\n /**\r\n * Called when submit is complete.\r\n */\r\n onComplete?: (data: Response, sender?: Validator) => void;\r\n\r\n /**\r\n * Called when an error occurs.\r\n */\r\n onError?: (jqXHR: any, textStatus: any, errorThrown: any) => void;\r\n\r\n serializationFunction?: () => string;\r\n\r\n useAjax?: boolean;\r\n\r\n}\r\n\r\nexport class Validator {\r\n element: HTMLFormElement;\r\n options: ValidatorOptions = {\r\n errorAlert: 'There are errors on the form, please check your answers and try again.',\r\n useAjax: true\r\n };\r\n\r\n /**\r\n * @param element The datalist element. The element must have a data-url attribute to connect to a feed.\r\n */\r\n constructor(element: HTMLFormElement, options: ValidatorOptions) {\r\n\r\n this.element = element;\r\n if (!this.element) {\r\n return;\r\n }\r\n\r\n this.options.serializationFunction = function (this: Validator) {\r\n let rtn = $(this.element).serialize();\r\n return rtn;\r\n }.bind(this);\r\n\r\n this.options = { ...this.options, ...options };\r\n\r\n this.element.addEventListener('submit', function (this: Validator, e: Event) {\r\n e.preventDefault();\r\n e.stopImmediatePropagation();\r\n this.submitForm();\r\n }.bind(this));\r\n var tag = '[data-submit=\"#' + this.element.id + '\"]';\r\n let submitButtons = $(tag);\r\n if (submitButtons) {\r\n submitButtons.on('click', function (this: Validator, e: Event) {\r\n e.preventDefault();\r\n e.stopImmediatePropagation();\r\n let exit = $(e.currentTarget).data('exit'); \r\n if (exit) {\r\n $(this.element).find(\"input#exit\").remove();\r\n $(\"<input id='exit' />\").attr(\"type\", \"hidden\")\r\n .attr(\"name\", \"exit\")\r\n .attr(\"value\", \"true\")\r\n .appendTo(this.element);\r\n }\r\n this.submitForm();\r\n }.bind(this));\r\n }\r\n }\r\n\r\n submitForm() {\r\n this.element.classList.add('was-validated');\r\n if (this.element.checkValidity()) {\r\n\r\n this.element.classList.add('loading');\r\n\r\n let checkboxes = this.element.querySelector('input[type=checkbox]');\r\n if (checkboxes) {\r\n Array.prototype.slice.call(checkboxes)\r\n .forEach(function (checkbox: HTMLInputElement) {\r\n if ($(this).is(':checked')) {\r\n $(this).val('true');\r\n }\r\n });\r\n }\r\n\r\n if (this.options.onSubmit) {\r\n this.options.onSubmit(this);\r\n }\r\n\r\n if (this.options.useAjax) {\r\n\r\n let formData = this.options.serializationFunction();\r\n\r\n $.post(this.element.action, formData, function (this: Validator, data: any) {\r\n if (this.options.onComplete) {\r\n this.options.onComplete(data, this);\r\n }\r\n }.bind(this))\r\n .fail(this.options.onError ?? Inline.handleError);\r\n\r\n } else {\r\n\r\n this.element.submit();\r\n\r\n }\r\n\r\n } else {\r\n\r\n if (this.options.errorAlert) {\r\n Alerts.error(this.options.errorAlert, null, 5000);\r\n }\r\n }\r\n\r\n }\r\n}","export class Handlers {\r\n constructor() {\r\n }\r\n \r\n /**\r\n * Initialise all default Hood CMS handlers.\r\n */\r\n initDefaultHandlers() {\r\n\r\n this.checkboxToCsvInput();\r\n this.iconSelector();\r\n this.initSelectValues();\r\n this.scrollHandlers();\r\n this.selectText();\r\n this.setValueOnClick();\r\n this.submitOnChange();\r\n\r\n }\r\n\r\n /**\r\n * Sets values of any selects that have the value set in data-selected, useful for \r\n */\r\n initSelectValues(tag: string = 'body') {\r\n $(tag).find('select[data-selected]').each(this.initSelectValuesHandler);\r\n }\r\n\r\n initSelectValuesHandler(this: HTMLElement, index: number, element: HTMLElement) {\r\n let sel = $(this).data('selected');\r\n if (sel !== 'undefined' && sel !== '') {\r\n let selected = String(sel);\r\n $(this).val(selected);\r\n }\r\n }\r\n\r\n /**\r\n * Sets up any Hood Icon selector fields, requires the correct HTML setup.\r\n */\r\n iconSelector(tag: string = 'body') {\r\n $(tag).find('[data-hood-icon]').each(this.iconSelectorHandler);\r\n }\r\n\r\n iconSelectorHandler(this: HTMLElement, index: number, element: HTMLElement) {\r\n let $tag = $(this);\r\n let input = $tag.find('input[data-hood-icon-input]')\r\n let display = $tag.find('[data-hood-icon-display]')\r\n let collapse = $tag.find('.collapse')\r\n\r\n $tag.find('[data-hood-icon-key][data-hood-icon-value]').on('click', function () {\r\n $tag.find('[data-hood-icon-key][data-hood-icon-value]').removeClass('active');\r\n $(this).addClass('active');\r\n let key = $(this).data('hoodIconKey');\r\n let value = $(this).data('hoodIconValue');\r\n $(this)\r\n display.html(value);\r\n input.val(key);\r\n if (collapse) {\r\n collapse.removeClass('show');\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Submits the form when input is changed, mark inputs with .submit-on-change class.\r\n */\r\n selectText(tag: string = 'body') {\r\n $(tag).on('click', '.select-text', this.selectTextHandler);\r\n }\r\n\r\n selectTextHandler(this: HTMLInputElement) {\r\n let $this = $(this);\r\n $this.select();\r\n // Work around Chrome's little problem\r\n $this.mouseup(function () {\r\n // Prevent further mouseup intervention\r\n $this.unbind(\"mouseup\");\r\n return false;\r\n });\r\n }\r\n\r\n /**\r\n * Attaches handlers for default scrolling functions, scroll to top, scroll to target (with header.header offset calculated)\r\n * and scroll to target direct (with no calculated offset).\r\n */\r\n scrollHandlers(tag: string = 'body') {\r\n $(tag).on('click', '.scroll-top, .scroll-to-top', this.scrollTop);\r\n $(tag).on('click', '.scroll-target, .scroll-to-target', this.scrollTarget);\r\n $(tag).on('click', '.scroll-target-direct, .scroll-to-target-direct', this.scrollTargetDirect);\r\n }\r\n\r\n scrollTop(this: HTMLAnchorElement, e: JQuery.ClickEvent) {\r\n if (e) e.preventDefault();\r\n $('html, body').animate({ scrollTop: 0 }, 800);\r\n return false;\r\n }\r\n\r\n scrollTarget(this: HTMLAnchorElement, e: JQuery.ClickEvent) {\r\n if (e) e.preventDefault();\r\n let url = $(this).attr('href').split('#')[0];\r\n if (url !== window.location.pathname && url !== \"\") {\r\n return;\r\n }\r\n let target = this.hash;\r\n let $target = $(target);\r\n let $header = $('header.header');\r\n let headerOffset = 0;\r\n if ($header) {\r\n headerOffset = $header.height();\r\n }\r\n if ($(this).data('offset'))\r\n $('html, body').stop().animate({\r\n 'scrollTop': $target.offset().top - $(this).data('offset')\r\n }, 900, 'swing');\r\n else\r\n $('html, body').stop().animate({\r\n 'scrollTop': $target.offset().top - headerOffset\r\n }, 900, 'swing');\r\n }\r\n\r\n scrollTargetDirect(this: HTMLAnchorElement) {\r\n let scrollTop = $('body').scrollTop();\r\n let top = $($(this).attr('href')).offset().top;\r\n\r\n $('html, body').animate({\r\n scrollTop: top\r\n }, Math.abs(top - scrollTop));\r\n return false;\r\n }\r\n\r\n /**\r\n * Compiles any selected checkboxes with matching data-hood-csv-input tags,\r\n * then saves the CSV list of the values to the input given in the tag.\r\n */\r\n checkboxToCsvInput(tag: string = 'body') {\r\n $(tag).on('change', 'input[type=checkbox][data-hood-csv-input]', this.checkboxToCsvInputHandler);\r\n }\r\n\r\n checkboxToCsvInputHandler(this: HTMLInputElement, e: JQuery.ChangeEvent<HTMLElement>) {\r\n if (e) e.preventDefault();\r\n // when i change - create an array, with any other checked of the same data-input checkboxes. and add to the data-input referenced tag.\r\n let items = new Array();\r\n $('input[data-hood-csv-input=\"' + $(this).data('hoodCsvInput') + '\"]').each(function () {\r\n if ($(this).is(\":checked\"))\r\n items.push($(this).val());\r\n });\r\n let id = '#' + $(this).data('input');\r\n let vals = JSON.stringify(items);\r\n $(id).val(vals);\r\n }\r\n\r\n /**\r\n * Submits the form when input is changed, mark inputs with .submit-on-change class.\r\n */\r\n submitOnChange(tag: string = 'body') {\r\n $(tag).on('change', '.submit-on-change', this.submitOnChangeHandler);\r\n }\r\n\r\n submitOnChangeHandler(this: HTMLFormElement, e: JQuery.ChangeEvent) {\r\n if (e) e.preventDefault();\r\n $(this).parents('form').submit();\r\n }\r\n\r\n /**\r\n * Sets the value of the input [data-target] when clicked to the value in [data-value]\r\n */\r\n setValueOnClick(tag: string = 'body') {\r\n $(tag).on('click', '.click-select[data-target][data-value]', this.setValueOnClickHandler);\r\n }\r\n\r\n setValueOnClickHandler(this: HTMLElement) {\r\n let $this = $(this);\r\n let targetId = '#' + $this.data('target');\r\n $(targetId).val($this.data('value'));\r\n $(targetId).trigger('change');\r\n $('.click-select.clean[data-target=\"' + $this.data('target') + '\"]').each(function () { $(this).removeClass('active'); });\r\n $('.click-select.clean[data-target=\"' + $this.data('target') + '\"][data-value=\"' + $this.data('value') + '\"]').each(function () { $(this).addClass('active'); });\r\n }\r\n\r\n}","export class Loader {\r\n constructor() {\r\n new CustomEvent('loader-show');\r\n new CustomEvent('loader-hide');\r\n }\r\n\r\n static show(): void {\r\n $('body').trigger('loader-show');\r\n }\r\n\r\n static hide(): void {\r\n $('body').trigger('loader-hide');\r\n }\r\n}\r\n\r\nnew Loader()","import { Response } from './Response';\r\nimport { Alerts } from './Alerts';\r\n\r\nexport class Uploader {\r\n constructor() {\r\n if ($('.image-uploader').length || $('.gallery-uploader').length) {\r\n $(\".upload-progress-bar\").hide();\r\n $('.image-uploader').each(this.singleImage);\r\n $('.gallery-uploader').each(this.gallery);\r\n }\r\n }\r\n\r\n refreshImage(sender: JQuery<HTMLElement>, data: Response) {\r\n $(sender.data('preview')).css({\r\n 'background-image': 'url(' + data.media.smallUrl + ')'\r\n });\r\n $(sender.data('preview')).find('img').attr('src', data.media.smallUrl);\r\n }\r\n\r\n singleImage(this: HTMLElement) {\r\n\r\n let tag = '#' + $(this).attr('id');\r\n let $tag = $(tag);\r\n\r\n let jsontag = '#' + $(this).attr('json');\r\n\r\n let avatarDropzone: Dropzone = null;\r\n $tag.dropzone({\r\n url: $tag.data('url'),\r\n maxFiles: 1,\r\n paramName: 'file',\r\n parallelUploads: 1,\r\n acceptedFiles: $tag.data('types') || \".png,.jpg,.jpeg,.gif\",\r\n autoProcessQueue: true, // Make sure the files aren't queued until manually added\r\n previewsContainer: false, // Define the container to display the previews\r\n clickable: tag,\r\n init: function () {\r\n avatarDropzone = this;\r\n }\r\n });\r\n\r\n avatarDropzone.on(\"addedfile\", function () {\r\n });\r\n\r\n avatarDropzone.on(\"totaluploadprogress\", function (progress) {\r\n $(\".upload-progress-bar.\" + tag.replace('#', '') + \" .progress-bar\").css({ width: progress + \"%\" });\r\n });\r\n\r\n avatarDropzone.on(\"sending\", function (file) {\r\n $(\".upload-progress-bar.\" + tag.replace('#', '')).show();\r\n $($tag.data('preview')).addClass('loading');\r\n });\r\n\r\n avatarDropzone.on(\"queuecomplete\", function (progress) {\r\n $(\".upload-progress-bar.\" + tag.replace('#', '')).hide();\r\n });\r\n\r\n avatarDropzone.on(\"success\", function (file, response: Response) {\r\n if (response.success) {\r\n if (response.media) {\r\n $(jsontag).val(JSON.stringify(response.media));\r\n $($tag.data('preview')).css({\r\n 'background-image': 'url(' + response.media.smallUrl + ')'\r\n });\r\n $($tag.data('preview')).find('img').attr('src', response.media.smallUrl);\r\n }\r\n Alerts.success(\"New image added!\");\r\n } else {\r\n Alerts.error(\"There was a problem adding the image: \" + response.error);\r\n }\r\n avatarDropzone.removeFile(file);\r\n $($tag.data('preview')).removeClass('loading');\r\n });\r\n\r\n }\r\n\r\n gallery(this: HTMLElement) {\r\n\r\n let tag = '#' + $(this).attr('id');\r\n let $tag = $(tag);\r\n\r\n let previewNode = document.querySelector(tag + \"-template\");\r\n previewNode.id = \"\";\r\n let previewTemplate = (<HTMLElement>previewNode.parentNode).innerHTML;\r\n previewNode.parentNode.removeChild(previewNode);\r\n\r\n let galleryDropzone: Dropzone = null;\r\n\r\n $tag.dropzone({\r\n url: $tag.data('url'),\r\n thumbnailWidth: 80,\r\n thumbnailHeight: 80,\r\n parallelUploads: 5,\r\n previewTemplate: previewTemplate,\r\n paramName: 'files',\r\n acceptedFiles: $tag.data('types') || \".png,.jpg,.jpeg,.gif\",\r\n autoProcessQueue: true, // Make sure the files aren't queued until manually added\r\n previewsContainer: \"#previews\", // Define the container to display the previews\r\n clickable: \".fileinput-button\",\r\n init: function () {\r\n galleryDropzone = this;\r\n }\r\n });\r\n\r\n $(tag + \" .cancel\").hide();\r\n\r\n galleryDropzone.on(\"addedfile\", function (file) {\r\n $(file.previewElement.querySelector(\".complete\")).hide();\r\n $(file.previewElement.querySelector(\".cancel\")).show();\r\n $(tag + \" .cancel\").show();\r\n });\r\n\r\n // Update the total progress bar\r\n galleryDropzone.on(\"totaluploadprogress\", function (totalProgress: number, totalBytes: number, totalBytesSent: number) {\r\n let progressBar = document.querySelector(\"#total-progress .progress-bar\") as HTMLElement;\r\n progressBar.style.width = totalProgress + \"%\";\r\n });\r\n\r\n galleryDropzone.on(\"sending\", function (file: Dropzone.DropzoneFile) {\r\n // Show the total progress bar when upload starts\r\n let progressBar = document.querySelector(\"#total-progress\") as HTMLElement;\r\n progressBar.style.opacity = \"1\";\r\n });\r\n\r\n // Hide the total progress bar when nothing's uploading anymore\r\n galleryDropzone.on(\"complete\", function (file) {\r\n $(file.previewElement.querySelector(\".cancel\")).hide();\r\n $(file.previewElement.querySelector(\".progress\")).hide();\r\n $(file.previewElement.querySelector(\".complete\")).show();\r\n\r\n console.error(\"Uploader.Gallery.Dropzone.OnComplete - Inline.Refresh('.gallery') is not implemented.\");\r\n //Inline.Refresh('.gallery');\r\n });\r\n\r\n // Hide the total progress bar when nothing's uploading anymore\r\n galleryDropzone.on(\"queuecomplete\", function (progress) {\r\n let totalProgress = document.querySelector(\"#total-progress\") as HTMLElement;\r\n totalProgress.style.opacity = \"0\";\r\n $(tag + \" .cancel\").hide();\r\n });\r\n\r\n galleryDropzone.on(\"success\", function (file, response: Response) {\r\n\r\n console.error(\"Uploader.Gallery.Dropzone.OnSuccess - Inline.Refresh('.gallery') is not implemented.\");\r\n //Inline.Refresh('.gallery');\r\n\r\n if (response.success) {\r\n Alerts.success(\"New images added!\");\r\n } else {\r\n Alerts.error(\"There was a problem adding the profile image: \" + response.error);\r\n }\r\n });\r\n\r\n // Setup the buttons for all transfers\r\n // The \"add files\" button doesn't need to be setup because the config\r\n // `clickable` has already been specified.\r\n $(\".actions .cancel\").click(function () {\r\n galleryDropzone.removeAllFiles(true);\r\n });\r\n }\r\n\r\n}","import { SweetAlertResult } from 'sweetalert2';\r\nimport { Alerts } from '../core/Alerts';\r\n\r\ndeclare global {\r\n interface JQuery {\r\n exists(): number;\r\n restrictToSlug(): void;\r\n restrictToPageSlug(): void;\r\n restrictToMetaSlug(): void;\r\n characterCounter(): void;\r\n warningAlert(): void;\r\n }\r\n}\r\n\r\n$.fn.exists = function () {\r\n return $(this).length;\r\n};\r\n\r\n$.fn.restrictToSlug = function (restrictPattern: RegExp = /[^0-9a-zA-Z]*/g) {\r\n let targets = $(this);\r\n\r\n // The characters inside this pattern are accepted\r\n // and everything else will be 'cleaned'\r\n // For example 'ABCdEfGhI5' become 'ABCEGI5'\r\n\r\n var restrictHandler = function () {\r\n var val = $(this).val() as string;\r\n var newVal = val.replace(restrictPattern, '');\r\n\r\n // This condition is to prevent selection and keyboard navigation issues\r\n if (val !== newVal) {\r\n $(this).val(newVal);\r\n }\r\n };\r\n\r\n targets.on('keyup', restrictHandler);\r\n targets.on('paste', restrictHandler);\r\n targets.on('change', restrictHandler);\r\n};\r\n$.fn.restrictToPageSlug = function (restrictPattern: RegExp = /[^0-9a-zA-Z-//]*/g) {\r\n let targets = $(this);\r\n\r\n // The characters inside this pattern are accepted\r\n // and everything else will be 'cleaned'\r\n\r\n let restrictHandler = function () {\r\n var val = $(this).val() as string;\r\n var newVal = val.replace(restrictPattern, '');\r\n if ((newVal.match(new RegExp(\"/\", \"g\")) || []).length > 4) {\r\n var pos = newVal.lastIndexOf('/');\r\n newVal = newVal.substring(0, pos) + newVal.substring(pos + 1);\r\n Alerts.warning(\"You can only have up to 4 '/' characters in a url slug.\");\r\n }\r\n // This condition is to prevent selection and keyboard navigation issues\r\n if (val !== newVal) {\r\n $(this).val(newVal);\r\n }\r\n };\r\n\r\n targets.on('keyup', restrictHandler);\r\n targets.on('paste', restrictHandler);\r\n targets.on('change', restrictHandler);\r\n};\r\n$.fn.restrictToMetaSlug = function (restrictPattern: RegExp = /[^0-9a-zA-Z.]*/g) {\r\n let targets = $(this);\r\n\r\n // The characters inside this pattern are accepted\r\n // and everything else will be 'cleaned'\r\n\r\n let restrictHandler = function () {\r\n let val = $(this).val() as string;\r\n let newVal = val.replace(restrictPattern, '');\r\n if ((newVal.match(new RegExp(\".\", \"g\")) || []).length > 1) {\r\n let pos = newVal.lastIndexOf('.');\r\n newVal = newVal.substring(0, pos) + newVal.substring(pos + 1);\r\n Alerts.warning(\"You can only have up to 1 '.' characters in a meta slug.\");\r\n }\r\n // This condition is to prevent selection and keyboard navigation issues\r\n if (val !== newVal) {\r\n $(this).val(newVal);\r\n }\r\n };\r\n\r\n targets.on('keyup', restrictHandler);\r\n targets.on('paste', restrictHandler);\r\n targets.on('change', restrictHandler);\r\n};\r\n\r\n$.fn.characterCounter = function () {\r\n let targets = $(this);\r\n let characterCounterHandler = function () {\r\n let counter = $(this).data('counter');\r\n let max = Number($(this).attr('maxlength'));\r\n let len = ($(this).val() as string).length;\r\n $(counter).text(max - len);\r\n let cls = \"text-success\";\r\n if (max - len < max / 10)\r\n cls = \"text-danger\";\r\n $(counter).parent().removeClass('text-success').removeClass('text-danger').addClass(cls);\r\n };\r\n targets.on('keyup', characterCounterHandler);\r\n targets.on('paste', characterCounterHandler);\r\n targets.on('change', characterCounterHandler);\r\n};\r\n\r\n$.fn.warningAlert = function () {\r\n let targets = $(this);\r\n let warningAlertHandler = function (this: HTMLElement, e: JQuery.ClickEvent) {\r\n e.preventDefault();\r\n let warningAlertCallback = function (result: SweetAlertResult) {\r\n if (result.isConfirmed) {\r\n let url = $(e.currentTarget).attr('href');\r\n window.location.href = url;\r\n }\r\n };\r\n Alerts.confirm(\r\n {\r\n title: $(e.currentTarget).data('title'),\r\n html: $(e.currentTarget).data('warning'),\r\n footer: $(e.currentTarget).data('footer'),\r\n icon: 'warning'\r\n },\r\n warningAlertCallback\r\n );\r\n return false;\r\n };\r\n targets.on('click', warningAlertHandler);\r\n};\r\n\r\n","declare global {\r\n interface Number {\r\n formatCurrency(currency: string): string;\r\n formatKilobytes(): string;\r\n formatMegabytes(): string;\r\n }\r\n}\r\n\r\n\r\nNumber.prototype.formatCurrency = function (currency: string) {\r\n return currency + \" \" + this.toFixed(2).replace(/./g, function (c: string, i: number, a: string | any[]) {\r\n return i > 0 && c !== \".\" && (a.length - i) % 3 === 0 ? \",\" + c : c;\r\n });\r\n}\r\nNumber.prototype.formatKilobytes = function() {\r\n let n = this / 1024;\r\n return n.toFixed(0).replace(/./g, function (c: string, i: number, a: string | any[]) {\r\n return i > 0 && c !== \".\" && (a.length - i) % 3 === 0 ? \",\" + c : c;\r\n }) + \"Kb\";\r\n}\r\nNumber.prototype.formatMegabytes = function() {\r\n let n = this / 1024; \r\n n = n / 1024;\r\n return n.toFixed(0).replace(/./g, function (c: string, i: number, a: string | any[]) {\r\n return i > 0 && c !== \".\" && (a.length - i) % 3 === 0 ? \",\" + c : c;\r\n }) + \"Mb\";\r\n}\r\n\r\nexport { }\r\n","declare global {\r\n interface String {\r\n isUrlExternal(): boolean;\r\n htmlEncode(): string;\r\n htmlDecode(): string;\r\n contains(it: string): boolean;\r\n pick(min: number, max: number): string;\r\n shuffle(): string;\r\n toSeoUrl(): string;\r\n }\r\n}\r\n\r\nString.prototype.htmlEncode = function () {\r\n //create a in-memory div, set it's inner text(which jQuery automatically encodes)\r\n //then grab the encoded contents back out. The div never exists on the page.\r\n return $('<div/>').text(this).html();\r\n};\r\n\r\nString.prototype.htmlDecode = function () {\r\n return $('<div/>').html(this).text();\r\n};\r\n\r\nString.prototype.contains = function (it: string) {\r\n return this.indexOf(it) !== -1;\r\n};\r\n\r\nString.prototype.pick = function (min: number, max: number) {\r\n var n, chars = '';\r\n\r\n if (typeof max === 'undefined') {\r\n n = min;\r\n } else {\r\n n = min + Math.floor(Math.random() * (max - min));\r\n }\r\n\r\n for (var i = 0; i < n; i++) {\r\n chars += this.charAt(Math.floor(Math.random() * this.length));\r\n }\r\n\r\n return chars;\r\n};\r\n\r\n// Credit to @Christoph: http://stackoverflow.com/a/962890/464744\r\nString.prototype.shuffle = function () {\r\n var array = this.split('');\r\n var tmp, current, top = array.length;\r\n\r\n if (top) while (--top) {\r\n current = Math.floor(Math.random() * (top + 1));\r\n tmp = array[current];\r\n array[current] = array[top];\r\n array[top] = tmp;\r\n }\r\n\r\n return array.join('');\r\n};\r\n\r\nString.prototype.toSeoUrl = function () {\r\n var output = this.replace(/[^a-zA-Z0-9]/g, ' ').replace(/\\s+/g, \"-\").toLowerCase();\r\n /* remove first dash */\r\n if (output.charAt(0) === '-') output = output.substring(1);\r\n /* remove last dash */\r\n var last = output.length - 1;\r\n if (output.charAt(last) === '-') output = output.substring(0, last);\r\n return output;\r\n};\r\n\r\nexport { }\r\n","/// <reference types=\"google.maps\" />\r\n\r\nimport { Response, Validator } from \"..\";\r\nimport { Alerts } from \"./Alerts\";\r\nimport { Handlers } from \"./Handlers\";\r\nimport { Uploader } from \"./Uploader\";\r\n\r\ndeclare global {\r\n interface Hood {\r\n alerts: Alerts;\r\n uploader: Uploader;\r\n handlers: Handlers;\r\n }\r\n\r\n interface Window {\r\n hood: Hood;\r\n }\r\n}\r\n\r\n/**\r\n * Base class for extending a Hood CMS website, ensure you call HoodApi.initialise() to setup loaders and contact form defaults.\r\n */\r\nexport class HoodApi {\r\n alerts: Alerts = new Alerts();\r\n handlers: Handlers = new Handlers();\r\n uploader: Uploader = new Uploader();\r\n\r\n constructor() {\r\n }\r\n\r\n // Initialise Hood CMS site defaults, can be overridden or individual setup items can be called instead of the initialise function. \r\n initialise() {\r\n // Initialise loaders (default, adds loading to body tag)\r\n this.setupLoaders();\r\n\r\n // Hook up default handlers.\r\n this.handlers.initDefaultHandlers();\r\n\r\n // Init hood contact forms. \r\n this.initContactForms();\r\n }\r\n\r\n /**\r\n * Default Hood CMS loaders, can be used however, this simply adds a \"loading\" class to the body tag on show/hide.\r\n */\r\n setupLoaders(): void {\r\n $('body').on('loader-show', function () { document.body.classList.add('loading') })\r\n $('body').on('loader-hide', function () { document.body.classList.remove('loading') })\r\n }\r\n\r\n /**\r\n * Default initialisation function for Google Maps, should be called as the callback from the Google Maps API script tag.\r\n */\r\n initGoogleMaps(tag: string = '.google-map') {\r\n\r\n $(tag).each(function () {\r\n\r\n var myLatLng = new google.maps.LatLng($(this).data('lat'), $(this).data('long'));\r\n\r\n console.log('Loading map at: ' + $(this).data('lat') + ', ' + $(this).data('long'));\r\n\r\n var map = new google.maps.Map(this, {\r\n zoom: $(this).data('zoom') || 15,\r\n center: myLatLng,\r\n scrollwheel: false\r\n });\r\n\r\n var marker = new google.maps.Marker({\r\n position: myLatLng,\r\n map: map,\r\n title: $(this).data('marker')\r\n });\r\n\r\n $(window).on('resize', function () {\r\n google.maps.event.trigger(map, 'resize');\r\n });\r\n google.maps.event.trigger(map, 'resize');\r\n\r\n });\r\n\r\n }\r\n \r\n /**\r\n * Initialisation function for contact forms on the site, will add validator, and submit/functionality to any forms matching the given tag selector string.\r\n */\r\n initContactForms(tag: string = '.contact-form') {\r\n\r\n let $form = $(tag);\r\n\r\n $form.find('.thank-you').hide();\r\n $form.find('.form-content').show();\r\n\r\n let form: HTMLFormElement = $(tag)[0] as HTMLFormElement;\r\n new Validator(form, {\r\n onComplete: function (this: HoodApi, response: Response) {\r\n if (response.success) {\r\n\r\n if ($form.attr('data-redirect'))\r\n window.location.href = $form.attr('data-redirect');\r\n\r\n if ($form.attr('data-alert-message'))\r\n Alerts.success($form.attr('data-alert-message'));\r\n\r\n $form.find('.form').hide();\r\n $form.find('.thank-you').show();\r\n } else {\r\n if ($form.attr('data-alert-error'))\r\n Alerts.error($form.attr('data-alert-error'));\r\n else {\r\n console.error(response.errors);\r\n Alerts.error(\"There are errors on the form, please check your answers and try again.\");\r\n }\r\n }\r\n\r\n }.bind(this)\r\n });\r\n\r\n }\r\n\r\n}","/// <reference types=\"google.maps\" />\r\n\r\nimport { Alerts } from \"../core/Alerts\";\r\nimport { DataList } from \"../core/DataList\";\r\n\r\ndeclare global {\r\n namespace google.maps {\r\n interface Marker {\r\n info: string;\r\n }\r\n }\r\n}\r\n\r\nexport class PropertyController {\r\n constructor() {\r\n this.initList();\r\n }\r\n\r\n element: HTMLElement;\r\n list: DataList;\r\n mapListElement: HTMLElement;\r\n mapList: DataList;\r\n map: google.maps.Map = null;\r\n center: google.maps.LatLngLiteral = { lat: 30, lng: -110 };\r\n mapElement: HTMLElement;\r\n markers: any[];\r\n\r\n initList() {\r\n\r\n this.element = document.getElementById('property-list');\r\n if (!this.element) {\r\n return;\r\n }\r\n\r\n this.list = new DataList(this.element, {\r\n onComplete: function (this: PropertyController, data: string, sender: HTMLElement = null) {\r\n\r\n Alerts.log('Finished loading property list.', 'info');\r\n\r\n }.bind(this)\r\n });\r\n\r\n }\r\n\r\n initMapList() {\r\n\r\n this.mapListElement = document.getElementById('property-map-list');\r\n if (!this.mapElement) {\r\n return;\r\n }\r\n\r\n this.mapList = new DataList(this.mapListElement, {\r\n onComplete: function (this: PropertyController, data: string, sender: HTMLElement = null) {\r\n\r\n Alerts.log('Finished loading map list.', 'info');\r\n this.reloadMarkers();\r\n\r\n }.bind(this)\r\n });\r\n }\r\n\r\n initMap(mapElementId: string = 'property-map') {\r\n\r\n this.mapElement = document.getElementById(mapElementId);\r\n if (!this.mapElement) {\r\n return;\r\n }\r\n\r\n this.center = { lat: +this.mapElement.dataset.lat, lng: +this.mapElement.dataset.long };\r\n\r\n this.map = new google.maps.Map(this.mapElement, {\r\n zoom: +this.mapElement.dataset.zoom || 15,\r\n center: this.center,\r\n scrollwheel: false\r\n });\r\n\r\n $(window).resize(function (this: PropertyController) {\r\n google.maps.event.trigger(this.map, 'resize');\r\n }.bind(this));\r\n\r\n google.maps.event.trigger(this.map, 'resize');\r\n\r\n this.initMapList();\r\n\r\n }\r\n\r\n reloadMarkers() {\r\n\r\n var infowindow: google.maps.InfoWindow = null;\r\n\r\n if (!this.mapElement) {\r\n return;\r\n }\r\n\r\n var map = this.map;\r\n\r\n if (this.markers) {\r\n for (var i = 0; i < this.markers.length; i++) {\r\n this.markers[i].setMap(null);\r\n }\r\n }\r\n\r\n this.markers = [];\r\n\r\n var locations = $(\"#property-map-locations\").data('locations');\r\n\r\n locations.map(function (this: PropertyController, location: any, i: number) {\r\n\r\n let marker = new google.maps.Marker({\r\n position: new google.maps.LatLng(+location.Latitude, +location.Longitude),\r\n map: this.map,\r\n optimized: true // makes SVG icons work in IE\r\n });\r\n\r\n\r\n\r\n //marker.setIcon({\r\n // url: '/images/marker.png',\r\n // size: new google.maps.Size(30, 41),\r\n // scaledSize: new google.maps.Size(30, 41)\r\n //});\r\n\r\n marker.info = `<div class=\"card border-0\" style=\"max-width:300px\">\r\n <div style=\"background-image:url(${location.ImageUrl})\" class=\"rounded img-full img img-wide\"></div>\r\n <div class=\"card-body border-0\">\r\n <p style=\"overflow: hidden;text-overflow: ellipsis;white-space: nowrap;\">\r\n <strong>${location.Address1}, ${location.Postcode}</strong>\r\n </p>\r\n <p>${location.Description}</p>\r\n <a href=\"${location.MarkerUrl}\" class=\"btn btn-block btn-primary\">Find out more...</a>\r\n </div>\r\n</div>`;\r\n\r\n google.maps.event.addListener(marker, 'click', function (this: google.maps.Marker) {\r\n\r\n if (infowindow) {\r\n infowindow.close();\r\n }\r\n infowindow = new google.maps.InfoWindow({\r\n content: this.info\r\n });\r\n infowindow.open(map, this);\r\n\r\n }.bind(this));\r\n\r\n this.markers.push(marker);\r\n\r\n }.bind(this));\r\n }\r\n}\r\n","/// <reference types=\"google.maps\" />\r\n\r\nimport { HoodApi } from \"./core/HoodApi\";\r\nimport { PropertyController } from './app/PropertyController';\r\n\r\nexport class App extends HoodApi {\r\n property: PropertyController;\r\n \r\n constructor() {\r\n super();\r\n\r\n // Setup defaults with HoodApi default initialise function. \r\n this.initialise();\r\n\r\n // Initialise the property controllers.\r\n this.property = new PropertyController();\r\n }\r\n\r\n}\r\n\r\nwindow.hood = new App();\r\n"],"names":["Swal"],"mappings":"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"}
package/src/js/login.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * hoodcms v5.0.14
2
+ * hoodcms v5.0.15
3
3
  * A fully customisable content management system built in ASP.NET Core 5 & Bootstrap 5.
4
4
  * Written by George Whysall, 2022
5
5
  * Released under the GPL-3.0 License.
package/src/ts/admin.ts CHANGED
@@ -13,8 +13,11 @@ import { ContentTypeController } from './admin/ContentTypeController';
13
13
  import { LogsController } from './admin/LogsController';
14
14
  import { PropertyImporter } from './admin/PropertyImporter';
15
15
  import { HoodApi } from './core/HoodApi';
16
+ import { ColorPickers, Editors } from './index';
16
17
 
17
18
  class Admin extends HoodApi {
19
+ editors: Editors = new Editors();
20
+ colorPickers: ColorPickers = new ColorPickers();
18
21
 
19
22
  home: HomeController;
20
23
  media: MediaController;
@@ -0,0 +1,21 @@
1
+ /// <reference types="google.maps" />
2
+
3
+ import { HoodApi } from "./core/HoodApi";
4
+ import { PropertyController } from './app/PropertyController';
5
+
6
+ export class App extends HoodApi {
7
+ property: PropertyController;
8
+
9
+ constructor() {
10
+ super();
11
+
12
+ // Setup defaults with HoodApi default initialise function.
13
+ this.initialise();
14
+
15
+ // Initialise the property controllers.
16
+ this.property = new PropertyController();
17
+ }
18
+
19
+ }
20
+
21
+ window.hood = new App();
package/src/ts/app.ts CHANGED
@@ -1,91 +1,13 @@
1
1
  /// <reference types="google.maps" />
2
2
 
3
- import { HoodApi } from "./core/HoodApi";
4
- import { PropertyController } from './app/PropertyController';
5
- import { Validator } from './core/Validator';
6
- import { Response } from './core/Response';
7
- import { Alerts } from './core/Alerts';
3
+ import { HoodApi } from ".";
8
4
 
9
5
  export class App extends HoodApi {
10
- propertyController: PropertyController;
11
6
 
12
7
  constructor() {
13
8
  super();
14
-
15
- // Hook up default handlers.
16
- this.handlers.initDefaultHandlers();
17
- this.initContactForms();
18
-
19
-
20
- // Admin Controllers
21
- this.propertyController = new PropertyController();
22
- }
23
-
24
- initGoogleMaps(tag: string = '.google-map') {
25
-
26
- $(tag).each(function () {
27
-
28
- var myLatLng = new google.maps.LatLng($(this).data('lat'), $(this).data('long'));
29
-
30
- console.log('Loading map at: ' + $(this).data('lat') + ', ' + $(this).data('long'));
31
-
32
- var map = new google.maps.Map(this, {
33
- zoom: $(this).data('zoom') || 15,
34
- center: myLatLng,
35
- scrollwheel: false
36
- });
37
-
38
- var marker = new google.maps.Marker({
39
- position: myLatLng,
40
- map: map,
41
- title: $(this).data('marker')
42
- });
43
-
44
- $(window).resize(function () {
45
- google.maps.event.trigger(map, 'resize');
46
- });
47
- google.maps.event.trigger(map, 'resize');
48
-
49
- });
50
-
51
- }
52
- /**
53
- * Initialisation function for contact forms on the site, will add validator, and submit/functionality to any forms matching the given tag selector string.
54
- * @param {string='.contact-form'} tag
55
- */
56
- initContactForms(tag: string = '.contact-form') {
57
-
58
- let $form = $(tag);
59
-
60
- $form.find('.thank-you').hide();
61
- $form.find('.form-content').show();
62
-
63
- let form: HTMLFormElement = $(tag)[0] as HTMLFormElement;
64
- new Validator(form, {
65
- onComplete: function (this: App, response: Response) {
66
-
67
- Response.process(response, 5000);
68
-
69
- if (response.success) {
70
-
71
- if ($form.attr('data-redirect'))
72
- window.location.href = $form.attr('data-redirect');
73
-
74
- if ($form.attr('data-alert-message'))
75
- Alerts.success($form.attr('data-alert-message'), "Success");
76
-
77
- $form.find('.form').hide();
78
- $form.find('.thank-you').show();
79
- } else {
80
- if ($form.attr('data-alert-error'))
81
- Alerts.error($form.attr('data-alert-error'), "Error");
82
- else
83
- Alerts.error("There was an error sending the message: " + response.errors, "Error");
84
- }
85
-
86
- }.bind(this)
87
- });
88
-
9
+ // Setup defaults with HoodApi default initialise function.
10
+ this.initialise();
89
11
  }
90
12
 
91
13
  }
@@ -1,8 +1,8 @@
1
- import { Alerts } from "./Alerts";
2
- import { ColorPickers } from "./ColorPicker";
3
- import { Editors } from "./Editors";
1
+ /// <reference types="google.maps" />
2
+
3
+ import { Response, Validator } from "..";
4
+ import { Alerts } from "./Alerts";
4
5
  import { Handlers } from "./Handlers";
5
- import { MediaModal } from "./Media";
6
6
  import { Uploader } from "./Uploader";
7
7
 
8
8
  declare global {
@@ -17,22 +17,104 @@ declare global {
17
17
  }
18
18
  }
19
19
 
20
- export class HoodApi implements Hood {
20
+ /**
21
+ * Base class for extending a Hood CMS website, ensure you call HoodApi.initialise() to setup loaders and contact form defaults.
22
+ */
23
+ export class HoodApi {
21
24
  alerts: Alerts = new Alerts();
22
- uploader: Uploader = new Uploader();
23
25
  handlers: Handlers = new Handlers();
24
- editors: Editors = new Editors();
25
- colorPickers: ColorPickers = new ColorPickers();
26
-
27
- private mediaModal: MediaModal = new MediaModal();
26
+ uploader: Uploader = new Uploader();
28
27
 
29
28
  constructor() {
30
- // Global Handlers
29
+ }
30
+
31
+ // Initialise Hood CMS site defaults, can be overridden or individual setup items can be called instead of the initialise function.
32
+ initialise() {
33
+ // Initialise loaders (default, adds loading to body tag)
31
34
  this.setupLoaders();
35
+
36
+ // Hook up default handlers.
37
+ this.handlers.initDefaultHandlers();
38
+
39
+ // Init hood contact forms.
40
+ this.initContactForms();
32
41
  }
33
42
 
43
+ /**
44
+ * Default Hood CMS loaders, can be used however, this simply adds a "loading" class to the body tag on show/hide.
45
+ */
34
46
  setupLoaders(): void {
35
- $('body').on('loader-show', function () { Alerts.success("Showing loader..."); })
36
- $('body').on('loader-hide', function () { Alerts.error("Hiding loader..."); })
47
+ $('body').on('loader-show', function () { document.body.classList.add('loading') })
48
+ $('body').on('loader-hide', function () { document.body.classList.remove('loading') })
37
49
  }
38
- }
50
+
51
+ /**
52
+ * Default initialisation function for Google Maps, should be called as the callback from the Google Maps API script tag.
53
+ */
54
+ initGoogleMaps(tag: string = '.google-map') {
55
+
56
+ $(tag).each(function () {
57
+
58
+ var myLatLng = new google.maps.LatLng($(this).data('lat'), $(this).data('long'));
59
+
60
+ console.log('Loading map at: ' + $(this).data('lat') + ', ' + $(this).data('long'));
61
+
62
+ var map = new google.maps.Map(this, {
63
+ zoom: $(this).data('zoom') || 15,
64
+ center: myLatLng,
65
+ scrollwheel: false
66
+ });
67
+
68
+ var marker = new google.maps.Marker({
69
+ position: myLatLng,
70
+ map: map,
71
+ title: $(this).data('marker')
72
+ });
73
+
74
+ $(window).on('resize', function () {
75
+ google.maps.event.trigger(map, 'resize');
76
+ });
77
+ google.maps.event.trigger(map, 'resize');
78
+
79
+ });
80
+
81
+ }
82
+
83
+ /**
84
+ * Initialisation function for contact forms on the site, will add validator, and submit/functionality to any forms matching the given tag selector string.
85
+ */
86
+ initContactForms(tag: string = '.contact-form') {
87
+
88
+ let $form = $(tag);
89
+
90
+ $form.find('.thank-you').hide();
91
+ $form.find('.form-content').show();
92
+
93
+ let form: HTMLFormElement = $(tag)[0] as HTMLFormElement;
94
+ new Validator(form, {
95
+ onComplete: function (this: HoodApi, response: Response) {
96
+ if (response.success) {
97
+
98
+ if ($form.attr('data-redirect'))
99
+ window.location.href = $form.attr('data-redirect');
100
+
101
+ if ($form.attr('data-alert-message'))
102
+ Alerts.success($form.attr('data-alert-message'));
103
+
104
+ $form.find('.form').hide();
105
+ $form.find('.thank-you').show();
106
+ } else {
107
+ if ($form.attr('data-alert-error'))
108
+ Alerts.error($form.attr('data-alert-error'));
109
+ else {
110
+ console.error(response.errors);
111
+ Alerts.error("There are errors on the form, please check your answers and try again.");
112
+ }
113
+ }
114
+
115
+ }.bind(this)
116
+ });
117
+
118
+ }
119
+
120
+ }
@@ -29,7 +29,7 @@ export interface ValidatorOptions {
29
29
  export class Validator {
30
30
  element: HTMLFormElement;
31
31
  options: ValidatorOptions = {
32
- errorAlert: 'There are errors, please check the form.',
32
+ errorAlert: 'There are errors on the form, please check your answers and try again.',
33
33
  useAjax: true
34
34
  };
35
35
 
package/src/ts/index.ts CHANGED
@@ -5,7 +5,6 @@ export * from './models/Property'
5
5
  export * from './models/Users'
6
6
 
7
7
  export * from './core/Alerts'
8
- export * from './core/BaseSite'
9
8
  export * from './core/ColorPicker'
10
9
  export * from './core/DataList'
11
10
  export * from './core/Editors'
@@ -1,6 +0,0 @@
1
- export declare class BaseSite {
2
- constructor();
3
- initialise(): void;
4
- onLoad(): void;
5
- onResize(): void;
6
- }
@@ -1,14 +0,0 @@
1
- export class BaseSite {
2
- constructor() {
3
- // Initialise
4
- this.initialise();
5
- $(window).on('load', this.onLoad.bind(this));
6
- $(window).on('resize', this.onResize.bind(this));
7
- }
8
- initialise() {
9
- }
10
- onLoad() {
11
- }
12
- onResize() {
13
- }
14
- }
@@ -1,21 +0,0 @@
1
- export class BaseSite {
2
-
3
- constructor() {
4
-
5
- // Initialise
6
- this.initialise();
7
-
8
- $(window).on('load', this.onLoad.bind(this));
9
- $(window).on('resize', this.onResize.bind(this));
10
-
11
- }
12
-
13
- initialise() {
14
- }
15
-
16
- onLoad() {
17
- }
18
-
19
- onResize() {
20
- }
21
- }