diff options
Diffstat (limited to 'web/widget/table/row.js')
-rw-r--r-- | web/widget/table/row.js | 28 |
1 files changed, 25 insertions, 3 deletions
diff --git a/web/widget/table/row.js b/web/widget/table/row.js index 7e617b2..2e963c7 100644 --- a/web/widget/table/row.js +++ b/web/widget/table/row.js @@ -4,8 +4,8 @@ */ define( - ["acf2/dom", "acf2/widget/abstract/fields", "jquery"], - function(dom, Base, $) { + ["acf2/dom", "acf2/widget/abstract/fields", "jquery", "underscore"], + function(dom, Base, $, _) { return Base.extend({ createEl: function() { this.prevAction = null; @@ -22,8 +22,30 @@ define( ); }, + createModelWidgets: function(fields, editable) { + Base.createModelWidgets.call(this, fields, editable); + + var self = this; + var tdFields = []; + _.each(fields, function(field) { + if (field.name in self.widgets && + self.widgets[field.name].is("td")) + tdFields.push(field); + }); + if (_.size(tdFields) == _.size(fields)) return; + + Base.createModelWidgets.call(this, tdFields, false); + this.wrapped.trigger("hasDetails", [this.path]); + }, + + createWidget: function(name, meta, editable, removable) { + if (!meta.condition) + return Base.createWidget.call( + this, name, meta, editable, removable + ); + }, + appendWidget: function(el, label) { - if (!el.is("td")) return null; if (this.prevWidget) this.prevWidget.after(el); else { var ph = this.el.find(".placeholder"); |