Site.js 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322
  1. (function (global, factory) {
  2. if (typeof define === "function" && define.amd) {
  3. define("/Site", ["exports", "jquery", "Base", "Menubar", "Sidebar", "PageAside"], factory);
  4. } else if (typeof exports !== "undefined") {
  5. factory(exports, require("jquery"), require("Base"), require("Menubar"), require("Sidebar"), require("PageAside"));
  6. } else {
  7. var mod = {
  8. exports: {}
  9. };
  10. factory(mod.exports, global.jQuery, global.Base, global.SectionMenubar, global.SectionSidebar, global.SectionPageAside);
  11. global.Site = mod.exports;
  12. }
  13. })(this, function (_exports, _jquery, _Base2, _Menubar, _Sidebar, _PageAside) {
  14. "use strict";
  15. Object.defineProperty(_exports, "__esModule", {
  16. value: true
  17. });
  18. _exports.run = run;
  19. _exports.getInstance = getInstance;
  20. _exports.default = _exports.Site = void 0;
  21. _jquery = babelHelpers.interopRequireDefault(_jquery);
  22. _Base2 = babelHelpers.interopRequireDefault(_Base2);
  23. _Menubar = babelHelpers.interopRequireDefault(_Menubar);
  24. _Sidebar = babelHelpers.interopRequireDefault(_Sidebar);
  25. _PageAside = babelHelpers.interopRequireDefault(_PageAside);
  26. var DOC = document;
  27. var $DOC = (0, _jquery.default)(document);
  28. var $BODY = (0, _jquery.default)('body');
  29. var Site =
  30. /*#__PURE__*/
  31. function (_Base) {
  32. babelHelpers.inherits(Site, _Base);
  33. function Site() {
  34. babelHelpers.classCallCheck(this, Site);
  35. return babelHelpers.possibleConstructorReturn(this, babelHelpers.getPrototypeOf(Site).apply(this, arguments));
  36. }
  37. babelHelpers.createClass(Site, [{
  38. key: "initialize",
  39. value: function initialize() {
  40. this.startLoading();
  41. this.initializePluginAPIs();
  42. this.initializePlugins();
  43. this.initComponents();
  44. this.setDefaultState();
  45. }
  46. }, {
  47. key: "process",
  48. value: function process() {
  49. this.polyfillIEWidth();
  50. this.initBootstrap();
  51. this.setupMenubar();
  52. this.setupFullScreen();
  53. this.setupMegaNavbar();
  54. this.setupTour();
  55. this.setupNavbarCollpase(); // Dropdown menu setup
  56. // ===================
  57. this.$el.on('click', '.dropdown-menu-media', function (e) {
  58. e.stopPropagation();
  59. });
  60. }
  61. }, {
  62. key: "_getDefaultMeunbarType",
  63. value: function _getDefaultMeunbarType() {
  64. var breakpoint = this.getCurrentBreakpoint();
  65. var type = 'open';
  66. if ($BODY.hasClass('site-menubar-keep') && $BODY.is('.site-menubar-keep')) {
  67. type = 'hide';
  68. }
  69. if (breakpoint === 'xs') {
  70. type = 'hide';
  71. }
  72. return type;
  73. }
  74. }, {
  75. key: "menubarType",
  76. value: function menubarType(type) {
  77. var toggle = function toggle($el) {
  78. $el.toggleClass('hided', !(type === 'open'));
  79. $el.toggleClass('unfolded', !(type === 'fold'));
  80. };
  81. (0, _jquery.default)('[data-toggle="menubar"]').each(function () {
  82. var $this = (0, _jquery.default)(this);
  83. var $hamburger = (0, _jquery.default)(this).find('.hamburger');
  84. if ($hamburger.length > 0) {
  85. toggle($hamburger);
  86. } else {
  87. toggle($this);
  88. }
  89. });
  90. }
  91. }, {
  92. key: "initComponents",
  93. value: function initComponents() {
  94. this.menubar = new _Menubar.default({
  95. $el: (0, _jquery.default)('.site-menubar')
  96. });
  97. this.sidebar = new _Sidebar.default();
  98. var $aside = (0, _jquery.default)('.page-aside');
  99. if ($aside.length > 0) {
  100. this.aside = new _PageAside.default({
  101. $el: $aside
  102. });
  103. this.aside.run();
  104. }
  105. this.menubar.run();
  106. this.sidebar.run();
  107. }
  108. }, {
  109. key: "setDefaultState",
  110. value: function setDefaultState() {
  111. this.menubar.change(this._getDefaultMeunbarType());
  112. }
  113. }, {
  114. key: "getCurrentBreakpoint",
  115. value: function getCurrentBreakpoint() {
  116. var bp = Breakpoints.current();
  117. return bp ? bp.name : 'lg';
  118. }
  119. }, {
  120. key: "initBootstrap",
  121. value: function initBootstrap() {
  122. // Tooltip setup
  123. // =============
  124. $DOC.tooltip({
  125. selector: '[data-tooltip=true]',
  126. container: 'body'
  127. });
  128. (0, _jquery.default)('[data-toggle="tooltip"]').tooltip();
  129. (0, _jquery.default)('[data-toggle="popover"]').popover();
  130. }
  131. }, {
  132. key: "polyfillIEWidth",
  133. value: function polyfillIEWidth() {
  134. if (navigator.userAgent.match(/IEMobile\/10\.0/)) {
  135. var msViewportStyle = DOC.createElement('style');
  136. msViewportStyle.appendChild(DOC.createTextNode('@-ms-viewport{width:auto!important}'));
  137. DOC.querySelector('head').appendChild(msViewportStyle);
  138. }
  139. }
  140. }, {
  141. key: "setupFullScreen",
  142. value: function setupFullScreen() {
  143. if (typeof screenfull !== 'undefined') {
  144. $DOC.on('click', '[data-toggle="fullscreen"]', function () {
  145. if (screenfull.enabled) {
  146. screenfull.toggle();
  147. }
  148. return false;
  149. });
  150. if (screenfull.enabled) {
  151. DOC.addEventListener(screenfull.raw.fullscreenchange, function () {
  152. (0, _jquery.default)('[data-toggle="fullscreen"]').toggleClass('active', screenfull.isFullscreen);
  153. });
  154. }
  155. }
  156. }
  157. }, {
  158. key: "setupMegaNavbar",
  159. value: function setupMegaNavbar() {
  160. $DOC.on('click', '.navbar-mega .dropdown-menu', function (e) {
  161. e.stopPropagation();
  162. }).on('show.bs.dropdown', function (e) {
  163. var $target = (0, _jquery.default)(e.target);
  164. var $trigger = e.relatedTarget ? (0, _jquery.default)(e.relatedTarget) : $target.children('[data-toggle="dropdown"]');
  165. var animation = $trigger.data('animation');
  166. if (animation) {
  167. var $menu = $target.children('.dropdown-menu');
  168. $menu.addClass("animation-".concat(animation)).one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', function () {
  169. $menu.removeClass("animation-".concat(animation));
  170. });
  171. }
  172. }).on('shown.bs.dropdown', function (e) {
  173. var $menu = (0, _jquery.default)(e.target).find('.dropdown-menu-media > .list-group');
  174. if ($menu.length > 0) {
  175. var api = $menu.data('asScrollable');
  176. if (api) {
  177. api.update();
  178. } else {
  179. $menu.asScrollable({
  180. namespace: 'scrollable',
  181. contentSelector: '> [data-role=\'content\']',
  182. containerSelector: '> [data-role=\'container\']'
  183. });
  184. }
  185. }
  186. });
  187. }
  188. }, {
  189. key: "setupMenubar",
  190. value: function setupMenubar() {
  191. var _this = this;
  192. (0, _jquery.default)(document).on('click', '[data-toggle="menubar"]', function () {
  193. var type = _this.menubar.type;
  194. switch (type) {
  195. case 'open':
  196. type = 'hide';
  197. break;
  198. case 'hide':
  199. type = 'open';
  200. break;
  201. // no default
  202. }
  203. _this.menubar.change(type);
  204. _this.menubarType(type);
  205. return false;
  206. });
  207. Breakpoints.on('change', function () {
  208. _this.menubar.type = _this._getDefaultMeunbarType();
  209. _this.menubar.change(_this.menubar.type);
  210. });
  211. }
  212. }, {
  213. key: "setupNavbarCollpase",
  214. value: function setupNavbarCollpase() {
  215. (0, _jquery.default)(document).on('click', '[data-target=\'#site-navbar-collapse\']', function (e) {
  216. var $trigger = (0, _jquery.default)(this);
  217. var isClose = $trigger.hasClass('collapsed');
  218. $BODY.addClass('site-navbar-collapsing');
  219. $BODY.toggleClass('site-navbar-collapse-show', !isClose);
  220. setTimeout(function () {
  221. $BODY.removeClass('site-navbar-collapsing');
  222. }, 350);
  223. });
  224. }
  225. }, {
  226. key: "startLoading",
  227. value: function startLoading() {
  228. if (typeof _jquery.default.fn.animsition === 'undefined') {
  229. return false;
  230. } // let loadingType = 'default';
  231. $BODY.animsition({
  232. inClass: 'fade-in',
  233. inDuration: 800,
  234. loading: true,
  235. loadingClass: 'loader-overlay',
  236. loadingParentElement: 'html',
  237. loadingInner: "\n <div class=\"loader-content\">\n <div class=\"loader-index\">\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n </div>\n </div>",
  238. onLoadEvent: true
  239. });
  240. }
  241. }, {
  242. key: "setupTour",
  243. value: function setupTour(flag) {
  244. if (typeof this.tour === 'undefined') {
  245. if (typeof introJs === 'undefined') {
  246. return;
  247. }
  248. var overflow = (0, _jquery.default)('body').css('overflow');
  249. var self = this;
  250. var tourOptions = Config.get('tour');
  251. this.tour = introJs();
  252. this.tour.onbeforechange(function () {
  253. (0, _jquery.default)('body').css('overflow', 'hidden');
  254. });
  255. this.tour.oncomplete(function () {
  256. (0, _jquery.default)('body').css('overflow', overflow);
  257. });
  258. this.tour.onexit(function () {
  259. (0, _jquery.default)('body').css('overflow', overflow);
  260. });
  261. this.tour.setOptions(tourOptions);
  262. (0, _jquery.default)('.site-tour-trigger').on('click', function () {
  263. self.tour.start();
  264. });
  265. } // if (window.localStorage && window.localStorage.getItem('startTour') && (flag !== true)) {
  266. // return;
  267. // } else {
  268. // this.tour.start();
  269. // window.localStorage.setItem('startTour', true);
  270. // }
  271. }
  272. }]);
  273. return Site;
  274. }(_Base2.default);
  275. _exports.Site = Site;
  276. var instance = null;
  277. function getInstance() {
  278. if (!instance) {
  279. instance = new Site();
  280. }
  281. return instance;
  282. }
  283. function run() {
  284. var site = getInstance();
  285. site.run();
  286. }
  287. var _default = Site;
  288. _exports.default = _default;
  289. });