{"_id":"jquery-scroll-lock","_rev":"8-45835f18840d52c69a31743f493efb2c","name":"jquery-scroll-lock","description":"Locks mouse wheel scroll inside container, preventing it from propagating to parent element","dist-tags":{"latest":"3.1.3"},"versions":{"2.2.0":{"name":"jquery-scroll-lock","title":"jQuery Scroll Lock","version":"2.2.0","description":"Locks mouse wheel scroll inside container, preventing it from propagating to parent element","main":"jquery-scrollLock.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/MohammadYounes/jquery-scrollLock.git"},"keywords":["mousewheel","scroll","lock","stop","mouse","wheel","propagation"],"author":{"name":"Mohammad Younes"},"license":"MIT","bugs":{"url":"https://github.com/MohammadYounes/jquery-scrollLock/issues"},"homepage":"https://github.com/MohammadYounes/jquery-scrollLock#readme","gitHead":"20d4e8580e6e449979efaef67c55b115ba43c105","_id":"jquery-scroll-lock@2.2.0","_shasum":"f425a732da0c98d2f5a48831b83d6696c1145713","_from":".","_npmVersion":"2.11.3","_nodeVersion":"0.12.7","_npmUser":{"name":"myounes","email":"myounes@gmail.com"},"dist":{"shasum":"f425a732da0c98d2f5a48831b83d6696c1145713","tarball":"https://registry.npmjs.org/jquery-scroll-lock/-/jquery-scroll-lock-2.2.0.tgz","integrity":"sha512-DpAauHEqSe3eq9VUMk+aRrTDOLJ/fHNyRUQNIU1tcq/yHLDWm+4GUqFrYQUs8S+Zjd+AWYLbx079c8zrgGkAOg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEihD4QqEFcq6IHEk95U/hw7RYTtRydVCt2U12xUEHNKAiEAqHXt0MxQnI7AU9syX5vPQ7GrFy51zBYN2NgneIUF1eE="}]},"maintainers":[{"name":"myounes","email":"myounes@gmail.com"}],"_npmOperationalInternal":{"host":"packages-9-west.internal.npmjs.com","tmp":"tmp/jquery-scroll-lock-2.2.0.tgz_1455575529550_0.7450458188541234"}},"3.0.0":{"name":"jquery-scroll-lock","title":"jQuery Scroll Lock","version":"3.0.0","description":"Locks mouse wheel scroll inside container, preventing it from propagating to parent element","main":"jquery-scrollLock.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/MohammadYounes/jquery-scrollLock.git"},"keywords":["mousewheel","scroll","lock","stop","mouse","wheel","propagation"],"author":{"name":"Mohammad Younes"},"license":"GPL 3","bugs":{"url":"https://github.com/MohammadYounes/jquery-scrollLock/issues"},"homepage":"https://github.com/MohammadYounes/jquery-scrollLock#readme","gitHead":"7e27d0e34fa71a555c67986fcde9220266fedb09","_id":"jquery-scroll-lock@3.0.0","_shasum":"6b79473953362ad81ed14b8529df1fb5d86ca49b","_from":".","_npmVersion":"4.0.3","_nodeVersion":"5.10.1","_npmUser":{"name":"myounes","email":"myounes@gmail.com"},"dist":{"shasum":"6b79473953362ad81ed14b8529df1fb5d86ca49b","tarball":"https://registry.npmjs.org/jquery-scroll-lock/-/jquery-scroll-lock-3.0.0.tgz","integrity":"sha512-IiT/0mEb6C5rKXxeFRc7lZ/UM7zC1RcyY3i15RcjZmEFoj5tk8fT37oIaW7iWagPjiYAacwDBQAMWwpmnWk3eg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICznNiVgneef+XiTOYNSTzp/+2sjlvKSUGWsNXhr1danAiAn6Ik6+nICurncusF1BNAaPB0LBYiYpc2IztjCfhFKew=="}]},"maintainers":[{"name":"myounes","email":"myounes@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/jquery-scroll-lock-3.0.0.tgz_1480972458456_0.48559574340470135"}},"3.1.0":{"name":"jquery-scroll-lock","title":"jQuery Scroll Lock","version":"3.1.0","description":"Locks mouse wheel scroll inside container, preventing it from propagating to parent element","main":"jquery-scrollLock.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/MohammadYounes/jquery-scrollLock.git"},"keywords":["mousewheel","scroll","lock","stop","mouse","wheel","propagation"],"author":{"name":"Mohammad Younes"},"license":"GPL 3","bugs":{"url":"https://github.com/MohammadYounes/jquery-scrollLock/issues"},"homepage":"https://github.com/MohammadYounes/jquery-scrollLock#readme","gitHead":"899ce0813f08cad95870b635d1b09964491eef8d","_id":"jquery-scroll-lock@3.1.0","_shasum":"6012d53110bffb6f437f77a3cb9a567835a88705","_from":".","_npmVersion":"4.0.3","_nodeVersion":"5.10.1","_npmUser":{"name":"myounes","email":"myounes@gmail.com"},"dist":{"shasum":"6012d53110bffb6f437f77a3cb9a567835a88705","tarball":"https://registry.npmjs.org/jquery-scroll-lock/-/jquery-scroll-lock-3.1.0.tgz","integrity":"sha512-5N7e2Qal3riwEWrzFSgOzFaQDeEGHUYHDBuS4OQh3s+rz8ZU9rerj30kupvt0FbrK5w+JqyVctEIrZ4PKpIjCQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDZDaPXzDqbQ8jGDGFQR5kfoT7wjYL+pXLSrc9sPbttNwIgPui3RCPsoIK+ILRqfCLUJNb6KzsD/guCXeaG+4zjJ9g="}]},"maintainers":[{"name":"myounes","email":"myounes@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/jquery-scroll-lock-3.1.0.tgz_1489247435568_0.7719458481296897"}},"3.1.1":{"name":"jquery-scroll-lock","title":"jQuery Scroll Lock","version":"3.1.1","description":"Locks mouse wheel scroll inside container, preventing it from propagating to parent element","main":"jquery-scrollLock.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/MohammadYounes/jquery-scrollLock.git"},"keywords":["mousewheel","scroll","lock","stop","mouse","wheel","propagation"],"author":{"name":"Mohammad Younes"},"license":"GPL 3","bugs":{"url":"https://github.com/MohammadYounes/jquery-scrollLock/issues"},"homepage":"https://github.com/MohammadYounes/jquery-scrollLock#readme","gitHead":"235ecf54deeeeb0165138cbabf1dc5a892081e2b","_id":"jquery-scroll-lock@3.1.1","_shasum":"b45eb6a417e82951894e97b8f7eaea1c5b8c698c","_from":".","_npmVersion":"4.0.3","_nodeVersion":"5.10.1","_npmUser":{"name":"myounes","email":"myounes@gmail.com"},"dist":{"shasum":"b45eb6a417e82951894e97b8f7eaea1c5b8c698c","tarball":"https://registry.npmjs.org/jquery-scroll-lock/-/jquery-scroll-lock-3.1.1.tgz","integrity":"sha512-dBnH/7MiOanVKokddqk/GSFLNu+Xl9BApRX9wv02b2lksv89waAcM6REDhNDh09alMcmqGoIAYJEpWiDFo2nZw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD26mxdhgKrazOTqKbfgb49bJ6mHUXxQeEjZmGqmCwYVQIhAPFDeWPr3tp+ROo62OJN/p0XVKPs6nwFi65Df1rWlPdz"}]},"maintainers":[{"name":"myounes","email":"myounes@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/jquery-scroll-lock-3.1.1.tgz_1489264657370_0.7757499655708671"}},"3.1.2":{"name":"jquery-scroll-lock","title":"jQuery Scroll Lock","version":"3.1.2","description":"Locks mouse wheel scroll inside container, preventing it from propagating to parent element","main":"jquery-scrollLock.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/MohammadYounes/jquery-scrollLock.git"},"keywords":["mousewheel","scroll","lock","stop","mouse","wheel","propagation"],"author":{"name":"Mohammad Younes"},"license":"GPL 3","bugs":{"url":"https://github.com/MohammadYounes/jquery-scrollLock/issues"},"homepage":"https://github.com/MohammadYounes/jquery-scrollLock#readme","gitHead":"1fde0ea776c2fb460280a45b26f27e921c7b8197","_id":"jquery-scroll-lock@3.1.2","_shasum":"c102c85feb7c925195418bc703ddabc8bd83a924","_from":".","_npmVersion":"4.0.3","_nodeVersion":"5.10.1","_npmUser":{"name":"myounes","email":"myounes@gmail.com"},"dist":{"shasum":"c102c85feb7c925195418bc703ddabc8bd83a924","tarball":"https://registry.npmjs.org/jquery-scroll-lock/-/jquery-scroll-lock-3.1.2.tgz","integrity":"sha512-aNs5ynUv7xauMvxiT6k8mGcLxHCy5m7AU2fNHZ68iTnq3oGOd04My87PEa3U/cnPXpJQgj2Q0b+A3bXERFK+Bg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDtlS8SwbuiebsAw6pEwxQicVy5OS7nCvOqz6Gfwbs/ewIhAJDur0uFMZY67tIFfu4aEjxd19M63/Nxt+1qKcx2MiZM"}]},"maintainers":[{"name":"myounes","email":"myounes@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/jquery-scroll-lock-3.1.2.tgz_1489265009458_0.5187689184676856"}},"3.1.3":{"name":"jquery-scroll-lock","title":"jQuery Scroll Lock","version":"3.1.3","description":"Locks mouse wheel scroll inside container, preventing it from propagating to parent element","main":"jquery-scrollLock.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"repository":{"type":"git","url":"git+https://github.com/MohammadYounes/jquery-scrollLock.git"},"keywords":["mousewheel","scroll","lock","stop","mouse","wheel","propagation"],"author":{"name":"Mohammad Younes"},"license":"GPL 3","bugs":{"url":"https://github.com/MohammadYounes/jquery-scrollLock/issues"},"homepage":"https://github.com/MohammadYounes/jquery-scrollLock#readme","gitHead":"f5474f7a265d11e056e7bb11f889511a7c48f0c7","_id":"jquery-scroll-lock@3.1.3","_shasum":"19c5ae90c51411d17a4c46be794a06ca85996645","_from":".","_npmVersion":"4.0.3","_nodeVersion":"5.12.0","_npmUser":{"name":"myounes","email":"myounes@gmail.com"},"dist":{"shasum":"19c5ae90c51411d17a4c46be794a06ca85996645","tarball":"https://registry.npmjs.org/jquery-scroll-lock/-/jquery-scroll-lock-3.1.3.tgz","integrity":"sha512-pGKSihSDBiSmJygjgITiEvHiZuhPE8eKePV31er5xWMq601WyooDm1Dscjzonw0aWEx4PeXXDKl64DVu3HbZqw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG/7ifPD5wFmwAcyWw2bLeG/uAnGSBhzP43SPldRo6TSAiEAwljbKDEkW0wYxwTUD960sqn54lOjikrGZAQC1zEe/Dc="}]},"maintainers":[{"name":"myounes","email":"myounes@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/jquery-scroll-lock-3.1.3.tgz_1497648254768_0.271492654690519"}}},"readme":"[![GitHub version](https://badge.fury.io/gh/MohammadYounes%2Fjquery-scrollLock.svg)](http://badge.fury.io/gh/MohammadYounes%2Fjquery-scrollLock)\r\n[![Bower version](https://img.shields.io/bower/v/jquery-scrollLock.svg)](https://github.com/MohammadYounes/jquery-scrollLock)\r\n[![NuGet version](https://img.shields.io/nuget/v/jquery-scrollLock.svg)](https://www.nuget.org/packages/jquery-scrollLock/)\r\n[![NPM version](https://img.shields.io/npm/v/jquery-scroll-lock.svg)](https://www.npmjs.com/package/jquery-scroll-lock/)\r\n\r\n\r\n\r\nScroll Lock\r\n=================\r\n\r\nScroll Lock is a jQuery plugin that fully addresses the issue of locking mouse wheel scroll inside a given container, preventing it from propagating to parent element.\r\n\r\n> View [demo](http://mohammadyounes.github.io/jquery-scrollLock/#demo)\r\n\r\n## Features\r\n\r\n* It does not change wheel scrolling speed, user experience will not be affected. \r\n* You get the same behavior regardless of the OS mouse wheel vertical scrolling speed.\r\n\r\n  > On Windows it can be set to one screen or one line up to 100 lines per notch.\r\n* Supports touch screens.\r\n\r\n### Install with [NuGet](https://www.nuget.org/packages/jquery-scrollLock/) \r\n```\r\nInstall-Package jquery-scrollLock\r\n```\r\n\r\n### Install with Bower\r\n```\r\nbower install jquery-scrollLock\r\n```\r\n\r\n### Install with [NPM](https://www.npmjs.com/package/jquery-scroll-lock/) \r\n```\r\nnpm install jquery-scroll-lock --save\r\n```\r\n\r\n## Usage\r\n\r\nTrigger Scroll Lock via JavaScript: \r\n\r\n```js\r\n$('#target').scrollLock();\r\n```\r\n\r\nTrigger Scroll Lock via Markup:\r\n```html\r\n<!-- HTML -->\r\n<div data-scrollLock\r\n     data-strict='true'\r\n     data-selector='.child'\r\n     data-animation='{\"top\":\"top locked\",\"bottom\":\"bottom locked\"}'\r\n     data-keyboard='{\"tabindex\":0}'\r\n     data-unblock='.inner'>\r\n     ...\r\n</div>\r\n\r\n<!-- JavaScript -->\r\n<script type=\"text/javascript\">\r\n  $('[data-scrollLock]').scrollLock()\r\n</script>\r\n```\r\n\r\n## Options\r\n\r\n|   Options |   Type     | Default    |   Description\r\n|:----------|:----------:|:----------:|:-------------\r\n| animation | `object`   | `false`    | An object defining CSS class(es) to be applied when top or bottom edge is locked. (see [remarks<sup>1</sup>](#remarks1))\r\n| keyboard  | `object`   | `false`    | When enabled, keys that causes scrolling will also be locked. (see [remarks<sup>2</sup>](#remarks2))\r\n| selector  | `string`   | `false`    | When provided, matching descendants will be locked. Useful when dealing with dynamic HTML.\r\n| strict    | `boolean`  | `false`    | When enabled, only elements passing the `strictFn` check will be locked.\r\n| strictFn  | `function` | [remarks<sup>3</sup>](#remarks3) | This function is responsible for deciding if the element should be locked or not.\r\n| touch     | `boolean`  | `auto`     | Indicates if an element's lock is enabled on touch screens.\r\n| unblock\t  | `string`   | `false`    | When provided, matching descendants scrolling will be unblocked. Useful when having a scrollable element inside a locked one.\r\n\r\n\r\n### Remarks<sup>1</sup>\r\n\r\n> This is pure JavaScript plugin, it *does not provide any CSS*. You need to implement your own!\r\n\r\nThe `animation` option has two keys:\r\n\r\n```js\r\n{\r\n  \"top\": \"top locked\",\r\n  \"bottom\": \"bottom locked\"\r\n}\r\n```\r\n\r\nWhen an edge is locked, the value of both `animation.top + animation.bottom` will be removed from the locked element's class list.\r\n\r\nThen based on the locked edge, the value of `animation.top` or `animation.bottom` is added to the class list, and removed once the browser `animationend` event is fired.\r\n\r\n### Remarks<sup>2</sup>\r\n\r\nIn chrome, The following keys causes a scroll, which may propagate to parent element.\r\n\r\n<kbd>space</kbd>, <kbd>pageup</kbd>, <kbd>pagedown</kbd> , <kbd>end</kbd> , <kbd>home</kbd>, <kbd>up</kbd>, <kbd>down</kbd>\r\n\r\nThe `keyboard` option has one key:\r\n\r\n```js\r\n{ \"tabindex\": 0 }\r\n```\r\n\r\nThe `tabindex` is required to be able to listen to keyboard events on none input elements, such as a `div`. The side effect of adding a `tabindex` is the browser highlight when the element is focused.\r\n\r\nWhich can be avoided via CSS `outline` property.\r\n\r\n```css\r\n.scrollable{ outline:0; }\r\n```\r\n\r\n### Remarks<sup>3</sup>\r\n\r\nThe default `strictFn` implementation checks if the element requires a vertical scrollbar.\r\n```javascript\r\nstrictFn = function($element){\r\n  return $element.prop('scrollHeight') > $element.prop('clientHeight'); \r\n}\r\n```\r\n> In previous versions (&le; v2.1.0), The check was based on scrollbar visibility, In case you require such behavior, include the following in your script:\r\n```javascript\r\n$.fn.scrollLock.defaults.strictFn = function ($element) {\r\n  var clientWidth = $element.prop('clientWidth'),\r\n  offsetWidth = $element.prop('offsetWidth'),\r\n  borderRightWidth = parseInt($element.css('border-right-width'), 10),\r\n  borderLeftWidth = parseInt($element.css('border-left-width'), 10)\r\n  return clientWidth + borderLeftWidth + borderRightWidth < offsetWidth\r\n}\r\n```\r\n\r\n## Methods\r\n\r\n|   Method                     |    Description\r\n|:-----------------------------|:--------------\r\n| `.scrollLock('enable')`      | Enables an element's Scroll Lock.\r\n| `.scrollLock('disable')`     | Disables an element's Scroll Lock.\r\n| `.scrollLock('toggleStrict')`| Toggles an element's strict option.\r\n| `.scrollLock('destroy')`     | Disables and destroys an element's Scroll Lock.\r\n\r\n\r\n## Events\r\n\r\n|   Event             |   Description\r\n|:--------------------|:-------------\r\n| `top.scrollLock`    | This event fires immediately when the top edge scroll is locked.\r\n| `bottom.scrollLock` | This event fires immediately when the bottom edge scroll is locked.\r\n\r\n```\r\n$('#target').on('top.scrollLock', function (evt) {\r\n  // do magic :)\r\n})\r\n```\r\n\r\n------\r\nHave a suggestion or a bug ? please [open a new issue.](https://github.com/MohammadYounes/jquery-scrollLock/issues?state=open)\r\n\r\n\r\n\r\n## Commercial License\r\n\r\nIf you want to use jquery-scrollLock.js to develop commercial sites, themes, projects, and applications, the Commercial license is the appropriate license. With this option, your source code is kept proprietary. Purchase a jquery-scrollLock.js Commercial License at http://www.uplabs.com/posts/scroll-lock-plugin\r\n","maintainers":[{"name":"myounes","email":"myounes@gmail.com"}],"time":{"modified":"2022-06-19T05:10:59.711Z","created":"2016-02-15T22:32:13.818Z","2.2.0":"2016-02-15T22:32:13.818Z","3.0.0":"2016-12-05T21:14:18.675Z","3.1.0":"2017-03-11T15:50:35.846Z","3.1.1":"2017-03-11T20:37:39.338Z","3.1.2":"2017-03-11T20:43:29.707Z","3.1.3":"2017-06-16T21:24:15.943Z"},"homepage":"https://github.com/MohammadYounes/jquery-scrollLock#readme","keywords":["mousewheel","scroll","lock","stop","mouse","wheel","propagation"],"repository":{"type":"git","url":"git+https://github.com/MohammadYounes/jquery-scrollLock.git"},"author":{"name":"Mohammad Younes"},"bugs":{"url":"https://github.com/MohammadYounes/jquery-scrollLock/issues"},"license":"GPL 3","readmeFilename":"README.md"}