5.67.2 • Published 4 years ago

mod-site v5.67.2

Weekly downloads
4
License
ISC
Repository
-
Last release
4 years ago

About

This package is created to be used on microsites that contain forms. It helps streamline development by providing flexible reusable components for forms such as:

  • data for form fields (e.g. list of states, hvacSystemTypes, etc.);
  • form error texts for each field;
  • configurable Javascript object modSite (mod-site.js) for handling form validation, switching steps, processing and submitting data to the backend, and handling backend responses;
  • Javascript object for thank you page ads;
  • helper Javascript object modUtils for variuos related methods used in modSite or thank you page;
  • templates for about, terms, and privacy pages (with variables for company name, website name, emails, etc.)

Structure

  • src/
    • data/common.js - form fields options, form errors, TCPA copy, list of state names and abbreviations
    • scripts/
      • components/
        • custom-selects.js - object for custom selects
        • modal-pages.js - object for opening links in modal windows
        • radio-panels.js - object for radio panels
      • vendor/ - shared third party scripts
        • heap-addeventproperties-identify.js
        • heap-tracking.js
        • heap-vwo.js
        • maxmind-geoip2.js
      • apt-block.js - used for rendering the set appointments widget (see appointments widget repo)
      • mod-form-pro.js - object for handling pros forms
      • mod-form.js - object for handling forms
      • mod-utils.js - helper object
      • thankyou.js - object for thankyou page
    • styles/
      • partials/ - contains useful SASS partials & mixins; should be imported into project's SASS files
      • apt-block.scss - styles for appointment block
    • templates/
      • _partials/scripts/ - GTM, VWO, and Google Maps script tags
      • modals/ - templates for about, terms, and privacy pages
  • .babelrc - config file for Babeljs
  • .editorconfig - rules for code editors based on company's code guidelines
  • .eslintrc.yml - configuration for Javascript linter
  • .sass-lint.yml - configuration for SASS/SCSS linter
  • gulpfile.babel.js - Gulp file for automations
  • package-lock.json - lock file for package.json; makes sure that the same versions of Node modules are installed across env
  • package.json - Node modules used in mod-site

Installation

mod-site is added as a dependant package (in package.json) to all S3 sites by default.

modForm object

Init modForm for windows trade example:

modForm.init({
  vertical: 'windows'
});

modForm.init() method options

OptionRequiredDefault valueDescription
verticalYesnullForm's vertical. Possible options are: solar, windows, roof, hvac
formYes$('#form')jQuery form object
formLoadingClsYesform--loadingCSS class for a loading state of the form
stepsSelectorYesdata-bind="step"CSS selector for form's steps
stepActiveClsYesstep--activeactive step CSS class
tcpaCopyYes$('#tcpa-copy')jQuery object of a TCPA copy block
maskedPhoneFieldsNo$('#form').find(':inputname="homePhone"')jQuery object of inputs to add phone mask to
numericsOnlyFieldsNo$('#form').find(':inputname="zip", :inputname="zip1"')jQuery object of digits only inputs (e.g. phone and zip)
addressFieldNo$('#form').find(':inputname="address"')jQuery object of an address field
stateFieldNo$('#form').find(':inputname="state"')jQuery object of a state field
cityFieldNo$('#form').find(':inputname="city"')jQuery object of a city field
zip1FieldNo$('#form').find(':inputname="zip1"')jQuery object of secondary zip field
zipFieldYes$('#form').find(':inputname="zip"')jQuery object of primary zip field
repairFieldNo$('#form').find(':inputname="repair"')jQuery object of repair field
hvacWouldReplaceBlockNo$('#hvac-would-replace-block')HVAC only. Block that contains wouldReplace control.
hvacSystemTypeFieldNo$('#form').find(':inputname="hvacSystemType"')HVAC only. System type field.
hvacFuelTypeBlockNo$('#hvac-fuel-type-block')HVAC only. Block that contains hvacFuelType control.
hvacSystemTypesWithFuelNo'Central Heating', 'Boiler'HVAC only. Array of hvac system types (lowercase) that require fuel type selection.
fieldErrorClsYeshas-errorCSS error class.
errorParentClsNoparent-errorCSS class of a field parent which will get fieldErrorCls on error.
gaTrackerNomainGA tracker to use
thankyouPageYes/thankyou/Thankyou page URL.
landingPageNowindow.location.hrefLanding page URL.

