# j-CheckboxListExpert

> Perfekte Komponente für Checkboxlisten mit benutzerdefinierten Stilen. Es ist zwar etwas fortgeschritten, aber es lohnt sich auf jeden Fall!

Framework: jcomponent20
Product: jComponent 20 (jcomponent@20)
Language: de
Content-SHA256: 40ab8fce7537337c1779870d5742bae03b73e1db1311e951e5c6fe227cb338ba
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: components@910ed1a86f6e72b4f031d3ad0dc7844f9fc5cb8e
Review: not-recorded

Perfekte Komponente für Checkboxlisten mit benutzerdefinierten Stilen. Es ist zwar etwas fortgeschritten, aber es lohnt sich auf jeden Fall!


__Konfiguration__

- `label {String}` kann die Titelbeschriftung ändern
- `required {Boolean}` aktiviert `required` (Standard: `false`)
- `disabled {Boolean}` deaktiviert diese Steuerung (Standard: `false`)
- `type {String}` kann `number` enthalten (Standard: `string`)
- `class {String}` fügt eine Klasse in ein Element mit der Klasse `.ui-checkboxlistexpert-container` ein
- `datasource {String}` Pfad zur Datenquelle (muss ein Array oder ein Array von Objekten sein) oder __NEU__: `id|name,id|name`
- `value {String}` bestimmt einen Eigenschaftsnamen für den Wert (in der Datenquelle) (Standard: `id`)
- `disabledkey {String}` bestimmt einen Eigenschaftsnamen für das deaktivierte Element (in der Datenquelle) (Standard: `disabled`)
- __NEW__ `selector {String}` ein jQuery-Selektor für benutzerdefinierte Vorlagen (außerhalb der Komponente). Funktioniert wie `custom template` in [data-binding](https://wiki.totaljs.com/jcomponent/08-data-binding/)

__Gut zu wissen__

- Sie müssen **alle Stile** schreiben
- Beispielobjekt `{ name: 'My item', id: 1, disabled: false, classname: 'color-highlighted' }`
- Sie können `$index` und `$path` in der Vorlage verwenden

__Grundstile__

```css
.my-button { display: inline-block; padding: 20px 40px; margin-right: 10px; border: 1px solid gray; cursor: pointer; border-radius: 2px; position: relative; user-select: none; }
.my-button .checkbox { position: absolute; top: 10px; left: 10px; }
.my-button.selected .checkbox i:before { content: "\f14a"; font-weight: 900; }
.my-button:hover { border-color: #4285F4; }
.my-button.selected { color: white; background: #4285F4; border-color: rgba(0, 0, 0, 0.2); }
.my-button[data-disabled="1"] { background-color: #dcdcdc; color: gray; border-color: #dcdcdc; cursor: not-allowed; }
.ui-disabled .my-button .checkbox { color: #c3c3c3; }
.ui-disabled .my-button { background-color: #dcdcdc; color: gray; border-color: #dcdcdc; cursor: not-allowed; }
.ui-disabled .my-button:hover { background-color: #dcdcdc; color: gray; border-color: #dcdcdc; }
.ui-disabled .my-button.selected { border-color: gray; background: #efefef; color: #5a5a5a; }

/* Dark mode */
.ui-dark .my-button { border-color: 1px solid #404040; color: #adadad; }
.ui-dark .my-button.selected { color: white; }
.ui-dark .my-button[data-disabled="1"] { background-color: #525252; color: gray; border-color: #525252; }
.ui-dark .ui-disabled .my-button { background-color: #525252; color: gray; border-color: #525252; }
.ui-dark .ui-disabled .my-button:hover { background-color: #525252; color: gray; border-color: #525252; }
.ui-dark .ui-disabled .my-button.selected { border-color: rgba(0, 0, 0, 0.2); background: #969696; color: #ffffff; }

/* Large mode */
.ui-large .my-button { font-size: 16px; }
```

Verwenden Sie es mit `<ui-component name="checkboxlistexpert">`. Wenn die Komponente noch nicht geladen ist, lädt jComponent sie bei der ersten Verwendung von der Adresse in `DEF.fallback` herunter (standardmäßig das CDN Componentator). Autor: Denis Granec. Quelle: Componentator-Komponenten-Repository, MIT-Lizenz.

```html example.html
<style>
	.my-button { display: inline-block; padding: 20px 40px; margin-right: 10px; margin-bottom: 10px; border: 1px solid gray; cursor: pointer; border-radius: 2px; position: relative; user-select: none; }
	.my-button .checkbox { position: absolute; top: 10px; left: 10px; }
	.my-button.selected .checkbox i:before { content: "\f14a"; font-weight: 900; }
	.my-button:hover { border-color: #4285F4; }
	.my-button.selected { color: white; background: #4285F4; border-color: rgba(0, 0, 0, 0.2); }
	.my-button[data-disabled="1"] { background-color: #dcdcdc; color: gray; border-color: #dcdcdc; cursor: not-allowed; }
	.ui-disabled .my-button .checkbox { color: #c3c3c3; }
	.ui-disabled .my-button { background-color: #dcdcdc; color: gray; border-color: #dcdcdc; cursor: not-allowed; }
	.ui-disabled .my-button:hover { background-color: #dcdcdc; color: gray; border-color: #dcdcdc; }
	.ui-disabled .my-button.selected { border-color: gray; background: #efefef; color: #5a5a5a; }

	.ui-dark .my-button { border-color: 1px solid #404040; color: #adadad; }
	.ui-dark .my-button.selected { color: white; }
	.ui-dark .my-button[data-disabled="1"] { background-color: #525252; color: gray; border-color: #525252; }
	.ui-dark .ui-disabled .my-button { background-color: #525252; color: gray; border-color: #525252; }
	.ui-dark .ui-disabled .my-button:hover { background-color: #525252; color: gray; border-color: #525252; }
	.ui-dark .ui-disabled .my-button.selected { border-color: rgba(0, 0, 0, 0.2); background: #969696; color: #ffffff; }
	.ui-large .my-button { font-size: 16px; }
</style>

<ui-component name="checkboxlistexpert" path="model.framework" config="datasource:list;disabled:1;required:true;label:Your favorite frameworks;type:number" default="2">
	<script type="text/html">
		<div class="my-button">
			<div>{{ name }}</div>
		</div>
	</script>
</ui-component>
<hr>
<ui-component name="checkboxlistexpert" path="model.framework2" config="selector:#mybutton;datasource:list;required:true;label:Your favorite frameworks;type:number" default="0"></ui-component>
<script type="text/html" id="mybutton">
	<div class="my-button">
		<div class="checkbox"><i class="ti ti-square"></i></div>
		<div>{{ name }}</div>
	</div>
</script>

<script>
	var list = [{ name: 'Total.js', id: 1 }, { name: 'express', id: 2 }, { name: 'Hapi', id: 3, disabled: false }, { name: 'Koa', id: 4, disabled: true }, { name: 'Sails', id: 5 }, { name: 'Meteor', id: 6 }, { name: 'Adonis', id: 7 }, { name: 'Nest', id: 8 }];
</script>
```
