# j-Templates

> Šablóny musia byť definované v elemente <script type='text/html' data-name='NAMEOFTEMPLATE'>Tangular template</script>. Tento komponent podporuje jednu špeciálnu šablónu s názvom prázdna, ktorá bude viditeľná, ak t

Framework: jcomponent20
Product: jComponent 20 (jcomponent@20)
Language: sk
Content-SHA256: 07945971f0e44a345157a0bb54c2e52ee0f3f5d39e20fa36e1d85b9f9c78d481
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: components@910ed1a86f6e72b4f031d3ad0dc7844f9fc5cb8e
Review: not-recorded

- viacero šablón
- drag & drop
- vlastné posuvníky
- kontextové menu

__Konfigurácia__:

- `template {String}` cesta k názvu šablóny sledovania
- `scrollbar {Boolean}` používa vlastný posuvník (predvolené: `true`)
- `scrolltop {Boolean}` sa posunie nahor, ak sa zmení zdroj (predvolené: `true`)
- `visibleY {Boolean}` zobrazuje posuvník Y (predvolené: `true`)
- `margin {Number}` zvislý okraj (predvolené: `0`)
- `parent {String}` Selektor jQuery na nadradený kontajner kvôli `scrollbar` (predvolené: `auto`)
- `contextmenu {String}` cesta k metóde `function(e)`, ak používateľ spustí kontextovú ponuku
- `emptyif {String}` podmienka pre zobrazenie prázdneho obsahu (predvolené: `!value || !value.length`)
- `drop {String}` cesta k metóde `function(e, target, selel)`
	- metóda sa vyhodnotí, ak používateľ zahodí niektoré súbory, potom je `selel` nedefinovaný
	- alebo používateľ pretiahne a pustí prvok s atribútom `draggable` (argument `selel`) do argumentu `target` (cieľ musí obsahovať triedu `droppable`)

Šablóny musia byť definované v prvku `<script type="text/html" data-name="NAME_OF_TEMPLATE">Tangular template</script>`. Tento komponent podporuje jednu špeciálnu šablónu s názvom `empty`, ktorá bude viditeľná, ak bude platná možnosť `emptyif`.

Použite ho so `<ui-component name="templates">`. Keď komponent ešte nie je načítaný, jComponent ho stiahne pri prvom použití z adresy v `DEF.fallback` (predvolene CDN Componentator). Autor: Peter Širka. Zdroj: úložisko komponentov Componentator, licencia MIT.

```html example.html
<div>
	<span data-name="list" onclick="changetemplate(this)" style="text-decoration:underline;cursor:pointer;margin-right:5px">List</span>
	<span data-name="icons" onclick="changetemplate(this)" style="text-decoration:underline;cursor:pointer">Icons</span>
</div>
<br />

<div style="width:500px;height:300px;border:1px solid #E0E0E0">
	<ui-component name="templates" path="myfiles" config="template:mytemplate;drop:template_drop">

		<script type="text/html" data-name="list">
			<div class="list padding">
				{{ foreach m in value }}
					<div draggable="true"{{ if m.isfolder }} class="droppable"{{ fi }}>{{ m.name }}</div>
				{{ end }}
			</div>
		</script>

		<script type="text/html" data-name="icons">
			<div class="icons padding">
				{{ foreach m in value }}
					<span draggable="true" class="mr5 {{ if m.isfolder }} droppable{{ fi }}"><i class="{{ m.icon }} mr5"></i>{{ m.name }}</span>
				{{ end }}
			</div>
		</script>

	</ui-component>

</div>
<br />
<div><b>Without multiple templates:</b></div>
<div style="width:500px;height:300px;border:1px solid #E0E0E0;margin-top:10px">
	<ui-component name="templates" path="myfiles">
		<script type="text/html">
			<div class="list padding">
				{{ foreach m in value }}
					<div draggable="true"{{ if m.isfolder }} class="droppable"{{ fi }}>{{ m.name }}</div>
				{{ end }}
			</div>
		</script>
	</ui-component>
</div>

<script>
	var myfiles = [{ icon: 'ti ti-folder', name: 'temp', isfolder: true }, { icon: 'ti ti-file', name: 'logo.png' }, { icon: 'ti ti-file', name: 'logo.svg' }];
	var mytemplate = 'list';

	function changetemplate(el) {
		SET('mytemplate', el.getAttribute('data-name'));
	}

	function template_drop(e, target, item) {

		console.log(e, target, item);
		// @target {jQuery element}

		if (item) {
			// @item {jQuery element}
		} else {
			var files = e.target.files || e.originalEvent.dataTransfer.files;
		}
	}

</script>
```
