Ember-poetic-crud-mixins
To install:
ember install:addon ember-poetic-crud-mixins
This ember-cli addon provides a collection of mixins for performing crud in the Route. You can use these mixins like this:
// In your awesome-route.js:
import Ember from 'ember';
import { ActionBack } from 'ember-poetic-crud-mixins';
export default Ember.Route.extend(ActionBack, {
});
All mixins are in the root name space. These mixins are opinionated. Please read these code before you use them. They are very simple.
ActionBack
This mixin provide back action which use history back. You need to put this mixin into your application route, other mixins depend on it.
SingleModel
This mixin is the model method in a route. It will create a new record if params.id is new, otherwise it use store.find to get the record.
extra attributes in the route:
- modelName {required}
CleanSingleModelBeforeLeave
This mixin provides back and willTransition actions and will clean the model when the user confirms leaving without save.
extra attributes in the route:
- actions.confirmLeave { required }
- @param: {Function} callback. Use
callback(true)
to leave andcallback(false)
to stay. - @param: {String} message. Confirmation message generated for the record.
- @param: {Function} callback. Use
ActionSave
This mixin provides save action which taks a model as an argument. This action returns a Promise of record.
extra attributes in the route:
- routeAfterSave {optional, '<-' for back}
- actions.hideErrors { required }
- actions.showErrors { required }
- @param: {Object} error. The error object coming from record.save()
ActionDelete
This mixin provides delete action which taks a model as an argument.
extra attributes in the route:
- routeAfterDelete {optional, '<-' for back}
- actions.hideErrors { required }
- actions.showErrors { required }
- @param: error
- actions.confirmDelete { required }
- @param: {Function} callback. Use
callback(true)
to delete andcallback(false)
to cancel delete. callback returns a Promise of record. - @param: {String} message, Confirmation message generated for the record.
- @param: {Function} callback. Use
SingleCRUD
This mixin is a combination of SingleModel, CleanSingleModelBeforeLeave, ActionSave, and ActionDelete mixins.
TODO
- explan how to handle history back and crud.
- write tests, setup integration tests.