Skip to content

Commit

Permalink
improve template
Browse files Browse the repository at this point in the history
  • Loading branch information
plantain-00 committed Feb 24, 2017
1 parent 81e96fd commit f9aee67
Show file tree
Hide file tree
Showing 9 changed files with 125 additions and 65 deletions.
7 changes: 5 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,12 @@
"description": "A reactjs, angular2 and vuejs tree component.",
"main": "index.js",
"scripts": {
"build": "tsc -p src && tsc -p demo && sass src/tree.scss > dist/tree.css && cleancss -o dist/tree.min.css dist/tree.css && webpack && npm run rev",
"build": "tsc -p src && tsc -p demo && sass src/tree.scss > dist/tree.css && cleancss -o dist/tree.min.css dist/tree.css && npm run minifier-template && webpack && npm run rev",
"lint": "tslint \"src/*.ts\" && stylelint \"src/*.scss\" --syntax scss",
"rev": "npm run clean-rev && rev-static",
"clean-rev": "rm -f demo/react.bundle-*.js demo/vue.bundle-*.js demo/angular.bundle-*.js",
"image": "image2base64-cli images/*.png images/*.gif --scss src/variables.scss"
"image": "image2base64-cli images/*.png images/*.gif --scss src/variables.scss",
"minifier-template": "html-minifier --collapse-whitespace --case-sensitive --collapse-inline-tag-whitespace src/vue-node.template.html -o dist/vue-node.html && html-minifier --collapse-whitespace --case-sensitive --collapse-inline-tag-whitespace src/vue-tree.template.html -o dist/vue-tree.html && html-minifier --collapse-whitespace --case-sensitive --collapse-inline-tag-whitespace src/angular-node.template.html -o dist/angular-node.html && html-minifier --collapse-whitespace --case-sensitive --collapse-inline-tag-whitespace src/angular-tree.template.html -o dist/angular-tree.html"
},
"repository": {
"type": "git",
Expand All @@ -27,11 +28,13 @@
"@angular/forms": "2.4.6",
"@angular/platform-browser": "2.4.6",
"@angular/platform-browser-dynamic": "2.4.6",
"@types/node": "7.0.5",
"@types/react": "15.0.6",
"@types/react-dom": "0.14.22",
"clean-css-cli": "4.0.7",
"core-js": "2.4.1",
"image2base64-cli": "1.0.3",
"raw-loader": "0.5.1",
"react": "15.4.2",
"react-dom": "15.4.2",
"rev-static": "1.3.1",
Expand Down
26 changes: 26 additions & 0 deletions src/angular-node.template.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
<li role="treeitem" [class]="nodeClassName">
<i class="tree-icon tree-ocl" role="presentation" (click)="ontoggle()"></i>
<a [class]="anchorClassName" href="javascript:void(0)"
[draggable]="draggable"
(click)="onchange()"
(dblclick)="ontoggle()"
(mouseenter)="hover(true)"
(mouseleave)="hover(false)"
[attr.data-path]="pathString">
<i *ngIf="checkbox" [class]="checkboxClassName" role="presentation"></i>
<i *ngIf="data.icon !== false" [class]="iconClassName" role="presentation"></i>
{{data.text}}
<div *ngIf="hasMarker" [class]="markerClassName">&#160;</div>
</a>
<ul *ngIf="data.children" role="group" class="tree-children">
<node *ngFor="let child of data.children; let i = index"
[data]="child"
[last]="i === data.children.length - 1"
[checkbox]="checkbox"
[path]="geChildPath(i)"
[draggable]="draggable"
(toggle)="ontoggle($event)"
(change)="onchange($event)">
</node>
</ul>
</li>
20 changes: 20 additions & 0 deletions src/angular-tree.template.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<div [class]="rootClassName" role="tree">
<ul class="tree-container-ul tree-children" role="group"
(drag)="ondrag($event)"
(dragstart)="ondragstart($event)"
(dragend)="ondragend($event)"
(dragover)="ondragover($event)"
(dragenter)="ondragenter($event)"
(dragleave)="ondragleave($event)"
(drop)="ondrop($event)">
<node *ngFor="let child of data; let i = index"
[data]="child"
[last]="i === data.length - 1"
[checkbox]="checkbox"
[path]="[i]"
[draggable]="draggable"
(toggle)="ontoggle($event)"
(change)="onchange($event)">
</node>
</ul>
</div>
32 changes: 2 additions & 30 deletions src/angular.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,22 +3,7 @@ import * as common from "./common";

@Component({
selector: "node",
template: `
<li role="treeitem" [class]="nodeClassName">
<i class="tree-icon tree-ocl" role="presentation" (click)="ontoggle()"></i><a [class]="anchorClassName" href="javascript:void(0)" [draggable]="draggable" (click)="onchange()" (dblclick)="ontoggle()" (mouseenter)="hover(true)" (mouseleave)="hover(false)" [attr.data-path]="pathString"><i *ngIf="checkbox" [class]="checkboxClassName" role="presentation"></i><i *ngIf="data.icon !== false" [class]="iconClassName" role="presentation"></i>{{data.text}}<div *ngIf="hasMarker" [class]="markerClassName">&#160;</div></a>
<ul *ngIf="data.children" role="group" class="tree-children">
<node *ngFor="let child of data.children; let i = index"
[data]="child"
[last]="i === data.children.length - 1"
[checkbox]="checkbox"
[path]="geChildPath(i)"
[draggable]="draggable"
(toggle)="ontoggle($event)"
(change)="onchange($event)">
</node>
</ul>
</li>
`,
template: require("raw-loader!./angular-node.html"),
})
export class NodeComponent {
@Input()
Expand Down Expand Up @@ -101,20 +86,7 @@ export class NodeComponent {

@Component({
selector: "tree",
template: `
<div [class]="rootClassName" role="tree">
<ul class="tree-container-ul tree-children" role="group" (drag)="ondrag($event)" (dragstart)="ondragstart($event)" (dragend)="ondragend($event)" (dragover)="ondragover($event)" (dragenter)="ondragenter($event)" (dragleave)="ondragleave($event)" (drop)="ondrop($event)">
<node *ngFor="let child of data; let i = index"
[data]="child"
[last]="i === data.length - 1"
[checkbox]="checkbox"
[path]="[i]"
[draggable]="draggable"
(toggle)="ontoggle($event)"
(change)="onchange($event)"></node>
</ul>
</div>
`,
template: require("raw-loader!./angular-tree.html"),
})
export class TreeComponent {
@Input()
Expand Down
2 changes: 1 addition & 1 deletion src/common.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ import "tslib";

export class DoubleClick {
clicked = false;
timer: null | number = null;
timer: null | NodeJS.Timer = null;

constructor(private timeout = 300) { }

Expand Down
25 changes: 23 additions & 2 deletions src/react.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,20 @@ class Node extends React.PureComponent<{
const markerElement = this.hasMarker ? <div className={this.markerClassName}>&#160;</div> : null;
return (
<li role="treeitem" className={this.nodeClassName}>
<i className="tree-icon tree-ocl" role="presentation" onClick={() => this.ontoggle()}></i><a className={this.anchorClassName} href="javascript:void(0)" draggable={this.props.draggable} onClick={() => this.onchange()} onDoubleClick={() => this.ontoggle()} onMouseEnter={() => this.hover(true)} onMouseLeave={() => this.hover(false)} data-path={this.pathString}>{checkboxElement}{iconElement}{this.props.data.text}{markerElement}</a>
<i className="tree-icon tree-ocl" role="presentation" onClick={() => this.ontoggle()}></i>
<a className={this.anchorClassName}
href="javascript:void(0)"
draggable={this.props.draggable}
onClick={() => this.onchange()}
onDoubleClick={() => this.ontoggle()}
onMouseEnter={() => this.hover(true)}
onMouseLeave={() => this.hover(false)}
data-path={this.pathString}>
{checkboxElement}
{iconElement}
{this.props.data.text}
{markerElement}
</a>
{childrenElement}
</li>
);
Expand Down Expand Up @@ -128,7 +141,15 @@ export class Tree extends React.PureComponent<{
));
return (
<div className={this.rootClassName} role="tree">
<ul className="tree-container-ul tree-children" role="group" onDrag={eventData => this.ondrag(eventData)} onDragStart={eventData => this.ondragstart(eventData)} onDragEnd={eventData => this.ondragend(eventData)} onDragOver={eventData => this.ondragover(eventData)} onDragEnter={(eventData) => this.ondragenter(eventData)} onDragLeave={eventData => this.ondragleave(eventData)} onDrop={eventData => this.ondrop(eventData)}>
<ul className="tree-container-ul tree-children"
role="group"
onDrag={eventData => this.ondrag(eventData)}
onDragStart={eventData => this.ondragstart(eventData)}
onDragEnd={eventData => this.ondragend(eventData)}
onDragOver={eventData => this.ondragover(eventData)}
onDragEnter={(eventData) => this.ondragenter(eventData)}
onDragLeave={eventData => this.ondragleave(eventData)}
onDrop={eventData => this.ondrop(eventData)}>
{childrenElement}
</ul>
</div >
Expand Down
26 changes: 26 additions & 0 deletions src/vue-node.template.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
<li role="treeitem" :class="nodeClassName">
<i class="tree-icon tree-ocl" role="presentation" @click="ontoggle()"></i>
<a :class="anchorClassName" href="javascript:void(0)"
:draggable="draggable"
@click="onchange()"
@dblclick="ontoggle()"
@mouseenter="hover(true)"
@mouseleave="hover(false)"
:data-path="pathString">
<i v-if="checkbox" :class="checkboxClassName" role="presentation"></i>
<i v-if="data.icon !== false" :class="iconClassName" role="presentation"></i>
{{data.text}}
<div v-if="hasMarker" :class="markerClassName">&#160;</div>
</a>
<ul v-if="data.children" role="group" class="tree-children">
<node v-for="(child, i) in data.children"
:data="child"
:last="i === data.children.length - 1"
:checkbox="checkbox"
:path="geChildPath(i)"
:draggable="draggable"
@toggle="ontoggle(arguments[0])"
@change="onchange(arguments[0])">
</node>
</ul>
</li>
20 changes: 20 additions & 0 deletions src/vue-tree.template.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<div :class="rootClassName" role="tree">
<ul class="tree-container-ul tree-children" role="group"
@drag="ondrag($event)"
@dragstart="ondragstart($event)"
@dragend="ondragend($event)"
@dragover="ondragover($event)"
@dragenter="ondragenter($event)"
@dragleave="ondragleave($event)"
@drop="ondrop($event)">
<node v-for="(child, i) in data"
:data="child"
:last="i === data.length - 1"
:checkbox="checkbox"
:path="[i]"
:draggable="draggable"
@toggle="ontoggle(arguments[0])"
@change="onchange(arguments[0])">
</node>
</ul>
</div>
32 changes: 2 additions & 30 deletions src/vue.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,22 +3,7 @@ import Component from "vue-class-component";
import * as common from "./common";

@Component({
template: `
<li role="treeitem" :class="nodeClassName">
<i class="tree-icon tree-ocl" role="presentation" @click="ontoggle()"></i><a :class="anchorClassName" href="javascript:void(0)" :draggable="draggable" @click="onchange()" @dblclick="ontoggle()" @mouseenter="hover(true)" @mouseleave="hover(false)" :data-path="pathString"><i v-if="checkbox" :class="checkboxClassName" role="presentation"></i><i v-if="data.icon !== false" :class="iconClassName" role="presentation"></i>{{data.text}}<div v-if="hasMarker" :class="markerClassName">&#160;</div></a>
<ul v-if="data.children" role="group" class="tree-children">
<node v-for="(child, i) in data.children"
:data="child"
:last="i === data.children.length - 1"
:checkbox="checkbox"
:path="geChildPath(i)"
:draggable="draggable"
@toggle="ontoggle(arguments[0])"
@change="onchange(arguments[0])">
</node>
</ul>
</li>
`,
template: require("raw-loader!./vue-node.html"),
props: ["data", "last", "checkbox", "path", "draggable"],
})
class Node extends Vue {
Expand Down Expand Up @@ -93,20 +78,7 @@ class Node extends Vue {
Vue.component("node", Node);

@Component({
template: `
<div :class="rootClassName" role="tree">
<ul class="tree-container-ul tree-children" role="group" @drag="ondrag($event)" @dragstart="ondragstart($event)" @dragend="ondragend($event)" @dragover="ondragover($event)" @dragenter="ondragenter($event)" @dragleave="ondragleave($event)" @drop="ondrop($event)">
<node v-for="(child, i) in data"
:data="child"
:last="i === data.length - 1"
:checkbox="checkbox"
:path="[i]"
:draggable="draggable"
@toggle="ontoggle(arguments[0])"
@change="onchange(arguments[0])"></node>
</ul>
</div>
`,
template: require("raw-loader!./vue-tree.html"),
props: ["data", "checkbox", "draggable"],
})
export class Tree extends Vue {
Expand Down

0 comments on commit f9aee67

Please sign in to comment.