modForm.init() method Callbacks

CallbackOptionsReturnDescription
formSubmittingCallbackformDataformDataFires right before form is submitted. Allows to change data that will be sent to the API. If you return false inside the callback, the submission will stop.
formSubmitSuccessCallbackresponseFires when submitting form data to server was successful. Returns server response. Return false inside this callback to stop form from redirecting to TY page.
formSubmitErrorCallbackresponseFires when submitting form data to server returned an error. Returns server response.
stepChangingCallbackoldStepId, stepIdstepIdFires right before the step switches. Return stepId to switch to that step or false to stop
stepChangedCallbackoldStepId, stepIdFires right after the step was switched.
zipCodeValidatedgeoDataFires right after the zip code has been validated on the server. Returns geo data: city and state for this zip code.

modForm methods

Below are most useful methods of the modForm object.

MethodOptionsReturnDescription
showStepstepIdShows form's step by id.
showNextStepShows form's next step.
showPrevStepShows form's prev step.
getCurrentStep$stepReturns form's current step as a jQuery object.
isCurrentStepLasttrue or falseReturns true/false if current step is the last one in the form.
getFormDataObjectReturns form's data as a key/value object.

Templates

We use Handlebars.js as a template engine. It allows us to use includes, loops, variables, etc. in our templates.

Available variables

