mirror of
				https://github.com/flynx/ImageGrid.git
				synced 2025-10-29 18:30:09 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			306 lines
		
	
	
		
			6.2 KiB
		
	
	
	
		
			HTML
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			306 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) }],
 | |
| 		],
 | |
| 	})
 | |
| 
 | |
| 	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 : -->
 |