parent
59a0e6d286
commit
f7fada053a
@ -0,0 +1,184 @@ |
||||
{ |
||||
"name": "remix-ide", |
||||
"version": "v0.7.5", |
||||
"description": "Minimalistic browser-based Solidity IDE", |
||||
"devDependencies": { |
||||
"ace-mode-solidity": "^0.1.0", |
||||
"async": "^2.1.2", |
||||
"babel-eslint": "^7.1.1", |
||||
"babel-plugin-transform-object-assign": "^6.22.0", |
||||
"babel-plugin-yo-yoify": "^0.3.3", |
||||
"babel-polyfill": "^6.22.0", |
||||
"babel-preset-env": "^1.6.1", |
||||
"babel-preset-es2015": "^6.24.0", |
||||
"babel-preset-es2017": "^6.24.1", |
||||
"babel-preset-stage-0": "^6.24.1", |
||||
"babelify": "^7.3.0", |
||||
"brace": "^0.8.0", |
||||
"browserify-reload": "^1.0.3", |
||||
"component-type": "^1.2.1", |
||||
"copy-text-to-clipboard": "^1.0.4", |
||||
"csjs-inject": "^1.0.1", |
||||
"csslint": "^1.0.2", |
||||
"deep-equal": "^1.0.1", |
||||
"ethereumjs-util": "^5.1.2", |
||||
"execr": "^1.0.1", |
||||
"exorcist": "^0.4.0", |
||||
"fast-async": "6.3.1", |
||||
"fast-levenshtein": "^2.0.6", |
||||
"gists": "^1.0.1", |
||||
"javascript-serialize": "^1.6.1", |
||||
"jquery": "^3.3.1", |
||||
"js-base64": "^2.1.9", |
||||
"js-beautify": "1.6.14", |
||||
"minixhr": "^3.2.2", |
||||
"mkdirp": "^0.5.1", |
||||
"nightwatch": "^0.9.20", |
||||
"notify-error": "^1.2.0", |
||||
"npm-link-local": "^1.1.0", |
||||
"npm-run-all": "^4.0.2", |
||||
"onchange": "^3.2.1", |
||||
"remix-debug": "0.3.1", |
||||
"remix-analyzer": "0.3.1", |
||||
"remix-lib": "0.4.1", |
||||
"remix-solidity": "0.3.1", |
||||
"remix-tests": "0.1.1", |
||||
"remixd": "0.1.8-alpha.6", |
||||
"request": "^2.83.0", |
||||
"rimraf": "^2.6.1", |
||||
"selenium-standalone": "^6.0.1", |
||||
"solc": "^0.5.0", |
||||
"standard": "^8.5.0", |
||||
"swarmgw": "^0.3.1", |
||||
"tape": "^4.5.1", |
||||
"uglify-js": "^2.8.16", |
||||
"vm-browserify": "0.0.4", |
||||
"watchify": "^3.9.0", |
||||
"web3": "1.0.0-beta.27", |
||||
"webworkify": "^1.2.1", |
||||
"yo-yo": "^1.2.2", |
||||
"yo-yoify": "^3.7.3" |
||||
}, |
||||
"dependencies": { |
||||
"http-server": "0.9.0", |
||||
"remixd": "0.1.8-alpha.6" |
||||
}, |
||||
"repository": { |
||||
"type": "git", |
||||
"url": "git+https://github.com/ethereum/remix-ide.git" |
||||
}, |
||||
"keywords": [ |
||||
"ethereum", |
||||
"solidity", |
||||
"compiler" |
||||
], |
||||
"author": "chriseth", |
||||
"license": "MIT", |
||||
"bugs": { |
||||
"url": "https://github.com/ethereum/remix-ide/issues" |
||||
}, |
||||
"homepage": "https://github.com/ethereum/remix-ide#readme", |
||||
"standard": { |
||||
"ignore": [ |
||||
"build/", |
||||
"src/app/editor/mode-solidity.js", |
||||
"soljson.js" |
||||
], |
||||
"parser": "babel-eslint" |
||||
}, |
||||
"babel": { |
||||
"plugins": [ |
||||
"transform-es2015-template-literals", |
||||
"transform-es2015-literals", |
||||
"transform-es2015-function-name", |
||||
"transform-es2015-arrow-functions", |
||||
"transform-es2015-block-scoped-functions", |
||||
"transform-es2015-classes", |
||||
"transform-es2015-object-super", |
||||
"transform-es2015-shorthand-properties", |
||||
"transform-es2015-duplicate-keys", |
||||
"transform-es2015-computed-properties", |
||||
"transform-es2015-for-of", |
||||
"transform-es2015-sticky-regex", |
||||
"transform-es2015-unicode-regex", |
||||
"check-es2015-constants", |
||||
"transform-es2015-spread", |
||||
"transform-es2015-parameters", |
||||
"transform-es2015-destructuring", |
||||
"transform-es2015-block-scoping" |
||||
] |
||||
}, |
||||
"browserify": { |
||||
"transform": [ |
||||
[ |
||||
"babelify", |
||||
{ |
||||
"sourceMapsAbsolute": false, |
||||
"sourceMaps": true, |
||||
"plugins": [ |
||||
[ |
||||
"fast-async", |
||||
{ |
||||
"runtimePattern": null, |
||||
"compiler": { |
||||
"es7": true, |
||||
"noRuntime": true, |
||||
"promises": true, |
||||
"wrapAwait": true |
||||
} |
||||
} |
||||
], |
||||
[ |
||||
"yo-yoify" |
||||
], |
||||
[ |
||||
"transform-object-assign" |
||||
] |
||||
], |
||||
"presets": [ |
||||
"es2015" |
||||
] |
||||
} |
||||
] |
||||
] |
||||
}, |
||||
"bin": { |
||||
"remix-ide": "./bin/remix-ide" |
||||
}, |
||||
"scripts": { |
||||
"setupremix": "npm run linkremixlib && npm run linkremixsolidity && npm run linkremixsimulator && npm run linkremixtests", |
||||
"pullremix": "git clone https://github.com/ethereum/remix", |
||||
"linkremixlib": "cd node_modules && rm -rf remix-lib && ln -s ../../remix/remix-lib remix-lib && cd ..", |
||||
"linkremixsolidity": "cd node_modules && rm -rf remix-solidity && ln -s ../../remix/remix-solidity remix-solidity && cd ..", |
||||
"linkremixsimulator": "cd node_modules && rm -rf remix-simulator && ln -s ../../remix/remix-simulator remix-simulator && cd ..", |
||||
"linkremixtests": "cd node_modules && rm -rf remix-tests && ln -s ../../remix/remix-tests remix-tests && cd ..", |
||||
"build": "browserify src/index.js -o build/app.js --exclude solc", |
||||
"build_debugger": "browserify src/app/debugger/remix-debugger/index.js -o src/app/debugger/remix-debugger/build/app.js", |
||||
"browsertest": "sleep 5 && npm run nightwatch_local", |
||||
"csslint": "csslint --ignore=order-alphabetical --errors='errors,duplicate-properties,empty-rules' --exclude-list='assets/css/font-awesome.min.css' assets/css/", |
||||
"downloadsolc_root": "wget --no-check-certificate https://solc-bin.ethereum.org/bin/soljson-v0.5.1+commit.c8a2cb62.js -O soljson.js", |
||||
"lint": "standard | notify-error", |
||||
"make-mock-compiler": "node ci/makeMockCompiler.js", |
||||
"minify": "uglifyjs --in-source-map inline --source-map-inline -c warnings=false", |
||||
"nightwatch_local": "nightwatch --config nightwatch.js --env local", |
||||
"nightwatch_local_debugger": "nightwatch --config nightwatch_debugger.js --env local", |
||||
"nightwatch_remote_chrome": "nightwatch --config nightwatch.js --env chrome", |
||||
"nightwatch_remote_firefox": "nightwatch --config nightwatch.js --env default", |
||||
"nightwatch_remote_ie": "nightwatch --config nightwatch.js --env ie", |
||||
"nightwatch_remote_parallel": "nightwatch --config nightwatch.js --env safari,chrome,default", |
||||
"nightwatch_remote_safari": "nightwatch --config nightwatch.js --env safari", |
||||
"nightwatch_remote_debugger_parallel": "nightwatch --config nightwatch_debugger.js --env safari,chrome,default", |
||||
"onchange": "onchange build/app.js -- npm-run-all lint", |
||||
"prepublish": "mkdirp build; npm-run-all -ls downloadsolc_root build", |
||||
"remixd": "./node_modules/remixd/bin/remixd -s ./contracts --remix-ide http://127.0.0.1:8080", |
||||
"selenium": "execr --silent selenium-standalone start", |
||||
"selenium-install": "selenium-standalone install", |
||||
"serve": "execr --silent http-server .", |
||||
"serve_debugger": "execr --silent http-server src/app/debugger/remix-debugger", |
||||
"sourcemap": "exorcist --root ../ build/app.js.map > build/app.js", |
||||
"start": "npm-run-all -lpr serve watch onchange remixd", |
||||
"test": "npm run csslint; standard && node test/index.js", |
||||
"test-browser": "npm-run-all -lpr selenium downloadsolc_root make-mock-compiler serve browsertest", |
||||
"watch": "watchify src/index.js -dv -p browserify-reload -o build/app.js --exclude solc" |
||||
} |
||||
} |
@ -0,0 +1,184 @@ |
||||
{ |
||||
"name": "remix-ide", |
||||
"version": "v0.7.5", |
||||
"description": "Minimalistic browser-based Solidity IDE", |
||||
"devDependencies": { |
||||
"ace-mode-solidity": "^0.1.0", |
||||
"async": "^2.1.2", |
||||
"babel-eslint": "^7.1.1", |
||||
"babel-plugin-transform-object-assign": "^6.22.0", |
||||
"babel-plugin-yo-yoify": "^0.3.3", |
||||
"babel-polyfill": "^6.22.0", |
||||
"babel-preset-env": "^1.6.1", |
||||
"babel-preset-es2015": "^6.24.0", |
||||
"babel-preset-es2017": "^6.24.1", |
||||
"babel-preset-stage-0": "^6.24.1", |
||||
"babelify": "^7.3.0", |
||||
"brace": "^0.8.0", |
||||
"browserify-reload": "^1.0.3", |
||||
"component-type": "^1.2.1", |
||||
"copy-text-to-clipboard": "^1.0.4", |
||||
"csjs-inject": "^1.0.1", |
||||
"csslint": "^1.0.2", |
||||
"deep-equal": "^1.0.1", |
||||
"ethereumjs-util": "^5.1.2", |
||||
"execr": "^1.0.1", |
||||
"exorcist": "^0.4.0", |
||||
"fast-async": "6.3.1", |
||||
"fast-levenshtein": "^2.0.6", |
||||
"gists": "^1.0.1", |
||||
"javascript-serialize": "^1.6.1", |
||||
"jquery": "^3.3.1", |
||||
"js-base64": "^2.1.9", |
||||
"js-beautify": "1.6.14", |
||||
"minixhr": "^3.2.2", |
||||
"mkdirp": "^0.5.1", |
||||
"nightwatch": "^0.9.20", |
||||
"notify-error": "^1.2.0", |
||||
"npm-link-local": "^1.1.0", |
||||
"npm-run-all": "^4.0.2", |
||||
"onchange": "^3.2.1", |
||||
"remix-debug": "0.3.1", |
||||
"remix-analyzer": "0.3.1", |
||||
"remix-lib": "0.4.1", |
||||
"remix-solidity": "0.3.1", |
||||
"remix-tests": "0.1.1", |
||||
"remixd": "0.1.8-alpha.6", |
||||
"request": "^2.83.0", |
||||
"rimraf": "^2.6.1", |
||||
"selenium-standalone": "^6.0.1", |
||||
"solc": "^0.5.0", |
||||
"standard": "^8.5.0", |
||||
"swarmgw": "^0.3.1", |
||||
"tape": "^4.5.1", |
||||
"uglify-js": "^2.8.16", |
||||
"vm-browserify": "0.0.4", |
||||
"watchify": "^3.9.0", |
||||
"web3": "1.0.0-beta.27", |
||||
"webworkify": "^1.2.1", |
||||
"yo-yo": "^1.2.2", |
||||
"yo-yoify": "^3.7.3" |
||||
}, |
||||
"dependencies": { |
||||
"http-server": "0.9.0", |
||||
"remixd": "0.1.8-alpha.6" |
||||
}, |
||||
"repository": { |
||||
"type": "git", |
||||
"url": "git+https://github.com/ethereum/remix-ide.git" |
||||
}, |
||||
"keywords": [ |
||||
"ethereum", |
||||
"solidity", |
||||
"compiler" |
||||
], |
||||
"author": "chriseth", |
||||
"license": "MIT", |
||||
"bugs": { |
||||
"url": "https://github.com/ethereum/remix-ide/issues" |
||||
}, |
||||
"homepage": "https://github.com/ethereum/remix-ide#readme", |
||||
"standard": { |
||||
"ignore": [ |
||||
"build/", |
||||
"src/app/editor/mode-solidity.js", |
||||
"soljson.js" |
||||
], |
||||
"parser": "babel-eslint" |
||||
}, |
||||
"babel": { |
||||
"plugins": [ |
||||
"transform-es2015-template-literals", |
||||
"transform-es2015-literals", |
||||
"transform-es2015-function-name", |
||||
"transform-es2015-arrow-functions", |
||||
"transform-es2015-block-scoped-functions", |
||||
"transform-es2015-classes", |
||||
"transform-es2015-object-super", |
||||
"transform-es2015-shorthand-properties", |
||||
"transform-es2015-duplicate-keys", |
||||
"transform-es2015-computed-properties", |
||||
"transform-es2015-for-of", |
||||
"transform-es2015-sticky-regex", |
||||
"transform-es2015-unicode-regex", |
||||
"check-es2015-constants", |
||||
"transform-es2015-spread", |
||||
"transform-es2015-parameters", |
||||
"transform-es2015-destructuring", |
||||
"transform-es2015-block-scoping" |
||||
] |
||||
}, |
||||
"browserify": { |
||||
"transform": [ |
||||
[ |
||||
"babelify", |
||||
{ |
||||
"sourceMapsAbsolute": false, |
||||
"sourceMaps": true, |
||||
"plugins": [ |
||||
[ |
||||
"fast-async", |
||||
{ |
||||
"runtimePattern": null, |
||||
"compiler": { |
||||
"es7": true, |
||||
"noRuntime": true, |
||||
"promises": true, |
||||
"wrapAwait": true |
||||
} |
||||
} |
||||
], |
||||
[ |
||||
"yo-yoify" |
||||
], |
||||
[ |
||||
"transform-object-assign" |
||||
] |
||||
], |
||||
"presets": [ |
||||
"es2015" |
||||
] |
||||
} |
||||
] |
||||
] |
||||
}, |
||||
"bin": { |
||||
"remix-ide": "./bin/remix-ide" |
||||
}, |
||||
"scripts": { |
||||
"setupremix": "npm run linkremixlib && npm run linkremixsolidity && npm run linkremixsimulator && npm run linkremixtests", |
||||
"pullremix": "git clone https://github.com/ethereum/remix", |
||||
"linkremixlib": "cd node_modules && rm -rf remix-lib && ln -s ../../remix/remix-lib remix-lib && cd ..", |
||||
"linkremixsolidity": "cd node_modules && rm -rf remix-solidity && ln -s ../../remix/remix-solidity remix-solidity && cd ..", |
||||
"linkremixsimulator": "cd node_modules && rm -rf remix-simulator && ln -s ../../remix/remix-simulator remix-simulator && cd ..", |
||||
"linkremixtests": "cd node_modules && rm -rf remix-tests && ln -s ../../remix/remix-tests remix-tests && cd ..", |
||||
"build": "browserify src/index.js -o build/app.js --exclude solc", |
||||
"build_debugger": "browserify src/app/debugger/remix-debugger/index.js -o src/app/debugger/remix-debugger/build/app.js", |
||||
"browsertest": "sleep 5 && npm run nightwatch_local", |
||||
"csslint": "csslint --ignore=order-alphabetical --errors='errors,duplicate-properties,empty-rules' --exclude-list='assets/css/font-awesome.min.css' assets/css/", |
||||
"downloadsolc_root": "wget --no-check-certificate https://solc-bin.ethereum.org/bin/soljson-v0.5.1+commit.c8a2cb62.js -O soljson.js", |
||||
"lint": "standard | notify-error", |
||||
"make-mock-compiler": "node ci/makeMockCompiler.js", |
||||
"minify": "uglifyjs --in-source-map inline --source-map-inline -c warnings=false", |
||||
"nightwatch_local": "nightwatch --config nightwatch.js --env local", |
||||
"nightwatch_local_debugger": "nightwatch --config nightwatch_debugger.js --env local", |
||||
"nightwatch_remote_chrome": "nightwatch --config nightwatch.js --env chrome", |
||||
"nightwatch_remote_firefox": "nightwatch --config nightwatch.js --env default", |
||||
"nightwatch_remote_ie": "nightwatch --config nightwatch.js --env ie", |
||||
"nightwatch_remote_parallel": "nightwatch --config nightwatch.js --env safari,chrome,default", |
||||
"nightwatch_remote_safari": "nightwatch --config nightwatch.js --env safari", |
||||
"nightwatch_remote_debugger_parallel": "nightwatch --config nightwatch_debugger.js --env safari,chrome,default", |
||||
"onchange": "onchange build/app.js -- npm-run-all lint", |
||||
"prepublish": "mkdirp build; npm-run-all -ls downloadsolc_root build", |
||||
"remixd": "./node_modules/remixd/bin/remixd -s ./contracts --remix-ide http://127.0.0.1:8080", |
||||
"selenium": "execr --silent selenium-standalone start", |
||||
"selenium-install": "selenium-standalone install", |
||||
"serve": " http-server .", |
||||
"serve_debugger": "execr --silent http-server src/app/debugger/remix-debugger", |
||||
"sourcemap": "exorcist --root ../ build/app.js.map > build/app.js", |
||||
"start": "npm-run-all -lpr serve watch onchange remixd", |
||||
"test": "npm run csslint; standard && node test/index.js", |
||||
"test-browser": "npm-run-all -lpr selenium downloadsolc_root make-mock-compiler serve browsertest", |
||||
"watch": "watchify src/index.js -dv -p browserify-reload -o build/app.js --exclude solc" |
||||
} |
||||
} |
@ -0,0 +1,184 @@ |
||||
{ |
||||
"name": "remix-ide", |
||||
"version": "v0.7.5", |
||||
"description": "Minimalistic browser-based Solidity IDE", |
||||
"devDependencies": { |
||||
"ace-mode-solidity": "^0.1.0", |
||||
"async": "^2.1.2", |
||||
"babel-eslint": "^7.1.1", |
||||
"babel-plugin-transform-object-assign": "^6.22.0", |
||||
"babel-plugin-yo-yoify": "^0.3.3", |
||||
"babel-polyfill": "^6.22.0", |
||||
"babel-preset-env": "^1.6.1", |
||||
"babel-preset-es2015": "^6.24.0", |
||||
"babel-preset-es2017": "^6.24.1", |
||||
"babel-preset-stage-0": "^6.24.1", |
||||
"babelify": "^7.3.0", |
||||
"brace": "^0.8.0", |
||||
"browserify-reload": "^1.0.3", |
||||
"component-type": "^1.2.1", |
||||
"copy-text-to-clipboard": "^1.0.4", |
||||
"csjs-inject": "^1.0.1", |
||||
"csslint": "^1.0.2", |
||||
"deep-equal": "^1.0.1", |
||||
"ethereumjs-util": "^5.1.2", |
||||
"execr": "^1.0.1", |
||||
"exorcist": "^0.4.0", |
||||
"fast-async": "6.3.1", |
||||
"fast-levenshtein": "^2.0.6", |
||||
"gists": "^1.0.1", |
||||
"javascript-serialize": "^1.6.1", |
||||
"jquery": "^3.3.1", |
||||
"js-base64": "^2.1.9", |
||||
"js-beautify": "1.6.14", |
||||
"minixhr": "^3.2.2", |
||||
"mkdirp": "^0.5.1", |
||||
"nightwatch": "^0.9.20", |
||||
"notify-error": "^1.2.0", |
||||
"npm-link-local": "^1.1.0", |
||||
"npm-run-all": "^4.0.2", |
||||
"onchange": "^3.2.1", |
||||
"remix-debug": "0.3.1", |
||||
"remix-analyzer": "0.3.1", |
||||
"remix-lib": "0.4.1", |
||||
"remix-solidity": "0.3.1", |
||||
"remix-tests": "0.1.1", |
||||
"remixd": "0.1.8-alpha.6", |
||||
"request": "^2.83.0", |
||||
"rimraf": "^2.6.1", |
||||
"selenium-standalone": "^6.0.1", |
||||
"solc": "^0.5.0", |
||||
"standard": "^8.5.0", |
||||
"swarmgw": "^0.3.1", |
||||
"tape": "^4.5.1", |
||||
"uglify-js": "^2.8.16", |
||||
"vm-browserify": "0.0.4", |
||||
"watchify": "^3.9.0", |
||||
"web3": "1.0.0-beta.27", |
||||
"webworkify": "^1.2.1", |
||||
"yo-yo": "^1.2.2", |
||||
"yo-yoify": "^3.7.3" |
||||
}, |
||||
"dependencies": { |
||||
"http-server": "0.9.0", |
||||
"remixd": "0.1.8-alpha.6" |
||||
}, |
||||
"repository": { |
||||
"type": "git", |
||||
"url": "git+https://github.com/ethereum/remix-ide.git" |
||||
}, |
||||
"keywords": [ |
||||
"ethereum", |
||||
"solidity", |
||||
"compiler" |
||||
], |
||||
"author": "chriseth", |
||||
"license": "MIT", |
||||
"bugs": { |
||||
"url": "https://github.com/ethereum/remix-ide/issues" |
||||
}, |
||||
"homepage": "https://github.com/ethereum/remix-ide#readme", |
||||
"standard": { |
||||
"ignore": [ |
||||
"build/", |
||||
"src/app/editor/mode-solidity.js", |
||||
"soljson.js" |
||||
], |
||||
"parser": "babel-eslint" |
||||
}, |
||||
"babel": { |
||||
"plugins": [ |
||||
"transform-es2015-template-literals", |
||||
"transform-es2015-literals", |
||||
"transform-es2015-function-name", |
||||
"transform-es2015-arrow-functions", |
||||
"transform-es2015-block-scoped-functions", |
||||
"transform-es2015-classes", |
||||
"transform-es2015-object-super", |
||||
"transform-es2015-shorthand-properties", |
||||
"transform-es2015-duplicate-keys", |
||||
"transform-es2015-computed-properties", |
||||
"transform-es2015-for-of", |
||||
"transform-es2015-sticky-regex", |
||||
"transform-es2015-unicode-regex", |
||||
"check-es2015-constants", |
||||
"transform-es2015-spread", |
||||
"transform-es2015-parameters", |
||||
"transform-es2015-destructuring", |
||||
"transform-es2015-block-scoping" |
||||
] |
||||
}, |
||||
"browserify": { |
||||
"transform": [ |
||||
[ |
||||
"babelify", |
||||
{ |
||||
"sourceMapsAbsolute": false, |
||||
"sourceMaps": true, |
||||
"plugins": [ |
||||
[ |
||||
"fast-async", |
||||
{ |
||||
"runtimePattern": null, |
||||
"compiler": { |
||||
"es7": true, |
||||
"noRuntime": true, |
||||
"promises": true, |
||||
"wrapAwait": true |
||||
} |
||||
} |
||||
], |
||||
[ |
||||
"yo-yoify" |
||||
], |
||||
[ |
||||
"transform-object-assign" |
||||
] |
||||
], |
||||
"presets": [ |
||||
"es2015" |
||||
] |
||||
} |
||||
] |
||||
] |
||||
}, |
||||
"bin": { |
||||
"remix-ide": "./bin/remix-ide" |
||||
}, |
||||
"scripts": { |
||||
"setupremix": "npm run linkremixlib && npm run linkremixsolidity && npm run linkremixsimulator && npm run linkremixtests", |
||||
"pullremix": "git clone https://github.com/ethereum/remix", |
||||
"linkremixlib": "cd node_modules && rm -rf remix-lib && ln -s ../../remix/remix-lib remix-lib && cd ..", |
||||
"linkremixsolidity": "cd node_modules && rm -rf remix-solidity && ln -s ../../remix/remix-solidity remix-solidity && cd ..", |
||||
"linkremixsimulator": "cd node_modules && rm -rf remix-simulator && ln -s ../../remix/remix-simulator remix-simulator && cd ..", |
||||
"linkremixtests": "cd node_modules && rm -rf remix-tests && ln -s ../../remix/remix-tests remix-tests && cd ..", |
||||
"build": "browserify src/index.js -o build/app.js --exclude solc", |
||||
"build_debugger": "browserify src/app/debugger/remix-debugger/index.js -o src/app/debugger/remix-debugger/build/app.js", |
||||
"browsertest": "sleep 5 && npm run nightwatch_local", |
||||
"csslint": "csslint --ignore=order-alphabetical --errors='errors,duplicate-properties,empty-rules' --exclude-list='assets/css/font-awesome.min.css' assets/css/", |
||||
"downloadsolc_root": "wget --no-check-certificate https://solc-bin.ethereum.org/bin/soljson-v0.5.1+commit.c8a2cb62.js -O soljson.js", |
||||
"lint": "standard | notify-error", |
||||
"make-mock-compiler": "node ci/makeMockCompiler.js", |
||||
"minify": "uglifyjs --in-source-map inline --source-map-inline -c warnings=false", |
||||
"nightwatch_local": "nightwatch --config nightwatch.js --env local", |
||||
"nightwatch_local_debugger": "nightwatch --config nightwatch_debugger.js --env local", |
||||
"nightwatch_remote_chrome": "nightwatch --config nightwatch.js --env chrome", |
||||
"nightwatch_remote_firefox": "nightwatch --config nightwatch.js --env default", |
||||
"nightwatch_remote_ie": "nightwatch --config nightwatch.js --env ie", |
||||
"nightwatch_remote_parallel": "nightwatch --config nightwatch.js --env safari,chrome,default", |
||||
"nightwatch_remote_safari": "nightwatch --config nightwatch.js --env safari", |
||||
"nightwatch_remote_debugger_parallel": "nightwatch --config nightwatch_debugger.js --env safari,chrome,default", |
||||
"onchange": "onchange build/app.js -- npm-run-all lint", |
||||
"prepublish": "mkdirp build; npm-run-all -ls downloadsolc_root build", |
||||
"remixd": "./node_modules/remixd/bin/remixd -s ./contracts --remix-ide http://127.0.0.1:8080", |
||||
"selenium": "execr --silent selenium-standalone start", |
||||
"selenium-install": "selenium-standalone install", |
||||
"serve": "http-server .", |
||||
"serve_debugger": "execr --silent http-server src/app/debugger/remix-debugger", |
||||
"sourcemap": "exorcist --root ../ build/app.js.map > build/app.js", |
||||
"start": "npm-run-all -lpr serve watch onchange remixd", |
||||
"test": "npm run csslint; standard && node test/index.js", |
||||
"test-browser": "npm-run-all -lpr selenium downloadsolc_root make-mock-compiler serve browsertest", |
||||
"watch": "watchify src/index.js -dv -p browserify-reload -o build/app.js --exclude solc" |
||||
} |
||||
} |
@ -0,0 +1,75 @@ |
||||
var yo = require('yo-yo') |
||||
// -------------- copyToClipboard ----------------------
|
||||
var csjs = require('csjs-inject') |
||||
var styleGuide = require('./styles-guide/theme-chooser') |
||||
var styles = styleGuide.chooser() |
||||
|
||||
var css = csjs` |
||||
.container |
||||
{ |
||||
display: none; |
||||
position: fixed; |
||||
border: 1px solid ${styles.appProperties.solidBorderBox_BorderColor}; |
||||
width:150px;
|
||||
background: ${styles.appProperties.solidBorderBox_BackgroundColor}; |
||||
border-radius: 2px; |
||||
z-index: 1000; |
||||
background-color: var(--light) |
||||
} |
||||
|
||||
.liitem |
||||
{ |
||||
padding: 3px; |
||||
padding-left: 10px; |
||||
cursor: pointer; |
||||
} |
||||
|
||||
#menuitems |
||||
{ |
||||
list-style: none; |
||||
margin: 0px; |
||||
margin-top: 4px; |
||||
padding-left: 5px; |
||||
padding-right: 5px; |
||||
padding-bottom: 3px; |
||||
color: ${styles.appProperties.solidBorderBox_TextColor}; |
||||
} |
||||
|
||||
#menuitems :hover |
||||
{ |
||||
<<<<<<< HEAD |
||||
background: ${styles.appProperties.highlight_BackgroundColor}; |
||||
======= |
||||
background-color: var(--secondary); |
||||
>>>>>>> 712ea4fa... fixed context menu style |
||||
border-radius: 2px; |
||||
} |
||||
` |
||||
|
||||
module.exports = (event, items) => { |
||||
event.preventDefault() |
||||
|
||||
function hide (event, force) { |
||||
if (container && container.parentElement && (force || (event.target !== container))) { |
||||
container.parentElement.removeChild(container) |
||||
} |
||||
window.removeEventListener('click', hide) |
||||
} |
||||
|
||||
var menu = Object.keys(items).map((item, index) => { |
||||
var current = yo`<li id="menuitem${item.toLowerCase()}" class=${css.liitem}>${item}</li>` |
||||
current.onclick = () => { hide(null, true); items[item]() } |
||||
return current |
||||
}) |
||||
var container = yo`<div class=${css.container}><ul id='menuitems'>${menu}</ul></div>` |
||||
container.style.left = event.pageX + 'px' |
||||
container.style.top = event.pageY + 'px' |
||||
container.style.display = 'block' |
||||
|
||||
document.querySelector('body').appendChild(container) |
||||
setTimeout(() => { |
||||
window.addEventListener('click', hide) |
||||
}, 500) |
||||
|
||||
return { hide } |
||||
} |
@ -0,0 +1,71 @@ |
||||
var yo = require('yo-yo') |
||||
// -------------- copyToClipboard ----------------------
|
||||
var csjs = require('csjs-inject') |
||||
var styleGuide = require('./styles-guide/theme-chooser') |
||||
var styles = styleGuide.chooser() |
||||
|
||||
var css = csjs` |
||||
.container |
||||
{ |
||||
display: none; |
||||
position: fixed; |
||||
border: 1px solid ${styles.appProperties.solidBorderBox_BorderColor}; |
||||
width:150px;
|
||||
background: ${styles.appProperties.solidBorderBox_BackgroundColor}; |
||||
border-radius: 2px; |
||||
z-index: 1000; |
||||
background-color: var(--light) |
||||
} |
||||
|
||||
.liitem |
||||
{ |
||||
padding: 3px; |
||||
padding-left: 10px; |
||||
cursor: pointer; |
||||
} |
||||
|
||||
#menuitems |
||||
{ |
||||
list-style: none; |
||||
margin: 0px; |
||||
margin-top: 4px; |
||||
padding-left: 5px; |
||||
padding-right: 5px; |
||||
padding-bottom: 3px; |
||||
color: ${styles.appProperties.solidBorderBox_TextColor}; |
||||
} |
||||
|
||||
#menuitems :hover |
||||
{ |
||||
background: ${styles.appProperties.highlight_BackgroundColor}; |
||||
border-radius: 2px; |
||||
} |
||||
` |
||||
|
||||
module.exports = (event, items) => { |
||||
event.preventDefault() |
||||
|
||||
function hide (event, force) { |
||||
if (container && container.parentElement && (force || (event.target !== container))) { |
||||
container.parentElement.removeChild(container) |
||||
} |
||||
window.removeEventListener('click', hide) |
||||
} |
||||
|
||||
var menu = Object.keys(items).map((item, index) => { |
||||
var current = yo`<li id="menuitem${item.toLowerCase()}" class=${css.liitem}>${item}</li>` |
||||
current.onclick = () => { hide(null, true); items[item]() } |
||||
return current |
||||
}) |
||||
var container = yo`<div class=${css.container}><ul id='menuitems'>${menu}</ul></div>` |
||||
container.style.left = event.pageX + 'px' |
||||
container.style.top = event.pageY + 'px' |
||||
container.style.display = 'block' |
||||
|
||||
document.querySelector('body').appendChild(container) |
||||
setTimeout(() => { |
||||
window.addEventListener('click', hide) |
||||
}, 500) |
||||
|
||||
return { hide } |
||||
} |
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -0,0 +1,142 @@ |
||||
var yo = require('yo-yo') |
||||
var css = require('./styles/modaldialog-styles') |
||||
|
||||
<<<<<<< HEAD |
||||
module.exports = (title, content, ok, cancel, focusSelector) => { |
||||
======= |
||||
module.exports = (title, content, ok, cancel, focusSelector, opts) => { |
||||
let agreed = true |
||||
opts = opts || {} |
||||
>>>>>>> 863b9543... added key-navigation to modaldialog |
||||
var container = document.querySelector(`.${css.modal}`) |
||||
if (!container) { |
||||
document.querySelector('body').appendChild(html()) |
||||
container = document.querySelector(`.${css.modal}`) |
||||
} |
||||
|
||||
var closeDiv = document.getElementById('modal-close') |
||||
|
||||
var okDiv = document.getElementById('modal-footer-ok') |
||||
okDiv.innerHTML = (ok && ok.label !== undefined) ? ok.label : 'OK' |
||||
|
||||
var cancelDiv = document.getElementById('modal-footer-cancel') |
||||
cancelDiv.innerHTML = (cancel && cancel.label !== undefined) ? cancel.label : 'Cancel' |
||||
|
||||
var modal = document.querySelector(`.${css.modalBody}`) |
||||
var modalTitle = document.querySelector(`.${css.modalHeader} h2`) |
||||
|
||||
modalTitle.innerHTML = '' |
||||
if (title) modalTitle.innerHTML = title |
||||
|
||||
modal.innerHTML = '' |
||||
if (content) modal.appendChild(content) |
||||
|
||||
show() |
||||
|
||||
function setFocusOn (btn) { |
||||
var okDiv = document.getElementById('modal-footer-ok') |
||||
var cancelDiv = document.getElementById('modal-footer-cancel') |
||||
if (btn === 'ok') { |
||||
agreed = true |
||||
okDiv.style.backgroundColor = 'var(--dark)' |
||||
okDiv.style.color = 'var(--light)' |
||||
cancelDiv.style.backgroundColor = 'var(--light)' |
||||
cancelDiv.style.color = 'var(--dark)' |
||||
} else { |
||||
agreed = false |
||||
okDiv.style.backgroundColor = 'var(--light)' |
||||
okDiv.style.color = 'var(--dark)' |
||||
cancelDiv.style.backgroundColor = 'var(--dark)' |
||||
cancelDiv.style.color = 'var(--light)' |
||||
} |
||||
} |
||||
|
||||
function okListener () { |
||||
removeEventListener() |
||||
hide() |
||||
if (ok && ok.fn && agreed) ok.fn() |
||||
} |
||||
|
||||
function cancelListener () { |
||||
removeEventListener() |
||||
hide() |
||||
if (cancel && cancel.fn) cancel.fn() |
||||
} |
||||
|
||||
function modalKeyEvent (e) { |
||||
if (e.keyCode === 27) { |
||||
cancelListener() |
||||
} else if (e.keyCode === 13) { |
||||
e.preventDefault() |
||||
okListener() |
||||
} else if (e.keyCode === 37) { |
||||
e.preventDefault() |
||||
setFocusOn('ok') |
||||
} else if (e.keyCode === 39) { |
||||
e.preventDefault() |
||||
setFocusOn('cancel') |
||||
} |
||||
} |
||||
|
||||
function hide () { |
||||
container.style.display = 'none' |
||||
} |
||||
|
||||
function show () { |
||||
container.style.display = 'block' |
||||
if (focusSelector) { |
||||
const focusTarget = document.querySelector(`.${css.modal} ${focusSelector}`) |
||||
if (focusTarget) { |
||||
focusTarget.focus() |
||||
if (typeof focusTarget.setSelectionRange === 'function') { |
||||
focusTarget.setSelectionRange(0, focusTarget.value.length) |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
function removeEventListener () { |
||||
okDiv.removeEventListener('click', okListener) |
||||
cancelDiv.removeEventListener('click', cancelListener) |
||||
closeDiv.removeEventListener('click', cancelListener) |
||||
document.removeEventListener('keydown', modalKeyEvent) |
||||
document.getElementById('modal-background').removeEventListener('click', cancelListener) |
||||
} |
||||
okDiv.addEventListener('click', okListener) |
||||
cancelDiv.addEventListener('click', cancelListener) |
||||
closeDiv.addEventListener('click', cancelListener) |
||||
document.addEventListener('keydown', modalKeyEvent) |
||||
document.getElementById('modal-background').addEventListener('click', cancelListener) |
||||
} |
||||
|
||||
function html () { |
||||
return yo`<div id="modal-dialog" class="${css.modal}">
|
||||
<div id="modal-background" class="${css['modalBackground']}"> </div> |
||||
<<<<<<< HEAD |
||||
<div class="${css['modalContent']}"> |
||||
<div class="${css['modalHeader']}"> |
||||
<h2></h2> |
||||
<i id="modal-close" title="Close" class="fa fa-times ${css['modalClose']}" aria-hidden="true"></i> |
||||
</div> |
||||
<div class="${css['modalBody']}"> - |
||||
</div> |
||||
<div class="${css['modalFooter']}"> |
||||
<span id="modal-footer-ok" class=${css['modalFooterOk']}>OK</span><span id="modal-footer-cancel" class=${css['modalFooterCancel']}>Cancel</span> |
||||
</div> |
||||
</div> |
||||
======= |
||||
<div class="${css['modalContent']} bg-light text-secondary ${opts.class}"> |
||||
<div class="${css['modalHeader']}"> |
||||
<h3></h3> |
||||
<i id="modal-close" title="Close" class="fa fa-times ${css['modalClose']}" aria-hidden="true"></i> |
||||
</div> |
||||
<div class="${css['modalBody']}"> - |
||||
</div> |
||||
<div class="${css['modalFooter']}"> |
||||
<span id="modal-footer-ok" class="${css['modalFooterOk']} btn btn-sm btn-dark autofocus tabindex='1'">OK</span> |
||||
<span id="modal-footer-cancel" class="${css['modalFooterCancel']} btn btn-sm btn-light tabindex='0'">Cancel</span> |
||||
</div> |
||||
</div> |
||||
>>>>>>> 863b9543... added key-navigation to modaldialog |
||||
</div>` |
||||
} |
@ -0,0 +1,128 @@ |
||||
var yo = require('yo-yo') |
||||
var css = require('./styles/modaldialog-styles') |
||||
|
||||
<<<<<<< HEAD |
||||
module.exports = (title, content, ok, cancel, focusSelector) => { |
||||
======= |
||||
module.exports = (title, content, ok, cancel, focusSelector, opts) => { |
||||
let agreed = true |
||||
opts = opts || {} |
||||
>>>>>>> 863b9543... added key-navigation to modaldialog |
||||
var container = document.querySelector(`.${css.modal}`) |
||||
if (!container) { |
||||
document.querySelector('body').appendChild(html()) |
||||
container = document.querySelector(`.${css.modal}`) |
||||
} |
||||
|
||||
var closeDiv = document.getElementById('modal-close') |
||||
|
||||
var okDiv = document.getElementById('modal-footer-ok') |
||||
okDiv.innerHTML = (ok && ok.label !== undefined) ? ok.label : 'OK' |
||||
|
||||
var cancelDiv = document.getElementById('modal-footer-cancel') |
||||
cancelDiv.innerHTML = (cancel && cancel.label !== undefined) ? cancel.label : 'Cancel' |
||||
|
||||
var modal = document.querySelector(`.${css.modalBody}`) |
||||
var modalTitle = document.querySelector(`.${css.modalHeader} h2`) |
||||
|
||||
modalTitle.innerHTML = '' |
||||
if (title) modalTitle.innerHTML = title |
||||
|
||||
modal.innerHTML = '' |
||||
if (content) modal.appendChild(content) |
||||
|
||||
show() |
||||
|
||||
function setFocusOn (btn) { |
||||
var okDiv = document.getElementById('modal-footer-ok') |
||||
var cancelDiv = document.getElementById('modal-footer-cancel') |
||||
if (btn === 'ok') { |
||||
agreed = true |
||||
okDiv.style.backgroundColor = 'var(--dark)' |
||||
okDiv.style.color = 'var(--light)' |
||||
cancelDiv.style.backgroundColor = 'var(--light)' |
||||
cancelDiv.style.color = 'var(--dark)' |
||||
} else { |
||||
agreed = false |
||||
okDiv.style.backgroundColor = 'var(--light)' |
||||
okDiv.style.color = 'var(--dark)' |
||||
cancelDiv.style.backgroundColor = 'var(--dark)' |
||||
cancelDiv.style.color = 'var(--light)' |
||||
} |
||||
} |
||||
|
||||
function okListener () { |
||||
removeEventListener() |
||||
hide() |
||||
if (ok && ok.fn && agreed) ok.fn() |
||||
} |
||||
|
||||
function cancelListener () { |
||||
removeEventListener() |
||||
hide() |
||||
if (cancel && cancel.fn) cancel.fn() |
||||
} |
||||
|
||||
function modalKeyEvent (e) { |
||||
if (e.keyCode === 27) { |
||||
cancelListener() |
||||
} else if (e.keyCode === 13) { |
||||
e.preventDefault() |
||||
okListener() |
||||
} else if (e.keyCode === 37) { |
||||
e.preventDefault() |
||||
setFocusOn('ok') |
||||
} else if (e.keyCode === 39) { |
||||
e.preventDefault() |
||||
setFocusOn('cancel') |
||||
} |
||||
} |
||||
|
||||
function hide () { |
||||
container.style.display = 'none' |
||||
} |
||||
|
||||
function show () { |
||||
container.style.display = 'block' |
||||
if (focusSelector) { |
||||
const focusTarget = document.querySelector(`.${css.modal} ${focusSelector}`) |
||||
if (focusTarget) { |
||||
focusTarget.focus() |
||||
if (typeof focusTarget.setSelectionRange === 'function') { |
||||
focusTarget.setSelectionRange(0, focusTarget.value.length) |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
function removeEventListener () { |
||||
okDiv.removeEventListener('click', okListener) |
||||
cancelDiv.removeEventListener('click', cancelListener) |
||||
closeDiv.removeEventListener('click', cancelListener) |
||||
document.removeEventListener('keydown', modalKeyEvent) |
||||
document.getElementById('modal-background').removeEventListener('click', cancelListener) |
||||
} |
||||
okDiv.addEventListener('click', okListener) |
||||
cancelDiv.addEventListener('click', cancelListener) |
||||
closeDiv.addEventListener('click', cancelListener) |
||||
document.addEventListener('keydown', modalKeyEvent) |
||||
document.getElementById('modal-background').addEventListener('click', cancelListener) |
||||
} |
||||
|
||||
function html () { |
||||
return yo`<div id="modal-dialog" class="${css.modal}">
|
||||
<div id="modal-background" class="${css['modalBackground']}"> </div> |
||||
<div class="${css['modalContent']} bg-light text-secondary ${opts.class}"> |
||||
<div class="${css['modalHeader']}"> |
||||
<h3></h3> |
||||
<i id="modal-close" title="Close" class="fa fa-times ${css['modalClose']}" aria-hidden="true"></i> |
||||
</div> |
||||
<div class="${css['modalBody']}"> - |
||||
</div> |
||||
<div class="${css['modalFooter']}"> |
||||
<span id="modal-footer-ok" class="${css['modalFooterOk']} btn btn-sm btn-dark autofocus tabindex='1'">OK</span> |
||||
<span id="modal-footer-cancel" class="${css['modalFooterCancel']} btn btn-sm btn-light tabindex='0'">Cancel</span> |
||||
</div> |
||||
</div> |
||||
</div>` |
||||
} |
@ -0,0 +1,123 @@ |
||||
var yo = require('yo-yo') |
||||
var css = require('./styles/modaldialog-styles') |
||||
|
||||
module.exports = (title, content, ok, cancel, focusSelector, opts) => { |
||||
let agreed = true |
||||
opts = opts || {} |
||||
var container = document.querySelector(`.${css.modal}`) |
||||
if (!container) { |
||||
document.querySelector('body').appendChild(html()) |
||||
container = document.querySelector(`.${css.modal}`) |
||||
} |
||||
|
||||
var closeDiv = document.getElementById('modal-close') |
||||
|
||||
var okDiv = document.getElementById('modal-footer-ok') |
||||
okDiv.innerHTML = (ok && ok.label !== undefined) ? ok.label : 'OK' |
||||
|
||||
var cancelDiv = document.getElementById('modal-footer-cancel') |
||||
cancelDiv.innerHTML = (cancel && cancel.label !== undefined) ? cancel.label : 'Cancel' |
||||
|
||||
var modal = document.querySelector(`.${css.modalBody}`) |
||||
var modalTitle = document.querySelector(`.${css.modalHeader} h2`) |
||||
|
||||
modalTitle.innerHTML = '' |
||||
if (title) modalTitle.innerHTML = title |
||||
|
||||
modal.innerHTML = '' |
||||
if (content) modal.appendChild(content) |
||||
|
||||
setFocusOn('ok') |
||||
|
||||
show() |
||||
|
||||
function setFocusOn (btn) { |
||||
var okDiv = document.getElementById('modal-footer-ok') |
||||
var cancelDiv = document.getElementById('modal-footer-cancel') |
||||
if (btn === 'ok') { |
||||
okDiv.className = okDiv.className.replace(/\bbtn-light\b/g, 'btn-dark') |
||||
cancelDiv.className = cancelDiv.className.replace(/\bbtn-dark\b/g, 'btn-light') |
||||
} else { |
||||
cancelDiv.className = cancelDiv.className.replace(/\bbtn-light\b/g, 'btn-dark') |
||||
okDiv.className = okDiv.className.replace(/\bbtn-dark\b/g, 'btn-light') |
||||
} |
||||
} |
||||
|
||||
function okListener () { |
||||
removeEventListener() |
||||
hide() |
||||
if (ok && ok.fn && agreed) ok.fn() |
||||
} |
||||
|
||||
function cancelListener () { |
||||
removeEventListener() |
||||
hide() |
||||
if (cancel && cancel.fn) cancel.fn() |
||||
} |
||||
|
||||
function modalKeyEvent (e) { |
||||
if (e.keyCode === 27) { |
||||
cancelListener() |
||||
} else if (e.keyCode === 13) { |
||||
e.preventDefault() |
||||
okListener() |
||||
} else if (e.keyCode === 37) { |
||||
e.preventDefault() |
||||
agreed = true |
||||
setFocusOn('ok') |
||||
} else if (e.keyCode === 39) { |
||||
e.preventDefault() |
||||
agreed = false |
||||
setFocusOn('cancel') |
||||
} |
||||
} |
||||
|
||||
function hide () { |
||||
container.style.display = 'none' |
||||
} |
||||
|
||||
function show () { |
||||
container.style.display = 'block' |
||||
if (focusSelector) { |
||||
const focusTarget = document.querySelector(`.${css.modal} ${focusSelector}`) |
||||
if (focusTarget) { |
||||
focusTarget.focus() |
||||
if (typeof focusTarget.setSelectionRange === 'function') { |
||||
focusTarget.setSelectionRange(0, focusTarget.value.length) |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
function removeEventListener () { |
||||
okDiv.removeEventListener('click', okListener) |
||||
cancelDiv.removeEventListener('click', cancelListener) |
||||
closeDiv.removeEventListener('click', cancelListener) |
||||
document.removeEventListener('keydown', modalKeyEvent) |
||||
document.getElementById('modal-background').removeEventListener('click', cancelListener) |
||||
} |
||||
okDiv.addEventListener('click', okListener) |
||||
cancelDiv.addEventListener('click', cancelListener) |
||||
closeDiv.addEventListener('click', cancelListener) |
||||
document.addEventListener('keydown', modalKeyEvent) |
||||
document.getElementById('modal-background').addEventListener('click', cancelListener) |
||||
} |
||||
|
||||
function html () { |
||||
return yo`<div id="modal-dialog" class="${css.modal}">
|
||||
<div id="modal-background" class="${css['modalBackground']}"> </div> |
||||
<div class="${css['modalContent']} bg-light text-secondary ${opts.class}"> |
||||
<div class="${css['modalHeader']}"> |
||||
<h3></h3> |
||||
<i id="modal-close" title="Close" class="fa fa-times ${css['modalClose']}" aria-hidden="true"></i> |
||||
</div> |
||||
<div class="${css['modalBody']}"> - |
||||
</div> |
||||
<div class="${css['modalFooter']}"> |
||||
<span id="modal-footer-ok" class="${css['modalFooterOk']} btn btn-sm btn-light">OK</span> |
||||
<span id="modal-footer-cancel" class="${css['modalFooterCancel']} btn btn-sm btn-light">Cancel</span> |
||||
</div> |
||||
</div> |
||||
</div>` |
||||
} |
||||
|
@ -0,0 +1,122 @@ |
||||
var yo = require('yo-yo') |
||||
var css = require('./styles/modaldialog-styles') |
||||
|
||||
module.exports = (title, content, ok, cancel, focusSelector) => { |
||||
let agreed = true |
||||
var container = document.querySelector(`.${css.modal}`) |
||||
if (!container) { |
||||
document.querySelector('body').appendChild(html()) |
||||
container = document.querySelector(`.${css.modal}`) |
||||
} |
||||
|
||||
var closeDiv = document.getElementById('modal-close') |
||||
|
||||
var okDiv = document.getElementById('modal-footer-ok') |
||||
okDiv.innerHTML = (ok && ok.label !== undefined) ? ok.label : 'OK' |
||||
|
||||
var cancelDiv = document.getElementById('modal-footer-cancel') |
||||
cancelDiv.innerHTML = (cancel && cancel.label !== undefined) ? cancel.label : 'Cancel' |
||||
|
||||
var modal = document.querySelector(`.${css.modalBody}`) |
||||
var modalTitle = document.querySelector(`.${css.modalHeader} h2`) |
||||
|
||||
modalTitle.innerHTML = '' |
||||
if (title) modalTitle.innerHTML = title |
||||
|
||||
modal.innerHTML = '' |
||||
if (content) modal.appendChild(content) |
||||
|
||||
setFocusOn('ok') |
||||
|
||||
show() |
||||
|
||||
function setFocusOn (btn) { |
||||
var okDiv = document.getElementById('modal-footer-ok') |
||||
var cancelDiv = document.getElementById('modal-footer-cancel') |
||||
if (btn === 'ok') { |
||||
okDiv.className = okDiv.className.replace(/\bbtn-light\b/g, 'btn-dark') |
||||
cancelDiv.className = cancelDiv.className.replace(/\bbtn-dark\b/g, 'btn-light') |
||||
} else { |
||||
cancelDiv.className = cancelDiv.className.replace(/\bbtn-light\b/g, 'btn-dark') |
||||
okDiv.className = okDiv.className.replace(/\bbtn-dark\b/g, 'btn-light') |
||||
} |
||||
} |
||||
|
||||
function okListener () { |
||||
removeEventListener() |
||||
hide() |
||||
if (ok && ok.fn && agreed) ok.fn() |
||||
} |
||||
|
||||
function cancelListener () { |
||||
removeEventListener() |
||||
hide() |
||||
if (cancel && cancel.fn) cancel.fn() |
||||
} |
||||
|
||||
function modalKeyEvent (e) { |
||||
if (e.keyCode === 27) { |
||||
cancelListener() |
||||
} else if (e.keyCode === 13) { |
||||
e.preventDefault() |
||||
okListener() |
||||
} else if (e.keyCode === 37) { |
||||
e.preventDefault() |
||||
agreed = true |
||||
setFocusOn('ok') |
||||
} else if (e.keyCode === 39) { |
||||
e.preventDefault() |
||||
agreed = false |
||||
setFocusOn('cancel') |
||||
} |
||||
} |
||||
|
||||
function hide () { |
||||
container.style.display = 'none' |
||||
} |
||||
|
||||
function show () { |
||||
container.style.display = 'block' |
||||
if (focusSelector) { |
||||
const focusTarget = document.querySelector(`.${css.modal} ${focusSelector}`) |
||||
if (focusTarget) { |
||||
focusTarget.focus() |
||||
if (typeof focusTarget.setSelectionRange === 'function') { |
||||
focusTarget.setSelectionRange(0, focusTarget.value.length) |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
function removeEventListener () { |
||||
okDiv.removeEventListener('click', okListener) |
||||
cancelDiv.removeEventListener('click', cancelListener) |
||||
closeDiv.removeEventListener('click', cancelListener) |
||||
document.removeEventListener('keydown', modalKeyEvent) |
||||
document.getElementById('modal-background').removeEventListener('click', cancelListener) |
||||
} |
||||
okDiv.addEventListener('click', okListener) |
||||
cancelDiv.addEventListener('click', cancelListener) |
||||
closeDiv.addEventListener('click', cancelListener) |
||||
document.addEventListener('keydown', modalKeyEvent) |
||||
document.getElementById('modal-background').addEventListener('click', cancelListener) |
||||
} |
||||
|
||||
function html () { |
||||
return yo`<div id="modal-dialog" class="${css.modal}">
|
||||
<div id="modal-background" class="${css['modalBackground']}"> </div> |
||||
<div class="${css['modalContent']} bg-light text-secondary"> |
||||
<div class="${css['modalHeader']}"> |
||||
<h3></h3> |
||||
<i id="modal-close" title="Close" class="fa fa-times ${css['modalClose']}" aria-hidden="true"></i> |
||||
</div> |
||||
<div class="${css['modalBody']}"> - |
||||
</div> |
||||
<div class="${css['modalFooter']}"> |
||||
<span id="modal-footer-ok" class="${css['modalFooterOk']} btn btn-sm btn-light">OK</span> |
||||
<span id="modal-footer-cancel" class="${css['modalFooterCancel']} btn btn-sm btn-light">Cancel</span> |
||||
</div> |
||||
</div> |
||||
</div>` |
||||
} |
||||
|
@ -0,0 +1,122 @@ |
||||
var yo = require('yo-yo') |
||||
var css = require('./styles/modaldialog-styles') |
||||
|
||||
module.exports = (title, content, ok, cancel, focusSelector) => { |
||||
let agreed = true |
||||
var container = document.querySelector(`.${css.modal}`) |
||||
if (!container) { |
||||
document.querySelector('body').appendChild(html()) |
||||
container = document.querySelector(`.${css.modal}`) |
||||
} |
||||
|
||||
var closeDiv = document.getElementById('modal-close') |
||||
|
||||
var okDiv = document.getElementById('modal-footer-ok') |
||||
okDiv.innerHTML = (ok && ok.label !== undefined) ? ok.label : 'OK' |
||||
|
||||
var cancelDiv = document.getElementById('modal-footer-cancel') |
||||
cancelDiv.innerHTML = (cancel && cancel.label !== undefined) ? cancel.label : 'Cancel' |
||||
|
||||
var modal = document.querySelector(`.${css.modalBody}`) |
||||
var modalTitle = document.querySelector(`.${css.modalHeader} h2`) |
||||
|
||||
modalTitle.innerHTML = '' |
||||
if (title) modalTitle.innerHTML = title |
||||
|
||||
modal.innerHTML = '' |
||||
if (content) modal.appendChild(content) |
||||
|
||||
setFocusOn('ok') |
||||
|
||||
show() |
||||
|
||||
function setFocusOn (btn) { |
||||
var okDiv = document.getElementById('modal-footer-ok') |
||||
var cancelDiv = document.getElementById('modal-footer-cancel') |
||||
if (btn === 'ok') { |
||||
okDiv.className = okDiv.className.replace(/\bbtn-light\b/g, 'btn-dark') |
||||
cancelDiv.className = cancelDiv.className.replace(/\bbtn-dark\b/g, 'btn-light') |
||||
} else { |
||||
cancelDiv.className = cancelDiv.className.replace(/\bbtn-light\b/g, 'btn-dark') |
||||
okDiv.className = okDiv.className.replace(/\bbtn-dark\b/g, 'btn-light') |
||||
} |
||||
} |
||||
|
||||
function okListener () { |
||||
removeEventListener() |
||||
hide() |
||||
if (ok && ok.fn && agreed) ok.fn() |
||||
} |
||||
|
||||
function cancelListener () { |
||||
removeEventListener() |
||||
hide() |
||||
if (cancel && cancel.fn) cancel.fn() |
||||
} |
||||
|
||||
function modalKeyEvent (e) { |
||||
if (e.keyCode === 27) { |
||||
cancelListener() |
||||
} else if (e.keyCode === 13) { |
||||
e.preventDefault() |
||||
okListener() |
||||
} else if (e.keyCode === 37) { |
||||
e.preventDefault() |
||||
agreed = true |
||||
setFocusOn('ok') |
||||
} else if (e.keyCode === 39) { |
||||
e.preventDefault() |
||||
agreed = false |
||||
setFocusOn('cancel') |
||||
} |
||||
} |
||||
|
||||
function hide () { |
||||
container.style.display = 'none' |
||||
} |
||||
|
||||
function show () { |
||||
container.style.display = 'block' |
||||
if (focusSelector) { |
||||
const focusTarget = document.querySelector(`.${css.modal} ${focusSelector}`) |
||||
if (focusTarget) { |
||||
focusTarget.focus() |
||||
if (typeof focusTarget.setSelectionRange === 'function') { |
||||
focusTarget.setSelectionRange(0, focusTarget.value.length) |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
function removeEventListener () { |
||||
okDiv.removeEventListener('click', okListener) |
||||
cancelDiv.removeEventListener('click', cancelListener) |
||||
closeDiv.removeEventListener('click', cancelListener) |
||||
document.removeEventListener('keydown', modalKeyEvent) |
||||
document.getElementById('modal-background').removeEventListener('click', cancelListener) |
||||
} |
||||
okDiv.addEventListener('click', okListener) |
||||
cancelDiv.addEventListener('click', cancelListener) |
||||
closeDiv.addEventListener('click', cancelListener) |
||||
document.addEventListener('keydown', modalKeyEvent) |
||||
document.getElementById('modal-background').addEventListener('click', cancelListener) |
||||
} |
||||
|
||||
function html () { |
||||
return yo`<div id="modal-dialog" class="${css.modal}">
|
||||
<div id="modal-background" class="${css['modalBackground']}"> </div> |
||||
<div class="${css['modalContent']} bg-light text-secondary"> |
||||
<div class="${css['modalHeader']}"> |
||||
<h2></h2> |
||||
<i id="modal-close" title="Close" class="fa fa-times ${css['modalClose']}" aria-hidden="true"></i> |
||||
</div> |
||||
<div class="${css['modalBody']}"> - |
||||
</div> |
||||
<div class="${css['modalFooter']}"> |
||||
<span id="modal-footer-ok" class="${css['modalFooterOk']} btn btn-sm btn-light">OK</span> |
||||
<span id="modal-footer-cancel" class="${css['modalFooterCancel']} btn btn-sm btn-light">Cancel</span> |
||||
</div> |
||||
</div> |
||||
</div>` |
||||
} |
||||
|
@ -0,0 +1,137 @@ |
||||
var yo = require('yo-yo') |
||||
var css = require('./styles/modaldialog-styles') |
||||
|
||||
module.exports = (title, content, ok, cancel, focusSelector, opts) => { |
||||
let agreed = true |
||||
opts = opts || {} |
||||
var container = document.querySelector(`.${css.modal}`) |
||||
if (!container) { |
||||
document.querySelector('body').appendChild(html(opts)) |
||||
container = document.querySelector(`.${css.modal}`) |
||||
} |
||||
|
||||
var closeDiv = document.getElementById('modal-close') |
||||
if (opts.hideClose) closeDiv.style.display = 'none' |
||||
|
||||
var okDiv = document.getElementById('modal-footer-ok') |
||||
okDiv.innerHTML = (ok && ok.label !== undefined) ? ok.label : 'OK' |
||||
okDiv.style.display = okDiv.innerHTML === '' ? 'none' : 'inline-block' |
||||
|
||||
var cancelDiv = document.getElementById('modal-footer-cancel') |
||||
cancelDiv.innerHTML = (cancel && cancel.label !== undefined) ? cancel.label : 'Cancel' |
||||
cancelDiv.style.display = cancelDiv.innerHTML === '' ? 'none' : 'inline-block' |
||||
|
||||
var modal = document.querySelector(`.${css.modalBody}`) |
||||
var modalTitle = document.querySelector(`.${css.modalHeader} h3`) |
||||
|
||||
modalTitle.innerHTML = '' |
||||
if (title) modalTitle.innerHTML = title |
||||
|
||||
modal.innerHTML = '' |
||||
if (content) modal.appendChild(content) |
||||
|
||||
setFocusOn('ok') |
||||
|
||||
show() |
||||
|
||||
function setFocusOn (btn) { |
||||
var okDiv = document.getElementById('modal-footer-ok') |
||||
var cancelDiv = document.getElementById('modal-footer-cancel') |
||||
if (btn === 'ok') { |
||||
okDiv.className = okDiv.className.replace(/\bbtn-light\b/g, 'btn-dark') |
||||
cancelDiv.className = cancelDiv.className.replace(/\bbtn-dark\b/g, 'btn-light') |
||||
} else { |
||||
cancelDiv.className = cancelDiv.className.replace(/\bbtn-light\b/g, 'btn-dark') |
||||
okDiv.className = okDiv.className.replace(/\bbtn-dark\b/g, 'btn-light') |
||||
} |
||||
} |
||||
|
||||
function okListener () { |
||||
removeEventListener() |
||||
hide() |
||||
if (ok && ok.fn && agreed) ok.fn() |
||||
} |
||||
|
||||
function cancelListener () { |
||||
removeEventListener() |
||||
hide() |
||||
if (cancel && cancel.fn) cancel.fn() |
||||
if (container) { |
||||
container.class = css.modal |
||||
container = null |
||||
} |
||||
} |
||||
|
||||
function modalKeyEvent (e) { |
||||
if (e.keyCode === 27) { |
||||
cancelListener() |
||||
} else if (e.keyCode === 13) { |
||||
e.preventDefault() |
||||
okListener() |
||||
} else if (e.keyCode === 37) { |
||||
e.preventDefault() |
||||
agreed = true |
||||
setFocusOn('ok') |
||||
} else if (e.keyCode === 39) { |
||||
e.preventDefault() |
||||
agreed = false |
||||
setFocusOn('cancel') |
||||
} |
||||
} |
||||
|
||||
function hide () { |
||||
if (container) container.style.display = 'none' |
||||
} |
||||
|
||||
function show () { |
||||
if (!container) return |
||||
container.style.display = 'block' |
||||
if (focusSelector) { |
||||
const focusTarget = document.querySelector(`.${css.modal} ${focusSelector}`) |
||||
if (focusTarget) { |
||||
focusTarget.focus() |
||||
if (typeof focusTarget.setSelectionRange === 'function') { |
||||
focusTarget.setSelectionRange(0, focusTarget.value.length) |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
function removeEventListener () { |
||||
okDiv.removeEventListener('click', okListener) |
||||
cancelDiv.removeEventListener('click', cancelListener) |
||||
closeDiv.removeEventListener('click', cancelListener) |
||||
document.removeEventListener('keydown', modalKeyEvent) |
||||
if (document.getElementById('modal-background')) { |
||||
document.getElementById('modal-background').removeEventListener('click', cancelListener) |
||||
} |
||||
} |
||||
okDiv.addEventListener('click', okListener) |
||||
cancelDiv.addEventListener('click', cancelListener) |
||||
closeDiv.addEventListener('click', cancelListener) |
||||
document.addEventListener('keydown', modalKeyEvent) |
||||
if (document.getElementById('modal-background')) { |
||||
document.getElementById('modal-background').addEventListener('click', cancelListener) |
||||
} |
||||
return { container, okListener, cancelListener } |
||||
} |
||||
|
||||
function html (opts) { |
||||
return yo`<div id="modal-dialog" class="${css.modal}"> |
||||
<div id="modal-background" class="${css['modalBackground']}"> </div> |
||||
<div class="${css['modalContent']} bg-light text-secondary ${opts.class}"> |
||||
<div class="${css['modalHeader']}"> |
||||
<h3></h3> |
||||
<i id="modal-close" title="Close" class="fa fa-times ${css['modalClose']}" aria-hidden="true"></i> |
||||
</div> |
||||
<div class="${css['modalBody']}"> - |
||||
</div> |
||||
<div class="${css['modalFooter']}"> |
||||
<span id="modal-footer-ok" class="${css['modalFooterOk']} btn btn-sm btn-light">OK</span> |
||||
<span id="modal-footer-cancel" class="${css['modalFooterCancel']} btn btn-sm btn-light">Cancel</span> |
||||
</div> |
||||
</div> |
||||
</div>` |
||||
} |
||||
|
||||
|
Loading…
Reference in new issue