govuk_admin_template 0.0.4 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG.md +19 -0
- data/JAVASCRIPT.md +106 -0
- data/config/routes.rb +3 -0
- data/lib/govuk_admin_template/version.rb +1 -1
- metadata +8 -5
data/CHANGELOG.md
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
# 0.0.5
|
2
|
+
|
3
|
+
* Fix gem.files to include all needed files (routes)
|
4
|
+
|
5
|
+
# 0.0.4
|
6
|
+
|
7
|
+
* Put style guide through parent application controller for accurate rendering
|
8
|
+
|
9
|
+
# 0.0.3
|
10
|
+
|
11
|
+
* Make style guide available as a mounted route
|
12
|
+
|
13
|
+
# 0.0.2
|
14
|
+
|
15
|
+
* Add lightweight Javascript framework and modules, ported from Transition
|
16
|
+
|
17
|
+
# 0.0.1
|
18
|
+
|
19
|
+
* Original gem release including template, styles, jQuery and Bootstrap
|
data/JAVASCRIPT.md
ADDED
@@ -0,0 +1,106 @@
|
|
1
|
+
# Admin Javascript
|
2
|
+
|
3
|
+
`govuk_admin_template` comes with a lightweight javascript framework that makes it easy to write re-usable modular components, without having to worry about messy instantiation.
|
4
|
+
|
5
|
+
## Usage
|
6
|
+
|
7
|
+
Javascript modules are specified in markup using `data-` attributes:
|
8
|
+
|
9
|
+
```html
|
10
|
+
<div data-module="some-module">
|
11
|
+
<strong>Some other markup inside the module</strong>
|
12
|
+
</div>
|
13
|
+
```
|
14
|
+
|
15
|
+
When javascript runs on the page the framework will look for a module at `GOVUKAdmin.Modules.SomeModule`. Note the value of the data attribute has been converted to _camelCase_.
|
16
|
+
|
17
|
+
The module will first be instantiated and then will automatically call the module’s `start` method, passing it the element the `data` attribute is on:
|
18
|
+
|
19
|
+
```javascript
|
20
|
+
module = new GOVUKAdmin.Modules[type]();
|
21
|
+
module.start(element);
|
22
|
+
```
|
23
|
+
|
24
|
+
This automatically limits modules to their containing elements and removes the need for messy inline script tags.
|
25
|
+
|
26
|
+
The simplest of modules looks like this:
|
27
|
+
|
28
|
+
```javascript
|
29
|
+
(function(Modules) {
|
30
|
+
"use strict";
|
31
|
+
Modules.SomeModule = function() {
|
32
|
+
var that = this;
|
33
|
+
that.start = function(element) {
|
34
|
+
// module code
|
35
|
+
}
|
36
|
+
};
|
37
|
+
})(window.GOVUKAdmin.Modules);
|
38
|
+
```
|
39
|
+
|
40
|
+
## Writing modules
|
41
|
+
|
42
|
+
Whilst this isn’t prescriptive, it helps if modules look and behave in a similar manner. Modules should live within your app’s `app\assets\javascripts\modules` directory.
|
43
|
+
|
44
|
+
### Use `js-` prefixed classes for interaction hooks
|
45
|
+
|
46
|
+
Make it clear where a javascript module will be applying behaviour:
|
47
|
+
|
48
|
+
```html
|
49
|
+
<div data-module="toggle-thing">
|
50
|
+
<a href="/" class="js-toggle">Toggle</a>
|
51
|
+
<div class="js-toggle-target">Target</div>
|
52
|
+
</div>
|
53
|
+
```
|
54
|
+
|
55
|
+
### Declare event listeners at the start
|
56
|
+
|
57
|
+
Beginning with a set of event listeners clearly indicates the module’s intentions.
|
58
|
+
|
59
|
+
```js
|
60
|
+
that.start = function(element) {
|
61
|
+
element.on('click', '.js-toggle', toggle);
|
62
|
+
element.on('click', '.js-cancel', cancel);
|
63
|
+
}
|
64
|
+
```
|
65
|
+
|
66
|
+
Where possible, assign listeners to the module element to minimise the number of listeners and to allow for flexible markup:
|
67
|
+
|
68
|
+
```html
|
69
|
+
<div data-module="toggle-thing">
|
70
|
+
<a href="/" class="js-toggle">This toggles</a>
|
71
|
+
<div class="js-toggle-target">
|
72
|
+
<p>Some content</p>
|
73
|
+
<a href="/" class="js-toggle">This also toggles</a>
|
74
|
+
</div>
|
75
|
+
</div>
|
76
|
+
```
|
77
|
+
|
78
|
+
### Use data-attributes for configuration
|
79
|
+
|
80
|
+
Keep modules flexible by moving configuration to data attributes on the module’s element:
|
81
|
+
|
82
|
+
```html
|
83
|
+
<div
|
84
|
+
data-module="html-stream"
|
85
|
+
data-url="/some/endpoint"
|
86
|
+
data-refresh-ms="5000">
|
87
|
+
<!-- updates with content from end point -->
|
88
|
+
</div>
|
89
|
+
```
|
90
|
+
|
91
|
+
### Include Jasmine specs
|
92
|
+
|
93
|
+
Modules should have their own tests, whether they’re being included with the gem or are app specific.
|
94
|
+
|
95
|
+
## Included modules
|
96
|
+
|
97
|
+
Found in the [app/assets/javascripts/modules](app/assets/javascripts/modules) directory, with tests in [spec/javascripts/spec/](spec/javascripts/spec/).
|
98
|
+
|
99
|
+
File | Module | Attribute | Description
|
100
|
+
------ | ------ | --------- | -----------
|
101
|
+
auto_show_modal.js | AutoShowModal | auto-show-modal | Initialise a Boostrap modal on page load and remove markup when closed
|
102
|
+
auto_track_event.js | AutoTrackEvent | auto-track-event | Use data attributes to track events in Google Analytics on page load
|
103
|
+
filterable_table.js | FilterableTable | filterable-table | Filter the contents of a table, showing only matching rows
|
104
|
+
fixed_table_header.js | FixedTableHeader | fixed-table-header | Fix the `<thead>` portion of a table when scrolling offscreen
|
105
|
+
selectable_table.js | SelectableTable | selectable-table | Select rows in a table and perform an action on them
|
106
|
+
toggle.js | Toggle | toggle | A simple toggle
|
data/config/routes.rb
ADDED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: govuk_admin_template
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-05-
|
12
|
+
date: 2014-05-27 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -170,11 +170,14 @@ files:
|
|
170
170
|
- app/assets/javascripts/govuk-admin-template.js
|
171
171
|
- app/controllers/govuk_admin_template/application_controller.rb
|
172
172
|
- app/controllers/govuk_admin_template/style_guide_controller.rb
|
173
|
+
- config/routes.rb
|
173
174
|
- lib/govuk_admin_template/engine.rb
|
174
175
|
- lib/govuk_admin_template/version.rb
|
175
176
|
- lib/govuk_admin_template.rb
|
176
|
-
-
|
177
|
+
- JAVASCRIPT.md
|
178
|
+
- CHANGELOG.md
|
177
179
|
- README.md
|
180
|
+
- LICENCE.txt
|
178
181
|
homepage: https://github.com/alphagov/govuk_admin_template
|
179
182
|
licenses: []
|
180
183
|
post_install_message:
|
@@ -189,7 +192,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
189
192
|
version: '0'
|
190
193
|
segments:
|
191
194
|
- 0
|
192
|
-
hash:
|
195
|
+
hash: -2415206504534781364
|
193
196
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
194
197
|
none: false
|
195
198
|
requirements:
|
@@ -198,7 +201,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
198
201
|
version: '0'
|
199
202
|
segments:
|
200
203
|
- 0
|
201
|
-
hash:
|
204
|
+
hash: -2415206504534781364
|
202
205
|
requirements: []
|
203
206
|
rubyforge_project:
|
204
207
|
rubygems_version: 1.8.23
|