UNPKG

ionic-angular

Version:

[![Circle CI](https://circleci.com/gh/driftyco/ionic.svg?style=svg)](https://circleci.com/gh/driftyco/ionic)

71 lines (66 loc) 2.19 kB
var ITEM_TPL_DELETE_BUTTON = '<div class="item-left-edit item-delete enable-pointer-events">' + '</div>'; /** * @ngdoc directive * @name ionDeleteButton * @parent ionic.directive:ionItem * @module ionic * @restrict E * Creates a delete button inside a list item, that is visible when the * {@link ionic.directive:ionList ionList parent's} `show-delete` evaluates to true or * `$ionicListDelegate.showDelete(true)` is called. * * Takes any ionicon as a class. * * See {@link ionic.directive:ionList} for a complete example & explanation. * * @usage * * ```html * <ion-list show-delete="shouldShowDelete"> * <ion-item> * <ion-delete-button class="ion-minus-circled"></ion-delete-button> * Hello, list item! * </ion-item> * </ion-list> * <ion-toggle ng-model="shouldShowDelete"> * Show Delete? * </ion-toggle> * ``` */ IonicModule .directive('ionDeleteButton', function() { function stopPropagation(ev) { ev.stopPropagation(); } return { restrict: 'E', require: ['^^ionItem', '^?ionList'], //Run before anything else, so we can move it before other directives process //its location (eg ngIf relies on the location of the directive in the dom) priority: Number.MAX_VALUE, compile: function($element, $attr) { //Add the classes we need during the compile phase, so that they stay //even if something else like ngIf removes the element and re-addss it $attr.$set('class', ($attr['class'] || '') + ' button icon button-icon', true); return function($scope, $element, $attr, ctrls) { var itemCtrl = ctrls[0]; var listCtrl = ctrls[1]; var container = jqLite(ITEM_TPL_DELETE_BUTTON); container.append($element); itemCtrl.$element.append(container).addClass('item-left-editable'); //Don't bubble click up to main .item $element.on('click', stopPropagation); init(); $scope.$on('$ionic.reconnectScope', init); function init() { listCtrl = listCtrl || $element.controller('ionList'); if (listCtrl && listCtrl.showDelete()) { container.addClass('visible active'); } } }; } }; });