60 lines
2.1 KiB
JavaScript
60 lines
2.1 KiB
JavaScript
import Ember from 'ember';
|
|
import BaseFormInput from './form-field';
|
|
import { alias, equal } from '@ember/object/computed';
|
|
import $ from 'jquery'
|
|
|
|
export default BaseFormInput.extend({
|
|
type: 'text',
|
|
isHidden: equal('type', 'hidden'),
|
|
imageUrl: alias('image-url'),
|
|
labelClass: alias('label-class'),
|
|
inputClass: alias('input-class'),
|
|
classNameBindings: ['isHidden:hidden'],
|
|
rows: 8,
|
|
droppable: true,
|
|
thumbnail: false,
|
|
blacklist: 'exe|php|jsp',
|
|
didReceiveAttrs() {
|
|
const me = this;
|
|
me._super(...arguments);
|
|
|
|
let isFile = me.get('type') === 'file';
|
|
!me.get('input-class') &&
|
|
me.set('input-class', isFile ? 'col-xs-3' : 'col-xs-12 col-sm-5');
|
|
let image = me.get('image');
|
|
if (isFile && image) {
|
|
me.set('imageUrl', me.get('model.' + image));
|
|
}
|
|
},
|
|
didInsertElement() {
|
|
let me = this;
|
|
me._super(...arguments);
|
|
['file', 'image'].includes(me.get('type')) &&
|
|
$(me.element).find('input[type=file]').ace_file_input({
|
|
no_file: 'No File Choosed...',
|
|
btn_choose: 'Choose',
|
|
btn_change: 'Change',
|
|
droppable: me.get('droppable'),
|
|
before_change: function(files, dropped) {
|
|
console.log('File input, before change: ', files, dropped);
|
|
const cb = me.get('before-file-change');
|
|
cb && cb(files, me.getVal(), dropped);
|
|
const filename = files[0].name;
|
|
console.log('Before file [' + filename + '] changed.');
|
|
me.setVal(filename);
|
|
return true;
|
|
},
|
|
before_remove: function() {
|
|
const files = $(this).prop('files');
|
|
console.log('File input, before files removed: ', files);
|
|
const cb = me.get('before-file-remove');
|
|
cb && cb(files);
|
|
me.setVal(null);
|
|
return true;
|
|
},
|
|
thumbnail: me.get('thumbnail'), // false | true | large
|
|
blacklist: me.get('blacklist')
|
|
});
|
|
}
|
|
});
|