0.0
No commit activity in last 3 years
No release in over 3 years
UI helper that disables an entire section with its inner html elements based on a given condition
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 1.4
>= 0
~> 2.6

Runtime

 Project Readme

Disable Section

Description

UI helper that disables an entire section with its inner html elements based on a given condition during render phase. For example, you have a form which can be edited only in "edit mode" but readonly in "view mode".

Installation

Add this line to your application's Gemfile:

gem 'disable_section'

And then execute:

$ bundle

Or install it yourself as:

$ gem install disable_section

Usage

  • In the application.js add

    //= require disable_section
    
  • In your html erb, use the disable_section helper, which receives a predicate and then a block to render.

    If the predicate is true, then the default elements: a, input, select, textarea and button will be added the class 'disabled' (which you need to create CSS for), and also be added the 'disabled' attribute.

    If the predicate is false, then the block will be rendered normally.

      <%= disable_section view_mode? do %>  <!-- suppose view_mode? is your redicate -->
        <%= f.email_field :email %>
      <% end %>
  • If you want specific elements within the section to remain enabled, give them class keep-enabled

Notes

  • Note that it depends on jQuery, and works also on future elements (e.g. add new DOM elements via AJAX).

  • It doesn't act as a toggler, that it, changing the predicate after the view has been rendered will have no effect.

TODO

  • Implement configuration - which html elements will be disabled, override the default a, input, select, textarea and button

  • JS specs

  • Specs - add higher level and integration tests

License

See MIT-LICENSE