commit 5d2038caf6554b33a162723dca1e02a6cf4a2c37 Author: Jeff Sagal Date: Tue Mar 1 21:07:16 2016 -0800 initial commit diff --git a/.babelrc b/.babelrc new file mode 100644 index 0000000..51a8ae4 --- /dev/null +++ b/.babelrc @@ -0,0 +1,4 @@ +{ + "presets": ["es2015", "stage-2"], + "plugins": ["transform-runtime"] +} diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 0000000..7f2ceaf --- /dev/null +++ b/.eslintrc @@ -0,0 +1,185 @@ +{ + "plugins": [ + "html" + ], + + "env": { + "browser": true, + "node": true + }, + + "ecmaFeatures": { + "arrowFunctions": true, + "destructuring": true, + "classes": true, + "defaultParams": true, + "blockBindings": true, + "modules": true, + "objectLiteralComputedProperties": true, + "objectLiteralShorthandMethods": true, + "objectLiteralShorthandProperties": true, + "restParams": true, + "spread": true, + "forOf": true, + "generators": true, + "templateStrings": true, + "superInFunctions": true, + "experimentalObjectRestSpread": true + }, + + "rules": { + "accessor-pairs": 2, + "array-bracket-spacing": 0, + "block-scoped-var": 0, + "brace-style": [2, "1tbs", { "allowSingleLine": true }], + "camelcase": 0, + "comma-dangle": [2, "never"], + "comma-spacing": [2, { "before": false, "after": true }], + "comma-style": [2, "last"], + "complexity": 0, + "computed-property-spacing": 0, + "consistent-return": 0, + "consistent-this": 0, + "constructor-super": 2, + "curly": [2, "multi-line"], + "default-case": 0, + "dot-location": [2, "property"], + "dot-notation": 0, + "eol-last": 2, + "eqeqeq": [2, "allow-null"], + "func-names": 0, + "func-style": 0, + "generator-star-spacing": [2, { "before": true, "after": true }], + "guard-for-in": 0, + "handle-callback-err": [2, "^(err|error)$" ], + "indent": [2, 2, { "SwitchCase": 1 }], + "key-spacing": [2, { "beforeColon": false, "afterColon": true }], + "linebreak-style": 0, + "lines-around-comment": 0, + "max-nested-callbacks": 0, + "new-cap": [2, { "newIsCap": true, "capIsNew": false }], + "new-parens": 2, + "newline-after-var": 0, + "no-alert": 0, + "no-array-constructor": 2, + "no-caller": 2, + "no-catch-shadow": 0, + "no-cond-assign": 2, + "no-console": 0, + "no-constant-condition": 0, + "no-continue": 0, + "no-control-regex": 2, + "no-debugger": 2, + "no-delete-var": 2, + "no-div-regex": 0, + "no-dupe-args": 2, + "no-dupe-keys": 2, + "no-duplicate-case": 2, + "no-else-return": 0, + "no-empty": 0, + "no-empty-character-class": 2, + "no-empty-label": 2, + "no-eq-null": 0, + "no-eval": 2, + "no-ex-assign": 2, + "no-extend-native": 2, + "no-extra-bind": 2, + "no-extra-boolean-cast": 2, + "no-extra-parens": 0, + "no-extra-semi": 0, + "no-fallthrough": 2, + "no-floating-decimal": 2, + "no-func-assign": 2, + "no-implied-eval": 2, + "no-inline-comments": 0, + "no-inner-declarations": [2, "functions"], + "no-invalid-regexp": 2, + "no-irregular-whitespace": 2, + "no-iterator": 2, + "no-label-var": 2, + "no-labels": 2, + "no-lone-blocks": 2, + "no-lonely-if": 0, + "no-loop-func": 0, + "no-mixed-requires": 0, + "no-mixed-spaces-and-tabs": 2, + "no-multi-spaces": 2, + "no-multi-str": 2, + "no-multiple-empty-lines": [2, { "max": 1 }], + "no-native-reassign": 2, + "no-negated-in-lhs": 2, + "no-nested-ternary": 0, + "no-new": 2, + "no-new-func": 0, + "no-new-object": 2, + "no-new-require": 2, + "no-new-wrappers": 2, + "no-obj-calls": 2, + "no-octal": 2, + "no-octal-escape": 2, + "no-param-reassign": 0, + "no-path-concat": 0, + "no-process-env": 0, + "no-process-exit": 0, + "no-proto": 0, + "no-redeclare": 2, + "no-regex-spaces": 2, + "no-restricted-modules": 0, + "no-return-assign": 2, + "no-script-url": 0, + "no-self-compare": 2, + "no-sequences": 2, + "no-shadow": 0, + "no-shadow-restricted-names": 2, + "no-spaced-func": 2, + "no-sparse-arrays": 2, + "no-sync": 0, + "no-ternary": 0, + "no-this-before-super": 2, + "no-throw-literal": 2, + "no-trailing-spaces": 2, + "no-undef": 2, + "no-undef-init": 2, + "no-undefined": 0, + "no-underscore-dangle": 0, + "no-unexpected-multiline": 2, + "no-unneeded-ternary": 2, + "no-unreachable": 2, + "no-unused-expressions": 0, + "no-unused-vars": [2, { "vars": "all", "args": "none" }], + "no-use-before-define": 0, + "no-var": 0, + "no-void": 0, + "no-warning-comments": 0, + "no-with": 2, + "object-curly-spacing": 0, + "object-shorthand": 0, + "one-var": [2, { "initialized": "never" }], + "operator-assignment": 0, + "operator-linebreak": [2, "after", { "overrides": { "?": "before", ":": "before" } }], + "padded-blocks": 0, + "prefer-const": 0, + "quote-props": 0, + "quotes": [2, "single", "avoid-escape"], + "radix": 2, + "semi": [2, "never"], + "semi-spacing": 0, + "sort-vars": 0, + "space-after-keywords": [2, "always"], + "space-before-blocks": [2, "always"], + "space-before-function-paren": [2, "always"], + "space-in-parens": [2, "never"], + "space-infix-ops": 2, + "space-return-throw-case": 2, + "space-unary-ops": [2, { "words": true, "nonwords": false }], + "spaced-comment": [2, "always", { "markers": ["global", "globals", "eslint", "eslint-disable", "*package", "!"] }], + "strict": 0, + "use-isnan": 2, + "valid-jsdoc": 0, + "valid-typeof": 2, + "vars-on-top": 0, + "wrap-iife": [2, "any"], + "wrap-regex": 0, + "yoda": [2, "never"] + } +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..09db1be --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +.DS_Store +node_modules +dist/build.js diff --git a/README.md b/README.md new file mode 100644 index 0000000..4030d88 --- /dev/null +++ b/README.md @@ -0,0 +1,24 @@ +# vue-select + +> A Vue.js project + +## Build Setup + +``` bash +# install dependencies +npm install + +# serve with hot reload at localhost:8080 +npm run dev + +# build for production with minification +npm run build + +# lint all *.js and *.vue files +npm run lint + +# run unit tests +npm test +``` + +For more information see the [docs for vueify](https://github.com/vuejs/vueify). diff --git a/dist/.gitkeep b/dist/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/index.html b/index.html new file mode 100644 index 0000000..a8fd783 --- /dev/null +++ b/index.html @@ -0,0 +1,14 @@ + + + + + vue-select + + + + + + + + + diff --git a/karma.conf.js b/karma.conf.js new file mode 100644 index 0000000..afeaee6 --- /dev/null +++ b/karma.conf.js @@ -0,0 +1,20 @@ +// https://github.com/Nikku/karma-browserify +module.exports = function (config) { + config.set({ + browsers: ['PhantomJS'], + frameworks: ['browserify', 'jasmine'], + files: ['test/unit/**/*.js'], + reporters: ['spec'], + preprocessors: { + 'test/unit/**/*.js': ['browserify'] + }, + browserify: { + debug: true, + // needed to enable mocks + plugin: [require('proxyquireify').plugin] + }, + // if you want to continuously re-run tests on file-save, + // replace the following line with `autoWatch: true` + singleRun: true + }) +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..cbbf5da --- /dev/null +++ b/package.json @@ -0,0 +1,48 @@ +{ + "name": "vue-select", + "description": "A Vue.js project", + "author": "Jeff Sagal ", + "private": true, + "scripts": { + "dev": "watchify -vd -p browserify-hmr -e src/main.js -o dist/build.js & http-server -c 1 -a localhost", + "build": "cross-env NODE_ENV=production browserify -e src/main.js | uglifyjs -c warnings=false -m > dist/build.js", + "lint": "eslint --ext .js,.vue src test/unit", + "test": "karma start karma.conf.js" + }, + "browserify": { + "transform": [ + "vueify", + "babelify" + ] + }, + "dependencies": { + "vue": "^1.0.0" + }, + "devDependencies": { + "babel-core": "^6.0.0", + "babel-plugin-transform-runtime": "^6.0.0", + "babel-preset-es2015": "^6.0.0", + "babel-preset-stage-2": "^6.0.0", + "babel-runtime": "^5.8.0", + "babelify": "^7.2.0", + "browserify": "^12.0.1", + "browserify-hmr": "^0.3.1", + "cross-env": "^1.0.5", + "eslint": "^1.10.3", + "eslint-plugin-html": "^1.1.0", + "http-server": "^0.8.5", + "jasmine-core": "^2.4.1", + "karma": "^0.13.15", + "karma-browserify": "^4.4.2", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^1.0.0", + "karma-spec-reporter": "0.0.23", + "phantomjs-prebuilt": "^2.1.3", + "proxyquireify": "^3.0.1", + "uglify-js": "^2.5.0", + "vue-hot-reload-api": "^1.2.2", + "vueify": "^8.0.0", + "vueify-insert-css": "^1.0.0", + "watchify": "^3.4.0" + } +} diff --git a/src/App.vue b/src/App.vue new file mode 100644 index 0000000..2d1b901 --- /dev/null +++ b/src/App.vue @@ -0,0 +1,30 @@ + + + diff --git a/src/components/Select.vue b/src/components/Select.vue new file mode 100644 index 0000000..73ebefa --- /dev/null +++ b/src/components/Select.vue @@ -0,0 +1,299 @@ + + + + + + diff --git a/src/countries.js b/src/countries.js new file mode 100644 index 0000000..9c17d19 --- /dev/null +++ b/src/countries.js @@ -0,0 +1,246 @@ +module.exports = [ + {value: "AF", label: "Afghanistan"}, + {value: "AX", label: "Ă…land Islands"}, + {value: "AL", label: "Albania"}, + {value: "DZ", label: "Algeria"}, + {value: "AS", label: "American Samoa"}, + {value: "AD", label: "Andorra"}, + {value: "AO", label: "Angola"}, + {value: "AI", label: "Anguilla"}, + {value: "AQ", label: "Antarctica"}, + {value: "AG", label: "Antigua and Barbuda"}, + {value: "AR", label: "Argentina"}, + {value: "AM", label: "Armenia"}, + {value: "AW", label: "Aruba"}, + {value: "AU", label: "Australia"}, + {value: "AT", label: "Austria"}, + {value: "AZ", label: "Azerbaijan"}, + {value: "BS", label: "Bahamas"}, + {value: "BH", label: "Bahrain"}, + {value: "BD", label: "Bangladesh"}, + {value: "BB", label: "Barbados"}, + {value: "BY", label: "Belarus"}, + {value: "BE", label: "Belgium"}, + {value: "BZ", label: "Belize"}, + {value: "BJ", label: "Benin"}, + {value: "BM", label: "Bermuda"}, + {value: "BT", label: "Bhutan"}, + {value: "BO", label: "Bolivia"}, + {value: "BA", label: "Bosnia and Herzegovina"}, + {value: "BW", label: "Botswana"}, + {value: "BV", label: "Bouvet Island"}, + {value: "BR", label: "Brazil"}, + {value: "IO", label: "British Indian Ocean Territory"}, + {value: "BN", label: "Brunei Darussalam"}, + {value: "BG", label: "Bulgaria"}, + {value: "BF", label: "Burkina Faso"}, + {value: "BI", label: "Burundi"}, + {value: "KH", label: "Cambodia"}, + {value: "CM", label: "Cameroon"}, + {value: "CA", label: "Canada"}, + {value: "CV", label: "Cape Verde"}, + {value: "KY", label: "Cayman Islands"}, + {value: "CF", label: "Central African Republic"}, + {value: "TD", label: "Chad"}, + {value: "CL", label: "Chile"}, + {value: "CN", label: "China"}, + {value: "CX", label: "Christmas Island"}, + {value: "CC", label: "Cocos (Keeling) Islands"}, + {value: "CO", label: "Colombia"}, + {value: "KM", label: "Comoros"}, + {value: "CG", label: "Congo"}, + {value: "CD", label: "Congo, The Democratic Republic of The"}, + {value: "CK", label: "Cook Islands"}, + {value: "CR", label: "Costa Rica"}, + {value: "CI", label: "Cote D'ivoire"}, + {value: "HR", label: "Croatia"}, + {value: "CU", label: "Cuba"}, + {value: "CY", label: "Cyprus"}, + {value: "CZ", label: "Czech Republic"}, + {value: "DK", label: "Denmark"}, + {value: "DJ", label: "Djibouti"}, + {value: "DM", label: "Dominica"}, + {value: "DO", label: "Dominican Republic"}, + {value: "EC", label: "Ecuador"}, + {value: "EG", label: "Egypt"}, + {value: "SV", label: "El Salvador"}, + {value: "GQ", label: "Equatorial Guinea"}, + {value: "ER", label: "Eritrea"}, + {value: "EE", label: "Estonia"}, + {value: "ET", label: "Ethiopia"}, + {value: "FK", label: "Falkland Islands (Malvinas)"}, + {value: "FO", label: "Faroe Islands"}, + {value: "FJ", label: "Fiji"}, + {value: "FI", label: "Finland"}, + {value: "FR", label: "France"}, + {value: "GF", label: "French Guiana"}, + {value: "PF", label: "French Polynesia"}, + {value: "TF", label: "French Southern Territories"}, + {value: "GA", label: "Gabon"}, + {value: "GM", label: "Gambia"}, + {value: "GE", label: "Georgia"}, + {value: "DE", label: "Germany"}, + {value: "GH", label: "Ghana"}, + {value: "GI", label: "Gibraltar"}, + {value: "GR", label: "Greece"}, + {value: "GL", label: "Greenland"}, + {value: "GD", label: "Grenada"}, + {value: "GP", label: "Guadeloupe"}, + {value: "GU", label: "Guam"}, + {value: "GT", label: "Guatemala"}, + {value: "GG", label: "Guernsey"}, + {value: "GN", label: "Guinea"}, + {value: "GW", label: "Guinea-bissau"}, + {value: "GY", label: "Guyana"}, + {value: "HT", label: "Haiti"}, + {value: "HM", label: "Heard Island and Mcdonald Islands"}, + {value: "VA", label: "Holy See (Vatican City State)"}, + {value: "HN", label: "Honduras"}, + {value: "HK", label: "Hong Kong"}, + {value: "HU", label: "Hungary"}, + {value: "IS", label: "Iceland"}, + {value: "IN", label: "India"}, + {value: "ID", label: "Indonesia"}, + {value: "IR", label: "Iran, Islamic Republic of"}, + {value: "IQ", label: "Iraq"}, + {value: "IE", label: "Ireland"}, + {value: "IM", label: "Isle of Man"}, + {value: "IL", label: "Israel"}, + {value: "IT", label: "Italy"}, + {value: "JM", label: "Jamaica"}, + {value: "JP", label: "Japan"}, + {value: "JE", label: "Jersey"}, + {value: "JO", label: "Jordan"}, + {value: "KZ", label: "Kazakhstan"}, + {value: "KE", label: "Kenya"}, + {value: "KI", label: "Kiribati"}, + {value: "KP", label: "Korea, Democratic People's Republic of"}, + {value: "KR", label: "Korea, Republic of"}, + {value: "KW", label: "Kuwait"}, + {value: "KG", label: "Kyrgyzstan"}, + {value: "LA", label: "Lao People's Democratic Republic"}, + {value: "LV", label: "Latvia"}, + {value: "LB", label: "Lebanon"}, + {value: "LS", label: "Lesotho"}, + {value: "LR", label: "Liberia"}, + {value: "LY", label: "Libyan Arab Jamahiriya"}, + {value: "LI", label: "Liechtenstein"}, + {value: "LT", label: "Lithuania"}, + {value: "LU", label: "Luxembourg"}, + {value: "MO", label: "Macao"}, + {value: "MK", label: "Macedonia, The Former Yugoslav Republic of"}, + {value: "MG", label: "Madagascar"}, + {value: "MW", label: "Malawi"}, + {value: "MY", label: "Malaysia"}, + {value: "MV", label: "Maldives"}, + {value: "ML", label: "Mali"}, + {value: "MT", label: "Malta"}, + {value: "MH", label: "Marshall Islands"}, + {value: "MQ", label: "Martinique"}, + {value: "MR", label: "Mauritania"}, + {value: "MU", label: "Mauritius"}, + {value: "YT", label: "Mayotte"}, + {value: "MX", label: "Mexico"}, + {value: "FM", label: "Micronesia, Federated States of"}, + {value: "MD", label: "Moldova, Republic of"}, + {value: "MC", label: "Monaco"}, + {value: "MN", label: "Mongolia"}, + {value: "ME", label: "Montenegro"}, + {value: "MS", label: "Montserrat"}, + {value: "MA", label: "Morocco"}, + {value: "MZ", label: "Mozambique"}, + {value: "MM", label: "Myanmar"}, + {value: "NA", label: "Namibia"}, + {value: "NR", label: "Nauru"}, + {value: "NP", label: "Nepal"}, + {value: "NL", label: "Netherlands"}, + {value: "AN", label: "Netherlands Antilles"}, + {value: "NC", label: "New Caledonia"}, + {value: "NZ", label: "New Zealand"}, + {value: "NI", label: "Nicaragua"}, + {value: "NE", label: "Niger"}, + {value: "NG", label: "Nigeria"}, + {value: "NU", label: "Niue"}, + {value: "NF", label: "Norfolk Island"}, + {value: "MP", label: "Northern Mariana Islands"}, + {value: "NO", label: "Norway"}, + {value: "OM", label: "Oman"}, + {value: "PK", label: "Pakistan"}, + {value: "PW", label: "Palau"}, + {value: "PS", label: "Palestinian Territory, Occupied"}, + {value: "PA", label: "Panama"}, + {value: "PG", label: "Papua New Guinea"}, + {value: "PY", label: "Paraguay"}, + {value: "PE", label: "Peru"}, + {value: "PH", label: "Philippines"}, + {value: "PN", label: "Pitcairn"}, + {value: "PL", label: "Poland"}, + {value: "PT", label: "Portugal"}, + {value: "PR", label: "Puerto Rico"}, + {value: "QA", label: "Qatar"}, + {value: "RE", label: "Reunion"}, + {value: "RO", label: "Romania"}, + {value: "RU", label: "Russian Federation"}, + {value: "RW", label: "Rwanda"}, + {value: "SH", label: "Saint Helena"}, + {value: "KN", label: "Saint Kitts and Nevis"}, + {value: "LC", label: "Saint Lucia"}, + {value: "PM", label: "Saint Pierre and Miquelon"}, + {value: "VC", label: "Saint Vincent and The Grenadines"}, + {value: "WS", label: "Samoa"}, + {value: "SM", label: "San Marino"}, + {value: "ST", label: "Sao Tome and Principe"}, + {value: "SA", label: "Saudi Arabia"}, + {value: "SN", label: "Senegal"}, + {value: "RS", label: "Serbia"}, + {value: "SC", label: "Seychelles"}, + {value: "SL", label: "Sierra Leone"}, + {value: "SG", label: "Singapore"}, + {value: "SK", label: "Slovakia"}, + {value: "SI", label: "Slovenia"}, + {value: "SB", label: "Solomon Islands"}, + {value: "SO", label: "Somalia"}, + {value: "ZA", label: "South Africa"}, + {value: "GS", label: "South Georgia and The South Sandwich Islands"}, + {value: "ES", label: "Spain"}, + {value: "LK", label: "Sri Lanka"}, + {value: "SD", label: "Sudan"}, + {value: "SR", label: "Suriname"}, + {value: "SJ", label: "Svalbard and Jan Mayen"}, + {value: "SZ", label: "Swaziland"}, + {value: "SE", label: "Sweden"}, + {value: "CH", label: "Switzerland"}, + {value: "SY", label: "Syrian Arab Republic"}, + {value: "TW", label: "Taiwan, Province of China"}, + {value: "TJ", label: "Tajikistan"}, + {value: "TZ", label: "Tanzania, United Republic of"}, + {value: "TH", label: "Thailand"}, + {value: "TL", label: "Timor-leste"}, + {value: "TG", label: "Togo"}, + {value: "TK", label: "Tokelau"}, + {value: "TO", label: "Tonga"}, + {value: "TT", label: "Trinidad and Tobago"}, + {value: "TN", label: "Tunisia"}, + {value: "TR", label: "Turkey"}, + {value: "TM", label: "Turkmenistan"}, + {value: "TC", label: "Turks and Caicos Islands"}, + {value: "TV", label: "Tuvalu"}, + {value: "UG", label: "Uganda"}, + {value: "UA", label: "Ukraine"}, + {value: "AE", label: "United Arab Emirates"}, + {value: "GB", label: "United Kingdom"}, + {value: "US", label: "United States"}, + {value: "UM", label: "United States Minor Outlying Islands"}, + {value: "UY", label: "Uruguay"}, + {value: "UZ", label: "Uzbekistan"}, + {value: "VU", label: "Vanuatu"}, + {value: "VE", label: "Venezuela"}, + {value: "VN", label: "Viet Nam"}, + {value: "VG", label: "Virgin Islands, British"}, + {value: "VI", label: "Virgin Islands, U.S."}, + {value: "WF", label: "Wallis and Futuna"}, + {value: "EH", label: "Western Sahara"}, + {value: "YE", label: "Yemen"}, + {value: "ZM", label: "Zambia"}, + {value: "ZW", label: "Zimbabwe"}, + ]; diff --git a/src/main.js b/src/main.js new file mode 100644 index 0000000..657798d --- /dev/null +++ b/src/main.js @@ -0,0 +1,58 @@ +import Vue from 'vue' +import App from './App.vue' + +Vue.transition('bounce', { + enterClass: 'bounceInLeft', + leaveClass: 'bounceOutRight' +}) + +Vue.transition('zoom', { + enterClass: 'zoomIn', + leaveClass: 'zoomOut' +}) + +Vue.transition('fade', { + enterClass: 'fadeIn', + leaveClass: 'fadeOut' +}) + +Vue.transition('fadeInDownBig', { + enterClass: 'fadeInDownBig', + leaveClass: 'fadeOutDownBig' +}) + +Vue.transition('slideInDown', { + enterClass: 'slideInDown', + leaveClass: 'slideOutDown' +}) + +Vue.transition('slideUp', { + enterClass: 'fadeInDown', + leaveClass: 'fadeOutUp' +}) + +Vue.transition('lightSpeed', { + enterClass: 'lightSpeedIn', + leaveClass: 'lightSpeedOut' +}) + +Vue.transition('flipX', { + enterClass: 'flipInX', + leaveClass: 'flipOutX' +}) + +Vue.transition('flipY', { + enterClass: 'flipInY', + leaveClass: 'flipOutY' +}) + +Vue.transition('rotate', { + enterClass: 'rotateIn', + leaveClass: 'rotateOut' +}) + +/* eslint-disable no-new */ +new Vue({ + el: 'body', + components: { App } +}) diff --git a/test/unit/Hello.spec.js b/test/unit/Hello.spec.js new file mode 100644 index 0000000..b9eb540 --- /dev/null +++ b/test/unit/Hello.spec.js @@ -0,0 +1,17 @@ +/* global describe, it, expect */ + +import Vue from 'vue' +import Hello from '../../src/components/Hello.vue' + +describe('Hello.vue', () => { + it('should render correct contents', () => { + const vm = new Vue({ + template: '
', + components: { Hello } + }).$mount() + expect(vm.$el.querySelector('.hello h1').textContent).toBe('Hello World!') + }) +}) + +// also see example testing a component with mocks at +// https://github.com/vuejs/vueify-example/blob/master/test/unit/a.spec.js#L22-L43