Test Of Ordering Md-Chips
This is some sample code taken from https://material.angularjs.org/latest/demo/chips
I am trying to see if it can be ordered.
HTML
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular-animate.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular-route.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular-aria.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular-messages.min.js"></script>
<script src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/t-114/svg-assets-cache.js"></script>
<script src="https://cdn.gitcdn.link/cdn/angular/bower-material/v1.1.3/angular-material.js"></script>
<link rel="stylesheet" href="https://cdn.gitcdn.link/cdn/angular/bower-material/v1.1.3/angular-material.css">
<link rel="stylesheet" href="https://material.angularjs.org/1.1.3/docs.css">
<script src="https://cdn.jsdelivr.net/lodash/4.17.4/lodash.min.js"></script>
<div ng-controller="CustomInputDemoCtrl as ctrl" layout="column" ng-cloak="" class="chipsdemoCustomInputs" ng-app="MyApp">
<md-content class="md-padding" layout="column">
<br>
<h2 class="md-title">Use <code>md-autocomplete</code> to build an ordered set of chips.</h2>
<md-chips ng-model="ctrl.selectedVegetables" md-autocomplete-snap="" md-transform-chip="ctrl.transformChip($chip)" md-require-match="ctrl.autocompleteDemoRequireMatch" md-on-add="ctrl.onAddChip()">
<md-autocomplete md-selected-item="ctrl.selectedItem" md-search-text="ctrl.searchText" md-items="item in ctrl.querySearch(ctrl.searchText)" md-item-text="item.name" placeholder="Search for a vegetable">
<span md-highlight-text="ctrl.searchText">{{item.name}} :: {{item.type}}</span>
</md-autocomplete>
<md-chip-template>
<span>
<strong>{{$chip.name}}</strong>
<em>({{$chip.type}})</em>
</span>
</md-chip-template>
</md-chips>
<p>
<md-checkbox...
CSS
.chipsdemoCustomInputs md-content.autocomplete {
min-height: 200px; }
.chipsdemoCustomInputs input[type=number] {
width: 110px; }
.chipsdemoCustomInputs .veggie-option {
float: left;
width: 20%;
box-sizing: border-box;
padding: 0 8px; }
.chipsdemoCustomInputs .veggie-option .md-item-text {
padding: 8px;
background: #f0f0f0;
border-radius: 3px; }
.chipsdemoCustomInputs .veggie-option .md-item-text h3,
.chipsdemoCustomInputs .veggie-option .md-item-text p {
padding: 0;
margin: 0; }
/*
Copyright 2016 Google Inc. All Rights Reserved.
Use of this source code is governed by an MIT-style license that can be foundin the LICENSE file at http://material.angularjs.org/HEAD/license.
*/
JavaScript
(function () {
'use strict';
angular
.module('MyApp',['ngMaterial', 'ngMessages', 'material.svgAssetsCache'])
.controller('CustomInputDemoCtrl', DemoCtrl);
function DemoCtrl ($timeout, $q) {
var self = this;
self.readonly = false;
self.selectedItem = null;
self.searchText = null;
self.querySearch = querySearch;
self.vegetables = loadVegetables();
self.selectedVegetables = [];
self.numberChips = [];
self.numberChips2 = [];
self.numberBuffer = '';
self.autocompleteDemoRequireMatch = true;
self.transformChip = transformChip;
self.onAddChip = onAddChip;
/**
* Return the proper object when the append is called.
*/
function transformChip(chip) {
// If it is an object, it's already a known chip
if (angular.isObject(chip)) {
return chip;
}
// Otherwise, create a new one
return { name: chip, type: 'new' }
}
function onAddChip(){
console.log('Add chip');
self.selectedVegetables = _.sortBy(self.selectedVegetables, function(v){
return v.name;
});
}
/**
* Search for vegetables.
*/
function querySearch (query) {
var results = query ? self.vegetables.filter(createFilterFor(query)) : [];
return results;
}
/**
* Create filter function for a query string
*/
function createFilterFor(query) {
var lowercaseQuery = angular.lowercase(query);
return function filterFn(vegetable) {
return (vegetable._lowername.indexOf(lowercaseQuery) === 0) ||
(vegetable._lowertype.indexOf(lowercaseQuery) === 0);
};
}
function loadVegetables() {
var veggies = [
{
'name': 'Broccoli',
'type': 'Brassica'
},
{
'name': 'Cabbage',
'type': 'Brassica'
},
{
'name': 'Carrot',
'type': 'Umbelliferous'
},
{
'name': 'Lettuce',
...