mirror of https://github.com/rancher/ui.git
58 lines
1.1 KiB
JavaScript
58 lines
1.1 KiB
JavaScript
import Mixin from '@ember/object/mixin';
|
|
import { get, set } from '@ember/object';
|
|
import { inject as service } from '@ember/service';
|
|
|
|
export default Mixin.create({
|
|
intl: service(),
|
|
|
|
config: null,
|
|
field: null,
|
|
errors: null,
|
|
defaultConfig: null,
|
|
|
|
validate() {
|
|
return [];
|
|
},
|
|
|
|
willSave() {},
|
|
|
|
init() {
|
|
this._super(...arguments);
|
|
|
|
if ( get(this, `initConfig.${ get(this, 'field') }`) ) {
|
|
set(this, 'config', Object.assign({}, get(this, 'initConfig')));
|
|
} else {
|
|
const defaultConfig = {};
|
|
|
|
defaultConfig[get(this, 'field')] = Object.assign({}, get(this, 'defaultConfig'));
|
|
set(this, 'config', Object.assign({}, defaultConfig));
|
|
}
|
|
},
|
|
|
|
actions: {
|
|
save(cb) {
|
|
const errors = this.validate();
|
|
|
|
if ( errors.length > 0 ) {
|
|
set(this, 'errors', errors);
|
|
cb();
|
|
|
|
return;
|
|
}
|
|
this.willSave();
|
|
const step = get(this, 'config');
|
|
|
|
if (this.save) {
|
|
this.save(step);
|
|
}
|
|
cb();
|
|
},
|
|
|
|
cancel() {
|
|
if (this.cancel) {
|
|
this.cancel();
|
|
}
|
|
},
|
|
}
|
|
});
|