diff --git a/.DS_Store b/.DS_Store index d048a2a..e0269f4 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/app/home.html b/app/home.html index e40da61..4eda609 100644 --- a/app/home.html +++ b/app/home.html @@ -46,12 +46,12 @@ @@ -127,5 +127,6 @@
October 29
- + + \ No newline at end of file diff --git a/app/preferences.html b/app/preferences.html new file mode 100644 index 0000000..ab8c388 --- /dev/null +++ b/app/preferences.html @@ -0,0 +1,165 @@ + + + + + + + + UCF Mobile – Preferences + + + + + + + + + + +
+ +
+ +
+ +
+
+

Preferences

+ +
+

Change Campus

+ +
+ +
+

Location Preferences

+

Allow location services.

+ +
+ +
+

Notification Preferences

+

Emergency Notifications

+

Emergency alerts and notifications.

+ +

News & Events

+

Calender alerts, new events.

+ +

Transit Notifications

+

Parking, travel time.

+ +
+ +
+

Language Preferences

+ +
+ +
+

Accessibility

+ +

Text Size

+
+ + + +
+ +

High Contrast Colors

+ + +

Dark Mode

+ +
+ +
+
+
+ + + + + + + + + + \ No newline at end of file diff --git a/css/styles.css b/css/styles.css index 06e153f..4dc60da 100644 --- a/css/styles.css +++ b/css/styles.css @@ -25,6 +25,9 @@ .dot:hover > i { color: white; } +.font-size-lg { + font-size: 1.75rem !important; } + .notch-padding { background-color: black; display: block; @@ -74,6 +77,9 @@ header { padding-top: 0; padding-bottom: 0; } +.no-image-padding { + padding-top: 115px; } + /* Bottom nav styling */ footer { background-color: black; diff --git a/css/styles.css.map b/css/styles.css.map index d9ab224..41af2b7 100644 --- a/css/styles.css.map +++ b/css/styles.css.map @@ -1,6 +1,6 @@ { "version": 3, -"mappings": "AAAA,YAAY;ACCJ,oBAAS;AAEjB,aAAa;AAEb,KAAM;EACF,KAAK,EAAE,OAAO;;AAGlB,UAAW;EACP,cAAc,EAAE,IAAI;;AAGxB,IAAK;EACD,MAAM,EAAE,KAAK;EACb,KAAK,EAAE,KAAK;EACZ,MAAM,EAAE,iBAAqB;EAC7B,aAAa,EAAE,GAAG;EAClB,OAAO,EAAE,YAAY;;AAGzB,UAAW;EACP,gBAAgB,EDrBP,OAAiB;;ACwB9B,QAAS;EACL,KAAK,EAAE,KAAK;EACZ,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,IAAI;;AAGb,cAAe;EACX,KAAK,EAAE,KAAK;;AAGhB,cAAe;EACX,gBAAgB,EAAE,KAAK;EACvB,OAAO,EAAE,KAAK;EACd,KAAK,EAAE,KAAK;EACZ,MAAM,EAAE,IAAI;;AAGhB,yBAAyB;AAEzB,MAAO;EACH,gBAAgB,EAAE,KAAK;EACvB,KAAK,EAAE,KAAK;;AAGhB,WAAY;EACR,WAAW,EAAE,IAAI;EACjB,gBAAgB,EAAE,KAAK;EACvB,UAAU,EAAE,IAAI;EAEhB,QAAQ,EAAE,KAAK;EACf,GAAG,EAAE,CAAC;EACN,KAAK,EAAE,IAAI;EACX,OAAO,EAAE,GAAG;;AAGhB,cAAe;EACX,WAAW,EAAE,IAAI;EACjB,MAAM,EAAE,KAAK;;AAGjB,YAAa;EACT,OAAO,EAAE,KAAK;EACd,WAAW,EAAE,IAAI;EACjB,MAAM,EAAE,IAAI;;AAGhB,kBAAmB;EACf,OAAO,EAAE,KAAK;EACd,WAAW,EAAE,IAAI;EACjB,YAAY,EAAE,IAAI;EAClB,MAAM,EAAE,IAAI;;AAIhB,iBAAkB;EACd,KAAK,EAAE,KAAK;;AAGhB,iBAAkB;EACd,MAAM,EAAE,eAAe;;AAG3B,2BAA4B;EACxB,WAAW,EAAE,IAAI;;AAGrB,eAAgB;EACZ,WAAW,EAAE,IAAI;EACjB,WAAW,EAAE,CAAC;EACd,cAAc,EAAE,CAAC;;AAGrB,wBAAwB;AAExB,MAAO;EACH,gBAAgB,EAAE,KAAK;EACvB,MAAM,EAAE,IAAI;EAEZ,QAAQ,EAAE,KAAK;EACf,MAAM,EAAE,CAAC;EACT,KAAK,EAAE,IAAI;EACX,OAAO,EAAE,GAAG;;AAGhB,gBAAiB;EACb,KAAK,EAAE,KAAK;;AAGhB,uBAAwB;EACpB,KAAK,EDjHI,OAAiB;;ACoH9B,sBAAuB;EACnB,KAAK,EDpHM,sBAAmB", +"mappings": "AAAA,YAAY;ACCJ,oBAAS;AAEjB,aAAa;AAEb,KAAM;EACF,KAAK,EAAE,OAAO;;AAGlB,UAAW;EACP,cAAc,EAAE,IAAI;;AAGxB,IAAK;EACD,MAAM,EAAE,KAAK;EACb,KAAK,EAAE,KAAK;EACZ,MAAM,EAAE,iBAAqB;EAC7B,aAAa,EAAE,GAAG;EAClB,OAAO,EAAE,YAAY;;AAGzB,UAAW;EACP,gBAAgB,EDrBP,OAAiB;;ACwB9B,QAAS;EACL,KAAK,EAAE,KAAK;EACZ,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,IAAI;;AAGb,cAAe;EACX,KAAK,EAAE,KAAK;;AAGhB,aAAc;EACV,SAAS,EAAE,kBAAiB;;AAGhC,cAAe;EACX,gBAAgB,EAAE,KAAK;EACvB,OAAO,EAAE,KAAK;EACd,KAAK,EAAE,KAAK;EACZ,MAAM,EAAE,IAAI;;AAGhB,yBAAyB;AAEzB,MAAO;EACH,gBAAgB,EAAE,KAAK;EACvB,KAAK,EAAE,KAAK;;AAGhB,WAAY;EACR,WAAW,EAAE,IAAI;EACjB,gBAAgB,EAAE,KAAK;EACvB,UAAU,EAAE,IAAI;EAEhB,QAAQ,EAAE,KAAK;EACf,GAAG,EAAE,CAAC;EACN,KAAK,EAAE,IAAI;EACX,OAAO,EAAE,GAAG;;AAGhB,cAAe;EACX,WAAW,EAAE,IAAI;EACjB,MAAM,EAAE,KAAK;;AAGjB,YAAa;EACT,OAAO,EAAE,KAAK;EACd,WAAW,EAAE,IAAI;EACjB,MAAM,EAAE,IAAI;;AAGhB,kBAAmB;EACf,OAAO,EAAE,KAAK;EACd,WAAW,EAAE,IAAI;EACjB,YAAY,EAAE,IAAI;EAClB,MAAM,EAAE,IAAI;;AAIhB,iBAAkB;EACd,KAAK,EAAE,KAAK;;AAGhB,iBAAkB;EACd,MAAM,EAAE,eAAe;;AAG3B,2BAA4B;EACxB,WAAW,EAAE,IAAI;;AAGrB,eAAgB;EACZ,WAAW,EAAE,IAAI;EACjB,WAAW,EAAE,CAAC;EACd,cAAc,EAAE,CAAC;;AAGrB,iBAAkB;EACd,WAAW,EAAE,KAAK;;AAGtB,wBAAwB;AAExB,MAAO;EACH,gBAAgB,EAAE,KAAK;EACvB,MAAM,EAAE,IAAI;EAEZ,QAAQ,EAAE,KAAK;EACf,MAAM,EAAE,CAAC;EACT,KAAK,EAAE,IAAI;EACX,OAAO,EAAE,GAAG;;AAGhB,gBAAiB;EACb,KAAK,EAAE,KAAK;;AAGhB,uBAAwB;EACpB,KAAK,EDzHI,OAAiB;;AC4H9B,sBAAuB;EACnB,KAAK,ED5HM,sBAAmB", "sources": ["variables.scss","styles.scss"], "names": [], "file": "styles.css" diff --git a/css/styles.scss b/css/styles.scss index b6a1923..90e8f58 100644 --- a/css/styles.scss +++ b/css/styles.scss @@ -33,6 +33,10 @@ color: white; } +.font-size-lg { + font-size: 1.75rem!important; +} + .notch-padding { background-color: black; display: block; @@ -95,6 +99,10 @@ header { padding-bottom: 0; } +.no-image-padding { + padding-top: 115px; +} + /* Bottom nav styling */ footer { diff --git a/node_modules/.DS_Store b/node_modules/.DS_Store index 4a049db..947bbd1 100644 Binary files a/node_modules/.DS_Store and b/node_modules/.DS_Store differ diff --git a/node_modules/.package-lock.json b/node_modules/.package-lock.json index a6f98ac..80e5d91 100644 --- a/node_modules/.package-lock.json +++ b/node_modules/.package-lock.json @@ -1,6 +1,6 @@ { "name": "dig4104c", - "version": "1.0.0", + "version": "0.0.1", "lockfileVersion": 2, "requires": true, "packages": { @@ -9,6 +9,14 @@ "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz", "integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw==" }, + "node_modules/js-cookie": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.1.tgz", + "integrity": "sha512-+0rgsUXZu4ncpPxRL+lNEptWMOWl9etvPHc/koSRp6MPwpRYAhmk0dUG00J4bxVV3r9uUzfo24wW0knS07SKSw==", + "engines": { + "node": ">=12" + } + }, "node_modules/tether": { "version": "1.4.7", "resolved": "https://registry.npmjs.org/tether/-/tether-1.4.7.tgz", diff --git a/node_modules/js-cookie/.DS_Store b/node_modules/js-cookie/.DS_Store new file mode 100644 index 0000000..a6346d0 Binary files /dev/null and b/node_modules/js-cookie/.DS_Store differ diff --git a/node_modules/js-cookie/LICENSE b/node_modules/js-cookie/LICENSE new file mode 100644 index 0000000..3c581ca --- /dev/null +++ b/node_modules/js-cookie/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2018 Copyright 2018 Klaus Hartl, Fagner Brack, GitHub Contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/js-cookie/README.md b/node_modules/js-cookie/README.md new file mode 100644 index 0000000..582d2e5 --- /dev/null +++ b/node_modules/js-cookie/README.md @@ -0,0 +1,351 @@ +

+ +

+ +# JavaScript Cookie [![Build Status](https://travis-ci.com/js-cookie/js-cookie.svg?branch=master)](https://travis-ci.com/js-cookie/js-cookie) [![BrowserStack Status](https://www.browserstack.com/automate/badge.svg?badge_key=b3VDaHAxVDg0NDdCRmtUOWg0SlQzK2NsRVhWTjlDQS9qdGJoak1GMzJiVT0tLVhwZHNvdGRoY284YVRrRnI3eU1JTnc9PQ==--5e88ffb3ca116001d7ef2cfb97a4128ac31174c2)](https://www.browserstack.com/automate/public-build/b3VDaHAxVDg0NDdCRmtUOWg0SlQzK2NsRVhWTjlDQS9qdGJoak1GMzJiVT0tLVhwZHNvdGRoY284YVRrRnI3eU1JTnc9PQ==--5e88ffb3ca116001d7ef2cfb97a4128ac31174c2) [![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://standardjs.com) [![Code Climate](https://codeclimate.com/github/js-cookie/js-cookie.svg)](https://codeclimate.com/github/js-cookie/js-cookie) [![npm](https://img.shields.io/github/package-json/v/js-cookie/js-cookie)](https://www.npmjs.com/package/js-cookie) [![size](https://img.shields.io/bundlephobia/minzip/js-cookie/3)](https://www.npmjs.com/package/js-cookie) [![jsDelivr Hits](https://data.jsdelivr.com/v1/package/npm/js-cookie/badge?style=rounded)](https://www.jsdelivr.com/package/npm/js-cookie) + +A simple, lightweight JavaScript API for handling cookies + +- Works in [all](https://www.browserstack.com/automate/public-build/b3VDaHAxVDg0NDdCRmtUOWg0SlQzK2NsRVhWTjlDQS9qdGJoak1GMzJiVT0tLVhwZHNvdGRoY284YVRrRnI3eU1JTnc9PQ==--5e88ffb3ca116001d7ef2cfb97a4128ac31174c2) browsers +- Accepts [any](#encoding) character +- [Heavily](test) tested +- No dependency +- Supports ES modules +- Supports AMD/CommonJS +- [RFC 6265](https://tools.ietf.org/html/rfc6265) compliant +- Useful [Wiki](https://github.com/js-cookie/js-cookie/wiki) +- Enable [custom encoding/decoding](#converters) +- **< 800 bytes** gzipped! + +**πŸ‘‰πŸ‘‰ If you're viewing this at https://github.com/js-cookie/js-cookie, you're reading the documentation for the master branch. +[View documentation for the latest release.](https://github.com/js-cookie/js-cookie/tree/latest#readme) πŸ‘ˆπŸ‘ˆ** + +## Installation + +### NPM + +JavaScript Cookie supports [npm](https://www.npmjs.com/package/js-cookie) under the name `js-cookie`. + +``` +$ npm i js-cookie +``` + +The npm package has a `module` field pointing to an ES module variant of the library, mainly to provide support for ES module aware bundlers, whereas its `browser` field points to an UMD module for full backward compatibility. + +### Direct download + +Starting with version 3 [releases](https://github.com/js-cookie/js-cookie/releases) are distributed with two variants of this library, an ES module as well as an UMD module. + +Note the different extensions: `.mjs` denotes the ES module, whereas `.js` is the UMD one. + +Example for how to load the ES module in a browser: + +```html + + +``` + +_Not all browsers support ES modules natively yet_. For this reason the npm package/release provides both the ES and UMD module variant and you may want to include the ES module along with the UMD fallback to account for this: + +```html + + +``` + +Here we're loading the nomodule script in a deferred fashion, because ES modules are deferred by default. This may not be strictly necessary depending on how you're using the library. + +### CDN + +Alternatively, include it via [jsDelivr CDN](https://www.jsdelivr.com/package/npm/js-cookie). + +## ES Module + +Example for how to import the ES module from another module: + +```javascript +import Cookies from 'js-cookie' + +Cookies.set('foo', 'bar') +``` + +## Basic Usage + +Create a cookie, valid across the entire site: + +```javascript +Cookies.set('name', 'value') +``` + +Create a cookie that expires 7 days from now, valid across the entire site: + +```javascript +Cookies.set('name', 'value', { expires: 7 }) +``` + +Create an expiring cookie, valid to the path of the current page: + +```javascript +Cookies.set('name', 'value', { expires: 7, path: '' }) +``` + +Read cookie: + +```javascript +Cookies.get('name') // => 'value' +Cookies.get('nothing') // => undefined +``` + +Read all visible cookies: + +```javascript +Cookies.get() // => { name: 'value' } +``` + +_Note: It is not possible to read a particular cookie by passing one of the cookie attributes (which may or may not +have been used when writing the cookie in question):_ + +```javascript +Cookies.get('foo', { domain: 'sub.example.com' }) // `domain` won't have any effect...! +``` + +The cookie with the name `foo` will only be available on `.get()` if it's visible from where the +code is called; the domain and/or path attribute will not have an effect when reading. + +Delete cookie: + +```javascript +Cookies.remove('name') +``` + +Delete a cookie valid to the path of the current page: + +```javascript +Cookies.set('name', 'value', { path: '' }) +Cookies.remove('name') // fail! +Cookies.remove('name', { path: '' }) // removed! +``` + +_IMPORTANT! When deleting a cookie and you're not relying on the [default attributes](#cookie-attributes), you must pass the exact same path and domain attributes that were used to set the cookie:_ + +```javascript +Cookies.remove('name', { path: '', domain: '.yourdomain.com' }) +``` + +_Note: Removing a nonexistent cookie neither raises any exception nor returns any value._ + +## Namespace conflicts + +If there is any danger of a conflict with the namespace `Cookies`, the `noConflict` method will allow you to define a new namespace and preserve the original one. This is especially useful when running the script on third party sites e.g. as part of a widget or SDK. + +```javascript +// Assign the js-cookie api to a different variable and restore the original "window.Cookies" +var Cookies2 = Cookies.noConflict() +Cookies2.set('name', 'value') +``` + +_Note: The `.noConflict` method is not necessary when using AMD or CommonJS, thus it is not exposed in those environments._ + +## Encoding + +This project is [RFC 6265](http://tools.ietf.org/html/rfc6265#section-4.1.1) compliant. All special characters that are not allowed in the cookie-name or cookie-value are encoded with each one's UTF-8 Hex equivalent using [percent-encoding](http://en.wikipedia.org/wiki/Percent-encoding). +The only character in cookie-name or cookie-value that is allowed and still encoded is the percent `%` character, it is escaped in order to interpret percent input as literal. +Please note that the default encoding/decoding strategy is meant to be interoperable [only between cookies that are read/written by js-cookie](https://github.com/js-cookie/js-cookie/pull/200#discussion_r63270778). To override the default encoding/decoding strategy you need to use a [converter](#converters). + +_Note: According to [RFC 6265](https://tools.ietf.org/html/rfc6265#section-6.1), your cookies may get deleted if they are too big or there are too many cookies in the same domain, [more details here](https://github.com/js-cookie/js-cookie/wiki/Frequently-Asked-Questions#why-are-my-cookies-being-deleted)._ + +## Cookie Attributes + +Cookie attribute defaults can be set globally by creating an instance of the api via `withAttributes()`, or individually for each call to `Cookies.set(...)` by passing a plain object as the last argument. Per-call attributes override the default attributes. + +### expires + +Define when the cookie will be removed. Value must be a [`Number`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number) which will be interpreted as days from time of creation or a [`Date`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date) instance. If omitted, the cookie becomes a session cookie. + +To create a cookie that expires in less than a day, you can check the [FAQ on the Wiki](https://github.com/js-cookie/js-cookie/wiki/Frequently-Asked-Questions#expire-cookies-in-less-than-a-day). + +**Default:** Cookie is removed when the user closes the browser. + +**Examples:** + +```javascript +Cookies.set('name', 'value', { expires: 365 }) +Cookies.get('name') // => 'value' +Cookies.remove('name') +``` + +### path + +A [`String`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String) indicating the path where the cookie is visible. + +**Default:** `/` + +**Examples:** + +```javascript +Cookies.set('name', 'value', { path: '' }) +Cookies.get('name') // => 'value' +Cookies.remove('name', { path: '' }) +``` + +**Note regarding Internet Explorer:** + +> Due to an obscure bug in the underlying WinINET InternetGetCookie implementation, IE’s document.cookie will not return a cookie if it was set with a path attribute containing a filename. + +(From [Internet Explorer Cookie Internals (FAQ)](http://blogs.msdn.com/b/ieinternals/archive/2009/08/20/wininet-ie-cookie-internals-faq.aspx)) + +This means one cannot set a path using `window.location.pathname` in case such pathname contains a filename like so: `/check.html` (or at least, such cookie cannot be read correctly). + +In fact, you should never allow untrusted input to set the cookie attributes or you might be exposed to a [XSS attack](https://github.com/js-cookie/js-cookie/issues/396). + +### domain + +A [`String`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String) indicating a valid domain where the cookie should be visible. The cookie will also be visible to all subdomains. + +**Default:** Cookie is visible only to the domain or subdomain of the page where the cookie was created, except for Internet Explorer (see below). + +**Examples:** + +Assuming a cookie that is being created on `site.com`: + +```javascript +Cookies.set('name', 'value', { domain: 'subdomain.site.com' }) +Cookies.get('name') // => undefined (need to read at 'subdomain.site.com') +``` + +**Note regarding Internet Explorer default behavior:** + +> Q3: If I don’t specify a DOMAIN attribute (for) a cookie, IE sends it to all nested subdomains anyway? +> A: Yes, a cookie set on example.com will be sent to sub2.sub1.example.com. +> Internet Explorer differs from other browsers in this regard. + +(From [Internet Explorer Cookie Internals (FAQ)](http://blogs.msdn.com/b/ieinternals/archive/2009/08/20/wininet-ie-cookie-internals-faq.aspx)) + +This means that if you omit the `domain` attribute, it will be visible for a subdomain in IE. + +### secure + +Either `true` or `false`, indicating if the cookie transmission requires a secure protocol (https). + +**Default:** No secure protocol requirement. + +**Examples:** + +```javascript +Cookies.set('name', 'value', { secure: true }) +Cookies.get('name') // => 'value' +Cookies.remove('name') +``` + +### sameSite + +A [`String`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String), allowing to control whether the browser is sending a cookie along with cross-site requests. + +Default: not set. + +**Note that more recent browsers are making "Lax" the default value even without specifiying anything here.** + +**Examples:** + +```javascript +Cookies.set('name', 'value', { sameSite: 'strict' }) +Cookies.get('name') // => 'value' +Cookies.remove('name') +``` + +### Setting up defaults + +```javascript +const api = Cookies.withAttributes({ path: '/', domain: '.example.com' }) +``` + +## Converters + +### Read + +Create a new instance of the api that overrides the default decoding implementation. All get methods that rely in a proper decoding to work, such as `Cookies.get()` and `Cookies.get('name')`, will run the given converter for each cookie. The returned value will be used as the cookie value. + +Example from reading one of the cookies that can only be decoded using the `escape` function: + +```javascript +document.cookie = 'escaped=%u5317' +document.cookie = 'default=%E5%8C%97' +var cookies = Cookies.withConverter({ + read: function (value, name) { + if (name === 'escaped') { + return unescape(value) + } + // Fall back to default for all other cookies + return Cookies.converter.read(value, name) + } +}) +cookies.get('escaped') // εŒ— +cookies.get('default') // εŒ— +cookies.get() // { escaped: 'εŒ—', default: 'εŒ—' } +``` + +### Write + +Create a new instance of the api that overrides the default encoding implementation: + +```javascript +Cookies.withConverter({ + write: function (value, name) { + return value.toUpperCase() + } +}) +``` + +## TypeScript declarations + +``` +$ npm i @types/js-cookie +``` + +## Server-side integration + +Check out the [Servers Docs](SERVER_SIDE.md) + +## Contributing + +Check out the [Contributing Guidelines](CONTRIBUTING.md) + +## Security + +For vulnerability reports, send an e-mail to `js-cookie at googlegroups dot com` + +## Releasing + +We are using [release-it](https://www.npmjs.com/package/release-it) for automated releasing. + +Start a dry run to see what would happen: + +``` +$ npm run release minor -- --dry-run +``` + +Do a real release (publishes both to npm as well as create a new release on GitHub): + +``` +$ npm run release minor +``` + +_GitHub releases are created as a draft and need to be published manually! +(This is so we are able to craft suitable release notes before publishing.)_ + +## Supporters + +

+ +

+ +Many thanks to [BrowserStack](https://www.browserstack.com/) for providing unlimited browser testing free of cost. + +## Authors + +- [Klaus Hartl](https://github.com/carhartl) +- [Fagner Brack](https://github.com/FagnerMartinsBrack) +- And awesome [contributors](https://github.com/js-cookie/js-cookie/graphs/contributors) diff --git a/node_modules/js-cookie/dist/js.cookie.js b/node_modules/js-cookie/dist/js.cookie.js new file mode 100644 index 0000000..d36c82b --- /dev/null +++ b/node_modules/js-cookie/dist/js.cookie.js @@ -0,0 +1,147 @@ +/*! js-cookie v3.0.1 | MIT */ +; +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global = global || self, (function () { + var current = global.Cookies; + var exports = global.Cookies = factory(); + exports.noConflict = function () { global.Cookies = current; return exports; }; + }())); +}(this, (function () { 'use strict'; + + /* eslint-disable no-var */ + function assign (target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + for (var key in source) { + target[key] = source[key]; + } + } + return target + } + /* eslint-enable no-var */ + + /* eslint-disable no-var */ + var defaultConverter = { + read: function (value) { + if (value[0] === '"') { + value = value.slice(1, -1); + } + return value.replace(/(%[\dA-F]{2})+/gi, decodeURIComponent) + }, + write: function (value) { + return encodeURIComponent(value).replace( + /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g, + decodeURIComponent + ) + } + }; + /* eslint-enable no-var */ + + /* eslint-disable no-var */ + + function init (converter, defaultAttributes) { + function set (key, value, attributes) { + if (typeof document === 'undefined') { + return + } + + attributes = assign({}, defaultAttributes, attributes); + + if (typeof attributes.expires === 'number') { + attributes.expires = new Date(Date.now() + attributes.expires * 864e5); + } + if (attributes.expires) { + attributes.expires = attributes.expires.toUTCString(); + } + + key = encodeURIComponent(key) + .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent) + .replace(/[()]/g, escape); + + var stringifiedAttributes = ''; + for (var attributeName in attributes) { + if (!attributes[attributeName]) { + continue + } + + stringifiedAttributes += '; ' + attributeName; + + if (attributes[attributeName] === true) { + continue + } + + // Considers RFC 6265 section 5.2: + // ... + // 3. If the remaining unparsed-attributes contains a %x3B (";") + // character: + // Consume the characters of the unparsed-attributes up to, + // not including, the first %x3B (";") character. + // ... + stringifiedAttributes += '=' + attributes[attributeName].split(';')[0]; + } + + return (document.cookie = + key + '=' + converter.write(value, key) + stringifiedAttributes) + } + + function get (key) { + if (typeof document === 'undefined' || (arguments.length && !key)) { + return + } + + // To prevent the for loop in the first place assign an empty array + // in case there are no cookies at all. + var cookies = document.cookie ? document.cookie.split('; ') : []; + var jar = {}; + for (var i = 0; i < cookies.length; i++) { + var parts = cookies[i].split('='); + var value = parts.slice(1).join('='); + + try { + var foundKey = decodeURIComponent(parts[0]); + jar[foundKey] = converter.read(value, foundKey); + + if (key === foundKey) { + break + } + } catch (e) {} + } + + return key ? jar[key] : jar + } + + return Object.create( + { + set: set, + get: get, + remove: function (key, attributes) { + set( + key, + '', + assign({}, attributes, { + expires: -1 + }) + ); + }, + withAttributes: function (attributes) { + return init(this.converter, assign({}, this.attributes, attributes)) + }, + withConverter: function (converter) { + return init(assign({}, this.converter, converter), this.attributes) + } + }, + { + attributes: { value: Object.freeze(defaultAttributes) }, + converter: { value: Object.freeze(converter) } + } + ) + } + + var api = init(defaultConverter, { path: '/' }); + /* eslint-enable no-var */ + + return api; + +}))); diff --git a/node_modules/js-cookie/dist/js.cookie.min.js b/node_modules/js-cookie/dist/js.cookie.min.js new file mode 100644 index 0000000..90a7672 --- /dev/null +++ b/node_modules/js-cookie/dist/js.cookie.min.js @@ -0,0 +1,2 @@ +/*! js-cookie v3.0.1 | MIT */ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self,function(){var n=e.Cookies,o=e.Cookies=t();o.noConflict=function(){return e.Cookies=n,o}}())}(this,(function(){"use strict";function e(e){for(var t=1;t=12" + } +} diff --git a/package-lock.json b/package-lock.json index e731b33..62902bc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,15 +1,16 @@ { "name": "dig4104c", - "version": "1.0.0", + "version": "0.1.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "dig4104c", - "version": "1.0.0", + "version": "0.0.1", "license": "ISC", "dependencies": { "jquery": "^3.6.0", + "js-cookie": "^3.0.1", "ucf-athena-framework": "^1.1.0" } }, @@ -18,6 +19,14 @@ "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz", "integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw==" }, + "node_modules/js-cookie": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.1.tgz", + "integrity": "sha512-+0rgsUXZu4ncpPxRL+lNEptWMOWl9etvPHc/koSRp6MPwpRYAhmk0dUG00J4bxVV3r9uUzfo24wW0knS07SKSw==", + "engines": { + "node": ">=12" + } + }, "node_modules/tether": { "version": "1.4.7", "resolved": "https://registry.npmjs.org/tether/-/tether-1.4.7.tgz", @@ -39,6 +48,11 @@ "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz", "integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw==" }, + "js-cookie": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.1.tgz", + "integrity": "sha512-+0rgsUXZu4ncpPxRL+lNEptWMOWl9etvPHc/koSRp6MPwpRYAhmk0dUG00J4bxVV3r9uUzfo24wW0knS07SKSw==" + }, "tether": { "version": "1.4.7", "resolved": "https://registry.npmjs.org/tether/-/tether-1.4.7.tgz", diff --git a/package.json b/package.json index 7398d6c..279dc39 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "dig4104c", - "version": "0.0.1", + "version": "0.1.0", "description": "UCF Mobile App Prototype", "main": "index.html", "scripts": { @@ -18,6 +18,7 @@ "homepage": "https://github.com/mikojimnz/DIG4104C#readme", "dependencies": { "jquery": "^3.6.0", + "js-cookie": "^3.0.1", "ucf-athena-framework": "^1.1.0" } } diff --git a/scripts/app.js b/scripts/app.js new file mode 100644 index 0000000..77ae5c6 --- /dev/null +++ b/scripts/app.js @@ -0,0 +1,72 @@ +/* Set font size based on preferences*/ +function setFontSize() { + let accessibleText = "a, button:not('.text-size-toggle'), h1, h2, h3, h4, h5, h6, p"; + + switch(Cookies.get('fontSize')) { + case "sm": + $("#text-size-sm").addClass("btn-primary"); + $("#text-size-rg").removeClass("btn-primary"); + $("#text-size-lg").removeClass("btn-primary"); + + $("#text-size-sm").removeClass("btn-default"); + $("#text-size-rg").addClass("btn-default"); + $("#text-size-lg").addClass("btn-default"); + + $(accessibleText).addClass("font-size-sm"); + $(accessibleText).removeClass("font-size-lg"); + break; + case "lg": + $("#text-size-sm").removeClass("btn-primary"); + $("#text-size-rg").removeClass("btn-primary"); + $("#text-size-lg").addClass("btn-primary"); + + $("#text-size-sm").addClass("btn-default"); + $("#text-size-rg").addClass("btn-default"); + $("#text-size-lg").removeClass("btn-default"); + + $(accessibleText).removeClass("font-size-sm"); + $(accessibleText).addClass("font-size-lg"); + break; + default: + $("#text-size-sm").removeClass("btn-primary"); + $("#text-size-rg").addClass("btn-primary"); + $("#text-size-lg").removeClass("btn-primary"); + + $("#text-size-sm").addClass("btn-default"); + $("#text-size-rg").removeClass("btn-default"); + $("#text-size-lg").addClass("btn-default"); + + $(accessibleText).removeClass("font-size-sm"); + $(accessibleText).removeClass("font-size-lg"); + break; + } +}; + +/* Toggle clickable buttons */ +$(".btn-toggle").on("click", function(){ + if ($(this).hasClass("btn-success")) { + $(this).addClass("btn-default"); + $(this).removeClass("btn-success"); + $(this).text("Disabled"); + } else { + $(this).addClass("btn-success"); + $(this).removeClass("btn-default"); + $(this).text("Enabled"); + } + }); + +/* Toggle font size buttons */ +$("#text-size-sm").on("click", function() { + Cookies.set('fontSize', 'sm'); + setFontSize() +}); +$("#text-size-rg").on("click", function() { + Cookies.set('fontSize', 'rg'); + setFontSize() +}); +$("#text-size-lg").on("click", function() { + Cookies.set('fontSize', 'lg'); + setFontSize() +}); + +setFontSize()