Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/angular-ui/ui-ace
This directive allows you to add ACE editor elements.
https://github.com/angular-ui/ui-ace
Last synced: 4 days ago
JSON representation
This directive allows you to add ACE editor elements.
- Host: GitHub
- URL: https://github.com/angular-ui/ui-ace
- Owner: angular-ui
- License: mit
- Archived: true
- Created: 2013-03-31T00:53:39.000Z (over 11 years ago)
- Default Branch: master
- Last Pushed: 2017-06-30T14:11:18.000Z (over 7 years ago)
- Last Synced: 2024-10-30T02:41:15.601Z (15 days ago)
- Language: JavaScript
- Homepage: http://angular-ui.github.io/ui-ace
- Size: 2.01 MB
- Stars: 578
- Watchers: 31
- Forks: 172
- Open Issues: 89
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# UI.Ace directive [![Build Status](https://travis-ci.org/angular-ui/ui-ace.svg)](https://travis-ci.org/angular-ui/ui-ace)
This directive allows you to add [ACE](http://ajaxorg.github.io/ace/) editor elements.
## Requirements
- AngularJS
- [Ace 1.x](https://github.com/ajaxorg/ace-builds/)## Usage
You can get it from [Bower](http://bower.io/)
```sh
bower install angular-ui-ace#bower
```This will copy the UI.Ace files into a `bower_components` folder, along with its dependencies. Load the script files in your application:
```html
```
Add the UI.Ace module as a dependency to your application module:
```javascript
var myAppModule = angular.module('MyApp', ['ui.ace']);
```Finally, add the directive to your html:
```html
```To see something it's better to add some CSS, like
```css
.ace_editor { height: 200px; }
```## Options
Ace doesn't provide a one gate access to all the options the jquery way.
Each option is configured with the function of a specific instance.
See the [api doc](http://ajaxorg.github.io/ace/#nav=api) for more.Although, _ui-ace_ automatically handles some handy options :
+ _showGutter_ : to show the gutter or not.
+ _useWrapMode_ : to set whether or not line wrapping is enabled.
+ _theme_ : to set the theme to use.
+ _mode_ : to set the mode to use.
+ _onLoad_ : callback when the editor has finished loading (see [below](#ace-instance-direct-access)).
+ _onChange_ : callback when the editor content is changed ().
+ _onBlur_ : callback when the editor is blurred ().
+ _firstLineNumber_ : to set the firstLineNumber (default: 1)```html
```You'll want to define the `onLoad` and the `onChange` callback on your scope:
```javascript
myAppModule.controller('MyController', [ '$scope', function($scope) {$scope.aceLoaded = function(_editor) {
// Options
_editor.setReadOnly(true);
};$scope.aceChanged = function(e) {
//
};}]);
```To handle other options you'll have to use a direct access to the Ace created instance (see [below](#ace-instance-direct-access)).
## Advanced Options
You can specify advanced options and even `require` options in the directive, as well. For this example, you
will have to include the `ext-language_tools.js` file from the ace source code.This will copy the UI.Ace files into a `bower_components` folder, along with its dependencies. Load the script files in your application:
```html
```
```html
```To include options applicable to the ACE renderer, you can use the `rendererOptions` key:
```html
```## Support for concatenated bundles
Trying to use ace with concatenated javascript files usually fails because it changes the physical location of the `workerPath`. If you
need to work with bundled or minified versions of ace, you can specify the original location of the `workerPath` on disk (_not the bundled file_).This should be the folder on disk where `ace.js` resides.
```html
```### Working with ng-model
The ui-ace directive plays nicely with ng-model.
The ng-model will be watched for to set the Ace EditSession value (by [setValue](http://ajaxorg.github.io/ace/#nav=api&api=edit_session)).
_The ui-ace directive stores and expects the model value to be a standard javascript String._
### Can be read only
Simple demo
```html
or
Check me to make Ace readonly:
```### Ace instance direct access
For more interaction with the Ace instance in the directive, we provide a direct access to it.
Using```html
```the `$scope.aceLoaded` function will be called with the [Ace Editor instance](http://ajaxorg.github.io/ace/#nav=api&api=editor) as first argument
```javascript
myAppModule.controller('MyController', [ '$scope', function($scope) {$scope.aceLoaded = function(_editor){
// Editor part
var _session = _editor.getSession();
var _renderer = _editor.renderer;// Options
_editor.setReadOnly(true);
_session.setUndoManager(new ace.UndoManager());
_renderer.setShowGutter(false);// Events
_editor.on("changeSession", function(){ ... });
_session.on("change", function(){ ... });
};}]);
```## Testing
We use Karma and jshint to ensure the quality of the code. The easiest way to run these checks is to use grunt:
```sh
npm install -g grunt-cli
npm install && bower install
grunt
```The karma task will try to open Firefox and Chrome as browser in which to run the tests. Make sure this is available or change the configuration in `test\karma.conf.js`
### Grunt Serve
We have one task to serve them all !
```sh
grunt serve
```It's equal to run separately:
* `grunt connect:server` : giving you a development server at [http://127.0.0.1:8000/](http://127.0.0.1:8000/).
* `grunt karma:server` : giving you a Karma server to run tests (at [http://localhost:9876/](http://localhost:9876/) by default). You can force a test on this server with `grunt karma:unit:run`.
* `grunt watch` : will automatically test your code and build your demo. You can demo generation with `grunt build:gh-pages`.
### Dist
This repo is using the [angular-ui/angular-ui-publisher](https://github.com/angular-ui/angular-ui-publisher).
New tags will automatically trigger a new publication.
To test is locally you can trigger a :```sh
grunt dist build:bower
```it will put the final files in the _'dist'_ folder and a sample of the bower tag output in the _'out/built/bower'_ folder.