Changeset 105357 in spip-zone


Ignore:
Timestamp:
Jul 17, 2017, 3:15:03 PM (2 years ago)
Author:
real3t@…
Message:

Mise à jour de la library de 1.2.1 en 2.2.1 (merci Stéphane pour le signalement sur https://contrib.spip.net/Sidr-Menu-de-cote-Responsive-4391#forum492894)

Location:
_plugins_/sidr
Files:
2 added
5 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/sidr/css/jquery.sidr.dark.css

    r78042 r105357  
    1 /* line 3, ../../src/scss/sidr/_base.scss */
    21.sidr {
    3   /* Default Settings */
    4   display: none;
    5   position: absolute;
     2  display: block;
    63  position: fixed;
    74  top: 0;
     
    96  z-index: 999999;
    107  width: 260px;
    11   overflow-x: none;
     8  overflow-x: hidden;
    129  overflow-y: auto;
    13   /* Theme Settings */
    1410  font-family: "lucida grande", tahoma, verdana, arial, sans-serif;
    1511  font-size: 15px;
    16   background: #333333;
    17   color: white;
    18   -webkit-box-shadow: inset 0 0 5px 5px #222222;
    19   -moz-box-shadow: inset 0 0 5px 5px #222222;
    20   box-shadow: inset 0 0 5px 5px #222222;
     12  background: #333;
     13  color: #fff;
     14  box-shadow: 0 0 5px 5px #222 inset;
    2115}
    22 /* line 15, ../../src/scss/sidr/_base.scss */
    2316.sidr .sidr-inner {
    2417  padding: 0 0 15px;
    2518}
    26 /* line 18, ../../src/scss/sidr/_base.scss */
    2719.sidr .sidr-inner > p {
    2820  margin-left: 15px;
    2921  margin-right: 15px;
    3022}
    31 /* line 24, ../../src/scss/sidr/_base.scss */
    3223.sidr.right {
    3324  left: auto;
    3425  right: -260px;
    3526}
    36 /* line 29, ../../src/scss/sidr/_base.scss */
    3727.sidr.left {
    3828  left: -260px;
    3929  right: auto;
    4030}
    41 /* line 41, ../../src/scss/sidr/_base.scss */
    42 .sidr h1, .sidr h2, .sidr h3, .sidr h4, .sidr h5, .sidr h6 {
     31.sidr h1,
     32.sidr h2,
     33.sidr h3,
     34.sidr h4,
     35.sidr h5,
     36.sidr h6 {
     37  background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzRkNGQ0ZCIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzFhMWExYSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');
     38  background-size: 100%;
     39  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #4d4d4d), color-stop(100%, #1a1a1a));
     40  background-image: -moz-linear-gradient(#4d4d4d, #1a1a1a);
     41  background-image: -webkit-linear-gradient(#4d4d4d, #1a1a1a);
     42  background-image: linear-gradient(#4d4d4d, #1a1a1a);
    4343  font-size: 11px;
    4444  font-weight: normal;
    4545  padding: 0 15px;
    4646  margin: 0 0 5px;
    47   color: white;
     47  color: #fff;
    4848  line-height: 24px;
    49   background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #4d4d4d), color-stop(100%, #1a1a1a));
    50   background-image: -webkit-linear-gradient(#4d4d4d, #1a1a1a);
    51   background-image: -moz-linear-gradient(#4d4d4d, #1a1a1a);
    52   background-image: -o-linear-gradient(#4d4d4d, #1a1a1a);
    53   background-image: linear-gradient(#4d4d4d, #1a1a1a);
    54   -webkit-box-shadow: 0 5px 5px 3px rgba(0, 0, 0, 0.2);
    55   -moz-box-shadow: 0 5px 5px 3px rgba(0, 0, 0, 0.2);
    5649  box-shadow: 0 5px 5px 3px rgba(0, 0, 0, 0.2);
    5750}
    58 /* line 52, ../../src/scss/sidr/_base.scss */
    5951.sidr p {
    6052  font-size: 13px;
    6153  margin: 0 0 12px;
    6254}
    63 /* line 55, ../../src/scss/sidr/_base.scss */
    6455.sidr p a {
    6556  color: rgba(255, 255, 255, 0.9);
    6657}
    67 /* line 60, ../../src/scss/sidr/_base.scss */
    6858.sidr > p {
    6959  margin-left: 15px;
    7060  margin-right: 15px;
    7161}
    72 /* line 65, ../../src/scss/sidr/_base.scss */
    7362.sidr ul {
    7463  display: block;
     
    7867  border-bottom: 1px solid #4d4d4d;
    7968}
    80 /* line 72, ../../src/scss/sidr/_base.scss */
    8169.sidr ul li {
    8270  display: block;
     
    8674  border-bottom: 1px solid #1a1a1a;
    8775}
    88 /* line 81, ../../src/scss/sidr/_base.scss */
    8976.sidr ul li:hover, .sidr ul li.active, .sidr ul li.sidr-class-active {
    90   border-top: none;
     77  border-top: 0;
    9178  line-height: 49px;
    9279}
    93 /* line 85, ../../src/scss/sidr/_base.scss */
    94 .sidr ul li:hover > a, .sidr ul li:hover > span, .sidr ul li.active > a, .sidr ul li.active > span, .sidr ul li.sidr-class-active > a, .sidr ul li.sidr-class-active > span {
    95   -webkit-box-shadow: inset 0 0 15px 3px #222222;
    96   -moz-box-shadow: inset 0 0 15px 3px #222222;
    97   box-shadow: inset 0 0 15px 3px #222222;
     80.sidr ul li:hover > a,
     81.sidr ul li:hover > span, .sidr ul li.active > a,
     82.sidr ul li.active > span, .sidr ul li.sidr-class-active > a,
     83.sidr ul li.sidr-class-active > span {
     84  box-shadow: 0 0 15px 3px #222 inset;
    9885}
    99 /* line 90, ../../src/scss/sidr/_base.scss */
    100 .sidr ul li a, .sidr ul li span {
     86.sidr ul li a,
     87.sidr ul li span {
    10188  padding: 0 15px;
    10289  display: block;
    10390  text-decoration: none;
    104   color: white;
     91  color: #fff;
    10592}
    106 /* line 97, ../../src/scss/sidr/_base.scss */
    10793.sidr ul li ul {
    108   border-bottom: none;
     94  border-bottom: 0;
    10995  margin: 0;
    11096}
    111 /* line 100, ../../src/scss/sidr/_base.scss */
    11297.sidr ul li ul li {
    11398  line-height: 40px;
    11499  font-size: 13px;
    115100}
    116 /* line 104, ../../src/scss/sidr/_base.scss */
    117101.sidr ul li ul li:last-child {
    118   border-bottom: none;
     102  border-bottom: 0;
    119103}
    120 /* line 110, ../../src/scss/sidr/_base.scss */
    121104.sidr ul li ul li:hover, .sidr ul li ul li.active, .sidr ul li ul li.sidr-class-active {
    122   border-top: none;
     105  border-top: 0;
    123106  line-height: 41px;
    124107}
    125 /* line 114, ../../src/scss/sidr/_base.scss */
    126 .sidr ul li ul li:hover > a, .sidr ul li ul li:hover > span, .sidr ul li ul li.active > a, .sidr ul li ul li.active > span, .sidr ul li ul li.sidr-class-active > a, .sidr ul li ul li.sidr-class-active > span {
    127   -webkit-box-shadow: inset 0 0 15px 3px #222222;
    128   -moz-box-shadow: inset 0 0 15px 3px #222222;
    129   box-shadow: inset 0 0 15px 3px #222222;
     108.sidr ul li ul li:hover > a,
     109.sidr ul li ul li:hover > span, .sidr ul li ul li.active > a,
     110.sidr ul li ul li.active > span, .sidr ul li ul li.sidr-class-active > a,
     111.sidr ul li ul li.sidr-class-active > span {
     112  box-shadow: 0 0 15px 3px #222 inset;
    130113}
    131 /* line 119, ../../src/scss/sidr/_base.scss */
    132 .sidr ul li ul li a, .sidr ul li ul li span {
     114.sidr ul li ul li a,
     115.sidr ul li ul li span {
    133116  color: rgba(255, 255, 255, 0.8);
    134117  padding-left: 30px;
    135118}
    136 /* line 128, ../../src/scss/sidr/_base.scss */
    137119.sidr form {
    138120  margin: 0 15px;
    139121}
    140 /* line 132, ../../src/scss/sidr/_base.scss */
    141122.sidr label {
    142123  font-size: 13px;
    143124}
    144 /* line 146, ../../src/scss/sidr/_base.scss */
    145125.sidr input[type="text"],
    146126.sidr input[type="password"],
     
    153133.sidr input[type="time"],
    154134.sidr input[type="url"],
    155 .sidr textarea, .sidr select {
     135.sidr textarea,
     136.sidr select {
    156137  width: 100%;
    157138  font-size: 13px;
    158139  padding: 5px;
     140  -moz-box-sizing: border-box;
    159141  -webkit-box-sizing: border-box;
    160   -moz-box-sizing: border-box;
    161142  box-sizing: border-box;
    162143  margin: 0 0 10px;
    163   -webkit-border-radius: 2px;
    164   -moz-border-radius: 2px;
    165   -ms-border-radius: 2px;
    166   -o-border-radius: 2px;
    167144  border-radius: 2px;
    168   border: none;
     145  border: 0;
    169146  background: rgba(0, 0, 0, 0.1);
    170147  color: rgba(255, 255, 255, 0.6);
     
    172149  clear: both;
    173150}
    174 /* line 160, ../../src/scss/sidr/_base.scss */
    175151.sidr input[type=checkbox] {
    176152  width: auto;
     
    178154  clear: none;
    179155}
    180 /* line 167, ../../src/scss/sidr/_base.scss */
    181156.sidr input[type=button],
    182157.sidr input[type=submit] {
    183   color: #333333;
    184   background: white;
     158  color: #333;
     159  background: #fff;
    185160}
    186 /* line 171, ../../src/scss/sidr/_base.scss */
    187161.sidr input[type=button]:hover,
    188162.sidr input[type=submit]:hover {
  • _plugins_/sidr/css/jquery.sidr.light.css

    r78042 r105357  
    1 /* line 3, ../../src/scss/sidr/_base.scss */
    21.sidr {
    3   /* Default Settings */
    4   display: none;
    5   position: absolute;
     2  display: block;
    63  position: fixed;
    74  top: 0;
     
    96  z-index: 999999;
    107  width: 260px;
    11   overflow-x: none;
     8  overflow-x: hidden;
    129  overflow-y: auto;
    13   /* Theme Settings */
    1410  font-family: "lucida grande", tahoma, verdana, arial, sans-serif;
    1511  font-size: 15px;
    1612  background: #f8f8f8;
    17   color: #333333;
    18   -webkit-box-shadow: inset 0 0 5px 5px #ebebeb;
    19   -moz-box-shadow: inset 0 0 5px 5px #ebebeb;
    20   box-shadow: inset 0 0 5px 5px #ebebeb;
     13  color: #333;
     14  box-shadow: 0 0 5px 5px #ebebeb inset;
    2115}
    22 /* line 15, ../../src/scss/sidr/_base.scss */
    2316.sidr .sidr-inner {
    2417  padding: 0 0 15px;
    2518}
    26 /* line 18, ../../src/scss/sidr/_base.scss */
    2719.sidr .sidr-inner > p {
    2820  margin-left: 15px;
    2921  margin-right: 15px;
    3022}
    31 /* line 24, ../../src/scss/sidr/_base.scss */
    3223.sidr.right {
    3324  left: auto;
    3425  right: -260px;
    3526}
    36 /* line 29, ../../src/scss/sidr/_base.scss */
    3727.sidr.left {
    3828  left: -260px;
    3929  right: auto;
    4030}
    41 /* line 41, ../../src/scss/sidr/_base.scss */
    42 .sidr h1, .sidr h2, .sidr h3, .sidr h4, .sidr h5, .sidr h6 {
     31.sidr h1,
     32.sidr h2,
     33.sidr h3,
     34.sidr h4,
     35.sidr h5,
     36.sidr h6 {
     37  background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZmZmZmZiIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2RmZGZkZiIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');
     38  background-size: 100%;
     39  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(100%, #dfdfdf));
     40  background-image: -moz-linear-gradient(#ffffff, #dfdfdf);
     41  background-image: -webkit-linear-gradient(#ffffff, #dfdfdf);
     42  background-image: linear-gradient(#ffffff, #dfdfdf);
    4343  font-size: 11px;
    4444  font-weight: normal;
    4545  padding: 0 15px;
    4646  margin: 0 0 5px;
    47   color: #333333;
     47  color: #333;
    4848  line-height: 24px;
    49   background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ffffff), color-stop(100%, #dfdfdf));
    50   background-image: -webkit-linear-gradient(#ffffff, #dfdfdf);
    51   background-image: -moz-linear-gradient(#ffffff, #dfdfdf);
    52   background-image: -o-linear-gradient(#ffffff, #dfdfdf);
    53   background-image: linear-gradient(#ffffff, #dfdfdf);
    54   -webkit-box-shadow: 0 5px 5px 3px rgba(0, 0, 0, 0.2);
    55   -moz-box-shadow: 0 5px 5px 3px rgba(0, 0, 0, 0.2);
    5649  box-shadow: 0 5px 5px 3px rgba(0, 0, 0, 0.2);
    5750}
    58 /* line 52, ../../src/scss/sidr/_base.scss */
    5951.sidr p {
    6052  font-size: 13px;
    6153  margin: 0 0 12px;
    6254}
    63 /* line 55, ../../src/scss/sidr/_base.scss */
    6455.sidr p a {
    6556  color: rgba(51, 51, 51, 0.9);
    6657}
    67 /* line 60, ../../src/scss/sidr/_base.scss */
    6858.sidr > p {
    6959  margin-left: 15px;
    7060  margin-right: 15px;
    7161}
    72 /* line 65, ../../src/scss/sidr/_base.scss */
    7362.sidr ul {
    7463  display: block;
     
    7867  border-bottom: 1px solid white;
    7968}
    80 /* line 72, ../../src/scss/sidr/_base.scss */
    8169.sidr ul li {
    8270  display: block;
     
    8674  border-bottom: 1px solid #dfdfdf;
    8775}
    88 /* line 81, ../../src/scss/sidr/_base.scss */
    8976.sidr ul li:hover, .sidr ul li.active, .sidr ul li.sidr-class-active {
    90   border-top: none;
     77  border-top: 0;
    9178  line-height: 49px;
    9279}
    93 /* line 85, ../../src/scss/sidr/_base.scss */
    94 .sidr ul li:hover > a, .sidr ul li:hover > span, .sidr ul li.active > a, .sidr ul li.active > span, .sidr ul li.sidr-class-active > a, .sidr ul li.sidr-class-active > span {
    95   -webkit-box-shadow: inset 0 0 15px 3px #ebebeb;
    96   -moz-box-shadow: inset 0 0 15px 3px #ebebeb;
    97   box-shadow: inset 0 0 15px 3px #ebebeb;
     80.sidr ul li:hover > a,
     81.sidr ul li:hover > span, .sidr ul li.active > a,
     82.sidr ul li.active > span, .sidr ul li.sidr-class-active > a,
     83.sidr ul li.sidr-class-active > span {
     84  box-shadow: 0 0 15px 3px #ebebeb inset;
    9885}
    99 /* line 90, ../../src/scss/sidr/_base.scss */
    100 .sidr ul li a, .sidr ul li span {
     86.sidr ul li a,
     87.sidr ul li span {
    10188  padding: 0 15px;
    10289  display: block;
    10390  text-decoration: none;
    104   color: #333333;
     91  color: #333;
    10592}
    106 /* line 97, ../../src/scss/sidr/_base.scss */
    10793.sidr ul li ul {
    108   border-bottom: none;
     94  border-bottom: 0;
    10995  margin: 0;
    11096}
    111 /* line 100, ../../src/scss/sidr/_base.scss */
    11297.sidr ul li ul li {
    11398  line-height: 40px;
    11499  font-size: 13px;
    115100}
    116 /* line 104, ../../src/scss/sidr/_base.scss */
    117101.sidr ul li ul li:last-child {
    118   border-bottom: none;
     102  border-bottom: 0;
    119103}
    120 /* line 110, ../../src/scss/sidr/_base.scss */
    121104.sidr ul li ul li:hover, .sidr ul li ul li.active, .sidr ul li ul li.sidr-class-active {
    122   border-top: none;
     105  border-top: 0;
    123106  line-height: 41px;
    124107}
    125 /* line 114, ../../src/scss/sidr/_base.scss */
    126 .sidr ul li ul li:hover > a, .sidr ul li ul li:hover > span, .sidr ul li ul li.active > a, .sidr ul li ul li.active > span, .sidr ul li ul li.sidr-class-active > a, .sidr ul li ul li.sidr-class-active > span {
    127   -webkit-box-shadow: inset 0 0 15px 3px #ebebeb;
    128   -moz-box-shadow: inset 0 0 15px 3px #ebebeb;
    129   box-shadow: inset 0 0 15px 3px #ebebeb;
     108.sidr ul li ul li:hover > a,
     109.sidr ul li ul li:hover > span, .sidr ul li ul li.active > a,
     110.sidr ul li ul li.active > span, .sidr ul li ul li.sidr-class-active > a,
     111.sidr ul li ul li.sidr-class-active > span {
     112  box-shadow: 0 0 15px 3px #ebebeb inset;
    130113}
    131 /* line 119, ../../src/scss/sidr/_base.scss */
    132 .sidr ul li ul li a, .sidr ul li ul li span {
     114.sidr ul li ul li a,
     115.sidr ul li ul li span {
    133116  color: rgba(51, 51, 51, 0.8);
    134117  padding-left: 30px;
    135118}
    136 /* line 128, ../../src/scss/sidr/_base.scss */
    137119.sidr form {
    138120  margin: 0 15px;
    139121}
    140 /* line 132, ../../src/scss/sidr/_base.scss */
    141122.sidr label {
    142123  font-size: 13px;
    143124}
    144 /* line 146, ../../src/scss/sidr/_base.scss */
    145125.sidr input[type="text"],
    146126.sidr input[type="password"],
     
    153133.sidr input[type="time"],
    154134.sidr input[type="url"],
    155 .sidr textarea, .sidr select {
     135.sidr textarea,
     136.sidr select {
    156137  width: 100%;
    157138  font-size: 13px;
    158139  padding: 5px;
     140  -moz-box-sizing: border-box;
    159141  -webkit-box-sizing: border-box;
    160   -moz-box-sizing: border-box;
    161142  box-sizing: border-box;
    162143  margin: 0 0 10px;
    163   -webkit-border-radius: 2px;
    164   -moz-border-radius: 2px;
    165   -ms-border-radius: 2px;
    166   -o-border-radius: 2px;
    167144  border-radius: 2px;
    168   border: none;
     145  border: 0;
    169146  background: rgba(0, 0, 0, 0.1);
    170147  color: rgba(51, 51, 51, 0.6);
     
    172149  clear: both;
    173150}
    174 /* line 160, ../../src/scss/sidr/_base.scss */
    175151.sidr input[type=checkbox] {
    176152  width: auto;
     
    178154  clear: none;
    179155}
    180 /* line 167, ../../src/scss/sidr/_base.scss */
    181156.sidr input[type=button],
    182157.sidr input[type=submit] {
    183158  color: #f8f8f8;
    184   background: #333333;
     159  background: #333;
    185160}
    186 /* line 171, ../../src/scss/sidr/_base.scss */
    187161.sidr input[type=button]:hover,
    188162.sidr input[type=submit]:hover {
  • _plugins_/sidr/javascript/README.md

    r73121 r105357  
    1 Sidr
    2 ============
     1#Sidr
    32
    4 This is the Bower package for the Sidr jQuery Plugin. For a further description, documentation and others visit: [http://www.berriart.com/sidr](http://www.berriart.com/sidr)
     3[![Build Status](https://travis-ci.org/artberri/sidr.svg?branch=master)](https://travis-ci.org/artberri/sidr) [![Code Climate](https://codeclimate.com/github/artberri/sidr/badges/gpa.svg)](https://codeclimate.com/github/artberri/sidr) [![Test Coverage](https://codeclimate.com/github/artberri/sidr/badges/coverage.svg)](https://codeclimate.com/github/artberri/sidr/coverage) [![Dependency Status](https://david-dm.org/artberri/sidr.svg)](https://david-dm.org/artberri/sidr) [![npm version](https://img.shields.io/npm/v/sidr.svg)](https://npmjs.org/package/sidr) [![bower version](https://img.shields.io/bower/v/sidr.svg)](http://bower.io/) [![License](https://img.shields.io/npm/l/sidr.svg)](https://github.com/artberri/sidr/blob/master/LICENSE)
     4
     5Sidr is a jQuery plugin for creating side menus and the easiest way for doing your menu responsive. It uses CSS3 transitions in modern browsers and fallbacks into jQuery.animate when they are not supported.
     6
     7For a further description, documentation and others visit: [http://www.berriart.com/sidr](http://www.berriart.com/sidr)
     8
     9## Development
     10
     11- Source hosted at [GitHub](https://github.com/artberri/sidr)
     12- If you have problems implenting this, ask about it in [StackOverflow](http://stackoverflow.com/search?q=sidr)
     13- Report issues and feature requests in [GitHub Issues](https://github.com/artberri/sidr/issues)
     14- Contributing: [CONTRIBUTING.md](CONTRIBUTING.md)
     15
     16Pull requests are very welcome! Make sure your patches are well tested. Please create a topic branch for every separate change you make.
     17
     18## Licensing
     19
     20Released under the MIT License [http://opensource.org/licenses/MIT](http://opensource.org/licenses/MIT)
     21
     22Copyright © 2013-2016 Alberto Varela ([http://www.berriart.com](http://www.berriart.com))
     23
     24Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
     25
     26The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
     27
     28THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  • _plugins_/sidr/javascript/jquery.sidr.js

    r78042 r105357  
    1 /*
    2  * Sidr
    3  * https://github.com/artberri/sidr
    4  *
    5  * Copyright (c) 2013 Alberto Varela
    6  * Licensed under the MIT license.
    7  */
    8 
    9 ;(function( $ ){
    10 
    11   var sidrMoving = false,
    12       sidrOpened = false;
    13 
    14   // Private methods
    15   var privateMethods = {
     1/*! sidr - v2.2.1 - 2016-02-17
     2 * http://www.berriart.com/sidr/
     3 * Copyright (c) 2013-2016 Alberto Varela; Licensed MIT */
     4
     5(function () {
     6  'use strict';
     7
     8  var babelHelpers = {};
     9
     10  babelHelpers.classCallCheck = function (instance, Constructor) {
     11    if (!(instance instanceof Constructor)) {
     12      throw new TypeError("Cannot call a class as a function");
     13    }
     14  };
     15
     16  babelHelpers.createClass = function () {
     17    function defineProperties(target, props) {
     18      for (var i = 0; i < props.length; i++) {
     19        var descriptor = props[i];
     20        descriptor.enumerable = descriptor.enumerable || false;
     21        descriptor.configurable = true;
     22        if ("value" in descriptor) descriptor.writable = true;
     23        Object.defineProperty(target, descriptor.key, descriptor);
     24      }
     25    }
     26
     27    return function (Constructor, protoProps, staticProps) {
     28      if (protoProps) defineProperties(Constructor.prototype, protoProps);
     29      if (staticProps) defineProperties(Constructor, staticProps);
     30      return Constructor;
     31    };
     32  }();
     33
     34  babelHelpers;
     35
     36  var sidrStatus = {
     37    moving: false,
     38    opened: false
     39  };
     40
     41  var helper = {
    1642    // Check for valids urls
    1743    // From : http://stackoverflow.com/questions/5717093/check-if-a-javascript-string-is-an-url
    18     isUrl: function (str) {
    19       var pattern = new RegExp('^(https?:\\/\\/)?'+ // protocol
    20         '((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|'+ // domain name
    21         '((\\d{1,3}\\.){3}\\d{1,3}))'+ // OR ip (v4) address
    22         '(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*'+ // port and path
    23         '(\\?[;&a-z\\d%_.~+=-]*)?'+ // query string
    24         '(\\#[-a-z\\d_]*)?$','i'); // fragment locator
    25       if(!pattern.test(str)) {
     44
     45    isUrl: function isUrl(str) {
     46      var pattern = new RegExp('^(https?:\\/\\/)?' + // protocol
     47      '((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.?)+[a-z]{2,}|' + // domain name
     48      '((\\d{1,3}\\.){3}\\d{1,3}))' + // OR ip (v4) address
     49      '(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*' + // port and path
     50      '(\\?[;&a-z\\d%_.~+=-]*)?' + // query string
     51      '(\\#[-a-z\\d_]*)?$', 'i'); // fragment locator
     52
     53      if (pattern.test(str)) {
     54        return true;
     55      } else {
    2656        return false;
    27       } else {
    28         return true;
    2957      }
    3058    },
    31     // Loads the content into the menu bar
    32     loadContent: function($menu, content) {
    33       $menu.html(content);
    34     },
     59
     60
    3561    // Add sidr prefixes
    36     addPrefix: function($element) {
    37       var elementId = $element.attr('id'),
    38           elementClass = $element.attr('class');
    39 
    40       if(typeof elementId === 'string' && '' !== elementId) {
    41         $element.attr('id', elementId.replace(/([A-Za-z0-9_.\-]+)/g, 'sidr-id-$1'));
    42       }
    43       if(typeof elementClass === 'string' && '' !== elementClass && 'sidr-inner' !== elementClass) {
    44         $element.attr('class', elementClass.replace(/([A-Za-z0-9_.\-]+)/g, 'sidr-class-$1'));
    45       }
     62    addPrefixes: function addPrefixes($element) {
     63      this.addPrefix($element, 'id');
     64      this.addPrefix($element, 'class');
    4665      $element.removeAttr('style');
    4766    },
    48     execute: function(action, name, callback) {
     67    addPrefix: function addPrefix($element, attribute) {
     68      var toReplace = $element.attr(attribute);
     69
     70      if (typeof toReplace === 'string' && toReplace !== '' && toReplace !== 'sidr-inner') {
     71        $element.attr(attribute, toReplace.replace(/([A-Za-z0-9_.\-]+)/g, 'sidr-' + attribute + '-$1'));
     72      }
     73    },
     74
     75
     76    // Check if transitions is supported
     77    transitions: function () {
     78      var body = document.body || document.documentElement,
     79          style = body.style,
     80          supported = false,
     81          property = 'transition';
     82
     83      if (property in style) {
     84        supported = true;
     85      } else {
     86        (function () {
     87          var prefixes = ['moz', 'webkit', 'o', 'ms'],
     88              prefix = undefined,
     89              i = undefined;
     90
     91          property = property.charAt(0).toUpperCase() + property.substr(1);
     92          supported = function () {
     93            for (i = 0; i < prefixes.length; i++) {
     94              prefix = prefixes[i];
     95              if (prefix + property in style) {
     96                return true;
     97              }
     98            }
     99
     100            return false;
     101          }();
     102          property = supported ? '-' + prefix.toLowerCase() + '-' + property.toLowerCase() : null;
     103        })();
     104      }
     105
     106      return {
     107        supported: supported,
     108        property: property
     109      };
     110    }()
     111  };
     112
     113  var $$2 = jQuery;
     114
     115  var bodyAnimationClass = 'sidr-animating';
     116  var openAction = 'open';
     117  var closeAction = 'close';
     118  var transitionEndEvent = 'webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend';
     119  var Menu = function () {
     120    function Menu(name) {
     121      babelHelpers.classCallCheck(this, Menu);
     122
     123      this.name = name;
     124      this.item = $$2('#' + name);
     125      this.openClass = name === 'sidr' ? 'sidr-open' : 'sidr-open ' + name + '-open';
     126      this.menuWidth = this.item.outerWidth(true);
     127      this.speed = this.item.data('speed');
     128      this.side = this.item.data('side');
     129      this.displace = this.item.data('displace');
     130      this.timing = this.item.data('timing');
     131      this.method = this.item.data('method');
     132      this.onOpenCallback = this.item.data('onOpen');
     133      this.onCloseCallback = this.item.data('onClose');
     134      this.onOpenEndCallback = this.item.data('onOpenEnd');
     135      this.onCloseEndCallback = this.item.data('onCloseEnd');
     136      this.body = $$2(this.item.data('body'));
     137    }
     138
     139    babelHelpers.createClass(Menu, [{
     140      key: 'getAnimation',
     141      value: function getAnimation(action, element) {
     142        var animation = {},
     143            prop = this.side;
     144
     145        if (action === 'open' && element === 'body') {
     146          animation[prop] = this.menuWidth + 'px';
     147        } else if (action === 'close' && element === 'menu') {
     148          animation[prop] = '-' + this.menuWidth + 'px';
     149        } else {
     150          animation[prop] = 0;
     151        }
     152
     153        return animation;
     154      }
     155    }, {
     156      key: 'prepareBody',
     157      value: function prepareBody(action) {
     158        var prop = action === 'open' ? 'hidden' : '';
     159
     160        // Prepare page if container is body
     161        if (this.body.is('body')) {
     162          var $html = $$2('html'),
     163              scrollTop = $html.scrollTop();
     164
     165          $html.css('overflow-x', prop).scrollTop(scrollTop);
     166        }
     167      }
     168    }, {
     169      key: 'openBody',
     170      value: function openBody() {
     171        if (this.displace) {
     172          var transitions = helper.transitions,
     173              $body = this.body;
     174
     175          if (transitions.supported) {
     176            $body.css(transitions.property, this.side + ' ' + this.speed / 1000 + 's ' + this.timing).css(this.side, 0).css({
     177              width: $body.width(),
     178              position: 'absolute'
     179            });
     180            $body.css(this.side, this.menuWidth + 'px');
     181          } else {
     182            var bodyAnimation = this.getAnimation(openAction, 'body');
     183
     184            $body.css({
     185              width: $body.width(),
     186              position: 'absolute'
     187            }).animate(bodyAnimation, {
     188              queue: false,
     189              duration: this.speed
     190            });
     191          }
     192        }
     193      }
     194    }, {
     195      key: 'onCloseBody',
     196      value: function onCloseBody() {
     197        var transitions = helper.transitions,
     198            resetStyles = {
     199          width: '',
     200          position: '',
     201          right: '',
     202          left: ''
     203        };
     204
     205        if (transitions.supported) {
     206          resetStyles[transitions.property] = '';
     207        }
     208
     209        this.body.css(resetStyles).unbind(transitionEndEvent);
     210      }
     211    }, {
     212      key: 'closeBody',
     213      value: function closeBody() {
     214        var _this = this;
     215
     216        if (this.displace) {
     217          if (helper.transitions.supported) {
     218            this.body.css(this.side, 0).one(transitionEndEvent, function () {
     219              _this.onCloseBody();
     220            });
     221          } else {
     222            var bodyAnimation = this.getAnimation(closeAction, 'body');
     223
     224            this.body.animate(bodyAnimation, {
     225              queue: false,
     226              duration: this.speed,
     227              complete: function complete() {
     228                _this.onCloseBody();
     229              }
     230            });
     231          }
     232        }
     233      }
     234    }, {
     235      key: 'moveBody',
     236      value: function moveBody(action) {
     237        if (action === openAction) {
     238          this.openBody();
     239        } else {
     240          this.closeBody();
     241        }
     242      }
     243    }, {
     244      key: 'onOpenMenu',
     245      value: function onOpenMenu(callback) {
     246        var name = this.name;
     247
     248        sidrStatus.moving = false;
     249        sidrStatus.opened = name;
     250
     251        this.item.unbind(transitionEndEvent);
     252
     253        this.body.removeClass(bodyAnimationClass).addClass(this.openClass);
     254
     255        this.onOpenEndCallback();
     256
     257        if (typeof callback === 'function') {
     258          callback(name);
     259        }
     260      }
     261    }, {
     262      key: 'openMenu',
     263      value: function openMenu(callback) {
     264        var _this2 = this;
     265
     266        var $item = this.item;
     267
     268        if (helper.transitions.supported) {
     269          $item.css(this.side, 0).one(transitionEndEvent, function () {
     270            _this2.onOpenMenu(callback);
     271          });
     272        } else {
     273          var menuAnimation = this.getAnimation(openAction, 'menu');
     274
     275          $item.css('display', 'block').animate(menuAnimation, {
     276            queue: false,
     277            duration: this.speed,
     278            complete: function complete() {
     279              _this2.onOpenMenu(callback);
     280            }
     281          });
     282        }
     283      }
     284    }, {
     285      key: 'onCloseMenu',
     286      value: function onCloseMenu(callback) {
     287        this.item.css({
     288          left: '',
     289          right: ''
     290        }).unbind(transitionEndEvent);
     291        $$2('html').css('overflow-x', '');
     292
     293        sidrStatus.moving = false;
     294        sidrStatus.opened = false;
     295
     296        this.body.removeClass(bodyAnimationClass).removeClass(this.openClass);
     297
     298        this.onCloseEndCallback();
     299
     300        // Callback
     301        if (typeof callback === 'function') {
     302          callback(name);
     303        }
     304      }
     305    }, {
     306      key: 'closeMenu',
     307      value: function closeMenu(callback) {
     308        var _this3 = this;
     309
     310        var item = this.item;
     311
     312        if (helper.transitions.supported) {
     313          item.css(this.side, '').one(transitionEndEvent, function () {
     314            _this3.onCloseMenu(callback);
     315          });
     316        } else {
     317          var menuAnimation = this.getAnimation(closeAction, 'menu');
     318
     319          item.animate(menuAnimation, {
     320            queue: false,
     321            duration: this.speed,
     322            complete: function complete() {
     323              _this3.onCloseMenu();
     324            }
     325          });
     326        }
     327      }
     328    }, {
     329      key: 'moveMenu',
     330      value: function moveMenu(action, callback) {
     331        this.body.addClass(bodyAnimationClass);
     332
     333        if (action === openAction) {
     334          this.openMenu(callback);
     335        } else {
     336          this.closeMenu(callback);
     337        }
     338      }
     339    }, {
     340      key: 'move',
     341      value: function move(action, callback) {
     342        // Lock sidr
     343        sidrStatus.moving = true;
     344
     345        this.prepareBody(action);
     346        this.moveBody(action);
     347        this.moveMenu(action, callback);
     348      }
     349    }, {
     350      key: 'open',
     351      value: function open(callback) {
     352        var _this4 = this;
     353
     354        // Check if is already opened or moving
     355        if (sidrStatus.opened === this.name || sidrStatus.moving) {
     356          return;
     357        }
     358
     359        // If another menu opened close first
     360        if (sidrStatus.opened !== false) {
     361          var alreadyOpenedMenu = new Menu(sidrStatus.opened);
     362
     363          alreadyOpenedMenu.close(function () {
     364            _this4.open(callback);
     365          });
     366
     367          return;
     368        }
     369
     370        this.move('open', callback);
     371
     372        // onOpen callback
     373        this.onOpenCallback();
     374      }
     375    }, {
     376      key: 'close',
     377      value: function close(callback) {
     378        // Check if is already closed or moving
     379        if (sidrStatus.opened !== this.name || sidrStatus.moving) {
     380          return;
     381        }
     382
     383        this.move('close', callback);
     384
     385        // onClose callback
     386        this.onCloseCallback();
     387      }
     388    }, {
     389      key: 'toggle',
     390      value: function toggle(callback) {
     391        if (sidrStatus.opened === this.name) {
     392          this.close(callback);
     393        } else {
     394          this.open(callback);
     395        }
     396      }
     397    }]);
     398    return Menu;
     399  }();
     400
     401  var $$1 = jQuery;
     402
     403  function execute(action, name, callback) {
     404    var sidr = new Menu(name);
     405
     406    switch (action) {
     407      case 'open':
     408        sidr.open(callback);
     409        break;
     410      case 'close':
     411        sidr.close(callback);
     412        break;
     413      case 'toggle':
     414        sidr.toggle(callback);
     415        break;
     416      default:
     417        $$1.error('Method ' + action + ' does not exist on jQuery.sidr');
     418        break;
     419    }
     420  }
     421
     422  var i;
     423  var $ = jQuery;
     424  var publicMethods = ['open', 'close', 'toggle'];
     425  var methodName;
     426  var methods = {};
     427  var getMethod = function getMethod(methodName) {
     428    return function (name, callback) {
    49429      // Check arguments
    50       if(typeof name === 'function') {
     430      if (typeof name === 'function') {
    51431        callback = name;
    52432        name = 'sidr';
    53       }
    54       else if(!name) {
     433      } else if (!name) {
    55434        name = 'sidr';
    56435      }
    57436
    58       // Declaring
    59       var $menu = $('#' + name),
    60           $body = $($menu.data('body')),
    61           $html = $('html'),
    62           menuWidth = $menu.outerWidth(true),
    63           speed = $menu.data('speed'),
    64           side = $menu.data('side'),
    65           displace = $menu.data('displace'),
    66           onOpen = $menu.data('onOpen'),
    67           onClose = $menu.data('onClose'),
    68           bodyAnimation,
    69           menuAnimation,
    70           scrollTop,
    71           bodyClass = (name === 'sidr' ? 'sidr-open' : 'sidr-open ' + name + '-open');
    72 
    73       // Open Sidr
    74       if('open' === action || ('toggle' === action && !$menu.is(':visible'))) {
    75         // Check if we can open it
    76         if( $menu.is(':visible') || sidrMoving ) {
    77           return;
    78         }
    79 
    80         // If another menu opened close first
    81         if(sidrOpened !== false) {
    82           methods.close(sidrOpened, function() {
    83             methods.open(name);
    84           });
    85 
    86           return;
    87         }
    88 
    89         // Lock sidr
    90         sidrMoving = true;
    91 
    92         // Left or right?
    93         if(side === 'left') {
    94           bodyAnimation = {left: menuWidth + 'px'};
    95           menuAnimation = {left: '0px'};
    96         }
    97         else {
    98           bodyAnimation = {right: menuWidth + 'px'};
    99           menuAnimation = {right: '0px'};
    100         }
    101 
    102         // Prepare page if container is body
    103         if($body.is('body')){
    104         scrollTop = $html.scrollTop();
    105         $html.css('overflow-x', 'hidden').scrollTop(scrollTop);
    106         }
    107 
    108         // Open menu
    109         if(displace){
    110           $body.addClass('sidr-animating').css({
    111           width: $body.width(),
    112           position: 'absolute'
    113           }).animate(bodyAnimation, speed, function() {
    114             $(this).addClass(bodyClass);
    115           });
    116         }
    117         else {
    118           setTimeout(function() {
    119             $(this).addClass(bodyClass);
    120           }, speed);
    121         }
    122         $menu.css('display', 'block').animate(menuAnimation, speed, function() {
    123           sidrMoving = false;
    124           sidrOpened = name;
    125           // Callback
    126           if(typeof callback === 'function') {
    127             callback(name);
    128           }
    129           $body.removeClass('sidr-animating');
    130         });
    131 
    132         // onOpen callback
    133         onOpen();
    134       }
    135       // Close Sidr
    136       else {
    137         // Check if we can close it
    138         if( !$menu.is(':visible') || sidrMoving ) {
    139           return;
    140         }
    141 
    142         // Lock sidr
    143         sidrMoving = true;
    144 
    145         // Right or left menu?
    146         if(side === 'left') {
    147           bodyAnimation = {left: 0};
    148           menuAnimation = {left: '-' + menuWidth + 'px'};
    149         }
    150         else {
    151           bodyAnimation = {right: 0};
    152           menuAnimation = {right: '-' + menuWidth + 'px'};
    153         }
    154 
    155         // Close menu
    156         if($body.is('body')){
    157         scrollTop = $html.scrollTop();
    158         $html.removeAttr('style').scrollTop(scrollTop);
    159         }
    160         $body.addClass('sidr-animating').animate(bodyAnimation, speed).removeClass(bodyClass);
    161         $menu.animate(menuAnimation, speed, function() {
    162           $menu.removeAttr('style').hide();
    163           $body.removeAttr('style');
    164           $('html').removeAttr('style');
    165           sidrMoving = false;
    166           sidrOpened = false;
    167           // Callback
    168           if(typeof callback === 'function') {
    169             callback(name);
    170           }
    171           $body.removeClass('sidr-animating');
    172         });
    173 
    174         // onClose callback
    175         onClose();
    176       }
    177     }
     437      execute(methodName, name, callback);
     438    };
    178439  };
    179 
    180   // Sidr public methods
    181   var methods = {
    182     open: function(name, callback) {
    183       privateMethods.execute('open', name, callback);
    184     },
    185     close: function(name, callback) {
    186       privateMethods.execute('close', name, callback);
    187     },
    188     toggle: function(name, callback) {
    189       privateMethods.execute('toggle', name, callback);
    190     },
    191     // I made a typo, so I mantain this method to keep backward compatibilty with 1.1.1v and previous
    192     toogle: function(name, callback) {
    193       privateMethods.execute('toggle', name, callback);
    194     }
    195   };
    196 
    197   $.sidr = function( method ) {
    198 
    199     if ( methods[method] ) {
    200       return methods[method].apply( this, Array.prototype.slice.call( arguments, 1 ));
    201     }
    202     else if ( typeof method === 'function' || typeof method === 'string' || ! method ) {
    203       return methods.toggle.apply( this, arguments );
    204     }
    205     else {
    206       $.error( 'Method ' +  method + ' does not exist on jQuery.sidr' );
    207     }
    208 
    209   };
    210 
    211   $.fn.sidr = function( options ) {
    212 
    213     var settings = $.extend( {
    214       name          : 'sidr', // Name for the 'sidr'
    215       speed         : 200,    // Accepts standard jQuery effects speeds (i.e. fast, normal or milliseconds)
    216       side          : 'left', // Accepts 'left' or 'right'
    217       source        : null,   // Override the source of the content.
    218       renaming      : true,   // The ids and classes will be prepended with a prefix when loading existent content
    219       body          : 'body',         // Page container selector,
    220       displace: true, // Displace the body content or not
    221       onOpen        : function() {},  // Callback when sidr opened
    222       onClose       : function() {}   // Callback when sidr closed
    223     }, options);
    224 
    225     var name = settings.name,
    226         $sideMenu = $('#' + name);
    227 
    228     // If the side menu do not exist create it
    229     if( $sideMenu.length === 0 ) {
    230       $sideMenu = $('<div />')
    231         .attr('id', name)
    232         .appendTo($('body'));
    233     }
    234 
    235     // Adding styles and options
    236     $sideMenu
    237       .addClass('sidr')
    238       .addClass(settings.side)
    239       .data({
    240         speed          : settings.speed,
    241         side           : settings.side,
    242         body           : settings.body,
    243         displace      : settings.displace,
    244         onOpen         : settings.onOpen,
    245         onClose        : settings.onClose
     440  for (i = 0; i < publicMethods.length; i++) {
     441    methodName = publicMethods[i];
     442    methods[methodName] = getMethod(methodName);
     443  }
     444
     445  function sidr(method) {
     446    if (method === 'status') {
     447      return sidrStatus;
     448    } else if (methods[method]) {
     449      return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
     450    } else if (typeof method === 'function' || typeof method === 'string' || !method) {
     451      return methods.toggle.apply(this, arguments);
     452    } else {
     453      $.error('Method ' + method + ' does not exist on jQuery.sidr');
     454    }
     455  }
     456
     457  var $$3 = jQuery;
     458
     459  function fillContent($sideMenu, settings) {
     460    // The menu content
     461    if (typeof settings.source === 'function') {
     462      var newContent = settings.source(name);
     463
     464      $sideMenu.html(newContent);
     465    } else if (typeof settings.source === 'string' && helper.isUrl(settings.source)) {
     466      $$3.get(settings.source, function (data) {
     467        $sideMenu.html(data);
    246468      });
    247 
    248     // The menu content
    249     if(typeof settings.source === 'function') {
    250       var newContent = settings.source(name);
    251       privateMethods.loadContent($sideMenu, newContent);
    252     }
    253     else if(typeof settings.source === 'string' && privateMethods.isUrl(settings.source)) {
    254       $.get(settings.source, function(data) {
    255         privateMethods.loadContent($sideMenu, data);
     469    } else if (typeof settings.source === 'string') {
     470      var htmlContent = '',
     471          selectors = settings.source.split(',');
     472
     473      $$3.each(selectors, function (index, element) {
     474        htmlContent += '<div class="sidr-inner">' + $$3(element).html() + '</div>';
    256475      });
    257     }
    258     else if(typeof settings.source === 'string') {
    259       var htmlContent = '',
    260           selectors   = settings.source.split(',');
    261 
    262       $.each(selectors, function(index, element) {
    263         htmlContent += '<div class="sidr-inner">' + $(element).html() + '</div>';
    264       });
    265476
    266477      // Renaming ids and classes
    267       if(settings.renaming) {
    268         var $htmlContent = $('<div />').html(htmlContent);
    269         $htmlContent.find('*').each(function(index, element) {
    270           var $element = $(element);
    271           privateMethods.addPrefix($element);
     478      if (settings.renaming) {
     479        var $htmlContent = $$3('<div />').html(htmlContent);
     480
     481        $htmlContent.find('*').each(function (index, element) {
     482          var $element = $$3(element);
     483
     484          helper.addPrefixes($element);
    272485        });
    273486        htmlContent = $htmlContent.html();
    274487      }
    275       privateMethods.loadContent($sideMenu, htmlContent);
    276     }
    277     else if(settings.source !== null) {
    278       $.error('Invalid Sidr Source');
    279     }
    280 
    281     return this.each(function(){
    282       var $this = $(this),
    283           data = $this.data('sidr');
     488
     489      $sideMenu.html(htmlContent);
     490    } else if (settings.source !== null) {
     491      $$3.error('Invalid Sidr Source');
     492    }
     493
     494    return $sideMenu;
     495  }
     496
     497  function fnSidr(options) {
     498    var transitions = helper.transitions,
     499        settings = $$3.extend({
     500      name: 'sidr', // Name for the 'sidr'
     501      speed: 200, // Accepts standard jQuery effects speeds (i.e. fast, normal or milliseconds)
     502      side: 'left', // Accepts 'left' or 'right'
     503      source: null, // Override the source of the content.
     504      renaming: true, // The ids and classes will be prepended with a prefix when loading existent content
     505      body: 'body', // Page container selector,
     506      displace: true, // Displace the body content or not
     507      timing: 'ease', // Timing function for CSS transitions
     508      method: 'toggle', // The method to call when element is clicked
     509      bind: 'touchstart click', // The event(s) to trigger the menu
     510      onOpen: function onOpen() {},
     511      // Callback when sidr start opening
     512      onClose: function onClose() {},
     513      // Callback when sidr start closing
     514      onOpenEnd: function onOpenEnd() {},
     515      // Callback when sidr end opening
     516      onCloseEnd: function onCloseEnd() {} // Callback when sidr end closing
     517
     518    }, options),
     519        name = settings.name,
     520        $sideMenu = $$3('#' + name);
     521
     522    // If the side menu do not exist create it
     523    if ($sideMenu.length === 0) {
     524      $sideMenu = $$3('<div />').attr('id', name).appendTo($$3('body'));
     525    }
     526
     527    // Add transition to menu if are supported
     528    if (transitions.supported) {
     529      $sideMenu.css(transitions.property, settings.side + ' ' + settings.speed / 1000 + 's ' + settings.timing);
     530    }
     531
     532    // Adding styles and options
     533    $sideMenu.addClass('sidr').addClass(settings.side).data({
     534      speed: settings.speed,
     535      side: settings.side,
     536      body: settings.body,
     537      displace: settings.displace,
     538      timing: settings.timing,
     539      method: settings.method,
     540      onOpen: settings.onOpen,
     541      onClose: settings.onClose,
     542      onOpenEnd: settings.onOpenEnd,
     543      onCloseEnd: settings.onCloseEnd
     544    });
     545
     546    $sideMenu = fillContent($sideMenu, settings);
     547
     548    return this.each(function () {
     549      var $this = $$3(this),
     550          data = $this.data('sidr'),
     551          flag = false;
    284552
    285553      // If the plugin hasn't been initialized yet
    286       if ( ! data ) {
     554      if (!data) {
     555        sidrStatus.moving = false;
     556        sidrStatus.opened = false;
    287557
    288558        $this.data('sidr', name);
    289         if('ontouchstart' in document.documentElement) {
    290           $this.bind('touchstart', function(e) {
    291             var theEvent = e.originalEvent.touches[0];
    292             this.touched = e.timeStamp;
    293           });
    294           $this.bind('touchend', function(e) {
    295             var delta = Math.abs(e.timeStamp - this.touched);
    296             if(delta < 200) {
    297               e.preventDefault();
    298               methods.toggle(name);
    299             }
    300           });
    301         }
    302         else {
    303         $this.click(function(e) {
    304           e.preventDefault();
    305             methods.toggle(name);
     559
     560        $this.bind(settings.bind, function (event) {
     561          event.preventDefault();
     562
     563          if (!flag) {
     564            flag = true;
     565            sidr(settings.method, name);
     566
     567            setTimeout(function () {
     568              flag = false;
     569            }, 100);
     570          }
    306571        });
    307572      }
    308       }
    309573    });
    310   };
    311 
    312 })( jQuery );
     574  }
     575
     576  jQuery.sidr = sidr;
     577  jQuery.fn.sidr = fnSidr;
     578
     579}());
  • _plugins_/sidr/plugin.xml

    r103720 r105357  
    33        <slogan>Menu de côté responsive</slogan>
    44        <auteur>[Sidr->http://www.berriart.com/sidr/], [Mis en plugin pour SPIP par RealET->http://www.pyrat.net], icone : [Responsive Web Design Logo->https://commons.wikimedia.org/wiki/File:Responsive_Web_Design_Logo.svg]</auteur>
    5         <version>1.3.2</version>
     5        <version>1.4.0</version>
    66        <icon>prive/themes/spip/images/sidr-32.png</icon>
    77        <etat>stable</etat>
Note: See TracChangeset for help on using the changeset viewer.