Skip to content

Instantly share code, notes, and snippets.

@tylerbecks
Last active August 3, 2020 19:11
Show Gist options
  • Save tylerbecks/6d6bd2e67d86d9741249ec0246a28418 to your computer and use it in GitHub Desktop.
Save tylerbecks/6d6bd2e67d86d9741249ec0246a28418 to your computer and use it in GitHub Desktop.
Recursive Nested Checkboxes
import Component from '@glimmer/component';
export default class extends Component {
}
import Component from '@glimmer/component';
export default class extends Component {
items = [
{ label: 'foo', checked: true },
{ label: 'bar', checked: true, items: [
{ label: 'foobar', checked: true },
{ label: 'foobaz', checked: true, items: [
{ label: 'tyler', checked: true },
{ label: 'is', checked: true },
{ label: 'cool', checked: false }
]}
] },
{ label: 'baz', checked: false }
]
toggleCheckbox() {}
}
import Controller from '@ember/controller';
export default class ApplicationController extends Controller {
appName = 'Recursive Nested Checkboxes';
}
body {
margin: 12px 16px;
font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
font-size: 12pt;
}
/* .multi-select-columns {
&__head {
margin-top: item-spacing(2);
display: inline-block;
}
&__body {
padding: item-spacing(4 5);
display: flex;
flex-flow: row nowrap;
justify-content: flex-start;
align-items: stretch;
&--no-horizontal-padding {
padding-left: 0;
padding-right: 0;
}
}
&__single-column-container {
box-sizing: border-box;
overflow: hidden;
flex: 1 1 0;
&:nth-child(n + 2) {
border-left: $divider;
padding-left: item-spacing(6);
}
}
&__label {
text-overflow: ellipsis;
overflow: hidden;
&:nth-of-type(1) {
margin-top: 0;
}
}
}
*/
<h1>{{this.appName}}</h1>
<br>
<br>
<Wrapper />
<br>
<br>
{{outlet}}
<br>
<br>
{{#if @header}}
<header>
{{@header}}
</header>
{{/if}}
<ol>
{{#each @items as |item|}}
<li>
<input
id="bar"
type="checkbox"
checked={{item.checked}}
onchange={{@toggleCheckbox}}
name="my checkbox"
>
<label for="bar">{{item.label}}</label>
{{#if item.items}}
<NestedCheckboxes
@header={{item.header}}
@items={{item.items}}
/>
{{/if}}
</li>
{{/each}}
</ol>
<NestedCheckboxes
@header="Beau"
@items={{this.items}}
@toggleCheckbox={{this.toggleCheckbox}}
/>
{
"version": "0.17.1",
"EmberENV": {
"FEATURES": {},
"_TEMPLATE_ONLY_GLIMMER_COMPONENTS": false,
"_APPLICATION_TEMPLATE_WRAPPER": true,
"_JQUERY_INTEGRATION": true
},
"options": {
"use_pods": false,
"enable-testing": false
},
"dependencies": {
"jquery": "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.js",
"ember": "3.18.1",
"ember-template-compiler": "3.18.1",
"ember-testing": "3.18.1"
},
"addons": {
"@glimmer/component": "1.0.0"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment