- Derive
Apotomo::WidgetfromCell::Railsnow to make it compatible with 3.8.
- Save the
@optionshash in the constructor since we cannot rely on cells anymore.
- The
Widget.newconstructor now expects the parent widget as first argument (except for the root widget, which still gets the damned ActionController instance). Nobody needed orphaned widgets so far so we decided to make it simpler. This makes the#<<method a DSL-method, only. - You can now access the root widget instance (or any other parent widget) in any subsequent
has_widgetsblock. This fixes a famous issue and makes the:passingoption work as expected at every tree level. - The
#widgetshortcut method no longer returns a valid widget instance but a DSL-specific thing. Use the real constructor form if you need it right away (MouseWidget.new(parent, :kid)) or access the instance afterwards (root[:kid]). - Removed the
after_addhook. Now that adding happens in the constructor, hook intoafter_initialize. - Removed
#paramin favor of#options. - Removed
#emitin favor of#render. - Removed
#remove_all!and#remove_from_parent!. Did you ever use these?
- New signature:
TestCase#trigger(type, source, options). This method no longer messes around with the widget’s options hash but simply passes any additional options toevt#data. Also, the eventsourceis now the required second argument. - We now got
TestCase#view_assignsto access instance variables from the last rendered widget.
- You can now attach event handlers to other widgets simply by using the
:passingoption:responds_to_event :click, :passing => :root. - If you want to debug events, just include the (WIP)
apotomo/debuggingfile and watch your server output on the console.
Widget.responds_to_eventis inheritable now.- The generator now places namespaced widgets into the correct sub-directories.
- Removed the alias
Widget.respond_to_event, please useWidget.responds_to_event.
- Widgets now reside in
app/widgets/and have theWidgetappendix per convention, identical to cells and controllers. This introduces the following changes, illustrated with an imaginaryCommentsWidget:widget(:comments, ...)will search and instantiateCommentsWidget(note the missing “Widget”).- The
CommentsWidgetviews are searched inapp/widgets/comments/(note the missing “_widget”).
- Including Apotomo::Rails::ControllerMethods by hand is optional. The first call to Controller.has_widgets will include the real module.
- You can now
#render_widgetin your widget views to render children. #widgetnow accepts one arg only (the widget prefix).widget(:comments)sets id to:comments. We also removed the start state argument.- Start states are no longer accepted, you have to explicitely pass the state to #render_widget. That’s why #invoke now requires an explicit state as well.
- #replace/#update now append a
;to the JavaScript expression. You may pass an arbitrary selector string as first argument (optional). - The event is no longer added to #options at triggering time.
- Options passed in #render_widget are no longer merged with #options. They are passed as state-args to reduce complexity.
- We no longer have @opts and @params but #options and #params from Cell::Base.
- The params hash is appended to the event in RequestProcessor#process_for. You can now live completely without accessing the global #params.
- #respond/#update with :selector does not longer prefix the selector with #. It’s up to you.
- Event delegates #[] to #data.
- Removed #param, it is simply too complex.
- Removed render :render_children and :invoke options. Use #render_widget in your state/view.
- Removed render :suppress_js as it was ugly and kills children.
- Removed #jump_to_state and #last_state.
- Removed `@cell`, now longer available in state views.
- Removed #cell, #container and #section widget shortcuts.
- Removed
rendered_childrenlocal in views. Use #render_widget. - Removed ContainerWidget, nobody needs it.
- Widget.responds_to_event no longer shares its options with multiple widget instances of the same class.
- Caching states works, again. Thanks to Gudleik Rasch for spotting.
- We cleanly require cells-3.4.x now. Thanks to Ryan Bates who remarked that Apotomo 1.0.x tries to require cells-3.5, which was wrong.
- Removed the usage of state-args. If you want the event instance in your triggered state, use @opts[:event] or upgrade to apotomo-1.1.
- fixed gemspec to not require useless gem dependencies.
- removals from ViewHelper: #trigger_event, #form_to_event and friends as they use deprecated Rails helpers.
- Widget#fire now accepts payload data for the fired event.
- triggered states now receive the event object if they expect one argument.