1
0
Fork 0
mirror of https://github.com/documize/community.git synced 2025-07-19 21:29:42 +02:00
documize/gui/app/components/ui-select.js

49 lines
1.6 KiB
JavaScript
Raw Normal View History

2016-07-07 18:54:16 -07:00
// Copyright 2016 Documize Inc. <legal@documize.com>. All rights reserved.
//
// This software (Documize Community Edition) is licensed under
// GNU AGPL v3 http://www.gnu.org/licenses/agpl-3.0.en.html
//
// You can operate outside the AGPL restrictions by purchasing
// Documize Enterprise Edition and obtaining a commercial license
// by contacting <sales@documize.com>.
//
// https://documize.com
import { reads } from '@ember/object/computed';
2016-07-07 18:54:16 -07:00
import Component from '@ember/component';
export default Component.extend({
2016-07-07 18:54:16 -07:00
cssClass: "",
content: [],
prompt: null,
optionValuePath: 'id',
optionLabelPath: 'name',
action() {}, // action to fire on change
// action: Ember.K, // action to fire on change
2016-07-07 18:54:16 -07:00
// shadow the passed-in `selection` to avoid
// leaking changes to it via a 2-way binding
_selection: reads('selection'),
2016-07-07 18:54:16 -07:00
actions: {
change() {
const selectEl = this.$('select')[0];
const selectedIndex = selectEl.selectedIndex;
const content = this.get('content');
// decrement index by 1 if we have a prompt
const hasPrompt = !!this.get('prompt');
const contentIndex = hasPrompt ? selectedIndex - 1 : selectedIndex;
const selection = content[contentIndex];
// set the local, shadowed selection to avoid leaking
// changes to `selection` out via 2-way binding
this.set('_selection', selection);
const changeCallback = this.get('action');
changeCallback(selection);
}
}
});