Guest User

Untitled

a guest
Jul 18th, 2018
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.60 KB | None | 0 0
  1. import Component from '@ember/component';
  2. import { observer, get, set, getWithDefault } from '@ember/object';
  3. import { later } from '@ember/runloop';
  4.  
  5. export default Component.extend({
  6. // Required:
  7. // value - the currently selected option
  8. // options - the available options,
  9. // ['Canada', 'USA', 'Mexico']
  10. // [{value: 'word-cloud', label: 'Word Cloud'}]
  11.  
  12. // Optional:
  13. // disabled - boolean
  14. // required - boolean
  15. // multiple - boolean
  16. // name - string
  17.  
  18. tagName: 'select',
  19.  
  20. attributeBindings: [
  21. 'disabled',
  22. 'required',
  23. 'multiple',
  24. 'name'
  25. ],
  26.  
  27. didReceiveAttrs() {
  28. set(this, 'noDefault', (get(this, 'value') && !get(this, 'keys')) ? false : true);
  29. },
  30.  
  31. didInsertElement() {
  32. this.$().val(get(this, 'value') || '');
  33. },
  34.  
  35. didRender() {
  36. this.$().val(get(this, 'value'));
  37. if (get(this, 'isUserRoles') && get(this, 'value') === '') {
  38. set(this, 'value', get(this, 'originalRole'));
  39. }
  40. },
  41.  
  42. willDestroyElement() {
  43. if (get(this, 'isUserRoles')) {
  44. set(this, 'value', '');
  45. }
  46. },
  47.  
  48. // For when value changes
  49. valueWatcher: observer('value', function() {
  50. let propValue = get(this, 'value');
  51. let elValue = this.$().val();
  52. if (elValue !== propValue) {
  53. this.$().val(propValue);
  54. }
  55. }),
  56.  
  57. // For when element changes
  58. change() {
  59. let oldValue = get(this, 'value');
  60. let newValue = this.$().val();
  61. if (oldValue !== newValue) {
  62. set(this, 'value', newValue);
  63. if (get(this, 'changeAction')) {
  64. later(()=>get(this, 'changeAction')(), getWithDefault(this, 'changeDelay', 0));
  65. }
  66. }
  67. }
  68.  
  69. });
Add Comment
Please, Sign In to add comment