Add bower_components as it contains the resources used by github pages.
This commit is contained in:
8
bower_components/Sortable/meteor/example/.meteor/.finished-upgraders
vendored
Normal file
8
bower_components/Sortable/meteor/example/.meteor/.finished-upgraders
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
# This file contains information which helps Meteor properly upgrade your
|
||||
# app when you run 'meteor update'. You should check it into version control
|
||||
# with your project.
|
||||
|
||||
notices-for-0.9.0
|
||||
notices-for-0.9.1
|
||||
0.9.4-platform-file
|
||||
notices-for-facebook-graph-api-2
|
||||
1
bower_components/Sortable/meteor/example/.meteor/.gitignore
vendored
Normal file
1
bower_components/Sortable/meteor/example/.meteor/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
local
|
||||
7
bower_components/Sortable/meteor/example/.meteor/.id
vendored
Normal file
7
bower_components/Sortable/meteor/example/.meteor/.id
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
# This file contains a token that is unique to your project.
|
||||
# Check it into your repository along with the rest of this directory.
|
||||
# It can be used for purposes such as:
|
||||
# - ensuring you don't accidentally deploy one app on top of another
|
||||
# - providing package authors with aggregated statistics
|
||||
|
||||
ir0jg2douy3yo5mehw
|
||||
10
bower_components/Sortable/meteor/example/.meteor/packages
vendored
Normal file
10
bower_components/Sortable/meteor/example/.meteor/packages
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
# Meteor packages used by this project, one per line.
|
||||
#
|
||||
# 'meteor add' and 'meteor remove' will edit this file for you,
|
||||
# but you can also edit it by hand.
|
||||
|
||||
meteor-platform
|
||||
autopublish
|
||||
insecure
|
||||
rubaxa:sortable
|
||||
fezvrasta:bootstrap-material-design
|
||||
2
bower_components/Sortable/meteor/example/.meteor/platforms
vendored
Normal file
2
bower_components/Sortable/meteor/example/.meteor/platforms
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
browser
|
||||
server
|
||||
1
bower_components/Sortable/meteor/example/.meteor/release
vendored
Normal file
1
bower_components/Sortable/meteor/example/.meteor/release
vendored
Normal file
@@ -0,0 +1 @@
|
||||
METEOR@1.1.0.3
|
||||
53
bower_components/Sortable/meteor/example/.meteor/versions
vendored
Normal file
53
bower_components/Sortable/meteor/example/.meteor/versions
vendored
Normal file
@@ -0,0 +1,53 @@
|
||||
autopublish@1.0.3
|
||||
autoupdate@1.2.1
|
||||
base64@1.0.3
|
||||
binary-heap@1.0.3
|
||||
blaze@2.1.2
|
||||
blaze-tools@1.0.3
|
||||
boilerplate-generator@1.0.3
|
||||
callback-hook@1.0.3
|
||||
check@1.0.5
|
||||
dburles:mongo-collection-instances@0.3.4
|
||||
ddp@1.1.0
|
||||
deps@1.0.7
|
||||
ejson@1.0.6
|
||||
fastclick@1.0.3
|
||||
fezvrasta:bootstrap-material-design@0.3.0
|
||||
geojson-utils@1.0.3
|
||||
html-tools@1.0.4
|
||||
htmljs@1.0.4
|
||||
http@1.1.0
|
||||
id-map@1.0.3
|
||||
insecure@1.0.3
|
||||
jquery@1.11.3_2
|
||||
json@1.0.3
|
||||
lai:collection-extensions@0.1.4
|
||||
launch-screen@1.0.2
|
||||
livedata@1.0.13
|
||||
logging@1.0.7
|
||||
meteor@1.1.6
|
||||
meteor-platform@1.2.2
|
||||
minifiers@1.1.5
|
||||
minimongo@1.0.8
|
||||
mobile-status-bar@1.0.3
|
||||
mongo@1.1.0
|
||||
observe-sequence@1.0.6
|
||||
ordered-dict@1.0.3
|
||||
random@1.0.3
|
||||
reactive-dict@1.1.0
|
||||
reactive-var@1.0.5
|
||||
reload@1.1.3
|
||||
retry@1.0.3
|
||||
routepolicy@1.0.5
|
||||
rubaxa:sortable@1.2.1
|
||||
session@1.1.0
|
||||
spacebars@1.0.6
|
||||
spacebars-compiler@1.0.6
|
||||
templating@1.1.1
|
||||
tracker@1.0.7
|
||||
twbs:bootstrap@3.3.5
|
||||
ui@1.0.6
|
||||
underscore@1.0.3
|
||||
url@1.0.4
|
||||
webapp@1.2.0
|
||||
webapp-hashing@1.0.3
|
||||
59
bower_components/Sortable/meteor/example/README.md
vendored
Normal file
59
bower_components/Sortable/meteor/example/README.md
vendored
Normal file
@@ -0,0 +1,59 @@
|
||||
# RubaXa:Sortable Meteor demo
|
||||
|
||||
This demo showcases the two-way integration between the reorderable list
|
||||
widget [Sortable](https://github.com/RubaXa/Sortable/) and Meteor.js. Meteor
|
||||
Mongo collections are updated when items are added, removed or reordered, and
|
||||
the order is persisted.
|
||||
|
||||
It also shows list grouping and control over what lists can give or receive
|
||||
elements. You can only drag elements from the list to the left onto the list
|
||||
to the right.
|
||||
|
||||
|
||||
## Usage
|
||||
|
||||
The example uses the local package from the checkout, with the help of the run script:
|
||||
|
||||
### Windows
|
||||
|
||||
git clone https://github.com/RubaXa/Sortable.git
|
||||
cd Sortable
|
||||
# git checkout dev # optional
|
||||
meteor\example\run.bat
|
||||
|
||||
### Elsewhere
|
||||
|
||||
git clone https://github.com/RubaXa/Sortable.git
|
||||
cd Sortable
|
||||
# git checkout dev # optional
|
||||
meteor/example/run.sh
|
||||
|
||||
|
||||
## [Prior art](http://slides.com/dandv/prior-art)
|
||||
|
||||
### Differential
|
||||
|
||||
Differential wrote [a blog post on reorderable lists with
|
||||
Meteor](http://differential.com/blog/sortable-lists-in-meteor-using-jquery-ui) and
|
||||
[jQuery UI Sortable](http://jqueryui.com/sortable/). It served as inspiration
|
||||
for integrating [rubaxa:sortable](rubaxa.github.io/Sortable/),
|
||||
which uses the HTML5 native drag&drop API (not without [its
|
||||
limitations](https://github.com/RubaXa/Sortable/issues/106)).
|
||||
The reordering method used by the Differential example can lead to data loss
|
||||
though, because it calculates the new order of a dropped element as the
|
||||
arithmetic mean of the elements before and after it. This [runs into limitations
|
||||
of floating point precision](http://programmers.stackexchange.com/questions/266451/maintain-ordered-collection-by-updating-as-few-order-fields-as-possible)
|
||||
in JavaScript after <50 reorderings.
|
||||
|
||||
### Todos animated
|
||||
|
||||
http://todos-dnd-animated.meteor.com/ ([source](https://github.com/nleush/meteor-todos-sortable-animation))
|
||||
is based on old Meteor Blaze (back then Spark) API, and won't work with current versions.
|
||||
It does showcase some neat features, such as animation when collection elements
|
||||
are reordered by another client. It uses jQuery UI Sortable as well, which lacks
|
||||
some features vs. rubaxa:Sortable, e.g. text selection within the item.
|
||||
|
||||
## TODO
|
||||
|
||||
* Animation
|
||||
* Indication that an item is being edited
|
||||
57
bower_components/Sortable/meteor/example/client/define-object-type.css
vendored
Normal file
57
bower_components/Sortable/meteor/example/client/define-object-type.css
vendored
Normal file
@@ -0,0 +1,57 @@
|
||||
.glyphicon {
|
||||
vertical-align: baseline;
|
||||
font-size: 80%;
|
||||
margin-right: 0.5em;
|
||||
}
|
||||
|
||||
[class^="mdi-"], [class*=" mdi-"] {
|
||||
vertical-align: baseline;
|
||||
font-size: 90%;
|
||||
margin-right: 0.4em;
|
||||
}
|
||||
|
||||
.list-pair {
|
||||
display: flex; /* use the flexbox model */
|
||||
flex-direction: row;
|
||||
}
|
||||
.sortable {
|
||||
/* font-size: 2em;*/
|
||||
}
|
||||
|
||||
.sortable.source {
|
||||
/*background: #9FA8DA;*/
|
||||
flex: 0 0 auto;
|
||||
margin-right: 1em;
|
||||
cursor: move;
|
||||
cursor: -webkit-grabbing;
|
||||
}
|
||||
|
||||
.sortable.target {
|
||||
/*background: #3F51B5;*/
|
||||
flex: 1 1 auto;
|
||||
margin-left: 1em;
|
||||
}
|
||||
|
||||
.target .well {
|
||||
|
||||
}
|
||||
|
||||
.sortable-handle {
|
||||
cursor: move;
|
||||
cursor: -webkit-grabbing;
|
||||
}
|
||||
.sortable-handle.pull-right {
|
||||
margin-top: 0.3em;
|
||||
}
|
||||
|
||||
.sortable-ghost {
|
||||
opacity: 0.6;
|
||||
}
|
||||
|
||||
/* show the remove button on hover */
|
||||
.removable .close {
|
||||
display: none;
|
||||
}
|
||||
.removable:hover .close {
|
||||
display: block;
|
||||
}
|
||||
94
bower_components/Sortable/meteor/example/client/define-object-type.html
vendored
Normal file
94
bower_components/Sortable/meteor/example/client/define-object-type.html
vendored
Normal file
@@ -0,0 +1,94 @@
|
||||
<head>
|
||||
<title>Reactive RubaXa:Sortable for Meteor</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
{{> navbar}}
|
||||
|
||||
<div class="container">
|
||||
<div class="page-header">
|
||||
<h1>RubaXa:Sortable - reactive reorderable lists for Meteor</h1>
|
||||
<h2>Drag attribute types from the left to define an object type on the right</h2>
|
||||
<h3>Drag the <i class="sortable-handle mdi-action-view-headline"></i> handle to reorder elements</h3>
|
||||
</div>
|
||||
|
||||
{{> typeDefinition}}
|
||||
</div>
|
||||
</body>
|
||||
|
||||
<template name="typeDefinition">
|
||||
|
||||
<div class="row">
|
||||
<div class="list-pair col-sm-12">
|
||||
|
||||
<div class="sortable source list-group" id="types">
|
||||
{{#sortable items=types options=typesOptions}}
|
||||
<div class="list-group-item well well-sm">
|
||||
{{{icon}}} {{name}}
|
||||
</div>
|
||||
{{/sortable}}
|
||||
</div>
|
||||
|
||||
<div class="sortable target" id="object">
|
||||
{{#sortable items=attributes animation="100" handle=".sortable-handle" ghostClass="sortable-ghost" options=attributesOptions}}
|
||||
{{> sortableItemTarget}}
|
||||
{{/sortable}}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</template>
|
||||
|
||||
<template name="sortableItemTarget">
|
||||
<div data-id="{{order}}" class="sortable-item removable well well-sm">
|
||||
{{{icon}}}
|
||||
<i class="sortable-handle mdi-action-view-headline pull-right"></i>
|
||||
<span class="name">{{name}}</span>
|
||||
<span class="badge">{{order}}</span>
|
||||
<button type="button" class="close" data-dismiss="alert">
|
||||
<span aria-hidden="true">×</span><span class="sr-only">Close</span>
|
||||
</button>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
||||
<template name="navbar">
|
||||
<div class="navbar navbar-inverse">
|
||||
<div class="navbar-header">
|
||||
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-inverse-collapse">
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
<a class="navbar-brand" href="https://atmospherejs.com/rubaxa/sortable">RubaXa:Sortable</a>
|
||||
</div>
|
||||
<div class="navbar-collapse collapse navbar-inverse-collapse">
|
||||
<ul class="nav navbar-nav">
|
||||
<li class="active"><a href="http://rubaxa-sortable.meteor.com">Meteor Demo</a></li>
|
||||
<li><a href="https://rubaxa.github.io/Sortable/" target="_blank">Sortable standalone demo</a></li>
|
||||
<li class="dropdown">
|
||||
<a href="javascript:void(0)" class="dropdown-toggle" data-toggle="dropdown">Source <b class="caret"></b></a>
|
||||
<ul class="dropdown-menu">
|
||||
<li class="dropdown-header">GitHub</li>
|
||||
<li><a href="https://github.com/RubaXa/Sortable/tree/dev/meteor/example" target="_blank">This demo</a></li>
|
||||
<li><a href="https://github.com/RubaXa/Sortable/tree/dev/meteor" target="_blank">Meteor integration</a></li>
|
||||
<li><a href="https://github.com/RubaXa/Sortable" target="_blank">rubaxa/sortable</a></li>
|
||||
<li class="divider"></li>
|
||||
<li><a href="https://atmospherejs.com/rubaxa/sortable">Star this package on Atmosphere!</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<ul class="nav navbar-nav navbar-right">
|
||||
<li class="dropdown">
|
||||
<a href="javascript:void(0)" class="dropdown-toggle" data-toggle="dropdown">Resources <b class="caret"></b></a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="http://www.meteorpedia.com/read/Packaging_existing_Libraries">Packaging 3rd party libraries for Meteor</a></li>
|
||||
<li><a href="https://twitter.com/dandv">Author: @dandv</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
101
bower_components/Sortable/meteor/example/client/define-object-type.js
vendored
Normal file
101
bower_components/Sortable/meteor/example/client/define-object-type.js
vendored
Normal file
@@ -0,0 +1,101 @@
|
||||
// Define an object type by dragging together attributes
|
||||
|
||||
Template.typeDefinition.helpers({
|
||||
types: function () {
|
||||
return Types.find({}, { sort: { order: 1 } });
|
||||
},
|
||||
typesOptions: {
|
||||
sortField: 'order', // defaults to 'order' anyway
|
||||
group: {
|
||||
name: 'typeDefinition',
|
||||
pull: 'clone',
|
||||
put: false
|
||||
},
|
||||
sort: false // don't allow reordering the types, just the attributes below
|
||||
},
|
||||
|
||||
attributes: function () {
|
||||
return Attributes.find({}, {
|
||||
sort: { order: 1 },
|
||||
transform: function (doc) {
|
||||
doc.icon = Types.findOne({name: doc.type}).icon;
|
||||
return doc;
|
||||
}
|
||||
});
|
||||
},
|
||||
attributesOptions: {
|
||||
group: {
|
||||
name: 'typeDefinition',
|
||||
put: true
|
||||
},
|
||||
onAdd: function (event) {
|
||||
delete event.data._id; // Generate a new id when inserting in the Attributes collection. Otherwise, if we add the same type twice, we'll get an error that the ids are not unique.
|
||||
delete event.data.icon;
|
||||
event.data.type = event.data.name;
|
||||
event.data.name = 'Rename me (double click)'
|
||||
},
|
||||
// event handler for reordering attributes
|
||||
onSort: function (event) {
|
||||
console.log('Item %s went from #%d to #%d',
|
||||
event.data.name, event.oldIndex, event.newIndex
|
||||
);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
Template.sortableItemTarget.events({
|
||||
'dblclick .name': function (event, template) {
|
||||
// Make the name editable. We should use an existing component, but it's
|
||||
// in a sorry state - https://github.com/arillo/meteor-x-editable/issues/1
|
||||
var name = template.$('.name');
|
||||
var input = template.$('input');
|
||||
if (input.length) { // jQuery never returns null - http://stackoverflow.com/questions/920236/how-can-i-detect-if-a-selector-returns-null
|
||||
input.show();
|
||||
} else {
|
||||
input = $('<input class="form-control" type="text" placeholder="' + this.name + '" style="display: inline">');
|
||||
name.after(input);
|
||||
}
|
||||
name.hide();
|
||||
input.focus();
|
||||
},
|
||||
'blur input[type=text]': function (event, template) {
|
||||
// commit the change to the name, if any
|
||||
var input = template.$('input');
|
||||
input.hide();
|
||||
template.$('.name').show();
|
||||
// TODO - what is the collection here? We'll hard-code for now.
|
||||
// https://github.com/meteor/meteor/issues/3303
|
||||
if (this.name !== input.val() && this.name !== '')
|
||||
Attributes.update(this._id, {$set: {name: input.val()}});
|
||||
},
|
||||
'keydown input[type=text]': function (event, template) {
|
||||
if (event.which === 27) {
|
||||
// ESC - discard edits and keep existing value
|
||||
template.$('input').val(this.name);
|
||||
event.preventDefault();
|
||||
event.target.blur();
|
||||
} else if (event.which === 13) {
|
||||
// ENTER
|
||||
event.preventDefault();
|
||||
event.target.blur();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// you can add events to all Sortable template instances
|
||||
Template.sortable.events({
|
||||
'click .close': function (event, template) {
|
||||
// `this` is the data context set by the enclosing block helper (#each, here)
|
||||
template.collection.remove(this._id);
|
||||
// custom code, working on a specific collection
|
||||
if (Attributes.find().count() === 0) {
|
||||
Meteor.setTimeout(function () {
|
||||
Attributes.insert({
|
||||
name: 'Not nice to delete the entire list! Add some attributes instead.',
|
||||
type: 'String',
|
||||
order: 0
|
||||
})
|
||||
}, 1000);
|
||||
}
|
||||
}
|
||||
});
|
||||
2
bower_components/Sortable/meteor/example/model.js
vendored
Normal file
2
bower_components/Sortable/meteor/example/model.js
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
Types = new Mongo.Collection('types');
|
||||
Attributes = new Mongo.Collection('attributes');
|
||||
7
bower_components/Sortable/meteor/example/run.bat
vendored
Executable file
7
bower_components/Sortable/meteor/example/run.bat
vendored
Executable file
@@ -0,0 +1,7 @@
|
||||
@echo off
|
||||
REM Sanity check: make sure we're in the directory of the script
|
||||
set DIR=%~dp0
|
||||
cd %DIR%
|
||||
|
||||
set PACKAGE_DIRS=..\..\
|
||||
meteor run %*
|
||||
5
bower_components/Sortable/meteor/example/run.sh
vendored
Executable file
5
bower_components/Sortable/meteor/example/run.sh
vendored
Executable file
@@ -0,0 +1,5 @@
|
||||
# sanity check: make sure we're in the root directory of the example
|
||||
cd "$( dirname "$0" )"
|
||||
|
||||
# let Meteor find the local package
|
||||
PACKAGE_DIRS=../../ meteor run "$@"
|
||||
75
bower_components/Sortable/meteor/example/server/fixtures.js
vendored
Normal file
75
bower_components/Sortable/meteor/example/server/fixtures.js
vendored
Normal file
@@ -0,0 +1,75 @@
|
||||
Meteor.startup(function () {
|
||||
if (Types.find().count() === 0) {
|
||||
[
|
||||
{
|
||||
name: 'String',
|
||||
icon: '<span class="glyphicon glyphicon-tag" aria-hidden="true"></span>'
|
||||
},
|
||||
{
|
||||
name: 'Text, multi-line',
|
||||
icon: '<i class="mdi-communication-message" aria-hidden="true"></i>'
|
||||
},
|
||||
{
|
||||
name: 'Category',
|
||||
icon: '<span class="glyphicon glyphicon-list" aria-hidden="true"></span>'
|
||||
},
|
||||
{
|
||||
name: 'Number',
|
||||
icon: '<i class="mdi-image-looks-one" aria-hidden="true"></i>'
|
||||
},
|
||||
{
|
||||
name: 'Date',
|
||||
icon: '<span class="glyphicon glyphicon-calendar" aria-hidden="true"></span>'
|
||||
},
|
||||
{
|
||||
name: 'Hyperlink',
|
||||
icon: '<span class="glyphicon glyphicon-link" aria-hidden="true"></span>'
|
||||
},
|
||||
{
|
||||
name: 'Image',
|
||||
icon: '<span class="glyphicon glyphicon-picture" aria-hidden="true"></span>'
|
||||
},
|
||||
{
|
||||
name: 'Progress',
|
||||
icon: '<span class="glyphicon glyphicon-info-sign" aria-hidden="true"></span>'
|
||||
},
|
||||
{
|
||||
name: 'Duration',
|
||||
icon: '<span class="glyphicon glyphicon-time" aria-hidden="true"></span>'
|
||||
},
|
||||
{
|
||||
name: 'Map address',
|
||||
icon: '<i class="mdi-maps-place" aria-hidden="true"></i>'
|
||||
},
|
||||
{
|
||||
name: 'Relationship',
|
||||
icon: '<span class="glyphicon glyphicon-flash" aria-hidden="true"></span>'
|
||||
}
|
||||
].forEach(function (type, i) {
|
||||
Types.insert({
|
||||
name: type.name,
|
||||
icon: type.icon,
|
||||
order: i
|
||||
});
|
||||
}
|
||||
);
|
||||
console.log('Initialized attribute types.');
|
||||
}
|
||||
|
||||
if (Attributes.find().count() === 0) {
|
||||
[
|
||||
{ name: 'Name', type: 'String' },
|
||||
{ name: 'Created at', type: 'Date' },
|
||||
{ name: 'Link', type: 'Hyperlink' },
|
||||
{ name: 'Owner', type: 'Relationship' }
|
||||
].forEach(function (attribute, i) {
|
||||
Attributes.insert({
|
||||
name: attribute.name,
|
||||
type: attribute.type,
|
||||
order: i
|
||||
});
|
||||
}
|
||||
);
|
||||
console.log('Created sample object type.');
|
||||
}
|
||||
});
|
||||
3
bower_components/Sortable/meteor/example/server/sortable-collections.js
vendored
Normal file
3
bower_components/Sortable/meteor/example/server/sortable-collections.js
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
'use strict';
|
||||
|
||||
Sortable.collections = ['attributes'];
|
||||
Reference in New Issue
Block a user