praxis 0.16.1 → 0.17.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rspec +0 -1
- data/.ruby-version +1 -1
- data/.travis.yml +2 -1
- data/CHANGELOG.md +41 -0
- data/CONTRIBUTING.md +3 -0
- data/lib/api_browser/Gruntfile.js +20 -4
- data/lib/api_browser/app/bower_components/angular-mocks/.bower.json +6 -6
- data/lib/api_browser/app/bower_components/angular-mocks/README.md +11 -5
- data/lib/api_browser/app/bower_components/angular-mocks/angular-mocks.js +475 -216
- data/lib/api_browser/app/bower_components/angular-mocks/bower.json +2 -2
- data/lib/api_browser/app/bower_components/angular-mocks/ngAnimateMock.js +2 -0
- data/lib/api_browser/app/bower_components/angular-mocks/ngMock.js +2 -0
- data/lib/api_browser/app/bower_components/angular-mocks/ngMockE2E.js +2 -0
- data/lib/api_browser/app/bower_components/angular-mocks/package.json +1 -1
- data/lib/api_browser/app/bower_components/angular-sanitize/.bower.json +8 -8
- data/lib/api_browser/app/bower_components/angular-sanitize/README.md +19 -5
- data/lib/api_browser/app/bower_components/angular-sanitize/angular-sanitize.js +186 -127
- data/lib/api_browser/app/bower_components/angular-sanitize/angular-sanitize.min.js +12 -10
- data/lib/api_browser/app/bower_components/angular-sanitize/angular-sanitize.min.js.map +3 -3
- data/lib/api_browser/app/bower_components/angular-sanitize/bower.json +3 -2
- data/lib/api_browser/app/bower_components/angular-sanitize/index.js +2 -0
- data/lib/api_browser/app/bower_components/angular-sanitize/package.json +26 -0
- data/lib/api_browser/app/bower_components/angular-ui-bootstrap-bower/.bower.json +15 -8
- data/lib/api_browser/app/bower_components/angular-ui-bootstrap-bower/bower.json +11 -3
- data/lib/api_browser/app/bower_components/angular-ui-bootstrap-bower/ui-bootstrap-csp.css +6 -0
- data/lib/api_browser/app/bower_components/angular-ui-bootstrap-bower/ui-bootstrap-tpls.js +1177 -453
- data/lib/api_browser/app/bower_components/angular-ui-bootstrap-bower/ui-bootstrap-tpls.min.js +4 -4
- data/lib/api_browser/app/bower_components/angular-ui-bootstrap-bower/ui-bootstrap.js +1066 -404
- data/lib/api_browser/app/bower_components/angular-ui-bootstrap-bower/ui-bootstrap.min.js +3 -3
- data/lib/api_browser/app/bower_components/angular-ui-router/.bower.json +5 -6
- data/lib/api_browser/app/bower_components/angular-ui-router/CHANGELOG.md +208 -3
- data/lib/api_browser/app/bower_components/angular-ui-router/CONTRIBUTING.md +65 -0
- data/lib/api_browser/app/bower_components/angular-ui-router/LICENSE +1 -1
- data/lib/api_browser/app/bower_components/angular-ui-router/README.md +36 -71
- data/lib/api_browser/app/bower_components/angular-ui-router/api/angular-ui-router.d.ts +126 -0
- data/lib/api_browser/app/bower_components/angular-ui-router/bower.json +1 -1
- data/lib/api_browser/app/bower_components/angular-ui-router/release/angular-ui-router.js +1902 -755
- data/lib/api_browser/app/bower_components/angular-ui-router/release/angular-ui-router.min.js +2 -2
- data/lib/api_browser/app/bower_components/angular-ui-router/src/common.js +69 -23
- data/lib/api_browser/app/bower_components/angular-ui-router/src/resolve.js +15 -5
- data/lib/api_browser/app/bower_components/angular-ui-router/src/state.js +556 -295
- data/lib/api_browser/app/bower_components/angular-ui-router/src/stateDirectives.js +101 -42
- data/lib/api_browser/app/bower_components/angular-ui-router/src/stateFilters.js +6 -2
- data/lib/api_browser/app/bower_components/angular-ui-router/src/templateFactory.js +2 -2
- data/lib/api_browser/app/bower_components/angular-ui-router/src/urlMatcherFactory.js +822 -97
- data/lib/api_browser/app/bower_components/angular-ui-router/src/urlRouter.js +274 -120
- data/lib/api_browser/app/bower_components/angular-ui-router/src/viewDirective.js +33 -20
- data/lib/api_browser/app/bower_components/angular-ui-router/src/viewScroll.js +1 -1
- data/lib/api_browser/app/bower_components/angular/.bower.json +5 -5
- data/lib/api_browser/app/bower_components/angular/README.md +2 -5
- data/lib/api_browser/app/bower_components/angular/angular-csp.css +5 -8
- data/lib/api_browser/app/bower_components/angular/angular.js +12975 -6996
- data/lib/api_browser/app/bower_components/angular/angular.min.js +285 -213
- data/lib/api_browser/app/bower_components/angular/angular.min.js.gzip +0 -0
- data/lib/api_browser/app/bower_components/angular/angular.min.js.map +3 -3
- data/lib/api_browser/app/bower_components/angular/bower.json +1 -1
- data/lib/api_browser/app/bower_components/angular/index.js +2 -0
- data/lib/api_browser/app/bower_components/angular/package.json +2 -2
- data/lib/api_browser/app/bower_components/bootstrap-sass/.bower.json +31 -16
- data/lib/api_browser/app/bower_components/bootstrap-sass/CHANGELOG.md +108 -0
- data/lib/api_browser/app/bower_components/bootstrap-sass/CONTRIBUTING.md +55 -37
- data/lib/api_browser/app/bower_components/bootstrap-sass/README.md +147 -206
- data/lib/api_browser/app/bower_components/bootstrap-sass/bower.json +19 -8
- data/lib/api_browser/app/bower_components/bootstrap-sass/{dist/fonts → vendor/assets/fonts/bootstrap}/glyphicons-halflings-regular.eot +0 -0
- data/lib/api_browser/app/bower_components/bootstrap-sass/{dist/fonts → vendor/assets/fonts/bootstrap}/glyphicons-halflings-regular.svg +0 -0
- data/lib/api_browser/app/bower_components/bootstrap-sass/{dist/fonts → vendor/assets/fonts/bootstrap}/glyphicons-halflings-regular.ttf +0 -0
- data/lib/api_browser/app/bower_components/bootstrap-sass/{dist/fonts → vendor/assets/fonts/bootstrap}/glyphicons-halflings-regular.woff +0 -0
- data/lib/api_browser/app/bower_components/bootstrap-sass/vendor/assets/javascripts/bootstrap.js +12 -0
- data/lib/api_browser/app/bower_components/bootstrap-sass/{js → vendor/assets/javascripts/bootstrap}/affix.js +1 -1
- data/lib/api_browser/app/bower_components/bootstrap-sass/{js → vendor/assets/javascripts/bootstrap}/alert.js +1 -1
- data/lib/api_browser/app/bower_components/bootstrap-sass/{js → vendor/assets/javascripts/bootstrap}/button.js +11 -5
- data/lib/api_browser/app/bower_components/bootstrap-sass/{js → vendor/assets/javascripts/bootstrap}/carousel.js +5 -5
- data/lib/api_browser/app/bower_components/bootstrap-sass/{js → vendor/assets/javascripts/bootstrap}/collapse.js +1 -1
- data/lib/api_browser/app/bower_components/bootstrap-sass/{js → vendor/assets/javascripts/bootstrap}/dropdown.js +5 -5
- data/lib/api_browser/app/bower_components/bootstrap-sass/{js → vendor/assets/javascripts/bootstrap}/modal.js +1 -1
- data/lib/api_browser/app/bower_components/bootstrap-sass/{js → vendor/assets/javascripts/bootstrap}/popover.js +1 -1
- data/lib/api_browser/app/bower_components/bootstrap-sass/{js → vendor/assets/javascripts/bootstrap}/scrollspy.js +2 -2
- data/lib/api_browser/app/bower_components/bootstrap-sass/{js → vendor/assets/javascripts/bootstrap}/tab.js +1 -1
- data/lib/api_browser/app/bower_components/bootstrap-sass/{js → vendor/assets/javascripts/bootstrap}/tooltip.js +1 -1
- data/lib/api_browser/app/bower_components/bootstrap-sass/{js → vendor/assets/javascripts/bootstrap}/transition.js +1 -1
- data/lib/api_browser/app/bower_components/bootstrap-sass/vendor/assets/stylesheets/bootstrap.scss +1 -0
- data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_alerts.scss +0 -0
- data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_badges.scss +6 -6
- data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_breadcrumbs.scss +0 -0
- data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_button-groups.scss +7 -33
- data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_buttons.scss +2 -5
- data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_carousel.scss +1 -0
- data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_close.scss +0 -0
- data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_code.scss +0 -0
- data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_component-animations.scss +0 -0
- data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_dropdowns.scss +3 -8
- data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_forms.scss +11 -0
- data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_glyphicons.scss +5 -5
- data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_grid.scss +12 -26
- data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_input-groups.scss +1 -1
- data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_jumbotron.scss +8 -2
- data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_labels.scss +6 -0
- data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_list-group.scss +0 -0
- data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_media.scss +0 -0
- data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_mixins.scss +38 -51
- data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_modals.scss +2 -5
- data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_navbar.scss +41 -53
- data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_navs.scss +0 -20
- data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_normalize.scss +0 -0
- data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_pager.scss +0 -0
- data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_pagination.scss +0 -0
- data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_panels.scss +11 -1
- data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_popovers.scss +0 -0
- data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_print.scss +0 -0
- data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_progress-bars.scss +0 -12
- data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_responsive-utilities.scss +0 -0
- data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_scaffolding.scss +0 -0
- data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_tables.scss +5 -18
- data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_theme.scss +2 -2
- data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_thumbnails.scss +9 -3
- data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_tooltip.scss +0 -0
- data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_type.scss +54 -52
- data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_utilities.scss +0 -0
- data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_variables.scss +20 -11
- data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/_wells.scss +0 -0
- data/lib/api_browser/app/bower_components/bootstrap-sass/{lib → vendor/assets/stylesheets/bootstrap}/bootstrap.scss +0 -0
- data/lib/api_browser/app/bower_components/lodash/.bower.json +9 -13
- data/lib/api_browser/app/bower_components/lodash/LICENSE.txt +3 -3
- data/lib/api_browser/app/bower_components/lodash/bower.json +4 -7
- data/lib/api_browser/app/bower_components/lodash/lodash.js +12235 -0
- data/lib/api_browser/app/bower_components/lodash/lodash.min.js +98 -0
- data/lib/api_browser/app/index.html +0 -1
- data/lib/api_browser/app/js/app.js +2 -5
- data/lib/api_browser/app/js/controllers/action.js +21 -37
- data/lib/api_browser/app/js/controllers/controller.js +23 -1
- data/lib/api_browser/app/js/controllers/menu.js +46 -14
- data/lib/api_browser/app/js/controllers/type.js +2 -9
- data/lib/api_browser/app/js/directives/attribute_description.js +15 -5
- data/lib/api_browser/app/js/directives/attribute_table.js +6 -6
- data/lib/api_browser/app/js/directives/fixed_if_fits.js +20 -0
- data/lib/api_browser/app/js/directives/no_container.js +6 -6
- data/lib/api_browser/app/js/directives/type_placeholder.js +21 -0
- data/lib/api_browser/app/js/factories/Configuration.js +13 -0
- data/lib/api_browser/app/js/factories/Documentation.js +0 -3
- data/lib/api_browser/app/js/factories/normalize_attributes.js +19 -0
- data/lib/api_browser/app/js/factories/template_for.js +113 -0
- data/lib/api_browser/app/sass/modules/_body.scss +26 -4
- data/lib/api_browser/app/sass/modules/_sidebar.scss +68 -1
- data/lib/api_browser/app/sass/praxis.scss +1 -5
- data/lib/api_browser/app/sass/variables/_bootstrap-variables.scss +13 -4
- data/lib/api_browser/app/views/action.html +13 -17
- data/lib/api_browser/app/views/controller.html +32 -4
- data/lib/api_browser/app/views/directives/attribute_description.html +1 -1
- data/lib/api_browser/app/views/directives/attribute_description/{_default.html → default.html} +0 -0
- data/lib/api_browser/app/views/directives/attribute_description/example.html +13 -0
- data/lib/api_browser/app/views/directives/attribute_description/headers.html +8 -0
- data/lib/api_browser/app/views/directives/attribute_description/member_options.html +4 -0
- data/lib/api_browser/app/views/directives/attribute_description/values.html +14 -0
- data/lib/api_browser/app/views/directives/attribute_table.html +2 -2
- data/lib/api_browser/app/views/home.html +1 -3
- data/lib/api_browser/app/views/layout.html +3 -36
- data/lib/api_browser/app/views/menu.html +45 -0
- data/lib/api_browser/app/views/navbar.html +1 -1
- data/lib/api_browser/app/views/type.html +2 -2
- data/lib/api_browser/app/views/type/{_details.html → details.html} +6 -6
- data/lib/api_browser/app/views/types/embedded/default.html +10 -0
- data/lib/api_browser/app/views/types/embedded/links.html +11 -0
- data/lib/api_browser/app/views/types/embedded/struct.html +2 -0
- data/lib/api_browser/app/views/types/label/link.html +1 -0
- data/lib/api_browser/app/views/types/label/primitive.html +1 -0
- data/lib/api_browser/app/views/types/label/primitive_collection.html +1 -0
- data/lib/api_browser/app/views/types/label/type.html +1 -0
- data/lib/api_browser/app/views/types/label/type_collection.html +1 -0
- data/lib/api_browser/app/views/{directives/request_body/_default.html → types/standalone/default.html} +1 -1
- data/lib/api_browser/app/views/types/standalone/struct.html +1 -0
- data/lib/api_browser/bower.json +9 -9
- data/lib/api_browser/package.json +1 -1
- data/lib/praxis.rb +10 -4
- data/lib/praxis/action_definition.rb +16 -4
- data/lib/praxis/action_definition/headers_dsl_compiler.rb +5 -2
- data/lib/praxis/api_definition.rb +3 -1
- data/lib/praxis/api_general_info.rb +49 -5
- data/lib/praxis/application.rb +12 -4
- data/lib/praxis/bootloader.rb +1 -0
- data/lib/praxis/bootloader_stages/environment.rb +2 -0
- data/lib/praxis/bootloader_stages/routing.rb +1 -1
- data/lib/praxis/bootloader_stages/subgroup_loader.rb +1 -0
- data/lib/praxis/exceptions/validation.rb +7 -0
- data/lib/praxis/handlers/plain.rb +16 -0
- data/lib/praxis/handlers/xml.rb +4 -4
- data/lib/praxis/links.rb +13 -3
- data/lib/praxis/media_type_identifier.rb +3 -0
- data/lib/praxis/multipart/parser.rb +41 -48
- data/lib/praxis/multipart/part.rb +196 -3
- data/lib/praxis/request.rb +14 -11
- data/lib/praxis/request_stages/request_stage.rb +4 -0
- data/lib/praxis/request_stages/response.rb +10 -9
- data/lib/praxis/request_stages/validate.rb +1 -7
- data/lib/praxis/request_stages/validate_params_and_headers.rb +30 -5
- data/lib/praxis/request_stages/validate_payload.rb +14 -5
- data/lib/praxis/resource_definition.rb +117 -15
- data/lib/praxis/response.rb +6 -5
- data/lib/praxis/response_definition.rb +51 -5
- data/lib/praxis/responses/http.rb +5 -0
- data/lib/praxis/responses/multipart_ok.rb +51 -0
- data/lib/praxis/responses/validation_error.rb +7 -7
- data/lib/praxis/restful_doc_generator.rb +9 -4
- data/lib/praxis/route.rb +3 -2
- data/lib/praxis/router.rb +26 -16
- data/lib/praxis/router/rack.rb +51 -0
- data/lib/praxis/router/simple.rb +146 -0
- data/lib/praxis/routing_config.rb +2 -2
- data/lib/praxis/trait.rb +1 -1
- data/lib/praxis/types/fuzzy_hash.rb +49 -0
- data/lib/praxis/types/media_type_common.rb +1 -1
- data/lib/praxis/types/multipart.rb +47 -12
- data/lib/praxis/types/multipart_array.rb +320 -0
- data/lib/praxis/types/multipart_array/part_definition.rb +52 -0
- data/lib/praxis/validation_handler.rb +10 -0
- data/lib/praxis/version.rb +2 -2
- data/praxis.gemspec +3 -3
- data/spec/api_browser/directives/type_placeholder_spec.js +134 -0
- data/spec/api_browser/factories/normalize_attributes_spec.js +97 -0
- data/spec/api_browser/factories/template_for_spec.js +67 -0
- data/spec/functional_spec.rb +111 -45
- data/spec/praxis/action_definition_spec.rb +31 -7
- data/spec/praxis/api_definition_spec.rb +2 -2
- data/spec/praxis/api_general_info_spec.rb +25 -0
- data/spec/praxis/application_spec.rb +24 -11
- data/spec/praxis/handlers/xml_spec.rb +55 -33
- data/spec/praxis/links_spec.rb +18 -1
- data/spec/praxis/media_type_collection_spec.rb +1 -1
- data/spec/praxis/media_type_spec.rb +2 -2
- data/spec/praxis/multipart/parser_spec.rb +21 -13
- data/spec/praxis/plugins/praxis_mapper_plugin_spec.rb +1 -1
- data/spec/praxis/request_spec.rb +52 -24
- data/spec/praxis/{request_stages_action_spec.rb → request_stages/action_spec.rb} +1 -1
- data/spec/praxis/{request_stage_spec.rb → request_stages/request_stage_spec.rb} +0 -0
- data/spec/praxis/{request_stages_validate_spec.rb → request_stages/validate_spec.rb} +1 -1
- data/spec/praxis/resource_definition_spec.rb +30 -4
- data/spec/praxis/response_definition_spec.rb +60 -19
- data/spec/praxis/response_spec.rb +2 -2
- data/spec/praxis/responses/validation_error_spec.rb +33 -16
- data/spec/praxis/route_spec.rb +4 -2
- data/spec/praxis/router_spec.rb +28 -12
- data/spec/praxis/routing_config_spec.rb +11 -5
- data/spec/praxis/types/collection_spec.rb +1 -1
- data/spec/praxis/types/fuzzy_hash_spec.rb +20 -0
- data/spec/praxis/types/multipart_array/part_definition_spec.rb +5 -0
- data/spec/praxis/types/multipart_array_spec.rb +334 -0
- data/spec/praxis/types/multipart_spec.rb +14 -5
- data/spec/spec_app/app/controllers/instances.rb +20 -10
- data/spec/spec_app/app/controllers/volumes.rb +8 -4
- data/spec/spec_app/app/responses/bulk_response.rb +0 -6
- data/spec/spec_app/config/environment.rb +13 -0
- data/spec/spec_app/design/api.rb +7 -10
- data/spec/spec_app/design/media_types/instance.rb +3 -1
- data/spec/spec_app/design/resources/instances.rb +50 -41
- data/spec/spec_app/design/resources/volume_snapshots.rb +39 -0
- data/spec/spec_app/design/resources/volumes.rb +11 -6
- data/spec/spec_helper.rb +3 -1
- metadata +125 -218
- data/lib/api_browser/app/bower_components/angular-ui-router/src/compat.js +0 -146
- data/lib/api_browser/app/bower_components/bootstrap-sass/CNAME +0 -1
- data/lib/api_browser/app/bower_components/bootstrap-sass/DOCS-LICENSE +0 -319
- data/lib/api_browser/app/bower_components/bootstrap-sass/Gemfile +0 -5
- data/lib/api_browser/app/bower_components/bootstrap-sass/Gemfile.lock +0 -14
- data/lib/api_browser/app/bower_components/bootstrap-sass/Gruntfile.js +0 -244
- data/lib/api_browser/app/bower_components/bootstrap-sass/LICENSE +0 -176
- data/lib/api_browser/app/bower_components/bootstrap-sass/LICENSE-MIT +0 -21
- data/lib/api_browser/app/bower_components/bootstrap-sass/Rakefile +0 -44
- data/lib/api_browser/app/bower_components/bootstrap-sass/_config.yml +0 -25
- data/lib/api_browser/app/bower_components/bootstrap-sass/_includes/ads.html +0 -1
- data/lib/api_browser/app/bower_components/bootstrap-sass/_includes/footer.html +0 -34
- data/lib/api_browser/app/bower_components/bootstrap-sass/_includes/header.html +0 -42
- data/lib/api_browser/app/bower_components/bootstrap-sass/_includes/nav-about.html +0 -12
- data/lib/api_browser/app/bower_components/bootstrap-sass/_includes/nav-components.html +0 -137
- data/lib/api_browser/app/bower_components/bootstrap-sass/_includes/nav-css.html +0 -99
- data/lib/api_browser/app/bower_components/bootstrap-sass/_includes/nav-customize.html +0 -40
- data/lib/api_browser/app/bower_components/bootstrap-sass/_includes/nav-getting-started.html +0 -44
- data/lib/api_browser/app/bower_components/bootstrap-sass/_includes/nav-javascript.html +0 -88
- data/lib/api_browser/app/bower_components/bootstrap-sass/_includes/nav-main.html +0 -37
- data/lib/api_browser/app/bower_components/bootstrap-sass/_includes/old-bs-docs.html +0 -8
- data/lib/api_browser/app/bower_components/bootstrap-sass/_includes/social-buttons.html +0 -16
- data/lib/api_browser/app/bower_components/bootstrap-sass/_layouts/default.html +0 -79
- data/lib/api_browser/app/bower_components/bootstrap-sass/_layouts/home.html +0 -47
- data/lib/api_browser/app/bower_components/bootstrap-sass/about.html +0 -93
- data/lib/api_browser/app/bower_components/bootstrap-sass/browserstack.json +0 -37
- data/lib/api_browser/app/bower_components/bootstrap-sass/components.html +0 -3689
- data/lib/api_browser/app/bower_components/bootstrap-sass/composer.json +0 -28
- data/lib/api_browser/app/bower_components/bootstrap-sass/css.html +0 -2674
- data/lib/api_browser/app/bower_components/bootstrap-sass/customize.html +0 -1715
- data/lib/api_browser/app/bower_components/bootstrap-sass/dist/css/bootstrap-theme.css +0 -427
- data/lib/api_browser/app/bower_components/bootstrap-sass/dist/css/bootstrap-theme.min.css +0 -1
- data/lib/api_browser/app/bower_components/bootstrap-sass/dist/css/bootstrap.css +0 -6350
- data/lib/api_browser/app/bower_components/bootstrap-sass/dist/css/bootstrap.min.css +0 -1
- data/lib/api_browser/app/bower_components/bootstrap-sass/dist/js/bootstrap.js +0 -2002
- data/lib/api_browser/app/bower_components/bootstrap-sass/dist/js/bootstrap.min.js +0 -9
- data/lib/api_browser/app/bower_components/bootstrap-sass/docs-assets/css/docs.css +0 -1195
- data/lib/api_browser/app/bower_components/bootstrap-sass/docs-assets/css/pygments-manni.css +0 -66
- data/lib/api_browser/app/bower_components/bootstrap-sass/docs-assets/ico/apple-touch-icon-144-precomposed.png +0 -0
- data/lib/api_browser/app/bower_components/bootstrap-sass/docs-assets/ico/favicon.png +0 -0
- data/lib/api_browser/app/bower_components/bootstrap-sass/docs-assets/js/application.js +0 -103
- data/lib/api_browser/app/bower_components/bootstrap-sass/docs-assets/js/customizer.js +0 -332
- data/lib/api_browser/app/bower_components/bootstrap-sass/docs-assets/js/filesaver.js +0 -169
- data/lib/api_browser/app/bower_components/bootstrap-sass/docs-assets/js/holder.js +0 -404
- data/lib/api_browser/app/bower_components/bootstrap-sass/docs-assets/js/ie8-responsive-file-warning.js +0 -12
- data/lib/api_browser/app/bower_components/bootstrap-sass/docs-assets/js/jszip.js +0 -1467
- data/lib/api_browser/app/bower_components/bootstrap-sass/docs-assets/js/less.js +0 -9
- data/lib/api_browser/app/bower_components/bootstrap-sass/docs-assets/js/raw-files.js +0 -3
- data/lib/api_browser/app/bower_components/bootstrap-sass/docs-assets/js/uglify.js +0 -14
- data/lib/api_browser/app/bower_components/bootstrap-sass/examples/carousel/carousel.css +0 -148
- data/lib/api_browser/app/bower_components/bootstrap-sass/examples/carousel/index.html +0 -206
- data/lib/api_browser/app/bower_components/bootstrap-sass/examples/grid/grid.css +0 -28
- data/lib/api_browser/app/bower_components/bootstrap-sass/examples/grid/index.html +0 -148
- data/lib/api_browser/app/bower_components/bootstrap-sass/examples/jumbotron-narrow/index.html +0 -82
- data/lib/api_browser/app/bower_components/bootstrap-sass/examples/jumbotron-narrow/jumbotron-narrow.css +0 -79
- data/lib/api_browser/app/bower_components/bootstrap-sass/examples/jumbotron/index.html +0 -99
- data/lib/api_browser/app/bower_components/bootstrap-sass/examples/jumbotron/jumbotron.css +0 -5
- data/lib/api_browser/app/bower_components/bootstrap-sass/examples/justified-nav/index.html +0 -83
- data/lib/api_browser/app/bower_components/bootstrap-sass/examples/justified-nav/justified-nav.css +0 -88
- data/lib/api_browser/app/bower_components/bootstrap-sass/examples/navbar-fixed-top/index.html +0 -91
- data/lib/api_browser/app/bower_components/bootstrap-sass/examples/navbar-fixed-top/navbar-fixed-top.css +0 -4
- data/lib/api_browser/app/bower_components/bootstrap-sass/examples/navbar-static-top/index.html +0 -92
- data/lib/api_browser/app/bower_components/bootstrap-sass/examples/navbar-static-top/navbar-static-top.css +0 -7
- data/lib/api_browser/app/bower_components/bootstrap-sass/examples/navbar/index.html +0 -88
- data/lib/api_browser/app/bower_components/bootstrap-sass/examples/navbar/navbar.css +0 -8
- data/lib/api_browser/app/bower_components/bootstrap-sass/examples/non-responsive/index.html +0 -101
- data/lib/api_browser/app/bower_components/bootstrap-sass/examples/non-responsive/non-responsive.css +0 -116
- data/lib/api_browser/app/bower_components/bootstrap-sass/examples/offcanvas/index.html +0 -130
- data/lib/api_browser/app/bower_components/bootstrap-sass/examples/offcanvas/offcanvas.css +0 -50
- data/lib/api_browser/app/bower_components/bootstrap-sass/examples/offcanvas/offcanvas.js +0 -5
- data/lib/api_browser/app/bower_components/bootstrap-sass/examples/screenshots/carousel.jpg +0 -0
- data/lib/api_browser/app/bower_components/bootstrap-sass/examples/screenshots/grid.jpg +0 -0
- data/lib/api_browser/app/bower_components/bootstrap-sass/examples/screenshots/jumbotron-narrow.jpg +0 -0
- data/lib/api_browser/app/bower_components/bootstrap-sass/examples/screenshots/jumbotron.jpg +0 -0
- data/lib/api_browser/app/bower_components/bootstrap-sass/examples/screenshots/justified-nav.jpg +0 -0
- data/lib/api_browser/app/bower_components/bootstrap-sass/examples/screenshots/navbar-fixed.jpg +0 -0
- data/lib/api_browser/app/bower_components/bootstrap-sass/examples/screenshots/navbar-static.jpg +0 -0
- data/lib/api_browser/app/bower_components/bootstrap-sass/examples/screenshots/navbar.jpg +0 -0
- data/lib/api_browser/app/bower_components/bootstrap-sass/examples/screenshots/non-responsive.jpg +0 -0
- data/lib/api_browser/app/bower_components/bootstrap-sass/examples/screenshots/offcanvas.jpg +0 -0
- data/lib/api_browser/app/bower_components/bootstrap-sass/examples/screenshots/sign-in.jpg +0 -0
- data/lib/api_browser/app/bower_components/bootstrap-sass/examples/screenshots/starter-template.jpg +0 -0
- data/lib/api_browser/app/bower_components/bootstrap-sass/examples/screenshots/sticky-footer-navbar.jpg +0 -0
- data/lib/api_browser/app/bower_components/bootstrap-sass/examples/screenshots/sticky-footer.jpg +0 -0
- data/lib/api_browser/app/bower_components/bootstrap-sass/examples/screenshots/theme.jpg +0 -0
- data/lib/api_browser/app/bower_components/bootstrap-sass/examples/signin/index.html +0 -50
- data/lib/api_browser/app/bower_components/bootstrap-sass/examples/signin/signin.css +0 -40
- data/lib/api_browser/app/bower_components/bootstrap-sass/examples/starter-template/index.html +0 -68
- data/lib/api_browser/app/bower_components/bootstrap-sass/examples/starter-template/starter-template.css +0 -7
- data/lib/api_browser/app/bower_components/bootstrap-sass/examples/sticky-footer-navbar/index.html +0 -91
- data/lib/api_browser/app/bower_components/bootstrap-sass/examples/sticky-footer-navbar/sticky-footer-navbar.css +0 -45
- data/lib/api_browser/app/bower_components/bootstrap-sass/examples/sticky-footer/index.html +0 -55
- data/lib/api_browser/app/bower_components/bootstrap-sass/examples/sticky-footer/sticky-footer.css +0 -38
- data/lib/api_browser/app/bower_components/bootstrap-sass/examples/theme/index.html +0 -384
- data/lib/api_browser/app/bower_components/bootstrap-sass/examples/theme/theme.css +0 -14
- data/lib/api_browser/app/bower_components/bootstrap-sass/fonts/glyphicons-halflings-regular.eot +0 -0
- data/lib/api_browser/app/bower_components/bootstrap-sass/fonts/glyphicons-halflings-regular.svg +0 -229
- data/lib/api_browser/app/bower_components/bootstrap-sass/fonts/glyphicons-halflings-regular.ttf +0 -0
- data/lib/api_browser/app/bower_components/bootstrap-sass/fonts/glyphicons-halflings-regular.woff +0 -0
- data/lib/api_browser/app/bower_components/bootstrap-sass/getting-started.html +0 -1021
- data/lib/api_browser/app/bower_components/bootstrap-sass/index.html +0 -16
- data/lib/api_browser/app/bower_components/bootstrap-sass/javascript.html +0 -1983
- data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/index.html +0 -52
- data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/unit/affix.js +0 -25
- data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/unit/alert.js +0 -62
- data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/unit/button.js +0 -116
- data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/unit/carousel.js +0 -87
- data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/unit/collapse.js +0 -164
- data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/unit/dropdown.js +0 -219
- data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/unit/modal.js +0 -196
- data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/unit/phantom.js +0 -69
- data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/unit/popover.js +0 -133
- data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/unit/scrollspy.js +0 -37
- data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/unit/tab.js +0 -86
- data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/unit/tooltip.js +0 -437
- data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/unit/transition.js +0 -13
- data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/vendor/jquery.js +0 -6
- data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/vendor/qunit.css +0 -232
- data/lib/api_browser/app/bower_components/bootstrap-sass/js/tests/vendor/qunit.js +0 -1510
- data/lib/api_browser/app/bower_components/bootstrap-sass/package.json +0 -40
- data/lib/api_browser/app/bower_components/lodash/dist/lodash.compat.js +0 -7157
- data/lib/api_browser/app/bower_components/lodash/dist/lodash.compat.min.js +0 -61
- data/lib/api_browser/app/bower_components/lodash/dist/lodash.js +0 -6785
- data/lib/api_browser/app/bower_components/lodash/dist/lodash.min.js +0 -56
- data/lib/api_browser/app/bower_components/lodash/dist/lodash.underscore.js +0 -4979
- data/lib/api_browser/app/bower_components/lodash/dist/lodash.underscore.min.js +0 -39
- data/lib/api_browser/app/js/directives/attribute_table_row.js +0 -17
- data/lib/api_browser/app/js/directives/request_body.js +0 -25
- data/lib/api_browser/app/js/directives/request_headers.js +0 -17
- data/lib/api_browser/app/js/directives/request_parameters.js +0 -17
- data/lib/api_browser/app/js/directives/type_label.js +0 -52
- data/lib/api_browser/app/js/factories/PayloadTemplates.js +0 -10
- data/lib/api_browser/app/js/factories/TemplateProvider.js +0 -45
- data/lib/api_browser/app/js/factories/TypeTemplates.js +0 -11
- data/lib/api_browser/app/views/directives/attribute_description/_example.html +0 -13
- data/lib/api_browser/app/views/directives/attribute_description/_headers.html +0 -8
- data/lib/api_browser/app/views/directives/attribute_table_row/_default.html +0 -10
- data/lib/api_browser/app/views/directives/attribute_table_row/_links.html +0 -11
- data/lib/api_browser/app/views/directives/attribute_table_row/_struct.html +0 -2
- data/lib/api_browser/app/views/directives/request_body/_struct.html +0 -1
- data/lib/api_browser/app/views/resource/_actions.html +0 -27
@@ -3,6 +3,7 @@
|
|
3
3
|
* @name ui.router.router.$urlRouterProvider
|
4
4
|
*
|
5
5
|
* @requires ui.router.util.$urlMatcherFactoryProvider
|
6
|
+
* @requires $locationProvider
|
6
7
|
*
|
7
8
|
* @description
|
8
9
|
* `$urlRouterProvider` has the responsibility of watching `$location`.
|
@@ -13,10 +14,9 @@
|
|
13
14
|
* There are several methods on `$urlRouterProvider` that make it useful to use directly
|
14
15
|
* in your module config.
|
15
16
|
*/
|
16
|
-
$UrlRouterProvider.$inject = ['$urlMatcherFactoryProvider'];
|
17
|
-
function $UrlRouterProvider(
|
18
|
-
var rules = [],
|
19
|
-
otherwise = null;
|
17
|
+
$UrlRouterProvider.$inject = ['$locationProvider', '$urlMatcherFactoryProvider'];
|
18
|
+
function $UrlRouterProvider( $locationProvider, $urlMatcherFactory) {
|
19
|
+
var rules = [], otherwise = null, interceptDeferred = false, listener;
|
20
20
|
|
21
21
|
// Returns a string that is a prefix of all strings matching the RegExp
|
22
22
|
function regExpPrefix(re) {
|
@@ -37,7 +37,7 @@ function $UrlRouterProvider( $urlMatcherFactory) {
|
|
37
37
|
* @methodOf ui.router.router.$urlRouterProvider
|
38
38
|
*
|
39
39
|
* @description
|
40
|
-
* Defines rules that are used by `$urlRouterProvider to find matches for
|
40
|
+
* Defines rules that are used by `$urlRouterProvider` to find matches for
|
41
41
|
* specific URLs.
|
42
42
|
*
|
43
43
|
* @example
|
@@ -60,14 +60,13 @@ function $UrlRouterProvider( $urlMatcherFactory) {
|
|
60
60
|
* @param {object} rule Handler function that takes `$injector` and `$location`
|
61
61
|
* services as arguments. You can use them to return a valid path as a string.
|
62
62
|
*
|
63
|
-
* @return {object}
|
63
|
+
* @return {object} `$urlRouterProvider` - `$urlRouterProvider` instance
|
64
64
|
*/
|
65
|
-
this.rule =
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
};
|
65
|
+
this.rule = function (rule) {
|
66
|
+
if (!isFunction(rule)) throw new Error("'rule' must be a function");
|
67
|
+
rules.push(rule);
|
68
|
+
return this;
|
69
|
+
};
|
71
70
|
|
72
71
|
/**
|
73
72
|
* @ngdoc object
|
@@ -75,7 +74,7 @@ function $UrlRouterProvider( $urlMatcherFactory) {
|
|
75
74
|
* @methodOf ui.router.router.$urlRouterProvider
|
76
75
|
*
|
77
76
|
* @description
|
78
|
-
* Defines a path that is used when an
|
77
|
+
* Defines a path that is used when an invalid route is requested.
|
79
78
|
*
|
80
79
|
* @example
|
81
80
|
* <pre>
|
@@ -89,27 +88,26 @@ function $UrlRouterProvider( $urlMatcherFactory) {
|
|
89
88
|
*
|
90
89
|
* // Example of using function rule as param
|
91
90
|
* $urlRouterProvider.otherwise(function ($injector, $location) {
|
92
|
-
*
|
91
|
+
* return '/a/valid/url';
|
93
92
|
* });
|
94
93
|
* });
|
95
94
|
* </pre>
|
96
95
|
*
|
97
96
|
* @param {string|object} rule The url path you want to redirect to or a function
|
98
97
|
* rule that returns the url path. The function version is passed two params:
|
99
|
-
* `$injector` and `$location` services.
|
98
|
+
* `$injector` and `$location` services, and must return a url string.
|
100
99
|
*
|
101
|
-
* @return {object}
|
100
|
+
* @return {object} `$urlRouterProvider` - `$urlRouterProvider` instance
|
102
101
|
*/
|
103
|
-
this.otherwise =
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
};
|
102
|
+
this.otherwise = function (rule) {
|
103
|
+
if (isString(rule)) {
|
104
|
+
var redirect = rule;
|
105
|
+
rule = function () { return redirect; };
|
106
|
+
}
|
107
|
+
else if (!isFunction(rule)) throw new Error("'rule' must be a function");
|
108
|
+
otherwise = rule;
|
109
|
+
return this;
|
110
|
+
};
|
113
111
|
|
114
112
|
|
115
113
|
function handleIfMatch($injector, handler, match) {
|
@@ -125,8 +123,8 @@ function $UrlRouterProvider( $urlMatcherFactory) {
|
|
125
123
|
*
|
126
124
|
* @description
|
127
125
|
* Registers a handler for a given url matching. if handle is a string, it is
|
128
|
-
* treated as a redirect, and is interpolated according to the
|
129
|
-
* (i.e. like String.replace() for RegExp
|
126
|
+
* treated as a redirect, and is interpolated according to the syntax of match
|
127
|
+
* (i.e. like `String.replace()` for `RegExp`, or like a `UrlMatcher` pattern otherwise).
|
130
128
|
*
|
131
129
|
* If the handler is a function, it is injectable. It gets invoked if `$location`
|
132
130
|
* matches. You have the option of inject the match object as `$match`.
|
@@ -155,52 +153,102 @@ function $UrlRouterProvider( $urlMatcherFactory) {
|
|
155
153
|
* @param {string|object} what The incoming path that you want to redirect.
|
156
154
|
* @param {string|object} handler The path you want to redirect your user to.
|
157
155
|
*/
|
158
|
-
this.when =
|
159
|
-
|
160
|
-
|
161
|
-
if (isString(what)) what = $urlMatcherFactory.compile(what);
|
162
|
-
|
163
|
-
if (!handlerIsString && !isFunction(handler) && !isArray(handler))
|
164
|
-
throw new Error("invalid 'handler' in when()");
|
165
|
-
|
166
|
-
var strategies = {
|
167
|
-
matcher: function (what, handler) {
|
168
|
-
if (handlerIsString) {
|
169
|
-
redirect = $urlMatcherFactory.compile(handler);
|
170
|
-
handler = ['$match', function ($match) { return redirect.format($match); }];
|
171
|
-
}
|
172
|
-
return extend(function ($injector, $location) {
|
173
|
-
return handleIfMatch($injector, handler, what.exec($location.path(), $location.search()));
|
174
|
-
}, {
|
175
|
-
prefix: isString(what.prefix) ? what.prefix : ''
|
176
|
-
});
|
177
|
-
},
|
178
|
-
regex: function (what, handler) {
|
179
|
-
if (what.global || what.sticky) throw new Error("when() RegExp must not be global or sticky");
|
180
|
-
|
181
|
-
if (handlerIsString) {
|
182
|
-
redirect = handler;
|
183
|
-
handler = ['$match', function ($match) { return interpolate(redirect, $match); }];
|
184
|
-
}
|
185
|
-
return extend(function ($injector, $location) {
|
186
|
-
return handleIfMatch($injector, handler, what.exec($location.path()));
|
187
|
-
}, {
|
188
|
-
prefix: regExpPrefix(what)
|
189
|
-
});
|
190
|
-
}
|
191
|
-
};
|
156
|
+
this.when = function (what, handler) {
|
157
|
+
var redirect, handlerIsString = isString(handler);
|
158
|
+
if (isString(what)) what = $urlMatcherFactory.compile(what);
|
192
159
|
|
193
|
-
|
160
|
+
if (!handlerIsString && !isFunction(handler) && !isArray(handler))
|
161
|
+
throw new Error("invalid 'handler' in when()");
|
194
162
|
|
195
|
-
|
196
|
-
|
197
|
-
|
163
|
+
var strategies = {
|
164
|
+
matcher: function (what, handler) {
|
165
|
+
if (handlerIsString) {
|
166
|
+
redirect = $urlMatcherFactory.compile(handler);
|
167
|
+
handler = ['$match', function ($match) { return redirect.format($match); }];
|
198
168
|
}
|
199
|
-
|
169
|
+
return extend(function ($injector, $location) {
|
170
|
+
return handleIfMatch($injector, handler, what.exec($location.path(), $location.search()));
|
171
|
+
}, {
|
172
|
+
prefix: isString(what.prefix) ? what.prefix : ''
|
173
|
+
});
|
174
|
+
},
|
175
|
+
regex: function (what, handler) {
|
176
|
+
if (what.global || what.sticky) throw new Error("when() RegExp must not be global or sticky");
|
200
177
|
|
201
|
-
|
178
|
+
if (handlerIsString) {
|
179
|
+
redirect = handler;
|
180
|
+
handler = ['$match', function ($match) { return interpolate(redirect, $match); }];
|
181
|
+
}
|
182
|
+
return extend(function ($injector, $location) {
|
183
|
+
return handleIfMatch($injector, handler, what.exec($location.path()));
|
184
|
+
}, {
|
185
|
+
prefix: regExpPrefix(what)
|
186
|
+
});
|
187
|
+
}
|
202
188
|
};
|
203
189
|
|
190
|
+
var check = { matcher: $urlMatcherFactory.isMatcher(what), regex: what instanceof RegExp };
|
191
|
+
|
192
|
+
for (var n in check) {
|
193
|
+
if (check[n]) return this.rule(strategies[n](what, handler));
|
194
|
+
}
|
195
|
+
|
196
|
+
throw new Error("invalid 'what' in when()");
|
197
|
+
};
|
198
|
+
|
199
|
+
/**
|
200
|
+
* @ngdoc function
|
201
|
+
* @name ui.router.router.$urlRouterProvider#deferIntercept
|
202
|
+
* @methodOf ui.router.router.$urlRouterProvider
|
203
|
+
*
|
204
|
+
* @description
|
205
|
+
* Disables (or enables) deferring location change interception.
|
206
|
+
*
|
207
|
+
* If you wish to customize the behavior of syncing the URL (for example, if you wish to
|
208
|
+
* defer a transition but maintain the current URL), call this method at configuration time.
|
209
|
+
* Then, at run time, call `$urlRouter.listen()` after you have configured your own
|
210
|
+
* `$locationChangeSuccess` event handler.
|
211
|
+
*
|
212
|
+
* @example
|
213
|
+
* <pre>
|
214
|
+
* var app = angular.module('app', ['ui.router.router']);
|
215
|
+
*
|
216
|
+
* app.config(function ($urlRouterProvider) {
|
217
|
+
*
|
218
|
+
* // Prevent $urlRouter from automatically intercepting URL changes;
|
219
|
+
* // this allows you to configure custom behavior in between
|
220
|
+
* // location changes and route synchronization:
|
221
|
+
* $urlRouterProvider.deferIntercept();
|
222
|
+
*
|
223
|
+
* }).run(function ($rootScope, $urlRouter, UserService) {
|
224
|
+
*
|
225
|
+
* $rootScope.$on('$locationChangeSuccess', function(e) {
|
226
|
+
* // UserService is an example service for managing user state
|
227
|
+
* if (UserService.isLoggedIn()) return;
|
228
|
+
*
|
229
|
+
* // Prevent $urlRouter's default handler from firing
|
230
|
+
* e.preventDefault();
|
231
|
+
*
|
232
|
+
* UserService.handleLogin().then(function() {
|
233
|
+
* // Once the user has logged in, sync the current URL
|
234
|
+
* // to the router:
|
235
|
+
* $urlRouter.sync();
|
236
|
+
* });
|
237
|
+
* });
|
238
|
+
*
|
239
|
+
* // Configures $urlRouter's listener *after* your custom listener
|
240
|
+
* $urlRouter.listen();
|
241
|
+
* });
|
242
|
+
* </pre>
|
243
|
+
*
|
244
|
+
* @param {boolean} defer Indicates whether to defer location change interception. Passing
|
245
|
+
no parameter is equivalent to `true`.
|
246
|
+
*/
|
247
|
+
this.deferIntercept = function (defer) {
|
248
|
+
if (defer === undefined) defer = true;
|
249
|
+
interceptDeferred = defer;
|
250
|
+
};
|
251
|
+
|
204
252
|
/**
|
205
253
|
* @ngdoc object
|
206
254
|
* @name ui.router.router.$urlRouter
|
@@ -208,66 +256,172 @@ function $UrlRouterProvider( $urlMatcherFactory) {
|
|
208
256
|
* @requires $location
|
209
257
|
* @requires $rootScope
|
210
258
|
* @requires $injector
|
259
|
+
* @requires $browser
|
211
260
|
*
|
212
261
|
* @description
|
213
262
|
*
|
214
263
|
*/
|
215
|
-
this.$get =
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
264
|
+
this.$get = $get;
|
265
|
+
$get.$inject = ['$location', '$rootScope', '$injector', '$browser'];
|
266
|
+
function $get( $location, $rootScope, $injector, $browser) {
|
267
|
+
|
268
|
+
var baseHref = $browser.baseHref(), location = $location.url(), lastPushedUrl;
|
269
|
+
|
270
|
+
function appendBasePath(url, isHtml5, absolute) {
|
271
|
+
if (baseHref === '/') return url;
|
272
|
+
if (isHtml5) return baseHref.slice(0, -1) + url;
|
273
|
+
if (absolute) return baseHref.slice(1) + url;
|
274
|
+
return url;
|
275
|
+
}
|
276
|
+
|
277
|
+
// TODO: Optimize groups of rules with non-empty prefix into some sort of decision tree
|
278
|
+
function update(evt) {
|
279
|
+
if (evt && evt.defaultPrevented) return;
|
280
|
+
var ignoreUpdate = lastPushedUrl && $location.url() === lastPushedUrl;
|
281
|
+
lastPushedUrl = undefined;
|
282
|
+
// TODO: Re-implement this in 1.0 for https://github.com/angular-ui/ui-router/issues/1573
|
283
|
+
//if (ignoreUpdate) return true;
|
284
|
+
|
285
|
+
function check(rule) {
|
286
|
+
var handled = rule($injector, $location);
|
287
|
+
|
288
|
+
if (!handled) return false;
|
289
|
+
if (isString(handled)) $location.replace().url(handled);
|
290
|
+
return true;
|
291
|
+
}
|
292
|
+
var n = rules.length, i;
|
293
|
+
|
294
|
+
for (i = 0; i < n; i++) {
|
295
|
+
if (check(rules[i])) return;
|
296
|
+
}
|
297
|
+
// always check otherwise last to allow dynamic updates to the set of rules
|
298
|
+
if (otherwise) check(otherwise);
|
299
|
+
}
|
300
|
+
|
301
|
+
function listen() {
|
302
|
+
listener = listener || $rootScope.$on('$locationChangeSuccess', update);
|
303
|
+
return listener;
|
304
|
+
}
|
305
|
+
|
306
|
+
if (!interceptDeferred) listen();
|
307
|
+
|
308
|
+
return {
|
309
|
+
/**
|
310
|
+
* @ngdoc function
|
311
|
+
* @name ui.router.router.$urlRouter#sync
|
312
|
+
* @methodOf ui.router.router.$urlRouter
|
313
|
+
*
|
314
|
+
* @description
|
315
|
+
* Triggers an update; the same update that happens when the address bar url changes, aka `$locationChangeSuccess`.
|
316
|
+
* This method is useful when you need to use `preventDefault()` on the `$locationChangeSuccess` event,
|
317
|
+
* perform some custom logic (route protection, auth, config, redirection, etc) and then finally proceed
|
318
|
+
* with the transition by calling `$urlRouter.sync()`.
|
319
|
+
*
|
320
|
+
* @example
|
321
|
+
* <pre>
|
322
|
+
* angular.module('app', ['ui.router'])
|
323
|
+
* .run(function($rootScope, $urlRouter) {
|
324
|
+
* $rootScope.$on('$locationChangeSuccess', function(evt) {
|
325
|
+
* // Halt state change from even starting
|
326
|
+
* evt.preventDefault();
|
327
|
+
* // Perform custom logic
|
328
|
+
* var meetsRequirement = ...
|
329
|
+
* // Continue with the update and state transition if logic allows
|
330
|
+
* if (meetsRequirement) $urlRouter.sync();
|
331
|
+
* });
|
332
|
+
* });
|
333
|
+
* </pre>
|
334
|
+
*/
|
335
|
+
sync: function() {
|
336
|
+
update();
|
337
|
+
},
|
338
|
+
|
339
|
+
listen: function() {
|
340
|
+
return listen();
|
341
|
+
},
|
342
|
+
|
343
|
+
update: function(read) {
|
344
|
+
if (read) {
|
345
|
+
location = $location.url();
|
346
|
+
return;
|
347
|
+
}
|
348
|
+
if ($location.url() === location) return;
|
349
|
+
|
350
|
+
$location.url(location);
|
351
|
+
$location.replace();
|
352
|
+
},
|
353
|
+
|
354
|
+
push: function(urlMatcher, params, options) {
|
355
|
+
var url = urlMatcher.format(params || {});
|
356
|
+
|
357
|
+
// Handle the special hash param, if needed
|
358
|
+
if (url !== null && params && params['#']) {
|
359
|
+
url += '#' + params['#'];
|
360
|
+
}
|
361
|
+
|
362
|
+
$location.url(url);
|
363
|
+
lastPushedUrl = options && options.$$avoidResync ? $location.url() : undefined;
|
364
|
+
if (options && options.replace) $location.replace();
|
365
|
+
},
|
366
|
+
|
367
|
+
/**
|
368
|
+
* @ngdoc function
|
369
|
+
* @name ui.router.router.$urlRouter#href
|
370
|
+
* @methodOf ui.router.router.$urlRouter
|
371
|
+
*
|
372
|
+
* @description
|
373
|
+
* A URL generation method that returns the compiled URL for a given
|
374
|
+
* {@link ui.router.util.type:UrlMatcher `UrlMatcher`}, populated with the provided parameters.
|
375
|
+
*
|
376
|
+
* @example
|
377
|
+
* <pre>
|
378
|
+
* $bob = $urlRouter.href(new UrlMatcher("/about/:person"), {
|
379
|
+
* person: "bob"
|
380
|
+
* });
|
381
|
+
* // $bob == "/about/bob";
|
382
|
+
* </pre>
|
383
|
+
*
|
384
|
+
* @param {UrlMatcher} urlMatcher The `UrlMatcher` object which is used as the template of the URL to generate.
|
385
|
+
* @param {object=} params An object of parameter values to fill the matcher's required parameters.
|
386
|
+
* @param {object=} options Options object. The options are:
|
387
|
+
*
|
388
|
+
* - **`absolute`** - {boolean=false}, If true will generate an absolute url, e.g. "http://www.example.com/fullurl".
|
389
|
+
*
|
390
|
+
* @returns {string} Returns the fully compiled URL, or `null` if `params` fail validation against `urlMatcher`
|
391
|
+
*/
|
392
|
+
href: function(urlMatcher, params, options) {
|
393
|
+
if (!urlMatcher.validates(params)) return null;
|
394
|
+
|
395
|
+
var isHtml5 = $locationProvider.html5Mode();
|
396
|
+
if (angular.isObject(isHtml5)) {
|
397
|
+
isHtml5 = isHtml5.enabled;
|
228
398
|
}
|
229
|
-
|
230
|
-
|
231
|
-
|
399
|
+
|
400
|
+
var url = urlMatcher.format(params);
|
401
|
+
options = options || {};
|
402
|
+
|
403
|
+
if (!isHtml5 && url !== null) {
|
404
|
+
url = "#" + $locationProvider.hashPrefix() + url;
|
232
405
|
}
|
233
|
-
// always check otherwise last to allow dynamic updates to the set of rules
|
234
|
-
if (otherwise) check(otherwise);
|
235
|
-
}
|
236
406
|
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
/**
|
241
|
-
* @ngdoc function
|
242
|
-
* @name ui.router.router.$urlRouter#sync
|
243
|
-
* @methodOf ui.router.router.$urlRouter
|
244
|
-
*
|
245
|
-
* @description
|
246
|
-
* Triggers an update; the same update that happens when the address bar url changes, aka `$locationChangeSuccess`.
|
247
|
-
* This method is useful when you need to use `preventDefault()` on the `$locationChangeSuccess` event,
|
248
|
-
* perform some custom logic (route protection, auth, config, redirection, etc) and then finally proceed
|
249
|
-
* with the transition by calling `$urlRouter.sync()`.
|
250
|
-
*
|
251
|
-
* @example
|
252
|
-
* <pre>
|
253
|
-
* angular.module('app', ['ui.router']);
|
254
|
-
* .run(function($rootScope, $urlRouter) {
|
255
|
-
* $rootScope.$on('$locationChangeSuccess', function(evt) {
|
256
|
-
* // Halt state change from even starting
|
257
|
-
* evt.preventDefault();
|
258
|
-
* // Perform custom logic
|
259
|
-
* var meetsRequirement = ...
|
260
|
-
* // Continue with the update and state transition if logic allows
|
261
|
-
* if (meetsRequirement) $urlRouter.sync();
|
262
|
-
* });
|
263
|
-
* });
|
264
|
-
* </pre>
|
265
|
-
*/
|
266
|
-
sync: function () {
|
267
|
-
update();
|
407
|
+
// Handle special hash param, if needed
|
408
|
+
if (url !== null && params && params['#']) {
|
409
|
+
url += '#' + params['#'];
|
268
410
|
}
|
269
|
-
|
270
|
-
|
411
|
+
|
412
|
+
url = appendBasePath(url, isHtml5, options.absolute);
|
413
|
+
|
414
|
+
if (!options.absolute || !url) {
|
415
|
+
return url;
|
416
|
+
}
|
417
|
+
|
418
|
+
var slash = (!isHtml5 && url ? '/' : ''), port = $location.port();
|
419
|
+
port = (port === 80 || port === 443 ? '' : ':' + port);
|
420
|
+
|
421
|
+
return [$location.protocol(), '://', $location.host(), port, slash, url].join('');
|
422
|
+
}
|
423
|
+
};
|
424
|
+
}
|
271
425
|
}
|
272
426
|
|
273
427
|
angular.module('ui.router.router').provider('$urlRouter', $UrlRouterProvider);
|