├── .gitattributes ├── .gitignore ├── .travis.yml ├── CHANGELOG.md ├── Gemfile ├── Gruntfile.js ├── LICENSE ├── README.md ├── _config.yml ├── bower.json ├── composer.json ├── dist ├── css │ ├── ant-strap.css │ ├── ant-strap.css.map │ ├── ant-strap.min.css │ └── ant-strap.min.css.map ├── fonts │ ├── FontAwesome.otf │ ├── fontawesome-webfont.eot │ ├── fontawesome-webfont.svg │ ├── fontawesome-webfont.ttf │ ├── fontawesome-webfont.woff │ └── fontawesome-webfont.woff2 └── js │ ├── ant-strap.js │ └── ant-strap.min.js ├── docs ├── _includes │ ├── footer.html │ ├── header.html │ └── nav.html ├── _layouts │ └── default.html ├── assets │ ├── brand │ │ └── ant-strap.svg │ ├── img │ │ └── ant-strap.png │ ├── js │ │ ├── ie-emulation-modes-warning.js │ │ ├── ie10-viewport-bug-workaround.js │ │ ├── src │ │ │ └── application.js │ │ └── vendor │ │ │ ├── anchor.min.js │ │ │ ├── clipboard.min.js │ │ │ ├── holder.min.js │ │ │ ├── jekyll-search.min.js │ │ │ ├── jquery.min.js │ │ │ └── tether.min.js │ └── scss │ │ ├── _bragit.scss │ │ ├── _buttons.scss │ │ ├── _content.scss │ │ ├── _featurettes.scss │ │ ├── _footer.scss │ │ ├── _masthead.scss │ │ ├── _nav.scss │ │ └── docs.scss ├── examples │ └── index.md ├── favicon.ico └── index.html ├── js ├── .eslintrc.json ├── .jscsrc ├── src │ ├── custom.js │ └── util.js └── tests │ ├── README.md │ ├── index.html │ ├── unit │ ├── custom.js │ └── phantom.js │ ├── vendor │ ├── jquery.min.js │ ├── qunit.css │ ├── qunit.js │ └── tether.min.js │ └── visual │ └── custom.html ├── package.json ├── sache.json └── scss ├── .scss-lint.yml ├── _alert.scss ├── _animation.scss ├── _breadcrumb.scss ├── _button-group.scss ├── _buttons.scss ├── _card.scss ├── _carousel.scss ├── _close.scss ├── _code.scss ├── _custom-forms.scss ├── _dropdown.scss ├── _forms.scss ├── _grid.scss ├── _images.scss ├── _input-group.scss ├── _jumbotron.scss ├── _list-group.scss ├── _media.scss ├── _mixins.scss ├── _modal.scss ├── _nav.scss ├── _navbar.scss ├── _pagination.scss ├── _popover.scss ├── _progress.scss ├── _responsive-embed.scss ├── _tables.scss ├── _tags.scss ├── _tooltip.scss ├── _utilities.scss ├── _variables.scss ├── ant-strap-flex.scss ├── ant-strap-grid.scss ├── ant-strap-reboot.scss └── ant-strap.scss /.gitattributes: -------------------------------------------------------------------------------- 1 | # Enforce Unix newlines 2 | *.css text eol=lf 3 | *.html text eol=lf 4 | *.js text eol=lf 5 | *.json text eol=lf 6 | *.md text eol=lf 7 | *.py text eol=lf 8 | *.rb text eol=lf 9 | *.scss text eol=lf 10 | *.svg text eol=lf 11 | *.yml text eol=lf 12 | # Don't diff or textually merge source maps 13 | *.map binary 14 | 15 | bootstrap.css linguist-vendored=false 16 | bootstrap.js linguist-vendored=false 17 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Ignore docs files 2 | _gh_pages 3 | docs/assets/css 4 | docs/dist 5 | docs.min.js 6 | 7 | # Ignore js files 8 | js/dist 9 | 10 | # Ignore ruby files 11 | .ruby-version 12 | .bundle 13 | Gemfile.lock 14 | vendor/cache 15 | vendor/bundle 16 | 17 | # Numerous always-ignore extensions 18 | *.diff 19 | *.err 20 | *.log 21 | *.orig 22 | *.rej 23 | *.swo 24 | *.swp 25 | *.vi 26 | *.zip 27 | *~ 28 | 29 | # OS or Editor folders 30 | ._* 31 | .cache 32 | .DS_Store 33 | .idea 34 | .project 35 | .settings 36 | .tmproj 37 | *.esproj 38 | *.sublime-project 39 | *.sublime-workspace 40 | nbproject 41 | Thumbs.db 42 | 43 | # Komodo 44 | .komodotools 45 | *.komodoproject 46 | 47 | # SCSS-Lint 48 | scss-lint-report.xml 49 | 50 | # grunt-contrib-sass cache 51 | .sass-cache 52 | 53 | # Jekyll metadata 54 | docs/.jekyll-metadata 55 | 56 | # Folders to ignore 57 | bower_components 58 | node_modules 59 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | script: npm run deploy 2 | sudo: required 3 | language: node_js 4 | git: 5 | depth: 10 6 | node_js: 7 | - '4' 8 | - '6' 9 | before_install: 10 | - export PATH=$(python -c 'from sys import argv;from collections import OrderedDict 11 | as od;print(":".join(od((p,None) for p in argv[1].split(":") if p.startswith("/")).keys()))' 12 | "$PATH") 13 | - rvm install 2.2 14 | - rvm use 2.2 --fuzzy 15 | - npm install -g npm@3 16 | - export TRAVIS_COMMIT_MSG="$(git log --format=%B --no-merges -n 1)" 17 | - echo "$TRAVIS_COMMIT_MSG" | grep '\[skip validator\]'; export TWBS_DO_VALIDATOR=$?; 18 | true 19 | - echo "$TRAVIS_COMMIT_MSG" | grep '\[skip sauce\]'; export TWBS_DO_SAUCE=$?; true 20 | - if [ "$TRAVIS_REPO_SLUG" = twbs-savage/bootstrap ]; then export TWBS_DO_VALIDATOR=0; 21 | fi 22 | install: 23 | - bundle install --deployment --jobs=3 24 | - cp grunt/npm-shrinkwrap.json ./ 25 | - npm install 26 | cache: 27 | directories: 28 | - node_modules 29 | - vendor/bundle 30 | env: 31 | global: 32 | - GH_REF: github.com/websemantics/ant-strap.git 33 | - secure: ZH2P/CSNftxdxVAisR9Zmw9hGaCD+VTCwg6i4/ItGh+DXy7w8Rm5r5gYB00vi/wuwabrPyAcnQo6eANcEODl9EdCDEOlYHj0djxdHZ8Bb5zHP1w7NivyY4W1v6+lm/j8qX2My2kCW3usdTOk5wpoASurPDGR9iU0lQ0rzTsbNt2czzVXI2eFHcm8KcSAEdK2oLgeAo/2Md6GenXK1JZ0qm9e0MYVeESiGQ8GWKYQ3E3+1vG3Y2Sgn0gI25HrqGQOCFhcRZ1FNWdQx5VrYU1GpOMGXLebW9m4TVESmv6fo4YHZGEuYo9eIlREMjBJD1qxPgmwSWmapEFc6oUrjAz8Vw2grQHcRAtlGWV89nSAQL+LrOm2O7Wkm/oYupbv/M/Dhy0rhpa/g7HKyeiQuoD0e3+OeVJdqRqMrMJkyqRF/tTRoQpD6iYIGDuzGeL3UVaZwFttpW9Zgbqeacs8W6JBFEiM1P9uzzcdwGJfKGY5yun85RgadiM+/Yxa8Rsjy02hRi4UwU/CYccWGoeEO1XXngrjwbv6op0sofQPa6qH2Iq/7/nUEQXnPXHnail+2VROSvz98KJfSODyiIA19qZckFJ+WcLTnew4ef+N/LFtCfgassWylVM/644VuPY69jDN8pd5K6HjwkxaEp4s34J/1RxNcZkeqxjDdiMc2DhquSQ= 34 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | ## 1.0.0 4 | * Initial scaffold from Themeblr, 5 | -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | source 'https://rubygems.org' 2 | 3 | group :development, :test do 4 | gem 'jekyll', '~> 3.1.2' 5 | gem 'jekyll-redirect-from', '~> 0.11.0' 6 | gem 'jekyll-sitemap', '~> 0.11.0' 7 | gem 'scss_lint', '~> 0.49.0' 8 | end 9 | -------------------------------------------------------------------------------- /Gruntfile.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Ant Strap's Gruntfile (based on Bootstrap) 3 | * http://websemantics.github.io/ant-strap 4 | * http://getbootstrap.com 5 | * Copyright 2013-2016 The Bootstrap Authors 6 | * Copyright 2013-2016 Twitter, Inc. 7 | * Copyright 2016 Web Semantics, Inc. 8 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 9 | */ 10 | 11 | module.exports = function (grunt) { 12 | 'use strict'; 13 | 14 | // Force use of Unix newlines 15 | grunt.util.linefeed = '\n'; 16 | 17 | RegExp.quote = function (string) { 18 | return string.replace(/[-\\^$*+?.()|[\]{}]/g, '\\$&'); 19 | }; 20 | 21 | var fs = require('fs'); 22 | var path = require('path'); 23 | var isTravis = require('is-travis'); 24 | 25 | var configBridge = grunt.file.readJSON('./node_modules/bootstrap/grunt/configBridge.json', { encoding: 'utf8' }); 26 | 27 | Object.keys(configBridge.paths).forEach(function (key) { 28 | configBridge.paths[key].forEach(function (val, i, arr) { 29 | arr[i] = path.join('./docs', val); 30 | }); 31 | }); 32 | 33 | // Project configuration. 34 | grunt.initConfig({ 35 | 36 | // Metadata. 37 | pkg: grunt.file.readJSON('package.json'), 38 | banner: '/*!\n' + 39 | ' * <%= pkg.name %> v<%= pkg.version %> (<%= pkg.homepage %>)\n' + 40 | ' * Copyright 2011-<%= grunt.template.today("yyyy") %> <%= pkg.author %>\n' + 41 | ' * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n' + 42 | ' */\n', 43 | jqueryCheck: 'if (typeof jQuery === \'undefined\') {\n' + 44 | ' throw new Error(\'Bootstrap\\\'s JavaScript requires jQuery\')\n' + 45 | '}\n', 46 | jqueryVersionCheck: '+function ($) {\n' + 47 | ' var version = $.fn.jquery.split(\' \')[0].split(\'.\')\n' + 48 | ' if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] >= 4)) {\n' + 49 | ' throw new Error(\'Bootstrap\\\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0\')\n' + 50 | ' }\n' + 51 | '}(jQuery);\n\n', 52 | 53 | // Task configuration. 54 | clean: { 55 | dist: 'dist', 56 | docs: 'docs/dist' 57 | }, 58 | 59 | // JS build configuration 60 | babel: { 61 | dev: { 62 | options: { 63 | sourceMap: true, 64 | modules: 'ignore' 65 | }, 66 | files: { 67 | 'js/dist/custom.js' : 'js/src/custom.js' 68 | } 69 | }, 70 | dist: { 71 | options: { 72 | modules: 'ignore' 73 | }, 74 | files: { 75 | '<%= concat.ant_strap.dest %>' : '<%= concat.ant_strap.dest %>' 76 | } 77 | } 78 | }, 79 | 80 | stamp: { 81 | options: { 82 | banner: '<%= banner %>\n<%= jqueryCheck %>\n<%= jqueryVersionCheck %>\n+function ($) {\n', 83 | footer: '\n}(jQuery);' 84 | }, 85 | ant_strap: { 86 | files: { 87 | src: '<%= concat.ant_strap.dest %>' 88 | } 89 | } 90 | }, 91 | 92 | concat: { 93 | options: { 94 | // Custom function to remove all export and import statements 95 | // Also, concat Bootstrap.js 96 | process: function (src) { 97 | return src.replace(/^(export|import).*/gm, ''); 98 | }, 99 | stripBanners: false 100 | }, 101 | ant_strap: { 102 | src: [ 103 | 'js/src/custom.js', 104 | 'node_modules/bootstrap/dist/js/bootstrap.js' 105 | ], 106 | dest: 'dist/js/<%= pkg.name %>.js' 107 | } 108 | }, 109 | 110 | uglify: { 111 | options: { 112 | compress: { 113 | warnings: false 114 | }, 115 | mangle: true, 116 | preserveComments: /^!|@preserve|@license|@cc_on/i 117 | }, 118 | core: { 119 | src: '<%= concat.ant_strap.dest %>', 120 | dest: 'dist/js/<%= pkg.name %>.min.js' 121 | }, 122 | docsJs: { 123 | src: configBridge.paths.docsJs, 124 | dest: 'docs/assets/js/docs.min.js' 125 | } 126 | }, 127 | 128 | qunit: { 129 | options: { 130 | inject: 'js/tests/unit/phantom.js' 131 | }, 132 | files: 'js/tests/index.html' 133 | }, 134 | 135 | // CSS build configuration 136 | scsslint: { 137 | options: { 138 | bundleExec: true, 139 | config: 'scss/.scss-lint.yml', 140 | reporterOutput: null 141 | }, 142 | core: { 143 | src: ['scss/*.scss', '!scss/_normalize.scss'] 144 | }, 145 | docs: { 146 | src: ['docs/assets/scss/*.scss', '!docs/assets/scss/docs.scss'] 147 | } 148 | }, 149 | 150 | cssmin: { 151 | options: { 152 | // TODO: disable `zeroUnits` optimization once clean-css 3.2 is released 153 | // and then simplify the fix for https://github.com/twbs/bootstrap/issues/14837 accordingly 154 | compatibility: 'ie9', 155 | keepSpecialComments: '*', 156 | sourceMap: true, 157 | advanced: false 158 | }, 159 | core: { 160 | files: [ 161 | { 162 | expand: true, 163 | cwd: 'dist/css', 164 | src: ['*.css', '!*.min.css'], 165 | dest: 'dist/css', 166 | ext: '.min.css' 167 | } 168 | ] 169 | }, 170 | docs: { 171 | files: [ 172 | { 173 | expand: true, 174 | cwd: 'docs/assets/css', 175 | src: ['*.css', '!*.min.css'], 176 | dest: 'docs/assets/css', 177 | ext: '.min.css' 178 | } 179 | ] 180 | } 181 | }, 182 | 183 | copy: { 184 | fonts: { 185 | expand: true, 186 | src: 'node_modules/font-awesome/fonts/**', 187 | dest: 'dist/fonts', 188 | flatten: true, 189 | filter: 'isFile' 190 | }, 191 | docs: { 192 | expand: true, 193 | cwd: 'dist/', 194 | src: [ 195 | '**/*' 196 | ], 197 | dest: 'docs/dist/' 198 | } 199 | }, 200 | 201 | connect: { 202 | server: { 203 | options: { 204 | port: 3000, 205 | base: '.' 206 | } 207 | } 208 | }, 209 | 210 | jekyll: { 211 | options: { 212 | bundleExec: true, 213 | config: '_config.yml', 214 | incremental: false 215 | }, 216 | docs: {}, 217 | github: { 218 | options: { 219 | raw: 'github: true' 220 | } 221 | } 222 | }, 223 | 224 | htmllint: { 225 | options: { 226 | ignore: [ 227 | 'Attribute “autocomplete” is only allowed when the input type is “color”, “date”, “datetime”, “datetime-local”, “email”, “hidden”, “month”, “number”, “password”, “range”, “search”, “tel”, “text”, “time”, “url”, or “week”.', 228 | 'Attribute “autocomplete” not allowed on element “button” at this point.', 229 | 'Consider using the “h1” element as a top-level heading only (all “h1” elements are treated as top-level headings by many screen readers and other tools).', 230 | 'Element “div” not allowed as child of element “progress” in this context. (Suppressing further errors from this subtree.)', 231 | 'Element “img” is missing required attribute “src”.', 232 | 'The “color” input type is not supported in all browsers. Please be sure to test, and consider using a polyfill.', 233 | 'The “date” input type is not supported in all browsers. Please be sure to test, and consider using a polyfill.', 234 | 'The “datetime” input type is not supported in all browsers. Please be sure to test, and consider using a polyfill.', 235 | 'The “datetime-local” input type is not supported in all browsers. Please be sure to test, and consider using a polyfill.', 236 | 'The “month” input type is not supported in all browsers. Please be sure to test, and consider using a polyfill.', 237 | 'The “time” input type is not supported in all browsers. Please be sure to test, and consider using a polyfill.', 238 | 'The “week” input type is not supported in all browsers. Please be sure to test, and consider using a polyfill.' 239 | ] 240 | }, 241 | src: ['_gh_pages/**/*.html', 'js/tests/visual/*.html'] 242 | }, 243 | 244 | watch: { 245 | src: { 246 | files: '<%= concat.ant_strap.src %>', 247 | tasks: ['babel:dev'] 248 | }, 249 | sass: { 250 | files: 'scss/**/*.scss', 251 | tasks: ['dist-css', 'docs', 'docs-github'] 252 | }, 253 | docs: { 254 | files: 'docs/assets/scss/**/*.scss', 255 | tasks: ['dist-css', 'docs', 'docs-github'] 256 | }, 257 | html: { 258 | files: 'docs/**/*.html', 259 | tasks: ['docs-github'] 260 | } 261 | }, 262 | 263 | 'saucelabs-qunit': { 264 | all: { 265 | options: { 266 | build: process.env.TRAVIS_JOB_ID, 267 | concurrency: 10, 268 | maxRetries: 3, 269 | maxPollRetries: 4, 270 | urls: ['http://127.0.0.1:3000/js/tests/index.html?hidepassed'], 271 | browsers: grunt.file.readYAML('node_modules/bootstrap/grunt/sauce_browsers.yml') 272 | } 273 | } 274 | }, 275 | 276 | exec: { 277 | postcss: { 278 | command: 'npm run postcss' 279 | }, 280 | 'postcss-docs': { 281 | command: 'npm run postcss-docs' 282 | }, 283 | htmlhint: { 284 | command: 'npm run htmlhint' 285 | }, 286 | 'upload-preview': { 287 | command: './node_modules/bootstrap/grunt/upload-preview.sh' 288 | } 289 | }, 290 | 291 | buildcontrol: { 292 | options: { 293 | dir: '_gh_pages', 294 | commit: true, 295 | push: true, 296 | message: 'Built %sourceName% from commit %sourceCommit% on branch %sourceBranch%' 297 | }, 298 | pages: { 299 | options: { 300 | remote: 'git@github.com:websemantics/ant_strap.git', 301 | branch: 'gh-pages' 302 | } 303 | } 304 | }, 305 | 306 | compress: { 307 | main: { 308 | options: { 309 | archive: '<%= pkg.name %>-<%= pkg.version %>-dist.zip', 310 | mode: 'zip', 311 | level: 9, 312 | pretty: true 313 | }, 314 | files: [ 315 | { 316 | expand: true, 317 | cwd: 'dist/', 318 | src: ['**'], 319 | dest: '<%= pkg.name %>-<%= pkg.version %>-dist' 320 | } 321 | ] 322 | } 323 | }, 324 | 325 | browserSync: { 326 | default_options: { 327 | bsFiles: { 328 | src: [ 329 | "<%= pkg.config.dir.dist %>/dist/css/*.css", 330 | "<%= pkg.config.dir.dist %>/assets/css/*.css", 331 | "<%= pkg.config.dir.dist %>/dist/js/*.js", 332 | "<%= pkg.config.dir.dist %>/assets/js/*.js", 333 | "<%= pkg.config.dir.dist %>/*.html" 334 | ] 335 | }, 336 | options: { 337 | watchTask: true, 338 | server: { 339 | baseDir: "<%= pkg.config.dir.dist %>" 340 | } 341 | } 342 | } 343 | } 344 | 345 | }); 346 | 347 | // These plugins provide necessary tasks. 348 | require('load-grunt-tasks')(grunt, { scope: 'devDependencies', 349 | // Exclude Sass compilers. We choose the one to load later on. 350 | pattern: ['grunt-*', '!grunt-sass', '!grunt-contrib-sass'] }); 351 | require('time-grunt')(grunt); 352 | 353 | // Docs HTML validation task 354 | grunt.registerTask('validate-html', ['jekyll:docs', 'htmllint', 'exec:htmlhint']); 355 | 356 | var runSubset = function (subset) { 357 | return !process.env.TWBS_TEST || process.env.TWBS_TEST === subset; 358 | }; 359 | var isUndefOrNonZero = function (val) { 360 | return val === undefined || val !== '0'; 361 | }; 362 | 363 | // Test task. 364 | var testSubtasks = []; 365 | // Skip core tests if running a different subset of the test suite 366 | if (runSubset('core') && 367 | // Skip core tests if this is a Savage build 368 | process.env.TRAVIS_REPO_SLUG !== 'twbs-savage/bootstrap') { 369 | testSubtasks = testSubtasks.concat(['dist-css', 'dist-js', 'test-scss', 'qunit', 'docs']); 370 | } 371 | // Skip HTML validation if running a different subset of the test suite 372 | if (runSubset('validate-html') && 373 | isTravis && 374 | // Skip HTML5 validator when [skip validator] is in the commit message 375 | isUndefOrNonZero(process.env.TWBS_DO_VALIDATOR)) { 376 | testSubtasks.push('validate-html'); 377 | } 378 | // Only run Sauce Labs tests if there's a Sauce access key 379 | if (typeof process.env.SAUCE_ACCESS_KEY !== 'undefined' && 380 | // Skip Sauce if running a different subset of the test suite 381 | runSubset('sauce-js-unit')) { 382 | testSubtasks = testSubtasks.concat(['dist', 'docs-css', 'docs-js', 'clean:docs', 'copy:docs', 'exec:upload-preview']); 383 | // Skip Sauce on Travis when [skip sauce] is in the commit message 384 | if (isUndefOrNonZero(process.env.TWBS_DO_SAUCE)) { 385 | testSubtasks.push('connect'); 386 | testSubtasks.push('saucelabs-qunit'); 387 | } 388 | } 389 | grunt.registerTask('test', testSubtasks); 390 | 391 | // JS distribution task. 392 | grunt.registerTask('dist-js', ['babel:dev', 'concat', 'babel:dist', 'stamp', 'uglify:core']); 393 | 394 | grunt.registerTask('test-scss', ['scsslint:core']); 395 | 396 | // CSS distribution task. 397 | // Supported Compilers: sass (Ruby) and libsass. 398 | (function (sassCompilerName) { 399 | require('./node_modules/bootstrap/grunt/bs-sass-compile/' + sassCompilerName + '.js')(grunt); 400 | })(process.env.TWBS_SASS || 'libsass'); 401 | // grunt.registerTask('sass-compile', ['sass:core', 'sass:extras', 'sass:docs']); 402 | grunt.registerTask('sass-compile', ['sass:core', 'sass:docs']); 403 | 404 | grunt.registerTask('dist-css', ['sass-compile', 'exec:postcss', 'cssmin:core', 'cssmin:docs']); 405 | 406 | // Full distribution task. 407 | grunt.registerTask('dist', ['clean:dist', 'dist-css', 'copy:fonts', 'dist-js']); 408 | 409 | // Default task. 410 | grunt.registerTask('default', ['clean:dist', 'copy:fonts', 'test']); 411 | 412 | // Watch all task. 413 | grunt.registerTask('watch-all', ['browserSync', 'watch']); 414 | 415 | // Docs task. 416 | grunt.registerTask('docs-css', ['cssmin:docs', 'exec:postcss-docs']); 417 | grunt.registerTask('lint-docs-css', ['scsslint:docs']); 418 | grunt.registerTask('docs-js', ['uglify:docsJs']); 419 | grunt.registerTask('docs', ['lint-docs-css', 'docs-css', 'docs-js', 'clean:docs', 'copy:docs']); 420 | grunt.registerTask('docs-github', ['jekyll:github']); 421 | 422 | grunt.registerTask('prep-release', ['dist', 'docs', 'docs-github', 'compress']); 423 | 424 | // Publish to GitHub 425 | grunt.registerTask('publish', ['buildcontrol:pages']); 426 | }; 427 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2011-2016 Twitter, Inc. 4 | Copyright (c) 2011-2016 The Bootstrap Authors 5 | Copyright (c) 2016 Web Semantics, Inc. 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy 8 | of this software and associated documentation files (the "Software"), to deal 9 | in the Software without restriction, including without limitation the rights 10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in 15 | all copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 23 | THE SOFTWARE. 24 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ``` 2 | ---. 3 | ----. -.. \ 4 | -... \ _|_|_ 5 | __________|__|____________ / O \ 6 | |░░░░░░░░░░░░░|░░░░░░░░░░░░|\_______/ 7 | |░░░░░░░░░░░░░░░░░░░░░░░░░░| / \ 8 | |░░░░░░░|` ___ ,\░░░░░░░░| \/ \ 9 | |░░░░░░░| | o\ |░░░░░░░| /'---'\ 10 | |░░░░░░░| |___/ /░░░░░░_____/ | \_____ 11 | |░░░░░░░| _ _ '.░░░░░░░| __/\____/ \_ 12 | |░░░░░░░| | \ \░░░░░░| | \ 13 | |░░░░░░░| | | |░░░░░| / \__ /\ '_ 14 | |░░░░░░░| `..,./ |░░░░░| / \__ \ \ 15 | |░░░░░░/ /░░░░░░| \ \_\_________\ 16 | |░░░░░\______\_____.\░░░░░░░| \ \ \ 17 | |░░░░░░░/░░░░|░░░░░░/░░░░░░| \ \ 18 | 19 | 20 | _______ __ _ _______ _______ _______ ______ _______ _____ 21 | |_____| | \ | | |______ | |_____/ |_____| |_____] 22 | | | | \_| | ______| | | \_ | | | 23 | 24 | 25 | ░░░░░░░░░░▒▒▒▒▒▒▒▓▓▓▓▓███ W O R K I N P R O G R E S S ███▓▓▓▓▓▒▒▒▒▒▒░░░░░░░░░░░ 26 | 27 | 28 | ``` 29 | 30 | 31 | > Ant Strap is a CSS Framework built after [Ant Design](http://ant.design/) using [Bootstrap 4](http://getbootstrap.com/) for building beautiful modern Web apps with the combined popularity of the Bootstrap framework and the elegant minimal styles of [Ant Design](http://ant.design/) for beautiful and responsive app layouts. 32 | 33 | [![Build Status](https://travis-ci.org/websemantics/ant-strap.svg?branch=master)](https://travis-ci.org/websemantics/ant-strap) 34 | 35 | ### [Showcase](http://websemantics.github.io/ant-strap)   [Getting Started](#getting-started)   [Submit Issue](https://github.com/websemantics/ant-strap/issues) 36 | 37 | 38 | ## Getting Started 39 | 40 | Three quick start options are available: 41 | 42 | - [Download the latest release](https://github.com/websemantics/ant-strap/archive/1.0.0.zip). 43 | - Clone the repo: `git clone https://github.com/websemantics/ant-strap.git`. 44 | - Install with [Bower](http://bower.io): `bower install ant-strap`. 45 | - Install with [npm](https://www.npmjs.com/): `npm install ant-strap`. 46 | 47 | 48 | ### What's included 49 | 50 | Within the download you'll find the following directories and files for the framework and the docs, logically grouping common assets and providing both compiled and minified variations, 51 | 52 | ``` 53 | ant-strap/ 54 | ├── dist/ 55 | | ├── css/ 56 | │ | ├── ant-strap.css 57 | │ | ├── ant-strap.css.map 58 | │ | └── ant-strap.min.css 59 | │ | └── ant-strap.min.css.map 60 | | ├── js/ 61 | │ | ├── ant-strap.js 62 | │ | └── ant-strap.min.js 63 | ├── js/ 64 | | ├── dist/ 65 | │ | ├── custom.js 66 | │ | └── custom.min.js 67 | | ├── src/ 68 | │ | ├── custom.js 69 | │ | └── util.js 70 | ├── docs/ 71 | | ├── dist/ 72 | | ├── assets/ 73 | │ | ├── brand 74 | │ | ├── css 75 | │ │ | ├── docs.css 76 | │ │ | └── docs.min.css.map 77 | │ | ├── js 78 | │ | └── scss 79 | | └── index.html 80 | └── scss/ 81 | └── and-design 82 | 83 | ``` 84 | 85 | All css override styles for Bootstrap and Ant Design are stored in `scss` and `scss/primer` folders respectively, while compiled and minified CSS and JS are in `dist` folder. 86 | 87 | 88 | ## Contributions 89 | 90 | We are more than happy to accept external contributions to the project in the form of feedback, bug reports and even better - pull requests :) 91 | 92 | To start development on your local machine following these steps, 93 | 94 | - First, clone, 95 | 96 | ```bash 97 | git clone https://github.com/websemantics/ant-strap 98 | ``` 99 | 100 | - Install npm dependencies, 101 | 102 | ```bash 103 | cd ant-strap 104 | 105 | npm i 106 | ``` 107 | 108 | - Build sass styles into `dist`, 109 | 110 | ```bash 111 | npm run build 112 | ``` 113 | 114 | - Build project pages into `_gh_pages`, and before running the following script, comment-out `baseurl` line in 115 | `_config.yml` or set to empty string, 116 | 117 | ```bash 118 | npm run prep-release 119 | ``` 120 | 121 | - Watch changes and refresh browser automatically, 122 | 123 | ```bash 124 | npm run watch 125 | ``` 126 | 127 | - Deploy into Github Pages (owner), 128 | 129 | ```bash 130 | npm run deploy 131 | ``` 132 | 133 | ### Progress 134 | 135 | - [ ] Reset 136 | - [ ] Site 137 | - [ ] Button 138 | - [ ] Container 139 | - [ ] Divider 140 | - [ ] Flag 141 | - [ ] Header 142 | - [ ] Icon 143 | - [ ] Image 144 | - [ ] Input 145 | - [ ] Label 146 | - [ ] List 147 | - [ ] Loader 148 | - [ ] Rail 149 | - [ ] Reveal 150 | - [ ] Segment 151 | - [ ] Code Segment :new: 152 | - [ ] Step 153 | - [ ] Breadcrumb 154 | - [ ] Form 155 | - [ ] Grid 156 | - [ ] Menu 157 | - [ ] Message 158 | - [ ] Table 159 | - [ ] Ad 160 | - [ ] Card 161 | - [ ] Comment 162 | - [ ] Feed 163 | - [ ] Item 164 | - [ ] Statistic 165 | - [ ] Accordion 166 | - [ ] Checkbox 167 | - [ ] Dimmer 168 | - [ ] Dropdown 169 | - [ ] Embed 170 | - [ ] Modal 171 | - [ ] Nag 172 | - [ ] Popup 173 | - [ ] Progress 174 | - [ ] Search 175 | - [ ] Shape 176 | - [ ] Sidebar 177 | - [ ] Sticky 178 | - [ ] Tab 179 | - [ ] Transition 180 | - [ ] Api 181 | - [ ] Form 182 | - [ ] State 183 | - [ ] Visibility 184 | 185 | 186 | ## Screenshot 187 | 188 | [![Ant Strap](https://raw.githubusercontent.com/websemantics/themeblr/master/docs/assets/img/ant-strap.png)](https://websemantics.github.io/ant-strap/) 189 | 190 | Love the Github *repository buttons* used and want to use them to showcase your own GitHub repositories? the name is Bragit, [Brag It](http://websemantics.github.io/bragit/). 191 | 192 | 193 | ## Resource 194 | 195 | [Themeblr](https://websemantics.github.io/themeblr/), A powerful CSS framework boilerplate and Bootstrap 4 themes builder . 196 | 197 | [Ant Design](http://ant.design/), An enterprise-class UI design language and React-based implementation. 198 | 199 | [Bootstrap 4](http://v4-alpha.getbootstrap.com/), The most popular HTML, CSS, and JS framework in the world for building responsive, mobile-first projects on the web. 200 | 201 | [Semantic Ant](https://github.com/websemantics/semantic-ant), Ant Design inspired theme for [Semantic-UI](http://semantic-ui.com/). 202 | 203 | [Bootstrap 4 Cheatsheet](https://hackerthemes.com/bootstrap-cheatsheet/), A quick reference for Bootstrap v4.0.0-alpha.3. 204 | 205 | [Awesome Ant Design](https://github.com/websemantics/awesome-ant-design/), A curated list of Ant Design resources and related projects. 206 | 207 | ## Support 208 | 209 | Need help or have a question? post a questions at [StackOverflow](https://stackoverflow.com/questions/tagged/ant-strap) 210 | 211 | *Please don't use the issue trackers for support/questions.* 212 | 213 | 214 | ## Credits 215 | 216 | This project was built using [Ant Strap](https://websemantics.github.io/ant-strap/), on top of the awesomeness known as [Bootstrap](https://github.com/twbs/bootstrap/) and closely followed, [Ant Design](http://ant.design/). 217 | 218 | 219 | ## Copyright and license 220 | 221 | [MIT license](http://opensource.org/licenses/mit-license.php) 222 | Copyright (c) Web Semantics, Inc. 223 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | # Dependencies 2 | markdown: kramdown 3 | highlighter: rouge 4 | 5 | # Permalinks 6 | permalink: pretty 7 | 8 | # Server 9 | source: docs 10 | destination: _gh_pages 11 | host: 0.0.0.0 12 | port: 9001 13 | name: ANT 14 | description: A UI design language 15 | baseurl: /ant-strap 16 | encoding: UTF-8 17 | 18 | gems: 19 | - jekyll-sitemap 20 | 21 | # Custom vars 22 | current_version: 1.0.0 23 | repo: https://github.com/websemantics/ant-strap 24 | -------------------------------------------------------------------------------- /bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ant-strap", 3 | "description": "An elegant CSS Framework built after Ant Design using Bootstrap 4.", 4 | "keywords": [ 5 | "css", 6 | "js", 7 | "sass", 8 | "mobile-first", 9 | "responsive", 10 | "front-end", 11 | "framework", 12 | "ant design", 13 | "bootstrap", 14 | "web" 15 | ], 16 | "homepage": "http://websemantics.github.io/ant-strap", 17 | "license": "MIT", 18 | "moduleType": "globals", 19 | "main": [ 20 | "scss/ant-strap.scss", 21 | "dist/js/ant-strap.js" 22 | ], 23 | "ignore": [ 24 | "/.*", 25 | "_config.yml", 26 | "composer.json", 27 | "docs", 28 | "js/tests", 29 | "test-infra" 30 | ], 31 | "dependencies": { 32 | "jquery": "1.9.1 - 3", 33 | "tether": "^1.1.1" 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "websemantics/ant-strap", 3 | "description": "An elegant CSS Framework built after Ant Design using Bootstrap 4.", 4 | "keywords": [ 5 | "css", 6 | "js", 7 | "sass", 8 | "mobile-first", 9 | "responsive", 10 | "front-end", 11 | "framework", 12 | "web" 13 | ], 14 | "homepage": "http://getbootstrap.com", 15 | "authors": [ 16 | { 17 | "name": "Mark Otto", 18 | "email": "markdotto@gmail.com" 19 | }, 20 | { 21 | "name": "Jacob Thornton", 22 | "email": "jacobthornton@gmail.com" 23 | }, 24 | { 25 | "name": "Adnan M.Sagar, PhD.", 26 | "email": "msagar@gmail.com" 27 | } 28 | ], 29 | "support": { 30 | "issues": "https://github.com/websemantics/ant-strap/issues" 31 | }, 32 | "license": "MIT", 33 | "replace": { 34 | "twitter/bootstrap": "self.version" 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /dist/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/websemantics/ant-strap/861bee88995e9d572f7e9ec84b2678e9d60dc72b/dist/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /dist/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/websemantics/ant-strap/861bee88995e9d572f7e9ec84b2678e9d60dc72b/dist/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /dist/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/websemantics/ant-strap/861bee88995e9d572f7e9ec84b2678e9d60dc72b/dist/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /dist/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/websemantics/ant-strap/861bee88995e9d572f7e9ec84b2678e9d60dc72b/dist/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /dist/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/websemantics/ant-strap/861bee88995e9d572f7e9ec84b2678e9d60dc72b/dist/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /docs/_includes/footer.html: -------------------------------------------------------------------------------- 1 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | {% if site.github %} 20 | 21 | {% else %} 22 | 23 | {% endif %} 24 | 25 | {% if site.github %} 26 | 27 | {% else %} 28 | {% for file in site.data.configBridge.paths.docsJs %} 29 | 30 | {% endfor %} 31 | {% endif %} 32 | 33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /docs/_includes/header.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | {{ page.title }} 8 | 9 | 10 | {% if site.github %} 11 | 12 | {% if page.title == "Flexbox grid system" %} 13 | 14 | {% endif %} 15 | {% else %} 16 | 17 | {% endif %} 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /docs/_includes/nav.html: -------------------------------------------------------------------------------- 1 | 16 | -------------------------------------------------------------------------------- /docs/_layouts/default.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {% include header.html %} 5 | 6 | 7 | 8 | {% include nav.html %} 9 | {{ content }} 10 | {% include footer.html %} 11 | 12 | 13 | -------------------------------------------------------------------------------- /docs/assets/brand/ant-strap.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /docs/assets/img/ant-strap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/websemantics/ant-strap/861bee88995e9d572f7e9ec84b2678e9d60dc72b/docs/assets/img/ant-strap.png -------------------------------------------------------------------------------- /docs/assets/js/ie-emulation-modes-warning.js: -------------------------------------------------------------------------------- 1 | // NOTICE!! DO NOT USE ANY OF THIS JAVASCRIPT 2 | // IT'S JUST JUNK FOR OUR DOCS! 3 | // ++++++++++++++++++++++++++++++++++++++++++ 4 | /*! 5 | * Copyright 2014-2015 The Bootstrap Authors 6 | * Copyright 2014-2015 Twitter, Inc. 7 | * 8 | * Licensed under the Creative Commons Attribution 3.0 Unported License. For 9 | * details, see https://creativecommons.org/licenses/by/3.0/. 10 | */ 11 | // Intended to prevent false-positive bug reports about Bootstrap not working properly in old versions of IE due to folks testing using IE's unreliable emulation modes. 12 | (function () { 13 | 'use strict'; 14 | 15 | function emulatedIEMajorVersion() { 16 | var groups = /MSIE ([0-9.]+)/.exec(window.navigator.userAgent) 17 | if (groups === null) { 18 | return null 19 | } 20 | var ieVersionNum = parseInt(groups[1], 10) 21 | var ieMajorVersion = Math.floor(ieVersionNum) 22 | return ieMajorVersion 23 | } 24 | 25 | function actualNonEmulatedIEMajorVersion() { 26 | // Detects the actual version of IE in use, even if it's in an older-IE emulation mode. 27 | // IE JavaScript conditional compilation docs: https://msdn.microsoft.com/library/121hztk3%28v=vs.94%29.aspx 28 | // @cc_on docs: https://msdn.microsoft.com/library/8ka90k2e%28v=vs.94%29.aspx 29 | var jscriptVersion = new Function('/*@cc_on return @_jscript_version; @*/')() 30 | if (jscriptVersion === undefined) { 31 | return 11 // IE11+ not in emulation mode 32 | } 33 | if (jscriptVersion < 9) { 34 | return 8 // IE8 (or lower; haven't tested on IE<8) 35 | } 36 | return jscriptVersion // IE9 or IE10 in any mode, or IE11 in non-IE11 mode 37 | } 38 | 39 | var ua = window.navigator.userAgent 40 | if (ua.indexOf('Opera') > -1 || ua.indexOf('Presto') > -1) { 41 | return // Opera, which might pretend to be IE 42 | } 43 | var emulated = emulatedIEMajorVersion() 44 | if (emulated === null) { 45 | return // Not IE 46 | } 47 | var nonEmulated = actualNonEmulatedIEMajorVersion() 48 | 49 | if (emulated !== nonEmulated) { 50 | window.alert('WARNING: You appear to be using IE' + nonEmulated + ' in IE' + emulated + ' emulation mode.\nIE emulation modes can behave significantly differently from ACTUAL older versions of IE.\nPLEASE DON\'T FILE BOOTSTRAP BUGS based on testing in IE emulation modes!') 51 | } 52 | })(); 53 | -------------------------------------------------------------------------------- /docs/assets/js/ie10-viewport-bug-workaround.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * IE10 viewport hack for Surface/desktop Windows 8 bug 3 | * Copyright 2014-2015 The Bootstrap Authors 4 | * Copyright 2014-2015 Twitter, Inc. 5 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 6 | */ 7 | 8 | // See the Getting Started docs for more information: 9 | // http://getbootstrap.com/getting-started/#support-ie10-width 10 | 11 | (function () { 12 | 'use strict'; 13 | 14 | if (navigator.userAgent.match(/IEMobile\/10\.0/)) { 15 | var msViewportStyle = document.createElement('style') 16 | msViewportStyle.appendChild( 17 | document.createTextNode( 18 | '@-ms-viewport{width:auto!important}' 19 | ) 20 | ) 21 | document.head.appendChild(msViewportStyle) 22 | } 23 | 24 | })(); 25 | -------------------------------------------------------------------------------- /docs/assets/js/src/application.js: -------------------------------------------------------------------------------- 1 | /** 2 | * 3 | * : 4 | * . : : : 5 | * ; . : ' : ; 6 | * : : : . : ; 7 | * ; . : ' : ; 8 | * ____________ 9 | * _/_/_.______/ \ 10 | * | \__________\_/ 11 | * |______ _ _ _ 12 | * | \ | |__ ___ _ __ ___ ___| |__ | |_ __ 13 | * | | | '_ \ / _ \ '_ ` _ \ / _ \ '_ \| | '__| 14 | * | | | | | | __/ | | | | | __/ |_) | | | 15 | * [_] |_| |_|\___|_| |_| |_|\___|_.__/|_|_| 16 | * 17 | * Build Bootstrap Stuff the Right Way! 18 | * 19 | * This project was released under MIT license. 20 | * 21 | * @link http://websemantics.ca 22 | * @author Web Semantics, Inc. Dev Team 23 | * @author Adnan M.Sagar, PhD. 24 | * 25 | */ 26 | 27 | !function ($) { 28 | 'use strict'; 29 | 30 | $(function () { 31 | 32 | // There is nothing here yet! 33 | 34 | }) 35 | 36 | }(jQuery) 37 | -------------------------------------------------------------------------------- /docs/assets/js/vendor/anchor.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * AnchorJS - v3.1.0 - 2016-02-12 3 | * https://github.com/bryanbraun/anchorjs 4 | * Copyright (c) 2016 Bryan Braun; Licensed MIT 5 | */ 6 | function AnchorJS(A){"use strict";function e(A){A.icon=A.hasOwnProperty("icon")?A.icon:"",A.visible=A.hasOwnProperty("visible")?A.visible:"hover",A.placement=A.hasOwnProperty("placement")?A.placement:"right",A.class=A.hasOwnProperty("class")?A.class:"",A.truncate=A.hasOwnProperty("truncate")?Math.floor(A.truncate):64}function t(A){var e;if("string"==typeof A||A instanceof String)e=[].slice.call(document.querySelectorAll(A));else{if(!(Array.isArray(A)||A instanceof NodeList))throw new Error("The selector provided to AnchorJS was invalid.");e=[].slice.call(A)}return e}function n(){if(null===document.head.querySelector("style.anchorjs")){var A,e=document.createElement("style"),t=" .anchorjs-link { opacity: 0; text-decoration: none; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }",n=" *:hover > .anchorjs-link, .anchorjs-link:focus { opacity: 1; }",o=' @font-face { font-family: "anchorjs-icons"; font-style: normal; font-weight: normal; src: url(data:application/x-font-ttf;charset=utf-8;base64,AAEAAAALAIAAAwAwT1MvMg8SBTUAAAC8AAAAYGNtYXAWi9QdAAABHAAAAFRnYXNwAAAAEAAAAXAAAAAIZ2x5Zgq29TcAAAF4AAABNGhlYWQEZM3pAAACrAAAADZoaGVhBhUDxgAAAuQAAAAkaG10eASAADEAAAMIAAAAFGxvY2EAKACuAAADHAAAAAxtYXhwAAgAVwAAAygAAAAgbmFtZQ5yJ3cAAANIAAAB2nBvc3QAAwAAAAAFJAAAACAAAwJAAZAABQAAApkCzAAAAI8CmQLMAAAB6wAzAQkAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAABAAADpywPA/8AAQAPAAEAAAAABAAAAAAAAAAAAAAAgAAAAAAADAAAAAwAAABwAAQADAAAAHAADAAEAAAAcAAQAOAAAAAoACAACAAIAAQAg6cv//f//AAAAAAAg6cv//f//AAH/4xY5AAMAAQAAAAAAAAAAAAAAAQAB//8ADwABAAAAAAAAAAAAAgAANzkBAAAAAAEAAAAAAAAAAAACAAA3OQEAAAAAAQAAAAAAAAAAAAIAADc5AQAAAAACADEARAJTAsAAKwBUAAABIiYnJjQ/AT4BMzIWFxYUDwEGIicmND8BNjQnLgEjIgYPAQYUFxYUBw4BIwciJicmND8BNjIXFhQPAQYUFx4BMzI2PwE2NCcmNDc2MhcWFA8BDgEjARQGDAUtLXoWOR8fORYtLTgKGwoKCjgaGg0gEhIgDXoaGgkJBQwHdR85Fi0tOAobCgoKOBoaDSASEiANehoaCQkKGwotLXoWOR8BMwUFLYEuehYXFxYugC44CQkKGwo4GkoaDQ0NDXoaShoKGwoFBe8XFi6ALjgJCQobCjgaShoNDQ0NehpKGgobCgoKLYEuehYXAAEAAAABAACiToc1Xw889QALBAAAAAAA0XnFFgAAAADRecUWAAAAAAJTAsAAAAAIAAIAAAAAAAAAAQAAA8D/wAAABAAAAAAAAlMAAQAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAACAAAAAoAAMQAAAAAACgAUAB4AmgABAAAABQBVAAIAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAADgCuAAEAAAAAAAEADgAAAAEAAAAAAAIABwCfAAEAAAAAAAMADgBLAAEAAAAAAAQADgC0AAEAAAAAAAUACwAqAAEAAAAAAAYADgB1AAEAAAAAAAoAGgDeAAMAAQQJAAEAHAAOAAMAAQQJAAIADgCmAAMAAQQJAAMAHABZAAMAAQQJAAQAHADCAAMAAQQJAAUAFgA1AAMAAQQJAAYAHACDAAMAAQQJAAoANAD4YW5jaG9yanMtaWNvbnMAYQBuAGMAaABvAHIAagBzAC0AaQBjAG8AbgBzVmVyc2lvbiAxLjAAVgBlAHIAcwBpAG8AbgAgADEALgAwYW5jaG9yanMtaWNvbnMAYQBuAGMAaABvAHIAagBzAC0AaQBjAG8AbgBzYW5jaG9yanMtaWNvbnMAYQBuAGMAaABvAHIAagBzAC0AaQBjAG8AbgBzUmVndWxhcgBSAGUAZwB1AGwAYQByYW5jaG9yanMtaWNvbnMAYQBuAGMAaABvAHIAagBzAC0AaQBjAG8AbgBzRm9udCBnZW5lcmF0ZWQgYnkgSWNvTW9vbi4ARgBvAG4AdAAgAGcAZQBuAGUAcgBhAHQAZQBkACAAYgB5ACAASQBjAG8ATQBvAG8AbgAuAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==) format("truetype"); }',i=" [data-anchorjs-icon]::after { content: attr(data-anchorjs-icon); }";e.className="anchorjs",e.appendChild(document.createTextNode("")),A=document.head.querySelector('[rel="stylesheet"], style'),void 0===A?document.head.appendChild(e):document.head.insertBefore(e,A),e.sheet.insertRule(t,e.sheet.cssRules.length),e.sheet.insertRule(n,e.sheet.cssRules.length),e.sheet.insertRule(i,e.sheet.cssRules.length),e.sheet.insertRule(o,e.sheet.cssRules.length)}}this.options=A||{},this.elements=[],e(this.options),this.isTouchDevice=function(){return!!("ontouchstart"in window||window.DocumentTouch&&document instanceof DocumentTouch)},this.add=function(A){var o,i,s,a,r,c,l,h,g,u,B,Q,f=[];if(e(this.options),Q=this.options.visible,"touch"===Q&&(Q=this.isTouchDevice()?"always":"hover"),A||(A="h1, h2, h3, h4, h5, h6"),o=t(A),0===o.length)return!1;for(n(),i=document.querySelectorAll("[id]"),s=[].map.call(i,function(A){return A.id}),r=0;r-1,t=(" "+A.lastChild.className+" ").indexOf(" anchorjs-link ")>-1;return e||t}}var anchors=new AnchorJS; 7 | -------------------------------------------------------------------------------- /docs/assets/js/vendor/clipboard.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * clipboard.js v1.5.9 3 | * https://zenorocha.github.io/clipboard.js 4 | * 5 | * Licensed MIT © Zeno Rocha 6 | */ 7 | !function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var e;e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,e.Clipboard=t()}}(function(){var t,e,n;return function t(e,n,o){function r(c,s){if(!n[c]){if(!e[c]){var a="function"==typeof require&&require;if(!s&&a)return a(c,!0);if(i)return i(c,!0);var l=new Error("Cannot find module '"+c+"'");throw l.code="MODULE_NOT_FOUND",l}var u=n[c]={exports:{}};e[c][0].call(u.exports,function(t){var n=e[c][1][t];return r(n?n:t)},u,u.exports,t,e,n,o)}return n[c].exports}for(var i="function"==typeof require&&require,c=0;co;o++)n[o].fn.apply(n[o].ctx,e);return this},off:function(t,e){var n=this.e||(this.e={}),o=n[t],r=[];if(o&&e)for(var i=0,c=o.length;c>i;i++)o[i].fn!==e&&o[i].fn._!==e&&r.push(o[i]);return r.length?n[t]=r:delete n[t],this}},e.exports=o},{}],8:[function(e,n,o){!function(r,i){if("function"==typeof t&&t.amd)t(["module","select"],i);else if("undefined"!=typeof o)i(n,e("select"));else{var c={exports:{}};i(c,r.select),r.clipboardAction=c.exports}}(this,function(t,e){"use strict";function n(t){return t&&t.__esModule?t:{"default":t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var r=n(e),i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol?"symbol":typeof t},c=function(){function t(t,e){for(var n=0;n=0}this.matches=function(string,crit){return"string"!=typeof string?!1:(string=string.trim(),matchesString(string,crit))}}module.exports=new LiteralSearchStrategy},{}],6:[function(require,module,exports){"use strict";function setOptions(_options){options.pattern=_options.pattern||options.pattern,options.template=_options.template||options.template,"function"==typeof _options.middleware&&(options.middleware=_options.middleware)}function compile(data){return options.template.replace(options.pattern,function(match,prop){var value=options.middleware(prop,data[prop],options.template);return void 0!==value?value:data[prop]||match})}module.exports={compile:compile,setOptions:setOptions};var options={};options.pattern=/\{(.*?)\}/g,options.template="",options.middleware=function(){}},{}],7:[function(require,module,exports){!function(window,document,undefined){"use strict";function initWithJSON(json){repository.put(json),registerInput()}function initWithURL(url){jsonLoader.load(url,function(err,json){err&&throwError("failed to get JSON ("+url+")"),initWithJSON(json)})}function emptyResultsContainer(){options.resultsContainer.innerHTML=""}function appendToResultsContainer(text){options.resultsContainer.innerHTML+=text}function registerInput(){options.searchInput.addEventListener("keyup",function(e){var key=e.which,query=e.target.value;isWhitelistedKey(key)&&isValidQuery(query)&&(emptyResultsContainer(),render(repository.search(query)))})}function render(results){if(0===results.length)return appendToResultsContainer(options.noResultsText);for(var i=0;i0}function isWhitelistedKey(key){return-1===[13,16,20,37,38,39,40,91].indexOf(key)}function throwError(message){throw new Error("SimpleJekyllSearch --- "+message)}var options={searchInput:null,resultsContainer:null,json:[],searchResultTemplate:'
  • {title}
  • ',templateMiddleware:function(){},noResultsText:"No results found",limit:10,fuzzy:!1,exclude:[]},requiredOptions=["searchInput","resultsContainer","json"],templater=require("./Templater"),repository=require("./Repository"),jsonLoader=require("./JSONLoader"),optionsValidator=require("./OptionsValidator")({required:requiredOptions}),utils=require("./utils");window.SimpleJekyllSearch=function(_options){var errors=optionsValidator.validate(_options);errors.length>0&&throwError("You must specify the following required options: "+requiredOptions),options=utils.merge(options,_options),templater.setOptions({template:options.searchResultTemplate,middleware:options.templateMiddleware}),repository.setOptions({fuzzy:options.fuzzy,limit:options.limit}),utils.isJSON(options.json)?initWithJSON(options.json):initWithURL(options.json)},window.SimpleJekyllSearch.init=window.SimpleJekyllSearch}(window,document)},{"./JSONLoader":1,"./OptionsValidator":2,"./Repository":3,"./Templater":6,"./utils":8}],8:[function(require,module,exports){"use strict";function merge(defaultParams,mergeParams){var mergedOptions={};for(var option in defaultParams)mergedOptions[option]=defaultParams[option],void 0!==mergeParams[option]&&(mergedOptions[option]=mergeParams[option]);return mergedOptions}function isJSON(json){try{return json instanceof Object&&JSON.parse(JSON.stringify(json))?!0:!1}catch(e){return!1}}module.exports={merge:merge,isJSON:isJSON}},{}]},{},[7]); -------------------------------------------------------------------------------- /docs/assets/js/vendor/tether.min.js: -------------------------------------------------------------------------------- 1 | !function(t,e){"function"==typeof define&&define.amd?define(e):"object"==typeof exports?module.exports=e(require,exports,module):t.Tether=e()}(this,function(t,e,o){"use strict";function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function n(t){var e=getComputedStyle(t)||{},o=e.position;if("fixed"===o)return t;for(var i=t;i=i.parentNode;){var n=void 0;try{n=getComputedStyle(i)}catch(r){}if("undefined"==typeof n||null===n)return i;var s=n,a=s.overflow,f=s.overflowX,h=s.overflowY;if(/(auto|scroll)/.test(a+h+f)&&("absolute"!==o||["relative","absolute","fixed"].indexOf(n.position)>=0))return i}return document.body}function r(t){var e=void 0;t===document?(e=document,t=document.documentElement):e=t.ownerDocument;var o=e.documentElement,i={},n=t.getBoundingClientRect();for(var r in n)i[r]=n[r];var s=x(e);return i.top-=s.top,i.left-=s.left,"undefined"==typeof i.width&&(i.width=document.body.scrollWidth-i.left-i.right),"undefined"==typeof i.height&&(i.height=document.body.scrollHeight-i.top-i.bottom),i.top=i.top-o.clientTop,i.left=i.left-o.clientLeft,i.right=e.body.clientWidth-i.width-i.left,i.bottom=e.body.clientHeight-i.height-i.top,i}function s(t){return t.offsetParent||document.documentElement}function a(){var t=document.createElement("div");t.style.width="100%",t.style.height="200px";var e=document.createElement("div");f(e.style,{position:"absolute",top:0,left:0,pointerEvents:"none",visibility:"hidden",width:"200px",height:"150px",overflow:"hidden"}),e.appendChild(t),document.body.appendChild(e);var o=t.offsetWidth;e.style.overflow="scroll";var i=t.offsetWidth;o===i&&(i=e.clientWidth),document.body.removeChild(e);var n=o-i;return{width:n,height:n}}function f(){var t=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],e=[];return Array.prototype.push.apply(e,arguments),e.slice(1).forEach(function(e){if(e)for(var o in e)({}).hasOwnProperty.call(e,o)&&(t[o]=e[o])}),t}function h(t,e){if("undefined"!=typeof t.classList)e.split(" ").forEach(function(e){e.trim()&&t.classList.remove(e)});else{var o=new RegExp("(^| )"+e.split(" ").join("|")+"( |$)","gi"),i=u(t).replace(o," ");p(t,i)}}function l(t,e){if("undefined"!=typeof t.classList)e.split(" ").forEach(function(e){e.trim()&&t.classList.add(e)});else{h(t,e);var o=u(t)+(" "+e);p(t,o)}}function d(t,e){if("undefined"!=typeof t.classList)return t.classList.contains(e);var o=u(t);return new RegExp("(^| )"+e+"( |$)","gi").test(o)}function u(t){return t.className instanceof SVGAnimatedString?t.className.baseVal:t.className}function p(t,e){t.setAttribute("class",e)}function c(t,e,o){o.forEach(function(o){-1===e.indexOf(o)&&d(t,o)&&h(t,o)}),e.forEach(function(e){d(t,e)||l(t,e)})}function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function g(t,e){var o=arguments.length<=2||void 0===arguments[2]?1:arguments[2];return t+o>=e&&e>=t-o}function m(){return"undefined"!=typeof performance&&"undefined"!=typeof performance.now?performance.now():+new Date}function v(){for(var t={top:0,left:0},e=arguments.length,o=Array(e),i=0;e>i;i++)o[i]=arguments[i];return o.forEach(function(e){var o=e.top,i=e.left;"string"==typeof o&&(o=parseFloat(o,10)),"string"==typeof i&&(i=parseFloat(i,10)),t.top+=o,t.left+=i}),t}function y(t,e){return"string"==typeof t.left&&-1!==t.left.indexOf("%")&&(t.left=parseFloat(t.left,10)/100*e.width),"string"==typeof t.top&&-1!==t.top.indexOf("%")&&(t.top=parseFloat(t.top,10)/100*e.height),t}function b(t,e){return"scrollParent"===e?e=t.scrollParent:"window"===e&&(e=[pageXOffset,pageYOffset,innerWidth+pageXOffset,innerHeight+pageYOffset]),e===document&&(e=e.documentElement),"undefined"!=typeof e.nodeType&&!function(){var t=r(e),o=t,i=getComputedStyle(e);e=[o.left,o.top,t.width+o.left,t.height+o.top],U.forEach(function(t,o){t=t[0].toUpperCase()+t.substr(1),"Top"===t||"Left"===t?e[o]+=parseFloat(i["border"+t+"Width"]):e[o]-=parseFloat(i["border"+t+"Width"])})}(),e}var w=function(){function t(t,e){for(var o=0;o1?o-1:0),n=1;o>n;n++)i[n-1]=arguments[n];for(;e16?(e=Math.min(e-16,250),void(o=setTimeout(n,250))):void("undefined"!=typeof t&&m()-t<10||("undefined"!=typeof o&&(clearTimeout(o),o=null),t=m(),_(),e=m()-t))};"undefined"!=typeof window&&["resize","scroll","touchmove"].forEach(function(t){window.addEventListener(t,i)})}();var z={center:"center",left:"right",right:"left"},F={middle:"middle",top:"bottom",bottom:"top"},L={top:0,left:0,middle:"50%",center:"50%",bottom:"100%",right:"100%"},Y=function(t,e){var o=t.left,i=t.top;return"auto"===o&&(o=z[e.left]),"auto"===i&&(i=F[e.top]),{left:o,top:i}},H=function(t){var e=t.left,o=t.top;return"undefined"!=typeof L[t.left]&&(e=L[t.left]),"undefined"!=typeof L[t.top]&&(o=L[t.top]),{left:e,top:o}},X=function(t){var e=t.split(" "),o=M(e,2),i=o[0],n=o[1];return{top:i,left:n}},j=X,N=function(){function t(e){var o=this;i(this,t),this.position=this.position.bind(this),B.push(this),this.history=[],this.setOptions(e,!1),C.modules.forEach(function(t){"undefined"!=typeof t.initialize&&t.initialize.call(o)}),this.position()}return w(t,[{key:"getClass",value:function(){var t=arguments.length<=0||void 0===arguments[0]?"":arguments[0],e=this.options.classes;return"undefined"!=typeof e&&e[t]?this.options.classes[t]:this.options.classPrefix?this.options.classPrefix+"-"+t:t}},{key:"setOptions",value:function(t){var e=this,o=arguments.length<=1||void 0===arguments[1]?!0:arguments[1],i={offset:"0 0",targetOffset:"0 0",targetAttachment:"auto auto",classPrefix:"tether"};this.options=f(i,t);var r=this.options,s=r.element,a=r.target,h=r.targetModifier;if(this.element=s,this.target=a,this.targetModifier=h,"viewport"===this.target?(this.target=document.body,this.targetModifier="visible"):"scroll-handle"===this.target&&(this.target=document.body,this.targetModifier="scroll-handle"),["element","target"].forEach(function(t){if("undefined"==typeof e[t])throw new Error("Tether Error: Both element and target must be defined");"undefined"!=typeof e[t].jquery?e[t]=e[t][0]:"string"==typeof e[t]&&(e[t]=document.querySelector(e[t]))}),l(this.element,this.getClass("element")),this.options.addTargetClasses!==!1&&l(this.target,this.getClass("target")),!this.options.attachment)throw new Error("Tether Error: You must provide an attachment");this.targetAttachment=j(this.options.targetAttachment),this.attachment=j(this.options.attachment),this.offset=X(this.options.offset),this.targetOffset=X(this.options.targetOffset),"undefined"!=typeof this.scrollParent&&this.disable(),"scroll-handle"===this.targetModifier?this.scrollParent=this.target:this.scrollParent=n(this.target),this.options.enabled!==!1&&this.enable(o)}},{key:"getTargetBounds",value:function(){if("undefined"==typeof this.targetModifier)return r(this.target);if("visible"===this.targetModifier){if(this.target===document.body)return{top:pageYOffset,left:pageXOffset,height:innerHeight,width:innerWidth};var t=r(this.target),e={height:t.height,width:t.width,top:t.top,left:t.left};return e.height=Math.min(e.height,t.height-(pageYOffset-t.top)),e.height=Math.min(e.height,t.height-(t.top+t.height-(pageYOffset+innerHeight))),e.height=Math.min(innerHeight,e.height),e.height-=2,e.width=Math.min(e.width,t.width-(pageXOffset-t.left)),e.width=Math.min(e.width,t.width-(t.left+t.width-(pageXOffset+innerWidth))),e.width=Math.min(innerWidth,e.width),e.width-=2,e.topo.clientWidth||[i.overflow,i.overflowX].indexOf("scroll")>=0||this.target!==document.body,s=0;n&&(s=15);var a=t.height-parseFloat(i.borderTopWidth)-parseFloat(i.borderBottomWidth)-s,e={width:15,height:.975*a*(a/o.scrollHeight),left:t.left+t.width-parseFloat(i.borderLeftWidth)-15},f=0;408>a&&this.target===document.body&&(f=-11e-5*Math.pow(a,2)-.00727*a+22.58),this.target!==document.body&&(e.height=Math.max(e.height,24));var h=this.target.scrollTop/(o.scrollHeight-a);return e.top=h*(a-e.height-f)+t.top+parseFloat(i.borderTopWidth),this.target===document.body&&(e.height=Math.max(e.height,24)),e}}},{key:"clearCache",value:function(){this._cache={}}},{key:"cache",value:function(t,e){return"undefined"==typeof this._cache&&(this._cache={}),"undefined"==typeof this._cache[t]&&(this._cache[t]=e.call(this)),this._cache[t]}},{key:"enable",value:function(){var t=arguments.length<=0||void 0===arguments[0]?!0:arguments[0];this.options.addTargetClasses!==!1&&l(this.target,this.getClass("enabled")),l(this.element,this.getClass("enabled")),this.enabled=!0,this.scrollParent!==document&&this.scrollParent.addEventListener("scroll",this.position),t&&this.position()}},{key:"disable",value:function(){h(this.target,this.getClass("enabled")),h(this.element,this.getClass("enabled")),this.enabled=!1,"undefined"!=typeof this.scrollParent&&this.scrollParent.removeEventListener("scroll",this.position)}},{key:"destroy",value:function(){var t=this;this.disable(),B.forEach(function(e,o){return e===t?void B.splice(o,1):void 0})}},{key:"updateAttachClasses",value:function(t,e){var o=this;t=t||this.attachment,e=e||this.targetAttachment;var i=["left","top","bottom","right","middle","center"];"undefined"!=typeof this._addAttachClasses&&this._addAttachClasses.length&&this._addAttachClasses.splice(0,this._addAttachClasses.length),"undefined"==typeof this._addAttachClasses&&(this._addAttachClasses=[]);var n=this._addAttachClasses;t.top&&n.push(this.getClass("element-attached")+"-"+t.top),t.left&&n.push(this.getClass("element-attached")+"-"+t.left),e.top&&n.push(this.getClass("target-attached")+"-"+e.top),e.left&&n.push(this.getClass("target-attached")+"-"+e.left);var r=[];i.forEach(function(t){r.push(o.getClass("element-attached")+"-"+t),r.push(o.getClass("target-attached")+"-"+t)}),T(function(){"undefined"!=typeof o._addAttachClasses&&(c(o.element,o._addAttachClasses,r),o.options.addTargetClasses!==!1&&c(o.target,o._addAttachClasses,r),delete o._addAttachClasses)})}},{key:"position",value:function(){var t=this,e=arguments.length<=0||void 0===arguments[0]?!0:arguments[0];if(this.enabled){this.clearCache();var o=Y(this.targetAttachment,this.attachment);this.updateAttachClasses(this.attachment,o);var i=this.cache("element-bounds",function(){return r(t.element)}),n=i.width,f=i.height;if(0===n&&0===f&&"undefined"!=typeof this.lastSize){var h=this.lastSize;n=h.width,f=h.height}else this.lastSize={width:n,height:f};var l=this.cache("target-bounds",function(){return t.getTargetBounds()}),d=l,u=y(H(this.attachment),{width:n,height:f}),p=y(H(o),d),c=y(this.offset,{width:n,height:f}),g=y(this.targetOffset,d);u=v(u,c),p=v(p,g);for(var m=l.left+p.left-u.left,b=l.top+p.top-u.top,w=0;wwindow.innerWidth&&(A=this.cache("scrollbar-size",a),x.viewport.bottom-=A.height),document.body.scrollHeight>window.innerHeight&&(A=this.cache("scrollbar-size",a),x.viewport.right-=A.width),(-1===["","static"].indexOf(document.body.style.position)||-1===["","static"].indexOf(document.body.parentElement.style.position))&&(x.page.bottom=document.body.scrollHeight-b-f,x.page.right=document.body.scrollWidth-m-n),"undefined"!=typeof this.options.optimizations&&this.options.optimizations.moveElement!==!1&&"undefined"==typeof this.targetModifier&&!function(){var e=t.cache("target-offsetparent",function(){return s(t.target)}),o=t.cache("target-offsetparent-bounds",function(){return r(e)}),i=getComputedStyle(e),n=o,a={};if(["Top","Left","Bottom","Right"].forEach(function(t){a[t.toLowerCase()]=parseFloat(i["border"+t+"Width"])}),o.right=document.body.scrollWidth-o.left-n.width+a.right,o.bottom=document.body.scrollHeight-o.top-n.height+a.bottom,x.page.top>=o.top+a.top&&x.page.bottom>=o.bottom&&x.page.left>=o.left+a.left&&x.page.right>=o.right){var f=e.scrollTop,h=e.scrollLeft;x.offset={top:x.page.top-o.top+f-a.top,left:x.page.left-o.left+h-a.left}}}(),this.move(x),this.history.unshift(x),this.history.length>3&&this.history.pop(),e&&S(),!0}}},{key:"move",value:function(t){var e=this;if("undefined"!=typeof this.element.parentNode){var o={};for(var i in t){o[i]={};for(var n in t[i]){for(var r=!1,a=0;a=0&&(b=parseFloat(b),y=parseFloat(y)),b!==y&&(v=!0,m[n]=y)}v&&T(function(){f(e.element.style,m)})}}}]),t}();N.modules=[],C.position=_;var R=f(N,C),M=function(){function t(t,e){var o=[],i=!0,n=!1,r=void 0;try{for(var s,a=t[Symbol.iterator]();!(i=(s=a.next()).done)&&(o.push(s.value),!e||o.length!==e);i=!0);}catch(f){n=!0,r=f}finally{try{!i&&a["return"]&&a["return"]()}finally{if(n)throw r}}return o}return function(e,o){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,o);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),P=C.Utils,r=P.getBounds,f=P.extend,c=P.updateClasses,T=P.defer,U=["left","top","right","bottom"];C.modules.push({position:function(t){var e=this,o=t.top,i=t.left,n=t.targetAttachment;if(!this.options.constraints)return!0;var s=this.cache("element-bounds",function(){return r(e.element)}),a=s.height,h=s.width;if(0===h&&0===a&&"undefined"!=typeof this.lastSize){var l=this.lastSize;h=l.width,a=l.height}var d=this.cache("target-bounds",function(){return e.getTargetBounds()}),u=d.height,p=d.width,g=[this.getClass("pinned"),this.getClass("out-of-bounds")];this.options.constraints.forEach(function(t){var e=t.outOfBoundsClass,o=t.pinnedClass;e&&g.push(e),o&&g.push(o)}),g.forEach(function(t){["left","top","right","bottom"].forEach(function(e){g.push(t+"-"+e)})});var m=[],v=f({},n),y=f({},this.attachment);return this.options.constraints.forEach(function(t){var r=t.to,s=t.attachment,f=t.pin;"undefined"==typeof s&&(s="");var l=void 0,d=void 0;if(s.indexOf(" ")>=0){var c=s.split(" "),g=M(c,2);d=g[0],l=g[1]}else l=d=s;var w=b(e,r);("target"===d||"both"===d)&&(ow[3]&&"bottom"===v.top&&(o-=u,v.top="top")),"together"===d&&(ow[3]&&"bottom"===v.top&&("top"===y.top?(o-=u,v.top="top",o-=a,y.top="bottom"):"bottom"===y.top&&(o-=u,v.top="top",o+=a,y.top="top")),"middle"===v.top&&(o+a>w[3]&&"top"===y.top?(o-=a,y.top="bottom"):ow[2]&&"right"===v.left&&(i-=p,v.left="left")),"together"===l&&(iw[2]&&"right"===v.left?"left"===y.left?(i-=p,v.left="left",i-=h,y.left="right"):"right"===y.left&&(i-=p,v.left="left",i+=h,y.left="left"):"center"===v.left&&(i+h>w[2]&&"left"===y.left?(i-=h,y.left="right"):iw[3]&&"top"===y.top&&(o-=a,y.top="bottom")),("element"===l||"both"===l)&&(iw[2]&&("left"===y.left?(i-=h,y.left="right"):"center"===y.left&&(i-=h/2,y.left="right"))),"string"==typeof f?f=f.split(",").map(function(t){return t.trim()}):f===!0&&(f=["top","left","right","bottom"]),f=f||[];var C=[],O=[];o=0?(o=w[1],C.push("top")):O.push("top")),o+a>w[3]&&(f.indexOf("bottom")>=0?(o=w[3]-a,C.push("bottom")):O.push("bottom")),i=0?(i=w[0],C.push("left")):O.push("left")),i+h>w[2]&&(f.indexOf("right")>=0?(i=w[2]-h,C.push("right")):O.push("right")),C.length&&!function(){var t=void 0;t="undefined"!=typeof e.options.pinnedClass?e.options.pinnedClass:e.getClass("pinned"),m.push(t),C.forEach(function(e){m.push(t+"-"+e)})}(),O.length&&!function(){var t=void 0;t="undefined"!=typeof e.options.outOfBoundsClass?e.options.outOfBoundsClass:e.getClass("out-of-bounds"),m.push(t),O.forEach(function(e){m.push(t+"-"+e)})}(),(C.indexOf("left")>=0||C.indexOf("right")>=0)&&(y.left=v.left=!1),(C.indexOf("top")>=0||C.indexOf("bottom")>=0)&&(y.top=v.top=!1),(v.top!==n.top||v.left!==n.left||y.top!==e.attachment.top||y.left!==e.attachment.left)&&e.updateAttachClasses(y,v)}),T(function(){e.options.addTargetClasses!==!1&&c(e.target,m,g),c(e.element,m,g)}),{top:o,left:i}}});var P=C.Utils,r=P.getBounds,c=P.updateClasses,T=P.defer;C.modules.push({position:function(t){var e=this,o=t.top,i=t.left,n=this.cache("element-bounds",function(){return r(e.element)}),s=n.height,a=n.width,f=this.getTargetBounds(),h=o+s,l=i+a,d=[];o<=f.bottom&&h>=f.top&&["left","right"].forEach(function(t){var e=f[t];(e===i||e===l)&&d.push(t)}),i<=f.right&&l>=f.left&&["top","bottom"].forEach(function(t){var e=f[t];(e===o||e===h)&&d.push(t)});var u=[],p=[],g=["left","top","right","bottom"];return u.push(this.getClass("abutted")),g.forEach(function(t){u.push(e.getClass("abutted")+"-"+t)}),d.length&&p.push(this.getClass("abutted")),d.forEach(function(t){p.push(e.getClass("abutted")+"-"+t)}),T(function(){e.options.addTargetClasses!==!1&&c(e.target,p,u),c(e.element,p,u)}),!0}});var M=function(){function t(t,e){var o=[],i=!0,n=!1,r=void 0;try{for(var s,a=t[Symbol.iterator]();!(i=(s=a.next()).done)&&(o.push(s.value),!e||o.length!==e);i=!0);}catch(f){n=!0,r=f}finally{try{!i&&a["return"]&&a["return"]()}finally{if(n)throw r}}return o}return function(e,o){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,o);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();return C.modules.push({position:function(t){var e=t.top,o=t.left;if(this.options.shift){var i=this.options.shift;"function"==typeof this.options.shift&&(i=this.options.shift.call(this,{top:e,left:o}));var n=void 0,r=void 0;if("string"==typeof i){i=i.split(" "),i[1]=i[1]||i[0];var s=i,a=M(s,2);n=a[0],r=a[1],n=parseFloat(n,10),r=parseFloat(r,10)}else n=i.top,r=i.left;return e+=n,o+=r,{top:e,left:o}}}}),R}); -------------------------------------------------------------------------------- /docs/assets/scss/_bragit.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Bragit guidelines 3 | // url, https://github.com/websemantics/bragit 4 | // 5 | .bd-masthead { 6 | .ui { 7 | &.button { 8 | color: $tm-brand; 9 | background-color: transparent; 10 | box-shadow: 0 0 0 1px $tm-brand inset; 11 | } 12 | &.labeled.button>.label { 13 | color: $tm-brand; 14 | background-color: transparent; 15 | border-color: $tm-brand; 16 | } 17 | &.button:focus, 18 | &.button:hover, 19 | &.labeled.button>.label:focus, 20 | &.labeled.button>.label:hover { 21 | color: #fff; 22 | background-color: $tm-brand; 23 | } 24 | } 25 | } 26 | .ui.labeled { 27 | .ui.button { 28 | .star.icon { 29 | color: $tm-star-yellow; 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /docs/assets/scss/_buttons.scss: -------------------------------------------------------------------------------- 1 | // Buttons 2 | // 3 | // Custom buttons for the docs. 4 | 5 | .btn-bs { 6 | font-weight: 500; 7 | color: $tm-brand-light; 8 | border-color: $tm-brand-light; 9 | 10 | &:hover, 11 | &:focus, 12 | &:active { 13 | color: #fff; 14 | background-color: $tm-brand; 15 | border-color: $tm-brand; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /docs/assets/scss/_content.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Generic styles 3 | // 4 | 5 | a { 6 | color: darken($tm-brand, 15); 7 | text-decoration: none; 8 | 9 | &:hover, 10 | &:active { 11 | color: $tm-brand; 12 | text-decoration: underline; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /docs/assets/scss/_featurettes.scss: -------------------------------------------------------------------------------- 1 | .bd-featurette { 2 | padding-top: 3rem; 3 | padding-bottom: 3rem; 4 | font-size: 1.1rem; 5 | line-height: 1.5; 6 | color: #555; 7 | text-align: center; 8 | background-color: #fff; 9 | border-top: 1px solid #eee; 10 | 11 | .highlight { 12 | padding: 1rem; 13 | text-align: left; 14 | background-color: #f7f7f9; 15 | } 16 | 17 | .lead { 18 | margin-right: auto; 19 | margin-bottom: 2rem; 20 | margin-left: auto; 21 | font-size: 1rem; 22 | text-align: center; 23 | } 24 | 25 | @include media-breakpoint-up(sm) { 26 | text-align: left; 27 | } 28 | 29 | @include media-breakpoint-up(md) { 30 | .col-sm-6:first-child { 31 | padding-right: ($grid-gutter-width * 1.5); 32 | }; 33 | .col-sm-6:last-child { 34 | padding-left: ($grid-gutter-width * 1.5); 35 | } 36 | } 37 | } 38 | 39 | .bd-featurette-title { 40 | margin-bottom: .5rem; 41 | font-size: 2rem; 42 | font-weight: normal; 43 | color: #333; 44 | text-align: center; 45 | } 46 | 47 | .half-rule { 48 | width: 6rem; 49 | margin: 2.5rem auto; 50 | 51 | @include media-breakpoint-up(sm) { 52 | margin-right: 0; 53 | margin-left: 0; 54 | } 55 | } 56 | .bd-featurette h4 { 57 | margin-top: 1rem; 58 | margin-bottom: .5rem; 59 | font-weight: normal; 60 | color: #333; 61 | } 62 | .bd-featurette-icon { 63 | display: block; 64 | margin-bottom: 1.25rem; 65 | font-size: 10em; 66 | color: $tm-brand-light; 67 | } 68 | 69 | @media (min-width: 480px) { 70 | .bd-featurette .img-fluid { 71 | margin-top: 2rem; 72 | } 73 | } 74 | @media (min-width: 768px) { 75 | .bd-featurette { 76 | padding-top: 6rem; 77 | padding-bottom: 6rem; 78 | } 79 | .bd-featurette-title { 80 | font-size: 2.5rem; 81 | 82 | + .lead { 83 | font-size: 1.5rem; 84 | } 85 | } 86 | .bd-featurette .lead { 87 | max-width: 80%; 88 | } 89 | .bd-featurette .img-fluid { 90 | margin-top: 0; 91 | } 92 | } 93 | -------------------------------------------------------------------------------- /docs/assets/scss/_footer.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Footer 3 | // 4 | 5 | .bd-footer { 6 | padding: 4rem 0; 7 | margin-top: 4rem; 8 | font-size: 85%; 9 | text-align: center; 10 | background-color: #f7f7f7; 11 | 12 | a { 13 | font-weight: 500; 14 | color: $gray; 15 | 16 | &:hover { 17 | color: $link-color; 18 | } 19 | } 20 | 21 | p { 22 | margin-bottom: 0; 23 | } 24 | 25 | @include media-breakpoint-up(sm) { 26 | text-align: left; 27 | } 28 | } 29 | 30 | .bd-footer-links { 31 | padding-left: 0; 32 | margin-bottom: 1rem; 33 | 34 | li { 35 | display: inline-block; 36 | 37 | + li { 38 | margin-left: 1rem; 39 | } 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /docs/assets/scss/_masthead.scss: -------------------------------------------------------------------------------- 1 | // scss-lint:disable ImportantRule 2 | 3 | .bd-masthead { 4 | position: relative; 5 | z-index: 3; 6 | padding: 2rem $grid-gutter-width / 2; 7 | color: #fff; 8 | text-align: left; 9 | background-color: #000; 10 | background-image: url("../img/ant-strap.png"); 11 | background-position: 50% 50%; 12 | border-bottom: 1px solid #ddd; 13 | box-shadow: none; 14 | 15 | @include transition(background 6s cubic-bezier(.680, -.550, .265, 1.4) 0s, opacity 6s cubic-bezier(.680, -.550, .265, 1.4) 0s); 16 | &::after { 17 | position: absolute; 18 | top: 0; 19 | left: 0; 20 | z-index: -1; 21 | width: 100%; 22 | height: 100%; 23 | content: ""; 24 | background-size: cover; 25 | opacity: .45; 26 | @include transition(background 6s cubic-bezier(.680, -.550, .265, 1.4) 0s, opacity 6s cubic-bezier(.680, -.550, .265, 1.4) 0s); 27 | } 28 | 29 | .brand-item { 30 | padding-bottom: 15px; 31 | } 32 | 33 | h1 { 34 | font-weight: 300; 35 | line-height: 1; 36 | } 37 | 38 | .lead { 39 | margin-bottom: 2rem; 40 | font-size: 1.25rem; 41 | color: $gray-lighter; 42 | } 43 | 44 | .carbonad { 45 | margin-bottom: -2rem !important; 46 | } 47 | 48 | @include media-breakpoint-up(sm) { 49 | padding-top: 12rem; 50 | padding-bottom: 2rem; 51 | 52 | .btn { 53 | width: auto; 54 | } 55 | 56 | .carbonad { 57 | margin-bottom: 0 !important; 58 | } 59 | } 60 | 61 | @include media-breakpoint-up(md) { 62 | padding-bottom: 10rem; 63 | 64 | .bd-header { 65 | margin-bottom: 4rem; 66 | } 67 | 68 | h1 { 69 | font-size: 4rem; 70 | } 71 | 72 | .lead { 73 | font-size: 1.3rem; 74 | } 75 | 76 | .carbonad { 77 | margin-top: 3rem !important; 78 | } 79 | } 80 | 81 | @include media-breakpoint-up(lg) { 82 | .lead { 83 | width: 85%; 84 | font-size: 1.6rem; 85 | } 86 | } 87 | } 88 | -------------------------------------------------------------------------------- /docs/assets/scss/_nav.scss: -------------------------------------------------------------------------------- 1 | .navbar { 2 | position: fixed; 3 | z-index: 999; 4 | width: 100%; 5 | font-size: 18px; 6 | background: rgba(0, 0, 0, .25); 7 | border-bottom: 1px solid transparent; 8 | border-radius: 0; 9 | transition: border .5s cubic-bezier(.455, .03, .515, .955), background .5s cubic-bezier(.455, .03, .515, .955); 10 | } 11 | -------------------------------------------------------------------------------- /docs/assets/scss/docs.scss: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap Docs (http://getbootstrap.com) 3 | * Copyright 2011-2016 The Bootstrap Authors 4 | * Copyright 2011-2016 Twitter, Inc. 5 | * Copyright 2011-2016 Web Semantics, Inc. 6 | * Licensed under the Creative Commons Attribution 3.0 Unported License. For 7 | * details, see https://creativecommons.org/licenses/by/3.0/. 8 | */ 9 | 10 | 11 | /* 12 | 13 | 14 | COMPLETE MESS ... 15 | 16 | 17 | */ 18 | 19 | 20 | // Load variables and mixins 21 | @import "../../../scss/variables"; 22 | @import "../../../scss/mixins"; 23 | 24 | // Local docs variables 25 | // Flat colors: http://www.flatdesigncolors.com/ 26 | // Color calculator: http://razorjam.github.io/sasscolourfunctioncalculator/ 27 | 28 | // Local docs variables 29 | $tm-brand: #0ae; 30 | $tm-brand-light: lighten(desaturate(adjust-hue($tm-brand, 0.0130), 0.3554), 9.8039);; 31 | $tm-star-yellow: #F5CC7A; 32 | 33 | // Load docs components 34 | @import "buttons"; 35 | @import "masthead"; 36 | @import "featurettes"; 37 | @import "content"; 38 | @import "footer"; 39 | @import "nav"; 40 | @import "bragit"; 41 | -------------------------------------------------------------------------------- /docs/examples/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | title: Examples 4 | --- 5 | -------------------------------------------------------------------------------- /docs/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/websemantics/ant-strap/861bee88995e9d572f7e9ec84b2678e9d60dc72b/docs/favicon.ico -------------------------------------------------------------------------------- /docs/index.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | title: Ant Strap · An elegant CSS Framework built after Ant Design using Bootstrap 4. 4 | --- 5 | 6 |
    7 |
    8 |

    {{ site.name }}STRAP

    9 |

    {{ site.description }}

    10 | 11 | 12 |
    Stars
    13 |
    14 |
    15 | Github 16 |
    17 |
    18 |
    19 |
    20 |

    Credits

    21 |

    Ant Strap was built entirely on the great work done by the developers of Bootstrap and Ant Design, thank you.

    22 |
    23 |
    24 | -------------------------------------------------------------------------------- /js/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "root": true, 3 | "parser": "babel-eslint", 4 | "parserOptions": { 5 | "ecmaVersion": 7, 6 | "sourceType": "module" 7 | }, 8 | "env": { 9 | "browser": true, 10 | "es6": true, 11 | "jquery": true 12 | }, 13 | "rules": { 14 | 15 | // Possible Errors 16 | "array-callback-return": "error", 17 | "comma-dangle": ["error", "never"], 18 | "handle-callback-err": "error", 19 | "no-bitwise": "error", 20 | "no-cond-assign": "error", 21 | "no-console": "error", 22 | "no-constant-condition": "error", 23 | "no-control-regex": "error", 24 | "no-debugger": "error", 25 | "no-dupe-args": "error", 26 | "no-dupe-keys": "error", 27 | "no-duplicate-case": "error", 28 | "no-duplicate-imports": "error", 29 | "no-empty": "error", 30 | "no-empty-character-class": "error", 31 | "no-empty-function": "error", 32 | "no-empty-pattern": "error", 33 | "no-ex-assign": "error", 34 | "no-extra-boolean-cast": "error", 35 | "no-extra-label": "error", 36 | "no-extra-parens": "off", 37 | "no-extra-semi": "error", 38 | "no-func-assign": "error", 39 | "no-inner-declarations": "error", 40 | "no-invalid-regexp": "error", 41 | "no-irregular-whitespace": "error", 42 | "no-negated-in-lhs": "error", 43 | "no-obj-calls": "error", 44 | "no-regex-spaces": "error", 45 | "no-restricted-globals": ["error", "event"], 46 | "no-self-assign": "error", 47 | "no-sparse-arrays": "error", 48 | "no-unexpected-multiline": "error", 49 | "no-unmodified-loop-condition": "error", 50 | "no-unreachable": "error", 51 | "no-unused-labels": "error", 52 | "no-useless-escape": "error", 53 | "no-useless-rename": "error", 54 | "use-isnan": "error", 55 | "valid-jsdoc": "off", 56 | "valid-typeof": "error", 57 | 58 | //Best Practices 59 | "accessor-pairs": "error", 60 | "block-scoped-var": "error", 61 | "consistent-return": "error", 62 | "curly": "error", 63 | "default-case": "error", 64 | "dot-location": "off", 65 | "dot-notation": "off", 66 | "eqeqeq": "error", 67 | "guard-for-in": "error", 68 | "no-alert": "error", 69 | "no-caller": "error", 70 | "no-case-declarations": "error", 71 | "no-div-regex": "error", 72 | "no-else-return": "error", 73 | "no-eq-null": "error", 74 | "no-eval": "error", 75 | "no-extend-native": "error", 76 | "no-extra-bind": "error", 77 | "no-fallthrough": "error", 78 | "no-floating-decimal": "error", 79 | "no-implicit-coercion": "error", 80 | "no-implied-eval": "error", 81 | "no-invalid-this": "off", 82 | "no-iterator": "error", 83 | "no-labels": "error", 84 | "no-lone-blocks": "error", 85 | "no-loop-func": "error", 86 | "no-magic-numbers": ["error", {"ignore": [-1, 0, 1]}], 87 | "no-multi-spaces": "off", 88 | "no-multi-str": "error", 89 | "no-native-reassign": "error", 90 | "no-new": "error", 91 | "no-new-func": "off", 92 | "no-new-wrappers": "error", 93 | "no-octal": "error", 94 | "no-octal-escape": "error", 95 | "no-param-reassign": "off", 96 | "no-process-env": "error", 97 | "no-proto": "error", 98 | "no-redeclare": "error", 99 | "no-return-assign": "error", 100 | "no-script-url": "error", 101 | "no-self-compare": "error", 102 | "no-sequences": "error", 103 | "no-throw-literal": "error", 104 | "no-unused-expressions": "error", 105 | "no-useless-call": "error", 106 | "no-useless-concat": "error", 107 | "no-useless-constructor": "error", 108 | "no-void": "error", 109 | "no-warning-comments": "off", 110 | "no-with": "error", 111 | "radix": "error", 112 | "unicode-bom": ["error", "never"], 113 | "vars-on-top": "off", 114 | "wrap-iife": "error", 115 | "yoda": "error", 116 | 117 | // Variables 118 | "init-declarations": "off", 119 | "no-catch-shadow": "error", 120 | "no-delete-var": "error", 121 | "no-label-var": "error", 122 | "no-shadow": "off", 123 | "no-shadow-restricted-names": "error", 124 | "no-undef": "error", 125 | "no-undefined": "off", 126 | "no-undef-init": "error", 127 | "no-unused-vars": "error", 128 | "no-use-before-define": "off", 129 | 130 | // Stylistic 131 | "array-bracket-spacing": "error", 132 | "block-spacing": "error", 133 | "brace-style": "error", 134 | "camelcase": "error", 135 | "comma-spacing": "error", 136 | "comma-style": "error", 137 | "computed-property-spacing": "error", 138 | "consistent-this": "error", 139 | "eol-last": "error", 140 | "func-names": "off", 141 | "func-style": "off", 142 | "indent": ["error", 2, {"SwitchCase": 1}], 143 | "key-spacing": "off", 144 | "keyword-spacing": "error", 145 | "linebreak-style": "error", 146 | "lines-around-comment": "off", 147 | "max-statements-per-line": ["error", { "max": 1 }], 148 | "new-cap": "off", 149 | "newline-after-var": "off", 150 | "new-parens": "error", 151 | "no-array-constructor": "error", 152 | "no-continue": "off", 153 | "no-inline-comments": "off", 154 | "no-lonely-if": "error", 155 | "no-mixed-spaces-and-tabs": "error", 156 | "no-multiple-empty-lines": "error", 157 | "no-nested-ternary": "off", 158 | "no-new-object": "error", 159 | "no-spaced-func": "error", 160 | "no-ternary": "off", 161 | "no-trailing-spaces": "error", 162 | "no-underscore-dangle": "off", 163 | "no-unneeded-ternary": "error", 164 | "no-unsafe-finally": "error", 165 | "no-useless-computed-key": "error", 166 | "no-whitespace-before-property": "error", 167 | "object-curly-spacing": ["warn", "always"], 168 | "object-property-newline": "error", 169 | "one-var": "off", 170 | "operator-assignment": "error", 171 | "operator-linebreak": "off", 172 | "padded-blocks": "off", 173 | "quote-props": ["error", "as-needed"], 174 | "quotes": ["error", "single"], 175 | "semi": ["error", "never"], 176 | "semi-spacing": "error", 177 | "sort-vars": "error", 178 | "space-before-blocks": "error", 179 | "space-before-function-paren": "off", 180 | "spaced-comment": "error", 181 | "space-infix-ops": "error", 182 | "space-in-parens": "error", 183 | "space-unary-ops": "error", 184 | 185 | // es6 186 | "arrow-parens": "error", 187 | "arrow-spacing": "error", 188 | "constructor-super": "error", 189 | "generator-star-spacing": "error", 190 | "no-class-assign": "error", 191 | "no-const-assign": "error", 192 | "no-dupe-class-members": "error", 193 | "no-new-symbol": "error", 194 | "no-this-before-super": "error", 195 | "no-var": "error", 196 | "object-shorthand": "error", 197 | "prefer-arrow-callback": "error", 198 | "prefer-const": "off", 199 | "prefer-reflect": "off", 200 | "prefer-rest-params": "error", 201 | "prefer-spread": "error", 202 | "prefer-template": "error", 203 | "require-yield": "error" 204 | 205 | } 206 | } 207 | -------------------------------------------------------------------------------- /js/.jscsrc: -------------------------------------------------------------------------------- 1 | { 2 | "disallowEmptyBlocks": true, 3 | "disallowKeywords": ["with"], 4 | "disallowMixedSpacesAndTabs": true, 5 | "disallowMultipleLineStrings": true, 6 | "disallowMultipleVarDecl": true, 7 | "disallowQuotedKeysInObjects": "allButReserved", 8 | "disallowSpaceAfterPrefixUnaryOperators": ["++", "--", "+", "-", "~", "!"], 9 | "disallowSpaceBeforeBinaryOperators": [","], 10 | "disallowSpaceBeforePostfixUnaryOperators": ["++", "--"], 11 | "disallowSpacesInFunctionDeclaration": { "beforeOpeningRoundBrace": true }, 12 | "disallowSpacesInNamedFunctionExpression": { "beforeOpeningRoundBrace": true }, 13 | "disallowSpacesInsideArrayBrackets": true, 14 | "disallowSpacesInsideParentheses": true, 15 | "disallowTrailingComma": true, 16 | "disallowTrailingWhitespace": true, 17 | "requireCamelCaseOrUpperCaseIdentifiers": true, 18 | "requireCapitalizedConstructors": true, 19 | "requireCommaBeforeLineBreak": true, 20 | "requireDollarBeforejQueryAssignment": true, 21 | "requireDotNotation": true, 22 | "requireLineFeedAtFileEnd": true, 23 | "requirePaddingNewLinesAfterUseStrict": true, 24 | "requirePaddingNewLinesBeforeExport": true, 25 | "requireSpaceAfterBinaryOperators": ["+", "-", "/", "*", "=", "==", "===", "!=", "!==", ">", "<", ">=", "<="], 26 | "requireSpaceAfterKeywords": ["if", "else", "for", "while", "do", "switch", "return", "try", "catch"], 27 | "requireSpaceAfterLineComment": true, 28 | "requireSpaceBeforeBinaryOperators": ["+", "-", "/", "*", "=", "==", "===", "!=", "!==", ">", "<", ">=", "<="], 29 | "requireSpaceBetweenArguments": true, 30 | "requireSpacesInAnonymousFunctionExpression": { "beforeOpeningCurlyBrace": true, "beforeOpeningRoundBrace": true, "allExcept": ["shorthand"] }, 31 | "requireSpacesInConditionalExpression": true, 32 | "requireSpacesInForStatement": true, 33 | "requireSpacesInFunctionDeclaration": { "beforeOpeningCurlyBrace": true }, 34 | "requireSpacesInFunctionExpression": { "beforeOpeningCurlyBrace": true }, 35 | "requireSpacesInNamedFunctionExpression": { "beforeOpeningCurlyBrace": true }, 36 | "requireSpacesInsideObjectBrackets": "allButNested", 37 | "validateAlignedFunctionParameters": true, 38 | "validateIndentation": 2, 39 | "validateLineBreaks": "LF", 40 | "validateNewlineAfterArrayElements": true, 41 | "validateQuoteMarks": "'" 42 | } 43 | -------------------------------------------------------------------------------- /js/src/custom.js: -------------------------------------------------------------------------------- 1 | /** 2 | * -------------------------------------------------------------------------- 3 | * Ant Strap (v1.0.0): custom.js 4 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 5 | * -------------------------------------------------------------------------- 6 | */ 7 | 8 | import Util from './util' 9 | 10 | const Custom = (($) => { 11 | 12 | 13 | /** 14 | * ------------------------------------------------------------------------ 15 | * Constants 16 | * ------------------------------------------------------------------------ 17 | */ 18 | 19 | const NAME = 'custom' 20 | const VERSION = '1.0.0' 21 | const DATA_KEY = 'bs.custom' 22 | const EVENT_KEY = `.${DATA_KEY}` 23 | const DATA_API_KEY = '.data-api' 24 | const JQUERY_NO_CONFLICT = $.fn[NAME] 25 | 26 | const ClassName = { 27 | ACTIVE: 'active', 28 | CUSTOM: 'ctm', 29 | FOCUS: 'focus' 30 | } 31 | 32 | const Selector = { 33 | DATA_TOGGLE_CARROT: '[data-action^="custom"]', 34 | DATA_TOGGLE: '[data-action="customss"]', 35 | INPUT: 'input', 36 | ACTIVE: '.active', 37 | CUSTOM: '.ctm' 38 | } 39 | 40 | const Event = { 41 | CLICK_DATA_API: `click${EVENT_KEY}${DATA_API_KEY}`, 42 | FOCUS_BLUR_DATA_API: `focus${EVENT_KEY}${DATA_API_KEY} ` + 43 | `blur${EVENT_KEY}${DATA_API_KEY}` 44 | } 45 | 46 | 47 | /** 48 | * ------------------------------------------------------------------------ 49 | * Class Definition 50 | * ------------------------------------------------------------------------ 51 | */ 52 | 53 | class Custom { 54 | 55 | constructor(element) { 56 | this._element = element 57 | } 58 | 59 | // getters 60 | 61 | static get VERSION() { 62 | return VERSION 63 | } 64 | 65 | // public 66 | 67 | action() { /* called on click */ 68 | let triggerChangeEvent = true 69 | let rootElement = $(this._element).closest( 70 | Selector.DATA_TOGGLE 71 | )[0] 72 | 73 | 74 | } 75 | 76 | // static 77 | 78 | static _jQueryInterface(config) { 79 | return this.each(function() { 80 | let data = $(this).data(DATA_KEY) 81 | 82 | if (!data) { 83 | data = new Custom(this) 84 | $(this).data(DATA_KEY, data) 85 | } 86 | 87 | if (config === 'action') { 88 | data[config]() 89 | } 90 | }) 91 | } 92 | 93 | } 94 | 95 | 96 | /** 97 | * ------------------------------------------------------------------------ 98 | * Data Api implementation 99 | * ------------------------------------------------------------------------ 100 | */ 101 | 102 | $(document) 103 | .on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE_CARROT, (event) => { 104 | event.preventDefault() 105 | 106 | let custom = event.target 107 | 108 | if (!$(custom).hasClass(ClassName.CUSTOM)) { 109 | custom = $(custom).closest(Selector.CUSTOM) 110 | } 111 | 112 | Custom._jQueryInterface.call($(custom), 'action') 113 | }) 114 | 115 | 116 | /** 117 | * ------------------------------------------------------------------------ 118 | * jQuery 119 | * ------------------------------------------------------------------------ 120 | */ 121 | 122 | $.fn[NAME] = Custom._jQueryInterface 123 | $.fn[NAME].Constructor = Custom 124 | $.fn[NAME].noConflict = function() { 125 | $.fn[NAME] = JQUERY_NO_CONFLICT 126 | return Custom._jQueryInterface 127 | } 128 | 129 | return Custom 130 | 131 | })(jQuery) 132 | 133 | export default Custom 134 | -------------------------------------------------------------------------------- /js/src/util.js: -------------------------------------------------------------------------------- 1 | /** 2 | * -------------------------------------------------------------------------- 3 | * Bootstrap (v4.0.0-alpha.3): util.js 4 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 5 | * -------------------------------------------------------------------------- 6 | */ 7 | 8 | const Util = (($) => { 9 | 10 | 11 | /** 12 | * ------------------------------------------------------------------------ 13 | * Private TransitionEnd Helpers 14 | * ------------------------------------------------------------------------ 15 | */ 16 | 17 | let transition = false 18 | 19 | const MAX_UID = 1000000 20 | 21 | const TransitionEndEvent = { 22 | WebkitTransition : 'webkitTransitionEnd', 23 | MozTransition : 'transitionend', 24 | OTransition : 'oTransitionEnd otransitionend', 25 | transition : 'transitionend' 26 | } 27 | 28 | // shoutout AngusCroll (https://goo.gl/pxwQGp) 29 | function toType(obj) { 30 | return ({}).toString.call(obj).match(/\s([a-zA-Z]+)/)[1].toLowerCase() 31 | } 32 | 33 | function isElement(obj) { 34 | return (obj[0] || obj).nodeType 35 | } 36 | 37 | function getSpecialTransitionEndEvent() { 38 | return { 39 | bindType: transition.end, 40 | delegateType: transition.end, 41 | handle(event) { 42 | if ($(event.target).is(this)) { 43 | return event.handleObj.handler.apply(this, arguments) // eslint-disable-line prefer-rest-params 44 | } 45 | return undefined 46 | } 47 | } 48 | } 49 | 50 | function transitionEndTest() { 51 | if (window.QUnit) { 52 | return false 53 | } 54 | 55 | let el = document.createElement('bootstrap') 56 | 57 | for (let name in TransitionEndEvent) { 58 | if (el.style[name] !== undefined) { 59 | return { end: TransitionEndEvent[name] } 60 | } 61 | } 62 | 63 | return false 64 | } 65 | 66 | function transitionEndEmulator(duration) { 67 | let called = false 68 | 69 | $(this).one(Util.TRANSITION_END, () => { 70 | called = true 71 | }) 72 | 73 | setTimeout(() => { 74 | if (!called) { 75 | Util.triggerTransitionEnd(this) 76 | } 77 | }, duration) 78 | 79 | return this 80 | } 81 | 82 | function setTransitionEndSupport() { 83 | transition = transitionEndTest() 84 | 85 | $.fn.emulateTransitionEnd = transitionEndEmulator 86 | 87 | if (Util.supportsTransitionEnd()) { 88 | $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent() 89 | } 90 | } 91 | 92 | 93 | /** 94 | * -------------------------------------------------------------------------- 95 | * Public Util Api 96 | * -------------------------------------------------------------------------- 97 | */ 98 | 99 | let Util = { 100 | 101 | TRANSITION_END: 'bsTransitionEnd', 102 | 103 | getUID(prefix) { 104 | do { 105 | /* eslint-disable no-bitwise */ 106 | prefix += ~~(Math.random() * MAX_UID) // "~~" acts like a faster Math.floor() here 107 | /* eslint-enable no-bitwise */ 108 | } while (document.getElementById(prefix)) 109 | return prefix 110 | }, 111 | 112 | getSelectorFromElement(element) { 113 | let selector = element.getAttribute('data-target') 114 | 115 | if (!selector) { 116 | selector = element.getAttribute('href') || '' 117 | selector = /^#[a-z]/i.test(selector) ? selector : null 118 | } 119 | 120 | return selector 121 | }, 122 | 123 | reflow(element) { 124 | new Function('bs', 'return bs')(element.offsetHeight) 125 | }, 126 | 127 | triggerTransitionEnd(element) { 128 | $(element).trigger(transition.end) 129 | }, 130 | 131 | supportsTransitionEnd() { 132 | return Boolean(transition) 133 | }, 134 | 135 | typeCheckConfig(componentName, config, configTypes) { 136 | for (let property in configTypes) { 137 | if (configTypes.hasOwnProperty(property)) { 138 | let expectedTypes = configTypes[property] 139 | let value = config[property] 140 | let valueType 141 | 142 | if (value && isElement(value)) { 143 | valueType = 'element' 144 | } else { 145 | valueType = toType(value) 146 | } 147 | 148 | if (!new RegExp(expectedTypes).test(valueType)) { 149 | throw new Error( 150 | `${componentName.toUpperCase()}: ` + 151 | `Option "${property}" provided type "${valueType}" ` + 152 | `but expected type "${expectedTypes}".`) 153 | } 154 | } 155 | } 156 | } 157 | } 158 | 159 | setTransitionEndSupport() 160 | 161 | return Util 162 | 163 | })(jQuery) 164 | 165 | export default Util 166 | -------------------------------------------------------------------------------- /js/tests/README.md: -------------------------------------------------------------------------------- 1 | ## How does Ant Strap's test suite work? 2 | 3 | Ant Strap uses [QUnit](http://api.qunitjs.com/), a powerful, easy-to-use JavaScript unit test framework. Each plugin has a file dedicated to its tests in `unit/.js`. 4 | 5 | * `unit/` contains the unit test files for each Ant Strap plugin. 6 | * `vendor/` contains third-party testing-related code (QUnit and jQuery). 7 | * `visual/` contains "visual" tests which are run interactively in real browsers and require manual verification by humans. 8 | 9 | To run the unit test suite via [PhantomJS](http://phantomjs.org/), run `grunt test-js`. 10 | 11 | To run the unit test suite via a real web browser, open `index.html` in the browser. 12 | 13 | 14 | ## How do I add a new unit test? 15 | 16 | 1. Locate and open the file dedicated to the plugin which you need to add tests to (`unit/.js`). 17 | 2. Review the [QUnit API Documentation](http://api.qunitjs.com/) and use the existing tests as references for how to structure your new tests. 18 | 3. Write the necessary unit test(s) for the new or revised functionality. 19 | 4. Run `grunt test-js` to see the results of your newly-added test(s). 20 | 21 | **Note:** Your new unit tests should fail before your changes are applied to the plugin, and should pass after your changes are applied to the plugin. 22 | 23 | More about unit testing in the original [Bootstrap documentation](http://v4-alpha.getbootstrap.com/). 24 | -------------------------------------------------------------------------------- /js/tests/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Ant Strap Plugin Test Suite 6 | 7 | 8 | 9 | 10 | 11 | 54 | 55 | 56 | 57 | 58 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 |
    145 |
    146 |
    147 |
    148 | 149 | 150 | -------------------------------------------------------------------------------- /js/tests/unit/custom.js: -------------------------------------------------------------------------------- 1 | $(function () { 2 | 'use strict'; 3 | 4 | QUnit.module('custom plugin') 5 | 6 | QUnit.test('should be defined on jquery object', function (assert) { 7 | assert.expect(1) 8 | assert.ok($(document.body).custom, 'custom method is defined') 9 | }) 10 | 11 | QUnit.module('custom', { 12 | beforeEach: function () { 13 | // Run all tests in noConflict mode -- it's the only way to ensure that the plugin works in noConflict mode 14 | $.fn.bootstrapButton = $.fn.custom.noConflict() 15 | }, 16 | afterEach: function () { 17 | $.fn.custom = $.fn.bootstrapButton 18 | delete $.fn.bootstrapButton 19 | } 20 | }) 21 | 22 | QUnit.test('should provide no conflict', function (assert) { 23 | assert.expect(1) 24 | assert.strictEqual($.fn.custom, undefined, 'custom was set back to undefined (org value)') 25 | }) 26 | 27 | }) 28 | -------------------------------------------------------------------------------- /js/tests/unit/phantom.js: -------------------------------------------------------------------------------- 1 | /* 2 | * grunt-contrib-qunit 3 | * http://gruntjs.com/ 4 | * 5 | * Copyright (c) 2014 "Cowboy" Ben Alman, contributors 6 | * Licensed under the MIT license. 7 | */ 8 | 9 | (function () { 10 | 'use strict'; 11 | 12 | // Don't re-order tests. 13 | QUnit.config.reorder = false 14 | // Run tests serially, not in parallel. 15 | QUnit.config.autorun = false 16 | 17 | // Send messages to the parent PhantomJS process via alert! Good times!! 18 | function sendMessage() { 19 | var args = [].slice.call(arguments) 20 | alert(JSON.stringify(args)) 21 | } 22 | 23 | // These methods connect QUnit to PhantomJS. 24 | QUnit.log(function (obj) { 25 | // What is this I don’t even 26 | if (obj.message === '[object Object], undefined:undefined') { return } 27 | 28 | // Parse some stuff before sending it. 29 | var actual 30 | var expected 31 | if (!obj.result) { 32 | // Dumping large objects can be very slow, and the dump isn't used for 33 | // passing tests, so only dump if the test failed. 34 | actual = QUnit.dump.parse(obj.actual) 35 | expected = QUnit.dump.parse(obj.expected) 36 | } 37 | // Send it. 38 | sendMessage('qunit.log', obj.result, actual, expected, obj.message, obj.source) 39 | }) 40 | 41 | QUnit.testStart(function (obj) { 42 | sendMessage('qunit.testStart', obj.name) 43 | }) 44 | 45 | QUnit.testDone(function (obj) { 46 | sendMessage('qunit.testDone', obj.name, obj.failed, obj.passed, obj.total, obj.duration) 47 | }) 48 | 49 | QUnit.moduleStart(function (obj) { 50 | sendMessage('qunit.moduleStart', obj.name) 51 | }) 52 | 53 | QUnit.moduleDone(function (obj) { 54 | if (obj.failed === 0) { 55 | console.log('\r\u221A All tests passed in "' + obj.name + '" module') 56 | } else { 57 | console.log('\u00D7 ' + obj.failed + ' tests failed in "' + obj.name + '" module') 58 | } 59 | sendMessage('qunit.moduleDone', obj.name, obj.failed, obj.passed, obj.total) 60 | }) 61 | 62 | QUnit.begin(function () { 63 | sendMessage('qunit.begin') 64 | console.log('\n\nStarting test suite') 65 | console.log('================================================\n') 66 | }) 67 | 68 | QUnit.done(function (obj) { 69 | sendMessage('qunit.done', obj.failed, obj.passed, obj.total, obj.runtime) 70 | }) 71 | 72 | }()) 73 | 74 | 75 | // bind polyfill 76 | // shoutout mdn: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind#Polyfill 77 | 78 | if (!Function.prototype.bind) { 79 | Function.prototype.bind = function (oThis) { 80 | if (typeof this !== 'function') { 81 | // closest thing possible to the ECMAScript 5 82 | // internal IsCallable function 83 | throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable'); 84 | } 85 | 86 | var aArgs = Array.prototype.slice.call(arguments, 1) 87 | var fToBind = this 88 | var FNOP = function () {} 89 | var fBound = function () { 90 | return fToBind.apply(this instanceof FNOP ? this : oThis, aArgs.concat(Array.prototype.slice.call(arguments))) 91 | } 92 | 93 | if (this.prototype) { 94 | // native functions don't have a prototype 95 | FNOP.prototype = this.prototype 96 | } 97 | fBound.prototype = new FNOP() 98 | 99 | return fBound 100 | } 101 | } 102 | -------------------------------------------------------------------------------- /js/tests/vendor/qunit.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * QUnit 1.20.0 3 | * http://qunitjs.com/ 4 | * 5 | * Copyright jQuery Foundation and other contributors 6 | * Released under the MIT license 7 | * http://jquery.org/license 8 | * 9 | * Date: 2015-10-27T17:53Z 10 | */ 11 | 12 | /** Font Family and Sizes */ 13 | 14 | #qunit-tests, #qunit-header, #qunit-banner, #qunit-testrunner-toolbar, #qunit-filteredTest, #qunit-userAgent, #qunit-testresult { 15 | font-family: "Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial, sans-serif; 16 | } 17 | 18 | #qunit-testrunner-toolbar, #qunit-filteredTest, #qunit-userAgent, #qunit-testresult, #qunit-tests li { font-size: small; } 19 | #qunit-tests { font-size: smaller; } 20 | 21 | 22 | /** Resets */ 23 | 24 | #qunit-tests, #qunit-header, #qunit-banner, #qunit-filteredTest, #qunit-userAgent, #qunit-testresult, #qunit-modulefilter { 25 | margin: 0; 26 | padding: 0; 27 | } 28 | 29 | 30 | /** Header */ 31 | 32 | #qunit-header { 33 | padding: 0.5em 0 0.5em 1em; 34 | 35 | color: #8699A4; 36 | background-color: #0D3349; 37 | 38 | font-size: 1.5em; 39 | line-height: 1em; 40 | font-weight: 400; 41 | 42 | border-radius: 5px 5px 0 0; 43 | } 44 | 45 | #qunit-header a { 46 | text-decoration: none; 47 | color: #C2CCD1; 48 | } 49 | 50 | #qunit-header a:hover, 51 | #qunit-header a:focus { 52 | color: #FFF; 53 | } 54 | 55 | #qunit-testrunner-toolbar label { 56 | display: inline-block; 57 | padding: 0 0.5em 0 0.1em; 58 | } 59 | 60 | #qunit-banner { 61 | height: 5px; 62 | } 63 | 64 | #qunit-testrunner-toolbar { 65 | padding: 0.5em 1em 0.5em 1em; 66 | color: #5E740B; 67 | background-color: #EEE; 68 | overflow: hidden; 69 | } 70 | 71 | #qunit-filteredTest { 72 | padding: 0.5em 1em 0.5em 1em; 73 | background-color: #F4FF77; 74 | color: #366097; 75 | } 76 | 77 | #qunit-userAgent { 78 | padding: 0.5em 1em 0.5em 1em; 79 | background-color: #2B81AF; 80 | color: #FFF; 81 | text-shadow: rgba(0, 0, 0, 0.5) 2px 2px 1px; 82 | } 83 | 84 | #qunit-modulefilter-container { 85 | float: right; 86 | padding: 0.2em; 87 | } 88 | 89 | .qunit-url-config { 90 | display: inline-block; 91 | padding: 0.1em; 92 | } 93 | 94 | .qunit-filter { 95 | display: block; 96 | float: right; 97 | margin-left: 1em; 98 | } 99 | 100 | /** Tests: Pass/Fail */ 101 | 102 | #qunit-tests { 103 | list-style-position: inside; 104 | } 105 | 106 | #qunit-tests li { 107 | padding: 0.4em 1em 0.4em 1em; 108 | border-bottom: 1px solid #FFF; 109 | list-style-position: inside; 110 | } 111 | 112 | #qunit-tests > li { 113 | display: none; 114 | } 115 | 116 | #qunit-tests li.running, 117 | #qunit-tests li.pass, 118 | #qunit-tests li.fail, 119 | #qunit-tests li.skipped { 120 | display: list-item; 121 | } 122 | 123 | #qunit-tests.hidepass li.running, 124 | #qunit-tests.hidepass li.pass { 125 | visibility: hidden; 126 | position: absolute; 127 | width: 0; 128 | height: 0; 129 | padding: 0; 130 | border: 0; 131 | margin: 0; 132 | } 133 | 134 | #qunit-tests li strong { 135 | cursor: pointer; 136 | } 137 | 138 | #qunit-tests li.skipped strong { 139 | cursor: default; 140 | } 141 | 142 | #qunit-tests li a { 143 | padding: 0.5em; 144 | color: #C2CCD1; 145 | text-decoration: none; 146 | } 147 | 148 | #qunit-tests li p a { 149 | padding: 0.25em; 150 | color: #6B6464; 151 | } 152 | #qunit-tests li a:hover, 153 | #qunit-tests li a:focus { 154 | color: #000; 155 | } 156 | 157 | #qunit-tests li .runtime { 158 | float: right; 159 | font-size: smaller; 160 | } 161 | 162 | .qunit-assert-list { 163 | margin-top: 0.5em; 164 | padding: 0.5em; 165 | 166 | background-color: #FFF; 167 | 168 | border-radius: 5px; 169 | } 170 | 171 | .qunit-source { 172 | margin: 0.6em 0 0.3em; 173 | } 174 | 175 | .qunit-collapsed { 176 | display: none; 177 | } 178 | 179 | #qunit-tests table { 180 | border-collapse: collapse; 181 | margin-top: 0.2em; 182 | } 183 | 184 | #qunit-tests th { 185 | text-align: right; 186 | vertical-align: top; 187 | padding: 0 0.5em 0 0; 188 | } 189 | 190 | #qunit-tests td { 191 | vertical-align: top; 192 | } 193 | 194 | #qunit-tests pre { 195 | margin: 0; 196 | white-space: pre-wrap; 197 | word-wrap: break-word; 198 | } 199 | 200 | #qunit-tests del { 201 | background-color: #E0F2BE; 202 | color: #374E0C; 203 | text-decoration: none; 204 | } 205 | 206 | #qunit-tests ins { 207 | background-color: #FFCACA; 208 | color: #500; 209 | text-decoration: none; 210 | } 211 | 212 | /*** Test Counts */ 213 | 214 | #qunit-tests b.counts { color: #000; } 215 | #qunit-tests b.passed { color: #5E740B; } 216 | #qunit-tests b.failed { color: #710909; } 217 | 218 | #qunit-tests li li { 219 | padding: 5px; 220 | background-color: #FFF; 221 | border-bottom: none; 222 | list-style-position: inside; 223 | } 224 | 225 | /*** Passing Styles */ 226 | 227 | #qunit-tests li li.pass { 228 | color: #3C510C; 229 | background-color: #FFF; 230 | border-left: 10px solid #C6E746; 231 | } 232 | 233 | #qunit-tests .pass { color: #528CE0; background-color: #D2E0E6; } 234 | #qunit-tests .pass .test-name { color: #366097; } 235 | 236 | #qunit-tests .pass .test-actual, 237 | #qunit-tests .pass .test-expected { color: #999; } 238 | 239 | #qunit-banner.qunit-pass { background-color: #C6E746; } 240 | 241 | /*** Failing Styles */ 242 | 243 | #qunit-tests li li.fail { 244 | color: #710909; 245 | background-color: #FFF; 246 | border-left: 10px solid #EE5757; 247 | white-space: pre; 248 | } 249 | 250 | #qunit-tests > li:last-child { 251 | border-radius: 0 0 5px 5px; 252 | } 253 | 254 | #qunit-tests .fail { color: #000; background-color: #EE5757; } 255 | #qunit-tests .fail .test-name, 256 | #qunit-tests .fail .module-name { color: #000; } 257 | 258 | #qunit-tests .fail .test-actual { color: #EE5757; } 259 | #qunit-tests .fail .test-expected { color: #008000; } 260 | 261 | #qunit-banner.qunit-fail { background-color: #EE5757; } 262 | 263 | /*** Skipped tests */ 264 | 265 | #qunit-tests .skipped { 266 | background-color: #EBECE9; 267 | } 268 | 269 | #qunit-tests .qunit-skipped-label { 270 | background-color: #F4FF77; 271 | display: inline-block; 272 | font-style: normal; 273 | color: #366097; 274 | line-height: 1.8em; 275 | padding: 0 0.5em; 276 | margin: -0.4em 0.4em -0.4em 0; 277 | } 278 | 279 | /** Result */ 280 | 281 | #qunit-testresult { 282 | padding: 0.5em 1em 0.5em 1em; 283 | 284 | color: #2B81AF; 285 | background-color: #D2E0E6; 286 | 287 | border-bottom: 1px solid #FFF; 288 | } 289 | #qunit-testresult .module-name { 290 | font-weight: 700; 291 | } 292 | 293 | /** Fixture */ 294 | 295 | #qunit-fixture { 296 | position: absolute; 297 | top: -10000px; 298 | left: -10000px; 299 | width: 1000px; 300 | height: 1000px; 301 | } 302 | -------------------------------------------------------------------------------- /js/tests/vendor/tether.min.js: -------------------------------------------------------------------------------- 1 | !function(t,e){"function"==typeof define&&define.amd?define(e):"object"==typeof exports?module.exports=e(require,exports,module):t.Tether=e()}(this,function(t,e,o){"use strict";function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function n(t){var e=getComputedStyle(t)||{},o=e.position;if("fixed"===o)return t;for(var i=t;i=i.parentNode;){var n=void 0;try{n=getComputedStyle(i)}catch(r){}if("undefined"==typeof n||null===n)return i;var s=n,a=s.overflow,f=s.overflowX,h=s.overflowY;if(/(auto|scroll)/.test(a+h+f)&&("absolute"!==o||["relative","absolute","fixed"].indexOf(n.position)>=0))return i}return document.body}function r(t){var e=void 0;t===document?(e=document,t=document.documentElement):e=t.ownerDocument;var o=e.documentElement,i={},n=t.getBoundingClientRect();for(var r in n)i[r]=n[r];var s=x(e);return i.top-=s.top,i.left-=s.left,"undefined"==typeof i.width&&(i.width=document.body.scrollWidth-i.left-i.right),"undefined"==typeof i.height&&(i.height=document.body.scrollHeight-i.top-i.bottom),i.top=i.top-o.clientTop,i.left=i.left-o.clientLeft,i.right=e.body.clientWidth-i.width-i.left,i.bottom=e.body.clientHeight-i.height-i.top,i}function s(t){return t.offsetParent||document.documentElement}function a(){var t=document.createElement("div");t.style.width="100%",t.style.height="200px";var e=document.createElement("div");f(e.style,{position:"absolute",top:0,left:0,pointerEvents:"none",visibility:"hidden",width:"200px",height:"150px",overflow:"hidden"}),e.appendChild(t),document.body.appendChild(e);var o=t.offsetWidth;e.style.overflow="scroll";var i=t.offsetWidth;o===i&&(i=e.clientWidth),document.body.removeChild(e);var n=o-i;return{width:n,height:n}}function f(){var t=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],e=[];return Array.prototype.push.apply(e,arguments),e.slice(1).forEach(function(e){if(e)for(var o in e)({}).hasOwnProperty.call(e,o)&&(t[o]=e[o])}),t}function h(t,e){if("undefined"!=typeof t.classList)e.split(" ").forEach(function(e){e.trim()&&t.classList.remove(e)});else{var o=new RegExp("(^| )"+e.split(" ").join("|")+"( |$)","gi"),i=u(t).replace(o," ");p(t,i)}}function l(t,e){if("undefined"!=typeof t.classList)e.split(" ").forEach(function(e){e.trim()&&t.classList.add(e)});else{h(t,e);var o=u(t)+(" "+e);p(t,o)}}function d(t,e){if("undefined"!=typeof t.classList)return t.classList.contains(e);var o=u(t);return new RegExp("(^| )"+e+"( |$)","gi").test(o)}function u(t){return t.className instanceof SVGAnimatedString?t.className.baseVal:t.className}function p(t,e){t.setAttribute("class",e)}function c(t,e,o){o.forEach(function(o){-1===e.indexOf(o)&&d(t,o)&&h(t,o)}),e.forEach(function(e){d(t,e)||l(t,e)})}function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function g(t,e){var o=arguments.length<=2||void 0===arguments[2]?1:arguments[2];return t+o>=e&&e>=t-o}function m(){return"undefined"!=typeof performance&&"undefined"!=typeof performance.now?performance.now():+new Date}function v(){for(var t={top:0,left:0},e=arguments.length,o=Array(e),i=0;e>i;i++)o[i]=arguments[i];return o.forEach(function(e){var o=e.top,i=e.left;"string"==typeof o&&(o=parseFloat(o,10)),"string"==typeof i&&(i=parseFloat(i,10)),t.top+=o,t.left+=i}),t}function y(t,e){return"string"==typeof t.left&&-1!==t.left.indexOf("%")&&(t.left=parseFloat(t.left,10)/100*e.width),"string"==typeof t.top&&-1!==t.top.indexOf("%")&&(t.top=parseFloat(t.top,10)/100*e.height),t}function b(t,e){return"scrollParent"===e?e=t.scrollParent:"window"===e&&(e=[pageXOffset,pageYOffset,innerWidth+pageXOffset,innerHeight+pageYOffset]),e===document&&(e=e.documentElement),"undefined"!=typeof e.nodeType&&!function(){var t=r(e),o=t,i=getComputedStyle(e);e=[o.left,o.top,t.width+o.left,t.height+o.top],U.forEach(function(t,o){t=t[0].toUpperCase()+t.substr(1),"Top"===t||"Left"===t?e[o]+=parseFloat(i["border"+t+"Width"]):e[o]-=parseFloat(i["border"+t+"Width"])})}(),e}var w=function(){function t(t,e){for(var o=0;o1?o-1:0),n=1;o>n;n++)i[n-1]=arguments[n];for(;e16?(e=Math.min(e-16,250),void(o=setTimeout(n,250))):void("undefined"!=typeof t&&m()-t<10||("undefined"!=typeof o&&(clearTimeout(o),o=null),t=m(),_(),e=m()-t))};"undefined"!=typeof window&&["resize","scroll","touchmove"].forEach(function(t){window.addEventListener(t,i)})}();var z={center:"center",left:"right",right:"left"},F={middle:"middle",top:"bottom",bottom:"top"},L={top:0,left:0,middle:"50%",center:"50%",bottom:"100%",right:"100%"},Y=function(t,e){var o=t.left,i=t.top;return"auto"===o&&(o=z[e.left]),"auto"===i&&(i=F[e.top]),{left:o,top:i}},H=function(t){var e=t.left,o=t.top;return"undefined"!=typeof L[t.left]&&(e=L[t.left]),"undefined"!=typeof L[t.top]&&(o=L[t.top]),{left:e,top:o}},X=function(t){var e=t.split(" "),o=M(e,2),i=o[0],n=o[1];return{top:i,left:n}},j=X,N=function(){function t(e){var o=this;i(this,t),this.position=this.position.bind(this),B.push(this),this.history=[],this.setOptions(e,!1),C.modules.forEach(function(t){"undefined"!=typeof t.initialize&&t.initialize.call(o)}),this.position()}return w(t,[{key:"getClass",value:function(){var t=arguments.length<=0||void 0===arguments[0]?"":arguments[0],e=this.options.classes;return"undefined"!=typeof e&&e[t]?this.options.classes[t]:this.options.classPrefix?this.options.classPrefix+"-"+t:t}},{key:"setOptions",value:function(t){var e=this,o=arguments.length<=1||void 0===arguments[1]?!0:arguments[1],i={offset:"0 0",targetOffset:"0 0",targetAttachment:"auto auto",classPrefix:"tether"};this.options=f(i,t);var r=this.options,s=r.element,a=r.target,h=r.targetModifier;if(this.element=s,this.target=a,this.targetModifier=h,"viewport"===this.target?(this.target=document.body,this.targetModifier="visible"):"scroll-handle"===this.target&&(this.target=document.body,this.targetModifier="scroll-handle"),["element","target"].forEach(function(t){if("undefined"==typeof e[t])throw new Error("Tether Error: Both element and target must be defined");"undefined"!=typeof e[t].jquery?e[t]=e[t][0]:"string"==typeof e[t]&&(e[t]=document.querySelector(e[t]))}),l(this.element,this.getClass("element")),this.options.addTargetClasses!==!1&&l(this.target,this.getClass("target")),!this.options.attachment)throw new Error("Tether Error: You must provide an attachment");this.targetAttachment=j(this.options.targetAttachment),this.attachment=j(this.options.attachment),this.offset=X(this.options.offset),this.targetOffset=X(this.options.targetOffset),"undefined"!=typeof this.scrollParent&&this.disable(),"scroll-handle"===this.targetModifier?this.scrollParent=this.target:this.scrollParent=n(this.target),this.options.enabled!==!1&&this.enable(o)}},{key:"getTargetBounds",value:function(){if("undefined"==typeof this.targetModifier)return r(this.target);if("visible"===this.targetModifier){if(this.target===document.body)return{top:pageYOffset,left:pageXOffset,height:innerHeight,width:innerWidth};var t=r(this.target),e={height:t.height,width:t.width,top:t.top,left:t.left};return e.height=Math.min(e.height,t.height-(pageYOffset-t.top)),e.height=Math.min(e.height,t.height-(t.top+t.height-(pageYOffset+innerHeight))),e.height=Math.min(innerHeight,e.height),e.height-=2,e.width=Math.min(e.width,t.width-(pageXOffset-t.left)),e.width=Math.min(e.width,t.width-(t.left+t.width-(pageXOffset+innerWidth))),e.width=Math.min(innerWidth,e.width),e.width-=2,e.topo.clientWidth||[i.overflow,i.overflowX].indexOf("scroll")>=0||this.target!==document.body,s=0;n&&(s=15);var a=t.height-parseFloat(i.borderTopWidth)-parseFloat(i.borderBottomWidth)-s,e={width:15,height:.975*a*(a/o.scrollHeight),left:t.left+t.width-parseFloat(i.borderLeftWidth)-15},f=0;408>a&&this.target===document.body&&(f=-11e-5*Math.pow(a,2)-.00727*a+22.58),this.target!==document.body&&(e.height=Math.max(e.height,24));var h=this.target.scrollTop/(o.scrollHeight-a);return e.top=h*(a-e.height-f)+t.top+parseFloat(i.borderTopWidth),this.target===document.body&&(e.height=Math.max(e.height,24)),e}}},{key:"clearCache",value:function(){this._cache={}}},{key:"cache",value:function(t,e){return"undefined"==typeof this._cache&&(this._cache={}),"undefined"==typeof this._cache[t]&&(this._cache[t]=e.call(this)),this._cache[t]}},{key:"enable",value:function(){var t=arguments.length<=0||void 0===arguments[0]?!0:arguments[0];this.options.addTargetClasses!==!1&&l(this.target,this.getClass("enabled")),l(this.element,this.getClass("enabled")),this.enabled=!0,this.scrollParent!==document&&this.scrollParent.addEventListener("scroll",this.position),t&&this.position()}},{key:"disable",value:function(){h(this.target,this.getClass("enabled")),h(this.element,this.getClass("enabled")),this.enabled=!1,"undefined"!=typeof this.scrollParent&&this.scrollParent.removeEventListener("scroll",this.position)}},{key:"destroy",value:function(){var t=this;this.disable(),B.forEach(function(e,o){return e===t?void B.splice(o,1):void 0})}},{key:"updateAttachClasses",value:function(t,e){var o=this;t=t||this.attachment,e=e||this.targetAttachment;var i=["left","top","bottom","right","middle","center"];"undefined"!=typeof this._addAttachClasses&&this._addAttachClasses.length&&this._addAttachClasses.splice(0,this._addAttachClasses.length),"undefined"==typeof this._addAttachClasses&&(this._addAttachClasses=[]);var n=this._addAttachClasses;t.top&&n.push(this.getClass("element-attached")+"-"+t.top),t.left&&n.push(this.getClass("element-attached")+"-"+t.left),e.top&&n.push(this.getClass("target-attached")+"-"+e.top),e.left&&n.push(this.getClass("target-attached")+"-"+e.left);var r=[];i.forEach(function(t){r.push(o.getClass("element-attached")+"-"+t),r.push(o.getClass("target-attached")+"-"+t)}),T(function(){"undefined"!=typeof o._addAttachClasses&&(c(o.element,o._addAttachClasses,r),o.options.addTargetClasses!==!1&&c(o.target,o._addAttachClasses,r),delete o._addAttachClasses)})}},{key:"position",value:function(){var t=this,e=arguments.length<=0||void 0===arguments[0]?!0:arguments[0];if(this.enabled){this.clearCache();var o=Y(this.targetAttachment,this.attachment);this.updateAttachClasses(this.attachment,o);var i=this.cache("element-bounds",function(){return r(t.element)}),n=i.width,f=i.height;if(0===n&&0===f&&"undefined"!=typeof this.lastSize){var h=this.lastSize;n=h.width,f=h.height}else this.lastSize={width:n,height:f};var l=this.cache("target-bounds",function(){return t.getTargetBounds()}),d=l,u=y(H(this.attachment),{width:n,height:f}),p=y(H(o),d),c=y(this.offset,{width:n,height:f}),g=y(this.targetOffset,d);u=v(u,c),p=v(p,g);for(var m=l.left+p.left-u.left,b=l.top+p.top-u.top,w=0;wwindow.innerWidth&&(A=this.cache("scrollbar-size",a),x.viewport.bottom-=A.height),document.body.scrollHeight>window.innerHeight&&(A=this.cache("scrollbar-size",a),x.viewport.right-=A.width),(-1===["","static"].indexOf(document.body.style.position)||-1===["","static"].indexOf(document.body.parentElement.style.position))&&(x.page.bottom=document.body.scrollHeight-b-f,x.page.right=document.body.scrollWidth-m-n),"undefined"!=typeof this.options.optimizations&&this.options.optimizations.moveElement!==!1&&"undefined"==typeof this.targetModifier&&!function(){var e=t.cache("target-offsetparent",function(){return s(t.target)}),o=t.cache("target-offsetparent-bounds",function(){return r(e)}),i=getComputedStyle(e),n=o,a={};if(["Top","Left","Bottom","Right"].forEach(function(t){a[t.toLowerCase()]=parseFloat(i["border"+t+"Width"])}),o.right=document.body.scrollWidth-o.left-n.width+a.right,o.bottom=document.body.scrollHeight-o.top-n.height+a.bottom,x.page.top>=o.top+a.top&&x.page.bottom>=o.bottom&&x.page.left>=o.left+a.left&&x.page.right>=o.right){var f=e.scrollTop,h=e.scrollLeft;x.offset={top:x.page.top-o.top+f-a.top,left:x.page.left-o.left+h-a.left}}}(),this.move(x),this.history.unshift(x),this.history.length>3&&this.history.pop(),e&&S(),!0}}},{key:"move",value:function(t){var e=this;if("undefined"!=typeof this.element.parentNode){var o={};for(var i in t){o[i]={};for(var n in t[i]){for(var r=!1,a=0;a=0&&(b=parseFloat(b),y=parseFloat(y)),b!==y&&(v=!0,m[n]=y)}v&&T(function(){f(e.element.style,m)})}}}]),t}();N.modules=[],C.position=_;var R=f(N,C),M=function(){function t(t,e){var o=[],i=!0,n=!1,r=void 0;try{for(var s,a=t[Symbol.iterator]();!(i=(s=a.next()).done)&&(o.push(s.value),!e||o.length!==e);i=!0);}catch(f){n=!0,r=f}finally{try{!i&&a["return"]&&a["return"]()}finally{if(n)throw r}}return o}return function(e,o){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,o);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),P=C.Utils,r=P.getBounds,f=P.extend,c=P.updateClasses,T=P.defer,U=["left","top","right","bottom"];C.modules.push({position:function(t){var e=this,o=t.top,i=t.left,n=t.targetAttachment;if(!this.options.constraints)return!0;var s=this.cache("element-bounds",function(){return r(e.element)}),a=s.height,h=s.width;if(0===h&&0===a&&"undefined"!=typeof this.lastSize){var l=this.lastSize;h=l.width,a=l.height}var d=this.cache("target-bounds",function(){return e.getTargetBounds()}),u=d.height,p=d.width,g=[this.getClass("pinned"),this.getClass("out-of-bounds")];this.options.constraints.forEach(function(t){var e=t.outOfBoundsClass,o=t.pinnedClass;e&&g.push(e),o&&g.push(o)}),g.forEach(function(t){["left","top","right","bottom"].forEach(function(e){g.push(t+"-"+e)})});var m=[],v=f({},n),y=f({},this.attachment);return this.options.constraints.forEach(function(t){var r=t.to,s=t.attachment,f=t.pin;"undefined"==typeof s&&(s="");var l=void 0,d=void 0;if(s.indexOf(" ")>=0){var c=s.split(" "),g=M(c,2);d=g[0],l=g[1]}else l=d=s;var w=b(e,r);("target"===d||"both"===d)&&(ow[3]&&"bottom"===v.top&&(o-=u,v.top="top")),"together"===d&&(ow[3]&&"bottom"===v.top&&("top"===y.top?(o-=u,v.top="top",o-=a,y.top="bottom"):"bottom"===y.top&&(o-=u,v.top="top",o+=a,y.top="top")),"middle"===v.top&&(o+a>w[3]&&"top"===y.top?(o-=a,y.top="bottom"):ow[2]&&"right"===v.left&&(i-=p,v.left="left")),"together"===l&&(iw[2]&&"right"===v.left?"left"===y.left?(i-=p,v.left="left",i-=h,y.left="right"):"right"===y.left&&(i-=p,v.left="left",i+=h,y.left="left"):"center"===v.left&&(i+h>w[2]&&"left"===y.left?(i-=h,y.left="right"):iw[3]&&"top"===y.top&&(o-=a,y.top="bottom")),("element"===l||"both"===l)&&(iw[2]&&("left"===y.left?(i-=h,y.left="right"):"center"===y.left&&(i-=h/2,y.left="right"))),"string"==typeof f?f=f.split(",").map(function(t){return t.trim()}):f===!0&&(f=["top","left","right","bottom"]),f=f||[];var C=[],O=[];o=0?(o=w[1],C.push("top")):O.push("top")),o+a>w[3]&&(f.indexOf("bottom")>=0?(o=w[3]-a,C.push("bottom")):O.push("bottom")),i=0?(i=w[0],C.push("left")):O.push("left")),i+h>w[2]&&(f.indexOf("right")>=0?(i=w[2]-h,C.push("right")):O.push("right")),C.length&&!function(){var t=void 0;t="undefined"!=typeof e.options.pinnedClass?e.options.pinnedClass:e.getClass("pinned"),m.push(t),C.forEach(function(e){m.push(t+"-"+e)})}(),O.length&&!function(){var t=void 0;t="undefined"!=typeof e.options.outOfBoundsClass?e.options.outOfBoundsClass:e.getClass("out-of-bounds"),m.push(t),O.forEach(function(e){m.push(t+"-"+e)})}(),(C.indexOf("left")>=0||C.indexOf("right")>=0)&&(y.left=v.left=!1),(C.indexOf("top")>=0||C.indexOf("bottom")>=0)&&(y.top=v.top=!1),(v.top!==n.top||v.left!==n.left||y.top!==e.attachment.top||y.left!==e.attachment.left)&&e.updateAttachClasses(y,v)}),T(function(){e.options.addTargetClasses!==!1&&c(e.target,m,g),c(e.element,m,g)}),{top:o,left:i}}});var P=C.Utils,r=P.getBounds,c=P.updateClasses,T=P.defer;C.modules.push({position:function(t){var e=this,o=t.top,i=t.left,n=this.cache("element-bounds",function(){return r(e.element)}),s=n.height,a=n.width,f=this.getTargetBounds(),h=o+s,l=i+a,d=[];o<=f.bottom&&h>=f.top&&["left","right"].forEach(function(t){var e=f[t];(e===i||e===l)&&d.push(t)}),i<=f.right&&l>=f.left&&["top","bottom"].forEach(function(t){var e=f[t];(e===o||e===h)&&d.push(t)});var u=[],p=[],g=["left","top","right","bottom"];return u.push(this.getClass("abutted")),g.forEach(function(t){u.push(e.getClass("abutted")+"-"+t)}),d.length&&p.push(this.getClass("abutted")),d.forEach(function(t){p.push(e.getClass("abutted")+"-"+t)}),T(function(){e.options.addTargetClasses!==!1&&c(e.target,p,u),c(e.element,p,u)}),!0}});var M=function(){function t(t,e){var o=[],i=!0,n=!1,r=void 0;try{for(var s,a=t[Symbol.iterator]();!(i=(s=a.next()).done)&&(o.push(s.value),!e||o.length!==e);i=!0);}catch(f){n=!0,r=f}finally{try{!i&&a["return"]&&a["return"]()}finally{if(n)throw r}}return o}return function(e,o){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,o);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();return C.modules.push({position:function(t){var e=t.top,o=t.left;if(this.options.shift){var i=this.options.shift;"function"==typeof this.options.shift&&(i=this.options.shift.call(this,{top:e,left:o}));var n=void 0,r=void 0;if("string"==typeof i){i=i.split(" "),i[1]=i[1]||i[0];var s=i,a=M(s,2);n=a[0],r=a[1],n=parseFloat(n,10),r=parseFloat(r,10)}else n=i.top,r=i.left;return e+=n,o+=r,{top:e,left:o}}}}),R}); -------------------------------------------------------------------------------- /js/tests/visual/custom.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Custom 8 | 9 | 10 | 11 |
    12 | 13 |

    Custom Ant Strap Visual Test

    14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ant-strap", 3 | "description": "An elegant CSS Framework built after Ant Design using Bootstrap 4.", 4 | "version": "1.0.0", 5 | "keywords": [ 6 | "css", 7 | "sass", 8 | "mobile-first", 9 | "responsive", 10 | "front-end", 11 | "framework", 12 | "web" 13 | ], 14 | "repository": { 15 | "type": "git", 16 | "url": "websemantics/ant-strap.git" 17 | }, 18 | "homepage": "http://websemantics.github.io/ant-strap/", 19 | "author": "The Bootstrap Authors", 20 | "contributors": [ 21 | { 22 | "name": "Web Semantics, Inc.", 23 | "url": "http://websemantics.ca", 24 | "email": "info@websemantics.ca" 25 | }, 26 | { 27 | "name": "Twitter, Inc.", 28 | "url": "http://twitter.com" 29 | } 30 | ], 31 | "config": { 32 | "deploy": { 33 | "name": "iAyeBot", 34 | "email": "iayebot@websemantics.ca", 35 | "branch": "master:gh-pages", 36 | "message": "Deploy to gh-pages" 37 | }, 38 | "dir": { 39 | "src": "./src/", 40 | "dist": "./_gh_pages/" 41 | } 42 | }, 43 | "scripts": { 44 | "change-version": "node ./node_modules/bootstrap/grunt/change-version.js", 45 | "eslint": "eslint --config js/.eslintrc.json js/src && node_modules/bootstrap/", 46 | "jscs": "jscs --config=js/.jscsrc js/src js/tests/unit docs/assets/js/src grunt Gruntfile.js docs/assets/js/ie-emulation-modes-warning.js docs/assets/js/ie10-viewport-bug-workaround.js", 47 | "htmlhint": "htmlhint --config docs/.htmlhintrc $npm_package_config_dir_dist ", 48 | "postcss": "postcss --config node_modules/bootstrap/grunt/postcss.js --replace dist/css/*.css", 49 | "postcss-docs": "# (uncomment if have docs folder) postcss --config node_modules/bootstrap/grunt/postcss.js --no-map --replace docs/assets/css/docs.min.css && postcss --config node_modules/bootstrap/grunt/postcss.js --no-map --replace docs/examples/**/*.css", 50 | "update-shrinkwrap": "npm shrinkwrap --dev && shx mv ./npm-shrinkwrap.json ./node_modules/bootstrap/grunt/npm-shrinkwrap.json", 51 | "test": "npm run eslint && npm run jscs && grunt test", 52 | "deploy": "[ ${GH_TOKEN} ] && npm run deploy:travis -s || npm run deploy:local -s ", 53 | "deploy:local": "repository=$(echo $npm_package_repository_url | sed 's/.*+//') && cd $npm_package_config_dir_dist && git push --force --quiet $repository ${npm_package_config_deploy_branch} > /dev/null 2>&1 ", 54 | "deploy:travis": "cd $npm_package_config_dir_dist && git push --force --quiet \"https://${GH_TOKEN}@${GH_REF}\" ${npm_package_config_deploy_branch} > /dev/null 2>&1 ", 55 | "predeploy": "rm -rf $npm_package_config_dir_dist && npm run prep-release -s && cd $npm_package_config_dir_dist && git init && git config user.name $npm_package_config_deploy_name && git config user.email $npm_package_config_deploy_email && git add -A . && git commit -am \"$npm_package_config_deploy_message\" ", 56 | "rebrand": "node ./node_modules/bootstrap/grunt/change-version.js", 57 | "prep-release": "grunt prep-release", 58 | "watch": "grunt watch-all", 59 | "build": "grunt" 60 | }, 61 | "style": "dist/css/ant-strap.css", 62 | "sass": "scss/ant-strap.scss", 63 | "main": "./dist/js/npm", 64 | "bugs": { 65 | "url": "https://github.com/websemantics/ant-strap/issues" 66 | }, 67 | "license": "MIT", 68 | "dependencies": { 69 | "bootstrap": "4.0.0-alpha.3", 70 | "font-awesome": "^4.6.3", 71 | "jquery": "1.9.1 - 3", 72 | "tether": "^1.1.1" 73 | }, 74 | "devDependencies": { 75 | "autoprefixer": "^6.0.3", 76 | "babel-eslint": "^6.0.4", 77 | "eslint": "^3.0.0", 78 | "grunt": "^1.0.0", 79 | "grunt-babel": "^5.0.3", 80 | "grunt-browser-sync": "^2.2.0", 81 | "grunt-build-control": "^0.7.0", 82 | "grunt-contrib-clean": "^1.0.0", 83 | "grunt-contrib-compress": "^1.1.0", 84 | "grunt-contrib-concat": "^1.0.0", 85 | "grunt-contrib-connect": "^1.0.0", 86 | "grunt-contrib-copy": "^1.0.0", 87 | "grunt-contrib-cssmin": "^1.0.0", 88 | "grunt-contrib-qunit": "^1.0.0", 89 | "grunt-contrib-sass": "^1.0.0", 90 | "grunt-contrib-uglify": "^1.0.0", 91 | "grunt-contrib-watch": "^1.0.0", 92 | "grunt-exec": "^1.0.0", 93 | "grunt-html": "^8.0.1", 94 | "grunt-jekyll": "^0.4.2", 95 | "grunt-sass": "^1.0.0", 96 | "grunt-saucelabs": "^9.0.0", 97 | "grunt-scss-lint": "^0.3.8", 98 | "grunt-stamp": "^0.3.0", 99 | "htmlhint": "^0.9.13", 100 | "is-travis": "^1.0.0", 101 | "jscs": "^3.0.4", 102 | "load-grunt-tasks": "^3.4.0", 103 | "postcss-cli": "^2.5.2", 104 | "postcss-flexbugs-fixes": "^2.0.0", 105 | "shelljs": "^0.7.0", 106 | "shx": "^0.1.2", 107 | "time-grunt": "^1.2.1" 108 | }, 109 | "engines": { 110 | "node": ">=4" 111 | }, 112 | "files": [ 113 | "dist", 114 | "js/*.js", 115 | "scss/**/*.scss", 116 | "Gruntfile.js", 117 | "LICENSE" 118 | ], 119 | "jspm": { 120 | "main": "js/ant-strap", 121 | "ignore": [ 122 | "dist/js/npm" 123 | ], 124 | "directories": { 125 | "lib": "dist" 126 | }, 127 | "shim": { 128 | "js/bootstrap": { 129 | "deps": [ 130 | "jquery" 131 | ], 132 | "exports": "$" 133 | } 134 | } 135 | } 136 | } 137 | -------------------------------------------------------------------------------- /sache.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ant-strap", 3 | "description": "An elegant CSS Framework built after Ant Design using Bootstrap 4.", 4 | "tags": ["bootstrap", "themes"] 5 | } 6 | -------------------------------------------------------------------------------- /scss/.scss-lint.yml: -------------------------------------------------------------------------------- 1 | # Default application configuration that all configurations inherit from. 2 | scss_files: 3 | - "**/*.scss" 4 | - "docs/assets/scss/**/*.scss" 5 | 6 | plugin_directories: ['.scss-linters'] 7 | 8 | # List of gem names to load custom linters from (make sure they are already 9 | # installed) 10 | plugin_gems: [] 11 | 12 | # Default severity of all linters. 13 | severity: warning 14 | 15 | linters: 16 | BangFormat: 17 | enabled: true 18 | space_before_bang: true 19 | space_after_bang: false 20 | 21 | BemDepth: 22 | enabled: false 23 | max_elements: 1 24 | 25 | BorderZero: 26 | enabled: true 27 | convention: zero # or `none` 28 | exclude: 29 | - _normalize.scss 30 | 31 | ChainedClasses: 32 | enabled: false 33 | 34 | ColorKeyword: 35 | enabled: true 36 | 37 | ColorVariable: 38 | enabled: false 39 | 40 | Comment: 41 | enabled: true 42 | exclude: 43 | - _normalize.scss 44 | - bootstrap.scss 45 | style: silent 46 | 47 | DebugStatement: 48 | enabled: true 49 | 50 | DeclarationOrder: 51 | enabled: false 52 | 53 | DisableLinterReason: 54 | enabled: false 55 | 56 | DuplicateProperty: 57 | enabled: true 58 | 59 | ElsePlacement: 60 | enabled: true 61 | style: same_line # or 'new_line' 62 | 63 | EmptyLineBetweenBlocks: 64 | enabled: false 65 | ignore_single_line_blocks: true 66 | 67 | EmptyRule: 68 | enabled: true 69 | 70 | ExtendDirective: 71 | enabled: false 72 | 73 | FinalNewline: 74 | enabled: true 75 | present: true 76 | 77 | HexLength: 78 | enabled: true 79 | style: short # or 'long' 80 | 81 | HexNotation: 82 | enabled: true 83 | style: lowercase # or 'uppercase' 84 | 85 | HexValidation: 86 | enabled: true 87 | 88 | IdSelector: 89 | enabled: true 90 | 91 | ImportantRule: 92 | enabled: true 93 | 94 | ImportPath: 95 | enabled: true 96 | leading_underscore: false 97 | filename_extension: false 98 | 99 | Indentation: 100 | enabled: true 101 | allow_non_nested_indentation: false 102 | character: space # or 'tab' 103 | width: 2 104 | 105 | LeadingZero: 106 | enabled: true 107 | style: exclude_zero # or 'include_zero' 108 | exclude: 109 | - _normalize.scss 110 | 111 | MergeableSelector: 112 | enabled: false 113 | force_nesting: true 114 | 115 | NameFormat: 116 | enabled: true 117 | allow_leading_underscore: true 118 | convention: hyphenated_lowercase # or 'camel_case', or 'snake_case', or a regex pattern 119 | 120 | NestingDepth: 121 | enabled: true 122 | max_depth: 4 123 | ignore_parent_selectors: false 124 | 125 | PlaceholderInExtend: 126 | enabled: false 127 | 128 | PropertyCount: 129 | enabled: false 130 | include_nested: false 131 | max_properties: 10 132 | 133 | PropertySortOrder: 134 | enabled: true 135 | ignore_unspecified: false 136 | min_properties: 2 137 | separate_groups: false 138 | exclude: 139 | - _normalize.scss 140 | order: 141 | - position 142 | - top 143 | - right 144 | - bottom 145 | - left 146 | - z-index 147 | - -webkit-box-sizing 148 | - -moz-box-sizing 149 | - box-sizing 150 | - display 151 | - flex 152 | - flex-align 153 | - flex-basis 154 | - flex-direction 155 | - flex-flow 156 | - flex-grow 157 | - flex-order 158 | - flex-pack 159 | - float 160 | - width 161 | - min-width 162 | - max-width 163 | - height 164 | - min-height 165 | - max-height 166 | - padding 167 | - padding-top 168 | - padding-right 169 | - padding-bottom 170 | - padding-left 171 | - margin 172 | - margin-top 173 | - margin-right 174 | - margin-bottom 175 | - margin-left 176 | - overflow 177 | - overflow-x 178 | - overflow-y 179 | - -webkit-overflow-scrolling 180 | - -ms-overflow-x 181 | - -ms-overflow-y 182 | - -ms-overflow-style 183 | - clip 184 | - clear 185 | - font 186 | - font-family 187 | - font-size 188 | - font-style 189 | - font-weight 190 | - font-variant 191 | - font-size-adjust 192 | - font-stretch 193 | - font-effect 194 | - font-emphasize 195 | - font-emphasize-position 196 | - font-emphasize-style 197 | - font-smooth 198 | - -webkit-hyphens 199 | - -moz-hyphens 200 | - hyphens 201 | - line-height 202 | - color 203 | - text-align 204 | - -webkit-text-align-last 205 | - -moz-text-align-last 206 | - -ms-text-align-last 207 | - text-align-last 208 | - text-emphasis 209 | - text-emphasis-color 210 | - text-emphasis-style 211 | - text-emphasis-position 212 | - text-decoration 213 | - text-indent 214 | - text-justify 215 | - text-outline 216 | - -ms-text-overflow 217 | - text-overflow 218 | - text-overflow-ellipsis 219 | - text-overflow-mode 220 | - text-shadow 221 | - text-transform 222 | - text-wrap 223 | - -webkit-text-size-adjust 224 | - -ms-text-size-adjust 225 | - letter-spacing 226 | - -ms-word-break 227 | - word-break 228 | - word-spacing 229 | - -ms-word-wrap 230 | - word-wrap 231 | - -moz-tab-size 232 | - -o-tab-size 233 | - tab-size 234 | - white-space 235 | - vertical-align 236 | - list-style 237 | - list-style-position 238 | - list-style-type 239 | - list-style-image 240 | - pointer-events 241 | - -ms-touch-action 242 | - touch-action 243 | - cursor 244 | - visibility 245 | - zoom 246 | - table-layout 247 | - empty-cells 248 | - caption-side 249 | - border-spacing 250 | - border-collapse 251 | - content 252 | - quotes 253 | - counter-reset 254 | - counter-increment 255 | - resize 256 | - -webkit-user-select 257 | - -moz-user-select 258 | - -ms-user-select 259 | - -o-user-select 260 | - user-select 261 | - nav-index 262 | - nav-up 263 | - nav-right 264 | - nav-down 265 | - nav-left 266 | - background 267 | - background-color 268 | - background-image 269 | - -ms-filter:\\'progid:DXImageTransform.Microsoft.gradient 270 | - filter:progid:DXImageTransform.Microsoft.gradient 271 | - filter:progid:DXImageTransform.Microsoft.AlphaImageLoader 272 | - filter 273 | - background-repeat 274 | - background-attachment 275 | - background-position 276 | - background-position-x 277 | - background-position-y 278 | - -webkit-background-clip 279 | - -moz-background-clip 280 | - background-clip 281 | - background-origin 282 | - -webkit-background-size 283 | - -moz-background-size 284 | - -o-background-size 285 | - background-size 286 | - border 287 | - border-color 288 | - border-style 289 | - border-width 290 | - border-top 291 | - border-top-color 292 | - border-top-style 293 | - border-top-width 294 | - border-right 295 | - border-right-color 296 | - border-right-style 297 | - border-right-width 298 | - border-bottom 299 | - border-bottom-color 300 | - border-bottom-style 301 | - border-bottom-width 302 | - border-left 303 | - border-left-color 304 | - border-left-style 305 | - border-left-width 306 | - border-radius 307 | - border-top-left-radius 308 | - border-top-right-radius 309 | - border-bottom-right-radius 310 | - border-bottom-left-radius 311 | - -webkit-border-image 312 | - -moz-border-image 313 | - -o-border-image 314 | - border-image 315 | - -webkit-border-image-source 316 | - -moz-border-image-source 317 | - -o-border-image-source 318 | - border-image-source 319 | - -webkit-border-image-slice 320 | - -moz-border-image-slice 321 | - -o-border-image-slice 322 | - border-image-slice 323 | - -webkit-border-image-width 324 | - -moz-border-image-width 325 | - -o-border-image-width 326 | - border-image-width 327 | - -webkit-border-image-outset 328 | - -moz-border-image-outset 329 | - -o-border-image-outset 330 | - border-image-outset 331 | - -webkit-border-image-repeat 332 | - -moz-border-image-repeat 333 | - -o-border-image-repeat 334 | - border-image-repeat 335 | - outline 336 | - outline-width 337 | - outline-style 338 | - outline-color 339 | - outline-offset 340 | - -webkit-box-shadow 341 | - -moz-box-shadow 342 | - box-shadow 343 | - filter:progid:DXImageTransform.Microsoft.Alpha(Opacity 344 | - -ms-filter:\\'progid:DXImageTransform.Microsoft.Alpha 345 | - opacity 346 | - -ms-interpolation-mode 347 | - -webkit-transition 348 | - -moz-transition 349 | - -ms-transition 350 | - -o-transition 351 | - transition 352 | - -webkit-transition-delay 353 | - -moz-transition-delay 354 | - -ms-transition-delay 355 | - -o-transition-delay 356 | - transition-delay 357 | - -webkit-transition-timing-function 358 | - -moz-transition-timing-function 359 | - -ms-transition-timing-function 360 | - -o-transition-timing-function 361 | - transition-timing-function 362 | - -webkit-transition-duration 363 | - -moz-transition-duration 364 | - -ms-transition-duration 365 | - -o-transition-duration 366 | - transition-duration 367 | - -webkit-transition-property 368 | - -moz-transition-property 369 | - -ms-transition-property 370 | - -o-transition-property 371 | - transition-property 372 | - -webkit-transform 373 | - -moz-transform 374 | - -ms-transform 375 | - -o-transform 376 | - transform 377 | - -webkit-transform-origin 378 | - -moz-transform-origin 379 | - -ms-transform-origin 380 | - -o-transform-origin 381 | - transform-origin 382 | - -webkit-animation 383 | - -moz-animation 384 | - -ms-animation 385 | - -o-animation 386 | - animation 387 | - -webkit-animation-name 388 | - -moz-animation-name 389 | - -ms-animation-name 390 | - -o-animation-name 391 | - animation-name 392 | - -webkit-animation-duration 393 | - -moz-animation-duration 394 | - -ms-animation-duration 395 | - -o-animation-duration 396 | - animation-duration 397 | - -webkit-animation-play-state 398 | - -moz-animation-play-state 399 | - -ms-animation-play-state 400 | - -o-animation-play-state 401 | - animation-play-state 402 | - -webkit-animation-timing-function 403 | - -moz-animation-timing-function 404 | - -ms-animation-timing-function 405 | - -o-animation-timing-function 406 | - animation-timing-function 407 | - -webkit-animation-delay 408 | - -moz-animation-delay 409 | - -ms-animation-delay 410 | - -o-animation-delay 411 | - animation-delay 412 | - -webkit-animation-iteration-count 413 | - -moz-animation-iteration-count 414 | - -ms-animation-iteration-count 415 | - -o-animation-iteration-count 416 | - animation-iteration-count 417 | - -webkit-animation-direction 418 | - -moz-animation-direction 419 | - -ms-animation-direction 420 | - -o-animation-direction 421 | 422 | 423 | PropertySpelling: 424 | enabled: true 425 | extra_properties: [] 426 | disabled_properties: [] 427 | 428 | PropertyUnits: 429 | enabled: true 430 | global: [ 431 | 'ch', 'em', 'ex', 'rem', # Font-relative lengths 432 | 'cm', 'in', 'mm', 'pc', 'pt', 'px', 'q', # Absolute lengths 433 | 'vh', 'vw', 'vmin', 'vmax', # Viewport-percentage lengths 434 | 'deg', 'grad', 'rad', 'turn', # Angle 435 | 'ms', 's', # Duration 436 | 'Hz', 'kHz', # Frequency 437 | 'dpi', 'dpcm', 'dppx', # Resolution 438 | '%'] # Other 439 | properties: {} 440 | 441 | PseudoElement: 442 | enabled: true 443 | 444 | QualifyingElement: 445 | enabled: true 446 | allow_element_with_attribute: false 447 | allow_element_with_class: false 448 | allow_element_with_id: false 449 | 450 | SelectorDepth: 451 | enabled: true 452 | max_depth: 4 453 | 454 | SelectorFormat: 455 | enabled: false 456 | convention: hyphenated_lowercase # or 'strict_BEM', or 'hyphenated_BEM', or 'snake_case', or 'camel_case', or a regex pattern 457 | 458 | Shorthand: 459 | enabled: true 460 | allowed_shorthands: [1, 2, 3, 4] 461 | 462 | SingleLinePerProperty: 463 | enabled: false 464 | allow_single_line_rule_sets: true 465 | 466 | SingleLinePerSelector: 467 | enabled: false 468 | 469 | SpaceAfterComma: 470 | enabled: false 471 | style: one_space # or 'no_space', or 'at_least_one_space' 472 | 473 | SpaceAfterPropertyColon: 474 | enabled: true 475 | style: at_least_one_space # or 'no_space', or 'at_least_one_space', or 'aligned' 476 | 477 | SpaceAfterPropertyName: 478 | enabled: true 479 | 480 | SpaceAfterVariableName: 481 | enabled: true 482 | 483 | SpaceAroundOperator: 484 | enabled: true 485 | style: one_space # or 'at_least_one_space', or 'no_space' 486 | 487 | SpaceBeforeBrace: 488 | enabled: true 489 | style: space # or 'new_line' 490 | allow_single_line_padding: false 491 | 492 | SpaceBetweenParens: 493 | enabled: true 494 | spaces: 0 495 | 496 | StringQuotes: 497 | enabled: true 498 | style: double_quotes # or double_quotes 499 | 500 | TrailingSemicolon: 501 | enabled: true 502 | 503 | TrailingWhitespace: 504 | enabled: true 505 | 506 | TrailingZero: 507 | enabled: false 508 | 509 | TransitionAll: 510 | enabled: false 511 | 512 | UnnecessaryMantissa: 513 | enabled: true 514 | 515 | UnnecessaryParentReference: 516 | enabled: true 517 | 518 | UrlFormat: 519 | enabled: true 520 | 521 | UrlQuotes: 522 | enabled: true 523 | 524 | VariableForProperty: 525 | enabled: false 526 | properties: [] 527 | 528 | VendorPrefix: 529 | enabled: true 530 | identifier_list: base 531 | additional_identifiers: [] 532 | excluded_identifiers: [] 533 | exclude: 534 | - _normalize.scss 535 | 536 | ZeroUnit: 537 | enabled: true 538 | 539 | Compass::*: 540 | enabled: false 541 | -------------------------------------------------------------------------------- /scss/_alert.scss: -------------------------------------------------------------------------------- 1 | // ***************************************************************************** 2 | // Alert styles overrides 3 | // 4 | // Copy css rules from `node_modules/bootstrap/scss/_alert.scss` to this file 5 | // to override default ones. 6 | // ***************************************************************************** 7 | 8 | @import "../node_modules/bootstrap/scss/alert"; 9 | -------------------------------------------------------------------------------- /scss/_animation.scss: -------------------------------------------------------------------------------- 1 | // ***************************************************************************** 2 | // Animation styles overrides 3 | // 4 | // Copy css rules from `"node_modules/bootstrap/scss/_animation.scss` to this file 5 | // to override default ones. 6 | // ***************************************************************************** 7 | 8 | @import "../node_modules/bootstrap/scss/animation"; 9 | -------------------------------------------------------------------------------- /scss/_breadcrumb.scss: -------------------------------------------------------------------------------- 1 | // ***************************************************************************** 2 | // Breadcrumb styles overrides 3 | // 4 | // Copy css rules from `"node_modules/bootstrap/scss/_breadcrumb.scss` to this file 5 | // to override default ones. 6 | // ***************************************************************************** 7 | 8 | @import "../node_modules/bootstrap/scss/breadcrumb"; 9 | -------------------------------------------------------------------------------- /scss/_button-group.scss: -------------------------------------------------------------------------------- 1 | // ***************************************************************************** 2 | // Button group styles overrides 3 | // 4 | // Copy css rules from `"node_modules/bootstrap/scss/_button-group.scss` to this file 5 | // to override default ones. 6 | // ***************************************************************************** 7 | 8 | @import "../node_modules/bootstrap/scss/button-group"; 9 | -------------------------------------------------------------------------------- /scss/_buttons.scss: -------------------------------------------------------------------------------- 1 | // ***************************************************************************** 2 | // Buttons styles overrides 3 | // 4 | // Copy css rules from `"node_modules/bootstrap/scss/_buttons.scss` to this file 5 | // to override default ones. 6 | // ***************************************************************************** 7 | 8 | @import "../node_modules/bootstrap/scss/buttons"; 9 | -------------------------------------------------------------------------------- /scss/_card.scss: -------------------------------------------------------------------------------- 1 | // ***************************************************************************** 2 | // Card styles overrides 3 | // 4 | // Copy css rules from `"node_modules/bootstrap/scss/_card.scss` to this file 5 | // to override default ones. 6 | // ***************************************************************************** 7 | 8 | @import "../node_modules/bootstrap/scss/card"; 9 | -------------------------------------------------------------------------------- /scss/_carousel.scss: -------------------------------------------------------------------------------- 1 | // ***************************************************************************** 2 | // Carousel styles overrides 3 | // 4 | // Copy css rules from `"node_modules/bootstrap/scss/_carousel.scss` to this file 5 | // to override default ones. 6 | // ***************************************************************************** 7 | 8 | @import "../node_modules/bootstrap/scss/carousel"; 9 | -------------------------------------------------------------------------------- /scss/_close.scss: -------------------------------------------------------------------------------- 1 | // ***************************************************************************** 2 | // Close styles overrides 3 | // 4 | // Copy css rules from `"node_modules/bootstrap/scss/_close.scss` to this file 5 | // to override default ones. 6 | // ***************************************************************************** 7 | 8 | @import "../node_modules/bootstrap/scss/close"; 9 | -------------------------------------------------------------------------------- /scss/_code.scss: -------------------------------------------------------------------------------- 1 | // ***************************************************************************** 2 | // Code styles overrides 3 | // 4 | // Copy css rules from `"node_modules/bootstrap/scss/_code.scss` to this file 5 | // to override default ones. 6 | // ***************************************************************************** 7 | 8 | @import "../node_modules/bootstrap/scss/code"; 9 | -------------------------------------------------------------------------------- /scss/_custom-forms.scss: -------------------------------------------------------------------------------- 1 | // ***************************************************************************** 2 | // Custom forms styles overrides 3 | // 4 | // Copy css rules from `"node_modules/bootstrap/scss/__custom-forms.scss` to 5 | // this file to override default ones. 6 | // ***************************************************************************** 7 | 8 | @import "../node_modules/bootstrap/scss/custom-forms"; 9 | -------------------------------------------------------------------------------- /scss/_dropdown.scss: -------------------------------------------------------------------------------- 1 | // ***************************************************************************** 2 | // Dropdown styles overrides 3 | // 4 | // Copy css rules from `"node_modules/bootstrap/scss/_dropdown.scss` to this file 5 | // to override default ones. 6 | // ***************************************************************************** 7 | 8 | @import "../node_modules/bootstrap/scss/dropdown"; 9 | -------------------------------------------------------------------------------- /scss/_forms.scss: -------------------------------------------------------------------------------- 1 | // ***************************************************************************** 2 | // Forms styles overrides 3 | // 4 | // Copy css rules from `"node_modules/bootstrap/scss/_forms.scss` to this file 5 | // to override default ones. 6 | // ***************************************************************************** 7 | 8 | @import "../node_modules/bootstrap/scss/forms"; 9 | -------------------------------------------------------------------------------- /scss/_grid.scss: -------------------------------------------------------------------------------- 1 | // ***************************************************************************** 2 | // Grid styles overrides 3 | // 4 | // Copy css rules from `"node_modules/bootstrap/scss/_grid.scss` to this file 5 | // to override default ones. 6 | // ***************************************************************************** 7 | 8 | @import "../node_modules/bootstrap/scss/grid"; 9 | -------------------------------------------------------------------------------- /scss/_images.scss: -------------------------------------------------------------------------------- 1 | // ***************************************************************************** 2 | // Images styles overrides 3 | // 4 | // Copy css rules from `"node_modules/bootstrap/scss/_images.scss` to this file 5 | // to override default ones. 6 | // ***************************************************************************** 7 | 8 | @import "../node_modules/bootstrap/scss/images"; 9 | -------------------------------------------------------------------------------- /scss/_input-group.scss: -------------------------------------------------------------------------------- 1 | // ***************************************************************************** 2 | // Input Group styles overrides 3 | // 4 | // Copy css rules from `"node_modules/bootstrap/scss/_input-group.scss` to this file 5 | // to override default ones. 6 | // ***************************************************************************** 7 | 8 | @import "../node_modules/bootstrap/scss/input-group"; 9 | -------------------------------------------------------------------------------- /scss/_jumbotron.scss: -------------------------------------------------------------------------------- 1 | // ***************************************************************************** 2 | // Jumbotron styles overrides 3 | // 4 | // Copy css rules from `"node_modules/bootstrap/scss/_jumbotron.scss` to this file 5 | // to override default ones. 6 | // ***************************************************************************** 7 | 8 | @import "../node_modules/bootstrap/scss/jumbotron"; 9 | -------------------------------------------------------------------------------- /scss/_list-group.scss: -------------------------------------------------------------------------------- 1 | // ***************************************************************************** 2 | // List Group styles overrides 3 | // 4 | // Copy css rules from `"node_modules/bootstrap/scss/_list-group.scss` to this file 5 | // to override default ones. 6 | // ***************************************************************************** 7 | 8 | @import "../node_modules/bootstrap/scss/list-group"; 9 | -------------------------------------------------------------------------------- /scss/_media.scss: -------------------------------------------------------------------------------- 1 | // ***************************************************************************** 2 | // Media styles overrides 3 | // 4 | // Copy css rules from `"node_modules/bootstrap/scss/_media.scss` to this file 5 | // to override default ones. 6 | // ***************************************************************************** 7 | 8 | @import "../node_modules/bootstrap/scss/media"; 9 | -------------------------------------------------------------------------------- /scss/_mixins.scss: -------------------------------------------------------------------------------- 1 | // ***************************************************************************** 2 | // Bootstrap mixins overrides 3 | // 4 | // Copy mixins from `"node_modules/bootstrap/scss/_mixins.scss` to this 5 | // file to override default values. 6 | // ***************************************************************************** 7 | 8 | @import "../node_modules/bootstrap/scss/mixins"; 9 | -------------------------------------------------------------------------------- /scss/_modal.scss: -------------------------------------------------------------------------------- 1 | // ***************************************************************************** 2 | // Modal styles overrides 3 | // 4 | // Copy css rules from `"node_modules/bootstrap/scss/_modal.scss` to this file 5 | // to override default ones. 6 | // ***************************************************************************** 7 | 8 | @import "../node_modules/bootstrap/scss/modal"; 9 | -------------------------------------------------------------------------------- /scss/_nav.scss: -------------------------------------------------------------------------------- 1 | // ***************************************************************************** 2 | // Navigation styles overrides 3 | // 4 | // Copy css rules from `"node_modules/bootstrap/scss/_nav.scss` to this file 5 | // to override default ones. 6 | // ***************************************************************************** 7 | 8 | @import "../node_modules/bootstrap/scss/nav"; 9 | -------------------------------------------------------------------------------- /scss/_navbar.scss: -------------------------------------------------------------------------------- 1 | // ***************************************************************************** 2 | // Navbar styles overrides 3 | // 4 | // Copy css rules from `"node_modules/bootstrap/scss/_navbar.scss` to this file 5 | // to override default ones. 6 | // ***************************************************************************** 7 | 8 | @import "../node_modules/bootstrap/scss/navbar"; 9 | -------------------------------------------------------------------------------- /scss/_pagination.scss: -------------------------------------------------------------------------------- 1 | // ***************************************************************************** 2 | // Pagination styles overrides 3 | // 4 | // Copy css rules from `"node_modules/bootstrap/scss/_pagination.scss` to this file 5 | // to override default ones. 6 | // ***************************************************************************** 7 | 8 | @import "../node_modules/bootstrap/scss/pagination"; 9 | -------------------------------------------------------------------------------- /scss/_popover.scss: -------------------------------------------------------------------------------- 1 | // ***************************************************************************** 2 | // Popover styles overrides 3 | // 4 | // Copy css rules from `"node_modules/bootstrap/scss/_popover.scss` to this file 5 | // to override default ones. 6 | // ***************************************************************************** 7 | 8 | @import "../node_modules/bootstrap/scss/popover"; 9 | -------------------------------------------------------------------------------- /scss/_progress.scss: -------------------------------------------------------------------------------- 1 | // ***************************************************************************** 2 | // Progress bar styles overrides 3 | // 4 | // Copy css rules from `"node_modules/bootstrap/scss/_progress.scss` to this file 5 | // to override default ones. 6 | // ***************************************************************************** 7 | 8 | @import "../node_modules/bootstrap/scss/progress"; 9 | -------------------------------------------------------------------------------- /scss/_responsive-embed.scss: -------------------------------------------------------------------------------- 1 | // ***************************************************************************** 2 | // Responsive Embed styles overrides 3 | // 4 | // Copy css rules from `"node_modules/bootstrap/scss/_responsive-embed.scss` to this file 5 | // to override default ones. 6 | // ***************************************************************************** 7 | 8 | @import "../node_modules/bootstrap/scss/responsive-embed"; 9 | -------------------------------------------------------------------------------- /scss/_tables.scss: -------------------------------------------------------------------------------- 1 | // ***************************************************************************** 2 | // Table styles overrides 3 | // 4 | // Copy css rules from `"node_modules/bootstrap/scss/_tables.scss` to this file 5 | // to override default ones. 6 | // ***************************************************************************** 7 | 8 | @import "../node_modules/bootstrap/scss/tables"; 9 | -------------------------------------------------------------------------------- /scss/_tags.scss: -------------------------------------------------------------------------------- 1 | // ***************************************************************************** 2 | // Tag styles overrides 3 | // 4 | // Copy css rules from `"node_modules/bootstrap/scss/_tags.scss` to this file 5 | // to override default ones. 6 | // ***************************************************************************** 7 | 8 | @import "../node_modules/bootstrap/scss/tags"; 9 | -------------------------------------------------------------------------------- /scss/_tooltip.scss: -------------------------------------------------------------------------------- 1 | // ***************************************************************************** 2 | // Tooltip styles overrides 3 | // 4 | // Copy css rules from `"node_modules/bootstrap/scss/_tooltip.scss` to this file 5 | // to override default ones. 6 | // ***************************************************************************** 7 | 8 | @import "../node_modules/bootstrap/scss/tooltip"; 9 | -------------------------------------------------------------------------------- /scss/_utilities.scss: -------------------------------------------------------------------------------- 1 | // ***************************************************************************** 2 | // Bootstrap utilities overrides 3 | // 4 | // Copy utilities from `"node_modules/bootstrap/scss/_utilities.scss` to this 5 | // file to override default values. 6 | // ***************************************************************************** 7 | 8 | @import "../node_modules/bootstrap/scss/utilities"; 9 | -------------------------------------------------------------------------------- /scss/_variables.scss: -------------------------------------------------------------------------------- 1 | // ***************************************************************************** 2 | // Bootstrap variables overrides 3 | // 4 | // Copy variables from `"node_modules/bootstrap/scss/_variables.scss` to this 5 | // file to override default values. 6 | // ***************************************************************************** 7 | 8 | @import "../node_modules/bootstrap/scss/variables"; 9 | 10 | $fa-font-path: "../fonts/"; 11 | 12 | $enable-transitions: true; 13 | -------------------------------------------------------------------------------- /scss/ant-strap-flex.scss: -------------------------------------------------------------------------------- 1 | // Ant Strap with Flexbox enabled 2 | // 3 | // Includes all the imports from the standard Bootstrap project, but enables 4 | // the flexbox variable. 5 | 6 | $enable-flex: true; 7 | 8 | @import "ant-strap"; 9 | -------------------------------------------------------------------------------- /scss/ant-strap-grid.scss: -------------------------------------------------------------------------------- 1 | // Ant Strap Grid only 2 | // 3 | // Includes relevant variables and mixins for the regular (non-flexbox) grid 4 | // system, as well as the generated predefined classes (e.g., `.col-4-sm`). 5 | 6 | 7 | // 8 | // Variables 9 | // 10 | 11 | @import "variables"; 12 | 13 | // 14 | // Grid mixins 15 | // 16 | 17 | @import "../node_modules/bootstrap/scss/mixins/clearfix"; 18 | @import "../node_modules/bootstrap/scss/mixins/breakpoints"; 19 | @import "../node_modules/bootstrap/scss/mixins/grid-framework"; 20 | @import "../node_modules/bootstrap/scss/mixins/grid"; 21 | 22 | @import "grid"; 23 | -------------------------------------------------------------------------------- /scss/ant-strap-reboot.scss: -------------------------------------------------------------------------------- 1 | // Ant Strap Reboot only 2 | // 3 | // Includes only Normalize and our custom Reboot reset. 4 | 5 | @import "variables"; 6 | @import "../node_modules/bootstrap/scss/mixins/hover"; 7 | @import "../node_modules/bootstrap/scss/mixins/tab-focus"; 8 | 9 | @import "../node_modules/bootstrap/scss/normalize"; 10 | @import "../node_modules/bootstrap/scss/reboot"; 11 | -------------------------------------------------------------------------------- /scss/ant-strap.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Ant Strap v1.0.0 (http://getbootstrap.com) 3 | // Bootstrap v4.0.0-alpha.3 (http://getbootstrap.com) 4 | // Copyright 2011-2016 The Bootstrap Authors 5 | // Copyright 2011-2016 Twitter, Inc. 6 | // Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 7 | // 8 | 9 | // Core variables and mixins 10 | @import "variables"; 11 | @import "mixins"; 12 | 13 | // Reset and dependencies 14 | @import "../node_modules/bootstrap/scss/normalize"; 15 | @import "../node_modules/bootstrap/scss/print"; 16 | 17 | // Core CSS 18 | @import "../node_modules/bootstrap/scss/reboot"; 19 | @import "../node_modules/bootstrap/scss/type"; 20 | 21 | // Theme Overrides 22 | @import "images"; 23 | @import "code"; 24 | @import "grid"; 25 | @import "tables"; 26 | @import "forms"; 27 | @import "buttons"; 28 | 29 | // Components 30 | 31 | @import "animation"; 32 | @import "dropdown"; 33 | @import "button-group"; 34 | @import "input-group"; 35 | @import "custom-forms"; 36 | @import "nav"; 37 | @import "navbar"; 38 | @import "card"; 39 | @import "breadcrumb"; 40 | @import "pagination"; 41 | @import "tags"; 42 | @import "jumbotron"; 43 | @import "alert"; 44 | @import "progress"; 45 | @import "media"; 46 | @import "list-group"; 47 | @import "responsive-embed"; 48 | @import "close"; 49 | 50 | 51 | // Components w/ JavaScript 52 | @import "modal"; 53 | @import "tooltip"; 54 | @import "popover"; 55 | @import "carousel"; 56 | 57 | // Utility classes 58 | @import "utilities"; 59 | 60 | // Font Awesome classes 61 | @import "../node_modules/font-awesome/scss/variables"; 62 | @import "../node_modules/font-awesome/scss/mixins"; 63 | @import "../node_modules/font-awesome/scss/path"; 64 | @import "../node_modules/font-awesome/scss/core"; 65 | @import "../node_modules/font-awesome/scss/larger"; 66 | @import "../node_modules/font-awesome/scss/fixed-width"; 67 | @import "../node_modules/font-awesome/scss/list"; 68 | @import "../node_modules/font-awesome/scss/bordered-pulled"; 69 | @import "../node_modules/font-awesome/scss/animated"; 70 | @import "../node_modules/font-awesome/scss/rotated-flipped"; 71 | @import "../node_modules/font-awesome/scss/stacked"; 72 | @import "../node_modules/font-awesome/scss/icons"; 73 | @import "../node_modules/font-awesome/scss/screen-reader"; 74 | --------------------------------------------------------------------------------