diff --git a/examples/forms/file_selection/css/example.css b/examples/forms/file_selection/css/example.css new file mode 100644 index 00000000..4148b927 --- /dev/null +++ b/examples/forms/file_selection/css/example.css @@ -0,0 +1,5 @@ +.OxSplitPanel .OxFileButton, +.OxSplitPanel .OxFileInput { + position: absolute; + left: 16px; +} \ No newline at end of file diff --git a/examples/forms/file_selection/index.html b/examples/forms/file_selection/index.html index 82320864..3e0cdeb3 100644 --- a/examples/forms/file_selection/index.html +++ b/examples/forms/file_selection/index.html @@ -5,6 +5,7 @@ + diff --git a/examples/forms/file_selection/js/example.js b/examples/forms/file_selection/js/example.js index 8661b62f..15bcbc3f 100644 --- a/examples/forms/file_selection/js/example.js +++ b/examples/forms/file_selection/js/example.js @@ -1,17 +1,97 @@ /* -... +This examples shows how to do file selection — usually for upload — +in Ox.UI. */ +'use strict'; +/* +Load the UI module. +*/ Ox.load('UI', function() { - var $menu = Ox.MainMenu({ + var $elements = [ + /* + Ox.FileButton creates a simple button. It has the following options: +
+            disabled
+                If true, the button is disabled
+            image
+                Symbol name (if type is 'image'),
+                default is 'file' or 'files'
+                (depending on maxFiles)
+            maxFiles
+                Maximum number of files,
+                default is -1 (unlimited)
+            maxSize
+                Maximum total size in bytes,
+                default is -1 (unlimited)
+            title
+                Button title (if type is 'text')
+                and tooltip text
+            type
+                Type, either 'text' or 'image',
+                default is 'text'
+            width
+                Width in px (if type is 'text')
+            
+ Ox.FileButton fires a `click` event (not on click, like Ox.Button, + but once the user has selected one or more files) that we can bind + to like this: +
+            $fileButton.bindEvent({
+                click: function(data) {
+                    Ox.print(data.files);
+                }
+            })
+            
+ We create two image buttons and two text buttons: one of each to + select a single file, one for multiple files. + */ + Ox.FileButton({ + maxFiles: 1, + title: 'Select File...', + type: 'image' + }), + Ox.FileButton({ + title: 'Select Files...', + type: 'image' + }), + Ox.FileButton({ + maxFiles: 1, + title: 'Select File...', + width: 128 + }), + Ox.FileButton({ + title: 'Select Files...', + width: 128 + }), + /* + ... + */ + Ox.FileInput({ + disabled: true, + maxFiles: 1, + maxSize: 1000000, + width: 256 + }), + Ox.FileInput({ + maxSize: 1000000, + width: 256 + }) + ], + /* + A basic menu item looks like `{id: 'id', title: 'Title'}`. By adding a + `file` property (which takes the same `maxFiles`, `maxSize` and `width` + options as Ox.FileButton), ... + */ + $menu = Ox.MainMenu({ menus: [ {id: 'file', title: 'File', items: [ {id: 'file', title: 'Select File...', file: { - maxFiles: 1, width: 96 + maxFiles: 1, width: 80 }}, {id: 'files', title: 'Select Files...', file: { - width: 96 + width: 80 }} ]} ] @@ -22,41 +102,7 @@ Ox.load('UI', function() { openDialog(data); } }), - $main = Ox.Element() - .append( - Ox.FileButton({ - maxFiles: 1, - title: 'Select File...', - width: 128 - }) - .css({position: 'absolute', left: '16px', top: '16px'}) - .bindEvent({click: showEvent}) - ) - .append( - Ox.FileButton({ - title: 'Select Files...', - width: 128 - }) - .css({position: 'absolute', left: '16px', top: '48px'}) - .bindEvent({click: showEvent}) - ) - .append( - Ox.FileInput({ - maxFiles: 1, - maxSize: 1000000, - width: 256 - }) - .css({position: 'absolute', left: '16px', top: '80px'}) - .bindEvent({click: showEvent}) - ) - .append( - Ox.FileInput({ - maxSize: 1000000, - width: 256 - }) - .css({position: 'absolute', left: '16px', top: '112px'}) - .bindEvent({click: showEvent}) - ), + $main = Ox.Element(), $list = Ox.TreeList({ data: {}, expanded: true, @@ -78,6 +124,18 @@ Ox.load('UI', function() { }) .appendTo(Ox.$body); + $elements.forEach(function($element, i) { + $element + .css({top: 16 + 32 * i + 'px'}) + .bindEvent( + $element.is('.OxFileButton') ? 'click' : 'change', showEvent + ) + .appendTo($main); + }); + + window.$elements = $elements; + window.$menu = $menu; + function openDialog(data) { var $button = Ox.Button({ id: 'close',