{"_id":"snapsheet-react-dd-menu","_rev":"270-4e87b2751e016dd686e94d521d30beeb","name":"snapsheet-react-dd-menu","dist-tags":{"latest":"2.0.4"},"versions":{"2.0.1":{"name":"snapsheet-react-dd-menu","version":"2.0.1","keywords":["react","react-component","dropown","dropdown-menu","component"],"author":{"name":"mlaursen"},"license":"MIT","_id":"snapsheet-react-dd-menu@2.0.1","maintainers":[{"name":"snapsheet","email":"tech@snapsheet.me"}],"homepage":"https://github.com/bodyshopbidsdotcom/react-dd-menu","bugs":{"url":"https://github.com/bodyshopbidsdotcom/react-dd-menu/issues"},"dist":{"shasum":"c4da46fd5f1ef1b1ac507f8f0f0e10ff509b247f","tarball":"https://registry.npmjs.org/snapsheet-react-dd-menu/-/snapsheet-react-dd-menu-2.0.1.tgz","integrity":"sha512-LeFID56StYepM2rQ+iX/ZJ2++P4Dvyr/1D4J4D0tri9YiG2oLf+CctcB2ANbBdZDMIIivswyqJD6YdqeCUuR3w==","signatures":[{"sig":"MEUCIQCb6AxgMGNHueULjcPnu3JaguvuASI9EmkRIIMkLlZOdgIgApKrJpjGxB2z9F57B4idJEi2FfWVqATcotdjnrCZknc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"lib/index","_from":".","files":["*.md","es6/*","es6/*/**","lib/*","lib/*/**","umd/*","umd/*/**","src/*","src/*/**"],"_shasum":"c4da46fd5f1ef1b1ac507f8f0f0e10ff509b247f","gitHead":"66f7799ccfc75cabbe830fdf158a052cc938e31b","scripts":{"build":"npm run build-cjs && npm run build-es6 && rimraf umd && npm run build-umd && npm run build-min && npm run build:styles && npm run build:postcss && npm run build:cp-css","build-cjs":"rimraf lib && babel ./src -d lib","build-es6":"rimraf es6 && babel ./src -d es6 --blacklist=es6.modules","build-min":"webpack --env=production src/js/index.js umd/snapsheet-react-dd-menu.min.js","build-umd":"webpack --env=development src/js/index.js umd/snapsheet-react-dd-menu.js","build:cp-css":"mkdir ./lib/css ./es6/css && cp ./dist/*.css ./umd/ && cp ./dist/*.css ./es6/css/ && cp ./dist/*.css ./lib/css/","build:styles":"rimraf dist && node-sass --output-style=expanded ./src/scss/react-dd-menu.scss ./dist/snapsheet-react-dd-menu.css && node-sass --output-style=compressed ./src/scss/react-dd-menu.scss ./dist/snapsheet-react-dd-menu.min.css","build:postcss":"postcss --use autoprefixer ./dist/*.css -d ./dist"},"_npmUser":{"name":"snapsheet","email":"tech@snapsheet.me"},"repository":{"url":"git+https://github.com/bodyshopbidsdotcom/react-dd-menu.git","type":"git"},"_npmVersion":"4.1.2","description":"A react dropdown menu.","directories":{},"jsnext:main":"es6/index","_nodeVersion":"6.10.0","dependencies":{"classnames":"^2.1.3"},"devDependencies":{"babel":"^6.23.0","react":"^15.4.2","eslint":"^2.13.1","rimraf":"^2.6.1","webpack":"^2.2.1","babel-cli":"^6.23.0","node-sass":"^4.5.0","react-dom":"^15.4.2","babel-core":"^6.23.1","postcss-cli":"^2.5.0","autoprefixer":"^6.0.3","babel-eslint":"^6.1.2","babel-loader":"^6.4.0","eslint-loader":"^1.3.0","babel-preset-react":"^6.23.0","webpack-dev-server":"^2.4.1","babel-preset-es2015":"^6.22.0","eslint-plugin-react":"^4.3.0","babel-preset-stage-0":"^6.22.0","eslint-config-snapsheet":"^1.0.0","babel-plugin-add-module-exports":"^0.1.2","react-addons-css-transition-group":"^15.4.0","babel-plugin-transform-decorators-legacy":"^1.3.4"},"peerDependencies":{"react":">= 15.3.0","react-dom":">= 15.3.0","react-addons-css-transition-group":">= 15.3.0"},"_npmOperationalInternal":{"tmp":"tmp/snapsheet-react-dd-menu-2.0.1.tgz_1489185414548_0.7048997711390257","host":"packages-18-east.internal.npmjs.com"}},"2.0.2":{"name":"snapsheet-react-dd-menu","version":"2.0.2","keywords":["react","react-component","dropown","dropdown-menu","component"],"author":{"name":"mlaursen"},"license":"MIT","_id":"snapsheet-react-dd-menu@2.0.2","maintainers":[{"name":"snapsheet","email":"tech@snapsheet.me"}],"homepage":"https://github.com/bodyshopbidsdotcom/react-dd-menu","bugs":{"url":"https://github.com/bodyshopbidsdotcom/react-dd-menu/issues"},"dist":{"shasum":"237447f75ddb454898ea4d7a6ce1927988e1bcb5","tarball":"https://registry.npmjs.org/snapsheet-react-dd-menu/-/snapsheet-react-dd-menu-2.0.2.tgz","integrity":"sha512-VYdhTfK9FF+AhvyE/1MaZ7F14OG+zNeNGscEtYsvqIlOti5jKV5ab1eSdDpIp49b9ccEGNE9uBUgZOhO/P1mxA==","signatures":[{"sig":"MEUCIGfVSCmiM60posqAkS2fpdXe+wIiKNmtQVU8BgleToZVAiEA++ghJwQpYIGAU8dx3Rm02Pxten2ULvIjBE8jrqY5384=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"lib/js/index","_from":".","files":["*.md","es6/*","es6/*/**","lib/*","lib/*/**","umd/*","umd/*/**","src/*","src/*/**"],"_shasum":"237447f75ddb454898ea4d7a6ce1927988e1bcb5","gitHead":"b5c71675dc56236257256cfb8d82d7b8248d2957","scripts":{"build":"npm run build-cjs && npm run build-es6 && rimraf umd && npm run build-umd && npm run build-min && npm run build:styles && npm run build:postcss && npm run build:cp-css","build-cjs":"rimraf lib && babel ./src -d lib","build-es6":"rimraf es6 && babel ./src -d es6 --blacklist=es6.modules","build-min":"webpack --env=production src/js/index.js umd/snapsheet-react-dd-menu.min.js","build-umd":"webpack --env=development src/js/index.js umd/snapsheet-react-dd-menu.js","build:cp-css":"mkdir ./lib/css ./es6/css && cp ./dist/*.css ./umd/ && cp ./dist/*.css ./es6/css/ && cp ./dist/*.css ./lib/css/","build:styles":"rimraf dist && node-sass --output-style=expanded ./src/scss/react-dd-menu.scss ./dist/snapsheet-react-dd-menu.css && node-sass --output-style=compressed ./src/scss/react-dd-menu.scss ./dist/snapsheet-react-dd-menu.min.css","build:postcss":"postcss --use autoprefixer ./dist/*.css -d ./dist"},"_npmUser":{"name":"snapsheet","email":"tech@snapsheet.me"},"repository":{"url":"git+https://github.com/bodyshopbidsdotcom/react-dd-menu.git","type":"git"},"_npmVersion":"4.1.2","description":"A react dropdown menu.","directories":{},"jsnext:main":"es6/js/index","_nodeVersion":"6.10.0","dependencies":{"classnames":"^2.1.3"},"devDependencies":{"babel":"^6.23.0","react":"^15.4.2","eslint":"^2.13.1","rimraf":"^2.6.1","webpack":"^2.2.1","babel-cli":"^6.23.0","node-sass":"^4.5.0","react-dom":"^15.4.2","babel-core":"^6.23.1","postcss-cli":"^2.5.0","autoprefixer":"^6.0.3","babel-eslint":"^6.1.2","babel-loader":"^6.4.0","eslint-loader":"^1.3.0","babel-preset-react":"^6.23.0","webpack-dev-server":"^2.4.1","babel-preset-es2015":"^6.22.0","eslint-plugin-react":"^4.3.0","babel-preset-stage-0":"^6.22.0","eslint-config-snapsheet":"^1.0.0","babel-plugin-add-module-exports":"^0.1.2","react-addons-css-transition-group":"^15.4.0","babel-plugin-transform-decorators-legacy":"^1.3.4"},"peerDependencies":{"react":">= 15.3.0","react-dom":">= 15.3.0","react-addons-css-transition-group":">= 15.3.0"},"_npmOperationalInternal":{"tmp":"tmp/snapsheet-react-dd-menu-2.0.2.tgz_1489185644299_0.544807645957917","host":"packages-12-west.internal.npmjs.com"}},"2.0.3":{"name":"snapsheet-react-dd-menu","version":"2.0.3","keywords":["react","react-component","dropown","dropdown-menu","component"],"author":{"name":"mlaursen"},"license":"MIT","_id":"snapsheet-react-dd-menu@2.0.3","maintainers":[{"name":"snapsheet","email":"tech@snapsheet.me"}],"homepage":"https://github.com/bodyshopbidsdotcom/react-dd-menu","bugs":{"url":"https://github.com/bodyshopbidsdotcom/react-dd-menu/issues"},"dist":{"shasum":"73d113ca5ff1ba337c87eb7aa2588ff1e3c95b7a","tarball":"https://registry.npmjs.org/snapsheet-react-dd-menu/-/snapsheet-react-dd-menu-2.0.3.tgz","integrity":"sha512-YdhPbvACpqbkvSsKmv7w+8SEe+cLtlOCfGJa4lFfn1J/+Vkts07mNkpKwJx/axY/xRATu2bT1d/zNgcr3Lf+5g==","signatures":[{"sig":"MEUCIDuSxLXoIteNhm82f7842P2zcIuki2R+nYgorQKGd5+jAiEAk/4TTwFBC5OFSRZPWY5Iy8H97Hi64aHNukABwW3v+1I=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"lib/js/index","_from":".","files":["*.md","es6/*","es6/*/**","lib/*","lib/*/**","umd/*","umd/*/**","src/*","src/*/**"],"_shasum":"73d113ca5ff1ba337c87eb7aa2588ff1e3c95b7a","gitHead":"60fa9cae494302f144a509d8a058ab8968ae3f4a","scripts":{"build":"npm run build-cjs && npm run build-es6 && rimraf umd && npm run build-umd && npm run build-min && npm run build:styles && npm run build:postcss && npm run build:cp-css","build-cjs":"rimraf lib && babel ./src -d lib","build-es6":"rimraf es6 && babel ./src -d es6 --blacklist=es6.modules","build-min":"webpack --env=production src/js/index.js umd/snapsheet-react-dd-menu.min.js","build-umd":"webpack --env=development src/js/index.js umd/snapsheet-react-dd-menu.js","build:cp-css":"mkdir ./lib/css ./es6/css && cp ./dist/*.css ./umd/ && cp ./dist/*.css ./es6/css/ && cp ./dist/*.css ./lib/css/","build:styles":"rimraf dist && node-sass --output-style=expanded ./src/scss/react-dd-menu.scss ./dist/snapsheet-react-dd-menu.css && node-sass --output-style=compressed ./src/scss/react-dd-menu.scss ./dist/snapsheet-react-dd-menu.min.css","build:postcss":"postcss --use autoprefixer ./dist/*.css -d ./dist"},"_npmUser":{"name":"snapsheet","email":"tech@snapsheet.me"},"repository":{"url":"git+https://github.com/bodyshopbidsdotcom/react-dd-menu.git","type":"git"},"_npmVersion":"4.1.2","description":"A react dropdown menu.","directories":{},"jsnext:main":"es6/js/index","_nodeVersion":"6.10.0","dependencies":{"classnames":"^2.1.3"},"devDependencies":{"babel":"^6.23.0","react":"^15.4.2","eslint":"^2.13.1","rimraf":"^2.6.1","webpack":"^2.2.1","babel-cli":"^6.23.0","node-sass":"^4.5.0","react-dom":"^15.4.2","babel-core":"^6.23.1","postcss-cli":"^2.5.0","autoprefixer":"^6.0.3","babel-eslint":"^6.1.2","babel-loader":"^6.4.0","eslint-loader":"^1.3.0","babel-preset-react":"^6.23.0","webpack-dev-server":"^2.4.1","babel-preset-es2015":"^6.22.0","eslint-plugin-react":"^4.3.0","babel-preset-stage-0":"^6.22.0","eslint-config-snapsheet":"^1.0.0","babel-plugin-add-module-exports":"^0.1.2","react-addons-css-transition-group":"^15.4.0","babel-plugin-transform-decorators-legacy":"^1.3.4"},"peerDependencies":{"react":">= 15.3.0","react-dom":">= 15.3.0","react-addons-css-transition-group":">= 15.3.0"},"_npmOperationalInternal":{"tmp":"tmp/snapsheet-react-dd-menu-2.0.3.tgz_1489185917244_0.023721368052065372","host":"packages-12-west.internal.npmjs.com"}},"2.0.4":{"name":"snapsheet-react-dd-menu","version":"2.0.4","keywords":["react","react-component","dropown","dropdown-menu","component"],"author":{"name":"mlaursen"},"license":"MIT","_id":"snapsheet-react-dd-menu@2.0.4","maintainers":[{"name":"snapsheet","email":"tech@snapsheet.me"}],"homepage":"https://github.com/bodyshopbidsdotcom/react-dd-menu","bugs":{"url":"https://github.com/bodyshopbidsdotcom/react-dd-menu/issues"},"dist":{"shasum":"1204bc9cc22d71f797307787f9a8296c2d29f702","tarball":"https://registry.npmjs.org/snapsheet-react-dd-menu/-/snapsheet-react-dd-menu-2.0.4.tgz","integrity":"sha512-MU1Pfuh8w9g1WlP+H9eFUrJU7+ieFCs76xHGlAwaZeMrZFlJ3jy7vCwrUnYfp9ZSS9ywX0D3QoJHivSZhBx8EQ==","signatures":[{"sig":"MEYCIQCx8/bnVCsufXVeQNze7offvGBZbJyDDsVWW46ehVPsTwIhAM/Yhh05CearqhrErpkesXtcXDc6U2gWiHnS2D2rEHrs","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"lib/js/index","_from":".","files":["*.md","es6/*","es6/*/**","lib/*","lib/*/**","umd/*","umd/*/**","src/*","src/*/**"],"_shasum":"1204bc9cc22d71f797307787f9a8296c2d29f702","gitHead":"9449cbc5efa02b6e4da68779b151375c2100312c","scripts":{"build":"npm run build-cjs && npm run build-es6 && rimraf umd && npm run build-umd && npm run build-min && npm run build:styles && npm run build:postcss && npm run build:cp-css","build-cjs":"rimraf lib && babel ./src -d lib","build-es6":"rimraf es6 && babel ./src -d es6 --blacklist=es6.modules","build-min":"webpack --env=production src/js/index.js umd/snapsheet-react-dd-menu.min.js","build-umd":"webpack --env=development src/js/index.js umd/snapsheet-react-dd-menu.js","build:cp-css":"mkdir ./lib/css ./es6/css && cp ./dist/*.css ./umd/ && cp ./dist/*.css ./es6/css/ && cp ./dist/*.css ./lib/css/","build:styles":"rimraf dist && node-sass --output-style=expanded ./src/scss/react-dd-menu.scss ./dist/snapsheet-react-dd-menu.css && node-sass --output-style=compressed ./src/scss/react-dd-menu.scss ./dist/snapsheet-react-dd-menu.min.css","build:postcss":"postcss --use autoprefixer ./dist/*.css -d ./dist"},"_npmUser":{"name":"snapsheet","email":"tech@snapsheet.me"},"repository":{"url":"git+https://github.com/bodyshopbidsdotcom/react-dd-menu.git","type":"git"},"_npmVersion":"4.1.2","description":"A react dropdown menu.","directories":{},"jsnext:main":"es6/js/index","_nodeVersion":"6.10.0","dependencies":{"classnames":"^2.1.3"},"devDependencies":{"babel":"^6.23.0","react":"^15.4.2","eslint":"^2.13.1","rimraf":"^2.6.1","webpack":"^2.2.1","babel-cli":"^6.23.0","node-sass":"^4.5.0","react-dom":"^15.4.2","babel-core":"^6.23.1","postcss-cli":"^2.5.0","autoprefixer":"^6.0.3","babel-eslint":"^6.1.2","babel-loader":"^6.4.0","eslint-loader":"^1.3.0","babel-preset-react":"^6.23.0","webpack-dev-server":"^2.4.1","babel-preset-es2015":"^6.22.0","eslint-plugin-react":"^4.3.0","babel-preset-stage-0":"^6.22.0","eslint-config-snapsheet":"^1.0.0","babel-plugin-add-module-exports":"^0.1.2","react-addons-css-transition-group":"^15.4.0","babel-plugin-transform-decorators-legacy":"^1.3.4"},"peerDependencies":{"react":">= 15.3.0","react-dom":">= 15.3.0","react-addons-css-transition-group":">= 15.3.0"},"_npmOperationalInternal":{"tmp":"tmp/snapsheet-react-dd-menu-2.0.4.tgz_1489189879990_0.24883305979892612","host":"packages-12-west.internal.npmjs.com"}}},"time":{"created":"2017-03-10T22:36:55.259Z","modified":"2026-09-24T18:59:41.378Z","2.0.1":"2017-03-10T22:36:55.259Z","2.0.2":"2017-03-10T22:40:46.396Z","2.0.3":"2017-03-10T22:45:19.341Z","2.0.4":"2017-03-10T23:51:22.072Z"},"bugs":{"url":"https://github.com/bodyshopbidsdotcom/react-dd-menu/issues"},"author":{"name":"mlaursen"},"license":"MIT","homepage":"https://github.com/bodyshopbidsdotcom/react-dd-menu","keywords":["react","react-component","dropown","dropdown-menu","component"],"repository":{"url":"git+https://github.com/bodyshopbidsdotcom/react-dd-menu.git","type":"git"},"description":"A react dropdown menu.","maintainers":[{"email":"tech@snapsheet.me","name":"snapsheet-tech"},{"email":"snapsheetgem@snapsheet.me","name":"snapsheetgem"},{"email":"santiago@snapsheet.me","name":"santi-h"},{"email":"carl.porter@snapsheet.me","name":"carlporter"},{"email":"lionel.luchez@snapsheet.me","name":"lluchez"},{"email":"avanthi.vedire@snapsheet.me","name":"avedire"},{"email":"ifraah.beg@snapsheet.me","name":"ifraah"},{"email":"abhishek.kumar@snapsheet.me","name":"abhishek85"},{"email":"vanessa.wang@snapsheet.me","name":"vanessa.wang"},{"email":"dan.garcia@snapsheet.me","name":"garciadd"},{"email":"william.hertling@snapsheet.me","name":"williamhertling"},{"email":"manan.surti@snapsheet.me","name":"mananssh"},{"email":"nathan.harmon@snapsheet.me","name":"acting0136"},{"email":"nathan.gonzalez@snapsheet.me","name":"nathan.gonzalez"},{"email":"raphael.shejnberg@gmail.com","name":"raphaelshejnberg"},{"email":"baojhih.shao@snapsheet.me","name":"bjs93r"},{"email":"peterwlanglois@gmail.com","name":"peterwlanglois"},{"email":"deena.tenzer@snapsheet.me","name":"deenatenzer"},{"email":"rose.graner@snapsheet.me","name":"roseg"},{"email":"jonathan.versino@snapsheet.me","name":"jonathanversino-ss"},{"email":"ryan.staudt@snapsheet.me","name":"rstaudt2"},{"email":"snapsheetbot@snapsheet.me","name":"snapsheetbot"},{"email":"dan@snapsheet.me","name":"drc372"},{"email":"joyce.huang@snapsheet.me","name":"jh-snap"},{"email":"petermarathas@gmail.com","name":"petermarathas"},{"email":"eric.bluhm@snapsheet.me","name":"ericbluhm"},{"email":"greg.saunsen@snapsheet.me","name":"gsaunsen-snapsheet"},{"email":"haden.santefort@snapsheet.me","name":"haden.santefort.snapsheet"},{"email":"mike.park@snapsheet.me","name":"mpsnap"},{"email":"jacob.miller@snapsheet.me","name":"jdmsnap"},{"email":"carrie.utter@snapsheet.me","name":"uttercmsnapsheet"},{"email":"ray.olivero@snapsheet.me","name":"rayolivero"},{"email":"oren.michael.magid@gmail.com","name":"orenmagid"},{"email":"pranav.makkar@snapsheet.me","name":"pranav-snap"},{"email":"jack.wydra@snapsheet.me","name":"jwydra"},{"email":"emily.stanish@snapsheet.me","name":"emilystanish"},{"email":"ganesh.shetty@snapsheet.me","name":"gshetty007snapsheet"},{"email":"sean.inomire@gmail.com","name":"inomire"},{"email":"joe.cormier@snapsheet.me","name":"joe.cormier"},{"email":"matthieu.crepeau@snapsheet.me","name":"mcrepeau"},{"email":"yujjit.yadav@snapsheet.me","name":"yujjit"},{"email":"mitesh.shah@snapsheet.me","name":"mitesh.shah"},{"email":"kazuhiro.uchikata@snapsheet.me","name":"kazuhirouchikata"},{"email":"anva.kondakciu@snapsheet.me","name":"anvakondak"},{"email":"tyler.pospisil@snapsheet.me","name":"tpospisil_ss"},{"email":"matt@codifi.us","name":"mattheyd"},{"email":"mingming.chen@snapsheet.me","name":"doublemchen"},{"email":"nicholas.berrios@snapsheet.me","name":"nberrios-ss"},{"email":"robert.caron@snapsheet.me","name":"rcaronsnapsheet"},{"email":"appsbyanand@gmail.com","name":"anandrikka"},{"email":"michelle.pattullo@snapsheet.me","name":"mpattullo"},{"email":"rohit.jesudian@snapsheet.me","name":"rohit.jesudian"},{"email":"dustin.walker@snapsheet.me","name":"dustin-walker-snap"},{"email":"naman.mehta@snapsheet.me","name":"flipuhdelphia-work"},{"email":"wenli.jao@snapsheet.me","name":"w1inniejao"},{"email":"justin.newman@snapsheet.me","name":"justin-newman-snapsheet"},{"email":"timothy.park@snapsheet.me","name":"tpark.snapsheet"},{"email":"hayden.gray@snapsheet.me","name":"hayden.gray.snapsheet"},{"email":"esther.kalashnikova@snapsheet.me","name":"essieka"},{"email":"james.garner@snapsheet.me","name":"jamesgarner-ss"},{"email":"marco.aleman@snapsheet.me","name":"marco.aleman"},{"email":"paikattilrohin@gmail.com","name":"brohin"},{"email":"sergey.latkin@snapsheet.me","name":"sergey.latkin"},{"email":"luke.myers1014@gmail.com","name":"luke-myers101493"},{"email":"priyanklalitkant.kapadia@snapsheet.me","name":"priyanklalitkantkapadia-snapsheet"},{"email":"ann.trachte@snapsheet.me","name":"atrasnap"},{"email":"jarrod.chung@snapsheet.me","name":"jarrod-chung-snapsheet"},{"email":"kevin.stubblefield@snapsheet.me","name":"kevin-stubblefield"},{"email":"alex.tan@snapsheet.me","name":"alextan-snapsheet"},{"email":"nathanael.jackson@snapsheet.me","name":"nate-jackson-snapsheet"},{"email":"nachiket.joshi@snapsheet.me","name":"njoshi-snapsheet"},{"email":"tyler.benton@snapsheet.me","name":"tylerbenton-snapsheet"},{"email":"jeremy.trujillo@snapsheet.me","name":"jeremytru"},{"email":"jeff.schmitz@snapsheet.me","name":"iamtheschmitzer"},{"email":"dominic.hupp@snapsheet.me","name":"dh-snapsheet"},{"email":"hitesh.kumar@snapsheet.me","name":"hkumar123"},{"email":"aunss.gheyouche@gmail.com","name":"aunssg"},{"email":"katie.phillips@snapsheet.me","name":"katiephillips-snap"},{"email":"steven.joseph@snapsheet.me","name":"sj-snap"},{"email":"andrew.santos@snapsheet.me","name":"asantos649"},{"email":"carl.laviolette@snapsheet.me","name":"claviolette"},{"email":"michael.stieber@snapsheet.me","name":"mikes_snap2026"},{"email":"jeremy.fountaine@snapsheet.me","name":"jeremyfountaine"},{"email":"kenta.goto@snapsheet.me","name":"kgoto-snap"},{"email":"brandon.coleman@snapsheet.me","name":"bcsnaps"},{"email":"adam.tenderholt@snapsheet.me","name":"atenderholt-snapsheet"},{"email":"adriano.santosfilho@snapsheet.me","name":"asant-os"},{"email":"Justice.Agbonma@snapsheet.me","name":"justiceagbonma"},{"email":"hunter.ross@snapsheet.me","name":"hunter.ross"},{"email":"steven.chavez@snapsheet.me","name":"steven-chavez-572"},{"email":"hoda.nasser@snapsheet.me","name":"hodanasser"},{"email":"morgan.showman@snapsheet.me","name":"morgan.showman.snsh"},{"email":"adam.byer@snapsheet.me","name":"adambyersnapsheet"},{"email":"benito.juarez@snapsheet.me","name":"benito.juarez"},{"email":"nicholas.watkins@snapsheet.me","name":"nicholas.watkins"},{"email":"daniel.skrei@snapsheet.me","name":"dskrei-snapsheet"},{"email":"andrew.hamacher@snapsheet.me","name":"amhamacher"},{"email":"nathaniel.cabrera@snapsheet.me","name":"nate.cabrera.snapsheet"},{"email":"leonard.lozovsky@snapsheet.me","name":"lenny-snapsheet"},{"email":"kyle.bryant@snapsheet.me","name":"snap_worker8"},{"email":"kevin.okinedo@snapsheet.me","name":"kokinedo-snapsheet"},{"email":"jessica.kress@snapsheet.me","name":"jessica.kress"},{"email":"kumar.abrol@snapsheet.me","name":"kumarabrol"},{"email":"jenni.chng@snapsheet.me","name":"jennisnapsheet"},{"email":"abbi.johnson@snapsheet.me","name":"ajsnapsheet"},{"email":"kyle.pacheco@snapsheet.me","name":"kylepacheco-snapsheet"},{"email":"ryan.mark@snapsheet.me","name":"ryanmarksnapsheet"},{"email":"jsainz237+dev@gmail.com","name":"jsainz237"},{"email":"charles.hellstrom@snapsheet.me","name":"chellstrom-snapsheet"},{"email":"alvitovitch@gmail.com","name":"alvitovitch"},{"email":"anthony.dsouza@snapsheet.me","name":"adsouza-snapsheet"},{"email":"jessica.kohl@snapsheet.me","name":"kohljd"},{"email":"daniel.marc.gardner@gmail.com","name":"danielmarcgardner"},{"email":"benjamin.borges@snapsheet.me","name":"benbo99"},{"email":"jeffrey.hage@snapsheet.me","name":"jhage-snapsheet"},{"email":"nicholas@nicholasreynolds.com","name":"nicholasjreynolds"},{"email":"benjamin.mesirow@snapsheet.me","name":"ben-mesirow-snapsheet"},{"email":"james.ganzer@snapsheet.me","name":"jganzer"},{"email":"andrew.mansavage@snapsheet.me","name":"andy-man"},{"email":"thomas.zhang@snapsheet.me","name":"tfzhang-snapsheet"},{"email":"fernando.paniagua@snapsheet.me","name":"fpaniagua-snapsheet"},{"email":"jadarius.hill@snapsheet.me","name":"jadabyte256"},{"email":"trevor.bagbey@snapsheet.me","name":"tbagbey"},{"email":"brandon.campbell@snapsheet.me","name":"bcampbell-snap"}],"readme":"# react-dd-menu\nA React dropdown menu\n\nLive Example: [React Dropdown Menu](http://mlaursen.github.io/react-dd-menu)\n\n> NOTE: I am no longer actively developing this project as I think it has met most\nof my initial goals. I am more than happy to keep reviewing/accepting pull requests\nthough.\n\n### Installation\n\n```bash\n$ npm install -S react-dd-menu \\\n                 # If you haven't installed already\n                 react \\\n                 react-dom \\\n                 react-addons-css-transition-group\n```\n\n#### Props\n\n##### DropdownMenu\n\n```js\n  static MENU_SIZES = ['sm', 'md', 'lg', 'xl']\n  static ALIGNMENTS = ['center', 'right', 'left']\n\n  static propTypes = {\n    isOpen: PropTypes.bool.isRequired,\n    close: PropTypes.func.isRequired,\n    toggle: PropTypes.node.isRequired,\n    children: PropTypes.node,\n    inverse: PropTypes.bool,\n    align: PropTypes.oneOf(ALIGNMENTS),\n    animAlign: PropTypes.oneOf(ALIGNMENTS),\n    textAlign: PropTypes.oneOf(ALIGNMENTS),\n    menuAlign: PropTypes.oneOf(ALIGNMENTS),\n    className: PropTypes.string,\n    size: PropTypes.oneOf(MENU_SIZES),\n    upwards: PropTypes.bool,\n    animate: PropTypes.bool,\n    enterTimeout: PropTypes.number,\n    leaveTimeout: PropTypes.number,\n    closeOnInsideClick: PropTypes.bool,\n    closeOnOutsideClick: PropTypes.bool,\n  }\n\n  static defaultProps = {\n    inverse: false,\n    align: 'center',\n    animAlign: null,\n    textAlign: null,\n    menuAlign: null,\n    className: null,\n    size: null,\n    upwards: false,\n    animate: true,\n    enterTimeout: 150,\n    leaveTimeout: 150,\n    closeOnInsideClick: true,\n    closeOnOutsideClick: true,\n  }\n```\n\n* `isOpen`    - Boolean for telling if the menu is open. This was passed in as a prop instead of having the component's own state so you can decide when to close the menu on your own.\n* `close`     - a function to call that turns the `isOpen` boolean to false\n* `toggle`    - any renderable item that will be used to toggle the menu open. So normally a button or any other content.\n* `inverse`   - boolean if it is an inversed color menu\n* `align`     - the alignment for the animation, text, and menu if the specific props are not given. Defaults to `center`\n* `animAlign` - the alignment/direction that the menu will appear from\n* `textAlign` - the alignment of each list item's text\n* `menuAlign` - the alignment of the menu to the `toggle` element\n* `size`      - the size of the menu. Defaults to auto size.\n* `className` - any additional css classes to add the the dropdown menu container. (`.dd-menu`)\n* `upwards`   - boolean if the menu should go upwards. Defaults to `false`\n* `animate`   - boolean if the menu should animate on open and close. Defaults to `true`\n* `enterTimeout` - the amount of time in ms to end the CSSTransitionGroup. Defaults to `150`\n* `leaveTimeout` - the amount of time in ms to end the CSSTransitionGroup. Defaults to `150`\n* `closeOnInsideClick`  - a boolean if the menu should close when you click inside the menu. Defaults to `true`\n* `closeOnOutsideClick` - a boolean if the menu should close when you click elsewhere on the page. Defaults to `true`\n\n##### NestedDropdownMenu\n\n```js\n  static propTypes = {\n    toggle: PropTypes.node.isRequired,\n    children: PropTypes.node,\n    nested: PropTypes.oneOf(['inherit', 'reverse', 'left', 'right']),\n    animate: PropTypes.bool,\n    direction: PropTypes.oneOf(['left', 'right']),\n    upwards: PropTypes.bool,\n    delay: PropTypes.number,\n    enterTimeout: PropTypes.number,\n    leaveTimeout: PropTypes.number,\n    openOnMouseover: PropTypes.bool,\n  }\n\n  static defaultProps = {\n    nested: 'reverse',\n    animate: false,\n    direction: 'right',\n    upwards: false,\n    delay: 500,\n    enterTimeout: 150,\n    leaveTimeout: 150,\n    openOnMouseover: true,\n  }\n```\n\n* `toggle`  - an renderable item that will open the nested menu on hover. It gets wrapped in a `li` element, so it might be best to have a button or a link tag.\n* `nested`  - the nested menu's expansion direction. The default case *should* hopefully be the only used case.\n  * Inherit - If the main dropdown menu is aligned left, the nested menu will appear to the left as well.\n  * Reverse - If the main dropdown menu is aligned left, the nested menu will appear to the right.\n  * Left    - Force the menu to appear to the left of the menu.\n  * Right   - Force the menu to appear to the right of the menu.\n* `animate` - boolean if the nested menu should animate when appearing. Defaults to `false`\n* `direction` - The animation direction.\n* `upwards`   - boolean if the nested menu should render upwards. Defaults to `false`\n* `delay`   - A number in ms to allow the mouse to be off of the dropdown menu to close it. Defaults to `500ms`\n* `enterTimeout` - the amount of time in ms to end the CSSTransitionGroup. Defaults to `150`\n* `leaveTimeout` - the amount of time in ms to end the CSSTransitionGroup. Defaults to `150`\n* `openOnMouseover` - boolean if the menu can be opened/close by mouseover/mouseleave events\n\n### Styling\nIn the `dist` folder, there is a `react-dd-menu.css` and a `react-dd-menu.min.css` with the default css stylings. If you have SASS, the source is located in `src/scss`.\n\nIf you don't want the default css or to edit the default, the layout is this:\n\n```\n.dd-menu\n| -- toggle component\n| -- .dd-menu-items\n|    | -- ul\n|    |    | [role=\"separator\"], .separator\n```\n\nThe separator can be any element with a classname of `.separator` or any element with a role of separator (or both). To get the best styling, it *should* probably be applied to an `li` element.\n\n### Usage\n\n```js\nimport React from 'react';\nimport DropdownMenu from 'react-dd-menu';\n\nclass Example extends React.Component {\n  constructor() {\n    this.state = {\n      isMenuOpen: false\n    };\n  }\n\n  toggle = () => {\n    this.setState({ isMenuOpen: !this.state.isMenuOpen });\n  };\n\n  close = () => {\n    this.setState({ isMenuOpen: false });\n  };\n\n  click = () => {\n    console.log('You clicked an item');\n  };\n\n  render() {\n    let menuOptions = {\n      isOpen: this.state.isOpen,\n      close: this.close.bind(this),\n      toggle: <button type=\"button\" onClick={this.toggle.bind(this)}>Click me!</button>,\n      align: 'right',\n    };\n    return (\n      <DropdownMenu {...menuOptions}>\n        <li><a href=\"#\">Example 1</a></li>\n        <li><button type=\"button\" onClick={this.click.bind(this)}>Example 2</button></li>\n      </DropdownMenu>\n    );\n  }\n}\n```\n\nor..\n\n```js\nvar React = require('react');\nvar DropdownMenu = require('react-dd-menu');\n\nvar Example = React.createClass({\n  getInitialState: function() {\n    return { isMenuOpen: false };\n  },\n\n  toggle: function() {\n    this.setState({ isMenuOpen: !this.state.isMenuOpen });\n  },\n\n  close: function() {\n    this.setState({ isMenuOpen: false });\n  },\n\n  click: function() {\n    console.log('You clicked an item');\n  },\n\n  render: function() {\n    var menuOptions = {\n      isOpen: this.state.isOpen,\n      close: this.close,\n      toggle: <button type=\"button\" onClick={this.toggle}>Click me!</button>,\n      align: 'right'\n    }\n    return (\n      <DropdownMenu {...menuOptions}>\n        <li><a href=\"#\">Example 1</a></li>\n        <li><button type=\"button\" onClick={this.click}>Example 2</button></li>\n      </DropdownMenu>\n    );\n  }\n});\n```\n\n#### Nested Menu Example\n```js\n'use strict';\n\nimport React from 'react';\nimport DropdownMenu, { NestedDropdownMenu } from 'react-dd-menu';\n\nclass Example extends React.Component {\n  constructor() {\n    this.state = {\n      isMenuOpen: false\n    };\n  }\n\n  toggle = () => {\n    this.setState({ isMenuOpen: !this.state.isMenuOpen });\n  }\n\n  close = () => {\n    this.setState({ isMenuOpen: false });\n  };\n\n  click = () => {\n    console.log('You clicked an item');\n  };\n\n  render() {\n    const menuOptions = {\n      isOpen: this.state.isOpen,\n      close: this.close.bind(this),\n      toggle: <button type=\"button\" onClick={this.toggle.bind(this)}>Click me!</button>,\n      align: 'right',\n    };\n\n    const nestedProps = {\n      toggle: <a href=\"#\">Hover me for Nested Menu!</a>,\n      animate: true,\n    };\n\n    return (\n      <DropdownMenu {...menuOptions}>\n        <li><a href=\"#\">Example 1</a></li>\n        <li><button type=\"button\" onClick={this.click.bind(this)}>Example 2</button></li>\n        <li role=\"separator\" className=\"separator\" />\n        <NestedDropdownMenu {...nestedProps}>\n          <li><a href=\"#\">I am in a Nested Menu!</a></li>\n        </NestedDropdownMenu>\n      </DropdownMenu>\n    );\n  }\n}\n```\n\n### Contributors/Local Changes\n\nTo rebuild the source:\n\n```bash\n$ npm run build\n```\n\nThis will output all the css and js files into `./dist`;\n\n### Versions\n\n- 0.0.2 - Fixed removing the click event listener\n- 0.0.3 - Positioning fixes and convenience props for different dropdown menu configs\n- 0.0.4 - Fixed width for firefox and added convenience props for sizes\n- 0.0.5 - Fixed Button font size, added examples\n- 1.0.0 - Added nested dropdown menus, a separator class, drop-up? menus.\n- 1.0.1 - Fixed exports for ES5 :(\n- 1.0.2 - Added delay to nested dropdown menu closing and added github page for examples.\n- 1.0.3 - Fixed problem with multiple menus and added ability to disable animation\n- 1.0.4 - Upgraded to React 0.14.0\n- 1.0.5 - Added ability to disable onClickInside and onClickOutside close of the menus. Added Touch/click support for nested menus.\n- 1.0.6 - No new features. Upgraded dev stuff to babel 6 and separated example\n- 1.0.7 - Updated to support React 15 as peer dependencies. No real changes needed\n- 2.0.0 - Removed PureRenderMixin peerDependecy and switched to PureComponent instead.\n","readmeFilename":"README.md"}