delectusnon 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.prettierignore +2 -0
- package/.travis.yml +33 -0
- package/.vscode/launch.json +24 -0
- package/.vscode/settings.json +3 -0
- package/demos/ago-node-cli/README.md +29 -0
- package/demos/ago-node-cli/ago.js +32 -0
- package/demos/ago-node-cli/index.js +11 -0
- package/demos/ago-node-cli/lib/item-export-command.js +48 -0
- package/demos/ago-node-cli/lib/item-search-command.js +35 -0
- package/demos/ago-node-cli/package-lock.json +172 -0
- package/demos/ago-node-cli/package.json +30 -0
- package/demos/attachments/README.md +5 -0
- package/demos/attachments/index.html +164 -0
- package/demos/attachments/package-lock.json +182 -0
- package/demos/attachments/package.json +18 -0
- package/demos/batch-geocoder-node/NYC_Restaurant_Inspection_Results.csv +100 -0
- package/demos/batch-geocoder-node/README.md +15 -0
- package/demos/batch-geocoder-node/batch-geocode.js +118 -0
- package/demos/batch-geocoder-node/config-template.js +18 -0
- package/demos/batch-geocoder-node/package-lock.json +116 -0
- package/demos/batch-geocoder-node/package.json +39 -0
- package/demos/express/README.md +10 -0
- package/demos/express/config.json.template +3 -0
- package/demos/express/package-lock.json +473 -0
- package/demos/express/package.json +18 -0
- package/demos/express/server.js +28 -0
- package/demos/feature-service-browser/README.md +6 -0
- package/demos/feature-service-browser/index.html +122 -0
- package/demos/feature-service-browser/package-lock.json +182 -0
- package/demos/feature-service-browser/package.json +18 -0
- package/demos/geocoder-browser/README.md +10 -0
- package/demos/geocoder-browser/config.js.template +1 -0
- package/demos/geocoder-browser/index.html +131 -0
- package/demos/geocoder-browser/package-lock.json +182 -0
- package/demos/geocoder-browser/package.json +19 -0
- package/demos/geocoder-browser/post-sign-in.html +25 -0
- package/demos/jsapi-integration/README.md +8 -0
- package/demos/jsapi-integration/config.js +6 -0
- package/demos/jsapi-integration/index.html +79 -0
- package/demos/jsapi-integration/package-lock.json +184 -0
- package/demos/jsapi-integration/package.json +19 -0
- package/demos/oauth2-browser/README.md +12 -0
- package/demos/oauth2-browser/authenticate.html +32 -0
- package/demos/oauth2-browser/config.js.template +6 -0
- package/demos/oauth2-browser/index.html +202 -0
- package/demos/oauth2-browser/logo.svg +4 -0
- package/demos/oauth2-browser/package-lock.json +163 -0
- package/demos/oauth2-browser/package.json +18 -0
- package/demos/oauth2-browser/style.css +36 -0
- package/demos/oauth2-browser-retry/README.md +25 -0
- package/demos/oauth2-browser-retry/authenticate.html +21 -0
- package/demos/oauth2-browser-retry/index.html +116 -0
- package/demos/oauth2-browser-retry/logo.svg +4 -0
- package/demos/vue/.env.example +11 -0
- package/demos/vue/.eslintrc.js +17 -0
- package/demos/vue/.postcssrc.js +5 -0
- package/demos/vue/README.md +17 -0
- package/demos/vue/babel.config.js +3 -0
- package/demos/vue/package-lock.json +11323 -0
- package/demos/vue/package.json +33 -0
- package/demos/vue/public/favicon.ico +0 -0
- package/demos/vue/public/index.html +24 -0
- package/demos/vue/src/assets/logo.svg +29 -0
- package/demos/vue/src/components/App.vue +308 -0
- package/demos/vue/src/components/Authenticate.vue +65 -0
- package/demos/vue/src/components/Loader.vue +230 -0
- package/demos/vue/src/main.js +92 -0
- package/docs/FAQ.md +28 -0
- package/docs/HISTORY.md +62 -0
- package/docs/acetate.config.js +223 -0
- package/docs/build-typedoc.js +301 -0
- package/docs/src/_layout.html +82 -0
- package/docs/src/api/_declaration.html +496 -0
- package/docs/src/api/_layout.html +127 -0
- package/docs/src/api/_package.html +13 -0
- package/docs/src/api/index.html +23 -0
- package/docs/src/guides/_layout.html +24 -0
- package/docs/src/guides/amd-requirejs-dojo.md +40 -0
- package/docs/src/guides/babel-and-rollup.md +30 -0
- package/docs/src/guides/babel-and-webpack.md +30 -0
- package/docs/src/guides/browser-authentication.md +31 -0
- package/docs/src/guides/browserify.md +9 -0
- package/docs/src/guides/cli-authentication.md +9 -0
- package/docs/src/guides/client-server-authentication.md +9 -0
- package/docs/src/guides/from-a-cdn.md +36 -0
- package/docs/src/guides/index.md +52 -0
- package/docs/src/guides/node.md +70 -0
- package/docs/src/guides/package-overview.md +8 -0
- package/docs/src/guides/server-authentication.md +9 -0
- package/docs/src/guides/typescript-and-webpack.md +9 -0
- package/docs/src/img/icons.png +0 -0
- package/docs/src/img/icons@2x.png +0 -0
- package/docs/src/index.html +12 -0
- package/docs/src/js/api-search.js +112 -0
- package/docs/src/js/nav-toggle.js +41 -0
- package/docs/src/sass/_highlight.scss +96 -0
- package/docs/src/sass/_icons.scss +157 -0
- package/docs/src/sass/style.scss +169 -0
- package/jasmine.json +7 -0
- package/karma.conf.js +100 -0
- package/lerna.json +8 -0
- package/notes/README.md +88 -0
- package/package.json +88 -0
- package/packages/arcgis-rest-auth/README.md +64 -0
- package/packages/arcgis-rest-auth/package-lock.json +11 -0
- package/packages/arcgis-rest-auth/package.json +51 -0
- package/packages/arcgis-rest-auth/src/ApplicationSession.ts +109 -0
- package/packages/arcgis-rest-auth/src/UserSession.ts +873 -0
- package/packages/arcgis-rest-auth/src/authenticated-request-options.ts +24 -0
- package/packages/arcgis-rest-auth/src/fetch-token.ts +52 -0
- package/packages/arcgis-rest-auth/src/generate-token.ts +39 -0
- package/packages/arcgis-rest-auth/src/index.ts +8 -0
- package/packages/arcgis-rest-auth/test/ApplicationSession.test.ts +124 -0
- package/packages/arcgis-rest-auth/test/UserSession.test.ts +995 -0
- package/packages/arcgis-rest-auth/test/fetchToken.test.ts +112 -0
- package/packages/arcgis-rest-auth/test/generateToken.test.ts +130 -0
- package/packages/arcgis-rest-auth/test/utils.ts +14 -0
- package/packages/arcgis-rest-auth/tsconfig.json +6 -0
- package/packages/arcgis-rest-common-types/README.md +61 -0
- package/packages/arcgis-rest-common-types/package.json +38 -0
- package/packages/arcgis-rest-common-types/src/group.ts +54 -0
- package/packages/arcgis-rest-common-types/src/index.ts +467 -0
- package/packages/arcgis-rest-common-types/src/item.ts +45 -0
- package/packages/arcgis-rest-common-types/src/webmap.ts +1232 -0
- package/packages/arcgis-rest-common-types/tsconfig.json +11 -0
- package/packages/arcgis-rest-feature-service/README.md +70 -0
- package/packages/arcgis-rest-feature-service/package-lock.json +11 -0
- package/packages/arcgis-rest-feature-service/package.json +50 -0
- package/packages/arcgis-rest-feature-service/src/add.ts +81 -0
- package/packages/arcgis-rest-feature-service/src/addAttachment.ts +65 -0
- package/packages/arcgis-rest-feature-service/src/delete.ts +85 -0
- package/packages/arcgis-rest-feature-service/src/deleteAttachments.ts +68 -0
- package/packages/arcgis-rest-feature-service/src/getAttachments.ts +64 -0
- package/packages/arcgis-rest-feature-service/src/helpers.ts +80 -0
- package/packages/arcgis-rest-feature-service/src/index.ts +12 -0
- package/packages/arcgis-rest-feature-service/src/query.ts +172 -0
- package/packages/arcgis-rest-feature-service/src/queryRelated.ts +91 -0
- package/packages/arcgis-rest-feature-service/src/update.ts +81 -0
- package/packages/arcgis-rest-feature-service/src/updateAttachment.ts +74 -0
- package/packages/arcgis-rest-feature-service/test/attachments.test.ts +203 -0
- package/packages/arcgis-rest-feature-service/test/features.test.ts +252 -0
- package/packages/arcgis-rest-feature-service/test/mocks/feature.ts +279 -0
- package/packages/arcgis-rest-feature-service/test/mocks/foo.txt +1 -0
- package/packages/arcgis-rest-feature-service/tsconfig.json +6 -0
- package/packages/arcgis-rest-feature-service-admin/README.md +66 -0
- package/packages/arcgis-rest-feature-service-admin/package-lock.json +11 -0
- package/packages/arcgis-rest-feature-service-admin/package.json +53 -0
- package/packages/arcgis-rest-feature-service-admin/src/addTo.ts +70 -0
- package/packages/arcgis-rest-feature-service-admin/src/create.ts +195 -0
- package/packages/arcgis-rest-feature-service-admin/src/index.ts +2 -0
- package/packages/arcgis-rest-feature-service-admin/test/addTo.test.ts +310 -0
- package/packages/arcgis-rest-feature-service-admin/test/create.test.ts +412 -0
- package/packages/arcgis-rest-feature-service-admin/test/mocks/move.ts +14 -0
- package/packages/arcgis-rest-feature-service-admin/test/mocks/service.ts +72 -0
- package/packages/arcgis-rest-feature-service-admin/tsconfig.json +6 -0
- package/packages/arcgis-rest-geocoder/README.md +79 -0
- package/packages/arcgis-rest-geocoder/package-lock.json +11 -0
- package/packages/arcgis-rest-geocoder/package.json +52 -0
- package/packages/arcgis-rest-geocoder/src/bulk.ts +102 -0
- package/packages/arcgis-rest-geocoder/src/geocode.ts +117 -0
- package/packages/arcgis-rest-geocoder/src/helpers.ts +79 -0
- package/packages/arcgis-rest-geocoder/src/index.ts +8 -0
- package/packages/arcgis-rest-geocoder/src/reverse.ts +84 -0
- package/packages/arcgis-rest-geocoder/src/suggest.ts +72 -0
- package/packages/arcgis-rest-geocoder/test/bulk.test.ts +113 -0
- package/packages/arcgis-rest-geocoder/test/geocode.test.ts +121 -0
- package/packages/arcgis-rest-geocoder/test/helpers.test.ts +113 -0
- package/packages/arcgis-rest-geocoder/test/mocks/responses.ts +591 -0
- package/packages/arcgis-rest-geocoder/test/reverse.test.ts +126 -0
- package/packages/arcgis-rest-geocoder/test/suggest.test.ts +77 -0
- package/packages/arcgis-rest-geocoder/tsconfig.json +6 -0
- package/packages/arcgis-rest-groups/README.md +64 -0
- package/packages/arcgis-rest-groups/package-lock.json +11 -0
- package/packages/arcgis-rest-groups/package.json +52 -0
- package/packages/arcgis-rest-groups/src/create.ts +34 -0
- package/packages/arcgis-rest-groups/src/get.ts +95 -0
- package/packages/arcgis-rest-groups/src/helpers.ts +26 -0
- package/packages/arcgis-rest-groups/src/index.ts +11 -0
- package/packages/arcgis-rest-groups/src/notification.ts +77 -0
- package/packages/arcgis-rest-groups/src/protect.ts +40 -0
- package/packages/arcgis-rest-groups/src/remove.ts +23 -0
- package/packages/arcgis-rest-groups/src/search.ts +64 -0
- package/packages/arcgis-rest-groups/src/update.ts +36 -0
- package/packages/arcgis-rest-groups/test/crud.test.ts +104 -0
- package/packages/arcgis-rest-groups/test/get.test.ts +101 -0
- package/packages/arcgis-rest-groups/test/mocks/responses.ts +141 -0
- package/packages/arcgis-rest-groups/test/notification.test.ts +102 -0
- package/packages/arcgis-rest-groups/test/protect.test.ts +64 -0
- package/packages/arcgis-rest-groups/test/search.test.ts +85 -0
- package/packages/arcgis-rest-groups/tsconfig.json +6 -0
- package/packages/arcgis-rest-items/README.md +66 -0
- package/packages/arcgis-rest-items/package-lock.json +11 -0
- package/packages/arcgis-rest-items/package.json +52 -0
- package/packages/arcgis-rest-items/src/add.ts +103 -0
- package/packages/arcgis-rest-items/src/create.ts +110 -0
- package/packages/arcgis-rest-items/src/get.ts +79 -0
- package/packages/arcgis-rest-items/src/helpers.ts +147 -0
- package/packages/arcgis-rest-items/src/index.ts +11 -0
- package/packages/arcgis-rest-items/src/protect.ts +38 -0
- package/packages/arcgis-rest-items/src/remove.ts +58 -0
- package/packages/arcgis-rest-items/src/search.ts +78 -0
- package/packages/arcgis-rest-items/src/update.ts +134 -0
- package/packages/arcgis-rest-items/test/add.test.ts +256 -0
- package/packages/arcgis-rest-items/test/create.test.ts +371 -0
- package/packages/arcgis-rest-items/test/get.test.ts +181 -0
- package/packages/arcgis-rest-items/test/mocks/foo.zip +0 -0
- package/packages/arcgis-rest-items/test/mocks/item.ts +33 -0
- package/packages/arcgis-rest-items/test/mocks/resources.ts +31 -0
- package/packages/arcgis-rest-items/test/mocks/search.ts +63 -0
- package/packages/arcgis-rest-items/test/protect.test.ts +122 -0
- package/packages/arcgis-rest-items/test/remove.test.ts +161 -0
- package/packages/arcgis-rest-items/test/search.test.ts +159 -0
- package/packages/arcgis-rest-items/test/update.test.ts +450 -0
- package/packages/arcgis-rest-items/tsconfig.json +6 -0
- package/packages/arcgis-rest-request/README.md +65 -0
- package/packages/arcgis-rest-request/package-lock.json +11 -0
- package/packages/arcgis-rest-request/package.json +42 -0
- package/packages/arcgis-rest-request/src/index.ts +13 -0
- package/packages/arcgis-rest-request/src/request.ts +293 -0
- package/packages/arcgis-rest-request/src/utils/ArcGISAuthError.ts +67 -0
- package/packages/arcgis-rest-request/src/utils/ArcGISRequestError.ts +76 -0
- package/packages/arcgis-rest-request/src/utils/ErrorTypes.ts +29 -0
- package/packages/arcgis-rest-request/src/utils/check-for-errors.ts +65 -0
- package/packages/arcgis-rest-request/src/utils/encode-form-data.ts +34 -0
- package/packages/arcgis-rest-request/src/utils/encode-query-string.ts +23 -0
- package/packages/arcgis-rest-request/src/utils/get-portal-url.ts +25 -0
- package/packages/arcgis-rest-request/src/utils/get-portal.ts +45 -0
- package/packages/arcgis-rest-request/src/utils/process-params.ts +99 -0
- package/packages/arcgis-rest-request/test/mocks/errors.ts +68 -0
- package/packages/arcgis-rest-request/test/mocks/geojson-feature-collection.ts +13 -0
- package/packages/arcgis-rest-request/test/mocks/portal.ts +112 -0
- package/packages/arcgis-rest-request/test/mocks/sharing-rest-info.ts +41 -0
- package/packages/arcgis-rest-request/test/mocks/webmap.ts +41 -0
- package/packages/arcgis-rest-request/test/request.test.ts +299 -0
- package/packages/arcgis-rest-request/test/utils/ArcGISAuthError.test.ts +170 -0
- package/packages/arcgis-rest-request/test/utils/ArcGISRequestError.test.ts +51 -0
- package/packages/arcgis-rest-request/test/utils/check-for-errors.test.ts +111 -0
- package/packages/arcgis-rest-request/test/utils/encode-form-data.test.ts +133 -0
- package/packages/arcgis-rest-request/test/utils/get-portal-url.test.ts +37 -0
- package/packages/arcgis-rest-request/test/utils/portal.test.ts +97 -0
- package/packages/arcgis-rest-request/test/utils/process-params.test.ts +193 -0
- package/packages/arcgis-rest-request/tsconfig.json +6 -0
- package/packages/arcgis-rest-sharing/README.md +67 -0
- package/packages/arcgis-rest-sharing/package-lock.json +11 -0
- package/packages/arcgis-rest-sharing/package.json +57 -0
- package/packages/arcgis-rest-sharing/src/access.ts +85 -0
- package/packages/arcgis-rest-sharing/src/group-sharing.ts +211 -0
- package/packages/arcgis-rest-sharing/src/helpers.ts +82 -0
- package/packages/arcgis-rest-sharing/src/index.ts +5 -0
- package/packages/arcgis-rest-sharing/test/access.test.ts +154 -0
- package/packages/arcgis-rest-sharing/test/group-sharing.test.ts +566 -0
- package/packages/arcgis-rest-sharing/test/helpers.test.ts +55 -0
- package/packages/arcgis-rest-sharing/test/mocks/sharing.ts +18 -0
- package/packages/arcgis-rest-sharing/tsconfig.json +6 -0
- package/packages/arcgis-rest-users/README.md +71 -0
- package/packages/arcgis-rest-users/package-lock.json +11 -0
- package/packages/arcgis-rest-users/package.json +51 -0
- package/packages/arcgis-rest-users/src/get.ts +69 -0
- package/packages/arcgis-rest-users/src/index.ts +6 -0
- package/packages/arcgis-rest-users/src/invitation.ts +166 -0
- package/packages/arcgis-rest-users/src/notification.ts +73 -0
- package/packages/arcgis-rest-users/test/get.test.ts +99 -0
- package/packages/arcgis-rest-users/test/invitation.test.ts +169 -0
- package/packages/arcgis-rest-users/test/mocks/invitation.ts +70 -0
- package/packages/arcgis-rest-users/test/mocks/notification.ts +34 -0
- package/packages/arcgis-rest-users/test/mocks/user.ts +173 -0
- package/packages/arcgis-rest-users/test/notification.test.ts +83 -0
- package/packages/arcgis-rest-users/tsconfig.json +6 -0
- package/support/changelog.js +394 -0
- package/support/deploy-doc-site.js +16 -0
- package/support/publish.sh +43 -0
- package/support/test-helpers.js +8 -0
- package/tsconfig.json +69 -0
- package/tslint.json +15 -0
- package/umd-base-profile.js +82 -0
- package/umd-production-profile.js +13 -0
@@ -0,0 +1,33 @@
|
|
1
|
+
{
|
2
|
+
"name": "@esri/arcgis-rest-demo-vue-with-popup",
|
3
|
+
"description": "VueJS demo of @esri/arcgis-rest-* packages.",
|
4
|
+
"version": "1.13.0",
|
5
|
+
"author": "",
|
6
|
+
"license": "Apache-2.0",
|
7
|
+
"private": true,
|
8
|
+
"scripts": {
|
9
|
+
"serve": "vue-cli-service serve",
|
10
|
+
"build": "vue-cli-service build",
|
11
|
+
"lint": "vue-cli-service lint",
|
12
|
+
"start": "npm run serve"
|
13
|
+
},
|
14
|
+
"dependencies": {
|
15
|
+
"@esri/arcgis-rest-auth": "^1.13.0",
|
16
|
+
"@esri/arcgis-rest-request": "^1.13.0",
|
17
|
+
"vue": "^2.5.17",
|
18
|
+
"vue-router": "^3.0.1",
|
19
|
+
"vuex": "^3.0.1"
|
20
|
+
},
|
21
|
+
"devDependencies": {
|
22
|
+
"@vue/cli-plugin-babel": "^3.0.0",
|
23
|
+
"@vue/cli-plugin-eslint": "^3.0.0",
|
24
|
+
"@vue/cli-service": "^3.0.0",
|
25
|
+
"@vue/eslint-config-prettier": "^3.0.0",
|
26
|
+
"vue-template-compiler": "^2.5.17"
|
27
|
+
},
|
28
|
+
"browserslist": [
|
29
|
+
"> 1%",
|
30
|
+
"last 2 versions",
|
31
|
+
"not ie <= 8"
|
32
|
+
]
|
33
|
+
}
|
Binary file
|
@@ -0,0 +1,24 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html lang="en">
|
3
|
+
<head>
|
4
|
+
<meta charset="utf-8">
|
5
|
+
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
6
|
+
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
7
|
+
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
|
8
|
+
<title>ArcGIS Rest JS Vue</title>
|
9
|
+
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
|
10
|
+
<style>
|
11
|
+
html, body {
|
12
|
+
width: 100%;
|
13
|
+
height: 100%;
|
14
|
+
}
|
15
|
+
.row {
|
16
|
+
margin-bottom: 25px;
|
17
|
+
}
|
18
|
+
</style>
|
19
|
+
</head>
|
20
|
+
<body>
|
21
|
+
<div id="app"></div>
|
22
|
+
<!-- built files will be auto injected -->
|
23
|
+
</body>
|
24
|
+
</html>
|
@@ -0,0 +1,29 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
2
|
+
<svg
|
3
|
+
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
4
|
+
xmlns:cc="http://creativecommons.org/ns#"
|
5
|
+
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
6
|
+
xmlns:svg="http://www.w3.org/2000/svg"
|
7
|
+
xmlns="http://www.w3.org/2000/svg"
|
8
|
+
viewBox="0 0 400 400"
|
9
|
+
height="400"
|
10
|
+
width="400"
|
11
|
+
xml:space="preserve"
|
12
|
+
id="svg2"
|
13
|
+
version="1.1"><metadata
|
14
|
+
id="metadata8"><rdf:RDF><cc:Work
|
15
|
+
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
16
|
+
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
|
17
|
+
id="defs6" /><g
|
18
|
+
transform="matrix(1.3333333,0,0,-1.3333333,0,400)"
|
19
|
+
id="g10"><g
|
20
|
+
transform="translate(178.0626,235.0086)"
|
21
|
+
id="g12"><path
|
22
|
+
id="path14"
|
23
|
+
style="fill:#4dba87;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
24
|
+
d="M 0,0 -22.669,-39.264 -45.338,0 h -75.491 L -22.669,-170.017 75.491,0 Z" /></g><g
|
25
|
+
transform="translate(178.0626,235.0086)"
|
26
|
+
id="g16"><path
|
27
|
+
id="path18"
|
28
|
+
style="fill:#435466;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
29
|
+
d="M 0,0 -22.669,-39.264 -45.338,0 H -81.565 L -22.669,-102.01 36.227,0 Z" /></g></g></svg>
|
@@ -0,0 +1,308 @@
|
|
1
|
+
<template>
|
2
|
+
<div id="app-wrapper">
|
3
|
+
<div class="jumbotron">
|
4
|
+
<div class="container">
|
5
|
+
<div id="page-header" class="row">
|
6
|
+
<div id="logo-container" class="col-sm-3">
|
7
|
+
<img id="logo" src="../assets/logo.svg">
|
8
|
+
</div>
|
9
|
+
<div class="col-sm-9">
|
10
|
+
<h2>
|
11
|
+
ArcGIS Rest JS Vue Demo
|
12
|
+
</h2>
|
13
|
+
<p>
|
14
|
+
A simple vue application utilizing the arcgis-rest-js library.
|
15
|
+
</p>
|
16
|
+
</div>
|
17
|
+
</div>
|
18
|
+
</div>
|
19
|
+
</div>
|
20
|
+
<div class="container">
|
21
|
+
<div class="row">
|
22
|
+
<div class="col-xs-12">
|
23
|
+
<!-- Hook the has-error class to the boolean clientIdError. -->
|
24
|
+
<div :class="{ 'has-error': clientIdError }" class="form-group">
|
25
|
+
<label class="control-label">ClientID</label>
|
26
|
+
<!-- Hook this input up to the clientId property. -->
|
27
|
+
<input
|
28
|
+
v-model="clientId"
|
29
|
+
type="text"
|
30
|
+
class="form-control"
|
31
|
+
>
|
32
|
+
</div>
|
33
|
+
<p class="help-block">
|
34
|
+
You can generate your own clientid by creating an application on the
|
35
|
+
<a target='_blank' href='https://developers.arcgis.com/documentation/core-concepts/security-and-authentication/browser-based-user-logins/'>
|
36
|
+
ArcGIS for Developers
|
37
|
+
</a>
|
38
|
+
website. Be sure to add
|
39
|
+
<code>
|
40
|
+
{{ redirect_uri }}
|
41
|
+
</code>
|
42
|
+
as a redirect uri for your application.
|
43
|
+
</p>
|
44
|
+
</div>
|
45
|
+
</div>
|
46
|
+
<div class="row">
|
47
|
+
<div class="col-xs-6">
|
48
|
+
<!-- On click, this button will call the signInWithPopup function. -->
|
49
|
+
<button class="btn btn-primary btn-block" @click="signInWithPopup">Sign In (with popup)</button>
|
50
|
+
</div>
|
51
|
+
<div class="col-xs-6">
|
52
|
+
<!-- On click, this button will call the signInWithoutPopup function. -->
|
53
|
+
<button class="btn btn-primary btn-block" @click="signInWithInlineRedirect">Sign In (inline redirect)</button>
|
54
|
+
</div>
|
55
|
+
</div>
|
56
|
+
<!-- If there is a current session, render this bit. -->
|
57
|
+
<div v-if="session" class="row">
|
58
|
+
<div class="col-xs-12 text-center">
|
59
|
+
<p class="bg-success info-panel">
|
60
|
+
<!-- Display the current user's username. -->
|
61
|
+
Logged in as {{ session.username }}.
|
62
|
+
</p>
|
63
|
+
</div>
|
64
|
+
</div>
|
65
|
+
<!-- If there is not a current session, render this instead. -->
|
66
|
+
<div v-else class="row">
|
67
|
+
<div class="col-xs-12 text-center">
|
68
|
+
<p class="bg-info info-panel">
|
69
|
+
Log in using one of the methods above to load rest of the page.
|
70
|
+
</p>
|
71
|
+
</div>
|
72
|
+
</div>
|
73
|
+
<div class="row">
|
74
|
+
<div class="col-xs-6 col-xs-offset-3 text-center">
|
75
|
+
<button class="btn btn-block btn-warning" @click="signout">Sign Out</button>
|
76
|
+
</div>
|
77
|
+
</div>
|
78
|
+
<div class="panel panel-default">
|
79
|
+
<div class="panel-heading">
|
80
|
+
<div class="row" style="margin-bottom: 0px">
|
81
|
+
<div class="col-xs-4">
|
82
|
+
<!-- This button will call the search function. It's disabled if there is no current session. -->
|
83
|
+
<button @click="search" :disabled="!session" class="btn btn-success btn-block">
|
84
|
+
<span class="glyphicon glyphicon-search"></span>
|
85
|
+
Search Your Content
|
86
|
+
</button>
|
87
|
+
</div>
|
88
|
+
<div class="col-xs-8">
|
89
|
+
<div class="input-group">
|
90
|
+
<div class="input-group-addon">
|
91
|
+
<span class="glyphicon glyphicon-filter"></span>
|
92
|
+
</div>
|
93
|
+
<!-- Hook up this input the the filter string property. It's disabled if there is no current session. -->
|
94
|
+
<input
|
95
|
+
v-model="filterString"
|
96
|
+
:disabled="!session"
|
97
|
+
type="text"
|
98
|
+
class="form-control"
|
99
|
+
placeholder="Filter"
|
100
|
+
>
|
101
|
+
</div>
|
102
|
+
</div>
|
103
|
+
</div>
|
104
|
+
</div>
|
105
|
+
<!-- Render this only if their is a current search pending. -->
|
106
|
+
<div v-if="searching" class="panel-body loading-table">
|
107
|
+
<loader
|
108
|
+
size='25'
|
109
|
+
label='Fetching Data...'
|
110
|
+
labelPosition='bottom'
|
111
|
+
></loader>
|
112
|
+
</div>
|
113
|
+
<!-- Render if there are search results. -->
|
114
|
+
<table v-if="searchResults" class="table table-hover">
|
115
|
+
<thead>
|
116
|
+
<tr>
|
117
|
+
<th>Title:</th>
|
118
|
+
<th>ID:</th>
|
119
|
+
</tr>
|
120
|
+
</thead>
|
121
|
+
<!-- If there are any search results, render them. -->
|
122
|
+
<tbody v-if="searchResults.length > 0">
|
123
|
+
<!-- Iterate over the search results and render a table row for each. -->
|
124
|
+
<tr
|
125
|
+
v-for="(item, index) in searchResults"
|
126
|
+
:key="index"
|
127
|
+
>
|
128
|
+
<td>
|
129
|
+
{{ item.title }}
|
130
|
+
</td>
|
131
|
+
<td>
|
132
|
+
{{ item.id }}
|
133
|
+
</td>
|
134
|
+
</tr>
|
135
|
+
</tbody>
|
136
|
+
<!-- If no results were found, render this information. -->
|
137
|
+
<tbody v-else>
|
138
|
+
<tr class="danger">
|
139
|
+
<td>
|
140
|
+
No results found.
|
141
|
+
</td>
|
142
|
+
<td></td>
|
143
|
+
</tr>
|
144
|
+
</tbody>
|
145
|
+
</table>
|
146
|
+
</div>
|
147
|
+
</div>
|
148
|
+
</div>
|
149
|
+
</template>
|
150
|
+
|
151
|
+
<script>
|
152
|
+
// Import the arcgis-rest-auth bit.
|
153
|
+
import { UserSession } from "@esri/arcgis-rest-auth";
|
154
|
+
// Import the arcgis-rest-request bit.
|
155
|
+
import { request } from "@esri/arcgis-rest-request";
|
156
|
+
// Import a simple loading indicator.
|
157
|
+
import Loader from "./Loader";
|
158
|
+
|
159
|
+
export default {
|
160
|
+
name: "App",
|
161
|
+
components: { Loader },
|
162
|
+
data() {
|
163
|
+
return {
|
164
|
+
// Store these values on this instance.
|
165
|
+
clientId: process.env.VUE_APP_CLIENTID || "QVQNb3XfDzoboWS0",
|
166
|
+
clientIdError: false,
|
167
|
+
filterString: null,
|
168
|
+
searching: null,
|
169
|
+
searchResults: null
|
170
|
+
};
|
171
|
+
},
|
172
|
+
computed: {
|
173
|
+
// Simple computed property to access the current applications path to
|
174
|
+
// set it as the redirect_uri.
|
175
|
+
redirect_uri() {
|
176
|
+
return `${window.location.origin}${window.location.pathname}`;
|
177
|
+
},
|
178
|
+
session() {
|
179
|
+
return this.$store.state.session;
|
180
|
+
}
|
181
|
+
},
|
182
|
+
created() {
|
183
|
+
// Upon creation, check to see if the session prop exists. If it does,
|
184
|
+
// pre-populate the client id value.
|
185
|
+
if (this.$store.state.session) {
|
186
|
+
this.clientId = this.$store.state.session.clientId;
|
187
|
+
}
|
188
|
+
},
|
189
|
+
mounted() {},
|
190
|
+
watch: {
|
191
|
+
// Set a watcher on the client id to validate it when it changes.
|
192
|
+
clientId() {
|
193
|
+
if (this.clientId === "") this.clientIdError = true;
|
194
|
+
else this.clientIdError = false;
|
195
|
+
}
|
196
|
+
},
|
197
|
+
methods: {
|
198
|
+
// Function to validate that the client id exists.
|
199
|
+
requireClientId() {
|
200
|
+
if (this.clientIdError || !this.clientId) {
|
201
|
+
this.clientIdError = true;
|
202
|
+
return false;
|
203
|
+
}
|
204
|
+
return true;
|
205
|
+
},
|
206
|
+
// The signup with a popup workflow. When popup is true, the beginOAuth2 function
|
207
|
+
// returns a promise.
|
208
|
+
signInWithPopup() {
|
209
|
+
if (this.requireClientId()) {
|
210
|
+
UserSession.beginOAuth2({
|
211
|
+
clientId: this.clientId,
|
212
|
+
// Passing the clientid here is only a requirement of this demo where we allow
|
213
|
+
// dynamic clientids via input. Typically you would have this hard-coded on
|
214
|
+
// the authorization callback.
|
215
|
+
redirectUri: `${this.redirect_uri}#/authenticate?clientID=${
|
216
|
+
this.clientId
|
217
|
+
}`,
|
218
|
+
popup: true
|
219
|
+
})
|
220
|
+
.then(session => {
|
221
|
+
// Upon successful login, update the application's store with this new
|
222
|
+
// session.
|
223
|
+
this.$store.dispatch("updateSession", session);
|
224
|
+
})
|
225
|
+
.catch(error => {
|
226
|
+
console.error(error);
|
227
|
+
});
|
228
|
+
}
|
229
|
+
},
|
230
|
+
// The signup with an inline redirect workflow. In this case the user is just redirected to
|
231
|
+
// the authorization page.
|
232
|
+
signInWithInlineRedirect() {
|
233
|
+
if (this.requireClientId()) {
|
234
|
+
UserSession.beginOAuth2({
|
235
|
+
clientId: this.clientId,
|
236
|
+
redirectUri: `${this.redirect_uri}#/authenticate?clientID=${
|
237
|
+
this.clientId
|
238
|
+
}`,
|
239
|
+
popup: false
|
240
|
+
});
|
241
|
+
}
|
242
|
+
},
|
243
|
+
// Function to log the use out of the current session.
|
244
|
+
signout() {
|
245
|
+
this.$store.dispatch("updateSession", null);
|
246
|
+
this.searchResults = null;
|
247
|
+
},
|
248
|
+
// Function to call to search for a user's content.
|
249
|
+
search() {
|
250
|
+
// Update the properties for a new search.
|
251
|
+
this.searchResults = null;
|
252
|
+
this.searching = true;
|
253
|
+
// Timeout is for effect.
|
254
|
+
setTimeout(this.requestData, 300);
|
255
|
+
},
|
256
|
+
// Request data from AGOL.
|
257
|
+
requestData() {
|
258
|
+
// Construct a search query for only items the user owns. Add a filter if it exists.
|
259
|
+
const query = `owner: ${this.$store.state.session.username}${
|
260
|
+
this.filterString ? ` AND ${this.filterString}` : ""
|
261
|
+
}`;
|
262
|
+
// Construct the url for the endpoint with the session's portal and the constructed
|
263
|
+
// query.
|
264
|
+
const searchUrl = `${this.$store.state.session.portal}/search?q=${query}`;
|
265
|
+
// Make the request. Tack on the current authentication session.
|
266
|
+
request(searchUrl, { authentication: this.$store.state.session })
|
267
|
+
.then(response => {
|
268
|
+
this.searching = false;
|
269
|
+
this.searchResults = response.results;
|
270
|
+
})
|
271
|
+
.catch(error => {
|
272
|
+
this.searching = false;
|
273
|
+
console.error(error);
|
274
|
+
});
|
275
|
+
}
|
276
|
+
}
|
277
|
+
};
|
278
|
+
</script>
|
279
|
+
|
280
|
+
<style>
|
281
|
+
.jumbotron {
|
282
|
+
padding-top: 0px;
|
283
|
+
padding-bottom: 0px;
|
284
|
+
}
|
285
|
+
|
286
|
+
#logo-container {
|
287
|
+
display: flex;
|
288
|
+
justify-content: center;
|
289
|
+
align-content: center;
|
290
|
+
}
|
291
|
+
|
292
|
+
#logo {
|
293
|
+
width: 150px;
|
294
|
+
height: 150px;
|
295
|
+
}
|
296
|
+
|
297
|
+
.info-panel {
|
298
|
+
padding: 15px;
|
299
|
+
}
|
300
|
+
|
301
|
+
.loading-table {
|
302
|
+
width: 100%;
|
303
|
+
height: 150px;
|
304
|
+
display: flex;
|
305
|
+
align-content: center;
|
306
|
+
justify-content: center;
|
307
|
+
}
|
308
|
+
</style>
|
@@ -0,0 +1,65 @@
|
|
1
|
+
<template>
|
2
|
+
<div id="authenticate-wrapper">
|
3
|
+
<!-- Just a simple loading indicator -->
|
4
|
+
<loader
|
5
|
+
size='25'
|
6
|
+
label='Authenticating...'
|
7
|
+
labelPosition='bottom'
|
8
|
+
></loader>
|
9
|
+
</div>
|
10
|
+
</template>
|
11
|
+
|
12
|
+
<script>
|
13
|
+
// Import the arcgis-rest-auth bit.
|
14
|
+
import { UserSession } from "@esri/arcgis-rest-auth";
|
15
|
+
// Import a simple loading indicator.
|
16
|
+
import Loader from "./Loader";
|
17
|
+
|
18
|
+
export default {
|
19
|
+
name: "Authenticate",
|
20
|
+
components: { Loader },
|
21
|
+
props: [],
|
22
|
+
data() {
|
23
|
+
return {};
|
24
|
+
},
|
25
|
+
computed: {
|
26
|
+
// Simple computed property to make it easier to access the client id
|
27
|
+
// in the url. In a production app the clientid should be hardcoded.
|
28
|
+
clientId() {
|
29
|
+
return this.$route.query.clientID;
|
30
|
+
}
|
31
|
+
},
|
32
|
+
created() {},
|
33
|
+
mounted() {
|
34
|
+
// When this component is rendered, set a timeout to process the authentication.
|
35
|
+
// The timing is just for effect to show it's working.
|
36
|
+
setTimeout(this.processAuthentication, 500);
|
37
|
+
},
|
38
|
+
methods: {
|
39
|
+
processAuthentication() {
|
40
|
+
// Complete the OAuth2 process. If in a popup, the window will close before
|
41
|
+
// this finishes and will be handled by the beginOAuth2 function. If not in
|
42
|
+
// a popup, it will proceed to the next couple lines.
|
43
|
+
const session = UserSession.completeOAuth2({
|
44
|
+
// Required as it is a piece of the key in the popup method. If not using
|
45
|
+
// a popup, this shouldn't be required.
|
46
|
+
clientId: this.clientId
|
47
|
+
});
|
48
|
+
// Update the application store with the new session.
|
49
|
+
this.$store.dispatch("updateSession", session);
|
50
|
+
// The app is the rerouted to the main application.
|
51
|
+
this.$router.replace("/");
|
52
|
+
}
|
53
|
+
}
|
54
|
+
};
|
55
|
+
</script>
|
56
|
+
|
57
|
+
<style>
|
58
|
+
#authenticate-wrapper {
|
59
|
+
width: 100%;
|
60
|
+
height: 100%;
|
61
|
+
display: flex;
|
62
|
+
align-content: center;
|
63
|
+
justify-content: center;
|
64
|
+
}
|
65
|
+
</style>
|
@@ -0,0 +1,230 @@
|
|
1
|
+
<template>
|
2
|
+
<div ref='loader-wrapper' id='loader-wrapper'>
|
3
|
+
<div v-if="label" ref="label">
|
4
|
+
{{ label }}
|
5
|
+
</div>
|
6
|
+
<div ref="spinner" class="sk-fading-circle">
|
7
|
+
<div class="sk-circle1 sk-circle"></div>
|
8
|
+
<div class="sk-circle2 sk-circle"></div>
|
9
|
+
<div class="sk-circle3 sk-circle"></div>
|
10
|
+
<div class="sk-circle4 sk-circle"></div>
|
11
|
+
<div class="sk-circle5 sk-circle"></div>
|
12
|
+
<div class="sk-circle6 sk-circle"></div>
|
13
|
+
<div class="sk-circle7 sk-circle"></div>
|
14
|
+
<div class="sk-circle8 sk-circle"></div>
|
15
|
+
<div class="sk-circle9 sk-circle"></div>
|
16
|
+
<div class="sk-circle10 sk-circle"></div>
|
17
|
+
<div class="sk-circle11 sk-circle"></div>
|
18
|
+
<div class="sk-circle12 sk-circle"></div>
|
19
|
+
</div>
|
20
|
+
</div>
|
21
|
+
</template>
|
22
|
+
|
23
|
+
<script>
|
24
|
+
export default {
|
25
|
+
name: "Loader",
|
26
|
+
components: {},
|
27
|
+
props: ["size", "label", "labelPosition"],
|
28
|
+
data() {
|
29
|
+
return {};
|
30
|
+
},
|
31
|
+
watch: {
|
32
|
+
size() {
|
33
|
+
this.setSize();
|
34
|
+
},
|
35
|
+
labelPosition() {
|
36
|
+
this.setLabelPosition();
|
37
|
+
}
|
38
|
+
},
|
39
|
+
created() {},
|
40
|
+
mounted() {
|
41
|
+
this.setSize();
|
42
|
+
this.setLabelPosition();
|
43
|
+
},
|
44
|
+
methods: {
|
45
|
+
setSize() {
|
46
|
+
const marginPercentage = 0.2;
|
47
|
+
this.$refs.spinner.style.width = `${this.size || 40}px`;
|
48
|
+
this.$refs.spinner.style.height = `${this.size || 40}px`;
|
49
|
+
this.$refs.spinner.style.margin = `${this.size * marginPercentage ||
|
50
|
+
40 * marginPercentage}px`;
|
51
|
+
},
|
52
|
+
setLabelPosition() {
|
53
|
+
switch (this.labelPosition) {
|
54
|
+
case "top":
|
55
|
+
this.$refs["loader-wrapper"].style["flex-direction"] = "column";
|
56
|
+
break;
|
57
|
+
case "bottom":
|
58
|
+
this.$refs["loader-wrapper"].style["flex-direction"] =
|
59
|
+
"column-reverse";
|
60
|
+
break;
|
61
|
+
case "left":
|
62
|
+
this.$refs["loader-wrapper"].style["flex-direction"] = "row";
|
63
|
+
break;
|
64
|
+
case "right":
|
65
|
+
this.$refs["loader-wrapper"].style["flex-direction"] = "row-reverse";
|
66
|
+
break;
|
67
|
+
default:
|
68
|
+
this.$refs["loader-wrapper"].style["flex-direction"] =
|
69
|
+
"column-reverse";
|
70
|
+
break;
|
71
|
+
}
|
72
|
+
}
|
73
|
+
}
|
74
|
+
};
|
75
|
+
</script>
|
76
|
+
|
77
|
+
<style>
|
78
|
+
#loader-wrapper {
|
79
|
+
display: inline-flex;
|
80
|
+
align-items: center;
|
81
|
+
justify-content: center;
|
82
|
+
}
|
83
|
+
|
84
|
+
.sk-fading-circle {
|
85
|
+
width: 100%;
|
86
|
+
height: 100%;
|
87
|
+
position: relative;
|
88
|
+
}
|
89
|
+
|
90
|
+
.sk-fading-circle .sk-circle {
|
91
|
+
width: 100%;
|
92
|
+
height: 100%;
|
93
|
+
position: absolute;
|
94
|
+
left: 0;
|
95
|
+
top: 0;
|
96
|
+
}
|
97
|
+
|
98
|
+
.sk-fading-circle .sk-circle:before {
|
99
|
+
content: "";
|
100
|
+
display: block;
|
101
|
+
margin: 0 auto;
|
102
|
+
width: 15%;
|
103
|
+
height: 15%;
|
104
|
+
background-color: #333;
|
105
|
+
border-radius: 100%;
|
106
|
+
-webkit-animation: sk-circleFadeDelay 1.2s infinite ease-in-out both;
|
107
|
+
animation: sk-circleFadeDelay 1.2s infinite ease-in-out both;
|
108
|
+
}
|
109
|
+
.sk-fading-circle .sk-circle2 {
|
110
|
+
-webkit-transform: rotate(30deg);
|
111
|
+
-ms-transform: rotate(30deg);
|
112
|
+
transform: rotate(30deg);
|
113
|
+
}
|
114
|
+
.sk-fading-circle .sk-circle3 {
|
115
|
+
-webkit-transform: rotate(60deg);
|
116
|
+
-ms-transform: rotate(60deg);
|
117
|
+
transform: rotate(60deg);
|
118
|
+
}
|
119
|
+
.sk-fading-circle .sk-circle4 {
|
120
|
+
-webkit-transform: rotate(90deg);
|
121
|
+
-ms-transform: rotate(90deg);
|
122
|
+
transform: rotate(90deg);
|
123
|
+
}
|
124
|
+
.sk-fading-circle .sk-circle5 {
|
125
|
+
-webkit-transform: rotate(120deg);
|
126
|
+
-ms-transform: rotate(120deg);
|
127
|
+
transform: rotate(120deg);
|
128
|
+
}
|
129
|
+
.sk-fading-circle .sk-circle6 {
|
130
|
+
-webkit-transform: rotate(150deg);
|
131
|
+
-ms-transform: rotate(150deg);
|
132
|
+
transform: rotate(150deg);
|
133
|
+
}
|
134
|
+
.sk-fading-circle .sk-circle7 {
|
135
|
+
-webkit-transform: rotate(180deg);
|
136
|
+
-ms-transform: rotate(180deg);
|
137
|
+
transform: rotate(180deg);
|
138
|
+
}
|
139
|
+
.sk-fading-circle .sk-circle8 {
|
140
|
+
-webkit-transform: rotate(210deg);
|
141
|
+
-ms-transform: rotate(210deg);
|
142
|
+
transform: rotate(210deg);
|
143
|
+
}
|
144
|
+
.sk-fading-circle .sk-circle9 {
|
145
|
+
-webkit-transform: rotate(240deg);
|
146
|
+
-ms-transform: rotate(240deg);
|
147
|
+
transform: rotate(240deg);
|
148
|
+
}
|
149
|
+
.sk-fading-circle .sk-circle10 {
|
150
|
+
-webkit-transform: rotate(270deg);
|
151
|
+
-ms-transform: rotate(270deg);
|
152
|
+
transform: rotate(270deg);
|
153
|
+
}
|
154
|
+
.sk-fading-circle .sk-circle11 {
|
155
|
+
-webkit-transform: rotate(300deg);
|
156
|
+
-ms-transform: rotate(300deg);
|
157
|
+
transform: rotate(300deg);
|
158
|
+
}
|
159
|
+
.sk-fading-circle .sk-circle12 {
|
160
|
+
-webkit-transform: rotate(330deg);
|
161
|
+
-ms-transform: rotate(330deg);
|
162
|
+
transform: rotate(330deg);
|
163
|
+
}
|
164
|
+
.sk-fading-circle .sk-circle2:before {
|
165
|
+
-webkit-animation-delay: -1.1s;
|
166
|
+
animation-delay: -1.1s;
|
167
|
+
}
|
168
|
+
.sk-fading-circle .sk-circle3:before {
|
169
|
+
-webkit-animation-delay: -1s;
|
170
|
+
animation-delay: -1s;
|
171
|
+
}
|
172
|
+
.sk-fading-circle .sk-circle4:before {
|
173
|
+
-webkit-animation-delay: -0.9s;
|
174
|
+
animation-delay: -0.9s;
|
175
|
+
}
|
176
|
+
.sk-fading-circle .sk-circle5:before {
|
177
|
+
-webkit-animation-delay: -0.8s;
|
178
|
+
animation-delay: -0.8s;
|
179
|
+
}
|
180
|
+
.sk-fading-circle .sk-circle6:before {
|
181
|
+
-webkit-animation-delay: -0.7s;
|
182
|
+
animation-delay: -0.7s;
|
183
|
+
}
|
184
|
+
.sk-fading-circle .sk-circle7:before {
|
185
|
+
-webkit-animation-delay: -0.6s;
|
186
|
+
animation-delay: -0.6s;
|
187
|
+
}
|
188
|
+
.sk-fading-circle .sk-circle8:before {
|
189
|
+
-webkit-animation-delay: -0.5s;
|
190
|
+
animation-delay: -0.5s;
|
191
|
+
}
|
192
|
+
.sk-fading-circle .sk-circle9:before {
|
193
|
+
-webkit-animation-delay: -0.4s;
|
194
|
+
animation-delay: -0.4s;
|
195
|
+
}
|
196
|
+
.sk-fading-circle .sk-circle10:before {
|
197
|
+
-webkit-animation-delay: -0.3s;
|
198
|
+
animation-delay: -0.3s;
|
199
|
+
}
|
200
|
+
.sk-fading-circle .sk-circle11:before {
|
201
|
+
-webkit-animation-delay: -0.2s;
|
202
|
+
animation-delay: -0.2s;
|
203
|
+
}
|
204
|
+
.sk-fading-circle .sk-circle12:before {
|
205
|
+
-webkit-animation-delay: -0.1s;
|
206
|
+
animation-delay: -0.1s;
|
207
|
+
}
|
208
|
+
|
209
|
+
@-webkit-keyframes sk-circleFadeDelay {
|
210
|
+
0%,
|
211
|
+
39%,
|
212
|
+
100% {
|
213
|
+
opacity: 0;
|
214
|
+
}
|
215
|
+
40% {
|
216
|
+
opacity: 1;
|
217
|
+
}
|
218
|
+
}
|
219
|
+
|
220
|
+
@keyframes sk-circleFadeDelay {
|
221
|
+
0%,
|
222
|
+
39%,
|
223
|
+
100% {
|
224
|
+
opacity: 0;
|
225
|
+
}
|
226
|
+
40% {
|
227
|
+
opacity: 1;
|
228
|
+
}
|
229
|
+
}
|
230
|
+
</style>
|