├── .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 | [](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 | [](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 |
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 |
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 |
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 |
--------------------------------------------------------------------------------