Compare commits

...

1035 Commits

Author SHA1 Message Date
Christopher S. Case 2cfc3130c3 Merge pull request #68 from kerryj89/patch-1
Fix keyboard navigation in dropdown
2022-05-06 08:47:28 -05:00
Kerry Johnson ab74c547c4 Fix keyboard navigation in dropdown: Uncaught TypeError: Cannot read properties of undefined (reading 'focus')
The previous change assumed jQuery was in use (angular.element uses jQuery Lite by default which does NOT support class names with .find() -  https://docs.angularjs.org/api/ng/function/angular.element).  This change works without wrapping angular.element() around the selectors but I did it to keep it AngularJS-ish (don't really know if there are benefits to making it into a jqLite or jQuery object again).
2022-05-05 19:23:58 -05:00
Christopher S. Case 0c839cb8b5 chore(release): v3.0.7 2020-11-19 09:26:24 -06:00
Christopher S. Case 6981210c47 updating changelog for missing version. 2020-11-19 09:09:51 -06:00
Christopher S. Case efb8b4d652 support passing in arguments to release task. 2020-11-19 09:02:45 -06:00
Christopher S. Case b791ae3cee added release to package scripts 2020-11-19 08:57:33 -06:00
Christopher S. Case c094c726d0 Merge pull request #64 from DaleCam/Fix-Issue-61
Add scrollable property to modal
2020-11-18 18:56:13 -06:00
Christopher S. Case c529b3418e Merge pull request #65 from Drumstix42/Auto-position-class-fix
Update tooltip.js positionTooltip
2020-11-18 16:59:10 -06:00
Drumstix42 0427230a24 Update tooltip.js positionTooltip
- update `positionTooltip` fn to apply the proper class to tooltips/popovers when using "auto" placement determination
- now if a popover with "auto right" ends up being calculated to the left, the popover will receive the correct `left` class, and not `right`
2020-11-18 09:18:40 -05:00
Dale Cameron 5823072290 Added Unit Tests and fixed attribute bug 2020-10-07 23:53:33 -05:00
Dale Cameron 01907c07fb set scollable property to default to false 2020-10-07 14:52:18 -05:00
Dale Cameron 645413b3f5 feat - add scollable property to modal
Adds optional property scrollable to modal. Fixes issue #61
2020-10-07 14:47:54 -05:00
Christopher S. Case 3e9b981821 Merge pull request #59 from Morgul/morgul-docs-update
Updated documentation
2019-10-16 15:32:43 -05:00
Christopher S. Case 1cef435c40 updated documentation
Included suggestions from #58.
2019-10-16 15:00:34 -05:00
Christopher S. Case a94c3026ea Merge pull request #57 from ElitenetDenmark/patch-1
Update plunker.js
2019-10-05 11:05:25 -05:00
Elitenet Denmark c99c2108ba Update plunker.js
Small typo got in somehow
2019-10-05 16:22:09 +02:00
Christopher S. Case 0e41f3f555 Merge pull request #56 from Morgul/fix-unit-tests
Update .travis.yml
2019-10-04 21:18:13 -05:00
Christopher S. Case 09177883a6 Update Gruntfile.js
Cleaned up eslint issue.
2019-10-04 21:12:31 -05:00
Christopher S. Case d1127c0bb3 Update .travis.yml
Change node version.
2019-10-04 21:07:33 -05:00
Christopher S. Case 3288b0a6c5 Update .travis.yml
Should fix unit tests.
2019-10-04 21:03:02 -05:00
Christopher S. Case f268c0cd3d Merge pull request #55 from Morgul/vertical-tabs-fix
Fix vertical tabs.
2019-10-04 20:58:13 -05:00
Christopher S. Case 7500dffac8 Update tabset.html
Fixed vertical tabs.
2019-10-04 20:56:11 -05:00
Christopher S. Case 0ece58228a Merge pull request #54 from Morgul/fix-plunker
Fixed plunker url
2019-10-04 20:52:16 -05:00
Christopher S. Case 7a7dfa4174 Fixed plunker url
Closes #50.
2019-10-04 20:46:58 -05:00
Christopher S. Case 1048156cde Update index.html
Fixed typo.
2019-10-04 20:44:04 -05:00
Christopher S. Case c5a84fdd5d Update README.md 2019-08-09 09:10:57 -05:00
Christopher S. Case a76e3a7cd0 Create FUNDING.yml 2019-08-09 08:54:09 -05:00
Christopher S. Case 46896dd2cc Update README.md 2019-08-09 08:46:01 -05:00
Christopher S. Case f5f7eb5dd1 Update README.md 2019-08-09 08:45:37 -05:00
Christopher S. Case 49c218781a Merge pull request #47 from WiseBanyan/clean-up-versions
Clean up versions
2018-12-04 16:31:02 -06:00
Adam 4db145e785 Fixed docs to somewhat work better than they did. Updated bootstrap to 4.1.1 2018-12-04 14:07:03 -08:00
Adam 08977793e2 Get 3.0.6 ready for distribution 2018-12-04 14:07:03 -08:00
Adam ae25ba3fc8 Remove old versions of docs 2018-12-04 14:07:03 -08:00
Christopher S. Case 20d1f35729 Merge pull request #46 from WiseBanyan/fix-modal-class-test
Adjust last animation change to fix test
2018-11-16 17:19:27 -06:00
Adam f147abd89c Adjust backdrop closing listener to be defined before digest like previously to not break a test. Adding class for proper animation left after digest. 2018-11-16 14:43:37 -08:00
Adam 400992549b fix typo 2018-11-16 13:14:37 -08:00
Christopher S. Case 6245a62870 Merge pull request #43 from WiseBanyan/fix-modal-animation
Fix modal-backdrop animation addClass to be in link function
2018-11-16 09:39:16 -06:00
Adam 6be7102c66 Fix modal-backdrop animation addClass to be in link function like modal-window is to fix entry animation. 2018-11-16 00:52:17 -08:00
Christopher S. Case 68379dde33 Merge pull request #41 from WiseBanyan/fix-scroll-padding
Revert "fix(modal): check for overflow hidden"
2018-11-15 23:14:14 -06:00
Adam f52c2c1db7 Revert "fix(modal): check for overflow hidden"
This reverts commit 433e536e6b.

This "fix" causes the general use case of being attached to the body to fail. This can be seen on the example site, past v2 the padding isn't added when it should be and the page 'jumps' when the scrollbar disappears.
2018-11-15 19:32:01 -08:00
Christopher S. Case 2d40031e3b ...uh, changes? 2018-10-03 23:13:20 -05:00
Christopher S. Case f032bec5ae chore(release): v3.0.5 2018-10-03 23:12:06 -05:00
Christopher S. Case 76b5279570 Merge pull request #38 from Morgul/ccase-dropdown-fixes
Dropdown template fixes
2018-10-03 23:08:36 -05:00
Christopher S. Case c4adfe5ef5 Fixed dropdowns with templates. 2018-10-03 23:06:31 -05:00
Christopher S. Case 1d99792129 Merge pull request #37 from Morgul/demo-fixes
Made some fixes to the demo page.
2018-10-03 22:51:52 -05:00
Christopher S. Case b9b807ca4a fixed some issues with the demo page. 2018-10-03 22:50:43 -05:00
Christopher S. Case 2de7918ed0 Merge pull request #36 from Morgul/svg-icon-fix
Svg icon fix
2018-10-03 22:32:15 -05:00
Christopher S. Case 0d38e16f1e Merge pull request #34 from haricot/patch-4
Fix #32 "grunt release" that do not convert HTML templates to js
2018-10-03 22:24:41 -05:00
Christopher S. Case 83957b1138 updated demo. 2018-10-03 22:19:12 -05:00
Christopher S. Case bd78c0c683 fixed svg-icon issues. 2018-10-03 22:17:43 -05:00
Nicolas PASCAL 12cfe7f4a6 Fix "grunt release" don't converted html templates to js 2018-08-30 00:03:11 +02:00
Christopher S. Case c6553764e7 chore(release): v3.0.4 2018-07-04 14:20:07 -05:00
Christopher S. Case 17c8b7320f Merge pull request #31 from trask/glowroot
Support non-anchor dropdown items
2018-07-04 14:17:04 -05:00
Trask Stalnaker 9139217264 Allow direct focus on different input 2018-07-03 21:42:39 -07:00
Trask Stalnaker 5ab70160dc Open dropdown on keydown 2018-07-03 21:41:31 -07:00
Trask Stalnaker 76eae6ebc5 Support non-anchor dropdown items 2018-07-02 13:13:36 -07:00
Christopher S. Case c38558d2d3 Merge pull request #30 from haricot/patch-3
Fixed test carousel that did fail
2018-07-01 20:28:58 -05:00
Nicolas PASCAL c4b0a970f2 Fixed test carousel that did fail 2018-07-02 01:37:29 +02:00
Christopher S. Case 522beb170b Merge pull request #28 from haricot/patch-2
Fix carousel-indicators active
2018-06-22 08:20:55 -05:00
Nicolas PASCAL 5b79e032dd Fix carousel-indicators active 2018-06-22 12:54:40 +02:00
Christopher S. Case 09061a4f98 Merge pull request #27 from haricot/bootstrap4_1
Fixes carousel for Bootstrap 4.1
2018-06-14 19:11:12 -05:00
Nicolas PASCAL 48a5282b45 fix test carousel bootstrap 4.1.1 2018-06-15 00:52:57 +02:00
Nicolas PASCAL d24e60ee50 fix test carousel bootstrap 4.1.1 2018-06-15 00:50:49 +02:00
Nicolas PASCAL dca4c5835a fix template carousel for bootstrap 4.1.1 2018-06-15 00:42:43 +02:00
Christopher S. Case 690400df8e Even more up to date gitter link. 2018-03-15 18:30:07 -05:00
Christopher S. Case ab1b11315c Updated Gitter Link
Now it works.
2018-03-15 18:25:32 -05:00
Christopher S. Case d00e27b267 chore(release): v3.0.3 2018-03-12 21:09:18 -05:00
Christopher S. Case d076ba2ffc Merge pull request #18 from YuraDubensky/master-issue-12
Fix issue#12 (fix tests for krlos2011 progress bar fixes)
2018-03-12 20:50:41 -05:00
Christopher S. Case 964338ef87 Merge branch 'master' into master-issue-12 2018-03-12 20:50:24 -05:00
Christopher S. Case f46406be13 Merge pull request #17 from krlos2011/master
Fixed style and striped use in progressbar
2018-03-12 20:44:10 -05:00
Carlos Fernández 6a84363adf Fixed tests for progressbar. Added .dropdown-item in typeahed default template 2018-03-12 14:36:24 +01:00
YuraDubensky d8242f2eba Fix tests for krlos2011 pull request 2018-03-05 14:01:02 +02:00
YuraDubensky 6a6ea36e25 Merge pull request #3 from krlos2011/master
Merge fix for Issue-12 to speedup release
2018-03-05 13:31:51 +02:00
YuraDubensky ffc493e60b Merge pull request #5 from YuraDubensky/master
Sync
2018-03-05 13:30:05 +02:00
YuraDubensky e78eed1475 Merge pull request #4 from Morgul/master
Pull latest from fork master
2018-03-05 13:28:34 +02:00
Christopher S. Case deb2a98df6 Merge pull request #16 from YuraDubensky/master
Fix eslint errors
2018-02-23 08:09:28 -06:00
YuraDubensky 2292244fa8 Make tooltip arrow compatible with boostrap 4 stable version 2018-02-23 14:31:22 +02:00
Carlos Fernández 152e1290a6 Fixed style and striped use in progressbar 2018-02-23 11:19:24 +01:00
YuraDubensky 39c52f270d Fix for non-Jquery JQLite 2018-02-23 11:17:48 +02:00
Christopher S. Case b229cfe76c added one more task to fix demo. 2018-02-22 20:27:39 -06:00
Christopher S. Case 170d46e195 fixed issue with npm run demo. 2018-02-22 20:22:56 -06:00
YuraDubensky 19aa6d631c Fix eslint 2018-02-22 18:01:58 +02:00
YuraDubensky 5ee1731dd1 Fix eslint 2018-02-22 17:55:16 +02:00
YuraDubensky 4b7b3aea4f Merge pull request #2 from YuraDubensky/mater-fix-issue#14
Mater fix issue#14
2018-02-22 16:39:32 +02:00
YuraDubensky ca4307a11d Merge pull request #1 from YuraDubensky/master-fix#7
Master fix#7
2018-02-22 16:38:26 +02:00
YuraDubensky 48dd128dbc Fix spacing 2018-02-22 14:58:42 +02:00
YuraDubensky cf59717498 Fix issue #14
Fix issue #14 - apply placement classes prior to tooltip placement - so calculated width is correct.
2018-02-22 14:54:55 +02:00
Christopher S. Case 6cda57a9b9 Merge pull request #13 from YuraDubensky/master-fix#7
Master fix#7
2018-02-21 15:04:54 -06:00
YuraDubensky 932d0d5ce7 Fix comment 2018-02-21 19:20:30 +02:00
YuraDubensky c6d1970aef Fix issue #7
Fix issue #7 (https://github.com/Morgul/ui-bootstrap4/issues/7)
Fix compatibility with latest Boostrap 4 (parent element should also has open class set)
2018-02-21 19:15:21 +02:00
Christopher S. Case 0b2adcab59 fixed docs. 2018-02-12 15:12:55 -06:00
Christopher S. Case 96bd561806 chore(release): v3.0.2 2018-02-12 15:10:54 -06:00
Christopher S. Case d024cfb867 add accessibility properties back in. 2018-02-12 15:10:19 -06:00
Christopher S. Case 35ba8568e3 fixed several issues with current build. 2018-02-12 15:09:52 -06:00
Christopher S. Case 344388d99d chore(release): v3.0.1 2018-02-11 20:08:07 -06:00
Christopher S. Case 91170f3deb Merge pull request #8 from blah238/patch-3
Fix pagination styling
2018-01-30 19:15:32 -06:00
blah238 e44b6d6f2e Fix pagination styling
Updates the default pagination template to use the Bootstrap 4 `page-item` and `page-link` classes.
2018-01-30 18:55:24 -06:00
Christopher S. Case 6c7495261d update docs for 3.0.0 release. 2017-12-11 12:14:22 -06:00
Christopher S. Case a4306f5619 chore(release): v3.0.0 2017-12-11 12:02:44 -06:00
Christopher S. Case 5d9c3e26e5 chore(release): v3.0.0 2017-12-11 12:01:50 -06:00
Christopher S. Case 9d6fc4cdc3 chore(release): v3.0.0 2017-12-11 11:59:00 -06:00
Christopher S. Case b3e1350fda This closes #6. 2017-12-11 11:03:36 -06:00
Christopher S. Case e5946fdb67 Update README.md 2017-12-09 22:59:37 -06:00
Christopher S. Case 5ff0edd3ca missing files 2017-12-09 22:45:31 -06:00
Christopher S. Case b8508e0d56 chore(release): v3.0.0-beta.4 2017-12-09 22:44:18 -06:00
Christopher S. Case 5a1a8921a8 chore(release): Starting v3.0.0-beta.4 2017-12-09 22:43:38 -06:00
Christopher S. Case df4f2f611b some demo page fixes. 2017-12-09 22:33:50 -06:00
Christopher S. Case a6c586481b fixed some issues with the demo page. 2017-12-09 22:07:56 -06:00
Christopher S. Case 88b7127bab minor style fix. 2017-12-09 22:03:48 -06:00
Christopher S. Case 2b5b5c4b39 unit tests now pass.
I had to skip some of the dropdown tests, which fail for reasons I couldn't figure out. But I've marked them, and will look at them
later.
2017-12-09 22:03:06 -06:00
Christopher S. Case 66bd1bcf32 Merge pull request #4 from Enelogic/fix-carousel
Fixes carousel in BS4 by applying correct transition classes
2017-12-08 07:07:16 -06:00
wcoppens 4ce8eb90d5 Fixes carousel in BS4 by applying correct transition classes 2017-12-08 13:54:46 +01:00
Christopher S. Case 61d5d4b286 Merge pull request #3 from Nemesis9765/feature/add.tab.support
add support for tabs. fix unit tests for tabs and popovers. todo: fix…
2017-09-25 08:27:01 -05:00
Roger Fedor 11912f7f2e update doc libraries 2017-09-24 00:07:36 -05:00
Roger Fedor 447415acaf add support for tabs. fix unit tests for tabs and popovers. todo: fix dropdown tests 2017-09-23 23:44:23 -05:00
Christopher S. Case 5cebd17748 Update docs for new release. 2017-09-14 10:16:32 -05:00
Christopher S. Case 98921f4560 Possible dropdown fixes. 2017-09-14 10:13:30 -05:00
Christopher S. Case 29d0c10d2d rudimentary popover fixes. 2017-09-14 10:12:55 -05:00
Christopher S. Case 5902ebbcb6 added instructions for building a release. 2017-09-13 16:10:06 -05:00
Christopher S. Case eee69719b7 update package for publishing. 2017-09-13 15:38:20 -05:00
Christopher S. Case 690b9a4b0b fixed popover and tooltip to function, but arrows are broken. 2017-09-13 15:36:18 -05:00
Christopher S. Case 5a2aa743a5 more updates. 2017-09-13 14:34:48 -05:00
Christopher S. Case 23cd283b7f Merge pull request #2 from Morgul/bootstrap4
docs fixes.
2017-09-13 14:05:44 -05:00
Christopher S. Case 745c75ffee docs fixes. 2017-09-13 14:08:02 -05:00
Christopher S. Case 2bfd24fbd6 Merge pull request #1 from Morgul/bootstrap4
Initial working version.
2017-09-13 13:48:25 -05:00
Christopher S. Case 70ac727a0d switched to docs folder instead of gh-pages branch. 2017-09-13 12:52:51 -05:00
Christopher S. Case a5f551acad some minor changes. 2017-09-13 12:37:40 -05:00
Christopher S. Case 1f4309a9e3 fixes to the demo site. 2017-09-13 12:31:14 -05:00
Christopher S. Case beca776f99 fixed dropdown styling and code. 2017-09-13 12:29:31 -05:00
Christopher S. Case 819a408ea1 mass coversion and demo pages update. 2017-09-13 11:14:15 -05:00
Christopher S. Case 84be83e008 fix timepicker. 2017-09-13 09:21:52 -05:00
Christopher S. Case e085280499 version bump. 2017-09-13 09:20:08 -05:00
Christopher S. Case 95ba34b067 Changed from 'in' class to 'show' class. 2017-09-13 09:06:31 -05:00
Christopher S. Case 07c3da465c Updated Readme.
For now, explain this is a fork, but don't update the rest of the readme. That'll come later.
2017-09-13 08:22:58 -05:00
Adam Gordon a2dee1bdeb docs: add steps to reproduce section to template (#6443)
* add new steps to reproduce section to github issue template to ask
issue filers to provide explicit steps to reproduce the issue so people
aren't left to guess or parse poorly written ones.
2017-01-30 13:13:38 -08:00
Wesley Cho 409eec4019 chore(release): starting 2.5.1 2017-01-28 05:34:16 -08:00
Wesley Cho b90485b2a4 chore(release): 2.5.0 2017-01-28 05:30:11 -08:00
Daniel Smith 0d79005f8d fix(angular): add compatibility with Angular 1.6
- Change how ngModelOptions is used to conform to Angular 1.6
- Catch rejections as per change to $q

Closes #6427
Fixes #6360
2017-01-28 05:26:34 -08:00
mattcollier e538d2f71f docs(collapse): fix typo
Closes #6398
Closes #6421
2017-01-23 11:31:37 -08:00
Matthias Dailey f5b357fd11 fix(tooltip): unbind keypress listener on hide
- Unbind listener on hide to fix memory leak

Closes #6423
Fixes #6405
2017-01-23 11:30:23 -08:00
Alex (Jinghao) Yan 761db7b4b7 fix(dropdown): do nothing if not open when clicking
- When clicking, do nothing if dropdown is closed on document listener

Closes #6414
2017-01-23 03:07:20 -08:00
tariqporter 86ee770834 fix(carousel): remove transition buffering
- Remove transition buffering

Closes #6367
Fixes #5967
2017-01-23 02:27:05 -08:00
david.humphrey@senecacollege.ca 47c4544e23 chore(npm): add fields to package.json
Closes #6418
2017-01-21 07:07:47 -08:00
Wesley Cho e8479514cd chore(release): bump to 2.5.0 2017-01-21 07:06:41 -08:00
Sherry Chang cf3f870735 Add CDNJS version badge in README.md (#6297)
This will add the badge to show its version on CDNJS and also link to its page on CDNJS!
2017-01-20 13:16:27 -08:00
Umer Farooq 7d3a7502fa feat(dropdown): make dropdown-append-to-body configurable (#6356)
* feat(dropdown): make dropdown-append-to-body configurable

Make dropdown-append-to-body accept a value which will be evaluated to
determine if the menu should be appended to body. If no value is
specified, or a non-false value is specified then the menu will be
appended to body. If the value is `false` then the menu will not be
appended to body.

* feat(dropdown): append and remove menu when menu is opened or closed

Only append and remove append-to and append-to-body menus when the
menu is opened or closed. This allows for the values of append-to and
append-to-body to be evaluated when the menu is toggled open, and also
prevents littering of the DOM.

* fix(dropdown): don't remove the dropdown-menu on close

Instead of removing the dropdown-menu on close, append it back to the
original element.
2017-01-20 13:14:29 -08:00
Jeff Carey 71dc691323 feat(pagination): Added menu and menuitem roles (closes #6383) (#6386)
feat(pagination): Added test
2017-01-20 13:13:54 -08:00
Scott Kao 42f3cc847a chore(license): update year to 2017 2017-01-10 05:23:17 -08:00
Wesley Cho b755559ec9 chore(release): starting 2.4.1 2016-12-29 23:19:51 -08:00
Wesley Cho 9e6d2a0a14 chore(changelog): update for 2.4.0 2016-12-29 23:17:21 -08:00
Wesley Cho 2596b9805f chore(release): 2.4.0 2016-12-29 23:15:22 -08:00
Douglas Ludlow 5a3e44a146 feat(dateparser): allow overriding of parsers
- Add ability to override parser

Closes #6370
Closes #6373
2016-12-29 23:12:17 -08:00
Wesley Cho 4872c05a32 docs(accordion): remove unnecessary div
- Remove unnecessary div creating a doubled border

Closes #6378
2016-12-27 03:01:04 -08:00
Wesley Cho fc686bb7a3 chore(release): starting 2.3.3 2016-12-27 01:59:02 -08:00
Wesley Cho 7f664f9f45 chore(release): 2.3.2 2016-12-27 01:54:51 -08:00
khlevon98 955848c3b1 fix(dropdown): re-add close
- Re-add closing via service

Closes #6382
Fixes #6321
Fixes #6357
Fixes #6364
2016-12-27 01:47:15 -08:00
Wesley Cho 7a1d54c8c3 chore(release): starting 2.3.2 2016-12-10 03:18:18 -08:00
Wesley Cho 0ed1a59aef chore(release): 2.3.1 2016-12-10 03:14:22 -08:00
Wesley Cho f2722b59a5 fix(dateparser): add new date format for angular 1.5+ only
- Only add parsing ability for new date format for angular 1.5+

Fixes #6349
2016-12-10 03:06:50 -08:00
béla 57ed7e4f7f chore(readme): fix variable used
Closes #6344
2016-12-02 06:23:16 -08:00
Steven Yeh 90848144e8 chore(changelog): fix generated links
- Fix links to use proper tags

Closes #6340
2016-12-01 22:35:18 -08:00
Wesley Cho a4d7076c8e chore(dropdown): fix accidental deletion 2016-11-29 23:25:21 -08:00
Wesley Cho c824731ae8 revert(dropdown): undo addition of unbind 2016-11-29 23:19:43 -08:00
Wesley Cho 1653afa210 refactor(dropdown): use container for class toggle detection 2016-11-29 01:47:23 -08:00
Wesley Cho 7e2f2c1bad chore(datepickerPopup): change to on/off 2016-11-29 00:19:19 -08:00
Wesley Cho 61f365abfd chore(timepicker): change to on/off 2016-11-29 00:18:36 -08:00
Wesley Cho ec2d9ad605 chore(typeahead): change to on/off 2016-11-29 00:17:13 -08:00
Wesley Cho 08b50ccb1c chore(dropdown): change to on/off 2016-11-29 00:14:33 -08:00
patricksmms 44ab0a8106 fix(dropDown): remove dropdown on close
- Unbind keybind on close

Closes #6326
Fixes #6314
2016-11-29 00:09:08 -08:00
Wesley Cho 1962485504 fix(datepickerPopup): change to toTimezone
- Change conversion to use `toTimezone`, as the date is going from UI date with timezone applied to timezone set by `ngModelOptions`

Fixes #6235
2016-11-27 02:26:52 -08:00
Jonathan Perez 8a4f625ef6 fix(modal): revert focus behavior on open
- On open, do not focus the first focusable element

Closes #6295
2016-11-27 02:18:17 -08:00
Wesley Cho 7be665399f chore(release): starting 2.3.1 2016-11-26 07:43:50 -08:00
Wesley Cho 2edb5d38cb chore(release): update changelog 2016-11-26 07:41:20 -08:00
Wesley Cho 4e06553f7c chore(release): 2.3.0 2016-11-26 07:38:21 -08:00
Janne 25ff206767 feat(dateparser): add LLLL support
- Add LLLL support. This requires Angular 1.5+ to take advantage of this.

Closes #6281
2016-11-26 07:35:37 -08:00
Wesley Cho 997813f0eb chore(release): starting 2.2.1 2016-10-10 08:30:03 -07:00
Wesley Cho 25db68e903 chore(release): 2.2.0 2016-10-10 08:26:52 -07:00
Mark Wheeldon 78559761dc fix(tooltip): cancel timeout when hidden
- Cancel timeout when hidden so that positioning does not incorrectly occur when not visible

Closes #6226
Fixes #6221
2016-10-10 07:47:56 -07:00
nmccready 14384fc40f fix(dropdown): exit keybind is not open
- Exit keybindFilter if the $scope is not present

Closes #6278
Fixes #6208
2016-10-10 07:44:34 -07:00
JuliaUsanova 58f1813aca fix(position): correct scrollbar width calculation
Closes #6273
2016-10-10 07:42:36 -07:00
Eric Schneider 9666c64f4a feat(timepicker): add validation information
- Add validation information for specific violations, allowing users to style classes generated by Angular

Closes #6230
Closes #6259
2016-09-24 21:14:55 -04:00
Nicholas Heiner f9f7e02d15 fix(modal): improve ARIA support.
- Add accessibility with multiple modals

Closes #6203
2016-09-23 23:21:25 -05:00
Wesley Cho a4bea6f229 chore(release): starting 2.2.0 2016-09-23 23:19:16 -05:00
Wesley Cho c00851a18b chore(release): 2.1.4 2016-09-23 23:15:28 -05:00
Sergey Lysenko c687acd489 docs: create retina-ready favicon
- Update favicon with retina-friendly icon

Closes #6255
2016-09-23 23:09:24 -05:00
Eric Schneider 3f70d76327 fix(datepicker): improve accessibility
- Improve accessibility with forward and previous buttons with screen readers

Closes #6247
2016-09-23 23:06:17 -05:00
Nathan Herzing 08ee30a91e fix(dropdown): prevent premature scope removal
- Toggle false after focus executes

Closes #6238
Fixes #6225
2016-09-23 23:03:16 -05:00
ravi-123 7671bd6ed4 docs(popover): add popover-class 2016-09-23 23:01:31 -05:00
Evan Theurer 1a132dd757 docs(collapse): add navigation collapse example
- Add an example for using collapse with the bootstrap navbar

Closes #3481
Closes #6217
2016-09-01 20:18:59 -07:00
Wesley Cho 9881a27397 chore(release): starting 2.1.4 2016-08-25 08:38:42 -07:00
Wesley Cho 294b151342 chore(release): 2.1.3 2016-08-25 08:35:57 -07:00
Axel Navarro 969eb9c74d fix(modal): compile only once with component
- When using the component option, do not compile content in order to take advantage of later compilation

Closes #6202
Fixes #6201
2016-08-24 20:26:33 -07:00
Wesley Cho 048d85a2ad chore(release): starting 2.1.3 2016-08-22 10:04:12 -07:00
Wesley Cho 876e72a0df chore(release): 2.1.2 2016-08-22 10:01:02 -07:00
Wesley Cho 6734908108 test(modal): fix custom matchers
- Trigger a test failure if resolved on rejected promise and rejected on resolved promise
- Trigger a test failure if neither resolved or rejected when expected resolved/rejected promise

Closes #6195
2016-08-22 09:57:20 -07:00
Wesley Cho 515bcf2933 fix(collapse): revert change to transition css
- Revert change to `getScrollFromElement` function

Closes #6196
Fixes #6194
2016-08-22 09:54:30 -07:00
Wesley Cho 148371fb6d docs(tooltip): add info on Safari bug
- Add information on Safari bug, affecting all versions up to 9 at the least

Closes #5445
2016-08-22 09:53:11 -07:00
Axel Navarro 8047c06258 docs(modal): added a simple component modal demo
Closes #6193
2016-08-22 08:03:06 -07:00
Axel Navarro 3e8ecfffe0 fix(modal): close and dismiss bindings on component
- Correctly bind close and dismiss handlers on component usage

Closes #6192
Fixes #6191
2016-08-21 12:12:44 -07:00
Georgii Dolzhykov ddcacb7a83 fix(datepicker): fix accidental global
- Fix accidental global usage

Closes #6188
2016-08-21 04:42:13 -07:00
Wesley Cho 915eda0540 chore(release): starting 2.1.2 2016-08-20 22:54:15 -07:00
Wesley Cho f9eede7555 chore(release): 2.1.1 2016-08-20 22:49:30 -07:00
Axel Navarro fb5fabf580 fix(modal): switch to .append
- Switch to `append` since `html` is jQuery specific

Closes #6187
Fixes #6186
2016-08-20 22:46:35 -07:00
Wesley Cho aef24cde4b fix(collapse): default to css
- Default to value set from CSS for height/width

Closes #6182
Fixes #6045
2016-08-20 05:58:59 -07:00
Wesley Cho b893a93f82 docs(collapse): fix height on horizontal
- Fix height on horizontal collapse usage

Closes #6050
Closes #6183
2016-08-20 05:58:03 -07:00
Wesley Cho 6352f13e85 chore(release): starting 2.1.1 2016-08-19 14:34:37 -07:00
Wesley Cho 76cd65ef1a chore(release): 2.1.0 2016-08-19 14:31:32 -07:00
Wesley Cho 84cc2cf5cc fix(collapse): set overflow to hidden on transition
- When collapse is transitioning, set `overflow: hidden` to avoid possibility of scrollbars changing size

Closes #6180
Fixes #5474
2016-08-19 10:37:06 -07:00
Wesley Cho 2ade0545a9 feat(modal): add component support
- Add support for `component` option

Closes #5683
Closes #6179
2016-08-19 09:54:05 -07:00
Stuart Forster f5ff12c0a4 fix(tooltip): close tooltip on esc
- On keypress of escape, close tooltip/popover

Closes #6177
Fixes #6108
2016-08-18 14:10:17 -07:00
Wesley Cho f147d22f5c fix(datepickerPopup): apply timezone conversion
- Apply timezone conversion to selecting today

Closes #6173
Fixes #6147
2016-08-18 13:21:15 -07:00
Wesley Cho f798a47d48 chore: bump angular version 2016-08-18 10:12:21 -07:00
Wesley Cho 43a1f75e7c chore(demo): bump versions 2016-08-18 10:11:55 -07:00
Nick Heiner 4a5e6a7418 fix(modal): improve ARIA support
- Add aria-labelledby and aria-described by support

Closes #4772
2016-08-17 22:09:30 -07:00
Wesley Cho af6c2aaca0 chore(release): starting 2.1.0 2016-08-17 22:09:18 -07:00
Kirkland 61415e1968 Adding roles to the datepicker templates to resolve an ADA violation. (#6170)
Closes #6170
2016-08-17 17:45:34 -07:00
Wesley Cho 5123e38a49 docs(tooltip): add ngSanitize to Plunker
- Add ngSanitize to Plunkers for uib-tooltip-html and uib-popover-html Plunkers

Closes #6165
Fixes #6157
2016-08-16 08:36:00 -07:00
Wesley Cho ca20be4667 fix(collapse): remove unnecessary inherit
- Remove unnecessary `inherit` property, which causes issues when custom widths are used, including percentage based widths

Closes #6164
Fixes #6163
2016-08-16 08:35:09 -07:00
Wesley Cho d9dd5803ae chore(release): starting 2.0.3 2016-08-15 13:45:53 -07:00
Wesley Cho 86f528730b chore(release): 2.0.2 2016-08-15 13:42:33 -07:00
Wesley Cho fbd0845c95 fix(datepickerPopup): correctly format to timezone
- Format according to ngModelOptions timezone if specified

Closes #6159
Fixes #6105
Fixes #6146
Fixes #6147
2016-08-15 13:39:17 -07:00
Patrick Johnmeyer 5597e2fa99 docs(carousel): switch to unsplash.it
- Change image hosting services due to expired SSL cert for lorempixel

Closes #6144
2016-08-15 07:50:14 -07:00
Matt Lewis 6bad7592b9 fix(dropdown): fix keyboard-nav
- Fix keyboard-nav for when not using append-to or append-to-body

Fixes #6102
Closes #6154
2016-08-11 04:38:14 -07:00
Wesley Cho 0023d1bd97 chore(typeahead): adjust regex comment 2016-08-08 23:09:09 -07:00
Wesley Cho be0d0564c2 docs(demo): add link to ng-bootstrap
- Add link to ng-bootstrap project on demo site

Closes #6083
Closes #6145
2016-08-08 02:52:06 -07:00
Gerardo 9f3e387473 docs(accordion): add wrapping div
Closes #6139
2016-08-08 02:44:57 -07:00
Martin Staffa 58e0433b96 chore(demo): use https in the generated link
This avoids the popup about an unsecure connection when opening examples in plnkr.

Closes #6132
2016-08-02 08:36:06 +02:00
Wesley Cho 87a373936d chore(release): starting 2.0.2 2016-08-02 08:33:35 +02:00
Wesley Cho e8e4ef1070 chore(release): 2.0.1 2016-08-02 08:28:25 +02:00
Francesco Pipita c61d16a933 fix(modal): restore broken stacked modals
Closes #6103
Closes #6104
2016-07-22 00:25:10 +01:00
Adam Gordon 6bfb4cdbdf chore(docs): fix specified sizes
Closes #6110
Closes #6111
2016-07-21 23:33:51 +01:00
Wesley Cho cac6a45345 chore(changelog): update with changes 2016-07-20 00:10:00 -07:00
Bryan Gillespie 8a53327bd6 docs(tooltip): add inline html example
- Make demo more clear on html tooltip capability

Closes #4738
Closes #6067
2016-07-20 00:06:27 -07:00
Wesley Cho 9f06a8bfdb chore(release): starting 2.0.1 2016-07-20 00:02:45 -07:00
Wesley Cho 5173779f84 chore(release): 2.0.0 2016-07-19 23:59:40 -07:00
Wesley Cho 1616e9720d feat(tooltip): remove replace usage
- Remove `replace: true` usage

BREAKING CHANGE: The template structure changed slightly due to the removal of `replace: true` - see documentation examples in action to see differences in practice.

Closes #5994
2016-07-19 13:40:38 -07:00
Ashton b77f02cdce docs(readme): change to https
- Change from http to https

Closes #6064
2016-06-30 08:45:49 -07:00
craig 39d9b9886d feat(datepicker): add monthColumns
- Add `monthColumns` option

Closes #5515
Closes #5935
2016-06-27 09:45:30 -07:00
Dolev Dori 2d831bcc2a fix(dropdown): align position correctly with scrollbar
- Fix horizontal alignment independent of the presence of a vertical scrollbar

Closes #6008
Fixes #5942
2016-06-27 09:32:13 -07:00
Wesley Cho d846e2d788 fix(dateparser): correctly format with literals
- Fix formatting of dates with literal usage

Closes #6055
Fixes #5620
Fixes #5802
2016-06-27 09:18:25 -07:00
Anthony Cleaver 409b7aa3b3 fix(modal): remove window class after animation
- Wait until animations are complete before removing window class

BREAKING CHANGE: This introduces a minor behavior change in when the class is removed

Closes #6056
Fixes #6051
2016-06-27 08:42:20 -07:00
Manuel Siggen ed3400bb68 fix(typeahead): clear validity in $digest
- Clear within $digest cycle

Closes #6033
Fixes #6032
2016-06-26 17:17:46 -07:00
Anthony Cleaver 1cbd73d227 feat(modal): append using $animate
- Use $animate.enter to append transcluded content

Closes #6023
Closes #6029
2016-06-26 17:07:01 -07:00
robjacobs 433e536e6b fix(modal): check for overflow hidden
Check if appendToElement has scrolling disabled before adding
the scrollbar padding.

Fixes #6037
Closes #6041
2016-06-21 15:35:26 -04:00
squelix 1ec099767f feat(collapse): add horizontal support
- Add support for horizontal collapsing

Closes #3593
Closes #6010
2016-06-16 10:52:31 -07:00
Wesley Cho 4e0e34f47a revert(dropdown): change back to .constant() 2016-06-15 10:12:14 -07:00
Wei Wang 7457fb0e63 feat(dropdown): use .value() for uibDropdownConfig
Closes #6004
Closes #6006
2016-06-15 06:44:55 -07:00
Wei Wang 23ef372a17 docs(README): add modal to index-nocss list
Closes #6005
2016-06-14 14:04:25 -07:00
Andrij Fedyk 164811ab35 fix(tooltip): missed dependency for cjs
Closes #5999
2016-06-14 14:03:19 -07:00
Andrij Fedyk 1de58a3e5d fix(modal): remove unused template from modal 2016-06-14 14:03:17 -07:00
dirk 7e320e0e92 fix(datepickerPopup): use value instead of viewValue
Closes #6007
2016-06-14 14:02:22 -07:00
Wesley Cho d6fe9c7e7a feat(rating): remove replace usage
- Remove `replace: true` usage

BREAKING CHANGE: Due to the removal of `replace: true`, this results in a slight change to the HTML structure - see the documentation examples to see it in action.

Closes #5998
2016-06-13 20:17:38 -07:00
Wesley Cho 75188211aa feat(timepicker): remove replace usage
- Remove `replace: true` usage

BREAKING CHANGE: This removes `replace: true`, which changes the HTML structure slightly - see the documentation examples to see it in action.

Closes #5997
2016-06-13 20:17:03 -07:00
johanneskrtek 4e68778561 feat(timepicker): avoid allowing to tab to controls
- Prevent the ability to tab to timepicker controls, leaving incrementing/decrementing to keyboard actions on the individual inputs

Closes #5930
2016-06-13 20:15:34 -07:00
Wesley Cho a68cc20dd4 chore(dropdown): add guard when closing 2016-06-13 12:54:15 -07:00
Wesley Cho ba113a050e chore(pager): add tabindex module dep 2016-06-13 10:35:53 -07:00
Wesley Cho 0d8cec6e4f feat(pager): toggle tabindex when disabled
- Add `tabindex="-1"` when disabled and remove it when not for accessibility

Closes #5996
2016-06-13 10:34:52 -07:00
Wesley Cho a47bcedad4 feat(datepickerPopup): remove replace usage
- Remove `replace: true` usage

BREAKING CHANGE: Due to the nature of `replace: true`, this has a slight structural HTML change in the popup as a result - see documentation examples for the change in action.

Closes #5993
2016-06-13 10:18:37 -07:00
Wesley Cho 387c6e7bbc feat(pagination): remove replace usage
- Remove `replace: true` usage

BREAKING CHANGE: Due to the removal of `replace: true`, this affects the HTML structure slightly - see documentation examples to see new usage.

Closes #5992
2016-06-13 10:17:53 -07:00
Wesley Cho 9b24e1dfed feat(pager): remove replace usage
- Remove `replace: true usage

BREAKING CHANGE: This removes `replace: true` usage from the pager, which causes a slight usage change - see documentation examples for new usage.

Closes #5991
2016-06-13 10:08:01 -07:00
Wesley Cho 5f4eedd0e7 feat(accordion): add appropriate tabindex on disabled
- Add `tabindex="-1"` to accordion group header when disabled and remove when not to assist with accessibility

Closes #4067
Closes #5990
2016-06-13 10:07:24 -07:00
Wesley Cho 96d52ce150 feat(modal): remove replace usage
- Remove `replace: true` usage

BREAKING CHANGE: This removes `replace: true` usage, causing some structural changes to the HTML - the major part here is that there is no more backdrop template, and the top level elements for the window/backdrop elements lose a little flexibility. See documentation examples for new structure.

Closes #5989
2016-06-13 10:06:48 -07:00
renhao 55cf26bf28 chore(datepicker): remove dead code
Closes #5995
2016-06-13 10:05:31 -07:00
Wesley Cho 5fdcbd6b90 chore(dropdown): add guard 2016-06-13 00:21:39 -07:00
Wesley Cho e92fb7fa7c feat(datepicker): remove replace: true usage
- Remove `replace: true` usage

BREAKING CHANGE: As a result of removal of `replace: true`, there is the potential that this may break some CSS layout due to the slightly different HTML. Refer to the documentation examples to see the new structure.

Closes #5988
2016-06-12 23:53:11 -07:00
Wesley Cho 1a870a3bb1 feat(pagination): disable tabbing when disabled
- Add directive for toggling `tabindex="-1"` when ngDisabled is true, and removing tabindex when false

Closes #5984
2016-06-12 23:52:20 -07:00
Wesley Cho 6038403179 fix(dropdown): bind event listener on dropdown menu
- Bind keypress listener to dropdown menu for handling keyboard navigation

Closes #5982
2016-06-12 23:51:25 -07:00
Wesley Cho fb38d0db2e chore(position): add missing , 2016-06-12 15:18:32 -07:00
Wesley Cho 5046bd4e56 feat(carousel): remove replace: true usage
- Remove `replace: true` usage from the carousel and the slide

BREAKING CHANGE: Due to the removal of `replace: true`, this causes a slight HTML structure change to the carousel and the slide elements - see documentation demos to see how it changes. This also caused removal of the ngTouch built in support - if one is using ng-touch, one needs to add the `ng-swipe-left` and `ng-swipe-right` directives to the carousel element with relevant logic.

Closes #5987
2016-06-12 15:13:26 -07:00
Wesley Cho 2458c2863d feat(alert): remove replace: true usage
- Remove `replace: true` usage

BREAKING CHANGE: This removes the `replace: true` usage, so this has an effect on how one uses the directive in the template - see documentation for reference

Closes #5986
2016-06-12 15:12:25 -07:00
Wesley Cho 3819bbe8fa feat(accordion): remove replace: true usage
- Remove usage of `replace: true`
- Remove unnecessary `panel-class` feature

BREAKING CHANGE: This removes usage of `replace: true` in the accordion group, which results in a template change where the template no longer needs to contain the panel itself, but its contents. The accordion group will add the `panel` class by default, so the user just needs to add the appropriate classes to the accordion group element. This allows the user to use ng-class as well to fully control the panel related classes, so `panel-class` now is unnecessary

Closes #5985
2016-06-12 15:11:10 -07:00
Wesley Cho e2016fd2eb refactor(position): abstract out common logic
- Abstracting out conditional to position service adjustTop method to increase readability and to prepare it for use in dropdown/typeahead

Closes #5983
2016-06-12 15:10:15 -07:00
Wesley Cho 34a1443a85 fix(tooltip): reposition for placement top
- Reposition the tooltip when the placement option contains top in order to account for resizing of tooltip from right side

Closes #5959
2016-06-11 15:47:04 -07:00
atrinh 35ced04445 fix(modal): filter out non-tabbable elements
- Ensure non-tabbable elements with taxindex of -1 are not tabbed to

Closes #5963
Fixes #5955
2016-06-09 14:25:22 -07:00
Wesley Cho 90fa2f682a docs(readme): add note about versioning policy
- Add information on versioning policy

Closes #5800
Closes #5958
2016-06-03 21:40:23 -07:00
cherry-geqi 4fef0377bb fix(datepickerPopup): specify dependency on datepicker
- Specify dependency on datepicker module

Closes #5954
2016-06-02 23:27:38 -07:00
rcholic b0466d9e6e fix(datepickerPopup): clear date when button is clicked
- Fix clearing the date when the clear button is clicked

Closes #5945
Fixes #5906
2016-05-31 08:50:12 -07:00
Wesley Cho 4b912228be feat(tooltip): add expression support
- Add expression support for tooltip-trigger
- Add support for object event bindings for showing/hiding tooltips

BREAKING CHANGE: This removes support for plain strings and interpolations in tooltip-trigger and popover-trigger - please change these appropriately. See test changes in this commit for reference

Closes #5221
Closes #5938
2016-05-28 22:14:05 -07:00
Wesley Cho 9a606dca7c chore(typeahead): add matcher class 2016-05-28 18:21:36 -07:00
Adam Gordon 6d5b84a0ba fix(typeahead): remove duplicate id attribute
* remove any duplicate `id` attribute on the typeahead hint element if used on
  the original input element.

BREAKING CHANGE: This change removes the `id` attribute on the first `<input>`
element placed into the DOM when the `typeahead-show-hint` attribute is used
and there is an `id` attribute present on the original `uib-typeahead` element.
This could affect selectors if they are being used.

Closes #5936
Fixes #5926
2016-05-28 17:27:20 -07:00
Wesley Cho cce00970f1 feat(dropdown): focus toggle on close from click
- Focus the toggle element when the click causes the dropdown menu to close

BREAKING CHANGE: This changes the focus behavior of the dropdown slightly, and potentially may break code built around current usage

Closes #5934
Fixes #5782
2016-05-28 17:18:39 -07:00
Wesley Cho 23b91d951e feat(datepicker): add ngModelOptions support
- Adds support for ngModelOptions in the `datepicker-options` object

BREAKING CHANGE: This modifies the current behavior around the datepicker & popup's ngModelOptions, which may affect custom components that are built around both

Closes #5933
Fixes #5825
2016-05-28 09:09:18 -07:00
Wesley Cho 053035234c chore: bump angular to 1.5.5
Closes #5920
2016-05-28 07:27:45 -07:00
deplay a075824087 feat(stackedMap): improve perf of removeTop
- Change `removeTop` from `slice` to `pop`

Closes #5925
Closes #5932
2016-05-28 07:24:25 -07:00
Wesley Cho 13c14af9a2 fix(typeahead): change to select class
- Change to select `.uib-typeahead-match` class instead of the `li` tag

BREAKING CHANGE: This changes the selector used so that it doesn't select for the `li` tag specifically, but the elements with the class `uib-typeahead-match` - if using a custom template, this class needs to be added to the `li` element in the typeahead popup template.

Closes #5922
Fixes #5848
2016-05-24 11:31:34 -07:00
Wesley Cho 280ddaf47e chore(release): starting 2.0.0 2016-05-22 20:09:55 -07:00
Wesley Cho dc85f67b2d chore(release): 1.3.3 2016-05-22 20:05:01 -07:00
Christopher Rued 2ffb86f201 feat(typeahead): Add support for should-select
By default behaves as before. If specified, allows a custom function
to be defined to determine whether the keydown event should trigger
selection based on the `typeahead-should-select` attribute.

Closes #5671
Closes #5794
2016-05-21 22:33:00 -07:00
Adam Gordon aec5304ef5 chore(button): add known issue for tooltip/popover
* add known issue to button docs indicating a CSS issue when using a tooltip or
  a popover.

Closes #5890
2016-05-16 08:47:26 -07:00
robjacobs eb02778297 chore(tab): code cleanup
Removing unnecessary code added under PR #5489

Closes #5891
Fixes #5888
2016-05-10 14:09:39 -04:00
robjacobs 26d399557e feat(tab): allow strings for index
- Allows the use of strings for the tab index and active value
on the tabset.

Closes #5713
Closes #5827
2016-05-09 16:09:47 -04:00
Adam Gordon 9436b9e7bd docs: add note for datepicker/datepicker-popup
* update the datepicker and datepicker popup docs to let user know
  about using the `uibDateParser` service to convert a date string
  into a `Date` object.

Closes #5880
2016-05-08 07:57:28 -07:00
kwiateusz b2984b0416 docs(tabs): mention that index needs to be number
Closes #5876
2016-05-07 07:53:22 -06:00
Guillaume Royer 5188463f69 fix(datepickerPopup): convert numbers to date before parsing
Closes #5873
Fixes #5871
2016-05-04 09:04:55 -06:00
Wesley Cho a417ec2ab9 fix(datepicker): add intermediary valid date check
- Add intermediary check for whether the date is valid due to an IE quirk of turning a valid date into an invalid date when using the date constructor

Closes #5872
Fixes #5865
2016-05-03 13:15:34 -07:00
Wesley Cho d923df9100 chore(dateparser): port logic from Angular
- Port logic from timezone converter from Angular

Closes #5870
2016-05-03 09:47:07 -07:00
Wesley Cho dd09148893 feat(modal): add resolve values to template
- Expose resolve in template as $resolve for those modals opened with a controller

BREAKING CHANGE: Since this adds support for $resolve being exposed on $scope, it could potentially overwrite any pre-existing usage of it - this is an unlikely scenario, but marked as a breaking change in case this key is being used

Closes #5808
Closes #5857
2016-04-29 12:02:34 -07:00
ruiann 5741be9d5b chore(modal): use $controller to apply controllerAs
- Change to use `$controller` to apply the `controllerAs` feature

Closes #5861
2016-04-29 08:58:49 -07:00
Scotty Waggoner 1611248daa docs(progressbar): fix danger reference
Closes #5854
2016-04-28 08:35:25 -07:00
Bohdan L e51373d84b chore(readme): fix link
Closes #5852
2016-04-28 07:40:43 -07:00
Perry Hoffman 4c40d9db7f feat(accordion): add alternative attribute support
- Add support for alternative attributes

Closes #5834
Closes #5839
2016-04-27 21:24:56 -07:00
crhistian26 f88067a04f docs(accordion): fix typo
Closes #5838
2016-04-24 21:32:27 -07:00
Wesley Cho 0137179ee6 docs(accordion): add example with custom header
- Add an example with custom header template

Closes #5831
Fixes #5829
2016-04-21 09:53:53 -07:00
Dolev Dori 2b48259a35 fix(dropdown): align position with vertical scrollbar
- Correctly aligns the dropdown when a vertical scrollbar is present

Closes #5830
Fixes #4317
2016-04-20 07:38:04 -07:00
Karl Sieburg 241fea8355 feat(tabs): pass the selected index to onDeselect
-  Add the index of the tab the user attempted to open to the onDeselect call
Closes #5820
Closes #5821
2016-04-19 13:24:01 -07:00
bryanbak f0e661c7c0 docs(tabs): get rid of 'active' option on uib-tab directive
Update demo to remove deprecated active attribute

Closes #5809
2016-04-14 13:31:27 -07:00
Wesley Cho 78db2cefe7 chore(release): starting 1.3.3 2016-04-14 08:32:07 -07:00
Wesley Cho 5eab8ffc49 chore(release): 1.3.2 2016-04-14 08:27:49 -07:00
Daniel Gornstein 68200bbccb fix(dropdown): stop esc keydown event
Fixes #5778
Closes #5787

BREAKING CHANGE: Stops propagation of keydown event when escape key is pressed. Removes keydown event from the document and moves it to the dropdown element.
2016-04-13 10:11:54 -07:00
Jean-Francois Larouche 68ed7ab477 docs(datepicker): fix customClass and dateDisabled
- Fix documentation for customClass and dateDisabled functions

Closes #5797
Fixes #5757
2016-04-13 06:37:22 -07:00
robjacobs d96d53ec32 fix(tooltip): arrow position
- Ensure the arrow position gets recalculated if the tooltip
position changes while open.

Closes #5785
Fixes #5779
2016-04-12 12:43:47 -07:00
robjacobs aef08d5555 fix(modal): scroll padding only added once
- Ensure the scroll padding meant to offset the modal-open class
only gets added once when mulitple modal windows are open.

Closes #5790
Fixes #5789
2016-04-12 12:41:42 -07:00
Wesley Cho a27a4e2204 feat(modal): add no css import script
- Add index-nocss.js for modals

Closes #5788
2016-04-12 09:09:15 -07:00
Mike Chen a887d2b4c9 fix(modal): missing require in modal
- Fix incorrect require of css instead of position module

Closes #5786
2016-04-12 08:21:33 -07:00
Paul des Garets bba3f27e3d fix(typeahead): use $setViewValue on blur
Use $setViewValue instead of setting directly $viewValue to '', to make new value go through validators.

Closes #5769
Fixes #5694
2016-04-07 15:26:13 -07:00
Wesley Cho 3d7191cc06 chore(isClass): clean up code style 2016-04-06 15:19:38 -07:00
Wesley Cho 32f78b8718 chore(isClass): clean up code style 2016-04-06 15:19:27 -07:00
Wesley Cho 4044f08980 chore(isClass): clean up code style 2016-04-06 15:19:16 -07:00
Wesley Cho 33cbd0f4a2 fix(datepicker): ensure datepicker is focused
- When date is selected, ensure datepicker is selected in Chrome

Closes #5761
Fixes #5754
2016-04-06 13:32:41 -07:00
Wesley Cho 3b8f18e373 chore(datepicker): change to single quotes 2016-04-06 10:34:08 -07:00
Wesley Cho 0f3a5214f4 chore(site): add guard to accessing global 2016-04-06 09:04:48 -07:00
Chris Thielen 37f9cd26e5 fix(site): allow FastClick to be blocked
Some users' adblock and virus protection is accidentally blocking third party `fastclick.js`.

Put a guard around the line that invokes the FastClick api

Closes #5756
2016-04-06 08:41:18 -07:00
Abdellatif Ait boudad 169c50403c docs(datepicker): remove popup example.
Closes #5755
2016-04-06 06:24:11 -07:00
Wesley Cho 38a334c7d8 chore(timepicker): remove inline style
- Remove inline style due to style being present in CSS

Closes #5751
2016-04-06 06:22:49 -07:00
Wesley Cho c05aefe96d chore(release): start 1.3.2 for real 2016-04-05 10:05:44 -07:00
Daniel Gornstein 98eb8f1a77 fix(datepickerPopup): do not show incorrect warning
This stops the datepicker popup from incorrectly showing a warning when not supplying any datepicker options.

Fixes #5743
Closes #5747
2016-04-05 09:46:25 -07:00
Wesley Cho 1c6c7b913c chore(release): starting 1.3.2 2016-04-05 07:39:19 -07:00
Wesley Cho 1519c4b46d chore(release): 1.3.1 2016-04-05 07:36:01 -07:00
Abdellatif Ait boudad 86ee9c3af1 fix(datepickerPopup): register popup module
Closes #5745
2016-04-05 07:34:25 -07:00
Pem Taira a08ad700f6 fix(modal): ensure correct index is set
- Fixes index set to avoid potential concurrent z-index values for multiple modals

Closes #5733
Fixes #5670
2016-04-04 22:20:00 -07:00
Wesley Cho 4ec35e4dcb chore(release): starting 1.3.1 2016-04-04 21:19:11 -07:00
Wesley Cho daf5c820e3 chore(release): 1.3.0 2016-04-04 21:16:08 -07:00
Adam Gordon d767afbd2a fix(tab): fix event handler call
* switch event handler call to look at `event.isDefaultPrevented()` instead of
  `event.defaultPrevented` as angular has implemented that method on jqlite
  events.

Fixes #5720
Closes #5738
2016-04-04 09:48:43 -06:00
robjacobs 701e0cbded feat(dateparser): use 68 as the yy format pivot year
- Use the same pivot year (68) for 2 digit date years as moment.js.
68 becomes 2068, 69 becomes 1969.

Closes #5735
2016-04-04 08:16:58 -07:00
Wesley Cho fc02fd1e30 feat(datepicker): deprecate literal usage
- Deprecate support for non-date objects with the datepicker

Closes #5658
Closes #5732
2016-04-04 08:15:09 -07:00
Türker Teke 4fe5d9936d docs(datepicker): fix creation of afterTomorrow
Closes #5714
2016-03-31 14:57:12 -07:00
Adam Gordon e0fcc004c0 fix(tab): add support for tab deselect prevention
* add ability for user to prevent currently selected tab's deselection by
calling `$event.preventDefault()` in tab's `deselect` callback.

Fixes #5720
Addresses #2715, #4836, and #5716.
Closes #5723
2016-03-31 14:15:08 -06:00
robjacobs cca1460eb0 fix(popover): rename title attribute
- Using an attribute of title on the tooltip template was
causing the browser tooltip to display.

Fixes #5719
Closes #5721
2016-03-31 13:47:12 -04:00
robjacobs c83d0a8daf fix(modal): body content shift
- Implements TWBS body padding fix to keep content in an element
with a container class from shifting when the body overflow is
set to hidden with the modal-open class.

Fixes #2631
Closes #5711
2016-03-30 18:01:49 -07:00
plondon a3964d4d81 feat(carousel): disable prev/next arrows if at bounds
- When at bounds and noWrap is enabled, disable the prev and next arrows when appropriate

BREAKING CHANGE: This adds disabled CSS - there is a possibility this may break existing UI slightly for those adding custom CSS/making use of custom templates. Modify the template appropriately if necessary

Closes #5704
Closes #5708
2016-03-30 08:29:30 -07:00
Charlie Rudolph 434c1c595b fix(carousel): use proper sort comparison
Fixes #5638
Closes #5702
2016-03-28 12:49:42 -07:00
Foxandxss 48f62a6dad chore(timepicker): remove css require on noncss 2016-03-27 19:05:25 +02:00
Foxandxss 1fa358fa6b chore: update devDependencies 2016-03-27 13:55:22 +02:00
Foxandxss 393d00e415 chore: update to Angular 1.5.3 2016-03-27 13:43:48 +02:00
Wei Wang 80748994a3 fix: modify CSS loaded for modules with dependencies
- Modify loading of CSS to be purely in the index.js files for modules that depend on other modules with CSS files

Closes #5698
2016-03-26 22:56:47 -07:00
Wesley Cho e50f602488 chore: add another exclusion 2016-03-26 15:16:27 -07:00
Wesley Cho f57302707c chore: fix improper build 2016-03-26 15:14:58 -07:00
Wei Wang de504fb512 feat: add support for loading without CSS
- Add support for loading components without bringing along the CSS,
  which is necessary for SystemJS/JSPM users

Closes #5696
2016-03-26 14:57:10 -07:00
Wesley Cho daf3b2e7f7 chore: remove patch version 2016-03-26 14:56:31 -07:00
Wesley Cho 41e670c34a chore: update node on Travis 2016-03-26 14:52:12 -07:00
Wesley Cho d1c49fe342 docs(timepicker): add note about DST
- Add note about DST, and declare explicit intent to not support
  concurrent usage of the date object with the timepicker and datepicker

Closes #5693
2016-03-25 22:21:32 -07:00
Wesley Cho f6735dc2bb test(dateparser): add literal tests
- Add broken tests for dateparser literals

Closes #5692
2016-03-25 22:20:35 -07:00
Tom Yau 03e60479d4 fix(tab): correctly identify index on removal
- Fix tab remove when tabs are destroyed in the middle

Closes #5689
2016-03-24 12:26:21 -07:00
Alexander Surinov 449c0d11d6 feat(timepicker): remove automatic padding when empty
- Removes automatic padding when input is empty to allow ability to manipulate inputs on user's side

Closes #5293
Closes #5299

BREAKING CHANGE: This removes automatic padding done by the timepicker
when the input is empty - if that behavior is desired, write a custom
directive implementing it
2016-03-24 06:54:10 -07:00
Ryan McKeel c534cb4a94 feat(dropdown): remove $locationChangeSuccess listener
- Remove listener for $locationChangeSuccess event

BREAKING CHANGE: The dropdown no longer will remain open on $locationChangeSuccess with autoclose set to disabled. Implement this logic inside app along with usage of isOpen two-way binding if this functionality is desired.

Closes #5648
Closes #5680
2016-03-22 12:19:32 -07:00
Wesley Cho 45165ba58b feat(datepicker): watch for changes when falsy
- When initial value is falsy, continue to watch for changes to update

Closes #5672
Closes #5677
2016-03-22 11:36:37 -07:00
Wesley Cho 8590ea7240 chore(dropdown): avoid IE11/Edge rendering bug
- Add `dropdown-menu` class to avoid rendering bug in IE11/Edge

Closes #5675
Fixes #5595
2016-03-22 11:35:59 -07:00
Wesley Cho 44fb19bc83 fix(carousel): fix animation from programmatic trigger
- Fix animations of slides when programmatically changing active slide
  index

Closes #5674
Fixes #5601
2016-03-22 11:35:19 -07:00
Wesley Cho fbc873cfb2 feat(datepickerPopup): split off popup from datepicker
- Split off datepicker popup into new datepickerPopup module

BREAKING CHANGE: The datepicker popup is no longer a part of the
datepicker module, but now a part of the datepickerPopup module. Please
change code accordingly if including specific modules

Closes #5676
2016-03-22 07:46:19 -07:00
Wesley Cho ad91c82164 feat(datepicker): remove deprecated code
- Remove all deprecated attribute support

BREAKING CHANGE: This removes inline datepicker attribute support and
attribute pass-throughs in the popup

Closes #5660
2016-03-21 11:11:13 -07:00
Adam Misiorny 46ff62dd75 docs(tooltip): fix example
Closes #5666
2016-03-21 11:06:31 -07:00
Adam Misiorny 34adfbce01 chore(tooltip): add missing space
Closes #5664
2016-03-21 09:03:54 -07:00
Foxandxss 307d8992a8 chore: update to Angular 1.5.2
Closes #5663
2016-03-21 09:02:20 -07:00
Wesley Cho fa46e16eab chore(release): starting 1.3.0 2016-03-20 09:04:42 -07:00
Wesley Cho 6955cf0079 chore(release): 1.2.5 2016-03-20 08:59:14 -07:00
Wesley Cho c7be087ca0 feat(timepicker): add pad-hours support
- Add support for optionally padding hours

Closes #4288
Closes #5633
2016-03-18 11:29:48 -07:00
Wesley Cho 1b888d4b0e fix(datepicker): dereference date initialization
- Dereference the date set to active date to prevent model automatically
  updating from equal reference

Closes #5643
Fixes #5441
2016-03-18 11:27:25 -07:00
Wesley Cho 5ef56e2de8 feat(modal): exclude hidden elements from query
- Modify element query to exclude hidden elements

Closes #5512
Closes #5644
2016-03-18 09:00:12 -07:00
mbisioli bc7c55aec8 fix(typeahead): reset errors when clearing
- Reset validation errors when clearing

Closes #5641
2016-03-16 19:31:42 -07:00
Wesley Cho 316e96c9b0 fix(datepicker): fix today button disabled condition
- Fix conditional for today button in popup

Closes #5637
Fixes #5622
2016-03-16 10:46:09 -07:00
Kaiyu Hsu 8747b585f4 feat(rating): ability to disable rating reset
Closes #5532
Closes #5631
2016-03-15 09:18:01 -07:00
Wesley Cho e15a22a8d4 fix(modal): dynamically fetch elements
- Dynamically fetch elements for determination of which is the first/last to tab/shift+tab to

Closes #5630
Fixes #5050
Fixes #5421
2016-03-15 08:58:58 -07:00
Wesley Cho bb36e40582 feat(tab): add select expressions
- Add support for event being available in select/deselect
  callbacks

Closes #5438
2016-03-14 12:33:39 -07:00
Thorsten Möller 7f93bfc16f docs(popover): add popover-enable
Closes #5615
Closes #5626
2016-03-14 12:19:57 -07:00
Spencer 1714a388b4 docs(popover): add popoverHtml usage
Closes #5617
2016-03-10 16:48:53 -08:00
robjacobs 66c416cf77 fix(tooltip): css to support arrow positioning
- Added css selectors to support arrow positioning on
popover/tooltip html and template directives.

Fixes #5610
Closes #5611
2016-03-09 09:40:26 -08:00
Ivan Voznyakovsky f2004a9186 docs(tab): remove old incorrect attribute blurb 2016-03-09 07:01:02 -08:00
philjones 54ac06af80 fix(popover): add popover-html css
- Add base CSS for popover-html

Closes #5603
Fixes #5602
2016-03-08 09:17:34 -08:00
Daniel Blanco ffb5529771 feat(accordion): add bound panel-class support
- Add `@` binding support for `panel-class`

Closes #5368
Closes #5596
2016-03-07 14:14:11 -08:00
Wesley Cho d6b9ee17e5 chore(release): starting 1.2.5 2016-03-06 07:08:57 -08:00
Wesley Cho 7cbf957a0e chore(release): 1.2.4 2016-03-06 07:05:09 -08:00
Wesley Cho 800c153ebd chore(release): starting 1.2.4 2016-03-05 22:48:32 -08:00
Wesley Cho 6f3800f860 chore(changelog): update with 1.2.3 changes 2016-03-05 22:47:23 -08:00
Wesley Cho fe30e5151e chore(release): 1.2.3 2016-03-05 22:43:30 -08:00
Wesley Cho a945dd247a fix(tabs): support heading with :
- Support `uib:tab-heading`

Closes #5590
Fixes #5568
2016-03-05 20:53:43 -08:00
Wesley Cho aac0d2b8fe fix(dropdown): correctly update isOpen
- Update bound value of `isOpen` correctly on toggle

Closes #5589
Fixes #3261
2016-03-05 17:46:29 -08:00
Wesley Cho 7949494493 fix(typeahead): change to original scope
- Change to original scope for running $digest

Closes #5588
Fixes #5467
2016-03-05 11:32:55 -08:00
Wesley Cho dd62c73a1a fix(modal): switch to $animate
- Change to adding backdrop with $animate.addClass due to $animateCss
  issues when animation is disabled

Closes #5585
Fixes #5298
2016-03-05 10:47:04 -08:00
Daniel Gornstein 313ba83793 fix(typeahead): update isOpen on escape
This updates isOpen immediately when pressing escape button.

Fixes #5579
Closes #5587
2016-03-05 10:46:08 -08:00
Dave Anderson 94c34b781f docs(datepicker): link to ngModelOptions documentation
fixes #5583
closes #5586
2016-03-05 10:06:27 -08:00
Wesley Cho 0beb06f24a chore(modal): remove unnecessary injection
- Remove unnecessary variable

Closes #5584
2016-03-05 08:02:23 -08:00
robjacobs a516178635 fix(position): auto position append to body
- Use the body as the viewport to determine available size for
auto position when the target element is append-to-body

Closes #5582
Fixes #5576
2016-03-04 12:21:46 -05:00
Wesley Cho c15dcbd1d1 feat(datepicker): add helpers for styling
- Add helper variables available for custom templates to hook into for styling

Closes #5580
2016-03-03 16:16:50 -08:00
Wesley Cho 4b06b0bcda chore(release): starting 1.2.3 2016-03-03 07:41:38 -08:00
Wesley Cho 55d9c3f48d chore(release): 1.2.2 2016-03-03 07:37:05 -08:00
Kuitos 5e43870c5d fix(modal): fix bindToController props
- Bind provided $scope props to controller before instantiation
- Make $onInit available regardless of controllerAs usage

Closes #5569
2016-03-03 07:27:33 -08:00
Adam Gordon 9d74d6ce50 fix(tabs): update doc and fix tab demo
* update tab documentation to clarify proper use and intended behavior of the
  `active` attribute on both the `tabset` and `tab` directives.
* fix the tab select buttons in the tab demo.

Closes #5575
Fixes #5551
2016-03-02 13:18:32 -08:00
Wesley Cho 4369800682 fix(rating): fix usage of aria-valuetext
- Fix usage to be on top level element

Closes #5573
Fixes #5571
2016-03-02 13:16:55 -08:00
Wesley Cho 09b2150eb0 docs(pager): fix templateUrl reference 2016-03-01 16:28:38 -08:00
Wesley Cho a816251c9f fix(Gruntfile): add per module flag
- Add flag per module

Closes #5567
2016-03-01 13:11:35 -08:00
dasu908 299f7517b6 fix(modal): fire ng-leave on close
- Have $animate execute class changes on window close

Closes #5556
Fixes #5399
2016-03-01 10:43:41 -08:00
Foxandxss d68086f978 fix(position): add CSS for webpack support
Closes #5561
2016-03-01 10:42:38 -08:00
Kyle Upchurch dd844ad8b3 docs(popover): correct default trigger
Closes #5564
Closes #5566
2016-03-01 10:41:41 -08:00
Matt Lewis 679a8d54a7 docs(changelog): add missing carousel breaking change
Closes #5565
2016-03-01 10:40:41 -08:00
Corey Wilson cc2d1b90c3 fix(tests): add style tag once
- Add style tag once to avoid multiplied DOM creation

Closes #5557
Fixes #5548
2016-02-29 19:14:00 -08:00
Matt Lewis c8922a2f04 fix(tooltip): import CSS
- Import the CSS in the tooltip index.js

Closes #5552
2016-02-29 14:26:27 -08:00
Adam Gordon 7d79cdddd2 docs: fix changelog for tab breaking change
* add breaking change note for 1.2.0 release for tab change in #5430.

Closes #5555
2016-02-29 12:45:30 -08:00
Wesley Cho bd55e14de5 chore(release): starting 1.2.2 2016-02-27 09:31:04 -08:00
Wesley Cho a9e810d0af chore(release): 1.2.1 2016-02-27 09:24:52 -08:00
Wesley Cho 70c1c9079a fix(popover): add missing selector
Closes #5549
2016-02-27 09:21:24 -08:00
Wesley Cho 1b709e5a5c chore(release): starting 1.2.1 2016-02-26 11:07:21 -08:00
Wesley Cho 43daa97561 chore(changelog): update changelog 2016-02-26 11:06:55 -08:00
Wesley Cho a69f4d29a8 chore(release): 1.2.0 2016-02-26 11:01:22 -08:00
Wesley Cho deedaea250 chore(pagination): minor tweaks 2016-02-26 07:32:20 -08:00
Andrew Shaffer 785c373241 feat(pagination): add custom label support
- Add ability to customize labels with `pageLabel` attribute

Closes #2532
Closes #5547
2016-02-26 07:31:29 -08:00
Ayman Mahfouz 8364e76bb4 feat(tabs): support optional classes on tab
- Add support for optional classes on each tab

Closes #5430
2016-02-25 14:23:27 -08:00
Foxandxss 85751551e3 docs(tooltip): add badge to appendToBody
Closes #5544
2016-02-25 10:25:12 -08:00
Wesley Cho d546671717 chore(ci): bump up node to 5.7 2016-02-25 09:43:13 -08:00
Graham Rounds 19e4171dfe docs(pager): add current page indicator
Add current page indicator to better convey pager behavior.

Closes #5524
Closes #5543
2016-02-25 09:37:23 -08:00
Foxandxss 2968f4cb9e docs(modal): document $onInit
Closes #5542
2016-02-25 09:35:58 -08:00
Foxandxss 876974973e fix(datepicker): assign initDate correctly to the controller
Closes #5541
2016-02-25 09:35:31 -08:00
Foxandxss 97244c7e64 chore(datepicker): change deprecation message for popup
Closes #5540
2016-02-25 09:34:51 -08:00
Foxandxss 1cc142b225 docs(datepicker): update to latest usage
Closes #5539
2016-02-25 09:34:11 -08:00
AndriIushchuk ab5941315f fix(datepicker): check if initDate is valid
Closes #5190
Closes #5266
2016-02-24 14:26:04 -08:00
robjacobs 4bb178ac5b fix(position): move inline styles to a class
- Move all inline styles supporting the auto position and
flicker suppression to a class.
- Refine how placement classes get applied to the tooltip

Closes #5535
Fixes #5470
2016-02-24 14:20:26 -08:00
Wesley Cho bbc4912d55 feat(datepicker): preserve popup attributes
- Preserve usage of specific popup attributes
- Change from attributes to options in demo

Closes #5537
2016-02-24 13:18:35 -08:00
Wesley Cho d880aea9b6 feat(datepicker): move attribute support to options
- Move some attribute usage to datepickerOptions

Closes #5528
2016-02-24 10:54:27 -08:00
rasenplanscher b24524280c fix(buttons): fix uncheckable attribute
- Fix behavior of `uib-uncheckable` to agree with intention

Closes #5451
Fixes #5412
2016-02-23 17:12:44 -08:00
Igor Bulovski 47e412ec0b fix(datepicker): fix popup updateOn: default support
- Fix support for ng-model-options with `updateOn: blur`

Closes #5529
2016-02-23 17:09:51 -08:00
Wesley Cho 74a1d04e27 feat(datepicker): move datepicker mode to options
- Fully move datepickerMode support to datepickerOptions, deprecate attribute usage

Closes #5526
2016-02-23 13:30:12 -08:00
robjacobs 3c0a7cd57c feat(position): add isScrollable
Add the isScrollable function that will check if the element passed
in is scrollable.

Closes #5508
2016-02-22 13:39:09 -05:00
robjacobs fa17c483e0 feat(tooltip): arrow position
- Move arrow position style overrides to a class instead of inline
styles.  This will allow for consumers to position the arrow to
suit their needs by setting margins on the arrow element.
- Optimize when the positionTooltip function calls the
positionArrow function.  Now the arrow position will only be
recalced when the tooltip placement changes.

Fixes #5464
Closes #5502
2016-02-22 13:30:57 -05:00
Adam Gordon 6fd47892ce chore(docs): create new issue template
* create new template for UIBS issues

Closes #5507
2016-02-19 10:15:44 -07:00
Foxandxss 69aae3547f chore: add angular-touch instructions to homepage 2016-02-19 13:12:01 +01:00
Daniel Gornstein 96c686611d chore(readme): Update installation notes
Note that the carousel requires ngTouch for swiping.

Closes #5499
Closes #5500
2016-02-19 13:04:59 +01:00
Daniel Smith 834975899b feat(modal): Call $onInit on controller if defined
Fixes #5472
Closes #5509
2016-02-19 13:03:32 +01:00
Daniel Gornstein 64e3127479 fix(typeahead): fix shift tab
Stops the tab completion action from happening when shift key is also pressed.

Closes #5494
Fixes #5493
2016-02-16 22:15:11 -05:00
robjacobs d1553a450f fix(tab): make active optional
This change makes the active binding added under #5425 optional.

Closes #5489
2016-02-16 17:51:12 -08:00
robjacobs 8b3e86f2c6 fix(position): getRawNode to handle select/ul elem
The getRawNode function was not returning the correct object
for collection elements (select, ul, etc...).

Closes #5491
Fixes #5354
2016-02-16 17:47:53 -08:00
Daniel Gornstein 417850001d fix(typeahead): Fix tab index for hint input
Fixes needing to hit tab twice to tab into typeahead with show hint enabled.

Fixes #5478
Closes #5492
2016-02-16 14:05:18 -08:00
Dave Birch 3814fe3ad1 fix(tabs): adding bootstrap 4 specific class
- Add `nav-link` class for Bootstrap 4

Closes #5488
2016-02-16 14:58:57 -05:00
Tuomo Jokimies 979fe0bad1 fix(modal): fix race condition with openedClass
- Fixes race condition with modal if it is closed before animation is complete

Closes #5483
2016-02-16 11:11:44 -05:00
Alejandro Vales 57326a9b35 docs(typeahead): improve setting definitions
Closes #5480
2016-02-15 21:51:40 +01:00
robjacobs f9903baf14 feat(datepicker): implement auto position
Added popup-placement attribute that implements the auto position
feature that exists in the tooltip directive.  Accepts the same
placement options as the tooltip.

Closes #5444
2016-02-12 23:33:54 -08:00
Cameron Chamberlain b8353322be docs(progressbar): fix reference to -danger
Closes #5462
2016-02-11 06:56:57 -08:00
Wesley Cho b95d1e2b2a chore(npm): add index.js
Closes #5461
2016-02-10 15:07:58 -08:00
Graham Rounds 54c51c4ffc feat(tab): add template-url support
- Adds support for `template-url` for tabset and tab directives

Closes #5405
Closes #5443
2016-02-09 06:13:53 -08:00
Foxandxss c5397a893b chore: lock angular version
Closes #5447
2016-02-09 06:12:20 -08:00
Foxandxss b808c0ddfe refactor(datepicker): normalize variable naming
Closes #5450
2016-02-09 06:10:29 -08:00
Wesley Cho cd2f050f2f chore: update with version support
- Update to note support for 1.5
- Bump up the ngversion for Plunker

Closes #5437
2016-02-08 14:36:29 -08:00
Wesley Cho 32a247471f refactor(carousel): change to use centralized active state
- Change so active state is primarily on two-way bound variable

Closes #5353
Closes #5432

BREAKING CHANGE: This changes the active state to be in line with
similar components centralizing the information. Please refer to the
carousel documentation for usage.
2016-02-08 12:03:20 -08:00
Foxandxss a35a63d4f9 refactor(paging): remove extra
Closes #5442
2016-02-08 12:02:34 -08:00
Wesley Cho d7b6aa1206 docs(tab): add backticks 2016-02-08 07:23:38 -08:00
Wesley Cho 74e129dc28 docs(tab): remove old property 2016-02-08 06:28:01 -08:00
Wesley Cho 5ec19b643b refactor(tab): change to use centralized active state
- Change to store active index on tabset controller
- Set index on tab by tab basis

Closes #5425

BREAKING CHANGE: The tab API is changed - please refer to the
documentation on new usage of tabs. Note that if you are using custom
templates, the templates will need to be changed slightly.
2016-02-08 06:22:45 -08:00
zach_lysobey 946b7e040b docs(contributing): fix conventions link
Closes #5434
Fixes #5429
2016-02-07 13:06:10 -08:00
zach_lysobey d5a757d46d fix(rating): change to read-only
Closes #5371
Closes #5435

BREAKING CHANGE: Attribute supported has been changed to `read-only`
from `readonly`
2016-02-07 12:54:36 -08:00
Wesley Cho 01e199815f test(modal): gc elements
Closes #5433
2016-02-07 07:55:40 -08:00
Prayag Verma 2116f7e4a4 docs(contributing): fix typo
- Remove redundant word
2016-02-05 23:15:13 -08:00
Wesley Cho 10eac7c22b feat(datepicker): add deprecation notices
- Add deprecation notices for datepicker & popup

Closes #5415
2016-02-05 16:08:27 -08:00
Patrick Lawler e4fc20167b fix(datepicker): fallback to current date
- Fallback to current date if model not present

Closes #5418
Fixes #5417
2016-02-05 14:44:44 -08:00
Jacobs 068d18189b test(tab): fix ng-repeat select twice callback
The select callback for the ng-repeat select test twice was bound
to the scope callback instead of the select property in the tabs
array.

Closes #5419
2016-02-05 13:34:10 -08:00
josh_burson@intuit.com 9c0acf67eb chore(dropdown): avoid toggling class on first load
- Avoid toggling class on first load of directive

Closes #5341
2016-02-04 17:11:28 -08:00
Sam Julien ca6b177db1 feat(accordion): use attribute for heading insertion
- Change to use `uibAccordionHeader` attribute for insertion point for header transclusion

Closes #5324
Closes #5396

BREAKING CHANGE: This changes to use the `uibAccordionHeader` attribute instead of a `<span>` element for inserting the custom header HTML. If you use a custom template for the accordion group, please add this attribute to the appropriate location.
2016-02-04 13:31:48 -08:00
Nicolas del Valle a5aebda854 docs(modal): fix service reference
- Fix reference to $uibModalInstance

Closes #5411
2016-02-03 14:46:25 -08:00
germannj f81d440ba6 feat(typeahead): add dynamic min length support
- Add support for dynamically changed min length

Closes #5363
2016-02-03 09:25:38 -08:00
Wesley Cho 42fb486735 fix(modal): fix modal rendered promise
- Fix timing of rendered promise to be after animation is complete

Closes #5401
Fixes #5331
2016-02-03 09:17:21 -08:00
Wesley Cho e283cea0e4 fix(datepicker): stop event bubbling from buttons
- Stop event bubbling from clicks in popup

Closes #5400
Fixes #5347

BREAKING CHANGE: This requires $event to be passed in the second
argument of the select function and in the close argument for the popup
template
2016-02-03 09:08:15 -08:00
Foxandxss 853d302356 chore(changelog): remove doc line 2016-02-03 18:03:46 +01:00
Martin Nuc 258b3413be fix(progressbar): fix default max value
- Fix logic around falling back to default max value

Closes #5374
Fixes #5373
2016-02-02 14:35:30 -08:00
Jenny Gebske 81498a7c6a docs: add info about CSS with CSP
Closes #5397
2016-02-02 14:31:28 -08:00
Wesley Cho 4b2ee0fa85 fix(datepicker): default to current date
- When model is empty, default to current date

Closes #5395
Fixes #5190
2016-02-02 14:17:03 -08:00
Graham Rounds f125537610 fix(datepicker): adjust datepicker header buttons
- Adjust the CSS for the datepicker header buttons to not have inconsistent spacing due to Chrome browser differences

Closes #5393
Fixes #5392

BREAKING CHANGE: This adds extra CSS for the datepicker for the left and right header buttons - one can override this appropriately with any selector of class priority higher than 1
2016-02-02 10:07:16 -08:00
Wesley Cho 5c565df024 fix(dateparser): append end of format
- Ensure trailing format string is appended to generated date string

Closes #5385
Fixes #5387
2016-02-02 06:03:46 -08:00
Foxandxss 3a03f293b5 chore: add lodash as devDependency
Closes #5383
2016-02-02 00:31:08 +01:00
Foxandxss e4c88bf54b chore: fix version mapping
Closes #5382
2016-02-01 15:17:03 -08:00
Foxandxss e645ab78a2 chore: add support for webpack
Closes #5375
2016-02-01 09:11:57 -08:00
Wesley Cho 3e10184c1c feat(datepicker): pass options from popup to inline
- Pass through options object wholesale from popup to inline datepicker

Closes #5355

BREAKING CHANGE: This breaks any snake-cased key usage, i.e.
`show-weeks`. Convert all keys used to camelCase.
2016-02-01 09:11:20 -08:00
Wesley Cho d88c0fb117 chore(release): start 1.2.0 2016-02-01 09:04:59 -08:00
Wesley Cho 15c5c503a4 chore(changelog): update for 1.1.2 2016-02-01 09:04:43 -08:00
Wesley Cho dbd3947002 chore(release): 1.1.2 2016-02-01 08:58:21 -08:00
Wesley Cho c3b14315d9 fix(datepicker): fix validation for M! & d!
- Fix display & validation for M! & d!

Closes #5376
Fixes #5225
2016-02-01 08:14:25 -08:00
Matthew McLeod 48c9cd8f51 fix(tooltip): prevent closing on $locationChangeSuccess
- Remove incorrect logic for closing tooltip/popover on
  $locationChangeSuccess

Closes #5360
Fixes #5337
2016-01-28 09:14:21 -08:00
Wesley Cho 0b7e742f6e docs(carousel): make sure request is made to http
- Ensure request uses http protocol and not https potentially

Closes #5359
2016-01-28 09:13:47 -08:00
Wesley Cho dbe9e8171f fix(typeahead): add guard for no $viewValue
- Add guard when $viewValue is undefined, and when showHint & min-length
  0 is used

Closes #5358
Fixes #5357
2016-01-28 09:12:20 -08:00
AndriIushchuk d2621e3f98 fix(modal): ensure shift+tab is trapped in modal
- Fixes where shift+tab keystrokes are not causing focus to remain
  trapped in modal

Closes #5294
Fixes #5229
2016-01-28 06:16:40 -08:00
Foxandxss b1ad080741 docs(datepicker): fix italics 2016-01-28 00:36:21 +01:00
Wesley Cho e58c42c5b2 feat(datepicker): add datepickerOptions support
- Add support for options object to concisely configure datepicker

Closes #5340
2016-01-27 04:19:08 -08:00
Towne, Jeremy 61cdef1ee6 feat(accordion): add aria tags
- Improve accessibility of accordion

Closes #5338
2016-01-26 08:11:29 -08:00
Wesley Cho 56f5c82c72 chore(release): start 1.1.2 2016-01-25 08:13:31 -08:00
Wesley Cho 2af95a2cd4 chore(release): 1.1.1 2016-01-25 08:06:36 -08:00
Foxandxss 096e171137 test(datepicker): refactorize some tests
Closes #5336
2016-01-25 00:56:19 +01:00
Foxandxss 97af6a99dd fix(datepicker): allow using min/max mode/date with datepickerOptions
Closes #5334
Fixes #5315
2016-01-23 16:11:02 -08:00
andrej.anafinow d5a48eaff0 fix(modal): fix modal closed resolution
- Correctly resolve modal closed promise on close or dismissal

Closes #5322
Closes #5326
2016-01-21 10:52:15 -08:00
Wesley Cho 5fcca2e83b chore(docs): bump angular to 1.4.9 2016-01-21 09:56:33 -08:00
Adam Gordon 8f94fe84b0 fix(doc): fix changelog for issue 5186
* update changelog to indicate bug fix #4753.
* update changelog to indicate PR #4975.
* update changelog breaking changes to indicate change made.

Fixes #5186
Closes #5325
2016-01-21 10:17:34 -07:00
Wesley Cho f303df419b docs(accordion): add note about ng-class
- Adds note about custom class usage for the accordion-group

Closes #5317
2016-01-20 22:13:50 -08:00
Alexander Artemenko 9050949b79 chore(changelog): unify markdown to template
Closes #5308
2016-01-20 10:15:58 -08:00
Adam Gordon 5325559795 chore(docs): add note for tooltip and popover on mobile
* update popover readme indicating we will not support issues on mobile devices.
* update tooltip readme indicating we will not support issues on mobile devices.

Closes #5307
2016-01-19 17:20:20 -07:00
Wesley Cho 594a312645 chore(datepicker): change bind method 2016-01-19 12:48:17 -08:00
Wesley Cho b477165816 chore(tooltip): clean up code style 2016-01-19 12:45:24 -08:00
Foxandxss 826228de85 chore: fix version mapping for 1.0.0+
Closes #5302
2016-01-19 17:56:03 +01:00
Wesley Cho 38ba6ec9ea chore(changelog): remove excessive whitespace
Closes #5296
2016-01-18 11:23:31 -08:00
Adam Gordon 77fa33022b chore(doc): clean up changelog
* remove tab CSS bullet since that commit was OBE due to tab template revert.
* combine `position` bullet entries.
* remove trailing whitespace.
2016-01-18 11:54:33 -07:00
Wesley Cho 2a1f1bc182 chore(changelog): update changelog 2016-01-18 10:42:14 -08:00
Wesley Cho c10280618a Revert "chore(changelog): update changelog"
This reverts commit ca04d5bc31.
2016-01-18 10:39:59 -08:00
Wesley Cho ca04d5bc31 chore(changelog): update changelog 2016-01-18 10:39:28 -08:00
Wesley Cho ee889ca841 chore(release): starting v1.1.1 2016-01-18 10:38:29 -08:00
Wesley Cho 3c2b57e9f9 chore(release): v1.1.0 2016-01-18 10:35:14 -08:00
Wesley Cho 332eefb464 feat(datepicker): use $locale for starting day
- Change to fallback to $locale.DATETIME_FORMATS.FIRSTDAYOFWEEK for
  first day column

Closes #4954
Closes #5281
2016-01-18 10:27:27 -08:00
Foxandxss 3b7be53bbe docs: add angular-animate to dependencies
Closes #5290
2016-01-18 06:48:48 -08:00
Wesley Cho 8a3c4b8a6d chore(modal): clean up code style 2016-01-17 07:45:43 -08:00
Foxandxss 4cf6a8334c docs: tune up callbacks
Closes #5285
2016-01-17 07:27:32 -08:00
Foxandxss e4eeb4b55b docs(collapse): order settings
Closes #5284
2016-01-17 06:35:16 -08:00
Wesley Cho 3f809affd3 fix(timepicker): garbage collect parent watchers
- Garbage collect parent $$watchers on $destroy

Closes #5277
2016-01-16 12:17:38 -08:00
Wesley Cho 32b88f1fc7 fix(paging): garbage collect parent $watchers
- Garbage collect parent $watchers on $destroy

Closes #5276
2016-01-16 12:14:39 -08:00
Daniel Gornstein c4171a2de2 chore(datepicker): unregister parent watchers on $destroy
Closes #5242
Closes #5260
2016-01-16 12:12:11 -08:00
Foxandxss a5797b9302 docs(datepicker): add clarifications for the popup
Closes #5280
2016-01-16 11:07:44 -08:00
kwiateusz e105e85d7a fix(typeahead): add guard for destroyed $scope
- Add guard against accessing $scope when it has been destroyed

Closes #5267
2016-01-16 10:51:14 -08:00
Daniel Gornstein f19b657658 docs(datepicker): fix demo input type
- Fixes input demo type and adds note on native datepickers

Closes #5115
Closes #5239
2016-01-16 10:48:22 -08:00
Wesley Cho 62213208e0 docs(timepicker): add note about updating model
- Add note on updating the model value programmatically

Closes #5144
Closes #5278
2016-01-16 05:00:32 -08:00
Mohammed Nauage 1dbad8a057 fix(modal): change to compile before appending
- Change to compile the modal window before inserting into the DOM

Closes #5224
Fixes #5183
2016-01-15 21:40:03 -08:00
Wesley Cho 78ba137383 fix(datepicker): pass through null
- When `minDate` or `maxDate` is `null` in the popup, pass through value to inline datepicker

Closes #5275
Fixes #5238
2016-01-15 16:49:58 -08:00
Daniel Gornstein 2cb3bc2e76 fix(datepicker): fix popup element garbage collection
- Ensures the correct element is selected due to ng-if replacing element with comment tag

Closes #5274
Fixes #5058
2016-01-15 16:09:12 -08:00
jpmitche11 c6504f8fa5 docs(dropdown): add on-toggle attribute
- Add on-toggle attribute to documentation

Closes #5271
2016-01-15 16:07:28 -08:00
Wesley Cho ca0eaab5bb docs(datepicker): fix mention on string literals
Closes #5269
2016-01-15 09:41:46 -08:00
Lubomyr Vyhovskyy 7e93ec95cb fix(datepicker): allow expressions for minMode/maxMode
- Fixes expressions not being parsed for `min-mode` and `max-mode`

Closes #5264
Closes #5268
Fixes #5240
2016-01-15 09:37:09 -08:00
Wesley Cho bcaa221e4b chore(datepicker): fix indentation 2016-01-15 09:05:50 -08:00
Wesley Cho b76e98e16f chore(release): bump to 1.1.0-SNAPSHOT 2016-01-15 07:04:05 -08:00
Wesley Cho 39d8bc699c refactor(accordion): change back to anchor element
- Change back from div element to anchor element

BREAKING CHANGE: This changes the div element in the accordion-group
element back to an anchor element. If one wishes to use more complex
templates inside the accordion group heading, one must override the
template and add the `cursor: pointer` CSS targeting that element.

Closes #5263
2016-01-15 06:38:20 -08:00
Bogdan Alexe 57219aa153 fix(collapse): avoid initial animation when expanded
- Ensures collapse does not animate expanding when initialized as
  expanded

Closes #5199
Fixes #4414
Fixes #5192
2016-01-14 21:17:16 -08:00
Wesley Cho 907c851fd0 fix(tab): revert template change
- Reverts template change to tab
- Adds warning if one desires more complex HTML inside the tab

BREAKING CHANGE: This undoes the prior change to the template using div
elements. If one wishes to use div elements, one must override the
template in one's app and provide the necessary CSS

Closes #5262
Fixes #5254
2016-01-14 20:47:51 -08:00
Adam Gordon de249270a8 chore(docs): update readme with requirements
* update readme to list Angular version requirememts.
* update readme to list Bootstrap CSS version requirements.

Closes #5249
2016-01-14 18:53:24 -08:00
Daniel Gornstein b3e6d1750c fix(datepicker): fix popup CSS
Closes #5258
2016-01-14 18:51:54 -08:00
Jeeva Kandasamy 717ea692b9 feat(timepicker): add placeholder for seconds input
- Adds `SS` placeholder for seconds input

Closes #5257
2016-01-14 16:02:54 -08:00
Adam Gordon a47580ed62 fix(tabs): fix tab css cursor
* fix tab cursor for hover state on non-disabled tab.

Closes #5250
Fixes #5247
2016-01-14 13:07:24 -08:00
Daniel Gornstein f523361e9e feat(typeahead): add title to matches
Closes #5252
2016-01-14 12:05:07 -08:00
robjacobs e8b6a83a71 fix(position): positionArrow descendant selector
- The element selector was not limited to direct descendants so
nested tooltip/popover arrow elements were getting selected instead
of the direct descendant arrow element.

Closes #5246
Fixes #5230
2016-01-14 14:48:24 -05:00
robjacobs ea542213bb Revert "Merge branch 'position-fix' of https://github.com/RobJacobs/bootstrap"
This reverts commit a25caa7c00, reversing
changes made to 00ac93e3ec.
2016-01-14 13:10:20 -05:00
robjacobs a25caa7c00 Merge branch 'position-fix' of https://github.com/RobJacobs/bootstrap 2016-01-14 13:00:11 -05:00
Daniel Gornstein 00ac93e3ec fix(typeahead): fix css selector
Closes #5251
2016-01-14 09:44:57 -08:00
robjacobs 9f4c3a5ac8 fix(position): positionArrow descendant selector
- The element selector was not limited to direct descendants so
nested tooltip/popover arrow elements were getting selected instead
of the direct descendant arrow element.

Closes #5246
Fixes #5230
2016-01-14 09:15:52 -05:00
Wesley Cho 3468888ae2 test(tooltip): add test for class change
- Add test for adding the appropriate classes to the tooltip

Closes #5244
2016-01-14 05:47:27 -08:00
Nick 6a2d91bf7c fix(tooltip): fix addClass signature
- Fix the addition of multiple classes

Closes #5235
2016-01-14 04:49:47 -08:00
Stepan Riha 446364ad1b feat(collapse): add callback hooks
- Adds support for collapsing, collapsed, expanding, and expanded
  callbacks

Closes #5194
Closes #5226
2016-01-13 23:00:05 -08:00
Wesley Cho e8201d1f34 feat(typeahead): move inline style to stylesheet
- Move inline style to stylesheet

Closes #5219
2016-01-12 08:11:31 -08:00
Wesley Cho b658b03afe feat(timepicker): move inline styles to stylesheet
- Moves the inline styles in template to stylesheet

Closes #5218
2016-01-12 08:10:50 -08:00
Wesley Cho 6843ab6ea1 feat(datepicker): extract inline styles to stylesheet
- Move inline styles to stylesheet

Closes #5215
2016-01-12 08:10:17 -08:00
Foxandxss 3bacd454e8 refactor(datepicker): order config options
Closes #5222
2016-01-12 08:05:49 -08:00
Wesley Cho 1038c5422f Merge pull request #5216 from nunoarruda/patch-1
chore(license): update copyright year range
2016-01-11 20:40:29 -08:00
Nuno Arruda 5daa6de160 chore(license): update copyright year range 2016-01-12 11:26:24 +07:00
Wesley Cho f608b143c5 chore(build): fix indentation 2016-01-11 19:43:50 -08:00
Wesley Cho 2ebe83e93b chore(release): starting v1.0.4 2016-01-11 19:33:22 -08:00
Wesley Cho c1fbf4d940 chore(release): v1.0.3 2016-01-11 19:30:41 -08:00
Wesley Cho 627a451f53 fix(timepicker): fix injection 2016-01-11 19:26:52 -08:00
Wesley Cho bae7bc809a chore(release): v1.0.2 2016-01-11 19:23:28 -08:00
Wesley Cho 74be568c65 fix(tabs): fix csp check
- Fix CSP check for inline styles

Fixes #5214
2016-01-11 19:18:21 -08:00
Wesley Cho 66d4300734 chore: fix strange indentation 2016-01-11 19:15:23 -08:00
Wesley Cho 234992470e chore(release): fix coverage in npmignore 2016-01-11 18:57:41 -08:00
Wesley Cho 11d18a5252 chore(release): starting v1.0.2 2016-01-11 18:48:48 -08:00
Wesley Cho 2f6fb2abda chore(release): v1.0.1 2016-01-11 18:42:01 -08:00
Daniel Gornstein 3dac5e3450 fix(typeahead): scroll only parent element
- Changes to scroll only parent element when keyboard navigation is used

Closes #5212
Fixes #5180
2016-01-11 18:23:31 -08:00
Wesley Cho db7adf737e feat(tabs): add CSS to css file
- Add tab specific CSS to separate CSS file

Closes #5211
2016-01-11 15:25:06 -08:00
Foxandxss 79fa363d91 docs: add expression badges to popover and tooltip
Closes #5210
2016-01-11 13:53:37 -08:00
Anders D. Johnson 0d1ca858be docs(modal): document DI notation
- Document array notation being allowed for controller for dependency injection and being minification-proof

Closes #5209
2016-01-11 10:59:18 -08:00
Wesley Cho 176f41978b chore: bump Bootstrap to 3.3.6 2016-01-11 08:45:24 -08:00
Foxandxss 4c338eb4fc docs(timepicker): add templateUrl as config
Closes #5205
2016-01-11 06:25:36 -08:00
Foxandxss bd6de24ace docs(popover): add missing dashes 2016-01-11 10:13:02 +01:00
Phil Brown 1340812caa style(tabs): Match Bootstrap tabs / pills styles
Adds all style declarations for Bootstrap (v3.3.6) tabs and pills.

See http://getbootstrap.com/components/#nav

Closes #5202
2016-01-10 22:04:33 -08:00
Daniel Gornstein 9e9c6cf153 fix(timepicker): prevent mixture of numbers and letters
- More strictly parse the expressions for disallowing a mixture of numbers and letters

Closes #5201
Fixes #5085
2016-01-10 18:55:43 -08:00
Daniel Gornstein 4b0e381b01 feat(timepicker): add templateUrl in timepickerConfig
- Sets the default templateUrl in `uibTimepickerConfig`

Closes #5087
Closes #5200
2016-01-10 18:33:31 -08:00
Wesley Cho aa010b024e fix(datepicker): fix error message
- Change error message to reflect what is officially supported as a model value

Closes #5198
Fixes #5191
2016-01-10 09:51:41 -08:00
Wesley Cho 9d0269ea97 fix(build): add ; after script
- Add extra `;` so there is no issue when concatenating scripts

Closes #5197
Fixes #5196
2016-01-10 09:20:32 -08:00
Wesley Cho 7250ff3ad8 docs(dropdown): add note about usage with ngTouch
- Add note about an issue with the click event not bubbling up when
  using ng-click with ngTouch

Closes #5101
Closes #5189
2016-01-10 09:16:03 -08:00
Wesley Cho 63ca2f3755 chore: use template string 2016-01-10 09:01:46 -08:00
sergey makarov 36fca744d5 fix(carousel): reset active for buffered transitions
- Disable active state for slides in buffered transitions

Closes #5195
Fixes #5178
2016-01-10 08:53:13 -08:00
Wesley Cho 428beaff4c fix(datepicker): fix usage of non-standard format
- Fix display of model in input when using a non-standard format with
  the dateparser (i.e. `M!` and `d!`)

Closes #5188
Fixes #5187
2016-01-09 09:11:40 -08:00
Wesley Cho 6ad873fab4 chore: update gruntfile with ES6
- Add some ES6 usage in the gruntfile

Closes #5179
2016-01-09 09:11:03 -08:00
Adam Gordon 84bb118b35 chore(docs): fix popover and tooltip docs
* update popover and tooltip docs to indicate that the `uib-*-html` attribute
  does not get compiled
* addresses complaint in #4923

Closes #5184
2016-01-09 06:17:16 -08:00
Daniel Gornstein 71afeeb6e3 fix(timepicker): use correct disabled expression
Closes #5185
Fixes #5182
2016-01-09 05:22:53 -08:00
Foxandxss a42266c956 chore(carousel): change images on demo
Closes #5106
2016-01-08 11:27:15 -08:00
Wesley Cho 2dfa1f5c53 chore(docs): bump angular to 1.4.8 2016-01-08 09:46:41 -08:00
Wesley Cho 16c7f9fbf1 chore(release): Starting v1.0.1 2016-01-08 09:46:27 -08:00
Zach Lysobey 00c4df10c2 docs(changelog): fix typo
Closes #5176
2016-01-08 09:04:04 -08:00
Wesley Cho 162de3eaf2 chore(release): 1.0.0 2016-01-08 08:44:00 -08:00
Foxandxss ac32cbb4cf chore: update homepage footer
Closes #5176
2016-01-08 17:24:32 +01:00
Foxandxss b32003bb8c docs(buttons): add boolean badge 2016-01-08 17:00:43 +01:00
Foxandxss 859dccd711 docs(homepage): add extra note
Closes #5171
2016-01-08 16:56:10 +01:00
Foxandxss 1a3e2adf1a docs(typeahead): tune up
Closes #5170
2016-01-08 16:55:20 +01:00
Foxandxss b6031d6bf0 docs(timepicker): tune up
Closes #5166
2016-01-08 16:53:13 +01:00
Wesley Cho a9e476f0f7 feat: add npm support in main repository
- Add support for consuming the main repository via npm for releases

Closes #4739
Closes #5129
2016-01-08 06:42:44 -08:00
Wesley Cho e1e6e1bb62 fix(typeahead): use correct selector
- With the addition of the header, the selector to scroll the dropdown
  onto the correct element is incorrect - this fixes it to select all
list elements in the dropdown

Closes #5168
Fixes #5167
2016-01-07 17:21:55 -08:00
Daniel Gornstein 3e876b8fdd feat(typeahead): add event object to onSelect
- Add support for `$event` in expression with `onSelect`

Closes #5165
2016-01-07 17:19:39 -08:00
Foxandxss 3ef8992c54 docs(tabs): tune up
Closes #5163
2016-01-08 00:15:09 +01:00
Wesley Cho a5ca78ad2a feat(tooltip): change back to jqLite listeners
- Change event listeners to be handled by jqLite

Closes #4886
Closes #5157
2016-01-07 06:37:19 -08:00
Wesley Cho d320df88a3 chore(dateparser): fix docs 2016-01-06 19:57:57 -08:00
Wesley Cho f40066af9e revert(dateparser): change template literal to '
This reverts commit 9513f1007f.

Fixes #5091

BREAKING CHANGE: Reverts back to original template literal with `'` instead of `\''
2016-01-06 18:50:11 -08:00
Foxandxss e1723bf09d docs(datepicker): remove unneeded signs 2016-01-07 01:30:18 +01:00
Foxandxss 86ed171e37 docs(rating): tune up
Closes #5154
2016-01-07 00:43:39 +01:00
Foxandxss 4d37c9240b docs(progressbar): tune up
Closes #5148
2016-01-06 19:32:25 +01:00
Chenyu Zhang cab0945ac9 fix(typeahead): fix programmatic focus issue
- Fix issue where programmatic focus on typeahead input does not work

Closes #5150
Fixes #764
2016-01-06 06:36:14 -08:00
Foxandxss ff5e720690 docs(popover): tune up
Closes #5146
2016-01-05 13:54:44 +01:00
Foxandxss dbdffd4c4e docs(tooltip): fix typo 2016-01-04 20:29:47 +01:00
Foxandxss dc229ac01f docs(tooltip): there is no html unsafe version anymore 2016-01-04 20:21:24 +01:00
Foxandxss c357385207 docs(tooltip): tune up
Closes #5143
2016-01-04 14:11:39 +01:00
Foxandxss 6b5fcc385c docs(position): tune up
Closes #5138
2016-01-04 13:42:58 +01:00
Foxandxss b8ebad2dfa chore(grunt): fix typo on comment 2016-01-03 20:15:55 +01:00
William Di Luigi ed7e4600b0 revert(progressbar): remove min-width
- Remove min-width in template due to Bootstrap removing min-width

Closes #5141
2016-01-03 13:37:34 -05:00
Foxandxss 2ccaa1977f docs(pagination): update to latest version
Closes #5135
2015-12-31 10:45:04 +01:00
Foxandxss 1f3e55f6fc docs(pager): fix more typos 2015-12-30 14:24:43 +01:00
Foxandxss e98492baa2 docs(pager): fix more typos 2015-12-30 14:20:14 +01:00
Foxandxss db52961f5c docs(pager): remove unneeded characters 2015-12-30 14:14:35 +01:00
Chris Chua 72f13ef38b refactor(datepicker): optimize datepicker
- Add new class manipulation helper directive that uses 1 watcher as opposed to watchers for each element with ng-class
- Optimize disabled state
- Optimize class binding

Closes #2613
Closes #3451
Closes #3770
Closes #5065

BREAKING CHANGE: For those using custom templates, the changes result in necessary changes being made to the templates to match the new class changing syntax
2015-12-30 08:04:23 -05:00
Foxandxss f33ab7ceca docs(pager): update to latest
Closes #5133
2015-12-30 12:36:22 +01:00
Foxandxss 14037f1633 docs(dropdown): add badges
Closes #5132
2015-12-29 13:41:09 +01:00
Foxandxss ca580268eb docs(dropdown): reword extra settings 2015-12-28 19:14:12 +01:00
Foxandxss 7a8cf0e458 docs(button): reword the extra settings 2015-12-27 18:08:19 +01:00
Foxandxss 36c687a32f docs(accordion): add config as a badge
Closes #5125
2015-12-26 15:26:32 +01:00
Foxandxss fccc9691f9 docs: add explanation for the C badge
Closes #5120
2015-12-26 15:25:39 +01:00
Foxandxss 8b68fe052d docs(datepicker): docs tune up
Closes #5119
2015-12-26 15:24:05 +01:00
Foxandxss 1273156097 chore(karma): install fixed version
Closes #5126
2015-12-26 15:21:47 +01:00
Foxandxss 33b7a3760f docs(collapse): tune up docs
Closes #5110
2015-12-22 10:52:57 -05:00
Foxandxss 2cc6cbaa0d docs(carousel): tune docs
Closes #5105
2015-12-21 09:11:58 -05:00
Foxandxss 74b213ef60 docs(alert): tune up docs
Closes #5103
2015-12-20 21:20:06 -05:00
Foxandxss 277ffa998c docs(buttons): update button docs
Closes #5102
2015-12-20 00:08:05 -05:00
Foxandxss 5805b51f4d docs(accordion): add extra badges
Closes #5099
2015-12-18 22:55:16 -05:00
Foxandxss 4dba58ddbe docs: add badge explanations
Closes #5100
2015-12-18 22:54:52 -05:00
Jeffrey Hamans a5c2a5b061 fix(modal): add focus check for IE
- Check if element has focus method due to IE issues

Closes #5097
Fixes #5096
2015-12-18 13:57:02 -05:00
Wesley Cho 3b7f78a93d test(datepicker): optimize performance
- Optimize performance of tests by compiling datepicker once max per test

Closes #5094
2015-12-18 08:46:24 -05:00
Wesley Cho 1524080078 fix(datepicker): correctly set minMode/maxMode
- Correctly set `minMode` and `maxMode` for the datepicker popup

Closes #5093
Fixes #5090
2015-12-18 08:45:00 -05:00
Foxandxss 3845980bda docs(accordion): order the different settings
Closes #5098
2015-12-18 13:08:22 +01:00
Wesley Cho 6fa4cc5a4a chore: add updated compiler for Travis 2015-12-16 11:10:48 -05:00
Dave Anderson 09098f891f feat(datepicker): add timezone support
- Add timezone support with ngModelOptions

Closes #5062
2015-12-16 10:12:32 -05:00
Wesley Cho 9019298cc3 fix(datepicker): active date should be model if present
- When ng-model value is initially present, it should set the active date to be the model date as per documentation

Closes #5082
Fixes #5081
2015-12-16 09:40:37 -05:00
Wesley Cho 2635f0d65b feat(modal): add pluggable resolve support
- Adds support for pluggable resolvers, namely for supporting UI Router's resolve handling

Closes #3405
Closes #5078
2015-12-15 19:22:08 -05:00
Foxandxss fd5991311a docs(modal): update to latest version
Closes #5079
2015-12-15 18:41:48 -05:00
Wesley Cho 00a7cc393a chore: leverage es6 in gruntfile
- Add some ES6 usage in gruntfile

Closes #5076
2015-12-15 09:24:21 -05:00
Wesley Cho 5ad08fff46 fix(collapse): set initial state to avoid animation
- Ensure animation does not occur when first loaded

Closes #5075
Fixes #4848
Fixes #4885
2015-12-15 09:23:01 -05:00
Wesley Cho 000d6c309e fix(datepicker): stop propagation of esc in popup
- Stop propagation of esc key in datepicker popup, which can propagate to undesirable elements/handlers such as the modal

Closes #5074
Fixes #5013
2015-12-15 09:22:04 -05:00
Wesley Cho ccf161afba chore: bump node version 2015-12-15 01:54:27 -05:00
Wesley Cho bf1768e752 fix(dropdown): do not close on right click
- Do not close the dropdown on right click when open due to Firefox's
  behavior

Closes #5052
Fixes #5051
2015-12-14 17:10:20 -05:00
Wesley Cho 2a1aaf2d85 feat(tooltip): add appendToBody only attribute support
- Add support for using only `tooltip-append-to-body` without any attribute value to enable appending tooltip to body

Closes #4945
Closes #5071
2015-12-14 17:08:04 -05:00
Bryan Grohman a49ce8e50a test(datepicker): test that changing time updates model
- Add unit test for changing the time and verifying that the model updates

Closes #5073
2015-12-14 16:20:50 -05:00
Connor Hindley e6474f0597 docs(tooltip): fix incorrect attribute mentioned
Closes #5072
2015-12-14 15:33:25 -05:00
Dave Anderson e7f709f0a7 fix(datepicker): fix minDate/maxDate with literals
- Fixes use of min-date and max-date with literal strings

Closes #4841
Fixes #3437
2015-12-14 14:47:11 -05:00
Wesley Cho 812d47e817 chore: fix recursion error
- This fixes an error in Firefox for Linux where too much recursion happens

Closes #5061
Fixes #4977
2015-12-14 13:18:58 -05:00
Wesley Cho 6dbd3f8f06 chore: change node-markdown for marked
Closes #5066
Closes #5067
2015-12-14 10:28:09 -05:00
Dave Anderson b784422ee3 feat(datepicker): yearRange -> yearRows and yearColumns
BREAKING CHANGE: yearRange is replaced by yearRows and yearColumns for manually specifying the dimensions of the yearpicker. If one wants the prior behavior with yearRange with a different number of rows, just set yearRows

Closes #3348
Closes #4970
2015-12-14 07:40:24 -05:00
Wesley Cho d84cb6536a chore(datepicker): fix formatting 2015-12-14 00:33:48 -05:00
Wesley Cho e18bdd557c chore(datepicker): fix formatting 2015-12-14 00:33:36 -05:00
Wesley Cho 8b721f425b chore(datepicker): fix formatting 2015-12-14 00:33:22 -05:00
Wesley Cho 9a32cda11c chore(datepicker): change to new format 2015-12-14 00:32:40 -05:00
Wesley Cho 174c3bda20 chore(datepicker): change to new format 2015-12-14 00:31:57 -05:00
Wesley Cho 406528eee2 chore(datepicker): change to new format 2015-12-14 00:31:07 -05:00
Foxandxss c4a3ad41ad refactor(carousel): reorganize methods
Closes #5063
2015-12-13 21:44:49 -05:00
Foxandxss be772fa5ae refactor(carousel): remove unneeded describe
Closes #5064
2015-12-13 13:44:16 -06:00
Wesley Cho 46882525f4 chore(dropdown): remove class usage 2015-12-12 23:41:06 -08:00
Foxandxss 1e24ff7bc1 chore(modal): remove empty line 2015-12-12 00:02:48 +01:00
Foxandxss 7be21c4983 test(modal): test dismissAll
Closes #5056
2015-12-11 08:21:18 -08:00
Foxandxss b31f87cef6 chore(modal): fix typo on test 2015-12-11 15:34:44 +01:00
Wesley Cho fe68977033 chore(modal): clean up code style 2015-12-10 22:40:39 -08:00
Wesley Cho b8969d1937 fix(modal): fix bindToController
- Fixes issue where `$scope` provided does not have properties present
  on controller instance due to $new resulting in the property on the
prototype of the $scope copied from, which causes it to not be
enumerable

Closes #5048
Fixes #5039
2015-12-10 09:46:31 -08:00
Jeffrey Barrus 2460e42322 feat(datepicker): add allowInvalid support
- Adds support for invalid view values via `ngModelOptions`
  allowInvalid` setting

Closes #4694
Closes #4837
2015-12-10 07:26:11 -08:00
Foxandxss 3658502c74 chore: add migration guide link to homepage
Closes #5037
2015-12-09 10:37:21 +01:00
Sergii Stotskyi a5cac90ad0 feat(tabs): add controllerAs support
Closes #5019
Closes #5020
2015-12-06 18:44:52 -08:00
Dave Anderson fd88dcb274 fix(datepicker): update with alternative format
Closes #5014
2015-12-05 12:34:21 -08:00
Foxandxss 62e0761351 chore: bump minimum angular version in homepage
Closes #5018
2015-12-05 12:32:03 -08:00
Wesley Cho 8930a7f373 chore: ensure tests are gc'd
- Ensure event listeners globally on service instantiation are garbage
  collected properly

Closes #5017
Fixes #4996
2015-12-05 12:31:12 -08:00
Wesley Cho 8a7ebbf94d chore(typeahead): change to on/off
Closes #5016
2015-12-05 12:30:07 -08:00
Foxandxss 75b8e5aa0e refactor(modal): mix both modal spec files
Closes #5011
2015-12-05 09:22:36 -08:00
Foxandxss 5e5c8b4af2 refactor(modal): migrate more animations to animateCss
Closes #5008
2015-12-05 09:22:02 -08:00
wawyed c0f10276af fix(modal): trap tabbing regardless of config
- Ensure tabbing is trapped regardless of whether `keyboard` is `false`

Closes #5010
Fixes #4990
2015-12-04 06:26:36 -08:00
Wesley Cho 384fdfc83d chore: update package.json
- Update package.json with more information
- Improve .npmignore slightly

Closes #4993
2015-12-03 18:08:07 -08:00
Foxandxss 66d290225a refactor(modal): simplify backdrop creation
Closes #5002
2015-12-03 22:39:58 +01:00
Foxandxss f125cdb6ae chore(modal): change link parameters
Closes #5002
2015-12-03 22:37:59 +01:00
Foxandxss 8c4d248afa chore(modal): remove prefix leftover
Closes #5001
2015-12-03 22:36:57 +01:00
Wesley Cho 763cfd921e fix(carousel): resolve rendering issues
- Defer selection of active slide until after transition has been reset
  to avoid selection occuring before the transition finishes, preventing
a new slide from being chosen
- Buffer slides if transition is currently going on to navigate to last
  slide selected after

Closes #4984
Fixes #4361
Fixes #4823
Fixes #4969
2015-12-01 06:46:20 -08:00
Wesley Cho a8b0d454f9 chore(carousel): clean up code style 2015-11-30 21:43:39 -08:00
Wesley Cho bd47f6c4ff feat(typeahead): add ng-model-options debounce support
- Adds support for ng-model-options `debounce` option

Closes #4982
2015-11-30 15:34:05 -08:00
Wesley Cho 6094e0725e chore(carousel): remove dead code
- Remove unnecessary $animate.enabled check

Closes #4983
2015-11-30 15:08:35 -08:00
Foxandxss c488d824bb chore(pager): fix demo
Closes #4980
2015-11-30 06:49:08 -08:00
Wesley Cho e9c4977dc4 feat(modal): add closed promise
- Add `closed` promise for when the modal animation completes on removal

Closes #4979
2015-11-30 10:06:35 +01:00
Wesley Cho 9d139a5975 refactor(typeahead): change to switch 2015-11-29 23:26:07 -08:00
Wesley Cho d9e3dd5c44 chore(carousel): combine animation check
- Combine animation check since $animate.enabled value is set in the
  $watcher

Closes #4976
2015-11-29 07:42:47 -08:00
Wesley Cho 19b7e3e699 chore(dropdown): remove class support
BREAKING CHANGE: Class support for consuming the directive has been
removed. Please use an attribute instead

Closes #4975
Resolves #4753
2015-11-28 07:17:18 -08:00
Wesley Cho 12a37e0f02 fix(carousel): fix conditions for animation
- Fix incorrect animation conditions

Closes #4974
Fixes #4972
2015-11-28 06:35:50 -08:00
Wesley Cho d8c8767c3d chore(carousel): clean up code style 2015-11-27 21:05:00 -08:00
Wesley Cho 1a822a1170 feat(timepicker): add semantic classes
- Adds semantic classes to assist with styling

Closes #4764
Closes #4971
2015-11-27 13:55:37 -08:00
Wesley Cho 1d49f054c0 chore: bump up uglify version 2015-11-27 11:35:08 -08:00
Wesley Cho f3f5430b1c chore: bump up node for travis 2015-11-27 11:34:26 -08:00
Wesley Cho f2f8c4e8d3 feat(paging): factor out common controller code
- Create paging factory for creating common controller for the
  pagination and pager components

Closes #4803
Closes #4968
2015-11-27 11:31:16 -08:00
Dave Anderson 8bfeda00d4 feat(datepicker): implements alternative format support
- Adds support for multiple input formats

Closes #4951
Closes #4952
2015-11-26 11:21:32 -08:00
Foxandxss f3d4dc2cf9 docs(datepicker): fix a few typos 2015-11-26 15:19:03 +01:00
Wesley Cho 58902485ef feat(pager): change controllerAs to pager
BREAKING CHANGE: As part of the split of the pager component from the
pagination component, this changes the controllerAs use to `pager` from
`pagination`

Closes #4961
2015-11-26 06:13:45 -08:00
Wesley Cho 891c449ad4 chore(pager): fix indentation 2015-11-26 06:05:51 -08:00
Wesley Cho 80e927e735 chore(pager): remove unnecessary code 2015-11-26 06:05:32 -08:00
Adam Gordon 9f0dba173f docs: fix append-to-body attribute
* fix `tooltip-append-to-body` doc
* fix `popover-append-to-body` doc

Closes #4948
Fixes #4945
2015-11-24 21:45:48 -08:00
Wesley Cho 9513f1007f feat(dateparser): change template literal from ' to `
- Changes from ' to ` for template literals
- Adds documentation about template literals

BREAKING CHANGE: This changes template literals from the single quote
`'` to the backtick character `` ` `` for more natural usage with certain
strings such as `o'clock`.

Closes #4880
Closes #4936
Closes #4938
2015-11-24 12:38:14 -08:00
Rob Jacobs d265113984 feat(position): implement auto positioning
Implementing the ability to auto position elements
in the position service - positionElements function.

Closes 4899
2015-11-23 13:24:36 -05:00
Wesley Cho 526e6de82a chore(pagination): clean up code style 2015-11-22 23:23:40 -08:00
Wesley Cho 2a3314df70 feat(pager): move to separate component
- Separate pager into its own component

Closes #4935
2015-11-22 12:57:48 -08:00
Chenyu Zhang 2cd7f4fe6d docs(tabs): add disabled style
Closes #4916
2015-11-22 12:55:14 -08:00
Wesley Cho 48505a3045 chore(tooltip): remove deprecated feature from docs 2015-11-22 00:12:46 -08:00
Wesley Cho dd6ddc8039 Revert "Revert "fix(debounce): fix argument slicing""
This reverts commit 1e19292b6b.
2015-11-21 14:37:36 -08:00
Brian Genisio 56f9a207de refactor: remove dot usage of reserved words
- Remove usage of `.finally` for IE9 compatibility

Closes #4913
2015-11-17 11:43:27 -08:00
Foxandxss 423ba10875 docs(dropdown): update docs
Closes #4910
2015-11-16 08:11:44 -08:00
Foxandxss 77a5158c2b chore(eslint): add semicolons rule
Closes #4909
2015-11-16 07:43:47 -08:00
Wesley Cho e209db392e chore(timepicker): clean up code style 2015-11-15 14:27:00 -08:00
Alex Knowles 726ccc367d fix(modal): retain focus if child has focus
- If a child element in the modal has focus before animation completes, do not refocus

Closes #4904
Fixes #4903
2015-11-15 13:16:05 -08:00
Foxandxss 6d5b1d9038 test(dropdown): use existing matchers
Closes #4898
2015-11-13 10:51:05 -08:00
Foxandxss 31af431d5a test(dropdown): reorganize and refactor tests
Closes #4896
2015-11-13 10:27:05 -08:00
Foxandxss 57f72b219e fix(dropdown): remove extra uib-keyboard-nav
Closes #4891

BREAKING CHANGE: `keyboard-nav` for the dropdown is not longer a directive and to use it you have to use `keyboard-nav` instead of `uib-keyboard-nav`.
2015-11-13 18:04:01 +01:00
Foxandxss 4dab96e28c refactor(dropdown): remove regex to not match 138 and 140
Closes #4892
2015-11-13 08:32:44 -08:00
Foxandxss 58205a82bb refactor(dropdown): remove unneeded
Closes #4893
2015-11-13 08:31:31 -08:00
Foxandxss 4de49f4f58 refactor(dropdown): change bind/unbind to on/off
Closes #4895
2015-11-13 08:29:51 -08:00
Foxandxss 85fdfc2024 chore(readme): fix typo 2015-11-13 00:35:22 +01:00
Wesley Cho b1c05f40cc chore(carousel): remove unnecessary tests 2015-11-11 11:58:11 -08:00
Adam Gordon 53806c2779 chore(tabs): add nested forms example
Closes #4866
2015-11-11 11:57:46 -08:00
Foxandxss c34317d13d docs(datepicker): revamp documentation
Closes #4881
2015-11-11 19:06:38 +01:00
Foxandxss 4199237da0 refactor(datepicker): simplify miscellaneous stuff
Closes #4876
2015-11-11 09:52:51 -08:00
Foxandxss c9363809d8 test(datepicker): add a few tests
Closes #4874
2015-11-11 09:33:18 -08:00
Foxandxss a255d99b0b chore(datepicker): open one popup at once in the demo
Closes #3432
Closes #4879
2015-11-11 09:32:27 -08:00
Foxandxss c61257143f chore(datepicker): fix customClass demo
Closes #4877
2015-11-11 09:30:19 -08:00
Foxandxss 9131907bb4 chore(datepicker): remove stale deprecation stuff
Closes #4875
2015-11-11 09:28:39 -08:00
jsdevel 9b80ee1b2f feat(carousel): expose next and prev on controller
- Expose `prev` and `next` functions on the carousel controller

Closes #4851
Closes #4853
2015-11-10 15:01:55 -08:00
Dave Anderson 26d31037ce feat(datepicker): pass through attrs in popup
- Passes through all datepicker config attributes from the popup to the datepicker

Closes #4863
Fixes #3338
2015-11-10 14:48:38 -08:00
Chenyu Zhang 0917623b18 fix(accordion): ensure panelOpen class is present
- Ensure panelOpen class is present on initialization of panel

Closes #4849
Closes #4870
2015-11-10 14:40:27 -08:00
Adam Gordon 44820a01b3 chore(build): update Bootstrap dependency
* Update the Bootstrap version used by the Plunker demos.

Closes #4865
2015-11-10 14:34:42 -08:00
Timothy Zorn 873730360c feat(tooltip): add outsideClick trigger
- Add `outsideClick` trigger support, which allows dismissal of the tooltip/popover on click of any element outside of the tooltip/popover

Closes #4419
Closes #4871
2015-11-10 14:32:02 -08:00
Adam Gordon 3ca8b88044 docs(tooltip): fix directive name
Closes #4864
2015-11-10 12:04:39 -07:00
Adam Gordon 1e19292b6b Revert "fix(debounce): fix argument slicing"
This reverts commit e196be855e.
2015-11-10 12:02:43 -07:00
Astashenkau e196be855e fix(debounce): fix argument slicing
Closes #4859
Closes #4860
2015-11-10 07:43:33 -08:00
damon.friendship a5bafe6439 feat(typeahead): add dynamic toggling of Editable
- Allow user to toggle value of `typeaheadEditable` dynamically

Closes #2638
Closes #4820
2015-11-10 00:07:03 -08:00
Dave Anderson 1f43cdf3da chore(build): properly prefix module dependencies
- Fixes module dependencies for `ui.bootstrap.tpls`

Closes #4842
2015-11-08 18:30:32 -08:00
Wesley Cho f68a7e0c27 chore(modal): clean up code style 2015-11-08 16:10:55 -08:00
Wesley Cho ca02088666 chore(modal): remove old comment 2015-11-08 16:10:38 -08:00
Wesley Cho e48342a3f8 chore(modal): clean up code style 2015-11-08 16:07:45 -08:00
Wesley Cho e28ccedb6c feat(modal): support requiring from parent directive
- Add support for requiring from parent directive of element being
  appended to

Closes #3765
Closes #4844
2015-11-08 16:02:46 -08:00
Wesley Cho ee7ab9f36a chore(tooltip): remove old comment 2015-11-07 14:44:19 -08:00
Wesley Cho 07c31d0731 chore: add eslint
- This adds eslint and integrates it to the build chain
- Removes jshint

Closes #4758
Closes #4840
2015-11-07 14:42:44 -08:00
Wesley Cho 742132a2c8 feat(modal): change to use $animate
- Change to use $animate and $animateCss

Closes #3418
Closes #4834
2015-11-07 12:51:17 -08:00
Wesley Cho 342c576ea4 feat: prefix virtual templates with uib/
- Change all virtual paths with built in templates to be prefixed by `uib/`

BREAKING CHANGE: All virtual templates in UI Bootstrap now are prefixed
with `uib/` - if one is overriding the templates via `$templateCache` path
or manually building the templates from the UI Bootstrap repository, one
needs to change the string used in the `$templateCache` representation
to have the new prefix

Closes #1205
Closes #4839
2015-11-07 12:49:59 -08:00
Wesley Cho fe6938675e feat(timepicker): add model state support
- Adds support for the timepicker model $touched and $dirty states

Closes #3527
Closes #4835
2015-11-07 12:48:53 -08:00
Wesley Cho 703432b259 chore(tabs): clean up unnecessary code 2015-11-07 10:12:00 -08:00
Wesley Cho ea388b34d0 feat(dateparser): add new format support
- Adds `ww` support
- Adds `w` support
- Adds `G`, `GG`, `GGG` support
- Adds `GGGG` support

Closes #3418
Closes #4833
2015-11-07 08:02:16 -08:00
Wesley Cho 8c3c38ded7 chore(dateparser): fix incorrect character 2015-11-07 06:46:41 -08:00
Wesley Cho 2fb812be13 feat(dateparser): add Z support
- Add support for the `Z` format, as referred to in the Angular
  documentation [here](https://docs.angularjs.org/api/ng/filter/date)

Closes #4831
2015-11-06 12:05:03 -08:00
Incell 628039bb16 chore(tooltip): fix matcher condition
Closes #4821
2015-11-05 09:03:37 -08:00
Robbert Merlier 80df0152b3 feat(modal): allow appending outside iframe
- Loosen to accept jqLite element straight up

Closes #4818
2015-11-04 07:17:25 -08:00
Foxandxss 5bf4052d69 chore(CONTRIBUTING): remove prefix note 2015-11-03 19:53:39 +01:00
Wesley Cho 434c6026a5 feat(datepicker): add disabled and ngDisabled support
- Adds support for `disabled` attribute
- Adds support for `ng-disabled`

Closes #4059
Closes #4814
2015-11-03 08:45:25 -08:00
Wesley Cho 73efc782e9 chore(debounce): create debounce helper
- Create internal debounce helper
- Move debounce logic from typeahead to use helper

Closes #3966
Closes #4813
2015-11-03 07:22:42 -08:00
Wesley Cho aff9010250 chore(datepicker): clean up code style 2015-11-03 06:23:50 -08:00
Wesley Cho 1c30baa335 chore(modal): clean up code style 2015-11-03 05:45:47 -08:00
Wesley Cho 465119141a feat(timepicker): add ngDisabled support
- Adds support for `ng-disabled` on timepicker element for disabling all controls programmatically

Closes #2219
Closes #4811
2015-11-03 05:38:31 -08:00
Wesley Cho beabb4a04d fix(datepicker): correctly display pre-100 years
- Fix display of dates in datepicker for years less than 100

Closes #4812
Fixes #4032
2015-11-03 05:37:50 -08:00
Wesley Cho fc61e178b6 chore(timepicker): clean up code style 2015-11-02 20:42:18 -08:00
Wesley Cho bd8acac329 chore(timepicker): clean up code style 2015-11-02 20:31:58 -08:00
Wesley Cho 83d1435444 fix(dateparser): enforce order of regex construction
- Change `formatCodeToRegex` into an array to avoid potential iteration bug where the order the keys are listed in the object matters in the iteration order

Closes #4810
Fixes #4808
2015-11-02 15:47:22 -08:00
Scotty Waggoner 56642ea396 feat(pagination): add force-ellipses option and boundaryLinkNumbers
- Adds force-ellipsis option for adding ellipses to pagination
- Add boundary-link-numbers option for allowance of the first and last page numbers to always be shown

Closes #2924
Closes #3064
Closes #3565
2015-11-02 15:27:19 -08:00
dstone 3f307e4c4b feat(pagination): Show ellipsis when rotating 2015-11-02 15:18:47 -08:00
Wesley Cho b1cfc5762d feat(dateparser): add M! and d! support
- Add M! and d! for optional support of leading zeroes in date string format

Closes #4805
Closes #4809
2015-11-02 15:01:35 -08:00
Wesley Cho 3f5b420a8c chore(demo): fix demo with tab change
- Fix appearance of tabs with breaking change in demo

Closes #4807
2015-11-02 13:58:07 -08:00
Foxandxss d732929d7e docs(dateparser): add demo with docs
Closes #4806
2015-11-02 11:49:59 -08:00
Yakira C. Bristol 02d2ef3c63 docs(datepicker): adds notes about validation
- Adds a note about the `dateDisabled` validation error

Closes #3440
Closes #4770
2015-11-02 06:23:55 -08:00
Wesley Cho 3aa41f053f fix(typeahead): allow parent to be required
- Change to insert content to DOM before compiling to preserve requiring parent controllers

Closes #4800
Fixes #2679
2015-11-02 06:05:49 -08:00
Wesley Cho 8637afcbac feat(typeahead): change to appendTo
- Change signature to `appendTo`, which takes a value that evaluates to a DOM node for API consistency

BREAKING CHANGE: Usage before
```html
<div id="typeahead-container"></div>
<input typeahead="state for state in states | filter: $viewValue | limitTo: 8" typeahead-append-to-element-id="typeahead-container">
```
After
```html
<div id="typeahead-container"></div>
<input typeahead="state for state in states | filter: $viewValue | limitTo: 8" typeahead-append-to="typeaheadContainer">
```
```js
$scope.typeaheadContainer = angular.element(document.querySelector('#typeaheadContainer'));
```

Closes #4797
2015-11-01 18:32:34 -08:00
Wesley Cho 08ad07701e chore(typeahead): clean up code style 2015-11-01 17:56:34 -08:00
Wesley Cho 01c2d9a5c0 chore(typeahead): clean up code style 2015-11-01 17:43:20 -08:00
Wesley Cho 8b75bc4f5f chore(typeahead): clean up code style 2015-11-01 17:43:04 -08:00
Wesley Cho d59083b65e fix(tab): fix unexpected routing
- Change anchor tag to `div` to prevent unexpected routing being triggered by the browser on generation of anchor tags with nested clickable controls

BREAKING CHANGE: This causes the cursor style to be removed from the tab - implement CSS on the `.uib-tab > div` selector, or similar, accordingly

Closes #4793
Fixes #3266
2015-10-31 11:36:12 -07:00
Wesley Cho df211bd625 fix(accordion): fix unexpected routing
- Change anchor tag to `div` to prevent anchor tag from triggering route change

BREAKING CHANGE: This causes the cursor style to be removed from the heading - implement CSS on the `accordion-toggle` class accordingly

Closes #4792
2015-10-31 11:34:46 -07:00
Wesley Cho 0495ff0917 feat(dropdown): add open class support
- Adds support for the `uib-dropdown-open` class to be toggled on the container element of a dropdown menu on dropdown toggle

Closes #4466
Closes #4794
2015-10-31 11:18:02 -07:00
Wesley Cho b77618e06f feat(buttons): add uib-uncheckable support
- Add support for `uib-uncheckable` with uib-btn-radio

Closes #3604
Closes #4791
2015-10-31 11:16:27 -07:00
Foxandxss 739b667cc5 chore(carousel): fix demo
Closes #4796
2015-10-31 15:36:41 +01:00
Tobias Gunkel 1c79888ca6 feat(dateparser): add support for literals
- Add support for string literals via single quotes

Closes #3914
Closes #4426
2015-10-30 21:58:39 -07:00
Jay Klehr 809ecdb476 feat(dropdown): add append-to support
- Adds support for appending dropdown to specified DOM node

Closes #4467
Closes #4488
2015-10-30 21:21:44 -07:00
Wesley Cho da455f6dd0 chore(buttons): clean up code style 2015-10-30 19:08:41 -07:00
Chenyu Zhang d859f42cc0 feat(typeahead): add min-length === 0 support
- Adds support for `typeahead-min-length` being equal to `0`

Closes #764
Closes #2324
Closes #4789
2015-10-30 10:58:21 -07:00
Wesley Cho 20a8701c34 chore: update devDependencies 2015-10-30 06:54:22 -07:00
Foxandxss f6f6db1681 chore(karma): add coverage
Closes #4785
2015-10-30 06:45:01 -07:00
Wesley Cho 65b47a2e0e chore(typeahead): fix mistakenly resolved template usage 2015-10-30 06:34:47 -07:00
Wesley Cho 3f6d388925 chore(typeahead): fix mistaken removal of prefix 2015-10-30 06:19:49 -07:00
dsisejkovic a1355e7687 feat(typeahead): add ability to scroll with matches
- This adds scrolling capability with matches when using keyboard
  navigation

Closes #4463
2015-10-30 06:18:57 -07:00
Chenyu Zhang ef82ad1f29 feat(typeahead): add show-hint option
- Add support for hinting on the first match in the matches list

Closes #2570
Closes #4784
2015-10-29 23:11:00 -07:00
Wesley Cho 9d93af1c81 fix(carousel): remove version checks
- Make use of `$animateCss` directly since a shell service was introduced in Angular proper

Closes #4122
Closes #4774
2015-10-29 22:50:45 -07:00
Wesley Cho 30099a0cd0 fix(pagination): retain model on initialization
- When `total-items` initializes as undefined, ignore value and do not update page information
- Remove extra watcher and call action manually

Closes #3786
Closes #4783
Fixes #2956
2015-10-29 15:59:39 -07:00
Chenyu Zhang 167cfad72a feat(typeahead): add 'is-open' support
- Adds support for checking the toggled state of the dropdown

Closes #4760
Closes #4779
2015-10-29 15:31:38 -07:00
Wesley Cho a8624e0cff chore(pagination): clean up code style 2015-10-29 13:38:25 -07:00
Wesley Cho c8df6f2700 chore(pagination): clean up code style 2015-10-29 13:25:36 -07:00
Foxandxss d60f2dfa09 test(position): add more tests
Closes #4780
2015-10-29 13:10:22 -07:00
Wesley Cho a8516369f4 fix: allow library to be loaded async
- Fixed execution of style tag addition to inside module.run

Closes #4775
Fixes #3665
2015-10-29 13:09:22 -07:00
Foxandxss 8c0b3f592f chore(position): remove unneeded break
Closes #4781
2015-10-29 12:46:46 -07:00
Kevin McCaw 09ad740434 fix(timepicker): correct meridian toggle condition
- Fix check to be against hours being checked against the maximum for hours less than 12 (for time before noon)

Closes #4435
2015-10-28 22:40:33 -07:00
Wesley Cho 468d68ac6b chore(typeahead): fix reference to non-prefixed attribute 2015-10-28 22:27:12 -07:00
Ajay kumar Guthikonda 16d854ca4c feat(modal): add appendTo support
- Add support for appending to specific element through `appendTo` option

Closes #4599
2015-10-28 14:13:56 -07:00
Franz Torghele 8ffdaeb099 feat(timepicker): added ability to handle empty model
Closes #1114
Closes #4203
Closes #4617
2015-10-28 13:25:43 -07:00
Chris Gat c7fa84529c feat(timepicker): add support for seconds
- Adds support for seconds option

Closes #4768
2015-10-28 13:15:00 -07:00
Foxandxss 21b2297aec fix(dateparser): baseDate only care about dates
Closes #4767
2015-10-28 13:12:52 -07:00
Rob Jacobs 429ddc12b6 fix(tooltip): race condition when setting position
A race condition could occur when there is an open delay that
doesn't get cancelled after the transition delay resulting in
the position logic getting called.  This will then try to set
the css of the tooltip after is has been destroyed in the
removeTooltip function.

Closes #4765
Fixes #4757
2015-10-28 12:35:02 -07:00
Foxandxss 1cfaf64418 test(dateParser): missing tests, refactorized tests
Closes #4766
2015-10-28 12:33:35 -07:00
Wesley Cho 97c4333495 feat(datepicker): add semantic classes
- Add semantic classes to template to assist in styling

Closes #4761
2015-10-28 11:06:40 -07:00
Chenyu Zhang 1d9294c8e6 fix(typeahead): clear typeahead input when editable is false
Closes #1620
Closes #4265
Closes #4752
2015-10-28 08:21:16 -07:00
Foxandxss 623e564f07 chore: add the current version of the docs
Closes #4759
2015-10-28 08:19:55 -07:00
Foxandxss a1e0686162 chore(carousel): add more options to the demo
Closes #4749
2015-10-27 19:29:09 +01:00
Wesley Cho acb54991bb chore(accordion): clean up code style 2015-10-27 07:19:58 -07:00
Wesley Cho bb7b9e3f5a chore(accordion): clean up code style 2015-10-27 07:17:40 -07:00
Wesley Cho 9e6bf021da chore(accordion): clean up code style 2015-10-27 07:10:37 -07:00
Wesley Cho dbc9cb7a77 chore(accordion): clean up code style 2015-10-27 06:57:39 -07:00
Foxandxss 38bb19a275 chore(carousel): put documentation up to date
Closes #4747
2015-10-27 06:47:39 -07:00
Foxandxss 286860a1b7 refactor(carousel): simplify one test
Closes #4745
2015-10-27 06:47:16 -07:00
Foxandxss 738b6addf0 refactor(carousel): combine destroy events
Closes #4744
2015-10-27 06:46:42 -07:00
Foxandxss d2097c1dd7 refactor(carousel): remove stale code
Closes #4743
2015-10-27 06:46:18 -07:00
Foxandxss 4eaa82f978 refactor(carousel): a bit faster for
Closes #4742
2015-10-27 06:45:52 -07:00
Foxandxss 9d886da6f9 refactor(carousel): modify slide tests a bit
Closes #4748
2015-10-27 06:45:27 -07:00
Wesley Cho e1222fbfaa chore(carousel): delete unnecessary check 2015-10-26 17:05:28 -07:00
Wesley Cho 972dee623b fix(modal): clean up animation when disabled
- When the animation is set to false, do not remove the `in` class to prevent black opaque background from showing

Closes #4740
Fixes #4672
2015-10-26 15:30:24 -07:00
Wesley Cho 38c1b14684 fix(carousel): decouple animation information from DOM
- Change to use `$animate.enabled` to determine animation state

Closes #4737
Fixes #4516
2015-10-26 13:41:40 -07:00
Foxandxss 8899fc8e85 chore(carousel): remove stale ngdocs
Closes #4736
2015-10-26 12:54:08 -07:00
Rob Jacobs 79367b82de chore(docs): downloads - promote npm
In the download modal on the demo page, changed Bower info
to suggest using npm instead.

Closes #4734
2015-10-26 10:46:25 -04:00
Foxandxss 0669b06650 feat(progressbar): remove deprecated code
BREAKING CHANGE: Remove deprecated non-prefixed directives

Closes #4722
2015-10-23 15:52:05 -07:00
Foxandxss 42fa28f850 feat(position): remove deprecated code
BREAKING CHANGE: Remove deprecated non-prefixed service

Closes #4721
2015-10-23 15:50:59 -07:00
Foxandxss 75e493a940 feat(pagination): remove deprecated code
BREAKING CHANGE: Remove deprecated non-prefixed directives

Closes #4720
2015-10-23 15:50:11 -07:00
Wesley Cho feb2b736d3 feat(timepicker): remove deprecated code
BREAKING CHANGE: Remove deprecated directive

Closes #4712
2015-10-23 15:49:19 -07:00
Wesley Cho 606d419e92 feat(typeahead): remove deprecated code
BREAKING CHANGE: Remove deprecated services/directives

Closes #4711
2015-10-23 15:48:50 -07:00
Foxandxss d844623a1e feat(rating): remove deprecated code
BREAKING CHANGE: Remove deprecated non-prefixed directives

Closes #4723
2015-10-23 15:48:16 -07:00
Wesley Cho 1b75164c4f feat(tabs): remove deprecated code
BREAKING CHANGE: Remove deprecated directives

Closes #4710
2015-10-23 15:47:20 -07:00
Wesley Cho a85d4996c2 feat(modal): remove deprecated code
BREAKING CHANGE: Remove deprecated services/directives

Closes #4709
2015-10-23 15:46:29 -07:00
Wesley Cho 2fc3f2147b feat(datepicker): remove deprecated code
BREAKING CHANGE: Remove deprecated non-prefixed directives

Closes #4708
2015-10-23 15:45:24 -07:00
Wesley Cho 0010aff05d feat(accordion): remove deprecated code
BREAKING CHANGE: Remove deprecated non-prefixed directives

Closes #4706
2015-10-23 15:44:51 -07:00
Foxandxss ca3a343e2e feat(dropdown): remove deprecated code
BREAKING CHANGE: Remove deprecated non-prefixed directives/services

Closes #4719
2015-10-23 15:44:07 -07:00
Foxandxss 2d68f4131c feat(dateparser): remove deprecated code
BREAKING CHANGE: Remove deprecated non-prefixed service

Closes #4718
2015-10-23 15:43:27 -07:00
Foxandxss b159b21c85 feat(carousel): remove deprecated code
BREAKING CHANGE: Remove deprecated non-prefixed directives

Closes #4717
2015-10-23 15:42:50 -07:00
Foxandxss b5492632a8 feat(buttons): remove deprecated code
BREAKING CHANGE: Remove deprecated non-prefixed directives

Closes #4716
2015-10-23 15:41:39 -07:00
Foxandxss bc004dfa3a feat(collapse): remove deprecated code
BREAKING CHANGE: Remove deprecated non-prefixed directives

Closes #4715
2015-10-23 15:40:56 -07:00
Foxandxss 21e852b8ec feat(alert): remove deprecated code
BREAKING CHANGE: Remove deprecated non-prefixed directives

Closes #4714
2015-10-23 15:40:16 -07:00
Foxandxss 187f64c006 feat(tooltip): remove deprecated code
BREAKING CHANGE: Remove deprecated non-prefixed directives

Close #4713
2015-10-23 15:38:20 -07:00
Foxandxss 80ede3797f chore(docs): fix versions-mapping url 2015-10-23 23:04:18 +02:00
Wesley Cho 0b04eefd12 chore(release): Starting v1.0.0-SNAPSHOT 2015-10-23 13:47:45 -07:00
Wesley Cho e9d6ec2a29 chore(release): v0.14.3 2015-10-23 13:47:26 -07:00
Rob Jacobs 1f94104b69 fix(tooltip): null scope check in isOpen watch
The watch for the isOpen property from the model was not
checking to see if the internal tooltip scope was still
valid (null or undefined) before comparing the value to
the tooltip scope isOpen property.

Closes #4697
Fixes #4683
2015-10-23 15:59:05 -04:00
Foxandxss 1599cfff9b chore(accordion): update docs
Closes #4700
2015-10-23 21:46:07 +02:00
Foxandxss ac62276943 chore(buttons): update docs
Fixes #3562
Closes #4701
2015-10-23 21:44:42 +02:00
Rob Jacobs 8417b2d525 chore(docs): popover close delay
The attribute for the close delay on the popover was incorrectly
documented as 'popover-close-popup-delay' and should be
'popover-popup-close-delay.

Closes #4698
2015-10-23 11:03:43 -07:00
Wesley Cho 0d64aad4dd feat(datepicker): preserve timezone with model
- Default to using the date instance for any date manipulation, allowing
  for the timezone to automatically be preserved

Closes #4676
2015-10-23 11:01:42 -07:00
Foxandxss d3056c7605 chore: add CODE_OF_CONDUCT
Closes #4653
Closes #4652
2015-10-23 12:47:50 +02:00
Patrick Sullivan 134086a6b0 fix(datepicker): datepicker-popup nest in dropdown
* Extend fix from commit c5fe8b to the deprecated
non uib-dropdown-menu.

Fixes #4197
Closes #4693
2015-10-22 14:45:14 -06:00
Foxandxss a6cb8d37dd chore(demo): use prefixed
Closes #4674
2015-10-21 13:12:45 -07:00
Rainer Eli 74f9945171 chore(docs): fix typeo in README
Closes #4677
2015-10-21 09:48:08 -06:00
Foxandxss ff9092ec84 chore: remove stale ngDocs folder
Closes #4668
2015-10-20 22:25:11 +02:00
Foxandxss de24f4647f fix(alert): allow interpolations with dismiss-on-timeout
Fixes #4665
Closes #4666
2015-10-20 20:30:05 +02:00
Foxandxss 563410c3cb chore: add link to ng-bootstrap
Closes #4663
2015-10-20 09:40:22 -07:00
Wesley Cho 312dc3e82a chore(datepicker): clean up code style 2015-10-20 04:21:39 -07:00
Adam Gordon 1cba27c1f2 chore(docs): fix uib-popover-tempate description
* clarify description for `uib-popover-template` attribute.

Fixes #4564
Closes #4660
2015-10-19 17:05:15 -06:00
crisbeto 964aa16831 chore(modal): optimize with querySelector
- Change from `querySelectorAll` to more efficient `querySelector`

Closes #4659
2015-10-19 15:48:22 -07:00
Oliver Salzburg 94fb282481 fix(typeahead): dangling event listeners
Fixes #4632
Closes #4636
2015-10-19 21:10:22 +02:00
Wesley Cho 97fd37e226 feat(modal): support $uibModalInstance
- Add support for `$uibModalInstance` as a controller local
- Deprecate `$modalInstance` support

Closes #4638
Closes #4661
2015-10-19 11:37:52 -07:00
Foxandxss 7c3c631075 fix(datepicker): fix support for literal format on popup
- Add check for `uibDatepickerPopup`

Closes #4635
Fixes #4616
2015-10-19 07:33:05 -07:00
Sylvester Keil 6d1cd0f409 fix(collapse): fix collapse animation timing
Closes #4493
2015-10-19 00:01:02 -07:00
Sylvester Keil 82cd2d41d1 Fix collapse animation
Set class 'in' at the end of the animation to mimick the
behaviour of TWBS js. This removes scrollbars which are
otherwise visible during the animation in certain
configurations (most notably when used inside navbars).
2015-10-19 00:00:03 -07:00
Wesley Cho 13be7b78c6 chore(dropdown): clean up code style 2015-10-18 21:19:15 -07:00
Foxandxss 31446331e1 fix(collapse): trigger digest after
Fixes #4647
Fixes #4628
Fixes #4561
Closes #4651
2015-10-18 18:16:07 +02:00
Foxandxss 7985a46ead chore(readme): remove link for old docs 2015-10-17 20:28:03 +02:00
Foxandxss 550ca0f9a7 chore(docs): add docs versioning
Fixes #3670
Closes #4646
2015-10-17 20:24:51 +02:00
Foxandxss c18cb16baa chore(buttons): update tests
Closes #4644
2015-10-16 11:41:57 -07:00
Wesley Cho 59f87fcc95 docs(typeahead): remove erroneous watch
- Remove erroneous documentation that property is watched

Closes #4592
Closes #4634
2015-10-15 14:06:14 -07:00
Foxandxss e8808d3a67 fix(buttons): double toggle on spacebar
Fixes #4474
Closes #4630
2015-10-15 20:01:16 +02:00
RobJacobs 02425b807e fix(tooltip): delay timeouts
The show and hide delay timeouts where not getting
cancelled correctly resulting in tooltips staying
open when both popup and popup-close delays were
in use.

Closes #4621
Fixes #4618
2015-10-14 13:31:17 -07:00
RobJacobs 6c82b2b213 fix(tooltip): scrollbar flashing
When the tooltip is rendered for positioning scroll bars
may breifly appear depending on where the linked element
is positioned. This change adds a negative top and left
style to push the tooltip element out of view while it
is being measured and positioned.

Closes #4550
Closes #4623
Fixes #4458
2015-10-14 13:28:12 -07:00
Filip Sobczak 1f65d87fc3 feat(datepicker): add templateUrl support for pickers
- Add support for custom template urls for `uibDaypicker`, `uibMonthpicker`, and `uibYearpicker`

Closes #4432
2015-10-14 11:46:57 -07:00
Wesley Cho 16dafd5f1b chore(release): Starting v0.14.3-SNAPSHOT 2015-10-13 21:29:21 -07:00
Wesley Cho 539b4723e7 chore(release): v0.14.2 2015-10-13 21:29:05 -07:00
RobJacobs 6daf871863 fix(tooltip): popup close delay not respected
Under PR #4455 the timeout for the popup close delay
was impacted by the evalAsync for setting the isOpen
value. Moved the popup close delay timeout to the
hideTooltipBind method so the hide method will now
get called after the close popup delay. This will
also ensure if the show method is called and the
close timeout is cancelled, the isOpen property
will not get toggled.

Closes #4597
Fixes #4567
2015-10-13 17:04:56 -07:00
Wesley Cho be5802a5da chore(modal): clean up code style 2015-10-13 13:32:17 -07:00
Wesley Cho 8ba3466048 chore(modal): clean up code style 2015-10-13 13:31:31 -07:00
RobJacobs ebb5e18761 fix(tooltip): clean up stackedMap on scope destroy
The tooltip was not being removed from the stackedMap
resulting in a memeory leak.  Tooltip will now be
removed from the stackedMap in scope destroy
function.

Closes #4610

Fixes #4604
2015-10-13 14:09:41 -04:00
JDeuker feb689cf8e fix(progressbar): fix percentage calculation
- Fix percentage calculation when bars are altered

Closes #4471
Closes #4588
Fixes #4452
2015-10-12 08:06:17 -07:00
Wesley Cho 0b1e206141 refactor(typeahead): move logic to controller
- Create `UibTypeaheadController` for decoupling the directive
  implementatino from the controller

Closes #4595
2015-10-12 07:53:06 -07:00
Foxandxss 5646cbe63f chore(readme): add link to the wiki for constructing old docs
Closes #4594
2015-10-12 03:24:36 -07:00
Wesley Cho 68f9530565 chore(modal): clean up code style 2015-10-11 15:46:09 -07:00
Wesley Cho 1a1cd35d80 chore(modal): fix extra character being present 2015-10-11 15:41:11 -07:00
Wesley Cho a1340d72b6 chore(release): Starting v0.14.2-SNAPSHOT 2015-10-11 14:57:29 -07:00
Wesley Cho f9a73a08bd chore(release): v0.14.1 2015-10-11 14:57:03 -07:00
Wesley Cho 4ebecbcca8 feat(timepicker): add accessibility improvements
- Add ng-disabled usage in template
- Add `timepickerTabindex` attribute support for binding tabindex to
  timepicker controls

Closes #4569
Closes #4573
2015-10-11 14:55:40 -07:00
Foxandxss 18371ab1df fix(datepicker): make deprecated controller work with 1.3.x
Closes #4586
2015-10-11 21:24:32 +02:00
Wesley Cho a09275afde docs(datepicker): fix 2009-08-24 button
- Fix button in demo for setting the date

Closes #4587
2015-10-11 12:01:03 -07:00
Wesley Cho 70be195959 docs(datepicker): switch to use uib
- Properly update datepicker configuration

Closes #4575
2015-10-11 11:58:31 -07:00
Foxandxss 1cb4f631b2 chore(readme): add migration guide
Closes #4568
2015-10-11 20:51:00 +02:00
Foxandxss ae1a87c6d2 fix(dropdown): make deprecated controller work with 1.3.x
Closes #4585
2015-10-11 11:34:35 -07:00
Foxandxss 00f60eeb27 fix(timepicker): make deprecated controller work with 1.3.x
Closes #4584
2015-10-11 11:34:08 -07:00
Foxandxss 685bd6a461 fix(tabs): make deprecated controller work with 1.3.x
Closes #4583
2015-10-11 11:33:45 -07:00
Foxandxss ce1114a4ee fix(rating): make deprecated controller work with 1.3.x
Closes #4582
2015-10-11 11:33:22 -07:00
Foxandxss 1c5e4798dd fix(progressbar): make deprecated controller work with 1.3.x
Closes #4581
2015-10-11 11:32:54 -07:00
Foxandxss d50e8d22ac fix(pagination): make deprecated controller work with 1.3.x
Closes #4580
2015-10-11 11:32:25 -07:00
Foxandxss f6c7931e85 fix(carousel): make deprecated controller work with 1.3.x
Closes #4578
2015-10-11 11:31:57 -07:00
Foxandxss 1e3cbd82ed fix(buttons): make deprecated controller work with 1.3.x
Closes #4577
2015-10-11 11:31:23 -07:00
Foxandxss e8c8ee6cd2 fix(alert): make deprecated controller work with 1.3.x
Closes #4576
2015-10-11 11:30:48 -07:00
Foxandxss c5e6042bf2 fix(accordion): make deprecated controller work with 1.3.x
Closes #4574
2015-10-11 11:30:12 -07:00
Wesley Cho 9e71da8d1a chore(docs): fix links in changelog 2015-10-09 15:51:38 -07:00
Wesley Cho d668ce14f6 chore(demo): update to angular 1.4.7 2015-10-09 09:50:53 -07:00
Wesley Cho 6bb2f550eb chore(release): Starting v0.14.1-SNAPSHOT 2015-10-08 21:23:52 -07:00
Wesley Cho c7cc9eab88 chore(release): v0.14.0 2015-10-08 21:23:25 -07:00
Adam Gordon 0ad7cb9ed1 fix(datepicker): add custom class to year picker
* add missing custom class to year picker

Closes #4558
Fixes #4546
2015-10-08 16:03:36 -07:00
Foxandxss 32729600c6 chore: add tooltip/popover classes by hand
Closes #4557
2015-10-08 15:30:32 -07:00
Foxandxss 22f1a4b6c4 chore(modal): add modal-backdrop class by hand
Closes #4556
2015-10-08 14:47:38 -07:00
RobJacobs 01b9624ef0 fix(tooltip): check for ttScope in $$postDigest
In the tooltip $$postDigest function a check is done
on ttScope.isOpen but ttScope may have been set to null
in the scope.$on('$destroy'...) function.  Added a
check to make sure ttScope is defined and not null.

Closes #4555
Fixes #4552
2015-10-08 15:52:07 -04:00
Wesley Cho c9ab5f63bf chore(demo): remove safari 6 fallback 2015-10-08 08:03:26 -07:00
Wesley Cho 7675457a06 chore(modal): remove unnecessary restrict options 2015-10-08 08:00:13 -07:00
Wesley Cho 53bb69ee62 Revert "chore(modal): change to $uibModalStack"
This reverts commit adf68ebc35.
2015-10-08 07:56:17 -07:00
Wesley Cho adf68ebc35 chore(modal): change to $uibModalStack 2015-10-08 07:55:18 -07:00
Wesley Cho f900fdd321 chore(dropdown): change to output warning after controller check 2015-10-08 07:52:40 -07:00
Wesley Cho 305dc2e1f8 chore(dropdown): fix to use uibKeyboardNav 2015-10-08 07:49:03 -07:00
Wesley Cho b1862d32dc chore(typeahead): change to uibTypeaheadPopup 2015-10-08 07:36:28 -07:00
Foxandxss 694a0116e3 chore(demo): use prefixed directives 2015-10-08 14:21:39 +02:00
Wesley Cho 44354f67e5 feat(datepicker): add uib- prefix
Closes #4509
2015-10-08 14:05:50 +02:00
bob 9e5e1a2eab feat(typeahead): add uib- prefix
Closes #4542
2015-10-07 09:45:56 -07:00
Wesley Cho 038157dd57 chore(accordion): simplify controller instantiation 2015-10-06 23:49:28 -07:00
Wesley Cho 001574e5ef chore(alert): simplify controller instantiation 2015-10-06 23:48:55 -07:00
Wesley Cho 4db0f95c95 chore(buttons): simplify controller instantiation 2015-10-06 23:48:35 -07:00
Wesley Cho dc8379a014 chore(dropdown): simplify controller instantiation 2015-10-06 23:47:58 -07:00
Wesley Cho a76fd08dc3 chore(progressbar): simplify controller instantiation 2015-10-06 23:47:19 -07:00
Wesley Cho 795b7cf736 chore(rating): simplify controller instantiation 2015-10-06 23:46:52 -07:00
Wesley Cho 18590f065f chore(tab): simplify controller instantiation 2015-10-06 23:46:23 -07:00
Wesley Cho adebde9044 chore(timepicker): simplify controller instantiation 2015-10-06 23:45:43 -07:00
Tom McGeehon 5f7051b38f feat(tooltip): allow custom closing delay
- Add support for `tooltipClosePopupDelay` for customizing close timeout

Closes #3576
2015-10-05 09:35:52 -07:00
Foxandxss d4adef7834 chore(tooltip): fix wrong deprecation message 2015-10-05 12:58:14 +02:00
Wesley Cho f8bc038db6 feat(tooltip): add uib- prefix
Closes #4515
2015-10-05 12:04:21 +02:00
bob 9aea856f11 feat(pagination): add uib- prefix
Closes #4536
2015-10-05 11:53:06 +02:00
Foxandxss 4e60e22c49 docs: add tooltip and popover workaround
Closes #4535
2015-10-05 11:43:37 +02:00
Foxandxss 8c7b9e4c78 feat(modal): add uib- prefix
Closes #4511
2015-10-05 11:42:02 +02:00
Wesley Cho 30e8aa71e2 fix(carousel): re-enable deprecated directives
- Re-implement deprecated directives
- Re-expose `CarouselController` with deprecation notice

Closes #4527
2015-10-04 17:06:09 -07:00
Patrick Sullivan 6b4267b2d3 fix(datepicker): datepicker-popup nest in dropdown
- Add `dropdown-nested` class hack to avoid problems with dropdown
  controller

Closes #4489
Fixes #4197
2015-10-03 17:25:39 -07:00
Wesley Cho 0b3d5bd38c fix(carousel): reset $currentTransition when no slides
- Reset `$currentTransition` when there are no slides

Closes #4532
Fixes #4390
2015-10-03 14:09:36 -07:00
Wesley Cho 3aa984182e fix(timepicker): re-expose TimepickerController
- Re-expose `TimepickerController` with deprecation notice

Closes #4531
2015-10-03 14:08:16 -07:00
Wesley Cho 435924f201 fix(tabs): re-expose TabsetController
- Re-expose `TabsetController` with deprecation notice

Closes #4530
2015-10-03 14:06:46 -07:00
Wesley Cho aede646189 fix(rating): re-expose RatingController
- Re-expose `RatingController` with deprecation notice

Closes #4529
2015-10-03 14:05:55 -07:00
Wesley Cho 5604e59586 fix(progressbar): re-expose ProgressController
- Re-expose `ProgressController` with deprecation notice

Closes #4528
2015-10-03 14:04:58 -07:00
Wesley Cho 92ab48ece5 fix(dropdown): ensure class is present in dropdown-menu
- Ensure `dropdown-menu` class is present when using as an attribute
  directive
- Refactor `DropdownController` to be more agnostic of directive

Closes #4523
Fixes #4442
2015-10-03 14:01:57 -07:00
Wesley Cho c0dbf793ba fix(buttons): re-expose ButtonsController
- Re-expose `ButtonsController` with deprecation message

Closes #4526
2015-10-03 14:00:10 -07:00
Wesley Cho f561aa9e95 fix(alert): re-expose AlertController
- Re-expose `AlertController` with deprecation message

Closes #4525
2015-10-03 11:13:24 -07:00
Wesley Cho 5382226a54 fix(accordion): re-expose AccordionController
- Expose `AccordionController` with deprecation message

Closes #4524
2015-10-03 11:12:06 -07:00
Wesley Cho db36c62f99 chore(carousel): clean up code style 2015-10-03 10:02:16 -07:00
Wesley Cho e7c58791af fix(dropdown): restore deprecated directives
- Adds uib- prefix to `dropdownConfig`
- Restores functionality to deprecated directives

Closes #4514
2015-10-03 09:01:29 -07:00
Wesley Cho 8fa158769d chore(buttons): update docs
Closes #4517
2015-10-03 01:39:19 -07:00
Wesley Cho 3a3b383f2f chore(progressbar): update docs
Closes #4518
2015-10-03 01:38:05 -07:00
Wesley Cho 8d19c608e0 chore(rating): update docs
Closes #4519
2015-10-03 01:37:26 -07:00
Wesley Cho d1555dcdb6 chore(timepicker): update docs
Closes #4520
2015-10-03 01:36:52 -07:00
Wesley Cho 7b7039b4d9 chore(typeahead): remove unnecessary $digest
- Removes unnecessary $digest inside $timeout

Closes #4521
2015-10-03 01:35:29 -07:00
Wesley Cho 85d7748162 chore(progressbar): clean up code style 2015-10-02 23:57:05 -07:00
Steven Pribilinskiy 2e268151e2 fix(carousel): fix reading of noTransition
- Check the correct DOM node for animation settings

Closes #4325
2015-10-02 22:53:52 -07:00
Wesley Cho 6f9f1fcf6b revert(dropdown): undo adding of open class on body
This reverts commit bf63cef0aa.
2015-10-02 22:43:31 -07:00
bob 5bc0851c08 feat(dropdown): uib- prefix
Closes #4510
2015-10-02 15:28:36 -07:00
Wesley Cho 615809169b feat(position): add uib- prefix
Closes #4507
2015-10-02 13:09:13 -07:00
Wesley Cho 504e653f6b feat(timepicker): use uib- prefix
Closes #4505
2015-10-02 13:08:04 -07:00
Wesley Cho 66819c2ad0 chore(carousel): remove whitespace 2015-10-01 23:17:36 -07:00
Chad King 2e5bfaca3b feat(carousel): use uib- prefix
Closes #4501
2015-10-01 23:16:50 -07:00
Wesley Cho 0fa851fb80 feat(dateparser): use uib- prefix
Closes #4504
2015-10-01 21:32:30 -07:00
Wesley Cho 298ec8cf20 feat(accordion): use uib- prefix
Closes #4503
2015-10-01 21:30:48 -07:00
Wesley Cho 377b4b7962 feat(rating): user uib- prefix
Closes #4502
2015-10-01 16:32:11 -07:00
keith fdf53e6461 feat(typeahead): add appendElementToId
- Add appending popup to specific id

Closes #4231
Closes #4497
2015-09-30 16:29:36 -07:00
Wesley Cho 8919b0a08e chore(typeahead): clean up code style 2015-09-30 13:35:20 -07:00
Foxandxss e432059aed chore(demo): use prefix on tabs
Closes #4480
2015-09-28 15:59:53 -07:00
Adam Gordon d25a8c245b feat(tabs): use uib- prefix
Close #4449
2015-09-26 18:49:49 +02:00
Wesley Cho 23a312d5c1 chore(carousel): change to empty hrefs 2015-09-25 15:23:09 -07:00
Evan.Duncan da711594f8 fix(carousel): improve accessibility
- Improves accessibility of carousel

Closes #4478
Closes #4479
2015-09-25 15:21:26 -07:00
Foxandxss 19118f162e refactor(buttons): match general style
Closes #4465
2015-09-24 14:46:36 -07:00
Foxandxss ec6c0bca1b style(buttons): change bind to on
Closes #4464
2015-09-24 14:46:02 -07:00
RobJacobs 81a38d7261 refactor(tooltip): rollup commit for several issues
This is a rollup commit intended to address several
issues around the positioning and parsing of
attributes.

- Fixes issue introduced under PR #4311 where setting
  height and width in tooltip position function
  messed up arrow placement.
- Fixes issue introduced under PR #4363 where setting
  visibility to hidden in tooltip position function
  caused elements in popover to lose focus.
- Fixes issue #1780 where tooltip would render if
  content was just whitespace.
- Fixes issue #3347 where tooltip isolate scope was
  being accessed after it was set to null.  Observers
  will now be created/destroyed as tooltip opens/closes
  which will also offer a performance improvement.
- Fixes issue #3557 by implementing evalAsync to set
  tooltip scope isOpen property.
- Fixes issue #4335 where if model isOpen property is
  undefined, tooltip would call show/hide toggle function.
- Closes PR #4429 where how the templated content
  was being evaluated could cause an infinite digest loop.

Closes #4400
Closes #4418
Closes #4429
Closes #4431
Closes #4455

Fixes #1780
Fixes #3347
Fixes #3557
Fixes #4321
Fixes #4335
2015-09-23 19:38:06 -04:00
Foxandxss a59caf183d chore(demo): update collapse to use prefix
Closes #4446
2015-09-23 12:04:47 +02:00
Foxandxss 5a1c2c9a27 feat(buttons): use uib- prefix
Closes #4445
2015-09-23 12:02:10 +02:00
ehtesham 4031e29cae docs(typeahead): add custom template demo
Closes #4412
2015-09-23 11:59:56 +02:00
Wesley Cho 2c0ad03f8a chore(docs): bump up angular version 2015-09-17 19:51:17 -07:00
Wesley Cho bba0e686dc chore(tooltip): clean up code style 2015-09-17 06:55:50 -07:00
Tobias Gunkel d9a521a4e5 feat(dateparser): reset parsers when $locale.id changes
- Reset parsers when $locale.id changes to take into account changed
  localization settings

Closes #4286
Closes #4425
2015-09-16 23:07:03 -07:00
Yousuf Jukaku 868c0e248d fix(datepicker): add check for contains
Closes #4423
Fixes #4411
2015-09-16 09:35:07 -07:00
Wesley Cho b74c263fd5 Revert "feat(typeahead): add customClass support for dropdown"
This reverts commit fa1cdfccd3.
2015-09-16 06:40:58 -07:00
Nadi fa1cdfccd3 feat(typeahead): add customClass support for dropdown
- Adds support for custom classes on the typeahead dropdown

Closes #4332
Closes #4410
2015-09-15 15:44:33 -07:00
Wesley Cho 7ba252787c chore(timepicker): clean up code style 2015-09-14 00:26:53 -07:00
Wesley Cho fb90152c7e chore(tooltip): clean up code style 2015-09-14 00:24:14 -07:00
Wesley Cho b10a48b5ed chore(tooltip): clean up code style 2015-09-14 00:21:47 -07:00
Wesley Cho cbf2c0d1e4 chore(dropdown): clean up code style 2015-09-14 00:18:48 -07:00
Wesley Cho fabf0161ce chore(dropdown): clean up code style 2015-09-14 00:17:55 -07:00
Martin Magana 36ecf60c23 fix(datepicker): remove focus management on date selection by keyboard
BREAKING CHANGE:

Removes focus on datepicker on selection of a date via keyboard for accessibility reasons

Closes #4409
2015-09-13 22:24:49 -07:00
Jesus Rodriguez 5e3a87a91e feat(alert): use uib- prefix
Closes #4406
2015-09-12 00:04:00 +02:00
Jesus Rodriguez a04b4ff284 refactor(alert): move dismiss-on-timeout to an attribute
Closes #4405

BREAKING CHANGE: Alert's dismiss-on-timeout is now an attribute inside uib-alert.
2015-09-11 16:20:24 +02:00
Wesley Cho d1babb64e9 docs(changelog): update with breaking change
Closes #3256
2015-09-10 22:21:48 -04:00
Jesus Rodriguez 641cdb32d8 chore(accordion): clean some stale code and comments
Closes #4394
2015-09-10 21:59:45 -04:00
Jesus Rodriguez b1fdca5da2 chore(accordion): add missing test for $destroy
Closes #4393
2015-09-10 21:57:28 -04:00
Jesus Rodriguez fcb08e9dfc chore(accordion): clean tests a bit
Closes #4392
2015-09-10 21:55:41 -04:00
Jesus Rodriguez 47076029f1 chore(accordion): test that any other keyCode wont work
Closes #4399
2015-09-10 21:54:19 -04:00
Wesley Cho 252837158b chore(changelog): fix formatting 2015-09-10 20:59:34 -04:00
Wesley Cho 9d6ab9665b docs(changelog): update with breaking change for tooltip
Closes #4364
2015-09-10 20:58:23 -04:00
Wesley Cho 65814f1e95 fix(datepicker): change to $popup 2015-09-10 20:38:59 -04:00
Jesus Rodriguez 53f5f477ef docs(collapse): update them yet again to latest design
Closes #4397
2015-09-10 15:32:16 +02:00
Jesus Rodriguez 4d01387a1b chore(accordion): update docs to match the general style
Closes #4395
2015-09-10 15:30:39 +02:00
Wesley Cho c08509a071 feat(tooltip): hide tooltip when esc is hit
- Hide tooltip when `esc` is hit for accessibility

Closes #4367
Resolves #4248
2015-09-10 07:08:20 -04:00
Wesley Cho f26998303d chore(carousel): clean up code style 2015-09-10 07:04:56 -04:00
Wesley Cho 365cdd6acb chore(carousel): clean up code style 2015-09-10 07:04:47 -04:00
Pavel R3VoLuT1OneR Zhytomirsky bd38e8f355 feat(modal): Added ability to add CSS class to top window
- Added ability to add a class to the most recently opened modal window.
  Note that even if different classes are specified, the class will
only be present if the modal is the most recently opened modal, i.e. if
modal1 was opened with a top class of `foo`, and modal2 is opened
afterwards with a top class of `bar`, modal2 will have the class `bar`
for the modal window, and modal1 will not have the class `foo`.

Closes #2524
2015-09-10 06:44:15 -04:00
Jesus Rodriguez 0328a7630a feat(accordion): use uib- prefix
Closes #4389
2015-09-10 06:31:36 -04:00
Wesley Cho eb2366fe11 fix(alert): properly pass $event as local
- Change to pass object due to how `&` binding works

Fixes #4386
Closes #4387
2015-09-09 21:13:42 -06:00
Wesley Cho d6cda93aff fix(tooltip): fix binding to multiple triggers
- Due to switch to raw `addEventListener`, changed to add and remove
  listeners to event triggers by iteration

Fixes #4371
Closes #4384
2015-09-09 21:10:07 -06:00
Wesley Cho 8ae664fa2e chore(tabs): remove disabled support
- Remove deprecated `disabled` support

Closes #4383
2015-09-09 20:58:49 -06:00
VitalyVoroshilov ff52f52a8d fix(tooltip): properly gc popupTimeout
- Make sure to cancel timeout before setting to `null`

Closes #2786
2015-09-09 10:51:50 -04:00
RobJacobs 5f68280ad0 fix(tooltip): isOpen to work with expressions
The is-open attribute should work with expressions
as well as model values

Closes #4380
Fixes #4362
2015-09-09 10:19:56 -04:00
Wesley Cho c064748536 chore(accordion): change to !! 2015-09-09 05:08:55 -04:00
Sylvester Keil b864aa9c81 fix(accordion): coerce to boolean
- Coerce `toggleClass` argument to boolean due to jQuery ignoring
  `undefined`

Closes #4385
2015-09-09 05:07:18 -04:00
Wesley Cho cf92eae985 chore(carousel): clean up code style 2015-09-09 04:39:39 -04:00
Wesley Cho e6f3b874cb feat(progressbar): add aria-labelledby support
- Add `aria-labelledby` support for accessibility

Closes #4350
Resolves #4347
2015-09-09 03:55:11 -04:00
Jesus Rodriguez 9bdb32ed8f feat(collapse): use uib- prefix
Closes #4370
2015-09-08 16:36:28 -04:00
Wesley Cho 79e38cbce7 chore(tooltip): clean up code style 2015-09-08 16:33:34 -04:00
RobJacobs b413a226a4 fix(tooltip): add display block to style
- Adds style override to fix `display: none` being set by Bootstrap's
  CSS

Closes #4363
Closes #4379
2015-09-08 16:30:09 -04:00
Jesus Rodriguez 9d80066321 docs(collapse): update docs to latest version
Closes #4377
2015-09-08 16:29:17 -04:00
Jesus Rodriguez c4b7e04b7c chore(contributing): add note about prefixes work
Closes #4376
2015-09-08 16:28:15 -04:00
Wesley Cho d11c3d0ef0 chore(bindHtml): remove unused module
Closes #4374
Closes #4375
2015-09-08 16:26:45 -04:00
Jesus Rodriguez ddfca61360 chore(typeahead): update demo to use ngBindHtml
Closes #4378
2015-09-08 16:26:15 -04:00
Damien Abos 8fee75d517 fix(tooltip): correct flash of reposition
- Avoid position computation when tooltip is empty
- Force visibility to none when resetting style

Closes #4363
Fixes #4195
2015-09-07 19:18:02 -04:00
Wesley Cho 72de2d80e7 feat(rating): add aria-valuetext attribute
- Add `aria-valuetext` attribute on each star element for accessibility

Closes #4349
Resolves #4347
2015-09-07 19:16:28 -04:00
Wesley Cho af2d1ef4e5 docs(rating): add aria-labelledby
- Add usage of `aria-labelledby` to aid in demonstrating accessibility

Closes #4246
Closes #4348
2015-09-07 19:15:16 -04:00
Jesus Rodriguez 50ebfc3db0 chore(progressbar): switch deprecation warnings
Closes #4366
2015-09-07 19:14:40 -04:00
Jon Iñiguez de Heredia 508acebe8e fix(modal): fix for conflicts with ngTouch module on mobile devices
- Merge pull request #3044 from jiniguez/fix2280
Conflicts:
	src/modal/modal.js
	template/modal/window.html

Fixes #2280
Closes #4357
2015-09-07 11:48:22 -07:00
Jesus Rodriguez 745c57d41b docs(progressbar): fix the prefix 2015-09-07 17:55:14 +02:00
btrauma8 1e039e86b6 fix(tooltip): do nothing if $scope doesn't exist
- Do nothing on hide when `$scope` is already removed

Closes #4346
Fixes #3347
2015-09-04 13:43:09 -07:00
Di Huang f7cb8bc014 fix(tooltip): set visibility: hidden to avoid flicker
- Set `visibility: hidden` and then to `visible` to avoid flicker from positional movement

Closes #4342
2015-09-04 13:08:42 -07:00
Adam Gordon 5482db2edd docs(accordion): fix accordion demo
* fix accordion demo for last panel
* last panel was previously the markup example so moving just the close toggle
  was not sufficient and moving the markup as well would have rendered that
  specific accordion example obsolete.  so this restores the markup accordion
  back to original and moves to the last accordion example.

Closes #4344
2015-09-04 11:25:09 -07:00
Adam Gordon 31e04a85a9 docs(accordion): fix accordion demo
* fix toggle last panel

Closes #4341
2015-09-04 10:21:07 -07:00
Jesus Rodriguez 1583dde5e2 chore(collapse): clean some stale test headers
Closes #4340
2015-09-04 10:20:17 -07:00
Wesley Cho 533a9f03c6 feat(collapse): convert to use $animateCss
- Change to use `$animateCss` when available

Closes #4257
2015-09-04 12:04:48 +02:00
Adam Gordon 0a69580432 docs(changelog): fix breaking changes
* fix breaking changes section for 0.13.4 release.

Closes #4337
2015-09-03 23:46:30 -07:00
Jesus Rodriguez b6635e68e3 chore(collapse): fix test
Closes #4304
Closes #4336
2015-09-03 12:48:32 -07:00
Wesley Cho da6924eba2 chore(tooltip): remove deprecated code
BREAKING CHANGE:
Remove the unsafe html support from the tooltip

Closes #4334
2015-09-03 10:13:49 -07:00
Wesley Cho 8b809b2831 chore(changelog): generate changelog 2015-09-03 08:00:19 -07:00
Chris Chua dfa4c97cb6 chore(transition): remove transition module
BREAKING CHANGE:
The `transition` module along with its `$transition` service are no longer
available. We're now using `$animate` service for animations and would
encourage users to do the same.

Closes #4359
2015-09-03 07:29:36 -07:00
Wesley Cho 833e7ad765 chore(demo): bump up version of angular in docs 2015-09-03 07:22:06 -07:00
Wesley Cho 20739e4a2e chore(release): Starting v0.14.0-SNAPSHOT 2015-09-03 07:10:21 -07:00
338 changed files with 237358 additions and 8996 deletions
+34 -7
View File
@@ -1,18 +1,45 @@
# This file is for unifying the coding style for different editors and IDEs
# editorconfig.org
# This project uses EditorConfig for setting code formatting options: http://EditorConfig.org
root = true
# Default settings for all files
[*]
end_of_line = lf
charset = utf-8
end_of_line = lf
trim_trailing_whitespace = true
insert_final_newline = true
indent_style = tab
indent_size = tab
tab_width = 4
max_line_length = 120
# Tabs in JS unless otherwise specified
[**.js]
spaces_around_operators = true
spaces_around_brackets = none
curly_bracket_next_line = true
indent_brace_style = Allman
continuation_indent_size = 4
[*.{css,less}]
curly_bracket_next_line = false
continuation_indent_size = 0
# Formats likely to be pasted into an REPL on a terminal should not use tabs to avoid triggering tab-completion.
[*.{sh,bash,sql,psql,pgsql}]
indent_style = space
indent_size = 4
[*.yml]
indent_style = space
indent_size = 2
[*.md]
trim_trailing_whitespace = false
[*.{js,json}]
indent_style = space
indent_size = 4
# Special overrides for automatically-generated files
[package.json]
indent_size = 2
# For some formats, trailing whitespace is significant; don't strip it.
[*.{md,diff,patch}]
trim_trailing_whitespace = false
+76
View File
@@ -0,0 +1,76 @@
{
"env": {
"browser": true,
"es6": true
},
"rules": {
"comma-dangle": 2,
"no-cond-assign": 2,
"no-control-regex": 2,
"no-debugger": 2,
"no-dupe-args": 2,
"no-dupe-keys": 2,
"no-duplicate-case": 2,
"no-empty-character-class": 2,
"no-empty": 2,
"no-ex-assign": 2,
"no-extra-boolean-cast": 2,
"no-extra-parens": 2,
"no-extra-semi": 2,
"no-func-assign": 2,
"no-inner-declarations": 2,
"no-invalid-regexp": 2,
"no-negated-in-lhs": 2,
"no-regex-spaces": 2,
"no-sparse-arrays": 2,
"no-unexpected-multiline": 2,
"no-unreachable": 2,
"valid-typeof": 2,
"accessor-pairs": 2,
"block-scoped-var": 2,
"complexity": 2,
"curly": 2,
"dot-notation": [2, {"allowKeywords": false}],
"eqeqeq": 2,
"guard-for-in": 2,
"semi": 2,
"no-alert": 2,
"no-caller": 2,
"no-case-declarations": 2,
"no-div-regex": 2,
"no-else-return": 2,
"no-empty-label": 2,
"no-empty-pattern": 2,
"no-eq-null": 2,
"no-eval": 2,
"no-extend-native": 2,
"no-extra-bind": 2,
"no-floating-decimal": 2,
"no-implied-eval": 2,
"no-invalid-this": 2,
"no-iterator": 2,
"no-lone-blocks": 2,
"no-loop-func": 2,
"no-multi-spaces": 2,
"no-native-reassign": 2,
"no-new-func": 2,
"no-new-wrappers": 2,
"no-new": 2,
"no-octal-escape": 2,
"no-octal": 2,
"no-proto": 2,
"no-redeclare": 2,
"no-script-url": 2,
"no-self-compare": 2,
"no-sequences": 2,
"no-throw-literal": 2,
"no-unused-expressions": 2,
"no-useless-call": 2,
"no-useless-concat": 2,
"no-void": 2,
"no-with": 2,
"radix": 2,
"wrap-iife": 2,
"yoda": 2
}
}
+5
View File
@@ -0,0 +1,5 @@
# These are supported funding model platforms
open_collective: morgul
issuehunt: morgul
custom: https://www.paypal.me/morgul
+17
View File
@@ -0,0 +1,17 @@
The issues forum is __NOT__ for support requests. It is for bugs and feature requests only.
Please read https://github.com/angular-ui/bootstrap/blob/master/CONTRIBUTING.md and search
existing issues (both open and closed) prior to opening any new issue and ensure you follow the instructions therein.
### Bug description:
### Link to minimally-working plunker that reproduces the issue:
### Steps to reproduce the issue:
### Version of Angular, UIBS, and Bootstrap
Angular:
UIBS:
Bootstrap:
+3 -2
View File
@@ -9,13 +9,14 @@ lib-cov
*.swp
*.swo
.DS_Store
.idea
pids
logs
results
dist
# dist
# test coverage files
coverage/
.coverage/
node_modules
npm-debug.log
+4 -5
View File
@@ -14,18 +14,14 @@ pids
logs
results
# test coverage files
coverage/
.coverage/
node_modules
npm-debug.log
template/**/*.js
.git
docs
misc
src
template
.editorconfig
.gitattributes
.gitignore
@@ -37,3 +33,6 @@ karma.conf.js
ROADMAP.md
dist/assets
dist/index.html
dist/versions-mapping.json
dist/*-SNAPSHOT*
+12 -5
View File
@@ -1,11 +1,18 @@
language: node_js
dist: xenial
node_js:
- "0.12"
- 10
env:
- CXX=g++-4.8
addons:
apt:
sources:
- ubuntu-toolchain-r-test
packages:
- g++-4.8
before_install:
- export DISPLAY=:99.0
- sh -e /etc/init.d/xvfb start
- npm install --quiet -g grunt-cli karma
- npm install --quiet -g karma
script: grunt
script: xvfb-run grunt
sudo: false
+1420 -405
View File
File diff suppressed because it is too large Load Diff
+22
View File
@@ -0,0 +1,22 @@
# Contributor Code of Conduct
As contributors and maintainers of this project, and in the interest of fostering an open and welcoming community, we pledge to respect all people who contribute through reporting issues, posting feature requests, updating documentation, submitting pull requests or patches, and other activities.
We are committed to making participation in this project a harassment-free experience for everyone, regardless of level of experience, gender, gender identity and expression, sexual orientation, disability, personal appearance, body size, race, ethnicity, age, religion, or nationality.
Examples of unacceptable behavior by participants include:
* The use of sexualized language or imagery
* Personal attacks
* Trolling or insulting/derogatory comments
* Public or private harassment
* Publishing other's private information, such as physical or electronic addresses, without explicit permission
* Other unethical or unprofessional conduct.
Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct. By adopting this Code of Conduct, project maintainers commit themselves to fairly and consistently applying these principles to every aspect of managing this project. Project maintainers who do not follow or enforce the Code of Conduct may be permanently removed from the project team.
This code of conduct applies both within project spaces and in public spaces when an individual is representing the project or its community.
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by opening an issue or contacting one or more of the project maintainers.
This Code of Conduct is adapted from the [Contributor Covenant](http://contributor-covenant.org), version 1.2.0, available at [http://contributor-covenant.org/version/1/2/0/](http://contributor-covenant.org/version/1/2/0/)
+2 -2
View File
@@ -2,7 +2,7 @@
Firstly, please go over our FAQ: https://github.com/angular-ui/bootstrap/wiki/FAQ
Please, do not open issues for the general support questions as we want to keep GitHub issues for bug reports and feature requests. You've got much better chances of getting your question answered on [StackOverflow](http://stackoverflow.com/questions/tagged/angular-ui-bootstrap) where maintainers are looking at questions questions tagged with `angular-ui-bootstrap`.
Please, do not open issues for the general support questions as we want to keep GitHub issues for bug reports and feature requests. You've got much better chances of getting your question answered on [StackOverflow](http://stackoverflow.com/questions/tagged/angular-ui-bootstrap) where maintainers are looking at questions tagged with `angular-ui-bootstrap`.
StackOverflow is a much better place to ask questions since:
* there are hundreds of people willing to help on StackOverflow
@@ -42,4 +42,4 @@ We are always looking for the quality contributions and will be happy to accept
* Please assure that you are submitting quality code, specifically make sure that:
* your directive has accompanying tests and all the tests are passing; don't hesitate to contact us (angular-ui@googlegroups.com) if you need any help with unit testing
* your PR doesn't break the build; check the Travis-CI build status after opening a PR and push corrective commits if anything goes wrong
* your commits conform to the conventions established [here](https://github.com/ajoslin/conventional-changelog/blob/master/conventions/angular.md)
* your commits conform to the conventions established [here](https://github.com/stevemao/conventional-changelog-angular/blob/master/convention.md)
+534 -435
View File
@@ -1,460 +1,559 @@
/* jshint node: true */
var markdown = require('node-markdown').Markdown;
var fs = require('fs');
const marked = require('marked');
const fs = require('fs');
const _ = require('lodash');
module.exports = function(grunt) {
require('load-grunt-tasks')(grunt);
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.loadNpmTasks('grunt-contrib-copy');
grunt.loadNpmTasks('grunt-contrib-jshint');
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-html2js');
grunt.loadNpmTasks('grunt-karma');
grunt.loadNpmTasks('grunt-conventional-changelog');
grunt.loadNpmTasks('grunt-ddescribe-iit');
// Project configuration.
grunt.util.linefeed = '\n';
// Project configuration.
grunt.util.linefeed = '\n';
grunt.initConfig({
ngversion: '1.4.3',
bsversion: '3.1.1',
modules: [],//to be filled in by build task
pkg: grunt.file.readJSON('package.json'),
dist: 'dist',
filename: 'ui-bootstrap',
filenamecustom: '<%= filename %>-custom',
meta: {
modules: 'angular.module("ui.bootstrap", [<%= srcModules %>]);',
tplmodules: 'angular.module("ui.bootstrap.tpls", [<%= tplModules %>]);',
all: 'angular.module("ui.bootstrap", ["ui.bootstrap.tpls", <%= srcModules %>]);',
cssInclude: '',
cssFileBanner: '/* Include this file in your html if you are using the CSP mode. */\n\n',
cssFileDest: '<%= dist %>/<%= filename %>-<%= pkg.version %>-csp.css',
banner: ['/*',
' * <%= pkg.name %>',
' * <%= pkg.homepage %>\n',
' * Version: <%= pkg.version %> - <%= grunt.template.today("yyyy-mm-dd") %>',
' * License: <%= pkg.license %>',
' */\n'].join('\n')
},
delta: {
docs: {
files: ['misc/demo/index.html'],
tasks: ['after-test']
},
html: {
files: ['template/**/*.html'],
tasks: ['html2js', 'karma:watch:run']
},
js: {
files: ['src/**/*.js'],
//we don't need to jshint here, it slows down everything else
tasks: ['karma:watch:run']
}
},
concat: {
dist: {
options: {
banner: '<%= meta.banner %><%= meta.modules %>\n',
footer: '<%= meta.cssInclude %>'
grunt.initConfig({
ngversion: '1.6.1',
bsversion: '4.1.1',
modules: [],//to be filled in by build task
pkg: grunt.file.readJSON('package.json'),
dist: 'dist',
filename: 'ui-bootstrap',
filenamecustom: '<%= filename %>-custom',
meta: {
modules: 'angular.module("ui.bootstrap", [<%= srcModules %>]);',
tplmodules: 'angular.module("ui.bootstrap.tpls", [<%= tplModules %>]);',
all: 'angular.module("ui.bootstrap", ["ui.bootstrap.tpls", <%= srcModules %>]);',
cssInclude: '',
cssFileBanner: '/* Include this file in your html if you are using the CSP mode. */\n\n',
cssFileDest: '<%= dist %>/<%= filename %>-<%= pkg.version %>-csp.css',
banner: [
'/*',
' * <%= pkg.name %>',
' * <%= pkg.homepage %>\n',
' * Version: <%= pkg.version %> - <%= grunt.template.today("yyyy-mm-dd") %>',
' * License: <%= pkg.license %>',
' */'
].join('\n')
},
src: [], //src filled in by build task
dest: '<%= dist %>/<%= filename %>-<%= pkg.version %>.js'
},
dist_tpls: {
options: {
banner: '<%= meta.banner %><%= meta.all %>\n<%= meta.tplmodules %>\n',
footer: '<%= meta.cssInclude %>'
delta: {
docs: {
files: ['misc/demo/index.html'],
tasks: ['after-test']
},
html: {
files: ['template/**/*.html'],
tasks: ['html2js', 'karma:watch:run']
},
js: {
files: ['src/**/*.js', '!src/**/index.js'],
tasks: ['karma:watch:run']
}
},
src: [], //src filled in by build task
dest: '<%= dist %>/<%= filename %>-tpls-<%= pkg.version %>.js'
}
},
copy: {
demohtml: {
options: {
//process html files with gruntfile config
processContent: grunt.template.process
concat: {
dist: {
options: {
banner: '<%= meta.banner %><%= meta.modules %>\n',
footer: '<%= meta.cssInclude %>'
},
src: [], //src filled in by build task
dest: '<%= dist %>/<%= filename %>-<%= pkg.version %>.js'
},
dist_tpls: {
options: {
banner: '<%= meta.banner %><%= meta.all %>\n<%= meta.tplmodules %>\n',
footer: '<%= meta.cssInclude %>'
},
src: [], //src filled in by build task
dest: '<%= dist %>/<%= filename %>-tpls-<%= pkg.version %>.js'
}
},
files: [{
expand: true,
src: ['**/*.html'],
cwd: 'misc/demo/',
dest: 'dist/'
}]
},
demoassets: {
files: [{
expand: true,
//Don't re-copy html files, we process those
src: ['**/**/*', '!**/*.html'],
cwd: 'misc/demo',
dest: 'dist/'
}]
}
},
uglify: {
options: {
banner: '<%= meta.banner %>'
},
dist:{
src:['<%= concat.dist.dest %>'],
dest:'<%= dist %>/<%= filename %>-<%= pkg.version %>.min.js'
},
dist_tpls:{
src:['<%= concat.dist_tpls.dest %>'],
dest:'<%= dist %>/<%= filename %>-tpls-<%= pkg.version %>.min.js'
}
},
html2js: {
dist: {
options: {
module: null, // no bundle module for all the html2js templates
base: '.'
copy: {
demohtml: {
options: {
//process html files with gruntfile config
processContent: grunt.template.process
},
files: [
{
expand: true,
src: ['**/*.html'],
cwd: 'misc/demo/',
dest: 'dist/'
}
]
},
demoassets: {
files: [
{
expand: true,
//Don't re-copy html files, we process those
src: ['**/**/*', '!**/*.html'],
cwd: 'misc/demo',
dest: 'dist/'
}
]
},
docs: {
files: [
{
expand: true,
src: ['**/*', '*/*'],
cwd: 'dist/',
dest: 'docs/'
}
]
}
},
files: [{
expand: true,
src: ['template/**/*.html'],
ext: '.html.js'
}]
}
},
jshint: {
files: ['Gruntfile.js','src/**/*.js'],
options: {
jshintrc: '.jshintrc'
}
},
karma: {
options: {
configFile: 'karma.conf.js'
},
watch: {
background: true
},
continuous: {
singleRun: true
},
jenkins: {
singleRun: true,
autoWatch: false,
colors: false,
reporters: ['dots', 'junit'],
browsers: ['Chrome', 'ChromeCanary', 'Firefox', 'Opera', '/Users/jenkins/bin/safari.sh']
},
travis: {
singleRun: true,
autoWatch: false,
reporters: ['dots'],
browsers: ['Firefox']
},
coverage: {
preprocessors: {
'src/*/*.js': 'coverage'
uglify: {
options: {
banner: '<%= meta.banner %>'
},
dist: {
src: ['<%= concat.dist.dest %>'],
dest: '<%= dist %>/<%= filename %>-<%= pkg.version %>.min.js'
},
dist_tpls: {
src: ['<%= concat.dist_tpls.dest %>'],
dest: '<%= dist %>/<%= filename %>-tpls-<%= pkg.version %>.min.js'
}
},
reporters: ['progress', 'coverage']
}
},
conventionalChangelog: {
options: {
dest: 'CHANGELOG.md',
templateFile: 'misc/changelog.tpl.md'
}
},
shell: {
//We use %version% and evluate it at run-time, because <%= pkg.version %>
//is only evaluated once
'release-prepare': [
'grunt before-test after-test',
'grunt version', //remove "-SNAPSHOT"
'grunt conventionalChangelog'
],
'release-complete': [
'git commit CHANGELOG.md package.json -m "chore(release): v%version%"',
'git tag %version%'
],
'release-start': [
'grunt version:minor:"SNAPSHOT"',
'git commit package.json -m "chore(release): Starting v%version%"'
]
},
'ddescribe-iit': {
files: [
'src/**/*.spec.js'
]
}
});
//register before and after test tasks so we've don't have to change cli
//options on the google's CI server
grunt.registerTask('before-test', ['enforce', 'ddescribe-iit', 'jshint', 'html2js']);
grunt.registerTask('after-test', ['build', 'copy']);
//Rename our watch task to 'delta', then make actual 'watch'
//task build things, then start test server
grunt.renameTask('watch', 'delta');
grunt.registerTask('watch', ['before-test', 'after-test', 'karma:watch', 'delta']);
// Default task.
grunt.registerTask('default', ['before-test', 'test', 'after-test']);
grunt.registerTask('enforce', 'Install commit message enforce script if it doesn\'t exist', function() {
if (!grunt.file.exists('.git/hooks/commit-msg')) {
grunt.file.copy('misc/validate-commit-msg.js', '.git/hooks/commit-msg');
require('fs').chmodSync('.git/hooks/commit-msg', '0755');
}
});
//Common ui.bootstrap module containing all modules for src and templates
//findModule: Adds a given module to config
var foundModules = {};
function findModule(name) {
if (foundModules[name]) { return; }
foundModules[name] = true;
function breakup(text, separator) {
return text.replace(/[A-Z]/g, function (match) {
return separator + match;
});
}
function ucwords(text) {
return text.replace(/^([a-z])|\s+([a-z])/g, function ($1) {
return $1.toUpperCase();
});
}
function enquote(str) {
return '"' + str + '"';
}
var module = {
name: name,
moduleName: enquote('ui.bootstrap.' + name),
displayName: ucwords(breakup(name, ' ')),
srcFiles: grunt.file.expand('src/'+name+'/*.js'),
cssFiles: grunt.file.expand('src/'+name+'/*.css'),
tplFiles: grunt.file.expand('template/'+name+'/*.html'),
tpljsFiles: grunt.file.expand('template/'+name+'/*.html.js'),
tplModules: grunt.file.expand('template/'+name+'/*.html').map(enquote),
dependencies: dependenciesForModule(name),
docs: {
md: grunt.file.expand('src/'+name+'/docs/*.md')
.map(grunt.file.read).map(markdown).join('\n'),
js: grunt.file.expand('src/'+name+'/docs/*.js')
.map(grunt.file.read).join('\n'),
html: grunt.file.expand('src/'+name+'/docs/*.html')
.map(grunt.file.read).join('\n')
}
};
var styles = {
css: [],
js: []
};
module.cssFiles.forEach(processCSS.bind(null, styles, true));
if (styles.css.length) {
module.css = styles.css.join('\n');
module.cssJs = styles.js.join('\n');
}
module.dependencies.forEach(findModule);
grunt.config('modules', grunt.config('modules').concat(module));
}
function dependenciesForModule(name) {
var deps = [];
grunt.file.expand('src/' + name + '/*.js')
.map(grunt.file.read)
.forEach(function(contents) {
//Strategy: find where module is declared,
//and from there get everything inside the [] and split them by comma
var moduleDeclIndex = contents.indexOf('angular.module(');
var depArrayStart = contents.indexOf('[', moduleDeclIndex);
var depArrayEnd = contents.indexOf(']', depArrayStart);
var dependencies = contents.substring(depArrayStart + 1, depArrayEnd);
dependencies.split(',').forEach(function(dep) {
if (dep.indexOf('ui.bootstrap.') > -1) {
var depName = dep.trim().replace('ui.bootstrap.','').replace(/['"]/g,'');
if (deps.indexOf(depName) < 0) {
deps.push(depName);
//Get dependencies for this new dependency
deps = deps.concat(dependenciesForModule(depName));
}
html2js: {
dist: {
options: {
module: null, // no bundle module for all the html2js templates
base: '.',
rename: function(moduleName) {
return `uib/${moduleName}`;
}
},
files: [
{
expand: true,
src: ['template/**/*.html'],
ext: '.html.js'
}
]
}
},
eslint: {
files: ['Gruntfile.js', 'src/**/*.js']
},
karma: {
options: {
configFile: 'karma.conf.js'
},
watch: {
background: true
},
continuous: {
singleRun: true
},
jenkins: {
singleRun: true,
autoWatch: false,
colors: false,
reporters: ['dots', 'junit'],
browsers: ['Chrome', 'ChromeCanary', 'Firefox', 'Opera', '/Users/jenkins/bin/safari.sh']
},
travis: {
singleRun: true,
autoWatch: false,
reporters: ['dots'],
browsers: ['Firefox']
},
coverage: {
preprocessors: {
'src/*/*.js': 'coverage'
},
reporters: ['progress', 'coverage']
}
},
conventionalChangelog: {
options: {
changelogOpts: {
preset: 'angular'
},
templateFile: 'misc/changelog.tpl.md'
},
release: {
src: 'CHANGELOG.md'
}
},
shell: {
//We use %version% and evaluate it at run-time, because <%= pkg.version %>
//is only evaluated once
'release-prepare': [
'git add docs'
],
'release-complete': [
'git commit -a -m "chore(release): v%version%"',
'git tag v%version%',
'git push --follow-tags'
],
'publish': [
'rm -rf dist/*',
'cp ./docs/ui-bootstrap-%version%.js ./dist/ui-bootstrap.js',
'cp ./docs/ui-bootstrap-%version%-csp.css ./dist/ui-bootstrap-csp.css',
'cp ./docs/ui-bootstrap-tpls-%version%.js ./dist/ui-bootstrap-tpls.js',
'npm publish'
]
},
'ddescribe-iit': {
files: [
'src/**/*.spec.js'
]
}
});
});
return deps;
}
grunt.registerTask('dist', 'Override dist directory', function() {
var dir = this.args[0];
if (dir) { grunt.config('dist', dir); }
});
grunt.registerTask('build', 'Create bootstrap build files', function() {
var _ = grunt.util._;
//If arguments define what modules to build, build those. Else, everything
if (this.args.length) {
this.args.forEach(findModule);
grunt.config('filename', grunt.config('filenamecustom'));
} else {
grunt.file.expand({
filter: 'isDirectory', cwd: '.'
}, 'src/*').forEach(function(dir) {
findModule(dir.split('/')[1]);
});
}
var modules = grunt.config('modules');
grunt.config('srcModules', _.pluck(modules, 'moduleName'));
grunt.config('tplModules', _.pluck(modules, 'tplModules').filter(function(tpls) { return tpls.length > 0;} ));
grunt.config('demoModules', modules
.filter(function(module) {
return module.docs.md && module.docs.js && module.docs.html;
})
.sort(function(a, b) {
if (a.name < b.name) { return -1; }
if (a.name > b.name) { return 1; }
return 0;
})
);
var cssStrings = _.flatten(_.compact(_.pluck(modules, 'css')));
var cssJsStrings = _.flatten(_.compact(_.pluck(modules, 'cssJs')));
if (cssStrings.length) {
grunt.config('meta.cssInclude', cssJsStrings.join('\n'));
grunt.file.write(grunt.config('meta.cssFileDest'), grunt.config('meta.cssFileBanner') +
cssStrings.join('\n'));
grunt.log.writeln('File ' + grunt.config('meta.cssFileDest') + ' created');
}
var moduleFileMapping = _.clone(modules, true);
moduleFileMapping.forEach(function (module) {
delete module.docs;
});
grunt.config('moduleFileMapping', moduleFileMapping);
//register before and after test tasks so we've don't have to change cli
//options on the google's CI server
grunt.registerTask('before-test', [/*'ddescribe-iit',*/ 'eslint', 'html2js']);
grunt.registerTask('after-test', ['build', 'copy']);
var srcFiles = _.pluck(modules, 'srcFiles');
var tpljsFiles = _.pluck(modules, 'tpljsFiles');
//Set the concat task to concatenate the given src modules
grunt.config('concat.dist.src', grunt.config('concat.dist.src')
.concat(srcFiles));
//Set the concat-with-templates task to concat the given src & tpl modules
grunt.config('concat.dist_tpls.src', grunt.config('concat.dist_tpls.src')
.concat(srcFiles).concat(tpljsFiles));
//Rename our watch task to 'delta', then make actual 'watch'
//task build things, then start test server
grunt.renameTask('watch', 'delta');
grunt.registerTask('watch', ['before-test', 'after-test', 'karma:watch', 'delta']);
grunt.task.run(['concat', 'uglify', 'makeModuleMappingFile', 'makeRawFilesJs']);
});
// Default task.
grunt.registerTask('default', ['before-test', 'test', 'after-test']);
grunt.registerTask('test', 'Run tests on singleRun karma server', function () {
//this task can be executed in 3 different environments: local, Travis-CI and Jenkins-CI
//we need to take settings for each one into account
if (process.env.TRAVIS) {
grunt.task.run('karma:travis');
} else {
var isToRunJenkinsTask = !!this.args.length;
if(grunt.option('coverage')) {
var karmaOptions = grunt.config.get('karma.options'),
coverageOpts = grunt.config.get('karma.coverage');
grunt.util._.extend(karmaOptions, coverageOpts);
grunt.config.set('karma.options', karmaOptions);
}
grunt.task.run(this.args.length ? 'karma:jenkins' : 'karma:continuous');
// Build docs
grunt.registerTask('docs', ['before-test', 'after-test', 'copy:docs']);
//Common ui.bootstrap module containing all modules for src and templates
//findModule: Adds a given module to config
const foundModules = {};
function findModule(name)
{
if(foundModules[name])
{ return; }
foundModules[name] = true;
function breakup(text, separator)
{
return text.replace(/[A-Z]/g, function(match) {
return separator + match;
});
}
function ucwords(text)
{
return text.replace(/^([a-z])|\s+([a-z])/g, function($1) {
return $1.toUpperCase();
});
}
function enquote(str)
{
return `"${str}"`;
}
function enquoteUibDir(str)
{
return enquote(`uib/${str}`);
}
const module = {
name: name,
moduleName: enquote(`ui.bootstrap.${name}`),
displayName: ucwords(breakup(name, ' ')),
srcFiles: grunt.file.expand([`src/${name}/*.js`, `!src/${name}/index.js`, `!src/${name}/index-nocss.js`]),
cssFiles: grunt.file.expand(`src/${name}/*.css`),
tplFiles: grunt.file.expand(`template/${name}/*.html`),
tpljsFiles: grunt.file.expand(`template/${name}/*.html.js`),
tplModules: grunt.file.expand(`template/${name}/*.html`).map(enquoteUibDir),
dependencies: dependenciesForModule(name),
docs: {
md: grunt.file.expand(`src/${name}/docs/*.md`)
.map(grunt.file.read).map((str) => marked(str)).join('\n'),
js: grunt.file.expand(`src/${name}/docs/*.js`)
.map(grunt.file.read).join('\n'),
html: grunt.file.expand(`src/${name}/docs/*.html`)
.map(grunt.file.read).join('\n')
}
};
const styles = {
css: [],
js: []
};
module.cssFiles.forEach(processCSS.bind(null, module.name, styles, true));
if(styles.css.length)
{
module.css = styles.css.join('\n');
module.cssJs = styles.js.join('\n');
}
module.dependencies.forEach(findModule);
grunt.config('modules', grunt.config('modules').concat(module));
}
});
grunt.registerTask('makeModuleMappingFile', function () {
var _ = grunt.util._;
var moduleMappingJs = 'dist/assets/module-mapping.json';
var moduleMappings = grunt.config('moduleFileMapping');
var moduleMappingsMap = _.object(_.pluck(moduleMappings, 'name'), moduleMappings);
var jsContent = JSON.stringify(moduleMappingsMap);
grunt.file.write(moduleMappingJs, jsContent);
grunt.log.writeln('File ' + moduleMappingJs.cyan + ' created.');
});
grunt.registerTask('makeRawFilesJs', function () {
var _ = grunt.util._;
var jsFilename = 'dist/assets/raw-files.json';
var genRawFilesJs = require('./misc/raw-files-generator');
genRawFilesJs(grunt, jsFilename, _.flatten(grunt.config('concat.dist_tpls.src')),
grunt.config('meta.banner'), grunt.config('meta.cssFileBanner'));
});
/**
* Logic from AngularJS
* https://github.com/angular/angular.js/blob/36831eccd1da37c089f2141a2c073a6db69f3e1d/lib/grunt/utils.js#L121-L145
*/
function processCSS(state, minify, file) {
/* jshint quotmark: false */
var css = fs.readFileSync(file).toString(),
js;
state.css.push(css);
if(minify){
css = css
.replace(/\r?\n/g, '')
.replace(/\/\*.*?\*\//g, '')
.replace(/:\s+/g, ':')
.replace(/\s*\{\s*/g, '{')
.replace(/\s*\}\s*/g, '}')
.replace(/\s*\,\s*/g, ',')
.replace(/\s*\;\s*/g, ';');
function dependenciesForModule(name)
{
let deps = [];
grunt.file.expand([`src/${name}/*.js`, `!src/${name}/index.js`, `!src/${name}/index-nocss.js`])
.map(grunt.file.read)
.forEach(function(contents) {
//Strategy: find where module is declared,
//and from there get everything inside the [] and split them by comma
const moduleDeclIndex = contents.indexOf('angular.module(');
const depArrayStart = contents.indexOf('[', moduleDeclIndex);
const depArrayEnd = contents.indexOf(']', depArrayStart);
const dependencies = contents.substring(depArrayStart + 1, depArrayEnd);
dependencies.split(',').forEach(function(dep) {
if(dep.indexOf('ui.bootstrap.') > -1)
{
const depName = dep.trim().replace('ui.bootstrap.', '').replace(/['"]/g, '');
if(deps.indexOf(depName) < 0)
{
deps.push(depName);
//Get dependencies for this new dependency
deps = deps.concat(dependenciesForModule(depName));
}
}
});
});
return deps;
}
//escape for js
css = css
.replace(/\\/g, '\\\\')
.replace(/'/g, "\\'")
.replace(/\r?\n/g, '\\n');
js = "!angular.$$csp() && angular.element(document).find('head').prepend('<style type=\"text/css\">" + css + "</style>');";
state.js.push(js);
return state;
}
function setVersion(type, suffix) {
var file = 'package.json';
var VERSION_REGEX = /([\'|\"]version[\'|\"][ ]*:[ ]*[\'|\"])([\d|.]*)(-\w+)*([\'|\"])/;
var contents = grunt.file.read(file);
var version;
contents = contents.replace(VERSION_REGEX, function(match, left, center) {
version = center;
if (type) {
version = require('semver').inc(version, type);
}
//semver.inc strips our suffix if it existed
if (suffix) {
version += '-' + suffix;
}
return left + version + '"';
grunt.registerTask('dist', 'Override dist directory', function() {
const dir = this.args[0];
if(dir)
{ grunt.config('dist', dir); }
});
grunt.log.ok('Version set to ' + version.cyan);
grunt.file.write(file, contents);
return version;
}
grunt.registerTask('version', 'Set version. If no arguments, it just takes off suffix', function() {
setVersion(this.args[0], this.args[1]);
});
grunt.registerTask('build', 'Create bootstrap build files', function() {
const _ = grunt.util._;
grunt.registerMultiTask('shell', 'run shell commands', function() {
var self = this;
var sh = require('shelljs');
self.data.forEach(function(cmd) {
cmd = cmd.replace('%version%', grunt.file.readJSON('package.json').version);
grunt.log.ok(cmd);
var result = sh.exec(cmd,{silent:true});
if (result.code !== 0) {
grunt.fatal(result.output);
}
//If arguments define what modules to build, build those. Else, everything
if(this.args.length)
{
this.args.forEach(findModule);
grunt.config('filename', grunt.config('filenamecustom'));
}
else
{
grunt.file.expand({
filter: 'isDirectory', cwd: '.'
}, 'src/*').forEach((dir) => {
findModule(dir.split('/')[1]);
});
}
const modules = grunt.config('modules');
grunt.config('srcModules', _.pluck(modules, 'moduleName'));
grunt.config('tplModules', _.pluck(modules, 'tplModules').filter((tpls) => tpls.length > 0));
grunt.config('demoModules', modules
.filter((module) => module.docs.md && module.docs.js && module.docs.html)
.sort((a, b) => {
if(a.name < b.name)
{ return -1; }
if(a.name > b.name)
{ return 1; }
return 0;
})
);
const cssStrings = _.flatten(_.compact(_.pluck(modules, 'css')));
const cssJsStrings = _.flatten(_.compact(_.pluck(modules, 'cssJs')));
if(cssStrings.length)
{
grunt.config('meta.cssInclude', cssJsStrings.join('\n'));
grunt.file.write(grunt.config('meta.cssFileDest'), grunt.config('meta.cssFileBanner') +
cssStrings.join('\n'));
grunt.log.writeln('File ' + grunt.config('meta.cssFileDest') + ' created');
}
const moduleFileMapping = _.clone(modules, true);
moduleFileMapping.forEach((module) => delete module.docs);
grunt.config('moduleFileMapping', moduleFileMapping);
const srcFiles = _.pluck(modules, 'srcFiles');
const tpljsFiles = _.pluck(modules, 'tpljsFiles');
//Set the concat task to concatenate the given src modules
grunt.config('concat.dist.src', grunt.config('concat.dist.src')
.concat(srcFiles));
//Set the concat-with-templates task to concat the given src & tpl modules
grunt.config('concat.dist_tpls.src', grunt.config('concat.dist_tpls.src')
.concat(srcFiles).concat(tpljsFiles));
grunt.task.run(['concat', 'uglify', 'makeModuleMappingFile', 'makeRawFilesJs', 'makeVersionsMappingFile']);
});
});
return grunt;
grunt.registerTask('test', 'Run tests on singleRun karma server', function() {
//this task can be executed in 3 different environments: local, Travis-CI and Jenkins-CI
//we need to take settings for each one into account
if(process.env.TRAVIS)
{
grunt.task.run('karma:travis');
}
else
{
const isToRunJenkinsTask = !!this.args.length;
if(grunt.option('coverage'))
{
const karmaOptions = grunt.config.get('karma.options'),
coverageOpts = grunt.config.get('karma.coverage');
grunt.util._.extend(karmaOptions, coverageOpts);
grunt.config.set('karma.options', karmaOptions);
}
grunt.task.run(this.args.length ? 'karma:jenkins' : 'karma:continuous');
}
});
grunt.registerTask('makeModuleMappingFile', function() {
const _ = grunt.util._;
const moduleMappingJs = 'dist/assets/module-mapping.json';
const moduleMappings = grunt.config('moduleFileMapping');
const moduleMappingsMap = _.object(_.pluck(moduleMappings, 'name'), moduleMappings);
const jsContent = JSON.stringify(moduleMappingsMap);
grunt.file.write(moduleMappingJs, jsContent);
grunt.log.writeln('File ' + moduleMappingJs.cyan + ' created.');
});
grunt.registerTask('makeRawFilesJs', function() {
const _ = grunt.util._;
const jsFilename = 'dist/assets/raw-files.json';
const genRawFilesJs = require('./misc/raw-files-generator');
genRawFilesJs(grunt, jsFilename, _.flatten(grunt.config('concat.dist_tpls.src')),
grunt.config('meta.banner'), grunt.config('meta.cssFileBanner')
);
});
grunt.registerTask('makeVersionsMappingFile', function() {
const done = this.async();
const exec = require('child_process').exec;
grunt.log.writeln(`Mapping file skipped till someone wants to fix.`);
return;
// const versionsMappingFile = 'dist/versions-mapping.json';
// exec('git tag --sort -version:refname', function(error, stdout, stderr) {
// // Let's remove the oldest 56 versions.
// const versions = stdout.split('\n').slice(0, -56);
// let jsContent = versions.map(function(version) {
// version = version.replace(/^v/, '');
// return {
// version: version,
// url: `/ui-bootstrap4/versioned-docs/${version}/index.html`
// };
// });
// jsContent = _.sortBy(jsContent, 'version').reverse();
// jsContent.unshift({
// version: 'Current',
// url: '/ui-bootstrap4/index.html'
// });
// grunt.file.write(versionsMappingFile, JSON.stringify(jsContent));
// grunt.log.writeln(`File ${versionsMappingFile.cyan} created.`);
// done();
// });
});
/**
* Logic from AngularJS
* https://github.com/angular/angular.js/blob/36831eccd1da37c089f2141a2c073a6db69f3e1d/lib/grunt/utils.js#L121-L145
*/
function processCSS(moduleName, state, minify, file)
{
let css = fs.readFileSync(file).toString(),
js;
state.css.push(css);
if(minify)
{
css = css
.replace(/\r?\n/g, '')
.replace(/\/\*.*?\*\//g, '')
.replace(/:\s+/g, ':')
.replace(/\s*\{\s*/g, '{')
.replace(/\s*\}\s*/g, '}')
.replace(/\s*\,\s*/g, ',')
.replace(/\s*\;\s*/g, ';');
}
//escape for js
css = css
.replace(/\\/g, '\\\\')
.replace(/'/g, "\\'")
.replace(/\r?\n/g, '\\n');
js = `angular.module('ui.bootstrap.${moduleName}').run(function() {!angular.$$csp().noInlineStyle && !angular.$$uib${_.capitalize(
moduleName)}Css && angular.element(document).find('head').prepend('<style type="text/css">${css}</style>'); angular.$$uib${_.capitalize(
moduleName)}Css = true; });`;
state.js.push(js);
return state;
}
function setVersion(type, suffix)
{
const file = 'package.json';
const VERSION_REGEX = /([\'|\"]version[\'|\"][ ]*:[ ]*[\'|\"])([\d|.]*)(-\w+)*([\'|\"])/;
let contents = grunt.file.read(file);
let version;
contents = contents.replace(VERSION_REGEX, function(match, left, center) {
version = center;
if(type)
{
version = require('semver').inc(version, type);
}
//semver.inc strips our suffix if it existed
if(suffix)
{
version += '-' + suffix;
}
return left + version + '"';
});
grunt.log.ok('Version set to ' + version.cyan);
grunt.file.write(file, contents);
return version;
}
grunt.registerTask('version', 'Set version. If no arguments, it just takes off suffix', function() {
setVersion(this.args[0], this.args[1]);
});
grunt.registerMultiTask('shell', 'run shell commands', function() {
const self = this;
const sh = require('shelljs');
self.data.forEach(function(cmd) {
cmd = cmd.replace('%version%', grunt.file.readJSON('package.json').version);
grunt.log.ok(cmd);
const result = sh.exec(cmd, { silent: true });
if(result.code !== 0)
{
grunt.fatal(result.output);
}
});
});
//------------------------------------------------------------------------------------------------------------------
// New Release System
//------------------------------------------------------------------------------------------------------------------
grunt.registerTask('release', function(version) {
// Step 1, we change package.json
grunt.config.set('pkg.version', version);
grunt.file.write('./package.json', JSON.stringify(grunt.config('pkg'), null, 2));
// Step 2, we queue up additional tasks
grunt.task.run([
'conventionalChangelog',
'html2js',
'build',
'copy',
'shell:release-prepare',
'shell:release-complete',
'shell:publish'
]);
});
//------------------------------------------------------------------------------------------------------------------
return grunt;
};
+1 -1
View File
@@ -1,6 +1,6 @@
The MIT License
Copyright (c) 2012-2015 the AngularUI Team, https://github.com/organizations/angular-ui/teams/291112
Copyright (c) 2012-2017 the AngularUI Team, https://github.com/organizations/angular-ui/teams/291112
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
+143 -44
View File
@@ -1,19 +1,59 @@
### UI Bootstrap - [AngularJS](http://angularjs.org/) directives specific to [Bootstrap](http://getbootstrap.com)
# UI Bootstrap 4
[![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/angular-ui/bootstrap?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
[![Build Status](https://secure.travis-ci.org/angular-ui/bootstrap.svg)](http://travis-ci.org/angular-ui/bootstrap)
[![devDependency Status](https://david-dm.org/angular-ui/bootstrap/dev-status.svg?branch=master)](https://david-dm.org/angular-ui/bootstrap#info=devDependencies)
_[AngularJS](http://angularjs.org/) directives specific to [Bootstrap](http://getbootstrap.com)_
### Quick links
[![Join the chat at https://gitter.im/ui-bootstrap4/Lobby](https://badges.gitter.im/ui-bootstrap4/Lobby.svg)](https://gitter.im/ui-bootstrap4/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
[![Build Status](https://secure.travis-ci.org/morgul/ui-bootstrap4.svg)](http://travis-ci.org/morgul/ui-bootstrap4)
[![devDependency Status](https://david-dm.org/morgul/ui-bootstrap4/dev-status.svg?branch=master)](https://david-dm.org/morgul/ui-bootstrap4#info=devDependencies)
## Fork
This is a fork of the original [ui-bootstrap4][] project. It has been modified to work with Bootstrap 4. The reason this repository exists is because some applications are choosing (or are forced to chose) to stap with Angular 1, but would like to move to Bootstrap 4. (Especially considering the fact that [bootstrap 3 is EoL](https://github.com/twbs/bootstrap/issues/20631).)
This for makes as few changes as possible to the original source code, so that upstream changes can be merged in with minimal issues. Some work has been used from other attempts to do the same thing, such as the fork from [dietergeerts][].
[dietergeerts]: https://github.com/dietergeerts/bootstrap
[ui-bootstrap4]: https://github.com/morgul/ui-bootstrap4
## 🚨 Help Wanted 🚨
_As of this Aug. 2019, my company no longer has any maintained Angular 1.x code, so I have lost the last of my incentive to work on this. Still happy to click buttons and make releases, but I'm pretty much done writing any code for this._
I did this for a work project, and, frankly, we've gotten what we needed out of it. I'd love to see this cleaned up and maybe even maintained... but I just don't have the time myself. I'll accept merge requests, and fight with the build system... but that's basically it. If someone would like to step in, just let me know and I'll add you to the project. Just open an issue, and I'll respond.
### 💵 Incentivising 💵
If you really want your issue fixed and you feel you can't fix it on your own, or your don't want to, I've setup IssueHunt for this project:
* https://issuehunt.io/r/Morgul/ui-bootstrap4
Make an item, and then add some funding, and either myself or someone in the community will likely pick it up. No promises, but it seems worth the experiment.
### Contributing
Wanting to contribute, but not take over the reigns? The things that are really holding this project back are, as I can see it:
* [ ] Undocumented/confusing build system.
* [ ] The whole `SNAPSHOT` thing seems like it adds a lot of complexity, for very little gain.
* [ ] Making a release should be a single `npm` command
* [ ] Getting started with development should be very simple
* [ ] Switch to ES2015
* [ ] The code should be cleaned up, and better formatted
If you can think of more, feel free to make issues.
---
## Quick links
- [Demo](#demo)
- [Installation](#installation)
- [NPM](#install-with-npm)
- [Bower](#install-with-bower)
- [NuGet](#install-with-nuget)
- [Custom](#custom-build)
- [Manual](#manual-download)
- [Webpack / JSPM](#webpack--jspm)
- [Support](#support)
- [FAQ](#faq)
- [Code of Conduct](#code-of-conduct)
- [Supported browsers](#supported-browsers)
- [Need help?](#need-help)
- [Found a bug?](#found-a-bug)
@@ -21,47 +61,49 @@
- [Development, meeting minutes, roadmap and more.](#development-meeting-minutes-roadmap-and-more)
# Demo
## Demo
Do you want to see directives in action? Visit http://angular-ui.github.io/bootstrap/!
Do you want to see directives in action? Visit https://morgul.github.io/ui-bootstrap4/!
# Installation
## Installation
Installation is easy as UI Bootstrap has minimal dependencies - only the AngularJS and Twitter Bootstrap's CSS are required.
Note: Since version 0.13.0, UI Bootstrap depends on [ngAnimate](https://docs.angularjs.org/api/ngAnimate) for transitions and animations, such as the accordion, carousel, etc. Include `ngAnimate` in the module dependencies for your app in order to enable animation.
*Notes:*
* Since version 0.13.0, UI Bootstrap depends on [ngAnimate](https://docs.angularjs.org/api/ngAnimate) for transitions and animations, such as the accordion, carousel, etc. Include `ngAnimate` in the module dependencies for your app in order to enable animation.
* UI Bootstrap depends on [ngTouch](https://docs.angularjs.org/api/ngTouch) for swipe actions. Include `ngTouch` in the module dependencies for your app in order to enable swiping.
Additionally, it is srongly recommended that for UI Bootstrap 0.13.3 and higher you use Angular 1.3.18 or higher due to animation fixes.
### Angular Requirements
* UI Bootstrap 1.0 and higher _requires_ Angular 1.4.x or higher and it has been tested with Angular 1.4.8.
* UI Bootstrap 0.14.3 is the _last_ version that supports Angular 1.3.x.
* UI Bootstrap 0.12.0 is the _last_ version that supports Angular 1.2.x.
### Bootstrap Requirements
* UI Bootstrap 3.0 and higher requires Bootstrap CSS version 4.x or higher and it has been tested with Bootstrap CSS 4.0.0-beta.
* UI Bootstrap 2.x requires Bootstrap CSS version 3.x or higher and it has been tested with Bootstrap CSS 3.3.6.
* UI Bootstrap 0.8 is the _last_ version that supports Bootstrap CSS 2.3.x.
#### Install with NPM
```sh
$ npm install angular-ui-bootstrap
$ npm install ui-bootstrap4
```
#### Install with Yarn
```sh
$ yarn add ui-bootstrap4
```
This will install AngularJS and Bootstrap NPM packages.
#### Install with Bower
```sh
$ bower install angular-bootstrap
```
Note: do not install 'angular-ui-bootstrap'. A separate repository - [bootstrap-bower](https://github.com/angular-ui/bootstrap-bower) - hosts the compiled javascript file and bower.json.
#### Install with NuGet
To install AngularJS UI Bootstrap, run the following command in the Package Manager Console
```sh
PM> Install-Package Angular.UI.Bootstrap
```
#### Custom build
Head over to http://angular-ui.github.io/bootstrap/ and hit the *Custom build* button to create your own custom UI Bootstrap build, just the way you like it.
Head over to https://morgul.github.io/ui-bootstrap4/ and hit the *Custom build* button to create your own custom UI Bootstrap build, just the way you like it.
#### Manual download
After downloading dependencies (or better yet, referencing them from your favorite CDN) you need to download build version of this project. All the files and their purposes are described here:
https://github.com/angular-ui/bootstrap/tree/gh-pages#build-files
https://github.com/morgul/ui-bootstrap4/tree/gh-pages#build-files
Don't worry, if you are not sure which file to take, opt for `ui-bootstrap-tpls-[version].min.js`.
### Adding dependency to your project
@@ -72,21 +114,66 @@ When you are done downloading all the dependencies and project files the only re
angular.module('myModule', ['ui.bootstrap']);
```
If you're a Browserify or Webpack user, you can do:
## Webpack / JSPM
To use this project with webpack, follow the [NPM](#install-with-npm) instructions.
Now, if you want to use only the accordion, you can do:
```js
var uibs = require('angular-ui-bootstrap');
import accordion from 'ui-bootstrap4/src/accordion';
angular.module('myModule', [uibs]);
angular.module('myModule', [accordion]);
```
# Support
You can import all the pieces you need in the same way:
## FAQ
```js
import accordion from 'ui-bootstrap4/src/accordion';
import datepicker from 'ui-bootstrap4/src/datepicker';
https://github.com/angular-ui/bootstrap/wiki/FAQ
angular.module('myModule', [accordion, datepicker]);
```
## Supported browsers
This will load all the dependencies (if any) and also the templates (if any).
Be sure to have a loader able to process `css` files like `css-loader`.
If you would prefer not to load your css through your JavaScript file loader/bundler, you can choose to import the `index-nocss.js` file instead, which is available for the modules:
* carousel
* datepicker
* datepickerPopup
* dropdown
* modal
* popover
* position
* timepicker
* tooltip
* typeahead
The other modules, such as `accordion` in the example below, do not have CSS resources to load, so you should continue to import them as normal:
```js
import accordion from 'ui-bootstrap4/src/accordion';
import typeahead from 'ui-bootstrap4/src/typeahead/index-nocss.js';
angular.module('myModule', [accordion, typeahead]);
```
## Versioning
Pre-2.0.0 does not follow a particular versioning system. 2.0.0 and onwards follows [semantic versioning](http://semver.org/). All release changes can be viewed on our [changelog](CHANGELOG.md).
## Support
### FAQ
https://github.com/morgul/ui-bootstrap4/wiki/FAQ
## Code of Conduct
Take a moment to read our [Code of Conduct](CODE_OF_CONDUCT.md)
### Supported browsers
Directives from this repository are automatically tested with the following browsers:
* Chrome (stable and canary channel)
@@ -97,26 +184,38 @@ Directives from this repository are automatically tested with the following brow
Modern mobile browsers should work without problems.
## Need help?
Need help using UI Bootstrap?
* Live help in the IRC (`#angularjs` channel at the `freenode` network). Use this [webchat](https://webchat.freenode.net/) or your own IRC client.
* Ask a question in [StackOverflow](http://stackoverflow.com/) under the [angular-ui-bootstrap](http://stackoverflow.com/questions/tagged/angular-ui-bootstrap) tag.
* ~~Live help in the IRC (`#angularjs` channel at the `freenode` network). Use this [webchat](https://webchat.freenode.net/) or your own IRC client.~~
* ~~Ask a question in [StackOverflow](http://stackoverflow.com/) under the [ui-bootstrap4](http://stackoverflow.com/questions/tagged/ui-bootstrap4) tag.~~
**Please do not create new issues in this repository to ask questions about using UI Bootstrap**
**For now, please create new issues in this repository to ask questions about using UI Bootstrap 4**
## Found a bug?
Please take a look at [CONTRIBUTING.md](CONTRIBUTING.md#you-think-youve-found-a-bug) and submit your issue [here](https://github.com/angular-ui/bootstrap/issues/new).
Please take a look at [CONTRIBUTING.md](CONTRIBUTING.md#you-think-youve-found-a-bug) and submit your issue [here](https://github.com/morgul/ui-bootstrap4/issues/new).
----
# Contributing to the project
## Contributing to the project
We are always looking for the quality contributions! Please check the [CONTRIBUTING.md](CONTRIBUTING.md) for the contribution guidelines.
# Development, meeting minutes, roadmap and more.
~~## Development, meeting minutes, roadmap and more.~~
Head over to the [Wiki](https://github.com/angular-ui/bootstrap/wiki) for notes on development for UI Bootstrap, meeting minutes from the UI Bootstrap team, roadmap plans, project philosophy and more.
~~Head over to the [Wiki](https://github.com/morgul/ui-bootstrap4/wiki) for notes on development for UI Bootstrap, meeting minutes from the UI Bootstrap team, roadmap plans, project philosophy and more.~~
----
## Building a Release
I've currently hacked out a solution, but the whole thing's very messy. For now, to build a release, just do:
```
$ grunt release:3.0.0
```
(Obviously, replace `3.0.0` with the version you're releasing.) That should build a correct release, and update the
docs, and everything.
+140
View File
@@ -0,0 +1,140 @@
/* Include this file in your html if you are using the CSP mode. */
.ng-animate.item:not(.left):not(.right) {
-webkit-transition: 0s ease-in-out left;
transition: 0s ease-in-out left
}
.fa-svg-icon {
display: inline-block;
vertical-align: middle;
min-width: 1em;
min-height: 1em;
height: 100%;
position: relative;
top: -1px;
}
.fa-svg-icon svg {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
.fa-svg-icon svg g,
.fa-svg-icon svg path {
fill: currentColor;
}
.uib-datepicker .uib-title {
width: 100%;
}
.uib-day button, .uib-month button, .uib-year button {
min-width: 100%;
}
.uib-left, .uib-right {
width: 100%
}
.uib-position-measure {
display: block !important;
visibility: hidden !important;
position: absolute !important;
top: -9999px !important;
left: -9999px !important;
}
.uib-position-scrollbar-measure {
position: absolute !important;
top: -9999px !important;
width: 50px !important;
height: 50px !important;
overflow: scroll !important;
}
.uib-position-body-scrollbar-measure {
overflow: scroll !important;
}
.uib-datepicker-popup.dropdown-menu {
display: block;
float: none;
margin: 0;
}
.uib-button-bar {
padding: 10px;
}
[uib-tooltip-popup].tooltip.top-left > .tooltip-arrow,
[uib-tooltip-popup].tooltip.top-right > .tooltip-arrow,
[uib-tooltip-popup].tooltip.bottom-left > .tooltip-arrow,
[uib-tooltip-popup].tooltip.bottom-right > .tooltip-arrow,
[uib-tooltip-popup].tooltip.left-top > .tooltip-arrow,
[uib-tooltip-popup].tooltip.left-bottom > .tooltip-arrow,
[uib-tooltip-popup].tooltip.right-top > .tooltip-arrow,
[uib-tooltip-popup].tooltip.right-bottom > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.top-left > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.top-right > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.bottom-left > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.bottom-right > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.left-top > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.left-bottom > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.right-top > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.right-bottom > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.top-left > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.top-right > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.bottom-left > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.bottom-right > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.left-top > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.left-bottom > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.right-top > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.right-bottom > .tooltip-arrow,
[uib-popover-popup].popover.top-left > .arrow,
[uib-popover-popup].popover.top-right > .arrow,
[uib-popover-popup].popover.bottom-left > .arrow,
[uib-popover-popup].popover.bottom-right > .arrow,
[uib-popover-popup].popover.left-top > .arrow,
[uib-popover-popup].popover.left-bottom > .arrow,
[uib-popover-popup].popover.right-top > .arrow,
[uib-popover-popup].popover.right-bottom > .arrow,
[uib-popover-html-popup].popover.top-left > .arrow,
[uib-popover-html-popup].popover.top-right > .arrow,
[uib-popover-html-popup].popover.bottom-left > .arrow,
[uib-popover-html-popup].popover.bottom-right > .arrow,
[uib-popover-html-popup].popover.left-top > .arrow,
[uib-popover-html-popup].popover.left-bottom > .arrow,
[uib-popover-html-popup].popover.right-top > .arrow,
[uib-popover-html-popup].popover.right-bottom > .arrow,
[uib-popover-template-popup].popover.top-left > .arrow,
[uib-popover-template-popup].popover.top-right > .arrow,
[uib-popover-template-popup].popover.bottom-left > .arrow,
[uib-popover-template-popup].popover.bottom-right > .arrow,
[uib-popover-template-popup].popover.left-top > .arrow,
[uib-popover-template-popup].popover.left-bottom > .arrow,
[uib-popover-template-popup].popover.right-top > .arrow,
[uib-popover-template-popup].popover.right-bottom > .arrow {
top: auto;
bottom: auto;
left: auto;
right: auto;
margin: 0;
}
[uib-popover-popup].popover,
[uib-popover-html-popup].popover,
[uib-popover-template-popup].popover {
display: block !important;
}
.uib-time input {
/* Bootstrap 4 overrides this otherwise */
width: 50px !important;
}
[uib-typeahead-popup].dropdown-menu {
display: block;
}
+7942
View File
File diff suppressed because it is too large Load Diff
+7497
View File
File diff suppressed because it is too large Load Diff
+1
View File
@@ -0,0 +1 @@
[{"version":"3.0.x (Current)","url":"/ui-bootstrap4/"}, {"version":"3.0.5","url":"/ui-bootstrap4/versioned-docs/3.0.5/index.html"}, {"version":"2.5.0","url":"/ui-bootstrap4/versioned-docs/2.5.0/index.html"}]
+337
View File
@@ -0,0 +1,337 @@
/* global FastClick, smoothScroll */
angular.module('ui.bootstrap.demo', ['ui.bootstrap', 'plunker', 'ngTouch', 'ngAnimate', 'ngSanitize'], function($httpProvider){
if (!!window.FastClick) {
FastClick.attach(document.body);
}
delete $httpProvider.defaults.headers.common['X-Requested-With'];
}).run(['$location', function($location){
//Allows us to navigate to the correct element on initialization
if ($location.path() !== '' && $location.path() !== '/') {
smoothScroll(document.getElementById($location.path().substring(1)), 500, function(el) {
location.replace('#' + el.id);
});
}
}]).factory('buildFilesService', function ($http, $q) {
var moduleMap;
var rawFiles;
return {
getModuleMap: getModuleMap,
getRawFiles: getRawFiles,
get: function () {
return $q.all({
moduleMap: getModuleMap(),
rawFiles: getRawFiles()
});
}
};
function getModuleMap() {
return moduleMap ? $q.when(moduleMap) : $http.get('assets/module-mapping.json')
.then(function (result) {
moduleMap = result.data;
return moduleMap;
});
}
function getRawFiles() {
return rawFiles ? $q.when(rawFiles) : $http.get('assets/raw-files.json')
.then(function (result) {
rawFiles = result.data;
return rawFiles;
});
}
})
.controller('MainCtrl', MainCtrl)
.controller('SelectModulesCtrl', SelectModulesCtrl)
.controller('DownloadCtrl', DownloadCtrl);
function MainCtrl($scope, $http, $document, $uibModal, orderByFilter) {
$scope.isCollapsed = true;
// Grab old version docs
$http.get('/ui-bootstrap4/versions-mapping.json')
.then(function(result) {
$scope.oldDocs = result.data;
})
.catch(function(response)
{
if(response.status === 404)
{
$http.get('/versions-mapping.json')
.then(function(result) {
$scope.oldDocs = result.data;
})
.catch(function(response)
{
console.log('failed to get versions mapping:', response);
});
}
else
{
console.log('failed to get versions mapping:', response);
}
});
$scope.showBuildModal = function() {
var modalInstance = $uibModal.open({
templateUrl: 'buildModal.html',
controller: 'SelectModulesCtrl',
resolve: {
modules: function(buildFilesService) {
return buildFilesService.getModuleMap()
.then(function (moduleMap) {
return Object.keys(moduleMap);
});
}
}
});
};
$scope.showDownloadModal = function() {
var modalInstance = $uibModal.open({
templateUrl: 'downloadModal.html',
controller: 'DownloadCtrl'
});
};
}
function SelectModulesCtrl($scope, $uibModalInstance, modules, buildFilesService) {
$scope.selectedModules = [];
$scope.modules = modules;
$scope.selectedChanged = function(module, selected) {
if (selected) {
$scope.selectedModules.push(module);
} else {
$scope.selectedModules.splice($scope.selectedModules.indexOf(module), 1);
}
};
$scope.downloadBuild = function () {
$uibModalInstance.close($scope.selectedModules);
};
$scope.cancel = function () {
$uibModalInstance.dismiss();
};
$scope.isOldBrowser = function () {
return isOldBrowser;
};
$scope.build = function (selectedModules, version) {
/* global JSZip, saveAs */
var moduleMap, rawFiles;
buildFilesService.get().then(function (buildFiles) {
moduleMap = buildFiles.moduleMap;
rawFiles = buildFiles.rawFiles;
generateBuild();
});
function generateBuild() {
var srcModuleNames = selectedModules
.map(function (module) {
return moduleMap[module];
})
.reduce(function (toBuild, module) {
addIfNotExists(toBuild, module.name);
module.dependencies.forEach(function (depName) {
addIfNotExists(toBuild, depName);
});
return toBuild;
}, []);
var srcModules = srcModuleNames
.map(function (moduleName) {
return moduleMap[moduleName];
});
var srcModuleFullNames = srcModules
.map(function (module) {
return module.moduleName;
});
var srcJsContent = srcModules
.reduce(function (buildFiles, module) {
return buildFiles.concat(module.srcFiles);
}, [])
.map(getFileContent)
.join('\n')
;
var jsFile = createNoTplFile(srcModuleFullNames, srcJsContent);
var tplModuleNames = srcModules
.reduce(function (tplModuleNames, module) {
return tplModuleNames.concat(module.tplModules);
}, []);
var tplJsContent = srcModules
.reduce(function (buildFiles, module) {
return buildFiles.concat(module.tpljsFiles);
}, [])
.map(getFileContent)
.join('\n')
;
var jsTplFile = createWithTplFile(srcModuleFullNames, srcJsContent, tplModuleNames, tplJsContent);
var cssContent = srcModules
.map(function (module) {
return module.css;
})
.filter(function (css) {
return css;
})
.join('\n')
;
var cssJsContent = srcModules
.map(function (module) {
return module.cssJs;
})
.filter(function (cssJs) {
return cssJs;
})
.join('\n')
;
var footer = cssJsContent;
var zip = new JSZip();
zip.file('ui-bootstrap-custom-' + version + '.js', rawFiles.banner + jsFile + footer);
zip.file('ui-bootstrap-custom-' + version + '.min.js', rawFiles.banner + uglify(jsFile + footer));
zip.file('ui-bootstrap-custom-tpls-' + version + '.js', rawFiles.banner + jsTplFile + footer);
zip.file('ui-bootstrap-custom-tpls-' + version + '.min.js', rawFiles.banner + uglify(jsTplFile + footer));
zip.file('ui-bootstrap-custom-tpls-' + version + '.min.js', rawFiles.banner + uglify(jsTplFile + footer));
if (cssContent) {
zip.file('ui-bootstrap-custom-' + version + '-csp.css', rawFiles.cssBanner + cssContent);
}
saveAs(zip.generate({type: 'blob'}), 'ui-bootstrap-custom-build.zip');
}
function createNoTplFile(srcModuleNames, srcJsContent) {
return 'angular.module("ui.bootstrap", [' + srcModuleNames.join(',') + ']);\n' +
srcJsContent;
}
function createWithTplFile(srcModuleNames, srcJsContent, tplModuleNames, tplJsContent) {
var depModuleNames = srcModuleNames.slice();
depModuleNames.unshift('"ui.bootstrap.tpls"');
return 'angular.module("ui.bootstrap", [' + depModuleNames.join(',') + ']);\n' +
'angular.module("ui.bootstrap.tpls", [' + tplModuleNames.join(',') + ']);\n' +
srcJsContent + '\n' + tplJsContent;
}
function addIfNotExists(array, element) {
if (array.indexOf(element) == -1) {
array.push(element);
}
}
function getFileContent(fileName) {
return rawFiles.files[fileName];
}
function uglify(js) {
/* global UglifyJS */
var ast = UglifyJS.parse(js);
ast.figure_out_scope();
var compressor = UglifyJS.Compressor();
var compressedAst = ast.transform(compressor);
compressedAst.figure_out_scope();
compressedAst.compute_char_frequency();
compressedAst.mangle_names();
var stream = UglifyJS.OutputStream();
compressedAst.print(stream);
return stream.toString();
}
};
}
function DownloadCtrl($scope, $uibModalInstance) {
$scope.options = {
minified: true,
tpls: true
};
$scope.download = function (version) {
var options = $scope.options;
var downloadUrl = ['ui-bootstrap-'];
if (options.tpls) {
downloadUrl.push('tpls-');
}
downloadUrl.push(version);
if (options.minified) {
downloadUrl.push('.min');
}
downloadUrl.push('.js');
return downloadUrl.join('');
};
$scope.cancel = function () {
$uibModalInstance.dismiss();
};
}
/*
* The following compatibility check is from:
*
* Bootstrap Customizer (http://getbootstrap.com/customize/)
* Copyright 2011-2014 Twitter, Inc.
*
* Licensed under the Creative Commons Attribution 3.0 Unported License. For
* details, see http://creativecommons.org/licenses/by/3.0/.
*/
var isOldBrowser;
(function () {
var supportsFile = (window.File && window.FileReader && window.FileList && window.Blob);
function failback() {
isOldBrowser = true;
}
/**
* Based on:
* Blob Feature Check v1.1.0
* https://github.com/ssorallen/blob-feature-check/
* License: Public domain (http://unlicense.org)
*/
var url = window.URL;
var svg = new Blob(
['<svg xmlns=\'http://www.w3.org/2000/svg\'></svg>'],
{ type: 'image/svg+xml;charset=utf-8' }
);
var objectUrl = url.createObjectURL(svg);
if (/^blob:/.exec(objectUrl) === null || !supportsFile) {
// `URL.createObjectURL` created a URL that started with something other
// than "blob:", which means it has been polyfilled and is not supported by
// this browser.
failback();
} else {
angular.element('<img/>')
.on('load', function () {
isOldBrowser = false;
})
.on('error', failback)
.attr('src', objectUrl);
}
})();
+317
View File
@@ -0,0 +1,317 @@
body {
opacity: 1;
-webkit-transition: opacity 1s ease;
-moz-transition: opacity 1s ease;
transition: opacity 1s;
}
.ng-cloak {
opacity: 0;
}
.ng-invalid {
border: 1px solid red !important;
}
section {
padding-top: 30px;
}
.page-header h1 > small > a {
color: #999;
}
.page-header h1 > small > a:hover {
text-decoration: none;
}
.footer {
text-align: center;
padding: 30px 0;
margin-top: 70px;
border-top: 1px solid #e5e5e5;
background-color: #f5f5f5;
}
.bs-social {
margin-top: 20px;
margin-bottom: 20px;
text-align: center;
}
@media (min-width: 768px) {
.bs-social {
text-align: left;
}
}
.nav, .pagination, .carousel, .panel-title a {
cursor: pointer;
}
.bs-social-buttons {
display: inline-block;
margin-bottom: 0;
padding-left: 0;
list-style: none;
}
.bs-social-buttons li {
display: inline-block;
padding: 5px 8px;
line-height: 1;
}
@media (max-width: 767px) {
.visible-xs.collapse.in {
display: block!important;
}
.visible-xs.collapse {
display: none!important;
}
}
.navbar-fixed-top .collapse {
border-top: 1px solid #e7e7e7;
margin-left: -15px;
margin-right: -15px;
padding-right: 15px;
padding-left: 15px;
}
.show-grid {
margin-bottom: 15px;
}
/*
* Container
*
* Tweak to width of container.
*/
/*@media (min-width: 1200px) {
.container{
max-width: 970px;
}
}*/
/*
* Tabs
*
* Tweaks to the Tabs.
*/
.code .nav-tabs {
border-bottom: 1px solid #ccc;
}
.code pre, .code code {
border-top: none;
border-top-left-radius: 0;
border-top-right-radius: 0;
}
.code .nav-tabs>li.active>a, .code .nav-tabs>li.active>a:hover, .code .nav-tabs>li.active>a:focus {
background-color: #f8f8f8;
border: 1px solid #ccc;
border-bottom-color: transparent;
}
/*
* Button Inverse
*
* Buttons in the masthead.
*/
.btn-outline-inverse {
color: #fff;
background-color: transparent;
border-color: #cdbfe3;
margin: 10px;
}
@media (min-width: 768px) {
.btn-outline-inverse {
width: auto;
margin: 20px 5px 20px 0;
padding: 18px 24px;
font-size: 21px;
}
}
.btn-outline-inverse:hover, .btn-outline-inverse:focus, .btn-outline-inverse:active {
color: #563d7c;
text-shadow: none;
background-color: #fff;
border-color: #fff;
}
/* Page headers */
.bs-header {
padding: 30px 15px 40px; /* side padding builds on .container 15px, so 30px */
font-size: 16px;
text-align: center;
text-shadow: 0 1px 0 rgba(0,0,0,.15);
color: #cdbfe3;
background-color: #563d7c;
background-image: url(header.png);
}
.bs-header a {
color: #fff;
font-weight: normal;
}
.bs-header h1 {
color: #fff;
}
.bs-header p {
font-weight: 200;
line-height: 1.4;
}
.bs-header .container {
position: relative;
}
@media (min-width: 768px) {
.bs-header {
font-size: 30px;
text-align: left;
}
.bs-header h1 {
font-size: 100px;
line-height: 1;
}
}
.navbar-inner {
-webkit-box-shadow: 0 3px 3px rgba(0,0,0,0.175);
box-shadow: 0 3px 3px rgba(0,0,0,0.175);
}
/*
* Side navigation
*
* Scrollspy and affixed enhanced navigation to highlight sections and secondary
* sections of docs content.
*/
/* By default it's not affixed in mobile views, so undo that */
.bs-sidebar.affix {
position: static;
}
/* First level of nav */
.bs-sidenav {
margin-top: 30px;
margin-bottom: 30px;
padding-top: 10px;
padding-bottom: 10px;
text-shadow: 0 1px 0 #fff;
background-color: #f7f5fa;
border-radius: 5px;
}
/* All levels of nav */
.bs-sidebar .nav > li > a {
display: block;
color: #716b7a;
padding: 5px 20px;
}
.bs-sidebar .nav > li > a:hover,
.bs-sidebar .nav > li > a:focus {
text-decoration: none;
background-color: #e5e3e9;
border-right: 1px solid #dbd8e0;
}
.bs-sidebar .nav > .active > a,
.bs-sidebar .nav > .active:hover > a,
.bs-sidebar .nav > .active:focus > a {
font-weight: bold;
color: #563d7c;
background-color: transparent;
border-right: 1px solid #563d7c;
}
/* Nav: second level (shown on .active) */
.bs-sidebar .nav .nav {
display: none; /* Hide by default, but at >768px, show it */
margin-bottom: 8px;
}
.bs-sidebar .nav .nav > li > a {
padding-top: 3px;
padding-bottom: 3px;
padding-left: 30px;
font-size: 90%;
}
/* Show and affix the side nav when space allows it */
@media (min-width: 992px) {
.bs-sidebar .nav > .active > ul {
display: block;
}
/* Widen the fixed sidebar */
.bs-sidebar.affix,
.bs-sidebar.affix-bottom {
width: 213px;
}
.bs-sidebar.affix {
position: fixed; /* Undo the static from mobile first approach */
top: 80px;
}
.bs-sidebar.affix-bottom {
position: absolute; /* Undo the static from mobile first approach */
}
.bs-sidebar.affix-bottom .bs-sidenav,
.bs-sidebar.affix .bs-sidenav {
margin-top: 0;
margin-bottom: 0;
}
}
@media (min-width: 1200px) {
/* Widen the fixed sidebar again */
.bs-sidebar.affix-bottom,
.bs-sidebar.affix {
width: 263px;
}
}
/* Not enough room on mobile for markup tab, js tab, and plunk btn.
And no one cares about plunk button on a phone anyway */
@media only screen and (max-device-width: 480px) {
#plunk-btn {
display: none;
}
}
.navbar-nav .dropdown .navbar-brand {
max-width: 100%;
margin-right: inherit;
margin-left: inherit;
}
.header-placeholder {
height: 50px;
}
@media screen and (min-width: 768px) {
.dropdown.open > .navbar-brand + .dropdown-menu {
left: 10px;
}
.header-placeholder {
height: 50px;
}
.navbar-nav .dropdown .navbar-brand {
max-width: 200px;
margin-right: 5px;
margin-left: 10px;
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 398 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

File diff suppressed because one or more lines are too long
+60
View File
@@ -0,0 +1,60 @@
angular.module('plunker', [])
.factory('plunkGenerator', function ($document) {
return function (ngVersion, bsVersion, version, module, content) {
var form = angular.element('<form style="display: none;" method="post" action="https://plnkr.co/edit/?p=preview" target="_blank"></form>');
var addField = function (name, value) {
var input = angular.element('<input type="hidden" name="' + name + '">');
input.attr('value', value);
form.append(input);
};
var indexContent = function (content, version) {
return '<!doctype html>\n' +
'<html ng-app="ui.bootstrap.demo">\n' +
' <head>\n' +
' <script src="//ajax.googleapis.com/ajax/libs/angularjs/'+ngVersion+'/angular.js"></script>\n' +
' <script src="//ajax.googleapis.com/ajax/libs/angularjs/'+ngVersion+'/angular-animate.js"></script>\n' +
' <script src="//ajax.googleapis.com/ajax/libs/angularjs/'+ngVersion+'/angular-sanitize.js"></script>\n' +
' <script src="//morgul.github.io/ui-bootstrap4/ui-bootstrap-tpls-'+version+'.js"></script>\n' +
' <script src="example.js"></script>\n' +
' <link href="//netdna.bootstrapcdn.com/bootstrap/'+bsVersion+'/css/bootstrap.min.css" rel="stylesheet">\n' +
' </head>\n' +
' <body>\n\n' +
content + '\n' +
' </body>\n' +
'</html>\n';
};
var scriptContent = function(content) {
return "angular.module('ui.bootstrap.demo', ['ngAnimate', 'ngSanitize', 'ui.bootstrap']);" + "\n" + content;
};
addField('description', 'http://angular-ui.github.io/bootstrap/');
addField('files[index.html]', indexContent(content.markup, version));
addField('files[example.js]', scriptContent(content.javascript));
$document.find('body').append(form);
form[0].submit();
form.remove();
};
})
.controller('PlunkerCtrl', function ($scope, plunkGenerator) {
$scope.content = {};
$scope.edit = function (ngVersion, bsVersion, version, module) {
plunkGenerator(ngVersion, bsVersion, version, module, $scope.content);
};
})
.directive('plunkerContent', function () {
return {
link:function (scope, element, attrs) {
scope.content[attrs.plunkerContent] = element.text().trim();
}
}
});
+59
View File
@@ -0,0 +1,59 @@
/**
* Generic language patterns
*
* @author Craig Campbell
* @version 1.0.9
*/
Rainbow.extend([
{
'matches': {
1: {
'name': 'keyword.operator',
'pattern': /\=/g
},
2: {
'name': 'string',
'matches': {
'name': 'constant.character.escape',
'pattern': /\\('|"){1}/g
}
}
},
'pattern': /(\(|\s|\[|\=|:)(('|")([^\\\1]|\\.)*?(\3))/gm
},
{
'name': 'comment',
'pattern': /\/\*[\s\S]*?\*\/|(\/\/|\#)[\s\S]*?$/gm
},
{
'name': 'constant.numeric',
'pattern': /\b(\d+(\.\d+)?(e(\+|\-)?\d+)?(f|d)?|0x[\da-f]+)\b/gi
},
{
'matches': {
1: 'keyword'
},
'pattern': /\b(and|array|as|bool(ean)?|c(atch|har|lass|onst)|d(ef|elete|o(uble)?)|e(cho|lse(if)?|xit|xtends|xcept)|f(inally|loat|or(each)?|unction)|global|if|import|int(eger)?|long|new|object|or|pr(int|ivate|otected)|public|return|self|st(ring|ruct|atic)|switch|th(en|is|row)|try|(un)?signed|var|void|while)(?=\(|\b)/gi
},
{
'name': 'constant.language',
'pattern': /true|false|null/g
},
{
'name': 'keyword.operator',
'pattern': /\+|\!|\-|&(gt|lt|amp);|\||\*|\=/g
},
{
'matches': {
1: 'function.call'
},
'pattern': /(\w+?)(?=\()/g
},
{
'matches': {
1: 'storage.function',
2: 'entity.name.function'
},
'pattern': /(function)\s(.*?)(?=\()/g
}
]);
+83
View File
@@ -0,0 +1,83 @@
/**
* HTML patterns
*
* @author Craig Campbell
* @version 1.0.7
*/
Rainbow.extend('html', [
{
'name': 'source.php.embedded',
'matches': {
2: {
'language': 'php'
}
},
'pattern': /&lt;\?=?(?!xml)(php)?([\s\S]*?)(\?&gt;)/gm
},
{
'name': 'source.css.embedded',
'matches': {
0: {
'language': 'css'
}
},
'pattern': /&lt;style(.*?)&gt;([\s\S]*?)&lt;\/style&gt;/gm
},
{
'name': 'source.js.embedded',
'matches': {
0: {
'language': 'javascript'
}
},
'pattern': /&lt;script(?! src)(.*?)&gt;([\s\S]*?)&lt;\/script&gt;/gm
},
{
'name': 'comment.html',
'pattern': /&lt;\!--[\S\s]*?--&gt;/g
},
{
'matches': {
1: 'support.tag.open',
2: 'support.tag.cclose'
},
'pattern': /(&lt;)|(\/?\??&gt;)/g
},
{
'name': 'support.tag',
'matches': {
1: 'support.tag',
2: 'support.tag.special',
3: 'support.tag-name'
},
'pattern': /(&lt;\??)(\/|\!?)(\w+)/g
},
{
'matches': {
1: 'support.attribute'
},
'pattern': /([a-z-]+)(?=\=)/gi
},
{
'matches': {
1: 'support.operator',
2: 'string.quote',
3: 'string.value',
4: 'string.quote'
},
'pattern': /(=)('|")(.*?)(\2)/g
},
{
'matches': {
1: 'support.operator',
2: 'support.value'
},
'pattern': /(=)([a-zA-Z\-0-9]*)\b/g
},
{
'matches': {
1: 'support.attribute'
},
'pattern': /\s(\w+)(?=\s|&gt;)(?![\s\S]*&lt;)/g
}
], true);
+110
View File
@@ -0,0 +1,110 @@
/**
* Javascript patterns
*
* @author Craig Campbell
* @version 1.0.7
*/
Rainbow.extend('javascript', [
/**
* matches $. or $(
*/
{
'name': 'selector',
'pattern': /(\s|^)\$(?=\.|\()/g
},
{
'name': 'support',
'pattern': /\b(window|document)\b/g
},
{
'matches': {
1: 'support.property'
},
'pattern': /\.(length|node(Name|Value))\b/g
},
{
'matches': {
1: 'support.function'
},
'pattern': /(setTimeout|setInterval)(?=\()/g
},
{
'matches': {
1: 'support.method'
},
'pattern': /\.(getAttribute|push|getElementById|getElementsByClassName|log|setTimeout|setInterval)(?=\()/g
},
{
'matches': {
1: 'support.tag.script',
2: [
{
'name': 'string',
'pattern': /('|")(.*?)(\1)/g
},
{
'name': 'entity.tag.script',
'pattern': /(\w+)/g
}
],
3: 'support.tag.script'
},
'pattern': /(&lt;\/?)(script.*?)(&gt;)/g
},
/**
* matches any escaped characters inside of a js regex pattern
*
* @see https://github.com/ccampbell/rainbow/issues/22
*
* this was causing single line comments to fail so it now makes sure
* the opening / is not directly followed by a *
*
* @todo check that there is valid regex in match group 1
*/
{
'name': 'string.regexp',
'matches': {
1: 'string.regexp.open',
2: {
'name': 'constant.regexp.escape',
'pattern': /\\(.){1}/g
},
3: 'string.regexp.cclose',
4: 'string.regexp.modifier'
},
'pattern': /(\/)(?!\*)(.+)(\/)([igm]{0,3})/g
},
/**
* matches runtime function declarations
*/
{
'matches': {
1: 'storage',
3: 'entity.function'
},
'pattern': /(var)?(\s|^)(.*)(?=\s?=\s?function\()/g
},
/**
* matches constructor call
*/
{
'matches': {
1: 'keyword',
2: 'entity.function'
},
'pattern': /(new)\s+(.*)(?=\()/g
},
/**
* matches any function call in the style functionName: function()
*/
{
'name': 'entity.function',
'pattern': /(\w+)(?=:\s{0,}function)/g
}
]);
+88
View File
@@ -0,0 +1,88 @@
/**
* GitHub theme
*
* @author Craig Campbell
* @version 1.0.4
*/
pre {
border: 1px solid #ccc;
word-wrap: break-word;
padding: 6px 10px;
line-height: 19px;
margin-bottom: 20px;
}
code {
border: 1px solid #eaeaea;
margin: 0 2px;
padding: 0 5px;
font-size: 12px;
}
pre code {
border: 0;
padding: 0;
margin: 0;
-moz-border-radius: 0;
-webkit-border-radius: 0;
border-radius: 0;
}
pre, code {
font-family: Consolas, 'Liberation Mono', Courier, monospace;
color: #333;
background: #f8f8f8;
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
border-radius: 3px;
}
pre, pre code {
font-size: 13px;
}
pre .comment {
color: #998;
}
pre .support {
color: #0086B3;
}
pre .tag, pre .tag-name {
color: navy;
}
pre .keyword, pre .css-property, pre .vendor-prefix, pre .sass, pre .class, pre .id, pre .css-value, pre .entity.function, pre .storage.function {
font-weight: bold;
}
pre .css-property, pre .css-value, pre .vendor-prefix, pre .support.namespace {
color: #333;
}
pre .constant.numeric, pre .keyword.unit, pre .hex-color {
font-weight: normal;
color: #099;
}
pre .entity.class {
color: #458;
}
pre .entity.id, pre .entity.function {
color: #900;
}
pre .attribute, pre .variable {
color: teal;
}
pre .string, pre .support.value {
font-weight: normal;
color: #d14;
}
pre .regexp {
color: #009926;
}
+773
View File
@@ -0,0 +1,773 @@
/**
* Copyright 2012 Craig Campbell
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Rainbow is a simple code syntax highlighter
*
* @preserve @version 1.1.8
* @url rainbowco.de
*/
window['Rainbow'] = (function() {
/**
* array of replacements to process at the end
*
* @type {Object}
*/
var replacements = {},
/**
* an array of start and end positions of blocks to be replaced
*
* @type {Object}
*/
replacement_positions = {},
/**
* an array of the language patterns specified for each language
*
* @type {Object}
*/
language_patterns = {},
/**
* an array of languages and whether they should bypass the default patterns
*
* @type {Object}
*/
bypass_defaults = {},
/**
* processing level
*
* replacements are stored at this level so if there is a sub block of code
* (for example php inside of html) it runs at a different level
*
* @type {number}
*/
CURRENT_LEVEL = 0,
/**
* constant used to refer to the default language
*
* @type {number}
*/
DEFAULT_LANGUAGE = 0,
/**
* used as counters so we can selectively call setTimeout
* after processing a certain number of matches/replacements
*
* @type {number}
*/
match_counter = 0,
/**
* @type {number}
*/
replacement_counter = 0,
/**
* @type {null|string}
*/
global_class,
/**
* @type {null|Function}
*/
onHighlight;
/**
* cross browser get attribute for an element
*
* @see http://stackoverflow.com/questions/3755227/cross-browser-javascript-getattribute-method
*
* @param {Node} el
* @param {string} attr attribute you are trying to get
* @returns {string|number}
*/
function _attr(el, attr, attrs, i) {
var result = (el.getAttribute && el.getAttribute(attr)) || 0;
if (!result) {
attrs = el.attributes;
for (i = 0; i < attrs.length; ++i) {
if (attrs[i].nodeName === attr) {
return attrs[i].nodeValue;
}
}
}
return result;
}
/**
* adds a class to a given code block
*
* @param {Element} el
* @param {string} class_name class name to add
* @returns void
*/
function _addClass(el, class_name) {
el.className += el.className ? ' ' + class_name : class_name;
}
/**
* checks if a block has a given class
*
* @param {Element} el
* @param {string} class_name class name to check for
* @returns {boolean}
*/
function _hasClass(el, class_name) {
return (' ' + el.className + ' ').indexOf(' ' + class_name + ' ') > -1;
}
/**
* gets the language for this block of code
*
* @param {Element} block
* @returns {string|null}
*/
function _getLanguageForBlock(block) {
// if this doesn't have a language but the parent does then use that
// this means if for example you have: <pre data-language="php">
// with a bunch of <code> blocks inside then you do not have
// to specify the language for each block
var language = _attr(block, 'data-language') || _attr(block.parentNode, 'data-language');
// this adds support for specifying language via a css class
// you can use the Google Code Prettify style: <pre class="lang-php">
// or the HTML5 style: <pre><code class="language-php">
if (!language) {
var pattern = /\blang(?:uage)?-(\w+)/,
match = block.className.match(pattern) || block.parentNode.className.match(pattern);
if (match) {
language = match[1];
}
}
return language;
}
/**
* makes sure html entities are always used for tags
*
* @param {string} code
* @returns {string}
*/
function _htmlEntities(code) {
return code.replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/&(?![\w\#]+;)/g, '&amp;');
}
/**
* determines if a new match intersects with an existing one
*
* @param {number} start1 start position of existing match
* @param {number} end1 end position of existing match
* @param {number} start2 start position of new match
* @param {number} end2 end position of new match
* @returns {boolean}
*/
function _intersects(start1, end1, start2, end2) {
if (start2 >= start1 && start2 < end1) {
return true;
}
return end2 > start1 && end2 < end1;
}
/**
* determines if two different matches have complete overlap with each other
*
* @param {number} start1 start position of existing match
* @param {number} end1 end position of existing match
* @param {number} start2 start position of new match
* @param {number} end2 end position of new match
* @returns {boolean}
*/
function _hasCompleteOverlap(start1, end1, start2, end2) {
// if the starting and end positions are exactly the same
// then the first one should stay and this one should be ignored
if (start2 == start1 && end2 == end1) {
return false;
}
return start2 <= start1 && end2 >= end1;
}
/**
* determines if the match passed in falls inside of an existing match
* this prevents a regex pattern from matching inside of a bigger pattern
*
* @param {number} start - start position of new match
* @param {number} end - end position of new match
* @returns {boolean}
*/
function _matchIsInsideOtherMatch(start, end) {
for (var key in replacement_positions[CURRENT_LEVEL]) {
key = parseInt(key, 10);
// if this block completely overlaps with another block
// then we should remove the other block and return false
if (_hasCompleteOverlap(key, replacement_positions[CURRENT_LEVEL][key], start, end)) {
delete replacement_positions[CURRENT_LEVEL][key];
delete replacements[CURRENT_LEVEL][key];
}
if (_intersects(key, replacement_positions[CURRENT_LEVEL][key], start, end)) {
return true;
}
}
return false;
}
/**
* takes a string of code and wraps it in a span tag based on the name
*
* @param {string} name name of the pattern (ie keyword.regex)
* @param {string} code block of code to wrap
* @returns {string}
*/
function _wrapCodeInSpan(name, code) {
return '<span class="' + name.replace(/\./g, ' ') + (global_class ? ' ' + global_class : '') + '">' + code + '</span>';
}
/**
* finds out the position of group match for a regular expression
*
* @see http://stackoverflow.com/questions/1985594/how-to-find-index-of-groups-in-match
*
* @param {Object} match
* @param {number} group_number
* @returns {number}
*/
function _indexOfGroup(match, group_number) {
var index = 0,
i;
for (i = 1; i < group_number; ++i) {
if (match[i]) {
index += match[i].length;
}
}
return index;
}
/**
* matches a regex pattern against a block of code
* finds all matches that should be processed and stores the positions
* of where they should be replaced within the string
*
* this is where pretty much all the work is done but it should not
* be called directly
*
* @param {RegExp} pattern
* @param {string} code
* @returns void
*/
function _processPattern(regex, pattern, code, callback)
{
var match = regex.exec(code);
if (!match) {
return callback();
}
++match_counter;
// treat match 0 the same way as name
if (!pattern['name'] && typeof pattern['matches'][0] == 'string') {
pattern['name'] = pattern['matches'][0];
delete pattern['matches'][0];
}
var replacement = match[0],
start_pos = match.index,
end_pos = match[0].length + start_pos,
/**
* callback to process the next match of this pattern
*/
processNext = function() {
var nextCall = function() {
_processPattern(regex, pattern, code, callback);
};
// every 50 items we process let's call set timeout
// to let the ui breathe a little
return match_counter % 50 > 0 ? nextCall() : setTimeout(nextCall, 0);
};
// if this is not a child match and it falls inside of another
// match that already happened we should skip it and continue processing
if (_matchIsInsideOtherMatch(start_pos, end_pos)) {
return processNext();
}
/**
* callback for when a match was successfully processed
*
* @param {string} replacement
* @returns void
*/
var onMatchSuccess = function(replacement) {
// if this match has a name then wrap it in a span tag
if (pattern['name']) {
replacement = _wrapCodeInSpan(pattern['name'], replacement);
}
// console.log('LEVEL', CURRENT_LEVEL, 'replace', match[0], 'with', replacement, 'at position', start_pos, 'to', end_pos);
// store what needs to be replaced with what at this position
if (!replacements[CURRENT_LEVEL]) {
replacements[CURRENT_LEVEL] = {};
replacement_positions[CURRENT_LEVEL] = {};
}
replacements[CURRENT_LEVEL][start_pos] = {
'replace': match[0],
'with': replacement
};
// store the range of this match so we can use it for comparisons
// with other matches later
replacement_positions[CURRENT_LEVEL][start_pos] = end_pos;
// process the next match
processNext();
},
// if this pattern has sub matches for different groups in the regex
// then we should process them one at a time by rerunning them through
// this function to generate the new replacement
//
// we run through them backwards because the match position of earlier
// matches will not change depending on what gets replaced in later
// matches
group_keys = keys(pattern['matches']),
/**
* callback for processing a sub group
*
* @param {number} i
* @param {Array} group_keys
* @param {Function} callback
*/
processGroup = function(i, group_keys, callback) {
if (i >= group_keys.length) {
return callback(replacement);
}
var processNextGroup = function() {
processGroup(++i, group_keys, callback);
},
block = match[group_keys[i]];
// if there is no match here then move on
if (!block) {
return processNextGroup();
}
var group = pattern['matches'][group_keys[i]],
language = group['language'],
/**
* process group is what group we should use to actually process
* this match group
*
* for example if the subgroup pattern looks like this
* 2: {
* 'name': 'keyword',
* 'pattern': /true/g
* }
*
* then we use that as is, but if it looks like this
*
* 2: {
* 'name': 'keyword',
* 'matches': {
* 'name': 'special',
* 'pattern': /whatever/g
* }
* }
*
* we treat the 'matches' part as the pattern and keep
* the name around to wrap it with later
*/
process_group = group['name'] && group['matches'] ? group['matches'] : group,
/**
* takes the code block matched at this group, replaces it
* with the highlighted block, and optionally wraps it with
* a span with a name
*
* @param {string} block
* @param {string} replace_block
* @param {string|null} match_name
*/
_replaceAndContinue = function(block, replace_block, match_name) {
replacement = _replaceAtPosition(_indexOfGroup(match, group_keys[i]), block, match_name ? _wrapCodeInSpan(match_name, replace_block) : replace_block, replacement);
processNextGroup();
};
// if this is a sublanguage go and process the block using that language
if (language) {
return _highlightBlockForLanguage(block, language, function(code) {
_replaceAndContinue(block, code);
});
}
// if this is a string then this match is directly mapped to selector
// so all we have to do is wrap it in a span and continue
if (typeof group === 'string') {
return _replaceAndContinue(block, block, group);
}
// the process group can be a single pattern or an array of patterns
// _processCodeWithPatterns always expects an array so we convert it here
_processCodeWithPatterns(block, process_group.length ? process_group : [process_group], function(code) {
_replaceAndContinue(block, code, group['matches'] ? group['name'] : 0);
});
};
processGroup(0, group_keys, onMatchSuccess);
}
/**
* should a language bypass the default patterns?
*
* if you call Rainbow.extend() and pass true as the third argument
* it will bypass the defaults
*/
function _bypassDefaultPatterns(language)
{
return bypass_defaults[language];
}
/**
* returns a list of regex patterns for this language
*
* @param {string} language
* @returns {Array}
*/
function _getPatternsForLanguage(language) {
var patterns = language_patterns[language] || [],
default_patterns = language_patterns[DEFAULT_LANGUAGE] || [];
return _bypassDefaultPatterns(language) ? patterns : patterns.concat(default_patterns);
}
/**
* substring replace call to replace part of a string at a certain position
*
* @param {number} position the position where the replacement should happen
* @param {string} replace the text we want to replace
* @param {string} replace_with the text we want to replace it with
* @param {string} code the code we are doing the replacing in
* @returns {string}
*/
function _replaceAtPosition(position, replace, replace_with, code) {
var sub_string = code.substr(position);
return code.substr(0, position) + sub_string.replace(replace, replace_with);
}
/**
* sorts an object by index descending
*
* @param {Object} object
* @return {Array}
*/
function keys(object) {
var locations = [],
replacement,
pos;
for(var location in object) {
if (object.hasOwnProperty(location)) {
locations.push(location);
}
}
// numeric descending
return locations.sort(function(a, b) {
return b - a;
});
}
/**
* processes a block of code using specified patterns
*
* @param {string} code
* @param {Array} patterns
* @returns void
*/
function _processCodeWithPatterns(code, patterns, callback)
{
// we have to increase the level here so that the
// replacements will not conflict with each other when
// processing sub blocks of code
++CURRENT_LEVEL;
// patterns are processed one at a time through this function
function _workOnPatterns(patterns, i)
{
// still have patterns to process, keep going
if (i < patterns.length) {
return _processPattern(patterns[i]['pattern'], patterns[i], code, function() {
_workOnPatterns(patterns, ++i);
});
}
// we are done processing the patterns
// process the replacements and update the DOM
_processReplacements(code, function(code) {
// when we are done processing replacements
// we are done at this level so we can go back down
delete replacements[CURRENT_LEVEL];
delete replacement_positions[CURRENT_LEVEL];
--CURRENT_LEVEL;
callback(code);
});
}
_workOnPatterns(patterns, 0);
}
/**
* process replacements in the string of code to actually update the markup
*
* @param {string} code the code to process replacements in
* @param {Function} onComplete what to do when we are done processing
* @returns void
*/
function _processReplacements(code, onComplete) {
/**
* processes a single replacement
*
* @param {string} code
* @param {Array} positions
* @param {number} i
* @param {Function} onComplete
* @returns void
*/
function _processReplacement(code, positions, i, onComplete) {
if (i < positions.length) {
++replacement_counter;
var pos = positions[i],
replacement = replacements[CURRENT_LEVEL][pos];
code = _replaceAtPosition(pos, replacement['replace'], replacement['with'], code);
// process next function
var next = function() {
_processReplacement(code, positions, ++i, onComplete);
};
// use a timeout every 250 to not freeze up the UI
return replacement_counter % 250 > 0 ? next() : setTimeout(next, 0);
}
onComplete(code);
}
var string_positions = keys(replacements[CURRENT_LEVEL]);
_processReplacement(code, string_positions, 0, onComplete);
}
/**
* takes a string of code and highlights it according to the language specified
*
* @param {string} code
* @param {string} language
* @param {Function} onComplete
* @returns void
*/
function _highlightBlockForLanguage(code, language, onComplete) {
var patterns = _getPatternsForLanguage(language);
_processCodeWithPatterns(_htmlEntities(code), patterns, onComplete);
}
/**
* highlight an individual code block
*
* @param {Array} code_blocks
* @param {number} i
* @returns void
*/
function _highlightCodeBlock(code_blocks, i, onComplete) {
if (i < code_blocks.length) {
var block = code_blocks[i],
language = _getLanguageForBlock(block);
if (!_hasClass(block, 'rainbow') && language) {
language = language.toLowerCase();
_addClass(block, 'rainbow');
return _highlightBlockForLanguage(block.innerHTML, language, function(code) {
block.innerHTML = code;
// reset the replacement arrays
replacements = {};
replacement_positions = {};
// if you have a listener attached tell it that this block is now highlighted
if (onHighlight) {
onHighlight(block, language);
}
// process the next block
setTimeout(function() {
_highlightCodeBlock(code_blocks, ++i, onComplete);
}, 0);
});
}
return _highlightCodeBlock(code_blocks, ++i, onComplete);
}
if (onComplete) {
onComplete();
}
}
/**
* start highlighting all the code blocks
*
* @returns void
*/
function _highlight(node, onComplete) {
// the first argument can be an Event or a DOM Element
// I was originally checking instanceof Event but that makes it break
// when using mootools
//
// @see https://github.com/ccampbell/rainbow/issues/32
//
node = node && typeof node.getElementsByTagName == 'function' ? node : document;
var pre_blocks = node.getElementsByTagName('pre'),
code_blocks = node.getElementsByTagName('code'),
i,
final_blocks = [];
// @see http://stackoverflow.com/questions/2735067/how-to-convert-a-dom-node-list-to-an-array-in-javascript
// we are going to process all <code> blocks
for (i = 0; i < code_blocks.length; ++i) {
final_blocks.push(code_blocks[i]);
}
// loop through the pre blocks to see which ones we should add
for (i = 0; i < pre_blocks.length; ++i) {
// if the pre block has no code blocks then process it directly
if (!pre_blocks[i].getElementsByTagName('code').length) {
final_blocks.push(pre_blocks[i]);
}
}
_highlightCodeBlock(final_blocks, 0, onComplete);
}
/**
* public methods
*/
return {
/**
* extends the language pattern matches
*
* @param {*} language name of language
* @param {*} patterns array of patterns to add on
* @param {boolean|null} bypass if true this will bypass the default language patterns
*/
extend: function(language, patterns, bypass) {
// if there is only one argument then we assume that we want to
// extend the default language rules
if (arguments.length == 1) {
patterns = language;
language = DEFAULT_LANGUAGE;
}
bypass_defaults[language] = bypass;
language_patterns[language] = patterns.concat(language_patterns[language] || []);
},
/**
* call back to let you do stuff in your app after a piece of code has been highlighted
*
* @param {Function} callback
*/
onHighlight: function(callback) {
onHighlight = callback;
},
/**
* method to set a global class that will be applied to all spans
*
* @param {string} class_name
*/
addClass: function(class_name) {
global_class = class_name;
},
/**
* starts the magic rainbow
*
* @returns void
*/
color: function() {
// if you want to straight up highlight a string you can pass the string of code,
// the language, and a callback function
if (typeof arguments[0] == 'string') {
return _highlightBlockForLanguage(arguments[0], arguments[1], arguments[2]);
}
// if you pass a callback function then we rerun the color function
// on all the code and call the callback function on complete
if (typeof arguments[0] == 'function') {
return _highlight(0, arguments[0]);
}
// otherwise we use whatever node you passed in with an optional
// callback function as the second parameter
_highlight(arguments[0], arguments[1]);
}
};
}) ();
/**
* adds event listener to start highlighting
*/
(function() {
if (window.addEventListener) {
return window.addEventListener('load', Rainbow.color, false);
}
window.attachEvent('onload', Rainbow.color);
}) ();
// When using Google closure compiler in advanced mode some methods
// get renamed. This keeps a public reference to these methods so they can
// still be referenced from outside this library.
Rainbow["onHighlight"] = Rainbow.onHighlight;
Rainbow["addClass"] = Rainbow.addClass;
File diff suppressed because one or more lines are too long
@@ -0,0 +1,97 @@
/*
* https://github.com/alicelieutier/smoothScroll/
* A teeny tiny, standard compliant, smooth scroll script with ease-in-out effect and no jQuery (or any other dependancy, FWIW).
* MIT License
*/
window.smoothScroll = (function(){
// We do not want this script to be applied in browsers that do not support those
// That means no smoothscroll on IE9 and below.
if(document.querySelectorAll === void 0 || window.pageYOffset === void 0 || history.pushState === void 0) { return; }
// Get the top position of an element in the document
var getTop = function(element) {
// return value of html.getBoundingClientRect().top ... IE : 0, other browsers : -pageYOffset
if(element.nodeName === 'HTML') return -window.pageYOffset
return element.getBoundingClientRect().top + window.pageYOffset;
}
// ease in out function thanks to:
// http://blog.greweb.fr/2012/02/bezier-curve-based-easing-functions-from-concept-to-implementation/
var easeInOutCubic = function (t) { return t<.5 ? 4*t*t*t : (t-1)*(2*t-2)*(2*t-2)+1 }
// calculate the scroll position we should be in
// given the start and end point of the scroll
// the time elapsed from the beginning of the scroll
// and the total duration of the scroll (default 500ms)
var position = function(start, end, elapsed, duration) {
if (elapsed > duration) return end;
return start + (end - start) * easeInOutCubic(elapsed / duration); // <-- you can change the easing funtion there
// return start + (end - start) * (elapsed / duration); // <-- this would give a linear scroll
}
// we use requestAnimationFrame to be called by the browser before every repaint
// if the first argument is an element then scroll to the top of this element
// if the first argument is numeric then scroll to this location
// if the callback exist, it is called when the scrolling is finished
var smoothScroll = function(el, duration, callback){
duration = duration || 500;
var start = window.pageYOffset;
if (typeof el === 'number') {
var end = parseInt(el);
} else {
var end = getTop(el);
}
var clock = Date.now();
var requestAnimationFrame = window.requestAnimationFrame ||
window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame ||
function(fn){window.setTimeout(fn, 15);};
var step = function(){
var elapsed = Date.now() - clock;
window.scroll(0, position(start, end, elapsed, duration));
if (elapsed > duration) {
if (typeof callback === 'function') {
callback(el);
}
} else {
requestAnimationFrame(step);
}
}
step();
}
var linkHandler = function(ev) {
ev.preventDefault();
if (location.hash !== this.hash) {
//NOTE(@ajoslin): Changed this line to stop $digest errors
//window.history.pushState(null, null, this.hash)
angular.element(document).injector().get('$location').hash(this.hash);
}
// using the history api to solve issue #1 - back doesn't work
// most browser don't update :target when the history api is used:
// THIS IS A BUG FROM THE BROWSERS.
// change the scrolling duration in this call
var targetEl = document.getElementById(this.hash.substring(1));
if (targetEl) {
smoothScroll(document.getElementById(this.hash.substring(1)), 500, function(el) {
location.replace('#' + el.id)
// this will cause the :target to be activated.
});
}
}
// We look for all the internal links in the documents and attach the smoothscroll function
document.addEventListener("DOMContentLoaded", function () {
var internal = document.querySelectorAll('a[href^="#"]'), a;
for(var i=internal.length; a=internal[--i];){
a.addEventListener("click", linkHandler, false);
}
});
// return smoothscroll API
return smoothScroll;
})();
File diff suppressed because one or more lines are too long
-21
View File
@@ -1,21 +0,0 @@
.bs-docs-social {
margin-top: 1em;
padding: 15px 0;
text-align: center;
background-color: rgba(245,245,245,0.3);
border-top: 1px solid rgba(255,255,255,0.3);
border-bottom: 1px solid rgba(221,221,221,0.3);
}
.bs-docs-social-buttons {
position: absolute;
top: 8px;
margin-left: 0;
margin-bottom: 0;
padding-left: 0;
list-style: none;
}
.bs-docs-social-buttons li {
list-style: none;
display: inline-block;
line-height: 1;
}
+6539
View File
File diff suppressed because one or more lines are too long
-13
View File
@@ -1,13 +0,0 @@
<div class="btn-toolbar btn-group pull-right">
<a class="btn btn-small btn-primary" href="https://github.com/angular-ui/bootstrap/tree/gh-pages">
<i class="icon-download-alt icon-white"></i> Download <small>(<%= pkg.version%>)</small>
</a>
</div>
<div class="margin: 10px;"></div>
<ul class="nav pull-right bs-docs-social-buttons">
<li>
<iframe src="http://ghbtns.com/github-btn.html?user=angular-ui&repo=bootstrap&type=watch&count=true"
allowtransparency="true" frameborder="0" scrolling="0" width="110" height="20"></iframe>
</li>
</ul>
+115
View File
@@ -0,0 +1,115 @@
/* Include this file in your html if you are using the CSP mode. */
.ng-animate.item:not(.left):not(.right) {
-webkit-transition: 0s ease-in-out left;
transition: 0s ease-in-out left
}
.uib-datepicker .uib-title {
width: 100%;
}
.uib-day button, .uib-month button, .uib-year button {
min-width: 100%;
}
.uib-left, .uib-right {
width: 100%
}
.uib-position-measure {
display: block !important;
visibility: hidden !important;
position: absolute !important;
top: -9999px !important;
left: -9999px !important;
}
.uib-position-scrollbar-measure {
position: absolute !important;
top: -9999px !important;
width: 50px !important;
height: 50px !important;
overflow: scroll !important;
}
.uib-position-body-scrollbar-measure {
overflow: scroll !important;
}
.uib-datepicker-popup.dropdown-menu {
display: block;
float: none;
margin: 0;
}
.uib-button-bar {
padding: 10px 9px 2px;
}
[uib-tooltip-popup].tooltip.top-left > .tooltip-arrow,
[uib-tooltip-popup].tooltip.top-right > .tooltip-arrow,
[uib-tooltip-popup].tooltip.bottom-left > .tooltip-arrow,
[uib-tooltip-popup].tooltip.bottom-right > .tooltip-arrow,
[uib-tooltip-popup].tooltip.left-top > .tooltip-arrow,
[uib-tooltip-popup].tooltip.left-bottom > .tooltip-arrow,
[uib-tooltip-popup].tooltip.right-top > .tooltip-arrow,
[uib-tooltip-popup].tooltip.right-bottom > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.top-left > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.top-right > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.bottom-left > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.bottom-right > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.left-top > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.left-bottom > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.right-top > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.right-bottom > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.top-left > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.top-right > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.bottom-left > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.bottom-right > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.left-top > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.left-bottom > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.right-top > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.right-bottom > .tooltip-arrow,
[uib-popover-popup].popover.top-left > .arrow,
[uib-popover-popup].popover.top-right > .arrow,
[uib-popover-popup].popover.bottom-left > .arrow,
[uib-popover-popup].popover.bottom-right > .arrow,
[uib-popover-popup].popover.left-top > .arrow,
[uib-popover-popup].popover.left-bottom > .arrow,
[uib-popover-popup].popover.right-top > .arrow,
[uib-popover-popup].popover.right-bottom > .arrow,
[uib-popover-html-popup].popover.top-left > .arrow,
[uib-popover-html-popup].popover.top-right > .arrow,
[uib-popover-html-popup].popover.bottom-left > .arrow,
[uib-popover-html-popup].popover.bottom-right > .arrow,
[uib-popover-html-popup].popover.left-top > .arrow,
[uib-popover-html-popup].popover.left-bottom > .arrow,
[uib-popover-html-popup].popover.right-top > .arrow,
[uib-popover-html-popup].popover.right-bottom > .arrow,
[uib-popover-template-popup].popover.top-left > .arrow,
[uib-popover-template-popup].popover.top-right > .arrow,
[uib-popover-template-popup].popover.bottom-left > .arrow,
[uib-popover-template-popup].popover.bottom-right > .arrow,
[uib-popover-template-popup].popover.left-top > .arrow,
[uib-popover-template-popup].popover.left-bottom > .arrow,
[uib-popover-template-popup].popover.right-top > .arrow,
[uib-popover-template-popup].popover.right-bottom > .arrow {
top: auto;
bottom: auto;
left: auto;
right: auto;
margin: 0;
}
[uib-popover-popup].popover,
[uib-popover-html-popup].popover,
[uib-popover-template-popup].popover {
display: block !important;
}
.uib-time input {
width: 50px;
}
[uib-typeahead-popup].dropdown-menu {
display: block;
}
File diff suppressed because it is too large Load Diff
+116
View File
@@ -0,0 +1,116 @@
/* Include this file in your html if you are using the CSP mode. */
.ng-animate.item:not(.left):not(.right) {
-webkit-transition: 0s ease-in-out left;
transition: 0s ease-in-out left
}
.uib-datepicker .uib-title {
width: 100%;
}
.uib-day button, .uib-month button, .uib-year button {
min-width: 100%;
}
.uib-left, .uib-right {
width: 100%
}
.uib-position-measure {
display: block !important;
visibility: hidden !important;
position: absolute !important;
top: -9999px !important;
left: -9999px !important;
}
.uib-position-scrollbar-measure {
position: absolute !important;
top: -9999px !important;
width: 50px !important;
height: 50px !important;
overflow: scroll !important;
}
.uib-position-body-scrollbar-measure {
overflow: scroll !important;
}
.uib-datepicker-popup.dropdown-menu {
display: block;
float: none;
margin: 0;
}
.uib-button-bar {
padding: 10px;
}
[uib-tooltip-popup].tooltip.top-left > .tooltip-arrow,
[uib-tooltip-popup].tooltip.top-right > .tooltip-arrow,
[uib-tooltip-popup].tooltip.bottom-left > .tooltip-arrow,
[uib-tooltip-popup].tooltip.bottom-right > .tooltip-arrow,
[uib-tooltip-popup].tooltip.left-top > .tooltip-arrow,
[uib-tooltip-popup].tooltip.left-bottom > .tooltip-arrow,
[uib-tooltip-popup].tooltip.right-top > .tooltip-arrow,
[uib-tooltip-popup].tooltip.right-bottom > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.top-left > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.top-right > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.bottom-left > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.bottom-right > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.left-top > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.left-bottom > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.right-top > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.right-bottom > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.top-left > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.top-right > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.bottom-left > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.bottom-right > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.left-top > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.left-bottom > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.right-top > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.right-bottom > .tooltip-arrow,
[uib-popover-popup].popover.top-left > .arrow,
[uib-popover-popup].popover.top-right > .arrow,
[uib-popover-popup].popover.bottom-left > .arrow,
[uib-popover-popup].popover.bottom-right > .arrow,
[uib-popover-popup].popover.left-top > .arrow,
[uib-popover-popup].popover.left-bottom > .arrow,
[uib-popover-popup].popover.right-top > .arrow,
[uib-popover-popup].popover.right-bottom > .arrow,
[uib-popover-html-popup].popover.top-left > .arrow,
[uib-popover-html-popup].popover.top-right > .arrow,
[uib-popover-html-popup].popover.bottom-left > .arrow,
[uib-popover-html-popup].popover.bottom-right > .arrow,
[uib-popover-html-popup].popover.left-top > .arrow,
[uib-popover-html-popup].popover.left-bottom > .arrow,
[uib-popover-html-popup].popover.right-top > .arrow,
[uib-popover-html-popup].popover.right-bottom > .arrow,
[uib-popover-template-popup].popover.top-left > .arrow,
[uib-popover-template-popup].popover.top-right > .arrow,
[uib-popover-template-popup].popover.bottom-left > .arrow,
[uib-popover-template-popup].popover.bottom-right > .arrow,
[uib-popover-template-popup].popover.left-top > .arrow,
[uib-popover-template-popup].popover.left-bottom > .arrow,
[uib-popover-template-popup].popover.right-top > .arrow,
[uib-popover-template-popup].popover.right-bottom > .arrow {
top: auto;
bottom: auto;
left: auto;
right: auto;
margin: 0;
}
[uib-popover-popup].popover,
[uib-popover-html-popup].popover,
[uib-popover-template-popup].popover {
display: block !important;
}
.uib-time input {
/* Bootstrap 4 overrides this otherwise */
width: 50px !important;
}
[uib-typeahead-popup].dropdown-menu {
display: block;
}
File diff suppressed because it is too large Load Diff
+10
View File
File diff suppressed because one or more lines are too long
+116
View File
@@ -0,0 +1,116 @@
/* Include this file in your html if you are using the CSP mode. */
.ng-animate.item:not(.left):not(.right) {
-webkit-transition: 0s ease-in-out left;
transition: 0s ease-in-out left
}
.uib-datepicker .uib-title {
width: 100%;
}
.uib-day button, .uib-month button, .uib-year button {
min-width: 100%;
}
.uib-left, .uib-right {
width: 100%
}
.uib-position-measure {
display: block !important;
visibility: hidden !important;
position: absolute !important;
top: -9999px !important;
left: -9999px !important;
}
.uib-position-scrollbar-measure {
position: absolute !important;
top: -9999px !important;
width: 50px !important;
height: 50px !important;
overflow: scroll !important;
}
.uib-position-body-scrollbar-measure {
overflow: scroll !important;
}
.uib-datepicker-popup.dropdown-menu {
display: block;
float: none;
margin: 0;
}
.uib-button-bar {
padding: 10px;
}
[uib-tooltip-popup].tooltip.top-left > .tooltip-arrow,
[uib-tooltip-popup].tooltip.top-right > .tooltip-arrow,
[uib-tooltip-popup].tooltip.bottom-left > .tooltip-arrow,
[uib-tooltip-popup].tooltip.bottom-right > .tooltip-arrow,
[uib-tooltip-popup].tooltip.left-top > .tooltip-arrow,
[uib-tooltip-popup].tooltip.left-bottom > .tooltip-arrow,
[uib-tooltip-popup].tooltip.right-top > .tooltip-arrow,
[uib-tooltip-popup].tooltip.right-bottom > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.top-left > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.top-right > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.bottom-left > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.bottom-right > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.left-top > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.left-bottom > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.right-top > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.right-bottom > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.top-left > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.top-right > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.bottom-left > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.bottom-right > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.left-top > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.left-bottom > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.right-top > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.right-bottom > .tooltip-arrow,
[uib-popover-popup].popover.top-left > .arrow,
[uib-popover-popup].popover.top-right > .arrow,
[uib-popover-popup].popover.bottom-left > .arrow,
[uib-popover-popup].popover.bottom-right > .arrow,
[uib-popover-popup].popover.left-top > .arrow,
[uib-popover-popup].popover.left-bottom > .arrow,
[uib-popover-popup].popover.right-top > .arrow,
[uib-popover-popup].popover.right-bottom > .arrow,
[uib-popover-html-popup].popover.top-left > .arrow,
[uib-popover-html-popup].popover.top-right > .arrow,
[uib-popover-html-popup].popover.bottom-left > .arrow,
[uib-popover-html-popup].popover.bottom-right > .arrow,
[uib-popover-html-popup].popover.left-top > .arrow,
[uib-popover-html-popup].popover.left-bottom > .arrow,
[uib-popover-html-popup].popover.right-top > .arrow,
[uib-popover-html-popup].popover.right-bottom > .arrow,
[uib-popover-template-popup].popover.top-left > .arrow,
[uib-popover-template-popup].popover.top-right > .arrow,
[uib-popover-template-popup].popover.bottom-left > .arrow,
[uib-popover-template-popup].popover.bottom-right > .arrow,
[uib-popover-template-popup].popover.left-top > .arrow,
[uib-popover-template-popup].popover.left-bottom > .arrow,
[uib-popover-template-popup].popover.right-top > .arrow,
[uib-popover-template-popup].popover.right-bottom > .arrow {
top: auto;
bottom: auto;
left: auto;
right: auto;
margin: 0;
}
[uib-popover-popup].popover,
[uib-popover-html-popup].popover,
[uib-popover-template-popup].popover {
display: block !important;
}
.uib-time input {
/* Bootstrap 4 overrides this otherwise */
width: 50px !important;
}
[uib-typeahead-popup].dropdown-menu {
display: block;
}
File diff suppressed because it is too large Load Diff
+10
View File
File diff suppressed because one or more lines are too long
+116
View File
@@ -0,0 +1,116 @@
/* Include this file in your html if you are using the CSP mode. */
.ng-animate.item:not(.left):not(.right) {
-webkit-transition: 0s ease-in-out left;
transition: 0s ease-in-out left
}
.uib-datepicker .uib-title {
width: 100%;
}
.uib-day button, .uib-month button, .uib-year button {
min-width: 100%;
}
.uib-left, .uib-right {
width: 100%
}
.uib-position-measure {
display: block !important;
visibility: hidden !important;
position: absolute !important;
top: -9999px !important;
left: -9999px !important;
}
.uib-position-scrollbar-measure {
position: absolute !important;
top: -9999px !important;
width: 50px !important;
height: 50px !important;
overflow: scroll !important;
}
.uib-position-body-scrollbar-measure {
overflow: scroll !important;
}
.uib-datepicker-popup.dropdown-menu {
display: block;
float: none;
margin: 0;
}
.uib-button-bar {
padding: 10px;
}
[uib-tooltip-popup].tooltip.top-left > .tooltip-arrow,
[uib-tooltip-popup].tooltip.top-right > .tooltip-arrow,
[uib-tooltip-popup].tooltip.bottom-left > .tooltip-arrow,
[uib-tooltip-popup].tooltip.bottom-right > .tooltip-arrow,
[uib-tooltip-popup].tooltip.left-top > .tooltip-arrow,
[uib-tooltip-popup].tooltip.left-bottom > .tooltip-arrow,
[uib-tooltip-popup].tooltip.right-top > .tooltip-arrow,
[uib-tooltip-popup].tooltip.right-bottom > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.top-left > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.top-right > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.bottom-left > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.bottom-right > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.left-top > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.left-bottom > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.right-top > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.right-bottom > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.top-left > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.top-right > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.bottom-left > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.bottom-right > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.left-top > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.left-bottom > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.right-top > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.right-bottom > .tooltip-arrow,
[uib-popover-popup].popover.top-left > .arrow,
[uib-popover-popup].popover.top-right > .arrow,
[uib-popover-popup].popover.bottom-left > .arrow,
[uib-popover-popup].popover.bottom-right > .arrow,
[uib-popover-popup].popover.left-top > .arrow,
[uib-popover-popup].popover.left-bottom > .arrow,
[uib-popover-popup].popover.right-top > .arrow,
[uib-popover-popup].popover.right-bottom > .arrow,
[uib-popover-html-popup].popover.top-left > .arrow,
[uib-popover-html-popup].popover.top-right > .arrow,
[uib-popover-html-popup].popover.bottom-left > .arrow,
[uib-popover-html-popup].popover.bottom-right > .arrow,
[uib-popover-html-popup].popover.left-top > .arrow,
[uib-popover-html-popup].popover.left-bottom > .arrow,
[uib-popover-html-popup].popover.right-top > .arrow,
[uib-popover-html-popup].popover.right-bottom > .arrow,
[uib-popover-template-popup].popover.top-left > .arrow,
[uib-popover-template-popup].popover.top-right > .arrow,
[uib-popover-template-popup].popover.bottom-left > .arrow,
[uib-popover-template-popup].popover.bottom-right > .arrow,
[uib-popover-template-popup].popover.left-top > .arrow,
[uib-popover-template-popup].popover.left-bottom > .arrow,
[uib-popover-template-popup].popover.right-top > .arrow,
[uib-popover-template-popup].popover.right-bottom > .arrow {
top: auto;
bottom: auto;
left: auto;
right: auto;
margin: 0;
}
[uib-popover-popup].popover,
[uib-popover-html-popup].popover,
[uib-popover-template-popup].popover {
display: block !important;
}
.uib-time input {
/* Bootstrap 4 overrides this otherwise */
width: 50px !important;
}
[uib-typeahead-popup].dropdown-menu {
display: block;
}
File diff suppressed because it is too large Load Diff
+10
View File
File diff suppressed because one or more lines are too long
+116
View File
@@ -0,0 +1,116 @@
/* Include this file in your html if you are using the CSP mode. */
.ng-animate.item:not(.left):not(.right) {
-webkit-transition: 0s ease-in-out left;
transition: 0s ease-in-out left
}
.uib-datepicker .uib-title {
width: 100%;
}
.uib-day button, .uib-month button, .uib-year button {
min-width: 100%;
}
.uib-left, .uib-right {
width: 100%
}
.uib-position-measure {
display: block !important;
visibility: hidden !important;
position: absolute !important;
top: -9999px !important;
left: -9999px !important;
}
.uib-position-scrollbar-measure {
position: absolute !important;
top: -9999px !important;
width: 50px !important;
height: 50px !important;
overflow: scroll !important;
}
.uib-position-body-scrollbar-measure {
overflow: scroll !important;
}
.uib-datepicker-popup.dropdown-menu {
display: block;
float: none;
margin: 0;
}
.uib-button-bar {
padding: 10px;
}
[uib-tooltip-popup].tooltip.top-left > .tooltip-arrow,
[uib-tooltip-popup].tooltip.top-right > .tooltip-arrow,
[uib-tooltip-popup].tooltip.bottom-left > .tooltip-arrow,
[uib-tooltip-popup].tooltip.bottom-right > .tooltip-arrow,
[uib-tooltip-popup].tooltip.left-top > .tooltip-arrow,
[uib-tooltip-popup].tooltip.left-bottom > .tooltip-arrow,
[uib-tooltip-popup].tooltip.right-top > .tooltip-arrow,
[uib-tooltip-popup].tooltip.right-bottom > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.top-left > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.top-right > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.bottom-left > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.bottom-right > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.left-top > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.left-bottom > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.right-top > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.right-bottom > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.top-left > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.top-right > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.bottom-left > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.bottom-right > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.left-top > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.left-bottom > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.right-top > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.right-bottom > .tooltip-arrow,
[uib-popover-popup].popover.top-left > .arrow,
[uib-popover-popup].popover.top-right > .arrow,
[uib-popover-popup].popover.bottom-left > .arrow,
[uib-popover-popup].popover.bottom-right > .arrow,
[uib-popover-popup].popover.left-top > .arrow,
[uib-popover-popup].popover.left-bottom > .arrow,
[uib-popover-popup].popover.right-top > .arrow,
[uib-popover-popup].popover.right-bottom > .arrow,
[uib-popover-html-popup].popover.top-left > .arrow,
[uib-popover-html-popup].popover.top-right > .arrow,
[uib-popover-html-popup].popover.bottom-left > .arrow,
[uib-popover-html-popup].popover.bottom-right > .arrow,
[uib-popover-html-popup].popover.left-top > .arrow,
[uib-popover-html-popup].popover.left-bottom > .arrow,
[uib-popover-html-popup].popover.right-top > .arrow,
[uib-popover-html-popup].popover.right-bottom > .arrow,
[uib-popover-template-popup].popover.top-left > .arrow,
[uib-popover-template-popup].popover.top-right > .arrow,
[uib-popover-template-popup].popover.bottom-left > .arrow,
[uib-popover-template-popup].popover.bottom-right > .arrow,
[uib-popover-template-popup].popover.left-top > .arrow,
[uib-popover-template-popup].popover.left-bottom > .arrow,
[uib-popover-template-popup].popover.right-top > .arrow,
[uib-popover-template-popup].popover.right-bottom > .arrow {
top: auto;
bottom: auto;
left: auto;
right: auto;
margin: 0;
}
[uib-popover-popup].popover,
[uib-popover-html-popup].popover,
[uib-popover-template-popup].popover {
display: block !important;
}
.uib-time input {
/* Bootstrap 4 overrides this otherwise */
width: 50px !important;
}
[uib-typeahead-popup].dropdown-menu {
display: block;
}
File diff suppressed because it is too large Load Diff
+10
View File
File diff suppressed because one or more lines are too long
+139
View File
@@ -0,0 +1,139 @@
/* Include this file in your html if you are using the CSP mode. */
.ng-animate.item:not(.left):not(.right) {
-webkit-transition: 0s ease-in-out left;
transition: 0s ease-in-out left
}
.fa-svg-icon {
display: inline-block;
vertical-align: middle;
min-width: 1em;
min-height: 1em;
height: 100%;
position: relative;
top: -1px;
}
.fa-svg-icon svg {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
.fa-svg-icon svg g,
.fa-svg-icon svg path {
fill: currentColor;
}
.uib-datepicker .uib-title {
width: 100%;
}
.uib-day button, .uib-month button, .uib-year button {
min-width: 100%;
}
.uib-left, .uib-right {
width: 100%
}
.uib-position-measure {
display: block !important;
visibility: hidden !important;
position: absolute !important;
top: -9999px !important;
left: -9999px !important;
}
.uib-position-scrollbar-measure {
position: absolute !important;
top: -9999px !important;
width: 50px !important;
height: 50px !important;
overflow: scroll !important;
}
.uib-position-body-scrollbar-measure {
overflow: scroll !important;
}
.uib-datepicker-popup.dropdown-menu {
display: block;
float: none;
margin: 0;
}
.uib-button-bar {
padding: 10px;
}
[uib-tooltip-popup].tooltip.top-left > .tooltip-arrow,
[uib-tooltip-popup].tooltip.top-right > .tooltip-arrow,
[uib-tooltip-popup].tooltip.bottom-left > .tooltip-arrow,
[uib-tooltip-popup].tooltip.bottom-right > .tooltip-arrow,
[uib-tooltip-popup].tooltip.left-top > .tooltip-arrow,
[uib-tooltip-popup].tooltip.left-bottom > .tooltip-arrow,
[uib-tooltip-popup].tooltip.right-top > .tooltip-arrow,
[uib-tooltip-popup].tooltip.right-bottom > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.top-left > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.top-right > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.bottom-left > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.bottom-right > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.left-top > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.left-bottom > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.right-top > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.right-bottom > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.top-left > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.top-right > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.bottom-left > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.bottom-right > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.left-top > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.left-bottom > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.right-top > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.right-bottom > .tooltip-arrow,
[uib-popover-popup].popover.top-left > .arrow,
[uib-popover-popup].popover.top-right > .arrow,
[uib-popover-popup].popover.bottom-left > .arrow,
[uib-popover-popup].popover.bottom-right > .arrow,
[uib-popover-popup].popover.left-top > .arrow,
[uib-popover-popup].popover.left-bottom > .arrow,
[uib-popover-popup].popover.right-top > .arrow,
[uib-popover-popup].popover.right-bottom > .arrow,
[uib-popover-html-popup].popover.top-left > .arrow,
[uib-popover-html-popup].popover.top-right > .arrow,
[uib-popover-html-popup].popover.bottom-left > .arrow,
[uib-popover-html-popup].popover.bottom-right > .arrow,
[uib-popover-html-popup].popover.left-top > .arrow,
[uib-popover-html-popup].popover.left-bottom > .arrow,
[uib-popover-html-popup].popover.right-top > .arrow,
[uib-popover-html-popup].popover.right-bottom > .arrow,
[uib-popover-template-popup].popover.top-left > .arrow,
[uib-popover-template-popup].popover.top-right > .arrow,
[uib-popover-template-popup].popover.bottom-left > .arrow,
[uib-popover-template-popup].popover.bottom-right > .arrow,
[uib-popover-template-popup].popover.left-top > .arrow,
[uib-popover-template-popup].popover.left-bottom > .arrow,
[uib-popover-template-popup].popover.right-top > .arrow,
[uib-popover-template-popup].popover.right-bottom > .arrow {
top: auto;
bottom: auto;
left: auto;
right: auto;
margin: 0;
}
[uib-popover-popup].popover,
[uib-popover-html-popup].popover,
[uib-popover-template-popup].popover {
display: block !important;
}
.uib-time input {
/* Bootstrap 4 overrides this otherwise */
width: 50px !important;
}
[uib-typeahead-popup].dropdown-menu {
display: block;
}
File diff suppressed because it is too large Load Diff
+10
View File
File diff suppressed because one or more lines are too long
+139
View File
@@ -0,0 +1,139 @@
/* Include this file in your html if you are using the CSP mode. */
.ng-animate.item:not(.left):not(.right) {
-webkit-transition: 0s ease-in-out left;
transition: 0s ease-in-out left
}
.fa-svg-icon {
display: inline-block;
vertical-align: middle;
min-width: 1em;
min-height: 1em;
height: 100%;
position: relative;
top: -1px;
}
.fa-svg-icon svg {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
.fa-svg-icon svg g,
.fa-svg-icon svg path {
fill: currentColor;
}
.uib-datepicker .uib-title {
width: 100%;
}
.uib-day button, .uib-month button, .uib-year button {
min-width: 100%;
}
.uib-left, .uib-right {
width: 100%
}
.uib-position-measure {
display: block !important;
visibility: hidden !important;
position: absolute !important;
top: -9999px !important;
left: -9999px !important;
}
.uib-position-scrollbar-measure {
position: absolute !important;
top: -9999px !important;
width: 50px !important;
height: 50px !important;
overflow: scroll !important;
}
.uib-position-body-scrollbar-measure {
overflow: scroll !important;
}
.uib-datepicker-popup.dropdown-menu {
display: block;
float: none;
margin: 0;
}
.uib-button-bar {
padding: 10px;
}
[uib-tooltip-popup].tooltip.top-left > .tooltip-arrow,
[uib-tooltip-popup].tooltip.top-right > .tooltip-arrow,
[uib-tooltip-popup].tooltip.bottom-left > .tooltip-arrow,
[uib-tooltip-popup].tooltip.bottom-right > .tooltip-arrow,
[uib-tooltip-popup].tooltip.left-top > .tooltip-arrow,
[uib-tooltip-popup].tooltip.left-bottom > .tooltip-arrow,
[uib-tooltip-popup].tooltip.right-top > .tooltip-arrow,
[uib-tooltip-popup].tooltip.right-bottom > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.top-left > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.top-right > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.bottom-left > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.bottom-right > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.left-top > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.left-bottom > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.right-top > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.right-bottom > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.top-left > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.top-right > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.bottom-left > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.bottom-right > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.left-top > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.left-bottom > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.right-top > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.right-bottom > .tooltip-arrow,
[uib-popover-popup].popover.top-left > .arrow,
[uib-popover-popup].popover.top-right > .arrow,
[uib-popover-popup].popover.bottom-left > .arrow,
[uib-popover-popup].popover.bottom-right > .arrow,
[uib-popover-popup].popover.left-top > .arrow,
[uib-popover-popup].popover.left-bottom > .arrow,
[uib-popover-popup].popover.right-top > .arrow,
[uib-popover-popup].popover.right-bottom > .arrow,
[uib-popover-html-popup].popover.top-left > .arrow,
[uib-popover-html-popup].popover.top-right > .arrow,
[uib-popover-html-popup].popover.bottom-left > .arrow,
[uib-popover-html-popup].popover.bottom-right > .arrow,
[uib-popover-html-popup].popover.left-top > .arrow,
[uib-popover-html-popup].popover.left-bottom > .arrow,
[uib-popover-html-popup].popover.right-top > .arrow,
[uib-popover-html-popup].popover.right-bottom > .arrow,
[uib-popover-template-popup].popover.top-left > .arrow,
[uib-popover-template-popup].popover.top-right > .arrow,
[uib-popover-template-popup].popover.bottom-left > .arrow,
[uib-popover-template-popup].popover.bottom-right > .arrow,
[uib-popover-template-popup].popover.left-top > .arrow,
[uib-popover-template-popup].popover.left-bottom > .arrow,
[uib-popover-template-popup].popover.right-top > .arrow,
[uib-popover-template-popup].popover.right-bottom > .arrow {
top: auto;
bottom: auto;
left: auto;
right: auto;
margin: 0;
}
[uib-popover-popup].popover,
[uib-popover-html-popup].popover,
[uib-popover-template-popup].popover {
display: block !important;
}
.uib-time input {
/* Bootstrap 4 overrides this otherwise */
width: 50px !important;
}
[uib-typeahead-popup].dropdown-menu {
display: block;
}
File diff suppressed because it is too large Load Diff
+10
View File
File diff suppressed because one or more lines are too long
+140
View File
@@ -0,0 +1,140 @@
/* Include this file in your html if you are using the CSP mode. */
.ng-animate.item:not(.left):not(.right) {
-webkit-transition: 0s ease-in-out left;
transition: 0s ease-in-out left
}
.fa-svg-icon {
display: inline-block;
vertical-align: middle;
min-width: 1em;
min-height: 1em;
height: 100%;
position: relative;
top: -1px;
}
.fa-svg-icon svg {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
.fa-svg-icon svg g,
.fa-svg-icon svg path {
fill: currentColor;
}
.uib-datepicker .uib-title {
width: 100%;
}
.uib-day button, .uib-month button, .uib-year button {
min-width: 100%;
}
.uib-left, .uib-right {
width: 100%
}
.uib-position-measure {
display: block !important;
visibility: hidden !important;
position: absolute !important;
top: -9999px !important;
left: -9999px !important;
}
.uib-position-scrollbar-measure {
position: absolute !important;
top: -9999px !important;
width: 50px !important;
height: 50px !important;
overflow: scroll !important;
}
.uib-position-body-scrollbar-measure {
overflow: scroll !important;
}
.uib-datepicker-popup.dropdown-menu {
display: block;
float: none;
margin: 0;
}
.uib-button-bar {
padding: 10px;
}
[uib-tooltip-popup].tooltip.top-left > .tooltip-arrow,
[uib-tooltip-popup].tooltip.top-right > .tooltip-arrow,
[uib-tooltip-popup].tooltip.bottom-left > .tooltip-arrow,
[uib-tooltip-popup].tooltip.bottom-right > .tooltip-arrow,
[uib-tooltip-popup].tooltip.left-top > .tooltip-arrow,
[uib-tooltip-popup].tooltip.left-bottom > .tooltip-arrow,
[uib-tooltip-popup].tooltip.right-top > .tooltip-arrow,
[uib-tooltip-popup].tooltip.right-bottom > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.top-left > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.top-right > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.bottom-left > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.bottom-right > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.left-top > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.left-bottom > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.right-top > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.right-bottom > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.top-left > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.top-right > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.bottom-left > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.bottom-right > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.left-top > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.left-bottom > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.right-top > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.right-bottom > .tooltip-arrow,
[uib-popover-popup].popover.top-left > .arrow,
[uib-popover-popup].popover.top-right > .arrow,
[uib-popover-popup].popover.bottom-left > .arrow,
[uib-popover-popup].popover.bottom-right > .arrow,
[uib-popover-popup].popover.left-top > .arrow,
[uib-popover-popup].popover.left-bottom > .arrow,
[uib-popover-popup].popover.right-top > .arrow,
[uib-popover-popup].popover.right-bottom > .arrow,
[uib-popover-html-popup].popover.top-left > .arrow,
[uib-popover-html-popup].popover.top-right > .arrow,
[uib-popover-html-popup].popover.bottom-left > .arrow,
[uib-popover-html-popup].popover.bottom-right > .arrow,
[uib-popover-html-popup].popover.left-top > .arrow,
[uib-popover-html-popup].popover.left-bottom > .arrow,
[uib-popover-html-popup].popover.right-top > .arrow,
[uib-popover-html-popup].popover.right-bottom > .arrow,
[uib-popover-template-popup].popover.top-left > .arrow,
[uib-popover-template-popup].popover.top-right > .arrow,
[uib-popover-template-popup].popover.bottom-left > .arrow,
[uib-popover-template-popup].popover.bottom-right > .arrow,
[uib-popover-template-popup].popover.left-top > .arrow,
[uib-popover-template-popup].popover.left-bottom > .arrow,
[uib-popover-template-popup].popover.right-top > .arrow,
[uib-popover-template-popup].popover.right-bottom > .arrow {
top: auto;
bottom: auto;
left: auto;
right: auto;
margin: 0;
}
[uib-popover-popup].popover,
[uib-popover-html-popup].popover,
[uib-popover-template-popup].popover {
display: block !important;
}
.uib-time input {
/* Bootstrap 4 overrides this otherwise */
width: 50px !important;
}
[uib-typeahead-popup].dropdown-menu {
display: block;
}
File diff suppressed because it is too large Load Diff
+10
View File
File diff suppressed because one or more lines are too long
+140
View File
@@ -0,0 +1,140 @@
/* Include this file in your html if you are using the CSP mode. */
.ng-animate.item:not(.left):not(.right) {
-webkit-transition: 0s ease-in-out left;
transition: 0s ease-in-out left
}
.fa-svg-icon {
display: inline-block;
vertical-align: middle;
min-width: 1em;
min-height: 1em;
height: 100%;
position: relative;
top: -1px;
}
.fa-svg-icon svg {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
.fa-svg-icon svg g,
.fa-svg-icon svg path {
fill: currentColor;
}
.uib-datepicker .uib-title {
width: 100%;
}
.uib-day button, .uib-month button, .uib-year button {
min-width: 100%;
}
.uib-left, .uib-right {
width: 100%
}
.uib-position-measure {
display: block !important;
visibility: hidden !important;
position: absolute !important;
top: -9999px !important;
left: -9999px !important;
}
.uib-position-scrollbar-measure {
position: absolute !important;
top: -9999px !important;
width: 50px !important;
height: 50px !important;
overflow: scroll !important;
}
.uib-position-body-scrollbar-measure {
overflow: scroll !important;
}
.uib-datepicker-popup.dropdown-menu {
display: block;
float: none;
margin: 0;
}
.uib-button-bar {
padding: 10px;
}
[uib-tooltip-popup].tooltip.top-left > .tooltip-arrow,
[uib-tooltip-popup].tooltip.top-right > .tooltip-arrow,
[uib-tooltip-popup].tooltip.bottom-left > .tooltip-arrow,
[uib-tooltip-popup].tooltip.bottom-right > .tooltip-arrow,
[uib-tooltip-popup].tooltip.left-top > .tooltip-arrow,
[uib-tooltip-popup].tooltip.left-bottom > .tooltip-arrow,
[uib-tooltip-popup].tooltip.right-top > .tooltip-arrow,
[uib-tooltip-popup].tooltip.right-bottom > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.top-left > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.top-right > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.bottom-left > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.bottom-right > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.left-top > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.left-bottom > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.right-top > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.right-bottom > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.top-left > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.top-right > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.bottom-left > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.bottom-right > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.left-top > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.left-bottom > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.right-top > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.right-bottom > .tooltip-arrow,
[uib-popover-popup].popover.top-left > .arrow,
[uib-popover-popup].popover.top-right > .arrow,
[uib-popover-popup].popover.bottom-left > .arrow,
[uib-popover-popup].popover.bottom-right > .arrow,
[uib-popover-popup].popover.left-top > .arrow,
[uib-popover-popup].popover.left-bottom > .arrow,
[uib-popover-popup].popover.right-top > .arrow,
[uib-popover-popup].popover.right-bottom > .arrow,
[uib-popover-html-popup].popover.top-left > .arrow,
[uib-popover-html-popup].popover.top-right > .arrow,
[uib-popover-html-popup].popover.bottom-left > .arrow,
[uib-popover-html-popup].popover.bottom-right > .arrow,
[uib-popover-html-popup].popover.left-top > .arrow,
[uib-popover-html-popup].popover.left-bottom > .arrow,
[uib-popover-html-popup].popover.right-top > .arrow,
[uib-popover-html-popup].popover.right-bottom > .arrow,
[uib-popover-template-popup].popover.top-left > .arrow,
[uib-popover-template-popup].popover.top-right > .arrow,
[uib-popover-template-popup].popover.bottom-left > .arrow,
[uib-popover-template-popup].popover.bottom-right > .arrow,
[uib-popover-template-popup].popover.left-top > .arrow,
[uib-popover-template-popup].popover.left-bottom > .arrow,
[uib-popover-template-popup].popover.right-top > .arrow,
[uib-popover-template-popup].popover.right-bottom > .arrow {
top: auto;
bottom: auto;
left: auto;
right: auto;
margin: 0;
}
[uib-popover-popup].popover,
[uib-popover-html-popup].popover,
[uib-popover-template-popup].popover {
display: block !important;
}
.uib-time input {
/* Bootstrap 4 overrides this otherwise */
width: 50px !important;
}
[uib-typeahead-popup].dropdown-menu {
display: block;
}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
+7497
View File
File diff suppressed because it is too large Load Diff
+335
View File
@@ -0,0 +1,335 @@
/* global FastClick, smoothScroll */
angular.module('ui.bootstrap.demo', ['ui.bootstrap', 'plunker', 'ngTouch', 'ngAnimate', 'ngSanitize'], function($httpProvider){
if (!!window.FastClick) {
FastClick.attach(document.body);
}
delete $httpProvider.defaults.headers.common['X-Requested-With'];
}).run(['$location', function($location){
//Allows us to navigate to the correct element on initialization
if ($location.path() !== '' && $location.path() !== '/') {
smoothScroll(document.getElementById($location.path().substring(1)), 500, function(el) {
location.replace('#' + el.id);
});
}
}]).factory('buildFilesService', function ($http, $q) {
var moduleMap;
var rawFiles;
return {
getModuleMap: getModuleMap,
getRawFiles: getRawFiles,
get: function () {
return $q.all({
moduleMap: getModuleMap(),
rawFiles: getRawFiles()
});
}
};
function getModuleMap() {
return moduleMap ? $q.when(moduleMap) : $http.get('assets/module-mapping.json')
.then(function (result) {
moduleMap = result.data;
return moduleMap;
});
}
function getRawFiles() {
return rawFiles ? $q.when(rawFiles) : $http.get('assets/raw-files.json')
.then(function (result) {
rawFiles = result.data;
return rawFiles;
});
}
})
.controller('MainCtrl', MainCtrl)
.controller('SelectModulesCtrl', SelectModulesCtrl)
.controller('DownloadCtrl', DownloadCtrl);
function MainCtrl($scope, $http, $document, $uibModal, orderByFilter) {
// Grab old version docs
$http.get('/ui-bootstrap4/versions-mapping.json')
.then(function(result) {
$scope.oldDocs = result.data;
})
.catch(function(response)
{
if(response.status === 404)
{
$http.get('/versions-mapping.json')
.then(function(result) {
$scope.oldDocs = result.data;
})
.catch(function(response)
{
console.log('failed to get versions mapping:', response);
});
}
else
{
console.log('failed to get versions mapping:', response);
}
});
$scope.showBuildModal = function() {
var modalInstance = $uibModal.open({
templateUrl: 'buildModal.html',
controller: 'SelectModulesCtrl',
resolve: {
modules: function(buildFilesService) {
return buildFilesService.getModuleMap()
.then(function (moduleMap) {
return Object.keys(moduleMap);
});
}
}
});
};
$scope.showDownloadModal = function() {
var modalInstance = $uibModal.open({
templateUrl: 'downloadModal.html',
controller: 'DownloadCtrl'
});
};
}
function SelectModulesCtrl($scope, $uibModalInstance, modules, buildFilesService) {
$scope.selectedModules = [];
$scope.modules = modules;
$scope.selectedChanged = function(module, selected) {
if (selected) {
$scope.selectedModules.push(module);
} else {
$scope.selectedModules.splice($scope.selectedModules.indexOf(module), 1);
}
};
$scope.downloadBuild = function () {
$uibModalInstance.close($scope.selectedModules);
};
$scope.cancel = function () {
$uibModalInstance.dismiss();
};
$scope.isOldBrowser = function () {
return isOldBrowser;
};
$scope.build = function (selectedModules, version) {
/* global JSZip, saveAs */
var moduleMap, rawFiles;
buildFilesService.get().then(function (buildFiles) {
moduleMap = buildFiles.moduleMap;
rawFiles = buildFiles.rawFiles;
generateBuild();
});
function generateBuild() {
var srcModuleNames = selectedModules
.map(function (module) {
return moduleMap[module];
})
.reduce(function (toBuild, module) {
addIfNotExists(toBuild, module.name);
module.dependencies.forEach(function (depName) {
addIfNotExists(toBuild, depName);
});
return toBuild;
}, []);
var srcModules = srcModuleNames
.map(function (moduleName) {
return moduleMap[moduleName];
});
var srcModuleFullNames = srcModules
.map(function (module) {
return module.moduleName;
});
var srcJsContent = srcModules
.reduce(function (buildFiles, module) {
return buildFiles.concat(module.srcFiles);
}, [])
.map(getFileContent)
.join('\n')
;
var jsFile = createNoTplFile(srcModuleFullNames, srcJsContent);
var tplModuleNames = srcModules
.reduce(function (tplModuleNames, module) {
return tplModuleNames.concat(module.tplModules);
}, []);
var tplJsContent = srcModules
.reduce(function (buildFiles, module) {
return buildFiles.concat(module.tpljsFiles);
}, [])
.map(getFileContent)
.join('\n')
;
var jsTplFile = createWithTplFile(srcModuleFullNames, srcJsContent, tplModuleNames, tplJsContent);
var cssContent = srcModules
.map(function (module) {
return module.css;
})
.filter(function (css) {
return css;
})
.join('\n')
;
var cssJsContent = srcModules
.map(function (module) {
return module.cssJs;
})
.filter(function (cssJs) {
return cssJs;
})
.join('\n')
;
var footer = cssJsContent;
var zip = new JSZip();
zip.file('ui-bootstrap-custom-' + version + '.js', rawFiles.banner + jsFile + footer);
zip.file('ui-bootstrap-custom-' + version + '.min.js', rawFiles.banner + uglify(jsFile + footer));
zip.file('ui-bootstrap-custom-tpls-' + version + '.js', rawFiles.banner + jsTplFile + footer);
zip.file('ui-bootstrap-custom-tpls-' + version + '.min.js', rawFiles.banner + uglify(jsTplFile + footer));
zip.file('ui-bootstrap-custom-tpls-' + version + '.min.js', rawFiles.banner + uglify(jsTplFile + footer));
if (cssContent) {
zip.file('ui-bootstrap-custom-' + version + '-csp.css', rawFiles.cssBanner + cssContent);
}
saveAs(zip.generate({type: 'blob'}), 'ui-bootstrap-custom-build.zip');
}
function createNoTplFile(srcModuleNames, srcJsContent) {
return 'angular.module("ui.bootstrap", [' + srcModuleNames.join(',') + ']);\n' +
srcJsContent;
}
function createWithTplFile(srcModuleNames, srcJsContent, tplModuleNames, tplJsContent) {
var depModuleNames = srcModuleNames.slice();
depModuleNames.unshift('"ui.bootstrap.tpls"');
return 'angular.module("ui.bootstrap", [' + depModuleNames.join(',') + ']);\n' +
'angular.module("ui.bootstrap.tpls", [' + tplModuleNames.join(',') + ']);\n' +
srcJsContent + '\n' + tplJsContent;
}
function addIfNotExists(array, element) {
if (array.indexOf(element) == -1) {
array.push(element);
}
}
function getFileContent(fileName) {
return rawFiles.files[fileName];
}
function uglify(js) {
/* global UglifyJS */
var ast = UglifyJS.parse(js);
ast.figure_out_scope();
var compressor = UglifyJS.Compressor();
var compressedAst = ast.transform(compressor);
compressedAst.figure_out_scope();
compressedAst.compute_char_frequency();
compressedAst.mangle_names();
var stream = UglifyJS.OutputStream();
compressedAst.print(stream);
return stream.toString();
}
};
}
function DownloadCtrl($scope, $uibModalInstance) {
$scope.options = {
minified: true,
tpls: true
};
$scope.download = function (version) {
var options = $scope.options;
var downloadUrl = ['ui-bootstrap-'];
if (options.tpls) {
downloadUrl.push('tpls-');
}
downloadUrl.push(version);
if (options.minified) {
downloadUrl.push('.min');
}
downloadUrl.push('.js');
return downloadUrl.join('');
};
$scope.cancel = function () {
$uibModalInstance.dismiss();
};
}
/*
* The following compatibility check is from:
*
* Bootstrap Customizer (http://getbootstrap.com/customize/)
* Copyright 2011-2014 Twitter, Inc.
*
* Licensed under the Creative Commons Attribution 3.0 Unported License. For
* details, see http://creativecommons.org/licenses/by/3.0/.
*/
var isOldBrowser;
(function () {
var supportsFile = (window.File && window.FileReader && window.FileList && window.Blob);
function failback() {
isOldBrowser = true;
}
/**
* Based on:
* Blob Feature Check v1.1.0
* https://github.com/ssorallen/blob-feature-check/
* License: Public domain (http://unlicense.org)
*/
var url = window.URL;
var svg = new Blob(
['<svg xmlns=\'http://www.w3.org/2000/svg\'></svg>'],
{ type: 'image/svg+xml;charset=utf-8' }
);
var objectUrl = url.createObjectURL(svg);
if (/^blob:/.exec(objectUrl) === null || !supportsFile) {
// `URL.createObjectURL` created a URL that started with something other
// than "blob:", which means it has been polyfilled and is not supported by
// this browser.
failback();
} else {
angular.element('<img/>')
.on('load', function () {
isOldBrowser = false;
})
.on('error', failback)
.attr('src', objectUrl);
}
})();
+323
View File
@@ -0,0 +1,323 @@
body {
opacity: 1;
-webkit-transition: opacity 1s ease;
-moz-transition: opacity 1s ease;
transition: opacity 1s;
}
.ng-cloak {
opacity: 0;
}
.ng-invalid {
border: 1px solid red !important;
}
section {
padding-top: 30px;
}
.page-header h1 > small > a {
color: #999;
}
.page-header h1 > small > a:hover {
text-decoration: none;
}
.footer {
text-align: center;
padding: 30px 0;
margin-top: 70px;
border-top: 1px solid #e5e5e5;
background-color: #f5f5f5;
}
.bs-social {
margin-top: 20px;
margin-bottom: 20px;
text-align: center;
}
@media (min-width: 768px) {
.bs-social {
text-align: left;
}
}
.nav, .pagination, .carousel, .panel-title a {
cursor: pointer;
}
.bs-social-buttons {
display: inline-block;
margin-bottom: 0;
padding-left: 0;
list-style: none;
}
.bs-social-buttons li {
display: inline-block;
padding: 5px 8px;
line-height: 1;
}
@media (max-width: 767px) {
.visible-xs.collapse.in {
display: block!important;
}
.visible-xs.collapse {
display: none!important;
}
}
.navbar-fixed-top .collapse {
border-top: 1px solid #e7e7e7;
margin-left: -15px;
margin-right: -15px;
padding-right: 15px;
padding-left: 15px;
}
.show-grid {
margin-bottom: 15px;
}
/*
* Container
*
* Tweak to width of container.
*/
/*@media (min-width: 1200px) {
.container{
max-width: 970px;
}
}*/
/*
* Tabs
*
* Tweaks to the Tabs.
*/
.code .nav-tabs {
border-bottom: 1px solid #ccc;
}
.code pre, .code code {
border-top: none;
border-top-left-radius: 0;
border-top-right-radius: 0;
}
.code .nav-tabs>li.active>a, .code .nav-tabs>li.active>a:hover, .code .nav-tabs>li.active>a:focus {
background-color: #f8f8f8;
border: 1px solid #ccc;
border-bottom-color: transparent;
}
/*
* Button Inverse
*
* Buttons in the masthead.
*/
.btn-outline-inverse {
color: #fff;
background-color: transparent;
border-color: #cdbfe3;
margin: 10px;
}
@media (min-width: 768px) {
.btn-outline-inverse {
width: auto;
margin: 20px 5px 20px 0;
padding: 18px 24px;
font-size: 21px;
}
}
.btn-outline-inverse:hover, .btn-outline-inverse:focus, .btn-outline-inverse:active {
color: #563d7c;
text-shadow: none;
background-color: #fff;
border-color: #fff;
}
/* Page headers */
.bs-header {
padding: 30px 15px 40px; /* side padding builds on .container 15px, so 30px */
font-size: 16px;
text-align: center;
text-shadow: 0 1px 0 rgba(0,0,0,.15);
color: #cdbfe3;
background-color: #563d7c;
background-image: url(header.png);
}
.bs-header a {
color: #fff;
font-weight: normal;
}
.bs-header h1 {
color: #fff;
}
.bs-header p {
font-weight: 200;
line-height: 1.4;
}
.bs-header .container {
position: relative;
}
@media (min-width: 768px) {
.bs-header {
font-size: 30px;
text-align: left;
}
.bs-header h1 {
font-size: 100px;
line-height: 1;
}
}
@media (min-width: 992px) {
.bs-header p {
margin-right: 25%;
}
}
.navbar-inner {
-webkit-box-shadow: 0 3px 3px rgba(0,0,0,0.175);
box-shadow: 0 3px 3px rgba(0,0,0,0.175);
}
/*
* Side navigation
*
* Scrollspy and affixed enhanced navigation to highlight sections and secondary
* sections of docs content.
*/
/* By default it's not affixed in mobile views, so undo that */
.bs-sidebar.affix {
position: static;
}
/* First level of nav */
.bs-sidenav {
margin-top: 30px;
margin-bottom: 30px;
padding-top: 10px;
padding-bottom: 10px;
text-shadow: 0 1px 0 #fff;
background-color: #f7f5fa;
border-radius: 5px;
}
/* All levels of nav */
.bs-sidebar .nav > li > a {
display: block;
color: #716b7a;
padding: 5px 20px;
}
.bs-sidebar .nav > li > a:hover,
.bs-sidebar .nav > li > a:focus {
text-decoration: none;
background-color: #e5e3e9;
border-right: 1px solid #dbd8e0;
}
.bs-sidebar .nav > .active > a,
.bs-sidebar .nav > .active:hover > a,
.bs-sidebar .nav > .active:focus > a {
font-weight: bold;
color: #563d7c;
background-color: transparent;
border-right: 1px solid #563d7c;
}
/* Nav: second level (shown on .active) */
.bs-sidebar .nav .nav {
display: none; /* Hide by default, but at >768px, show it */
margin-bottom: 8px;
}
.bs-sidebar .nav .nav > li > a {
padding-top: 3px;
padding-bottom: 3px;
padding-left: 30px;
font-size: 90%;
}
/* Show and affix the side nav when space allows it */
@media (min-width: 992px) {
.bs-sidebar .nav > .active > ul {
display: block;
}
/* Widen the fixed sidebar */
.bs-sidebar.affix,
.bs-sidebar.affix-bottom {
width: 213px;
}
.bs-sidebar.affix {
position: fixed; /* Undo the static from mobile first approach */
top: 80px;
}
.bs-sidebar.affix-bottom {
position: absolute; /* Undo the static from mobile first approach */
}
.bs-sidebar.affix-bottom .bs-sidenav,
.bs-sidebar.affix .bs-sidenav {
margin-top: 0;
margin-bottom: 0;
}
}
@media (min-width: 1200px) {
/* Widen the fixed sidebar again */
.bs-sidebar.affix-bottom,
.bs-sidebar.affix {
width: 263px;
}
}
/* Not enough room on mobile for markup tab, js tab, and plunk btn.
And no one cares about plunk button on a phone anyway */
@media only screen and (max-device-width: 480px) {
#plunk-btn {
display: none;
}
}
.navbar-nav .dropdown .navbar-brand {
max-width: 100%;
margin-right: inherit;
margin-left: inherit;
}
.header-placeholder {
height: 50px;
}
@media screen and (min-width: 768px) {
.dropdown.open > .navbar-brand + .dropdown-menu {
left: 10px;
}
.header-placeholder {
height: 50px;
}
.navbar-nav .dropdown .navbar-brand {
max-width: 200px;
margin-right: 5px;
margin-left: 10px;
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 398 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

File diff suppressed because one or more lines are too long
@@ -0,0 +1,60 @@
angular.module('plunker', [])
.factory('plunkGenerator', function ($document) {
return function (ngVersion, bsVersion, version, module, content) {
var form = angular.element('<form style="display: none;" method="post" action="https://plnkr.co/edit/?p=preview" target="_blank"></form>');
var addField = function (name, value) {
var input = angular.element('<input type="hidden" name="' + name + '">');
input.attr('value', value);
form.append(input);
};
var indexContent = function (content, version) {
return '<!doctype html>\n' +
'<html ng-app="ui.bootstrap.demo">\n' +
' <head>\n' +
' <script src="//ajax.googleapis.com/ajax/libs/angularjs/'+ngVersion+'/angular.js"></script>\n' +
' <script src="//ajax.googleapis.com/ajax/libs/angularjs/'+ngVersion+'/angular-animate.js"></script>\n' +
' <script src="//ajax.googleapis.com/ajax/libs/angularjs/'+ngVersion+'/angular-sanitize.js"></script>\n' +
' <script src="//angular-ui.github.io/bootstrap/ui-bootstrap-tpls-'+version+'.js"></script>\n' +
' <script src="example.js"></script>\n' +
' <link href="//netdna.bootstrapcdn.com/bootstrap/'+bsVersion+'/css/bootstrap.min.css" rel="stylesheet">\n' +
' </head>\n' +
' <body>\n\n' +
content + '\n' +
' </body>\n' +
'</html>\n';
};
var scriptContent = function(content) {
return "angular.module('ui.bootstrap.demo', ['ngAnimate', 'ngSanitize', 'ui.bootstrap']);" + "\n" + content;
};
addField('description', 'http://angular-ui.github.io/bootstrap/');
addField('files[index.html]', indexContent(content.markup, version));
addField('files[example.js]', scriptContent(content.javascript));
$document.find('body').append(form);
form[0].submit();
form.remove();
};
})
.controller('PlunkerCtrl', function ($scope, plunkGenerator) {
$scope.content = {};
$scope.edit = function (ngVersion, bsVersion, version, module) {
plunkGenerator(ngVersion, bsVersion, version, module, $scope.content);
};
})
.directive('plunkerContent', function () {
return {
link:function (scope, element, attrs) {
scope.content[attrs.plunkerContent] = element.text().trim();
}
}
});
@@ -0,0 +1,59 @@
/**
* Generic language patterns
*
* @author Craig Campbell
* @version 1.0.9
*/
Rainbow.extend([
{
'matches': {
1: {
'name': 'keyword.operator',
'pattern': /\=/g
},
2: {
'name': 'string',
'matches': {
'name': 'constant.character.escape',
'pattern': /\\('|"){1}/g
}
}
},
'pattern': /(\(|\s|\[|\=|:)(('|")([^\\\1]|\\.)*?(\3))/gm
},
{
'name': 'comment',
'pattern': /\/\*[\s\S]*?\*\/|(\/\/|\#)[\s\S]*?$/gm
},
{
'name': 'constant.numeric',
'pattern': /\b(\d+(\.\d+)?(e(\+|\-)?\d+)?(f|d)?|0x[\da-f]+)\b/gi
},
{
'matches': {
1: 'keyword'
},
'pattern': /\b(and|array|as|bool(ean)?|c(atch|har|lass|onst)|d(ef|elete|o(uble)?)|e(cho|lse(if)?|xit|xtends|xcept)|f(inally|loat|or(each)?|unction)|global|if|import|int(eger)?|long|new|object|or|pr(int|ivate|otected)|public|return|self|st(ring|ruct|atic)|switch|th(en|is|row)|try|(un)?signed|var|void|while)(?=\(|\b)/gi
},
{
'name': 'constant.language',
'pattern': /true|false|null/g
},
{
'name': 'keyword.operator',
'pattern': /\+|\!|\-|&(gt|lt|amp);|\||\*|\=/g
},
{
'matches': {
1: 'function.call'
},
'pattern': /(\w+?)(?=\()/g
},
{
'matches': {
1: 'storage.function',
2: 'entity.name.function'
},
'pattern': /(function)\s(.*?)(?=\()/g
}
]);
@@ -0,0 +1,83 @@
/**
* HTML patterns
*
* @author Craig Campbell
* @version 1.0.7
*/
Rainbow.extend('html', [
{
'name': 'source.php.embedded',
'matches': {
2: {
'language': 'php'
}
},
'pattern': /&lt;\?=?(?!xml)(php)?([\s\S]*?)(\?&gt;)/gm
},
{
'name': 'source.css.embedded',
'matches': {
0: {
'language': 'css'
}
},
'pattern': /&lt;style(.*?)&gt;([\s\S]*?)&lt;\/style&gt;/gm
},
{
'name': 'source.js.embedded',
'matches': {
0: {
'language': 'javascript'
}
},
'pattern': /&lt;script(?! src)(.*?)&gt;([\s\S]*?)&lt;\/script&gt;/gm
},
{
'name': 'comment.html',
'pattern': /&lt;\!--[\S\s]*?--&gt;/g
},
{
'matches': {
1: 'support.tag.open',
2: 'support.tag.cclose'
},
'pattern': /(&lt;)|(\/?\??&gt;)/g
},
{
'name': 'support.tag',
'matches': {
1: 'support.tag',
2: 'support.tag.special',
3: 'support.tag-name'
},
'pattern': /(&lt;\??)(\/|\!?)(\w+)/g
},
{
'matches': {
1: 'support.attribute'
},
'pattern': /([a-z-]+)(?=\=)/gi
},
{
'matches': {
1: 'support.operator',
2: 'string.quote',
3: 'string.value',
4: 'string.quote'
},
'pattern': /(=)('|")(.*?)(\2)/g
},
{
'matches': {
1: 'support.operator',
2: 'support.value'
},
'pattern': /(=)([a-zA-Z\-0-9]*)\b/g
},
{
'matches': {
1: 'support.attribute'
},
'pattern': /\s(\w+)(?=\s|&gt;)(?![\s\S]*&lt;)/g
}
], true);
@@ -0,0 +1,110 @@
/**
* Javascript patterns
*
* @author Craig Campbell
* @version 1.0.7
*/
Rainbow.extend('javascript', [
/**
* matches $. or $(
*/
{
'name': 'selector',
'pattern': /(\s|^)\$(?=\.|\()/g
},
{
'name': 'support',
'pattern': /\b(window|document)\b/g
},
{
'matches': {
1: 'support.property'
},
'pattern': /\.(length|node(Name|Value))\b/g
},
{
'matches': {
1: 'support.function'
},
'pattern': /(setTimeout|setInterval)(?=\()/g
},
{
'matches': {
1: 'support.method'
},
'pattern': /\.(getAttribute|push|getElementById|getElementsByClassName|log|setTimeout|setInterval)(?=\()/g
},
{
'matches': {
1: 'support.tag.script',
2: [
{
'name': 'string',
'pattern': /('|")(.*?)(\1)/g
},
{
'name': 'entity.tag.script',
'pattern': /(\w+)/g
}
],
3: 'support.tag.script'
},
'pattern': /(&lt;\/?)(script.*?)(&gt;)/g
},
/**
* matches any escaped characters inside of a js regex pattern
*
* @see https://github.com/ccampbell/rainbow/issues/22
*
* this was causing single line comments to fail so it now makes sure
* the opening / is not directly followed by a *
*
* @todo check that there is valid regex in match group 1
*/
{
'name': 'string.regexp',
'matches': {
1: 'string.regexp.open',
2: {
'name': 'constant.regexp.escape',
'pattern': /\\(.){1}/g
},
3: 'string.regexp.cclose',
4: 'string.regexp.modifier'
},
'pattern': /(\/)(?!\*)(.+)(\/)([igm]{0,3})/g
},
/**
* matches runtime function declarations
*/
{
'matches': {
1: 'storage',
3: 'entity.function'
},
'pattern': /(var)?(\s|^)(.*)(?=\s?=\s?function\()/g
},
/**
* matches constructor call
*/
{
'matches': {
1: 'keyword',
2: 'entity.function'
},
'pattern': /(new)\s+(.*)(?=\()/g
},
/**
* matches any function call in the style functionName: function()
*/
{
'name': 'entity.function',
'pattern': /(\w+)(?=:\s{0,}function)/g
}
]);
@@ -0,0 +1,88 @@
/**
* GitHub theme
*
* @author Craig Campbell
* @version 1.0.4
*/
pre {
border: 1px solid #ccc;
word-wrap: break-word;
padding: 6px 10px;
line-height: 19px;
margin-bottom: 20px;
}
code {
border: 1px solid #eaeaea;
margin: 0 2px;
padding: 0 5px;
font-size: 12px;
}
pre code {
border: 0;
padding: 0;
margin: 0;
-moz-border-radius: 0;
-webkit-border-radius: 0;
border-radius: 0;
}
pre, code {
font-family: Consolas, 'Liberation Mono', Courier, monospace;
color: #333;
background: #f8f8f8;
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
border-radius: 3px;
}
pre, pre code {
font-size: 13px;
}
pre .comment {
color: #998;
}
pre .support {
color: #0086B3;
}
pre .tag, pre .tag-name {
color: navy;
}
pre .keyword, pre .css-property, pre .vendor-prefix, pre .sass, pre .class, pre .id, pre .css-value, pre .entity.function, pre .storage.function {
font-weight: bold;
}
pre .css-property, pre .css-value, pre .vendor-prefix, pre .support.namespace {
color: #333;
}
pre .constant.numeric, pre .keyword.unit, pre .hex-color {
font-weight: normal;
color: #099;
}
pre .entity.class {
color: #458;
}
pre .entity.id, pre .entity.function {
color: #900;
}
pre .attribute, pre .variable {
color: teal;
}
pre .string, pre .support.value {
font-weight: normal;
color: #d14;
}
pre .regexp {
color: #009926;
}
+773
View File
@@ -0,0 +1,773 @@
/**
* Copyright 2012 Craig Campbell
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Rainbow is a simple code syntax highlighter
*
* @preserve @version 1.1.8
* @url rainbowco.de
*/
window['Rainbow'] = (function() {
/**
* array of replacements to process at the end
*
* @type {Object}
*/
var replacements = {},
/**
* an array of start and end positions of blocks to be replaced
*
* @type {Object}
*/
replacement_positions = {},
/**
* an array of the language patterns specified for each language
*
* @type {Object}
*/
language_patterns = {},
/**
* an array of languages and whether they should bypass the default patterns
*
* @type {Object}
*/
bypass_defaults = {},
/**
* processing level
*
* replacements are stored at this level so if there is a sub block of code
* (for example php inside of html) it runs at a different level
*
* @type {number}
*/
CURRENT_LEVEL = 0,
/**
* constant used to refer to the default language
*
* @type {number}
*/
DEFAULT_LANGUAGE = 0,
/**
* used as counters so we can selectively call setTimeout
* after processing a certain number of matches/replacements
*
* @type {number}
*/
match_counter = 0,
/**
* @type {number}
*/
replacement_counter = 0,
/**
* @type {null|string}
*/
global_class,
/**
* @type {null|Function}
*/
onHighlight;
/**
* cross browser get attribute for an element
*
* @see http://stackoverflow.com/questions/3755227/cross-browser-javascript-getattribute-method
*
* @param {Node} el
* @param {string} attr attribute you are trying to get
* @returns {string|number}
*/
function _attr(el, attr, attrs, i) {
var result = (el.getAttribute && el.getAttribute(attr)) || 0;
if (!result) {
attrs = el.attributes;
for (i = 0; i < attrs.length; ++i) {
if (attrs[i].nodeName === attr) {
return attrs[i].nodeValue;
}
}
}
return result;
}
/**
* adds a class to a given code block
*
* @param {Element} el
* @param {string} class_name class name to add
* @returns void
*/
function _addClass(el, class_name) {
el.className += el.className ? ' ' + class_name : class_name;
}
/**
* checks if a block has a given class
*
* @param {Element} el
* @param {string} class_name class name to check for
* @returns {boolean}
*/
function _hasClass(el, class_name) {
return (' ' + el.className + ' ').indexOf(' ' + class_name + ' ') > -1;
}
/**
* gets the language for this block of code
*
* @param {Element} block
* @returns {string|null}
*/
function _getLanguageForBlock(block) {
// if this doesn't have a language but the parent does then use that
// this means if for example you have: <pre data-language="php">
// with a bunch of <code> blocks inside then you do not have
// to specify the language for each block
var language = _attr(block, 'data-language') || _attr(block.parentNode, 'data-language');
// this adds support for specifying language via a css class
// you can use the Google Code Prettify style: <pre class="lang-php">
// or the HTML5 style: <pre><code class="language-php">
if (!language) {
var pattern = /\blang(?:uage)?-(\w+)/,
match = block.className.match(pattern) || block.parentNode.className.match(pattern);
if (match) {
language = match[1];
}
}
return language;
}
/**
* makes sure html entities are always used for tags
*
* @param {string} code
* @returns {string}
*/
function _htmlEntities(code) {
return code.replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/&(?![\w\#]+;)/g, '&amp;');
}
/**
* determines if a new match intersects with an existing one
*
* @param {number} start1 start position of existing match
* @param {number} end1 end position of existing match
* @param {number} start2 start position of new match
* @param {number} end2 end position of new match
* @returns {boolean}
*/
function _intersects(start1, end1, start2, end2) {
if (start2 >= start1 && start2 < end1) {
return true;
}
return end2 > start1 && end2 < end1;
}
/**
* determines if two different matches have complete overlap with each other
*
* @param {number} start1 start position of existing match
* @param {number} end1 end position of existing match
* @param {number} start2 start position of new match
* @param {number} end2 end position of new match
* @returns {boolean}
*/
function _hasCompleteOverlap(start1, end1, start2, end2) {
// if the starting and end positions are exactly the same
// then the first one should stay and this one should be ignored
if (start2 == start1 && end2 == end1) {
return false;
}
return start2 <= start1 && end2 >= end1;
}
/**
* determines if the match passed in falls inside of an existing match
* this prevents a regex pattern from matching inside of a bigger pattern
*
* @param {number} start - start position of new match
* @param {number} end - end position of new match
* @returns {boolean}
*/
function _matchIsInsideOtherMatch(start, end) {
for (var key in replacement_positions[CURRENT_LEVEL]) {
key = parseInt(key, 10);
// if this block completely overlaps with another block
// then we should remove the other block and return false
if (_hasCompleteOverlap(key, replacement_positions[CURRENT_LEVEL][key], start, end)) {
delete replacement_positions[CURRENT_LEVEL][key];
delete replacements[CURRENT_LEVEL][key];
}
if (_intersects(key, replacement_positions[CURRENT_LEVEL][key], start, end)) {
return true;
}
}
return false;
}
/**
* takes a string of code and wraps it in a span tag based on the name
*
* @param {string} name name of the pattern (ie keyword.regex)
* @param {string} code block of code to wrap
* @returns {string}
*/
function _wrapCodeInSpan(name, code) {
return '<span class="' + name.replace(/\./g, ' ') + (global_class ? ' ' + global_class : '') + '">' + code + '</span>';
}
/**
* finds out the position of group match for a regular expression
*
* @see http://stackoverflow.com/questions/1985594/how-to-find-index-of-groups-in-match
*
* @param {Object} match
* @param {number} group_number
* @returns {number}
*/
function _indexOfGroup(match, group_number) {
var index = 0,
i;
for (i = 1; i < group_number; ++i) {
if (match[i]) {
index += match[i].length;
}
}
return index;
}
/**
* matches a regex pattern against a block of code
* finds all matches that should be processed and stores the positions
* of where they should be replaced within the string
*
* this is where pretty much all the work is done but it should not
* be called directly
*
* @param {RegExp} pattern
* @param {string} code
* @returns void
*/
function _processPattern(regex, pattern, code, callback)
{
var match = regex.exec(code);
if (!match) {
return callback();
}
++match_counter;
// treat match 0 the same way as name
if (!pattern['name'] && typeof pattern['matches'][0] == 'string') {
pattern['name'] = pattern['matches'][0];
delete pattern['matches'][0];
}
var replacement = match[0],
start_pos = match.index,
end_pos = match[0].length + start_pos,
/**
* callback to process the next match of this pattern
*/
processNext = function() {
var nextCall = function() {
_processPattern(regex, pattern, code, callback);
};
// every 50 items we process let's call set timeout
// to let the ui breathe a little
return match_counter % 50 > 0 ? nextCall() : setTimeout(nextCall, 0);
};
// if this is not a child match and it falls inside of another
// match that already happened we should skip it and continue processing
if (_matchIsInsideOtherMatch(start_pos, end_pos)) {
return processNext();
}
/**
* callback for when a match was successfully processed
*
* @param {string} replacement
* @returns void
*/
var onMatchSuccess = function(replacement) {
// if this match has a name then wrap it in a span tag
if (pattern['name']) {
replacement = _wrapCodeInSpan(pattern['name'], replacement);
}
// console.log('LEVEL', CURRENT_LEVEL, 'replace', match[0], 'with', replacement, 'at position', start_pos, 'to', end_pos);
// store what needs to be replaced with what at this position
if (!replacements[CURRENT_LEVEL]) {
replacements[CURRENT_LEVEL] = {};
replacement_positions[CURRENT_LEVEL] = {};
}
replacements[CURRENT_LEVEL][start_pos] = {
'replace': match[0],
'with': replacement
};
// store the range of this match so we can use it for comparisons
// with other matches later
replacement_positions[CURRENT_LEVEL][start_pos] = end_pos;
// process the next match
processNext();
},
// if this pattern has sub matches for different groups in the regex
// then we should process them one at a time by rerunning them through
// this function to generate the new replacement
//
// we run through them backwards because the match position of earlier
// matches will not change depending on what gets replaced in later
// matches
group_keys = keys(pattern['matches']),
/**
* callback for processing a sub group
*
* @param {number} i
* @param {Array} group_keys
* @param {Function} callback
*/
processGroup = function(i, group_keys, callback) {
if (i >= group_keys.length) {
return callback(replacement);
}
var processNextGroup = function() {
processGroup(++i, group_keys, callback);
},
block = match[group_keys[i]];
// if there is no match here then move on
if (!block) {
return processNextGroup();
}
var group = pattern['matches'][group_keys[i]],
language = group['language'],
/**
* process group is what group we should use to actually process
* this match group
*
* for example if the subgroup pattern looks like this
* 2: {
* 'name': 'keyword',
* 'pattern': /true/g
* }
*
* then we use that as is, but if it looks like this
*
* 2: {
* 'name': 'keyword',
* 'matches': {
* 'name': 'special',
* 'pattern': /whatever/g
* }
* }
*
* we treat the 'matches' part as the pattern and keep
* the name around to wrap it with later
*/
process_group = group['name'] && group['matches'] ? group['matches'] : group,
/**
* takes the code block matched at this group, replaces it
* with the highlighted block, and optionally wraps it with
* a span with a name
*
* @param {string} block
* @param {string} replace_block
* @param {string|null} match_name
*/
_replaceAndContinue = function(block, replace_block, match_name) {
replacement = _replaceAtPosition(_indexOfGroup(match, group_keys[i]), block, match_name ? _wrapCodeInSpan(match_name, replace_block) : replace_block, replacement);
processNextGroup();
};
// if this is a sublanguage go and process the block using that language
if (language) {
return _highlightBlockForLanguage(block, language, function(code) {
_replaceAndContinue(block, code);
});
}
// if this is a string then this match is directly mapped to selector
// so all we have to do is wrap it in a span and continue
if (typeof group === 'string') {
return _replaceAndContinue(block, block, group);
}
// the process group can be a single pattern or an array of patterns
// _processCodeWithPatterns always expects an array so we convert it here
_processCodeWithPatterns(block, process_group.length ? process_group : [process_group], function(code) {
_replaceAndContinue(block, code, group['matches'] ? group['name'] : 0);
});
};
processGroup(0, group_keys, onMatchSuccess);
}
/**
* should a language bypass the default patterns?
*
* if you call Rainbow.extend() and pass true as the third argument
* it will bypass the defaults
*/
function _bypassDefaultPatterns(language)
{
return bypass_defaults[language];
}
/**
* returns a list of regex patterns for this language
*
* @param {string} language
* @returns {Array}
*/
function _getPatternsForLanguage(language) {
var patterns = language_patterns[language] || [],
default_patterns = language_patterns[DEFAULT_LANGUAGE] || [];
return _bypassDefaultPatterns(language) ? patterns : patterns.concat(default_patterns);
}
/**
* substring replace call to replace part of a string at a certain position
*
* @param {number} position the position where the replacement should happen
* @param {string} replace the text we want to replace
* @param {string} replace_with the text we want to replace it with
* @param {string} code the code we are doing the replacing in
* @returns {string}
*/
function _replaceAtPosition(position, replace, replace_with, code) {
var sub_string = code.substr(position);
return code.substr(0, position) + sub_string.replace(replace, replace_with);
}
/**
* sorts an object by index descending
*
* @param {Object} object
* @return {Array}
*/
function keys(object) {
var locations = [],
replacement,
pos;
for(var location in object) {
if (object.hasOwnProperty(location)) {
locations.push(location);
}
}
// numeric descending
return locations.sort(function(a, b) {
return b - a;
});
}
/**
* processes a block of code using specified patterns
*
* @param {string} code
* @param {Array} patterns
* @returns void
*/
function _processCodeWithPatterns(code, patterns, callback)
{
// we have to increase the level here so that the
// replacements will not conflict with each other when
// processing sub blocks of code
++CURRENT_LEVEL;
// patterns are processed one at a time through this function
function _workOnPatterns(patterns, i)
{
// still have patterns to process, keep going
if (i < patterns.length) {
return _processPattern(patterns[i]['pattern'], patterns[i], code, function() {
_workOnPatterns(patterns, ++i);
});
}
// we are done processing the patterns
// process the replacements and update the DOM
_processReplacements(code, function(code) {
// when we are done processing replacements
// we are done at this level so we can go back down
delete replacements[CURRENT_LEVEL];
delete replacement_positions[CURRENT_LEVEL];
--CURRENT_LEVEL;
callback(code);
});
}
_workOnPatterns(patterns, 0);
}
/**
* process replacements in the string of code to actually update the markup
*
* @param {string} code the code to process replacements in
* @param {Function} onComplete what to do when we are done processing
* @returns void
*/
function _processReplacements(code, onComplete) {
/**
* processes a single replacement
*
* @param {string} code
* @param {Array} positions
* @param {number} i
* @param {Function} onComplete
* @returns void
*/
function _processReplacement(code, positions, i, onComplete) {
if (i < positions.length) {
++replacement_counter;
var pos = positions[i],
replacement = replacements[CURRENT_LEVEL][pos];
code = _replaceAtPosition(pos, replacement['replace'], replacement['with'], code);
// process next function
var next = function() {
_processReplacement(code, positions, ++i, onComplete);
};
// use a timeout every 250 to not freeze up the UI
return replacement_counter % 250 > 0 ? next() : setTimeout(next, 0);
}
onComplete(code);
}
var string_positions = keys(replacements[CURRENT_LEVEL]);
_processReplacement(code, string_positions, 0, onComplete);
}
/**
* takes a string of code and highlights it according to the language specified
*
* @param {string} code
* @param {string} language
* @param {Function} onComplete
* @returns void
*/
function _highlightBlockForLanguage(code, language, onComplete) {
var patterns = _getPatternsForLanguage(language);
_processCodeWithPatterns(_htmlEntities(code), patterns, onComplete);
}
/**
* highlight an individual code block
*
* @param {Array} code_blocks
* @param {number} i
* @returns void
*/
function _highlightCodeBlock(code_blocks, i, onComplete) {
if (i < code_blocks.length) {
var block = code_blocks[i],
language = _getLanguageForBlock(block);
if (!_hasClass(block, 'rainbow') && language) {
language = language.toLowerCase();
_addClass(block, 'rainbow');
return _highlightBlockForLanguage(block.innerHTML, language, function(code) {
block.innerHTML = code;
// reset the replacement arrays
replacements = {};
replacement_positions = {};
// if you have a listener attached tell it that this block is now highlighted
if (onHighlight) {
onHighlight(block, language);
}
// process the next block
setTimeout(function() {
_highlightCodeBlock(code_blocks, ++i, onComplete);
}, 0);
});
}
return _highlightCodeBlock(code_blocks, ++i, onComplete);
}
if (onComplete) {
onComplete();
}
}
/**
* start highlighting all the code blocks
*
* @returns void
*/
function _highlight(node, onComplete) {
// the first argument can be an Event or a DOM Element
// I was originally checking instanceof Event but that makes it break
// when using mootools
//
// @see https://github.com/ccampbell/rainbow/issues/32
//
node = node && typeof node.getElementsByTagName == 'function' ? node : document;
var pre_blocks = node.getElementsByTagName('pre'),
code_blocks = node.getElementsByTagName('code'),
i,
final_blocks = [];
// @see http://stackoverflow.com/questions/2735067/how-to-convert-a-dom-node-list-to-an-array-in-javascript
// we are going to process all <code> blocks
for (i = 0; i < code_blocks.length; ++i) {
final_blocks.push(code_blocks[i]);
}
// loop through the pre blocks to see which ones we should add
for (i = 0; i < pre_blocks.length; ++i) {
// if the pre block has no code blocks then process it directly
if (!pre_blocks[i].getElementsByTagName('code').length) {
final_blocks.push(pre_blocks[i]);
}
}
_highlightCodeBlock(final_blocks, 0, onComplete);
}
/**
* public methods
*/
return {
/**
* extends the language pattern matches
*
* @param {*} language name of language
* @param {*} patterns array of patterns to add on
* @param {boolean|null} bypass if true this will bypass the default language patterns
*/
extend: function(language, patterns, bypass) {
// if there is only one argument then we assume that we want to
// extend the default language rules
if (arguments.length == 1) {
patterns = language;
language = DEFAULT_LANGUAGE;
}
bypass_defaults[language] = bypass;
language_patterns[language] = patterns.concat(language_patterns[language] || []);
},
/**
* call back to let you do stuff in your app after a piece of code has been highlighted
*
* @param {Function} callback
*/
onHighlight: function(callback) {
onHighlight = callback;
},
/**
* method to set a global class that will be applied to all spans
*
* @param {string} class_name
*/
addClass: function(class_name) {
global_class = class_name;
},
/**
* starts the magic rainbow
*
* @returns void
*/
color: function() {
// if you want to straight up highlight a string you can pass the string of code,
// the language, and a callback function
if (typeof arguments[0] == 'string') {
return _highlightBlockForLanguage(arguments[0], arguments[1], arguments[2]);
}
// if you pass a callback function then we rerun the color function
// on all the code and call the callback function on complete
if (typeof arguments[0] == 'function') {
return _highlight(0, arguments[0]);
}
// otherwise we use whatever node you passed in with an optional
// callback function as the second parameter
_highlight(arguments[0], arguments[1]);
}
};
}) ();
/**
* adds event listener to start highlighting
*/
(function() {
if (window.addEventListener) {
return window.addEventListener('load', Rainbow.color, false);
}
window.attachEvent('onload', Rainbow.color);
}) ();
// When using Google closure compiler in advanced mode some methods
// get renamed. This keeps a public reference to these methods so they can
// still be referenced from outside this library.
Rainbow["onHighlight"] = Rainbow.onHighlight;
Rainbow["addClass"] = Rainbow.addClass;
File diff suppressed because one or more lines are too long
@@ -0,0 +1,97 @@
/*
* https://github.com/alicelieutier/smoothScroll/
* A teeny tiny, standard compliant, smooth scroll script with ease-in-out effect and no jQuery (or any other dependancy, FWIW).
* MIT License
*/
window.smoothScroll = (function(){
// We do not want this script to be applied in browsers that do not support those
// That means no smoothscroll on IE9 and below.
if(document.querySelectorAll === void 0 || window.pageYOffset === void 0 || history.pushState === void 0) { return; }
// Get the top position of an element in the document
var getTop = function(element) {
// return value of html.getBoundingClientRect().top ... IE : 0, other browsers : -pageYOffset
if(element.nodeName === 'HTML') return -window.pageYOffset
return element.getBoundingClientRect().top + window.pageYOffset;
}
// ease in out function thanks to:
// http://blog.greweb.fr/2012/02/bezier-curve-based-easing-functions-from-concept-to-implementation/
var easeInOutCubic = function (t) { return t<.5 ? 4*t*t*t : (t-1)*(2*t-2)*(2*t-2)+1 }
// calculate the scroll position we should be in
// given the start and end point of the scroll
// the time elapsed from the beginning of the scroll
// and the total duration of the scroll (default 500ms)
var position = function(start, end, elapsed, duration) {
if (elapsed > duration) return end;
return start + (end - start) * easeInOutCubic(elapsed / duration); // <-- you can change the easing funtion there
// return start + (end - start) * (elapsed / duration); // <-- this would give a linear scroll
}
// we use requestAnimationFrame to be called by the browser before every repaint
// if the first argument is an element then scroll to the top of this element
// if the first argument is numeric then scroll to this location
// if the callback exist, it is called when the scrolling is finished
var smoothScroll = function(el, duration, callback){
duration = duration || 500;
var start = window.pageYOffset;
if (typeof el === 'number') {
var end = parseInt(el);
} else {
var end = getTop(el);
}
var clock = Date.now();
var requestAnimationFrame = window.requestAnimationFrame ||
window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame ||
function(fn){window.setTimeout(fn, 15);};
var step = function(){
var elapsed = Date.now() - clock;
window.scroll(0, position(start, end, elapsed, duration));
if (elapsed > duration) {
if (typeof callback === 'function') {
callback(el);
}
} else {
requestAnimationFrame(step);
}
}
step();
}
var linkHandler = function(ev) {
ev.preventDefault();
if (location.hash !== this.hash) {
//NOTE(@ajoslin): Changed this line to stop $digest errors
//window.history.pushState(null, null, this.hash)
angular.element(document).injector().get('$location').hash(this.hash);
}
// using the history api to solve issue #1 - back doesn't work
// most browser don't update :target when the history api is used:
// THIS IS A BUG FROM THE BROWSERS.
// change the scrolling duration in this call
var targetEl = document.getElementById(this.hash.substring(1));
if (targetEl) {
smoothScroll(document.getElementById(this.hash.substring(1)), 500, function(el) {
location.replace('#' + el.id)
// this will cause the :target to be activated.
});
}
}
// We look for all the internal links in the documents and attach the smoothscroll function
document.addEventListener("DOMContentLoaded", function () {
var internal = document.querySelectorAll('a[href^="#"]'), a;
for(var i=internal.length; a=internal[--i];){
a.addEventListener("click", linkHandler, false);
}
});
// return smoothscroll API
return smoothScroll;
})();
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,115 @@
/* Include this file in your html if you are using the CSP mode. */
.ng-animate.item:not(.left):not(.right) {
-webkit-transition: 0s ease-in-out left;
transition: 0s ease-in-out left
}
.uib-datepicker .uib-title {
width: 100%;
}
.uib-day button, .uib-month button, .uib-year button {
min-width: 100%;
}
.uib-left, .uib-right {
width: 100%
}
.uib-position-measure {
display: block !important;
visibility: hidden !important;
position: absolute !important;
top: -9999px !important;
left: -9999px !important;
}
.uib-position-scrollbar-measure {
position: absolute !important;
top: -9999px !important;
width: 50px !important;
height: 50px !important;
overflow: scroll !important;
}
.uib-position-body-scrollbar-measure {
overflow: scroll !important;
}
.uib-datepicker-popup.dropdown-menu {
display: block;
float: none;
margin: 0;
}
.uib-button-bar {
padding: 10px 9px 2px;
}
[uib-tooltip-popup].tooltip.top-left > .tooltip-arrow,
[uib-tooltip-popup].tooltip.top-right > .tooltip-arrow,
[uib-tooltip-popup].tooltip.bottom-left > .tooltip-arrow,
[uib-tooltip-popup].tooltip.bottom-right > .tooltip-arrow,
[uib-tooltip-popup].tooltip.left-top > .tooltip-arrow,
[uib-tooltip-popup].tooltip.left-bottom > .tooltip-arrow,
[uib-tooltip-popup].tooltip.right-top > .tooltip-arrow,
[uib-tooltip-popup].tooltip.right-bottom > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.top-left > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.top-right > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.bottom-left > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.bottom-right > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.left-top > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.left-bottom > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.right-top > .tooltip-arrow,
[uib-tooltip-html-popup].tooltip.right-bottom > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.top-left > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.top-right > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.bottom-left > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.bottom-right > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.left-top > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.left-bottom > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.right-top > .tooltip-arrow,
[uib-tooltip-template-popup].tooltip.right-bottom > .tooltip-arrow,
[uib-popover-popup].popover.top-left > .arrow,
[uib-popover-popup].popover.top-right > .arrow,
[uib-popover-popup].popover.bottom-left > .arrow,
[uib-popover-popup].popover.bottom-right > .arrow,
[uib-popover-popup].popover.left-top > .arrow,
[uib-popover-popup].popover.left-bottom > .arrow,
[uib-popover-popup].popover.right-top > .arrow,
[uib-popover-popup].popover.right-bottom > .arrow,
[uib-popover-html-popup].popover.top-left > .arrow,
[uib-popover-html-popup].popover.top-right > .arrow,
[uib-popover-html-popup].popover.bottom-left > .arrow,
[uib-popover-html-popup].popover.bottom-right > .arrow,
[uib-popover-html-popup].popover.left-top > .arrow,
[uib-popover-html-popup].popover.left-bottom > .arrow,
[uib-popover-html-popup].popover.right-top > .arrow,
[uib-popover-html-popup].popover.right-bottom > .arrow,
[uib-popover-template-popup].popover.top-left > .arrow,
[uib-popover-template-popup].popover.top-right > .arrow,
[uib-popover-template-popup].popover.bottom-left > .arrow,
[uib-popover-template-popup].popover.bottom-right > .arrow,
[uib-popover-template-popup].popover.left-top > .arrow,
[uib-popover-template-popup].popover.left-bottom > .arrow,
[uib-popover-template-popup].popover.right-top > .arrow,
[uib-popover-template-popup].popover.right-bottom > .arrow {
top: auto;
bottom: auto;
left: auto;
right: auto;
margin: 0;
}
[uib-popover-popup].popover,
[uib-popover-html-popup].popover,
[uib-popover-template-popup].popover {
display: block !important;
}
.uib-time input {
width: 50px;
}
[uib-typeahead-popup].dropdown-menu {
display: block;
}
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More