ImageGrid/ui (gen4)/lib/widget/browse2.html
Alex A. Naanou 10f6cbf651 tweaking...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
2019-06-26 19:41:42 +03:00

297 lines
6.4 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 foe some reason the shadows here are BELLOW the content... */
.browse-widget>.list {
box-shadow:
0 50px 10px -50px gray inset,
0 -50px 10px -50px gray inset;
}
.item.path .text:before {
content: "/";
}
/*
.browse-widget .list .item .button.toggle-collapse {
float: left;
}
*/
/* 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>
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('path', {
id:'selected_path',
cls: 'path',
})
make.Separator()
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('<img src="../../experiments/grayscale.jpg">',
//make($('<img src="../../experiments/grayscale.jpg">')[0],
make($('<img src="../../experiments/grayscale.jpg">'),
{
alt: 'image item example'
})
})),
])
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: [
['&ndash;',
'buttonAction: item button focused -- example button action...'],
['&square;',
function(){ console.log('BUTTON:', ...arguments) },
{ keys: 'r' }],
'ToggleCollapse',
'ToggleDisabled',
],
})
// XXX EXPEREMENT -- need to wrap this into partial .update(..)
.focus(function(){
var e = this.get({id: 'selected_path'})
e.value = this.pathArray
this.renderItem(e) })
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 : -->