Simple variation of ember-power-select that allows you to create a new entry based on the search text.
ember install ember-power-select-with-create
- Ember.js v3.28 or above
- Ember CLI v3.28 or above
- Ember Power Select v8 or above
Please also refer to Ember Power Select documentation for it's compatibility notes.
If you want to be able to select multiple options, use the <PowerSelectMultipleWithCreate>
component instead. It has the same API as the normal <PowerSelectWithCreate>
.
For more options please refer to the Ember Power Select docs.
You can provide a callback showCreateWhen
, which will be called whenever the user types into the search field.
If you return true
, the create option will be shown. If you return false
, it won't be shown.
import Component from '@ember/component';
import { action } from '@ember/object';
export default class MyComponent extends Component {
@action
hideCreateOptionOnSameName(term) {
let existingOption = this.countries.find(({ name }) => name === term);
return !existingOption;
}
}
You can provide showCreatePosition
property to control the position(bottom|top) of create option. It should be either "top"
or "bottom"
. It defaults to "top"
.
You can provide the buildSuggestion
action to control the label of the create option. Default - Add "{{option}}"...
import Component from '@ember/component';
import { action } from '@ember/object';
export default class MyComponent extends Component {
@action
customSuggestion(term) {
return `Create ${term}`;
}
}
Beyond building the suggestion label, you can pass the suggestedOptionComponent
property, which should be a component, not a string to be embroider compatible.
This component will receive the suggestedOption itself as option
and the current term
as term
.