VariableTypeExampleDescription
yearInteger{{year}}Current year.
tcpaFunction{{#x 'this.tcpa("Get matches", "Modernize")'}}{{/x}}Shows TCPA copy. You can pass in button name and company name as properties.
formErrorsObject{{formErrors.firstName}}Form errors. Support properties: firstName, lastName, streetAddress, city, state, zip, email, homePhone, tradeQuestion
statesArray{{#each states}} ... {{/each}}
solar.shadeArray{{#each solar.shade}} ... {{/each}}
solar.electricBillArray{{#each solar.electricBill}} ... {{/each}}
windows.repairArray{{#each windows.repair}} ... {{/each}}
windows.repairArray{{#each windows.repair}} ... {{/each}}
windows.hearArray{{#each windows.hear}} ... {{/each}}
windows.styleArray{{#each windows.style}} ... {{/each}}
hvac.projectArray{{#each hvac.project}} ... {{/each}}
hvac.repairArray{{#each hvac.repair}} ... {{/each}}
hvac.hvacSystemFuelTypesArray{{#each hvac.hvacSystemFuelTypes}} ... {{/each}}
hvac.hvacSystemTypesArray{{#each hvac.hvacSystemTypes}} ... {{/each}}
hvac.hvacFuelTypesArray{{#each hvac.hvacFuelTypes}} ... {{/each}}
roofing.repairArray{{#each roofing.repair}} ... {{/each}}
roofing.materialArray{{#each roofing.material}} ... {{/each}}

Using partials

Example: including VWO & GTM snippets into a project:

<!DOCTYPE html>
<head lang="en">
  {{ fileInclude 'node_modules/mod-site/src/templates/_partials/scripts/visual-website-optimizer.html' }}
  {{ fileInclude 'node_modules/mod-site/src/templates/_partials/scripts/google-tag-manager-head.html' }}
  ...
</head>
<body>
  {{ fileInclude 'node_modules/mod-site/src/templates/_partials/scripts/google-tag-manager-body.html' }}
  ...

You can use variables from mod-site package and project itself inside any template.

Example: displaying hvacSystemType select using data from mod-site:

<select class="form-control" name="hvacSystemType" data-required="nonempty">
  <option value="">- Select system -</option>
  {{#each hvac.hvacSystemTypes}}
  <option value="{{this.value}}">{{this.name}}</option>
  {{/each}}
</select>

More on using variables and conditions can be found on Handlebars.js website.

Form and steps markup

modForm object is flexible, and you can pass you own jQuery selector for steps, but the following markup is default:

<!-- Form -->
<form class="form" id="form" method="" action="" novalidate="">
  <!-- Step 1 -->
  <div class="step step--active" data-bind="step" id="step-1">
    ...
  </div>
  <!--/Step 1 -->

  <!-- Step 2 -->
  <div class="step" data-bind="step" id="step-2">
    ...
  </div>
  <!--/Step 2 -->

  <!-- Step 3 -->
  <div class="step" data-bind="step" id="step-3">
    ...
    <div class="form-group">
      <button class="btn btn-primary" type="submit">
        Get matches &rarr;
      </button>
    </div>

    <div class="tcpa-copy">
      <input name="originLeadId" id="originLeadId" type="hidden" />
      <input name="leadToken" id="leadid_token" type="hidden" />
      <input id="leadid_tcpa_disclosure" type="hidden" />
      <label for="leadid_tcpa_disclosure" id="tcpa-copy">
        {{#x 'this.tcpa("Get matches")'}}{{/x}}
      </label>
    </div>
  </div>
  <!--/Step 3 -->
</form>
<!--/Form -->

Validation and steps logic

When user clickes on submit button inside step 1 (or submits it using Enter from a text field), modForm will loop through all required fields inside step 1 and validate them. If there's an invalid field, it will be highlighted and the form won't be switched to the next step.

If step is valid, modForm will:

  • check if step is not last (in DOM):
    • If step contains input with name zip or zip1, it will freeze the form and validate its value with the backend:
      • if it is valid, it will proceed;
      • if not, error will be shown;
    • If the step is valid, it will switch to the next step in the DOM;
  • if step is last (in DOM), modForm will send data to the backend:
    • if backend responds with errors, it will highlight all fields with errors and switch the form to the first step that has invalid fields;
    • if backend responds with success, it will redirect to the thankyou page.

You can use modSite callbacks and methods to alter the logic (e.g. to switch to specific step when user selected homeowner = No).

Fields validation and errors

modForms supports the following validation methods:

  • nonempty - value of a control should be non-empty
  • email - expects valid email address
  • phone - expects valid US phone number
  • zip - expects valid US zip code
  • regex - custom Regex
  • int - expects integer value (min and max are optional)

Validation method for a control is set in html attribute data-required.

Example: required email control with error message

<div class="parent-error">
  <input type="email" name="email" placeholder="Email" class="form-control" data-required="email" />
  <div class="form-error">
    {{formErrors.email}}
  </div>
</div>

More details about the markup:

  • data-required="email" on input defines validation method
  • wrapper <div class="parent-error"> will get class has-error if this field is not valid
  • {{formErrors.email}} is a default error message for invalid email field

Setting up modForm

modForm requires the following files to work:

  • /node_modules/jquery/dist/jquery.js
  • /node_modules/jquery-mask-plugin/dist/jquery.mask.min.js
  • /node_modules/mod-site/src/scripts/mod-utils.js
  • /node_modules/mod-site/src/scripts/mod-form.js

Default options for modForm can be found in mod-form.js file (with comments). The only required setting is vertical.

Example: setting up modForm for a windows form

modForm.init({
  vertical: 'windows'
});

License

This project is licensed under the MIT license.

Copyright (c) 2017 Modernize.

5.67.1-beta.3

4 years ago

5.67.2

4 years ago

5.67.1-beta.2

4 years ago

5.67.1-beta.1

4 years ago

5.67.1

4 years ago

5.66.3-beta.1

4 years ago

5.66.2-beta.8

4 years ago

5.66.2-beta.9

4 years ago

5.66.2-beta.7

4 years ago

5.67.0

4 years ago

5.66.5-beta.5

4 years ago

5.66.7

4 years ago

5.66.5-beta.2

4 years ago

5.66.5-beta.1

4 years ago

5.66.6

4 years ago

5.66.2-beta.5

4 years ago

5.66.5

4 years ago

5.66.4

4 years ago

5.66.2-beta.3

4 years ago

5.66.2-beta.2

4 years ago

5.66.2-beta.1

4 years ago

5.66.3

4 years ago

5.66.2

4 years ago

5.66.1

4 years ago

5.66.0

4 years ago

5.66.0-beta.3

4 years ago

5.66.0-beta.2

4 years ago

5.66.0-beta.1

4 years ago

5.65.2

4 years ago

5.65.1-beta.1

4 years ago

5.65.1

4 years ago

5.65.0-beta.1

4 years ago

5.65.0

4 years ago

5.64.4-beta.1

4 years ago

5.64.1-beta.2

4 years ago

5.64.4

4 years ago

5.64.2

4 years ago

5.64.1

4 years ago

5.64.1-beta.1

4 years ago

5.64.0

4 years ago

5.63.3

4 years ago

5.63.2

4 years ago

5.63.1

4 years ago

5.64.0-beta.1

4 years ago

5.63.0

4 years ago

5.62.5

4 years ago

5.62.4

4 years ago

5.62.0-beta.5

4 years ago

5.62.0-beta.6

4 years ago

5.62.0-beta.4

4 years ago

5.62.0-beta.3

4 years ago

5.63.0-beta.1

4 years ago

5.62.0-beta.2

4 years ago

5.62.1

4 years ago

5.62.0-beta.1

4 years ago

5.62.0

4 years ago

5.61.4

4 years ago

5.60.1-beta.2

4 years ago

5.61.3

4 years ago

5.61.2

4 years ago

5.61.1

4 years ago

5.61.0

4 years ago

5.60.1-beta.1

4 years ago

5.59.0-beta.13

4 years ago

5.60.1

4 years ago

5.59.0-beta.12

4 years ago

5.59.0-beta.11

4 years ago

5.59.0-beta.10

4 years ago

5.59.0-beta.9

4 years ago

5.60.0

4 years ago

5.59.5

4 years ago

5.60.0-beta.1

4 years ago

5.59.4

4 years ago

5.59.3

4 years ago

5.59.2

4 years ago

5.59.1

4 years ago

5.59.0-beta.8

4 years ago

5.59.0-beta.7

4 years ago

5.59.0-beta.6

4 years ago

5.59.0-beta.5

4 years ago

5.59.0-beta.4

4 years ago

5.59.0-beta.3

4 years ago

5.59.0-beta.2

4 years ago

5.59.0

4 years ago

5.59.0-beta.1

4 years ago

5.58.0

4 years ago

5.57.6-beta.6

4 years ago

5.57.6-beta.5

4 years ago

5.57.6-beta.4

4 years ago

5.57.9-beta.1

4 years ago

5.57.6-beta.3

4 years ago

5.57.6-beta.2

4 years ago

5.58.0-beta.1

4 years ago

5.57.6-beta.1

4 years ago

5.57.6

4 years ago

5.57.5-beta.1

4 years ago

5.57.5

5 years ago

6.3.0

5 years ago

6.2.0

5 years ago

5.57.4

5 years ago

5.57.3

5 years ago

5.57.2

5 years ago

5.57.1

5 years ago

5.57.0

5 years ago

5.56.9

5 years ago

5.56.8-beta.2

5 years ago

5.56.8-beta.1

5 years ago

5.56.8

5 years ago

6.1.0

5 years ago

5.56.7

5 years ago

6.0.1-beta.1

5 years ago

5.56.6

5 years ago

5.56.5

5 years ago

5.56.4

5 years ago

5.56.3

5 years ago

5.56.2

5 years ago

5.56.1

5 years ago

5.56.0

5 years ago

5.55.0

5 years ago

5.54.6

5 years ago

5.54.5

5 years ago

5.54.4

5 years ago

5.54.3

5 years ago

5.54.2

5 years ago

5.54.1

5 years ago

5.54.0-beta.3

5 years ago

5.54.0

5 years ago

5.54.0-beta.2

5 years ago

5.53.6

5 years ago

5.53.4

5 years ago

5.53.3

5 years ago

5.53.2

5 years ago

5.53.1-beta.1

5 years ago

5.53.0-beta.2

5 years ago

5.53.1

5 years ago

5.53.0-beta.1

5 years ago

5.53.0

5 years ago

5.52.1-beta.0

5 years ago

5.52.7

5 years ago

5.50.4-beta.5

5 years ago

5.52.1

5 years ago

5.52.6

5 years ago

5.52.5

5 years ago

5.50.4-beta.4

5 years ago

5.52.0

5 years ago

5.50.4-beta.3

5 years ago

5.50.4-beta.2

5 years ago

5.50.4-beta.1

5 years ago

5.51.9

5 years ago

5.51.8

5 years ago

5.51.7

5 years ago

5.51.6

5 years ago

5.51.5

5 years ago

5.51.4

5 years ago

5.51.3

5 years ago

5.51.2

5 years ago

5.51.1

5 years ago

5.51.0

5 years ago

5.50.9

5 years ago

5.50.8

5 years ago

5.50.7

5 years ago

5.50.6

5 years ago

5.50.5

5 years ago

5.50.4

5 years ago

5.50.3

5 years ago

5.50.2

5 years ago

5.50.1

5 years ago

5.50.0

5 years ago

5.49.0

5 years ago

5.48.0

5 years ago

5.46.0-beta.3

5 years ago

5.46.0-beta.2

5 years ago

5.46.0-beta.1

5 years ago

5.47.0

5 years ago

7.0.0

5 years ago

6.0.1

5 years ago

6.0.0

5 years ago

5.46.0

5 years ago

5.45.0

5 years ago

5.44.1-beta

5 years ago

5.44.0

5 years ago

5.41.2-beta.2

5 years ago

5.43.0

5 years ago

5.42.0

5 years ago

5.41.2-beta.1

5 years ago

5.42.0-beta.5

5 years ago

5.42.0-beta.4

5 years ago

5.41.2

5 years ago

5.41.1

5 years ago

5.43.0-beta.2

5 years ago

5.43.0-beta.1

5 years ago

5.40.0-beta.3

5 years ago

5.42.0-beta.3

5 years ago

5.41.0

5 years ago

5.40.0

5 years ago

5.42.0-beta.2

5 years ago

5.42.0-beta.1

5 years ago

5.39.2

5 years ago

5.40.0-beta.2

5 years ago

5.41.0-beta.2

5 years ago

5.41.0-beta.1

5 years ago

5.39.1

5 years ago

5.40.0-beta.1

5 years ago

5.39.0

5 years ago

5.38.1-beta.1

5 years ago

5.38.1

5 years ago

5.0.38

5 years ago

5.0.37-beta.1

5 years ago

5.0.37

5 years ago

5.0.36

5 years ago

5.0.35-beta.1

5 years ago

5.0.35

5 years ago

5.0.34

5 years ago

5.0.32-beta.1

5 years ago

5.0.33

5 years ago

5.0.32

5 years ago

5.0.31-beta.1

5 years ago

5.0.31

5 years ago

5.0.29-beta.6

5 years ago

5.0.30-beta.2

5 years ago

5.0.29-beta.5

5 years ago

5.0.29-beta.4

5 years ago

5.0.29-beta.3

5 years ago

5.0.30-beta.1

5 years ago

5.0.29-beta.2

5 years ago

5.0.30

5 years ago

5.0.29-beta.1

5 years ago

5.0.29

5 years ago

5.0.28-beta.2

5 years ago

5.0.27-beta.2

5 years ago

5.0.27-beta.1

5 years ago

5.0.28

5 years ago

5.0.26-beta.5

5 years ago

5.0.27

5 years ago

5.0.26-beta.4

5 years ago

5.0.26-beta.3

5 years ago

5.0.26-beta.2

5 years ago

5.0.26-beta.1

5 years ago

5.0.26

5 years ago

5.0.25

5 years ago

5.0.24

5 years ago

5.0.23

5 years ago

5.0.23-beta.3

5 years ago

5.0.22

5 years ago

5.0.24-beta.1

5 years ago

5.0.21-beta.1

5 years ago

5.0.23-beta.2

5 years ago

5.0.22-beta.6

5 years ago

5.0.22-beta.5

5 years ago

5.0.22-beta.4

5 years ago

5.0.23-beta.1

5 years ago

5.0.22-beta.3

5 years ago

5.0.22-beta.2

5 years ago

5.0.22-beta.1

5 years ago

5.0.21

5 years ago

5.0.20

5 years ago

5.0.19

5 years ago

5.0.19-beta.1

5 years ago

5.0.18

5 years ago

5.0.17-beta.2

5 years ago

5.0.17-beta.1

5 years ago

5.0.17

5 years ago

5.0.15-beta.2

5 years ago

5.0.16-beta.1

5 years ago

5.0.16

5 years ago

5.0.15

5 years ago

5.0.14

5 years ago

5.0.15-beta.1

5 years ago

5.0.13

5 years ago

5.0.12

5 years ago

5.0.11

5 years ago

5.0.10

5 years ago

5.0.9

5 years ago

5.0.2-beta.10

5 years ago

5.0.9-beta.1

5 years ago

4.1.17

5 years ago

5.0.8

5 years ago

5.0.2-beta.9

5 years ago

4.1.16

5 years ago

5.0.7

5 years ago

5.0.6

5 years ago

4.1.15

5 years ago

4.1.12-beta.4

5 years ago

5.0.5

5 years ago

5.0.4

5 years ago

5.0.2-beta.8

5 years ago

5.0.2-beta.7

5 years ago

4.1.14-beta.6

5 years ago

5.0.2-beta.6

5 years ago

5.0.3-beta.0

5 years ago

5.0.3

5 years ago

5.0.2-beta.5

5 years ago

5.0.2-beta.4

5 years ago

5.0.2-beta.3

5 years ago

5.0.2-beta.2

5 years ago

4.1.12-beta.3

5 years ago

5.0.2-beta.1

5 years ago

5.0.2-beta.0

5 years ago

4.1.12-beta.2

5 years ago

5.0.2

5 years ago

4.1.14-beta.5

5 years ago

4.1.14-beta.4

5 years ago

4.1.14-beta.3

5 years ago

4.1.14-beta.2

5 years ago

4.1.14-beta.1

5 years ago

4.1.14-beta.0

5 years ago

5.0.1

5 years ago

4.1.12-beta.1

5 years ago

4.1.14

5 years ago

4.1.13

5 years ago

4.1.12

5 years ago

4.1.11

5 years ago

4.1.13-beta.2

5 years ago

4.1.13-beta.1

5 years ago

4.1.13-beta.0

5 years ago

4.1.12-beta.0

5 years ago

4.1.10

5 years ago

5.0.0

5 years ago

3.12.19

5 years ago

4.0.11-beta.0

5 years ago

4.0.10

5 years ago

4.0.9

5 years ago

3.12.18

5 years ago

4.0.8

5 years ago

4.0.7

5 years ago

4.0.6

5 years ago

4.0.5

5 years ago

4.0.4

5 years ago

3.12.16

5 years ago

3.12.17

5 years ago

4.0.3

5 years ago

4.0.2

5 years ago

4.0.1

5 years ago

4.0.0

5 years ago

3.12.15

5 years ago

3.12.14

5 years ago

3.12.13

5 years ago

3.12.12

5 years ago

3.12.11

6 years ago

3.12.10

6 years ago

3.12.9

6 years ago

3.12.8

6 years ago

3.12.7

6 years ago

3.12.6

6 years ago

3.12.5

6 years ago

3.12.4

6 years ago

3.12.3

6 years ago

3.12.2

6 years ago

3.12.1

6 years ago

3.12.0

6 years ago

3.11.6

6 years ago

3.11.5

6 years ago

3.11.4

6 years ago

3.11.3

6 years ago

3.11.2

6 years ago

3.11.1

6 years ago

3.11.0

6 years ago

3.10.3

6 years ago

3.10.2

6 years ago

3.10.1

6 years ago

3.10.0

6 years ago

3.9.10

6 years ago

3.9.9

6 years ago

3.9.8

6 years ago

3.9.7

6 years ago

3.9.6

6 years ago

3.9.5

6 years ago

3.9.4

6 years ago

3.9.3

6 years ago

3.9.2

6 years ago

3.9.1

6 years ago

3.9.0

6 years ago

3.8.3

6 years ago

3.8.2

6 years ago

3.8.1

6 years ago

3.8.0

6 years ago

3.7.6

6 years ago

3.7.5

6 years ago

3.7.4

6 years ago

3.7.3

6 years ago

3.7.2

6 years ago

3.7.1

6 years ago

3.7.0

6 years ago

3.6.0

6 years ago

3.5.11

6 years ago

3.5.10

6 years ago

3.5.9

6 years ago

3.5.8

6 years ago

3.5.7

6 years ago

3.5.6

6 years ago

3.5.5

6 years ago

3.5.4

6 years ago

3.5.3

6 years ago

3.5.2

6 years ago

3.5.1

6 years ago

3.5.0

6 years ago

3.4.1

6 years ago

3.4.0

6 years ago

3.3.2

6 years ago

3.3.1

6 years ago

3.3.0

6 years ago

3.2.18

6 years ago

3.2.17

6 years ago

3.2.16

6 years ago

3.2.15

6 years ago

3.2.14

6 years ago

3.2.13

6 years ago

3.2.12

6 years ago

3.2.11

6 years ago

3.2.10

6 years ago

3.2.9

6 years ago

3.2.8

6 years ago

3.2.7

6 years ago

3.2.6

6 years ago

3.2.5

6 years ago

3.2.4

6 years ago

3.2.3

6 years ago

3.2.2

6 years ago

3.2.1

6 years ago

3.2.0

6 years ago

3.1.0

6 years ago

3.0.11

6 years ago

3.0.10

6 years ago

3.0.9

6 years ago

3.0.8

6 years ago

3.0.7

6 years ago

3.0.6

6 years ago

3.0.5

6 years ago

3.0.4

6 years ago

3.0.2

6 years ago

3.0.1

6 years ago

3.0.0

6 years ago

2.3.6

7 years ago

2.3.5

7 years ago

2.3.4

7 years ago

2.3.3

7 years ago

2.3.2

7 years ago

2.3.1

7 years ago

2.3.0

7 years ago

2.2.15

7 years ago

2.2.14

7 years ago

2.2.13

7 years ago

2.2.12

7 years ago

2.2.11

7 years ago

2.2.10

7 years ago

2.2.9

7 years ago

2.2.8

7 years ago

2.2.7

7 years ago

2.2.6

7 years ago

2.2.5

7 years ago

2.2.4

7 years ago

2.2.3

7 years ago

2.2.2

7 years ago

2.2.1

7 years ago

2.2.0

7 years ago

2.1.34

7 years ago

2.1.33

7 years ago

2.1.32

7 years ago

2.1.30

7 years ago

2.1.29

7 years ago

2.1.28

7 years ago

2.1.27

7 years ago

2.1.26

7 years ago

2.1.25

7 years ago

2.1.24

7 years ago

2.1.23

7 years ago

2.1.22

7 years ago

2.1.21

7 years ago

2.1.20

7 years ago

2.1.19

7 years ago

2.1.17

7 years ago

2.1.16

7 years ago

2.1.15

7 years ago

2.1.14

7 years ago

2.1.13

7 years ago

2.1.12

7 years ago

2.1.11

7 years ago

2.1.10

7 years ago

2.1.9

7 years ago

2.1.8

7 years ago

2.1.7

7 years ago

2.1.6

7 years ago

2.1.5

7 years ago

2.1.4

7 years ago

2.1.3

7 years ago

2.1.2

7 years ago

2.1.1

7 years ago

2.1.0

7 years ago

2.0.4

7 years ago

2.0.3

7 years ago

1.0.9

7 years ago

2.0.2

7 years ago

2.0.1

7 years ago

2.0.0

7 years ago

1.0.8

7 years ago

1.0.7

7 years ago

1.0.6

7 years ago

1.0.5

7 years ago

1.0.4

7 years ago

1.0.3

7 years ago

1.0.0

7 years ago