mirror of
https://github.com/flynx/ImageGrid.git
synced 2025-10-29 02:10:08 +00:00
308 lines
6.2 KiB
HTML
Executable File
308 lines
6.2 KiB
HTML
Executable File
<!DOCTYPE html>
|
|
<html>
|
|
<link rel="stylesheet" href="../../css/widget/browse.css">
|
|
<link rel="stylesheet" href="../../css/fonts.css">
|
|
|
|
<meta name="viewport" content="width=device-width">
|
|
|
|
<style>
|
|
|
|
body {
|
|
font-family: OpenSans, sans-serif;
|
|
}
|
|
|
|
.container {
|
|
position: absolute;
|
|
}
|
|
|
|
|
|
.browse-widget {
|
|
user-select: none;
|
|
}
|
|
.browse-widget:not(.flat) .list :focus {
|
|
outline: none;
|
|
}
|
|
|
|
|
|
/* XXX move these to the main CSS */
|
|
.browse-widget:not(.flat) .list div:not(.not-traversable) .text:after {
|
|
content: "";
|
|
}
|
|
/* XXX this needs to be the last .text item only */
|
|
.browse-widget:not(.flat) .list .traversable .text:after {
|
|
content: "/" !important;
|
|
}
|
|
|
|
/* selection... */
|
|
.browse-widget:not(.flat) .list .selected {
|
|
color: yellow;
|
|
background: none;
|
|
}
|
|
.browse-widget:not(.flat) .list .focused {
|
|
background: rgba(0, 0, 0, 0.08);
|
|
}
|
|
|
|
/* XXX not sure about this... */
|
|
.browse-widget .list .list {
|
|
overflow: visible;
|
|
}
|
|
|
|
|
|
.browse-widget .list .text .key-hint {
|
|
text-decoration-skip-ink: none;
|
|
}
|
|
|
|
|
|
/* XXX stub...
|
|
.browse-widget:not(.flat) .list .text:first-child:before {
|
|
display: inline-block;
|
|
width: 5pt;
|
|
padding-right: 3pt;
|
|
content: " ";
|
|
}
|
|
.browse-widget:not(.flat) .list .traversable .text:first-child:before {
|
|
}
|
|
.browse-widget:not(.flat) .list .traversable:not(.collapsed) .text:first-child:before {
|
|
content: "-";
|
|
}
|
|
.browse-widget:not(.flat) .list .traversable.collapsed .text:first-child:before {
|
|
content: "+";
|
|
}
|
|
*/
|
|
|
|
|
|
/* scrollbar setup... */
|
|
.browse-widget ::-webkit-scrollbar {
|
|
width: 10px;
|
|
height: 10px;
|
|
}
|
|
.browse-widget ::-webkit-scrollbar-button {
|
|
display: none;
|
|
}
|
|
.browse-widget ::-webkit-scrollbar-track {
|
|
}
|
|
.browse-widget ::-webkit-scrollbar-track-piece {
|
|
background: transparent;
|
|
}
|
|
.browse-widget ::-webkit-scrollbar-track-piece {
|
|
background: rgba(0, 0, 0, 0.05);
|
|
}
|
|
.browse-widget ::-webkit-scrollbar-thumb {
|
|
background: rgba(0, 0, 0, 0.15);
|
|
}
|
|
.browse-widget ::-webkit-scrollbar-thumb:hover {
|
|
background: rgba(0, 0, 0, 0.3);
|
|
}
|
|
.browse-widget ::-webkit-scrollbar-corner {
|
|
}
|
|
.browse-widget ::-webkit-resizer {
|
|
}
|
|
|
|
|
|
|
|
|
|
</style>
|
|
|
|
<script src="../../ext-lib/jquery.js"></script>
|
|
<script src="../../ext-lib/jquery-ui.js"></script>
|
|
|
|
<script src="../jli.js"></script>
|
|
|
|
<script src="../../ext-lib/require.js"></script>
|
|
<script src="../../cfg/requirejs.js"></script>
|
|
|
|
|
|
<!--script src="browse-dialog.js"></script-->
|
|
|
|
<script>
|
|
|
|
var TREE = {
|
|
dir_a: {},
|
|
'dir b': {
|
|
file1: 'this is a file',
|
|
file2: 'this is a file',
|
|
file3: 'this is a file',
|
|
},
|
|
dir_c: {
|
|
file1: 'this is a file',
|
|
dir_b: {
|
|
file1: 'this is a file',
|
|
},
|
|
dir_c: {},
|
|
dir_d: {},
|
|
dir_e: {},
|
|
dir_f: {},
|
|
dir_g: {},
|
|
dir_h: {},
|
|
dir_i: {},
|
|
dir_j: {},
|
|
dir_k: {},
|
|
dir_l: {},
|
|
dir_m: {},
|
|
dir_o: {},
|
|
dir_p: {},
|
|
dir_q: {},
|
|
dir_r: {},
|
|
dir_s: {},
|
|
dir_t: {},
|
|
dir_u: {},
|
|
},
|
|
file: 'this is a file',
|
|
}
|
|
// add some recursion for testing...
|
|
TREE.dir_d = TREE.dir_c.dir_b
|
|
TREE.dir_a.tree = TREE
|
|
TREE.dir_c.tree = TREE
|
|
TREE.dir_c.dir_b.tree = TREE
|
|
|
|
|
|
|
|
//---
|
|
|
|
var use_disabled = true
|
|
var show_files = false
|
|
|
|
requirejs.config({
|
|
paths: {
|
|
'lib/object': '../../node_modules/ig-object/object',
|
|
'lib/actions': '../../node_modules/ig-actions/actions',
|
|
'lib/features': '../../node_modules/ig-features/features',
|
|
'lib/walk': '../../node_modules/generic-walk/walk',
|
|
//'lib/keyboard': '../../node_modules/ig-keyboard/keyboard',
|
|
},
|
|
map: {
|
|
'*': {
|
|
'../object': 'lib/object',
|
|
},
|
|
},
|
|
})
|
|
|
|
requirejs([
|
|
'../util',
|
|
'../keyboard',
|
|
'lib/object',
|
|
'../toggler',
|
|
'./browse2',
|
|
], function(u, k, o, t, br){
|
|
util = u
|
|
keyboard = k
|
|
object = o
|
|
toggler = t
|
|
browser = br
|
|
|
|
|
|
// XXX split this into several dialogues, show each and then combine...
|
|
dialog = browser.Browser(function(make){
|
|
make(['list', 'of', 'text'])
|
|
make.group(
|
|
make('$group item 0 (open event)',
|
|
function(){ console.log('##', ...arguments) }),
|
|
'group item 1 (bare)')
|
|
// XXX Q: should we show only one if multiple lines are in sequence???
|
|
make('---')
|
|
// embeded browser...
|
|
make(browser.Browser(function(make){
|
|
make('inlined browser item 0 (open/menu events)', {
|
|
open: function(){ console.log('!!! OPEN', ...arguments) },
|
|
menu: function(){ console.log('!!! MENU', ...arguments) },
|
|
})
|
|
make(1)
|
|
make(2)
|
|
}))
|
|
// basic nested list...
|
|
make.nest('$nested', [
|
|
make('mo$o', {disabled: true}),
|
|
2,
|
|
// XXX this is not supported by .map(..)...
|
|
make.nest('$ne$sted', browser.Browser(function(make){
|
|
make('ab')
|
|
})),
|
|
])
|
|
make('in between two $subtrees...')
|
|
// nested browser...
|
|
make.nest('B',
|
|
browser.Browser(function(make){
|
|
make('xx')
|
|
make.nest('C', browser.Browser(function(make){
|
|
make('aaa')
|
|
make.nest('D', browser.Browser(function(make){
|
|
make('a')
|
|
make('---')
|
|
make('b')
|
|
}))
|
|
make('bbb', {buttons: [
|
|
['test', 'focus: "parent"'],
|
|
]})
|
|
make('bbb')
|
|
}))
|
|
}), {
|
|
//collapsed: true,
|
|
// XXX this does not appear to survive attaching an item
|
|
// to the document...
|
|
open: function(e){
|
|
e.preventDefault()
|
|
console.log('test: open: default prevented...') },
|
|
//cls: ['heading'],
|
|
})
|
|
|
|
make.Separator()
|
|
|
|
make.nest(
|
|
'scroll testing',
|
|
(new Array(100))
|
|
.fill(1)
|
|
.map(function(_, i){
|
|
return make(i) }))
|
|
|
|
}, {
|
|
itemButtons: [
|
|
['–',
|
|
'buttonAction: item button focused -- example button action...'],
|
|
['□',
|
|
function(){ console.log('BUTTON:', ...arguments) }],
|
|
'ToggleCollapse',
|
|
'ToggleDisabled',
|
|
],
|
|
})
|
|
|
|
dialog.container = $('.container').first()[0]
|
|
|
|
// button handler...
|
|
dialog.buttonAction = function(item, button, focused){
|
|
console.log(`BUTTON "${button}":`, item, '-- focus at:', focused) }
|
|
|
|
dialog
|
|
.update()
|
|
.focus()
|
|
|
|
//$('.container').first().append(dialog.render())
|
|
})
|
|
|
|
$(function(){
|
|
|
|
$('.container')
|
|
.draggable({ cancel: ".path .dir, .list div" })
|
|
})
|
|
|
|
|
|
|
|
</script>
|
|
|
|
<body>
|
|
|
|
<div class="container tree">
|
|
</div>
|
|
|
|
<div class="container flat">
|
|
</div>
|
|
|
|
<div class="container flat2">
|
|
</div>
|
|
|
|
<div class="container pathlist">
|
|
</div>
|
|
|
|
</body>
|
|
</html>
|
|
<!-- vim:set ts=4 sw=4 : -->
|