From: Alan Knowles Date: Fri, 30 Jul 2021 07:43:11 +0000 (+0800) Subject: synx X-Git-Url: http://git.roojs.org/?p=roojs1;a=commitdiff_plain;h=fe55e311d55f5402df587214bd24c6335c0b4245 synx --- diff --git a/Roo/bootstrap/form/CardUploader.js b/Roo/bootstrap/form/CardUploader.js new file mode 100644 index 0000000000..58cba34084 --- /dev/null +++ b/Roo/bootstrap/form/CardUploader.js @@ -0,0 +1,386 @@ + +/* +* Licence: LGPL +*/ + +/** + * @class Roo.bootstrap.form.CardUploader + * @extends Roo.bootstrap.Button + * Bootstrap Card Uploader class - it's a button which when you add files to it, adds cards below with preview and the name... + * @cfg {Number} errorTimeout default 3000 + * @cfg {Array} images an array of ?? Img objects ??? when loading existing files.. + * @cfg {Array} html The button text. + + * + * @constructor + * Create a new CardUploader + * @param {Object} config The config object + */ + +Roo.bootstrap.form.CardUploader = function(config){ + + + + Roo.bootstrap.form.CardUploader.superclass.constructor.call(this, config); + + + this.fileCollection = new Roo.util.MixedCollection(false,function(r) { + return r.data.id + }); + + this.addEvents({ + // raw events + /** + * @event preview + * When a image is clicked on - and needs to display a slideshow or similar.. + * @param {Roo.bootstrap.Card} this + * @param {Object} The image information data + * + */ + 'preview' : true, + /** + * @event download + * When a the download link is clicked + * @param {Roo.bootstrap.Card} this + * @param {Object} The image information data contains + */ + 'download' : true + + }); +}; + +Roo.extend(Roo.bootstrap.form.CardUploader, Roo.bootstrap.form.Input, { + + + errorTimeout : 3000, + + images : false, + + fileCollection : false, + allowBlank : true, + + getAutoCreate : function() + { + + var cfg = { + cls :'form-group' , + cn : [ + + { + tag: 'label', + //cls : 'input-group-addon', + html : this.fieldLabel + + }, + + { + tag: 'input', + type : 'hidden', + name : this.name, + value : this.value, + cls : 'd-none form-control' + }, + + { + tag: 'input', + multiple : 'multiple', + type : 'file', + cls : 'd-none roo-card-upload-selector' + }, + + { + cls : 'roo-card-uploader-button-container w-100 mb-2' + }, + { + cls : 'card-columns roo-card-uploader-container' + } + + ] + }; + + + return cfg; + }, + + getChildContainer : function() /// what children are added to. + { + return this.containerEl; + }, + + getButtonContainer : function() /// what children are added to. + { + return this.el.select(".roo-card-uploader-button-container").first(); + }, + + initEvents : function() + { + + Roo.bootstrap.form.Input.prototype.initEvents.call(this); + + var t = this; + this.addxtype({ + xns: Roo.bootstrap, + + xtype : 'Button', + container_method : 'getButtonContainer' , + html : this.html, // fix changable? + cls : 'w-100 ', + listeners : { + 'click' : function(btn, e) { + t.onClick(e); + } + } + }); + + + + + this.urlAPI = (window.createObjectURL && window) || + (window.URL && URL.revokeObjectURL && URL) || + (window.webkitURL && webkitURL); + + + + + this.selectorEl = this.el.select('.roo-card-upload-selector', true).first(); + + this.selectorEl.on('change', this.onFileSelected, this); + if (this.images) { + var t = this; + this.images.forEach(function(img) { + t.addCard(img) + }); + this.images = false; + } + this.containerEl = this.el.select('.roo-card-uploader-container', true).first(); + + + }, + + + onClick : function(e) + { + e.preventDefault(); + + this.selectorEl.dom.click(); + + }, + + onFileSelected : function(e) + { + e.preventDefault(); + + if(typeof(this.selectorEl.dom.files) == 'undefined' || !this.selectorEl.dom.files.length){ + return; + } + + Roo.each(this.selectorEl.dom.files, function(file){ + this.addFile(file); + }, this); + + }, + + + + + + addFile : function(file) + { + + if(typeof(file) === 'string'){ + throw "Add file by name?"; // should not happen + return; + } + + if(!file || !this.urlAPI){ + return; + } + + // file; + // file.type; + + var _this = this; + + + var url = _this.urlAPI.createObjectURL( file); + + this.addCard({ + id : Roo.bootstrap.form.CardUploader.ID--, + is_uploaded : false, + src : url, + srcfile : file, + title : file.name, + mimetype : file.type, + preview : false, + is_deleted : 0 + }); + + }, + + /** + * addCard - add an Attachment to the uploader + * @param data - the data about the image to upload + * + * { + id : 123 + title : "Title of file", + is_uploaded : false, + src : "http://.....", + srcfile : { the File upload object }, + mimetype : file.type, + preview : false, + is_deleted : 0 + .. any other data... + } + * + * + */ + + addCard : function (data) + { + // hidden input element? + // if the file is not an image... + //then we need to use something other that and header_image + var t = this; + // remove..... + var footer = [ + { + xns : Roo.bootstrap, + xtype : 'CardFooter', + items: [ + { + xns : Roo.bootstrap, + xtype : 'Element', + cls : 'd-flex', + items : [ + + { + xns : Roo.bootstrap, + xtype : 'Button', + html : String.format("{0}", data.title), + cls : 'col-10 text-left', + size: 'sm', + weight: 'link', + fa : 'download', + listeners : { + click : function() { + + t.fireEvent( "download", t, data ); + } + } + }, + + { + xns : Roo.bootstrap, + xtype : 'Button', + style: 'max-height: 28px; ', + size : 'sm', + weight: 'danger', + cls : 'col-2', + fa : 'times', + listeners : { + click : function() { + t.removeCard(data.id) + } + } + } + ] + } + + ] + } + + ]; + + var cn = this.addxtype( + { + + xns : Roo.bootstrap, + xtype : 'Card', + closeable : true, + header : !data.mimetype.match(/image/) && !data.preview ? "Document": false, + header_image : data.mimetype.match(/image/) ? data.src : data.preview, + header_image_fit_square: true, // fixme - we probably need to use the 'Img' element to do stuff like this. + data : data, + html : false, + + items : footer, + initEvents : function() { + Roo.bootstrap.Card.prototype.initEvents.call(this); + var card = this; + this.imgEl = this.el.select('.card-img-top').first(); + if (this.imgEl) { + this.imgEl.on('click', function() { t.fireEvent( "preview", t, data ); }, this); + this.imgEl.set({ 'pointer' : 'cursor' }); + + } + this.getCardFooter().addClass('p-1'); + + + } + + } + ); + // dont' really need ot update items. + // this.items.push(cn); + this.fileCollection.add(cn); + + if (!data.srcfile) { + this.updateInput(); + return; + } + + var _t = this; + var reader = new FileReader(); + reader.addEventListener("load", function() { + data.srcdata = reader.result; + _t.updateInput(); + }); + reader.readAsDataURL(data.srcfile); + + + + }, + removeCard : function(id) + { + + var card = this.fileCollection.get(id); + card.data.is_deleted = 1; + card.data.src = ''; /// delete the source - so it reduces size of not uploaded images etc. + //this.fileCollection.remove(card); + //this.items = this.items.filter(function(e) { return e != card }); + // dont' really need ot update items. + card.el.dom.parentNode.removeChild(card.el.dom); + this.updateInput(); + + + }, + reset: function() + { + this.fileCollection.each(function(card) { + if (card.el.dom && card.el.dom.parentNode) { + card.el.dom.parentNode.removeChild(card.el.dom); + } + }); + this.fileCollection.clear(); + this.updateInput(); + }, + + updateInput : function() + { + var data = []; + this.fileCollection.each(function(e) { + data.push(e.data); + + }); + this.inputEl().dom.value = JSON.stringify(data); + + + + } + + +}); + + +Roo.bootstrap.form.CardUploader.ID = -1; \ No newline at end of file diff --git a/Roo/bootstrap/form/HtmlEditor.js b/Roo/bootstrap/form/HtmlEditor.js new file mode 100644 index 0000000000..e86dab7693 --- /dev/null +++ b/Roo/bootstrap/form/HtmlEditor.js @@ -0,0 +1,435 @@ +/* + * - LGPL + * + * HtmlEditor + * + */ + +/** + * @class Roo.bootstrap.form.HtmlEditor + * @extends Roo.bootstrap.form.TextArea + * Bootstrap HtmlEditor class + + * @constructor + * Create a new HtmlEditor + * @param {Object} config The config object + */ + +Roo.bootstrap.form.HtmlEditor = function(config){ + Roo.bootstrap.form.HtmlEditor.superclass.constructor.call(this, config); + if (!this.toolbars) { + this.toolbars = []; + } + + this.editorcore = new Roo.HtmlEditorCore(Roo.apply({ owner : this} , config)); + this.addEvents({ + /** + * @event initialize + * Fires when the editor is fully initialized (including the iframe) + * @param {HtmlEditor} this + */ + initialize: true, + /** + * @event activate + * Fires when the editor is first receives the focus. Any insertion must wait + * until after this event. + * @param {HtmlEditor} this + */ + activate: true, + /** + * @event beforesync + * Fires before the textarea is updated with content from the editor iframe. Return false + * to cancel the sync. + * @param {HtmlEditor} this + * @param {String} html + */ + beforesync: true, + /** + * @event beforepush + * Fires before the iframe editor is updated with content from the textarea. Return false + * to cancel the push. + * @param {HtmlEditor} this + * @param {String} html + */ + beforepush: true, + /** + * @event sync + * Fires when the textarea is updated with content from the editor iframe. + * @param {HtmlEditor} this + * @param {String} html + */ + sync: true, + /** + * @event push + * Fires when the iframe editor is updated with content from the textarea. + * @param {HtmlEditor} this + * @param {String} html + */ + push: true, + /** + * @event editmodechange + * Fires when the editor switches edit modes + * @param {HtmlEditor} this + * @param {Boolean} sourceEdit True if source edit, false if standard editing. + */ + editmodechange: true, + /** + * @event editorevent + * Fires when on any editor (mouse up/down cursor movement etc.) - used for toolbar hooks. + * @param {HtmlEditor} this + */ + editorevent: true, + /** + * @event firstfocus + * Fires when on first focus - needed by toolbars.. + * @param {HtmlEditor} this + */ + firstfocus: true, + /** + * @event autosave + * Auto save the htmlEditor value as a file into Events + * @param {HtmlEditor} this + */ + autosave: true, + /** + * @event savedpreview + * preview the saved version of htmlEditor + * @param {HtmlEditor} this + */ + savedpreview: true + }); +}; + + +Roo.extend(Roo.bootstrap.form.HtmlEditor, Roo.bootstrap.form.TextArea, { + + + /** + * @cfg {Array} toolbars Array of toolbars. - defaults to just the Standard one + */ + toolbars : false, + + /** + * @cfg {Array} buttons Array of toolbar's buttons. - defaults to empty + */ + btns : [], + + /** + * @cfg {String} resizable 's' or 'se' or 'e' - wrapps the element in a + * Roo.resizable. + */ + resizable : false, + /** + * @cfg {Number} height (in pixels) + */ + height: 300, + /** + * @cfg {Number} width (in pixels) + */ + width: false, + + /** + * @cfg {Array} stylesheets url of stylesheets. set to [] to disable stylesheets. + * + */ + stylesheets: false, + + // id of frame.. + frameId: false, + + // private properties + validationEvent : false, + deferHeight: true, + initialized : false, + activated : false, + + onFocus : Roo.emptyFn, + iframePad:3, + hideMode:'offsets', + + tbContainer : false, + + bodyCls : '', + + toolbarContainer :function() { + return this.wrap.select('.x-html-editor-tb',true).first(); + }, + + /** + * Protected method that will not generally be called directly. It + * is called when the editor creates its toolbar. Override this method if you need to + * add custom toolbar buttons. + * @param {HtmlEditor} editor + */ + createToolbar : function(){ + Roo.log('renewing'); + Roo.log("create toolbars"); + + this.toolbars = [ new Roo.bootstrap.form.HtmlEditorToolbarStandard({editor: this} ) ]; + this.toolbars[0].render(this.toolbarContainer()); + + return; + +// if (!editor.toolbars || !editor.toolbars.length) { +// editor.toolbars = [ new Roo.bootstrap.form.HtmlEditorToolbarStandard() ]; // can be empty? +// } +// +// for (var i =0 ; i < editor.toolbars.length;i++) { +// editor.toolbars[i] = Roo.factory( +// typeof(editor.toolbars[i]) == 'string' ? +// { xtype: editor.toolbars[i]} : editor.toolbars[i], +// Roo.bootstrap.form.HtmlEditor); +// editor.toolbars[i].init(editor); +// } + }, + + + // private + onRender : function(ct, position) + { + // Roo.log("Call onRender: " + this.xtype); + var _t = this; + Roo.bootstrap.form.HtmlEditor.superclass.onRender.call(this, ct, position); + + this.wrap = this.inputEl().wrap({ + cls:'x-html-editor-wrap', cn:{cls:'x-html-editor-tb'} + }); + + this.editorcore.onRender(ct, position); + + if (this.resizable) { + this.resizeEl = new Roo.Resizable(this.wrap, { + pinned : true, + wrap: true, + dynamic : true, + minHeight : this.height, + height: this.height, + handles : this.resizable, + width: this.width, + listeners : { + resize : function(r, w, h) { + _t.onResize(w,h); // -something + } + } + }); + + } + this.createToolbar(this); + + + if(!this.width && this.resizable){ + this.setSize(this.wrap.getSize()); + } + if (this.resizeEl) { + this.resizeEl.resizeTo.defer(100, this.resizeEl,[ this.width,this.height ] ); + // should trigger onReize.. + } + + }, + + // private + onResize : function(w, h) + { + Roo.log('resize: ' +w + ',' + h ); + Roo.bootstrap.form.HtmlEditor.superclass.onResize.apply(this, arguments); + var ew = false; + var eh = false; + + if(this.inputEl() ){ + if(typeof w == 'number'){ + var aw = w - this.wrap.getFrameWidth('lr'); + this.inputEl().setWidth(this.adjustWidth('textarea', aw)); + ew = aw; + } + if(typeof h == 'number'){ + var tbh = -11; // fixme it needs to tool bar size! + for (var i =0; i < this.toolbars.length;i++) { + // fixme - ask toolbars for heights? + tbh += this.toolbars[i].el.getHeight(); + //if (this.toolbars[i].footer) { + // tbh += this.toolbars[i].footer.el.getHeight(); + //} + } + + + + + + var ah = h - this.wrap.getFrameWidth('tb') - tbh;// this.tb.el.getHeight(); + ah -= 5; // knock a few pixes off for look.. + this.inputEl().setHeight(this.adjustWidth('textarea', ah)); + var eh = ah; + } + } + Roo.log('onResize:' + [w,h,ew,eh].join(',') ); + this.editorcore.onResize(ew,eh); + + }, + + /** + * Toggles the editor between standard and source edit mode. + * @param {Boolean} sourceEdit (optional) True for source edit, false for standard + */ + toggleSourceEdit : function(sourceEditMode) + { + this.editorcore.toggleSourceEdit(sourceEditMode); + + if(this.editorcore.sourceEditMode){ + Roo.log('editor - showing textarea'); + +// Roo.log('in'); +// Roo.log(this.syncValue()); + this.syncValue(); + this.inputEl().removeClass(['hide', 'x-hidden']); + this.inputEl().dom.removeAttribute('tabIndex'); + this.inputEl().focus(); + }else{ + Roo.log('editor - hiding textarea'); +// Roo.log('out') +// Roo.log(this.pushValue()); + this.pushValue(); + + this.inputEl().addClass(['hide', 'x-hidden']); + this.inputEl().dom.setAttribute('tabIndex', -1); + //this.deferFocus(); + } + + if(this.resizable){ + this.setSize(this.wrap.getSize()); + } + + this.fireEvent('editmodechange', this, this.editorcore.sourceEditMode); + }, + + // private (for BoxComponent) + adjustSize : Roo.BoxComponent.prototype.adjustSize, + + // private (for BoxComponent) + getResizeEl : function(){ + return this.wrap; + }, + + // private (for BoxComponent) + getPositionEl : function(){ + return this.wrap; + }, + + // private + initEvents : function(){ + this.originalValue = this.getValue(); + }, + +// /** +// * Overridden and disabled. The editor element does not support standard valid/invalid marking. @hide +// * @method +// */ +// markInvalid : Roo.emptyFn, +// /** +// * Overridden and disabled. The editor element does not support standard valid/invalid marking. @hide +// * @method +// */ +// clearInvalid : Roo.emptyFn, + + setValue : function(v){ + Roo.bootstrap.form.HtmlEditor.superclass.setValue.call(this, v); + this.editorcore.pushValue(); + }, + + + // private + deferFocus : function(){ + this.focus.defer(10, this); + }, + + // doc'ed in Field + focus : function(){ + this.editorcore.focus(); + + }, + + + // private + onDestroy : function(){ + + + + if(this.rendered){ + + for (var i =0; i < this.toolbars.length;i++) { + // fixme - ask toolbars for heights? + this.toolbars[i].onDestroy(); + } + + this.wrap.dom.innerHTML = ''; + this.wrap.remove(); + } + }, + + // private + onFirstFocus : function(){ + //Roo.log("onFirstFocus"); + this.editorcore.onFirstFocus(); + for (var i =0; i < this.toolbars.length;i++) { + this.toolbars[i].onFirstFocus(); + } + + }, + + // private + syncValue : function() + { + this.editorcore.syncValue(); + }, + + pushValue : function() + { + this.editorcore.pushValue(); + } + + + // hide stuff that is not compatible + /** + * @event blur + * @hide + */ + /** + * @event change + * @hide + */ + /** + * @event focus + * @hide + */ + /** + * @event specialkey + * @hide + */ + /** + * @cfg {String} fieldClass @hide + */ + /** + * @cfg {String} focusClass @hide + */ + /** + * @cfg {String} autoCreate @hide + */ + /** + * @cfg {String} inputType @hide + */ + + /** + * @cfg {String} invalidText @hide + */ + /** + * @cfg {String} msgFx @hide + */ + /** + * @cfg {String} validateOnBlur @hide + */ +}); + + + + + + \ No newline at end of file diff --git a/Roo/bootstrap/form/HtmlEditorToolbarStandard.js b/Roo/bootstrap/form/HtmlEditorToolbarStandard.js new file mode 100644 index 0000000000..1399eed715 --- /dev/null +++ b/Roo/bootstrap/form/HtmlEditorToolbarStandard.js @@ -0,0 +1,287 @@ + +Roo.namespace('Roo.bootstrap.form.HtmlEditor'); +/** + * @class Roo.bootstrap.form.HtmlEditorToolbar1 + * @extends Roo.bootstrap.nav.Simplebar + * Basic Toolbar + * + * @example + * Usage: + * + new Roo.bootstrap.form.HtmlEditor({ + .... + toolbars : [ + new Roo.bootstrap.form.HtmlEditorToolbar1({ + disable : { fonts: 1 , format: 1, ..., ... , ...], + btns : [ .... ] + }) + } + + * + * @cfg {Object} disable List of elements to disable.. + * @cfg {Array} btns List of additional buttons. + * + * + * NEEDS Extra CSS? + * .x-html-editor-tb .x-edit-none .x-btn-text { background: none; } + */ + +Roo.bootstrap.form.HtmlEditorToolbarStandard = function(config) +{ + + Roo.apply(this, config); + + // default disabled, based on 'good practice'.. + this.disable = this.disable || {}; + Roo.applyIf(this.disable, { + fontSize : true, + colors : true, + specialElements : true + }); + Roo.bootstrap.form.HtmlEditorToolbarStandard.superclass.constructor.call(this, config); + + this.editor = config.editor; + this.editorcore = config.editor.editorcore; + + this.buttons = new Roo.util.MixedCollection(false, function(o) { return o.cmd; }); + + //Roo.form.HtmlEditorToolbar1.superclass.constructor.call(this, editor.wrap.dom.firstChild, [], config); + // dont call parent... till later. +} +Roo.extend(Roo.bootstrap.form.HtmlEditorToolbarStandard, Roo.bootstrap.nav.Simplebar, { + + bar : true, + + editor : false, + editorcore : false, + + + formats : [ + "p" , + "h1","h2","h3","h4","h5","h6", + "pre", "code", + "abbr", "acronym", "address", "cite", "samp", "var", + 'div','span' + ], + + onRender : function(ct, position) + { + // Roo.log("Call onRender: " + this.xtype); + + Roo.bootstrap.form.HtmlEditorToolbarStandard.superclass.onRender.call(this, ct, position); + Roo.log(this.el); + this.el.dom.style.marginBottom = '0'; + var _this = this; + var editorcore = this.editorcore; + var editor= this.editor; + + var children = []; + var btn = function(id,cmd , toggle, handler, html){ + + var event = toggle ? 'toggle' : 'click'; + + var a = { + size : 'sm', + xtype: 'Button', + xns: Roo.bootstrap, + //glyphicon : id, + fa: id, + cmd : id || cmd, + enableToggle:toggle !== false, + html : html || '', + pressed : toggle ? false : null, + listeners : {} + }; + a.listeners[toggle ? 'toggle' : 'click'] = function() { + handler ? handler.call(_this,this) :_this.onBtnClick.call(_this, cmd || id); + }; + children.push(a); + return a; + } + + // var cb_box = function... + + var style = { + xtype: 'Button', + size : 'sm', + xns: Roo.bootstrap, + fa : 'font', + //html : 'submit' + menu : { + xtype: 'Menu', + xns: Roo.bootstrap, + items: [] + } + }; + Roo.each(this.formats, function(f) { + style.menu.items.push({ + xtype :'MenuItem', + xns: Roo.bootstrap, + html : '<'+ f+' style="margin:2px">'+f +'', + tagname : f, + listeners : { + click : function() + { + editorcore.insertTag(this.tagname); + editor.focus(); + } + } + + }); + }); + children.push(style); + + btn('bold',false,true); + btn('italic',false,true); + btn('align-left', 'justifyleft',true); + btn('align-center', 'justifycenter',true); + btn('align-right' , 'justifyright',true); + btn('link', false, false, function(btn) { + //Roo.log("create link?"); + var url = prompt(this.createLinkText, this.defaultLinkValue); + if(url && url != 'http:/'+'/'){ + this.editorcore.relayCmd('createlink', url); + } + }), + btn('list','insertunorderedlist',true); + btn('pencil', false,true, function(btn){ + Roo.log(this); + this.toggleSourceEdit(btn.pressed); + }); + + if (this.editor.btns.length > 0) { + for (var i = 0; i{0}', this.placeholder || ''); + + } else { + this.markdownEl.dom.innerHTML = Roo.Markdown.toHtml(Roo.util.Format.htmlEncode(this.getValue())); + } + this.markdownEl.on('click', this.toggleTextEdit, this); + this.on('blur', this.toggleTextEdit, this); + this.on('specialkey', this.resizeTextArea, this); + }, + + toggleTextEdit : function() + { + var sh = this.markdownEl.getHeight(); + this.inputEl().addClass('d-none'); + this.markdownEl.addClass('d-none'); + if (!this.editing) { + // show editor? + this.inputEl().setHeight(Math.min(500, Math.max(sh,(this.getValue().split("\n").length+1) * 30))); + this.inputEl().removeClass('d-none'); + this.inputEl().focus(); + this.editing = true; + return; + } + // show showdown... + this.updateMarkdown(); + this.markdownEl.removeClass('d-none'); + this.editing = false; + return; + }, + updateMarkdown : function() + { + if (this.getValue() == '') { + this.markdownEl.dom.innerHTML = String.format('{0}', this.placeholder || ''); + return; + } + + this.markdownEl.dom.innerHTML = Roo.Markdown.toHtml(Roo.util.Format.htmlEncode(this.getValue())); + }, + + resizeTextArea: function () { + + var sh = 100; + Roo.log([sh, this.getValue().split("\n").length * 30]); + this.inputEl().setHeight(Math.min(500, Math.max(sh, (this.getValue().split("\n").length +1) * 30))); + }, + setValue : function(val) + { + Roo.bootstrap.form.TextArea.prototype.setValue.call(this,val); + if (!this.editing) { + this.updateMarkdown(); + } + + }, + focus : function() + { + if (!this.editing) { + this.toggleTextEdit(); + } + + } + + +}); \ No newline at end of file diff --git a/Roo/bootstrap/form/deprecated.js b/Roo/bootstrap/form/deprecated.js new file mode 100644 index 0000000000..6bd5d269f8 --- /dev/null +++ b/Roo/bootstrap/form/deprecated.js @@ -0,0 +1,23 @@ +// old names for form elements +Roo.bootstrap.Form = Roo.bootstrap.form.Form.Form; +Roo.bootstrap.Input = Roo.bootstrap.form.Form.Input; +Roo.bootstrap.TextArea = Roo.bootstrap.form.Form.TextArea; +Roo.bootstrap.TriggerField = Roo.bootstrap.form.Form.TriggerField; +Roo.bootstrap.ComboBox = Roo.bootstrap.form.Form.ComboBox; +Roo.bootstrap.DateField = Roo.bootstrap.form.Form.DateField; +Roo.bootstrap.TimeField = Roo.bootstrap.form.Form.TimeField; +Roo.bootstrap.MonthField = Roo.bootstrap.form.Form.MonthField; +Roo.bootstrap.CheckBox = Roo.bootstrap.form.Form.CheckBox; +Roo.bootstrap.Radio = Roo.bootstrap.form.Form.Radio; +Roo.bootstrap.RadioSet = Roo.bootstrap.form.Form.RadioSet; +Roo.bootstrap.SecurePass = Roo.bootstrap.form.Form.SecurePass; +Roo.bootstrap.FieldLabel = Roo.bootstrap.form.Form.FieldLabel; +Roo.bootstrap.DateSplitField= Roo.bootstrap.form.Form.DateSplitField; +Roo.bootstrap.NumberField = Roo.bootstrap.form.Form.NumberField; +Roo.bootstrap.PhoneInput = Roo.bootstrap.form.Form.PhoneInput; +Roo.bootstrap.PhoneInputData= Roo.bootstrap.form.Form.PhoneInputData; +Roo.bootstrap.MoneyField = Roo.bootstrap.form.Form.MoneyField; +Roo.bootstrap.HtmlEditor = Roo.bootstrap.form.Form.HtmlEditor; +Roo.bootstrap.HtmlEditor.ToolbarStandard = Roo.bootstrap.form.Form.HtmlEditorToolbarStandard; +Roo.bootstrap.Markdown = Roo.bootstrap.form.Markdown +Roo.bootstrap.CardUploader = Roo.bootstrap.form.CardUploader \ No newline at end of file diff --git a/Roo/bootstrap/form/namespace.js b/Roo/bootstrap/form/namespace.js new file mode 100644 index 0000000000..53e2927a21 --- /dev/null +++ b/Roo/bootstrap/form/namespace.js @@ -0,0 +1 @@ +Roo.bootstrap.form.Form = {}; \ No newline at end of file diff --git a/Roo/bootstrap/layout/namespace.js b/Roo/bootstrap/layout/namespace.js new file mode 100644 index 0000000000..8968dd069c --- /dev/null +++ b/Roo/bootstrap/layout/namespace.js @@ -0,0 +1 @@ +Roo.bootstrap.layout = {}; \ No newline at end of file diff --git a/Roo/bootstrap/menu/deprecated.js b/Roo/bootstrap/menu/deprecated.js new file mode 100644 index 0000000000..ef570462ce --- /dev/null +++ b/Roo/bootstrap/menu/deprecated.js @@ -0,0 +1,5 @@ +// deprciated +Roo.bootstrap.Menu = Roo.bootstrap.menu.Menu; +Roo.bootstrap.MenuItem = Roo.bootstrap.menu.Item; +Roo.bootstrap.MenuSeparator = Roo.bootstrap.menu.Separator + diff --git a/Roo/bootstrap/nav/deprecated.js b/Roo/bootstrap/nav/deprecated.js new file mode 100644 index 0000000000..15e548c661 --- /dev/null +++ b/Roo/bootstrap/nav/deprecated.js @@ -0,0 +1,13 @@ +// depricated. +Roo.bootstrap.Navbar = Roo.bootstrap.nav.Bar; +Roo.bootstrap.NavGroup = Roo.bootstrap.nav.Group; +Roo.bootstrap.NavHeaderbar = Roo.bootstrap.nav.Headerbar; +Roo.bootstrap.NavItem = Roo.bootstrap.nav.Item; + +Roo.bootstrap.NavProgressBar = Roo.bootstrap.nav.ProgressBar; +Roo.bootstrap.NavProgressBarItem = Roo.bootstrap.nav.ProgressBarItem; + +Roo.bootstrap.NavSidebar = Roo.bootstrap.nav.Sidebar; +Roo.bootstrap.NavSidebarItem = Roo.bootstrap.nav.SidebarItem; + +Roo.bootstrap.NavSimplebar = Roo.bootstrap.nav.Simplebar; \ No newline at end of file diff --git a/Roo/bootstrap/panel/namespace.js b/Roo/bootstrap/panel/namespace.js new file mode 100644 index 0000000000..0fc31b4189 --- /dev/null +++ b/Roo/bootstrap/panel/namespace.js @@ -0,0 +1 @@ +Roo.bootstrap.panel = {}; \ No newline at end of file