An ember mixin providing proper support for Semantic UI modals.
The official ui-modal
component does not move the modal DOM element outside of the containing component,
thus creating numerous issues with positioning, z-index and usability.
ember-semantic-proper-modals
fixes this by providing a mixin that exposes a showModal
action
and onApproveModal
and onDenyModal
hooks.
The drawback of this library is that you can only have one modal per component. This can be worked around by dynamically setting the modal's contents as you require.
ember install ember-semantic-proper-modals
In your component's template, define the modal like in vanilla semantic ui:
Make sure to only include a single element with the ui modal
class.
The showModal
action opens the modal.
In your component, include the SemanticModalMixin
and override the
onApproveModal
and onDenyModal
functions if needed:
// components/modal-component.js
import Ember from 'ember';
import SemanticModalMixin from 'ember-semantic-proper-modals/mixins/semantic-modal-mixin';
export default Ember.Component.extend(SemanticModalMixin, {
onApproveModal() {
console.log('ok button pressed');
},
onDenyModal() {
console.log('deny button pressed');
}
});
You can access the jQuery DOM element for the modal using
this.get('modal')
and invoke semantic ui behaviours etc. on it.
You can also programatically show the modal by calling this.showModal()
.