mirror of
				https://github.com/optim-enterprises-bv/vault.git
				synced 2025-11-03 20:17:59 +00:00 
			
		
		
		
	* Updated code mirror component for consistency - Hide gutters, line number and selection while read only - Show toolbar with copy functionality for all instances * Moved toolbar and actions to json editor component * Updated form-field-from-model template * Added test for toolbar
		
			
				
	
	
		
			54 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
import Component from '@ember/component';
 | 
						|
 | 
						|
const JSON_EDITOR_DEFAULTS = {
 | 
						|
  // IMPORTANT: `gutters` must come before `lint` since the presence of
 | 
						|
  // `gutters` is cached internally when `lint` is toggled
 | 
						|
  gutters: ['CodeMirror-lint-markers'],
 | 
						|
  tabSize: 2,
 | 
						|
  mode: 'application/json',
 | 
						|
  lineNumbers: true,
 | 
						|
  lint: { lintOnChange: false },
 | 
						|
  theme: 'hashi',
 | 
						|
  readOnly: false,
 | 
						|
  showCursorWhenSelecting: true,
 | 
						|
};
 | 
						|
 | 
						|
export default Component.extend({
 | 
						|
  showToolbar: true,
 | 
						|
  title: null,
 | 
						|
  subTitle: null,
 | 
						|
  helpText: null,
 | 
						|
  value: null,
 | 
						|
  options: null,
 | 
						|
  valueUpdated: null,
 | 
						|
  onFocusOut: null,
 | 
						|
  readOnly: false,
 | 
						|
 | 
						|
  init() {
 | 
						|
    this._super(...arguments);
 | 
						|
    this.options = { ...JSON_EDITOR_DEFAULTS, ...this.options };
 | 
						|
    if (this.options.autoHeight) {
 | 
						|
      this.options.viewportMargin = Infinity;
 | 
						|
      delete this.options.autoHeight;
 | 
						|
    }
 | 
						|
    if (this.options.readOnly) {
 | 
						|
      this.options.readOnly = 'nocursor';
 | 
						|
      this.options.lineNumbers = false;
 | 
						|
      delete this.options.gutters;
 | 
						|
    }
 | 
						|
  },
 | 
						|
 | 
						|
  actions: {
 | 
						|
    updateValue(...args) {
 | 
						|
      if (this.valueUpdated) {
 | 
						|
        this.valueUpdated(...args);
 | 
						|
      }
 | 
						|
    },
 | 
						|
    onFocus(...args) {
 | 
						|
      if (this.onFocusOut) {
 | 
						|
        this.onFocusOut(...args);
 | 
						|
      }
 | 
						|
    },
 | 
						|
  },
 | 
						|
});
 |