diff --git a/app/assets/javascripts/admin/templates/email_preview_digest.hbs b/app/assets/javascripts/admin/templates/email_preview_digest.hbs index d5f3f932b2..7670d6194b 100644 --- a/app/assets/javascripts/admin/templates/email_preview_digest.hbs +++ b/app/assets/javascripts/admin/templates/email_preview_digest.hbs @@ -18,10 +18,10 @@ -{{#loading-spinner condition=loading}} +{{#conditional-loading-spinner condition=loading}} {{#if showHtml}} {{{html_content}}} {{else}}
{{{text_content}}}
{{/if}}
-{{/loading-spinner}}
+{{/conditional-loading-spinner}}
diff --git a/app/assets/javascripts/admin/templates/flags-list.hbs b/app/assets/javascripts/admin/templates/flags-list.hbs
index 6285d9e938..e001e92ae8 100644
--- a/app/assets/javascripts/admin/templates/flags-list.hbs
+++ b/app/assets/javascripts/admin/templates/flags-list.hbs
@@ -147,7 +147,7 @@
- {{loading-spinner condition=view.loading}}
+ {{conditional-loading-spinner condition=view.loading}}
{{else}}
{{i18n 'admin.flags.no_results'}}
{{/if}} diff --git a/app/assets/javascripts/admin/templates/logs/screened_emails.hbs b/app/assets/javascripts/admin/templates/logs/screened_emails.hbs index 506ede054d..fba64d367d 100644 --- a/app/assets/javascripts/admin/templates/logs/screened_emails.hbs +++ b/app/assets/javascripts/admin/templates/logs/screened_emails.hbs @@ -4,7 +4,7 @@| {{xaxis}} | @@ -43,4 +43,4 @@
|---|
{{i18n "directory.no_results"}}
{{/if}} - {{/loading-spinner}} + {{/conditional-loading-spinner}} diff --git a/app/assets/javascripts/discourse/views/input-tip.js.es6 b/app/assets/javascripts/discourse/views/input-tip.js.es6 deleted file mode 100644 index 6caf2dad67..0000000000 --- a/app/assets/javascripts/discourse/views/input-tip.js.es6 +++ /dev/null @@ -1,17 +0,0 @@ -import StringBuffer from 'discourse/mixins/string-buffer'; - -export default Discourse.View.extend(StringBuffer, { - classNameBindings: [':tip', 'good', 'bad'], - rerenderTriggers: ['validation'], - - bad: Em.computed.alias('validation.failed'), - good: Em.computed.not('bad'), - - renderString: function(buffer) { - var reason = this.get('validation.reason'); - if (reason) { - var icon = this.get('good') ? 'fa-check' : 'fa-times'; - return buffer.push(" " + reason); - } - } -}); diff --git a/app/assets/javascripts/discourse/views/view.js.es6 b/app/assets/javascripts/discourse/views/view.js.es6 index f939764ebb..03f49906f8 100644 --- a/app/assets/javascripts/discourse/views/view.js.es6 +++ b/app/assets/javascripts/discourse/views/view.js.es6 @@ -1,17 +1,3 @@ import Presence from 'discourse/mixins/presence'; -const View = Ember.View.extend(Presence, {}); - -View.reopenClass({ - registerHelper(helperName, helperClass) { - Ember.Handlebars.registerHelper(helperName, function(options) { - var hash = options.hash, - types = options.hashTypes; - - Discourse.Utilities.normalizeHash(hash, types); - return Ember.Handlebars.helpers.view.call(this, helperClass, options); - }); - } -}); - -export default View; +export default Ember.View.extend(Presence); diff --git a/app/assets/javascripts/ember_include.js.erb b/app/assets/javascripts/ember_include.js.erb index f124141c39..15cc71aec5 100644 --- a/app/assets/javascripts/ember_include.js.erb +++ b/app/assets/javascripts/ember_include.js.erb @@ -1,5 +1,6 @@ <% if Rails.env.development? || Rails.env.test? + require_asset ("ember-template-compiler.js") require_asset ("development/ember.js") else require_asset ("production/ember.js") diff --git a/app/assets/javascripts/main_include.js b/app/assets/javascripts/main_include.js index 6d856ec381..48fce6d514 100644 --- a/app/assets/javascripts/main_include.js +++ b/app/assets/javascripts/main_include.js @@ -42,7 +42,7 @@ //= require ./discourse/views/container //= require ./discourse/views/modal-body //= require ./discourse/views/flag -//= require ./discourse/views/combo-box +//= require ./discourse/components/combo-box //= require ./discourse/views/button //= require ./discourse/components/dropdown-button //= require ./discourse/components/notifications-button diff --git a/test/javascripts/views/view-test.js.es6 b/test/javascripts/views/view-test.js.es6 deleted file mode 100644 index ee62c02de7..0000000000 --- a/test/javascripts/views/view-test.js.es6 +++ /dev/null @@ -1,34 +0,0 @@ -import Presence from 'discourse/mixins/presence'; - -var oldHelpers; - -module("Discourse.View", { - setup: function() { - oldHelpers = Ember.Handlebars.helpers; - }, - - teardown: function() { - Ember.Handlebars.helpers = oldHelpers; - } -}); - -test("mixes in Presence", function() { - ok(Presence.detect(Discourse.View.create())); -}); - -test("registerHelper: enables embedding a child view in a parent view via dedicated, named helper instead of generic 'view' helper", function() { - Discourse.View.registerHelper("childViewHelper", Ember.View.extend({ - template: Ember.Handlebars.compile('{{view.text}}') - })); - - var parentView = Ember.View.extend({ - template: Ember.Handlebars.compile('{{childViewHelper id="child" text="foo"}}') - }).create(); - - Ember.run(function() { - parentView.appendTo("#qunit-fixture"); - }); - - equal(parentView.$("#child").length, 1, "child view registered as helper is appended to the parent view"); - equal(parentView.$("#child").text(), "foo", "child view registered as helper gets parameters provided during helper invocation in parent's template"); -}); diff --git a/vendor/assets/javascripts/development/ember.js b/vendor/assets/javascripts/development/ember.js index 0b4deefa8d..5c1c432e1d 100644 --- a/vendor/assets/javascripts/development/ember.js +++ b/vendor/assets/javascripts/development/ember.js @@ -5,7 +5,7 @@ * Portions Copyright 2008-2011 Apple Inc. All rights reserved. * @license Licensed under MIT license * See https://raw.github.com/emberjs/ember.js/master/LICENSE - * @version 1.9.0 + * @version 1.10.1 */ (function() { @@ -32,7 +32,7 @@ var enifed, requireModule, eriuqer, requirejs, Ember; seen[name] = {}; if (!registry[name]) { - throw new Error("Could not find module " + name); + throw new Error('Could not find module ' + name); } var mod = registry[name]; @@ -56,9 +56,11 @@ var enifed, requireModule, eriuqer, requirejs, Ember; }; function resolve(child, name) { - if (child.charAt(0) !== '.') { return child; } - var parts = child.split("/"); - var parentBase = name.split("/").slice(0, -1); + if (child.charAt(0) !== '.') { + return child; + } + var parts = child.split('/'); + var parentBase = name.split('/').slice(0, -1); for (var i=0, l=parts.length; i
+ ```
+
+ ### `bind-attr` and the `class` attribute
+
+ `bind-attr` supports a special syntax for handling a number of cases unique
+ to the `class` DOM element attribute. The `class` attribute combines
+ multiple discrete values into a single attribute as a space-delimited
+ list of strings. Each string can be:
+
+ * a string return value of an object's property.
+ * a boolean return value of an object's property
+ * a hard-coded value
+
+ A string return value works identically to other uses of `bind-attr`. The
+ return value of the property will become the value of the attribute. For
+ example, the following view and template:
+
+ ```javascript
+ AView = View.extend({
+ someProperty: function() {
+ return "aValue";
+ }.property()
+ })
+ ```
+
+ ```handlebars
+ Howdy Yehuda
+Howdy Tom
+Howdy Peter
+Sorry, nobody is available for this task.
+ {{/each}} + ``` + + ### Specifying an alternative view for each item + + `itemViewClass` can control which view will be used during the render of each + item's template. + + The following template: + + ```handlebars +