Skip to content

A web component that adds the ability to conditionally display page elements based on values and selections made in html form elements.

License

Notifications You must be signed in to change notification settings

matthewscottconroy/mc-conditional

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

39 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

mc-conditional

mc-conditional in action

mc-conditional is a web component that augments the behavior of traditional html form elements so that when certain values are chosen or entered into the form, the visibility of certain elements of the page is altered.

You might find this web component useful if:

  • You want to simplify a long form by hiding questions that are only relevant to users that have answered a certain question
  • You want to display certain messages based on the way a user has filled out a form
  • Your page consists of a sequence of slides, tabs or branching paths that you want to display without having to transition to other pages or without having to build out a single page application
  • You want a simple way of managing conditional visibility for situations where the added complexity or technical debt of using a framework with mvc or reactive components isn't warranted

To Install

Run:

npm install mc-conditional

Then include the file in your html:

<script src="./node_modules/mc-conditional/McConditional.js" type="module"></script>

To Use

To use the component, simply wrap any of your standard form elements with the <mc-conditional> tag like so:

`

<mc-conditional>
<div>
<input type="radio" id="jalapeno-radio" name="pepper" value="jalapeno">
<label for="jalapeno-radio">Jalapeno</label>
</div>
<div>
<input type="radio" id="ghost-radio" name="pepper" value="ghost">
<label for="ghost-radio">Ghost</label>
</div>
<div>
<input type="radio" id="habanero-radio" name="pepper" value="habanero">
<label for="habanero-radio">Habanero</label>
</div>
</mc-conditional>

<div id="jalapeno">
These green peppers are delicious and spicy!
</div>
<div id="ghost">
These red peppers are to die for!
</div>
<div id="habanero">
These orange peppers are quite the dish!
</div>

<mc-conditional> <!-- c-value="parrot" visible-element=".form-controls"> -->
<select name="pets" id="pet-select">
    <option value=""> Please choose an option </option>
    <option value="dog">Dog</option>
    <option value="cat">Cat</option>
    <option value="hamster">Hamster</option>
    <option value="parrot">Parrot</option>
    <option value="spider">Spider</option>
    <option value="goldfish">Goldfish</option>
</select>
</mc-conditional>

<div id="dog">
barks
</div>

<div id="cat">
meows
</div>

<div id="hamster">
...
</div>

<div id="parrot">
flies
</div>

<div id="spider">
scuttles
</div>

<div id="goldfish">
swims
</div>





<mc-conditional>
  <input type="checkbox" name="vehicle" value="Bike"> I have a bike<br>
  <input type="checkbox" name="vehicle" value="Car"> I have a car<br>
  <input type="checkbox" name="vehicle" value="Boat" checked> I have a boat<br>
</mc-conditional>


<div id="Bike">
This is the bike div! spin spin
</div>

<div id="Car">
This is the car div! Vroooom!
</div>

<div id="Boat">
This is the boat div! Blup! Blup!
</div>




<p>Just type the word abracadabra</p>

<mc-conditional>
<input type="text" name="magic-word">
</mc-conditional>

<div id="abracadabra" class="mc-conditional-out">
        You said the magic word!
</div>

`

Notice that some of the conditionals have some attributes commented out. You can use these custom attributes to provide some additional customization to the behavior of your elements (by for instance explicitly stating which values should alter visibility (c-value) and which html elements your component should target the visibility of (visible-element).)

As you can see, mc-conditional works on selects, inputs, checkboxes, radio buttons, and more.

If you want to see the code above in action, please visit this mc-conditional example page

About

A web component that adds the ability to conditionally display page elements based on values and selections made in html form elements.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published