UNPKG

extjs-gpl

Version:

GPL licensed version of Sencha Ext JS

200 lines (178 loc) 6.77 kB
(function() { function getQueryParam(name, queryString) { var match = RegExp(name + '=([^&]*)').exec(queryString || location.search); return match && decodeURIComponent(match[1]); } function hasOption(opt) { var s = window.location.search; var re = new RegExp('(?:^|[&?])' + opt + '(?:[=]([^&]*))?(?:$|[&])', 'i'); var m = re.exec(s); return m ? (m[1] === undefined ? true : m[1]) : false; } var scriptTags = document.getElementsByTagName('script'), defaultTheme = 'triton', defaultRtl = false, i = scriptTags.length, requires = [ 'Ext.window.MessageBox', 'Ext.toolbar.Toolbar', 'Ext.form.field.ComboBox', 'Ext.form.FieldContainer', 'Ext.form.field.Radio' ], comboWidth = { classic: 160, gray: 160, neptune: 180, triton: 180, crisp: 180, 'neptune-touch': 220, 'crisp-touch': 220 }, labelWidth = { classic: 40, gray: 40, neptune: 45, triton: 45, crisp: 45, 'neptune-touch': 55, 'crisp-touch': 55 }, defaultQueryString, src, theme, rtl, toolbar; while (i--) { src = scriptTags[i].src; if (src.indexOf('include-ext.js') !== -1) { defaultQueryString = src.split('?')[1]; if (defaultQueryString) { defaultTheme = getQueryParam('theme', defaultQueryString) || defaultTheme; defaultRtl = getQueryParam('rtl', defaultQueryString) || defaultRtl; } break; } } Ext.themeName = theme = getQueryParam('theme') || defaultTheme; rtl = getQueryParam('rtl') || defaultRtl; if (rtl.toString() === 'true') { requires.unshift('Ext.rtl.*'); Ext.define('Ext.examples.RtlComponent', { override: 'Ext.Component', rtl: true }); } Ext.require(requires); Ext.onReady(function() { Ext.getBody().addCls(Ext.baseCSSPrefix + 'theme-' + Ext.themeName); // prevent touchmove from panning the viewport in mobile safari if (Ext.supports.TouchEvents) { Ext.getDoc().on({ touchmove: function(e) { // If within a scroller, don't let the document use it if (Ext.scroll.Scroller.isTouching) { e.preventDefault(); } }, translate: false, delegated: false }); } if (hasOption('nocss3')) { Ext.supports.CSS3BorderRadius = false; Ext.getBody().addCls('x-nbr x-nlg'); } if (hasOption('nlg')) { Ext.getBody().addCls('x-nlg'); } function setParam(param) { var queryString = Ext.Object.toQueryString( Ext.apply(Ext.Object.fromQueryString(location.search), param) ); location.search = queryString; } function removeParam(paramName) { var params = Ext.Object.fromQueryString(location.search); delete params[paramName]; location.search = Ext.Object.toQueryString(params); } if (hasOption('no-toolbar') || /no-toolbar/.test(document.cookie)) { return; } setTimeout(function() { toolbar = Ext.widget({ xtype: 'toolbar', border: true, rtl: false, id: 'options-toolbar', floating: true, fixed: true, defaultAlign: Ext.optionsToolbarAlign || 'tr-tr', alignOffset: [-(Ext.getScrollbarSize().width + 5), 0], preventFocusOnActivate: true, draggable: { constrain: true }, defaults : { rtl : false }, items: [{ xtype: 'combo', width: comboWidth[Ext.themeName], labelWidth: labelWidth[Ext.themeName], fieldLabel: 'Theme', displayField: 'name', valueField: 'value', labelStyle: 'cursor:move;', margin: '0 5 0 0', queryMode: 'local', store: Ext.create('Ext.data.Store', { fields: ['value', 'name'], data : [ { value: 'triton', name: 'Triton' }, { value: 'neptune', name: 'Neptune' }, { value: 'neptune-touch', name: 'Neptune Touch' }, { value: 'crisp', name: 'Crisp' }, { value: 'crisp-touch', name: 'Crisp Touch' }, { value: 'classic', name: 'Classic' }, { value: 'gray', name: 'Gray' }, { value: 'aria', name: 'ARIA' } ] }), value: theme, listeners: { select: function(combo) { var theme = combo.getValue(); if (theme !== defaultTheme) { setParam({ theme: theme }); } else { removeParam('theme'); } } } }, { /** * Only visible in repoDevMode and on QA sites */ xtype: 'button', hidden: !(Ext.devMode === 2 || location.href.indexOf('qa.sencha.com') !== -1), enableToggle: true, pressed: rtl, text: 'RTL', margin: '0 5 0 0', listeners: { toggle: function(btn, pressed) { if (pressed) { setParam({ rtl: true }); } else { removeParam('rtl'); } } } }, { xtype: 'tool', type: 'close', handler: function() { toolbar.destroy(); } }] }); toolbar.show(); }, 100); }); })();