uPortal-web-components - Vaadin Add-on Directory
A collection of uPortal Web Components and JavaScript utilities
# ESCO Content Menu
[![NPM Version](https://img.shields.io/npm/v/@uportal/esco-content-menu.svg)](https://www.npmjs.com/package/@uportal/esco-content-menu)
[![Maven Central](https://maven-badges.herokuapp.com/maven-central/org.webjars.npm/uportal__esco-content-menu/badge.svg)](https://maven-badges.herokuapp.com/maven-central/org.webjars.npm/uportal__esco-content-menu)
[![Build Status](https://travis-ci.org/uPortal-contrib/uPortal-web-components.svg?branch=master)](https://travis-ci.org/uPortal-contrib/uPortal-web-components)
## Demo
## Installation
```bash
# install with npm
npm install @uportal/esco-content-menu
# install with yarn
yarn add @uportal/esco-content-menu
```
_install with maven_
```xml
org.webjars.npm
uportal__esco-content-menu
{version number goes here}
```
_install with gradle_
```gradle
compile 'org.webjars.npm:uportal__esco-content-menu:{version number goes here}'
```
## Usage as Web Component
### The hamburger menu
This is the main component that show a hamburger menu and that open an entire page with `content-menu` component.
#### Html
```html
```
For some integration you could need a bit more, like into uPortal you will need to add a parent div and to apply on his closest parent `section` a style `float: left`.
#### Properties
- `context-api-url`: type: `String`, default: `/uPortal`, usefull to provide a different uPortal context on which to do request
- `favorite-api-url`: type: `String`, default: `/uPortal/api/layout`, the uri/url of the favorites api
- `layout-api-url`: type: `String`, default: `/uPortal/api/v4-3/dlm/layout.json`, the uri/url of the layout api to request the favorite list in the oser defined order (only needed to get favorite's order defined by the user)
- `portlet-api-url`: type: `String`, default: `/uPortal/api/v4-3/dlm/portletRegistry.json`, the uri/url of the portletRegistry api to obtains user authorized portlet list
- `userInfo-api-url`: type: `String`, default: `/uPortal/api/v5-1/userinfo`, url/uri on which the api request is done to obtain user information and the jwt token
- `organization-api-url`: type: `String`, optional, an uri/url of an api to retrieve organization informations, any json format is accepted, but configure `user-org-id-attribute-name`, `user-all-orgs-id-attribute-name`, `org-logo-url-attribute-name` to work with.
- `sign-out-url`: type: `String`, default: `/uPortal/Logout`, an uri/url to call when user logout (for a logout button),
- `default-org-logo`: type: `String`, required: true, an url/uri to provide an institutional picture when none is found from an optional api (not provided into uPortal),
- `user-info-portlet-url`: type: `String`, default: `''`, an url/uri to the user information application,
- `switch-org-portlet-url`: type: `String`, default: `''`, an optional url/url of a rest api to obtain institutional organization information,
- `favorites-portlet-card-size`: type: possible value `auto|large|medium|small|smaller`, default: `auto`, define the size of portlet-cards component into `favorite-content` component part,
- `grid-portlet-card-size`: type: possible value `auto|large|medium|small|smaller`, default: `auto`, define the size of `portlet-cards` component into `grid-content` component part,
- `hide-action-mode: type`: possible value `auto|always|never`, default: `auto`, define if we should show the actions, `auto` don't show on `small` breakpoint,
- `user-org-id-attribute-name`: type: `String`, default: `'ESCOSIRENCourant[0]'`, the attribute object path to obtain the id of the organization to retrieve from the organization's api
- `user-all-orgs-id-attribute-name`: type: `String`, default: `'ESCOSIREN`, the attribute object path to obtain all ids of the organizations linked to the user and to retrieve from the organization's api
- `org-logo-url-attribute-name`: type: `String`, default: `'otherAttributes.ESCOStructureLogo[0]'`, the attribute object path to obtain the organization Picture from organization details obtained from the organization's api
- `debug`: type: `Boolean`, default: `false`, for the demo/debug mode to be able to run in a standalone way (disable api call).
#### Slots
The HTML content of the component can also be modified using [slots](https://vuejs.org/v2/guide/components-slots.html).
##### Menu Icon
The `menu-icon` slot permit to apply a custom icon replacing the default Hamburger one. As example:
```html
```
##### Menu Content
The `menu-content` slot permit to apply an other content than the esco-content-menu sub-component.
```html
whatever...
```
### The content menu
This component is a main one as it will load into one page all main elements (the user + organization information, the favorites and the list of services )
#### Html
```html
```
#### Properties
This use the same properties from the `hamburger-menu` (see on `hamburger-menu` details):
- `context-api-url`
- `favorite-api-url`
- `layout-api-url`
- `organization-api-url`
- `user-info-api-url`
- `portlet-api-url`
- `sign-out-url`
- `default-org-logo`
- `user-info-portlet-url`
- `switch-org-portlet-url`
- `favorites-portlet-card-size`
- `grid-portlet-card-size`
- `hide-action-mode`
- `user-org-id-attribute-name`
- `user-all-orgs-id-attribute-name`
- `org-logo-url-attribute-name`
- `debug`
and with additional properties to work with the `hamburger-menu`:
- `call-on-close`: type: `Function`, default: `{}`, provide to this property a callback function to call after clicking on the header-button close of the `header-buttons` component.
- `is-hidden`: type: `Boolean`, default: `false`, used by the `hamburger-menu` to indicate the state of the page.
- `id`: type: `String`, default: `null`, provide an id to be able to select the dome element, as example if you want to manage manualy an `hamburger-menu`
### The content grid
This component provide a flexbox way to show a list of `portlet-card`, depending on uPortal rest-api.
#### Html
```html
```
#### Properties
Standalone properties:
- `background-color`: type: `String`, default: `rgba(0, 0, 0, 0)`, to apply a different background-color
- `call-after-action`: type: `Function`, default: `undefined`, a callback function to call into `portlet-card` embeding `action-favorite` after adding portlet to favorites,
- `context-api-url`: type: `String`, default: `/uPortal`, usefull to provide a different uPortal context on which to do request,
- `favorite-api-url`: type: `String`, default: `/uPortal/api/layout`, the uri/url of the favorites api
- `layout-api-url`: type: `String`, default: `/uPortal/api/v4-3/dlm/layout.json`, the uri/url of the layout api to request the favorite list in the other defined order (only needed to get favorite's order defined by the user)
- `portlet-api-url`: type: `String`, default: `/uPortal/api/v4-3/dlm/portletRegistry.json`, the uri/url of the portletRegistry api to obtains user authorized portlet list
- `userInfo-api-url`: type: `String`, default: `/uPortal/api/v5-1/userinfo`, url/uri on which the api request is done to obtain user information and the jwt token
- `portlet-card-size`: type: possible value `auto|large|medium|small|smaller|custom`, default: `auto`, define the size of `portlet-cards` component.
- `hide-action: type`: `Boolean`, default: `false`, define to hide or not the `action-favorite` button defined into `portlet-card`
- `show-footer-categories`: `Boolean`, default: `false`, define to display category dropdown filter near bottom of grid
- `hide-title`: `Boolean`, default: `false`, define to remove the title area from the grid, useful when a basic grid is desired
- `debug`: type: `Boolean`, default: `false`, for the demo/debug mode to be able to run in a standalone way (disable api call)
and additional properties to work with the parent component `content-menu`:
- `parent-screen-size`: type: possible value `large|medium|small|smaller|custom`, default: `medium`, permit to indicate the breakpoint view of the parent.
- `portlets`: type: `Array`, default: `undefined`, used if the list of portlets is loaded and provided from a parent component,
- `favorites`: type: `Array`, default: `undefined`, used if the list of favorites portlets loaded and provided from a parent component,
#### Slots
The HTML content of the component can also be modified using [slots](https://vuejs.org/v2/guide/components-slots.html).
##### Header Left
The `header-left` slot permit to apply a custom title replacing the default "All services" one. As example:
```html
Administration
```
##### Header Right
The `header-right` slot permit to apply a custom title replacing the default filter on right. As example:
```html
```
##### Footer
The `footer` slot permit to apply a custom title replacing the default filter on footer. As example:
```html
```
### The action favorite
The component `action-favorite` is really simple, it show a start button that permit to add or remove from favorites a portlet.
### Html
```html
```
#### Properties
- `call-on-toggle-fav`: type: `Function`, default: `{}`, a callback function called after the click event on the button,
- `chan-id`: type: `String`, required: `true`, the portlet id to add or remove from user favorites,
- `favorite-api-url`: type: `String`, default: `/uPortal/api/layout`, the uri/url of the favorites api,
- `user-info-api-url`: type: `String`, default: `/uPortal/api/v5-1/userinfo`, url/uri on which the api request is done to obtain user information and the jwt token,
- `fname`: type: `String`, required: `true`, the portlet fname that permit to identify the portlet into favorite's list, usefull for the callback function and apply a css class,
- `is-favorite`: type: `Boolean`, default: `false`, provide the favorite state,
- `back-ground-is-dark`: type: `Boolean`, default: `false`, permit to apply a style depending on background color, as the component is used as embeded,
- `debug`: type: `Boolean`, default: `false`, for the demo/debug mode to be able to run in a standalone way (disable favorites api call)
### The content favorites
The component is functional only into the `content-menu`, it needs that a portlet list and favorite list is passed
Somme work would be needed to move on the `content-carousel`.
### The content user
This component permit to show user information with his organization information.
Few work would be need to be able to use it as a standalone component: like having a fetch service like for portlets or favorite. But some parts are institutional developpments to be able to obtain organization informations, so we are waiting new usecase before to do something.
#### Html
Need some work for a standalone use.
#### Properties
- `context-api-url`: type: `String`, default: `/uPortal`, usefull to provide a different uPortal context on which to do request
- `org-info`: type: `Object`, default: `{}`, the current user organization detail object,
- `other-orgs`: type: `Array`, default: `[]`, all other organizations details object when the user have several,
- `user-info`: type: `Object`, required: `true`, the user information object,
- `switch-org-portlet-url`: type: `String`, default: `'''`, an url/uri where the user can switch of organization when having several (tenant use part),
- `default-org-logo`: type: `String`, required: `true`, an url/uri to provide an institutional picture when none is found from an optional api (not provided into uPortal),
- `user-info-portlet-url`: type: `String`, default: `''`, an url/uri to the user information application,
- `org-logo-url-attribute-name`: type: `String`, default: `'otherAttributes.ESCOStructureLogo[0]'`, the attribute object path to obtain the organization Picture from organization details obtained from the organization's api.
and additional properties to work with the parent component `content-menu`:
- `parent-screen-size`: type: possible value `large|medium|small|smaller`, default: `medium`, permit to indicate the breakpoint view of the parent.
### The portlet card
This component render informations about a portlet as a card.
#### Html
```html
```
#### Properties
- `portlet-desc`: type: `Object`, required: `true`, the portlet description object
- `size`: type: possible value `large|medium|small|smaller|custom`, default: `medium`, the fixed size of card to apply
- `hide-action: type`: `Boolean`, default: `false`, define to hide or not the `action-favorite` button
- `back-ground-is-dark`: type: `Boolean`, default: `false`, permit to apply a style depending on background color, as the component is used as embeded,
- `is-favorite`: type: `Boolean`, default: `false`, provide the favorite state (passed to the `action-favorite` component),
- `call-after-action`: type: `Function`, default: `{}`, callback function to call after click on `action-favorite` button (passed to the `action-favorite` component),
- `icon-background-color`: type: `String`, default: `Transparent`, could be used to apply a background-color behind a portlet icon - usecase if there isn't background on icon.
- `favorite-api-url`: type: `String`, default: `/uPortal/api/layout`, the uri/url of the favorites api (passed to the `action-favorite` component),
- `user-info-api-url`: type: `String`, default: `/uPortal/api/v5-1/userinfo`, url/uri on which the api request is done to obtain user information and the jwt token, (passed to the `action-favorite` component),
- `debug`: type: `Boolean`, default: `false`, for the demo/debug mode to be able to run in a standalone way (disable api call).
### The content grid category filter
This component is an external version of the filter built into Content Grid that allows for arbitrary placement on the page.
#### Html
```html
```
#### Properties
- none
### The ellipsis
This component permit to apply an auto-fit/trunc or a line-clamping to a text when the div size should be limited. It avoids to apply an overflow: hidden and permit to manage an ellipsis on several line.
#### Html
```html
```
#### Properties
- `message`: type: `String`, default: `''`, the text to "ellipsise",
- `line-clamp`: type: `Number`, default: `0`, when we want a number of line, else will apply an auto-fit on te available size (the parent should have a defined height),
- `line-height`: type: `String`, default: `'22px'`, the line heigth of the text is required for the auto-fit,
- `end-char`: type: `String`, default: `'...'`, a text to apply when a trunc appear,
- `end-html`: type: `String`, default: `''`, a text to apply at end of the html.
### The header buttons
This component render a header part with some main buttons, like closing the page menu or to sign out.
#### Html
```html
```
#### Properties
- `call-on-close`: type: `Function`, default: `{}`, callback function on click on the close button,
- `sign-out-url`: type: `String`, default: `/uPortal/Logout`, an uri/url to call when user logout (for a logout button),
## FAQ
- Q: What does "ESCO" mean?
- A: "ESCO" is an abbreviation of "e-scolaire", French for Online School.
### Theming
Currently this component supports [CSS Variables](https://developer.mozilla.org/en-US/docs/Web/CSS/Using_CSS_variables) for overriding button colors. Defining the following variables will change the colors for the component accordingly. They will fall back to the colors described below.
**_NOTE:_** This is only supported when the size attribute is set to `custom`.
You should define this in your custom stylesheet.
```css
:root {
--content-gridcard-padding: 5px;
--content-gridcard-border: none;
--content-gridcard-bg-color: white;
--content-gridcard-border-radius: 5px;
--content-gridcard-shadow: none;
--content-gridcard-shadow-hover: none;
--content-gridcard-size-w: 180px;
--content-gridcard-size-h: 180px;
--content-gridcard-icon-size: 75px;
--content-gridcard-icon-size: 75px;
--content-gridcard-title-fontsize: 16px;
--content-gridcard-description-fontsize: 16px;
--content-griditem-margin: 20px auto;
}
```
View on NPM
View on GitHub
uPortal-web-components version 1.12.0
### Dependencies
* @uportal/open-id-connect#^1.12.0
* datalist-polyfill#^1.22.1
* vue#^2.5.17
* vue-awesome#^3.1.2
* vue-awesome-swiper#^3.1.3
* vue-i18n#^8.1.0
uPortal-web-components version 1.12.1
### Dependencies
* @uportal/open-id-connect#^1.12.1
* datalist-polyfill#^1.22.1
* vue#^2.5.17
* vue-awesome#^3.1.2
* vue-awesome-swiper#^3.1.3
* vue-i18n#^8.1.0
uPortal-web-components version 1.13.0
### Dependencies
* @babel/plugin-proposal-optional-chaining#^7.0.0
* @uportal/open-id-connect#^1.12.1
* datalist-polyfill#^1.22.1
* vue#^2.5.17
* vue-awesome#^3.1.2
* vue-awesome-swiper#^3.1.3
* vue-i18n#^8.1.0
uPortal-web-components version 1.13.1
### Dependencies
* @babel/plugin-proposal-optional-chaining#^7.0.0
* @uportal/open-id-connect#^1.12.1
* datalist-polyfill#^1.22.1
* vue#^2.5.17
* vue-awesome#^3.1.2
* vue-awesome-swiper#^3.1.3
* vue-i18n#^8.1.0
uPortal-web-components version 1.13.2
### Dependencies
* @babel/plugin-proposal-optional-chaining#^7.0.0
* @uportal/open-id-connect#^1.13.2
* datalist-polyfill#^1.22.1
* vue#^2.5.17
* vue-awesome#^3.1.3
* vue-awesome-swiper#^3.1.3
* vue-i18n#^8.1.0
uPortal-web-components version 1.13.3
### Dependencies
* @babel/plugin-proposal-optional-chaining#^7.0.0
* @uportal/open-id-connect#^1.13.3
* datalist-polyfill#^1.22.1
* vue#^2.5.17
* vue-awesome#^3.1.3
* vue-awesome-swiper#^3.1.3
* vue-i18n#^8.1.0
uPortal-web-components version 1.13.4
### Dependencies
* @babel/plugin-proposal-optional-chaining#^7.0.0
* @uportal/open-id-connect#^1.13.4
* datalist-polyfill#^1.22.1
* vue#^2.5.17
* vue-awesome-swiper#^3.1.3
* vue-i18n#^8.1.0
uPortal-web-components version 1.13.5
### Dependencies
* @babel/plugin-proposal-optional-chaining#^7.0.0
* @uportal/open-id-connect#^1.13.5
* datalist-polyfill#^1.22.1
* vue#^2.5.17
* vue-awesome-swiper#^3.1.3
* vue-i18n#^8.1.0
uPortal-web-components version 1.13.6
### Dependencies
* @babel/plugin-proposal-optional-chaining#^7.0.0
* @uportal/open-id-connect#^1.13.6
* datalist-polyfill#^1.22.1
* vue#^2.5.17
* vue-awesome-swiper#^3.1.3
* vue-i18n#^8.2.1
uPortal-web-components version 1.13.7
### Dependencies
* @babel/plugin-proposal-optional-chaining#^7.0.0
* @uportal/open-id-connect#^1.13.7
* datalist-polyfill#^1.22.1
* vue#^2.5.17
* vue-awesome-swiper#^3.1.3
* vue-i18n#^8.2.1
uPortal-web-components version 1.14.0
### Dependencies
* @babel/plugin-proposal-optional-chaining#^7.0.0
* @uportal/open-id-connect#^1.14.0
* datalist-polyfill#^1.22.1
* vue#^2.5.17
* vue-awesome-swiper#^3.1.3
* vue-i18n#^8.2.1
uPortal-web-components version 1.14.1
### Dependencies
* @babel/plugin-proposal-optional-chaining#^7.0.0
* @uportal/open-id-connect#^1.14.1
* datalist-polyfill#^1.22.1
* vue#^2.5.17
* vue-awesome-swiper#^3.1.3
* vue-i18n#^8.2.1
uPortal-web-components version 1.14.2
### Dependencies
* @babel/plugin-proposal-optional-chaining#^7.0.0
* @uportal/open-id-connect#^1.14.2
* datalist-polyfill#^1.22.1
* vue#^2.5.17
* vue-awesome-swiper#^3.1.3
* vue-i18n#^8.2.1
uPortal-web-components version 1.15.0
### Dependencies
* @babel/plugin-proposal-optional-chaining#^7.0.0
* @uportal/open-id-connect#^1.15.0
* datalist-polyfill#^1.22.1
* vue#^2.5.17
* vue-awesome-swiper#^3.1.3
* vue-i18n#^8.2.1
uPortal-web-components version 1.16.0
### Dependencies
* @babel/plugin-proposal-optional-chaining#^7.0.0
* @uportal/open-id-connect#^1.16.0
* datalist-polyfill#^1.22.1
* vue#^2.5.17
* vue-awesome-swiper#^3.1.3
* vue-i18n#^8.2.1
uPortal-web-components version 1.16.1
### Dependencies
* @babel/plugin-proposal-optional-chaining#^7.0.0
* @uportal/open-id-connect#^1.16.1
* datalist-polyfill#^1.22.1
* vue#^2.5.17
* vue-awesome-swiper#^3.1.3
* vue-i18n#^8.2.1
uPortal-web-components version 1.16.2
### Dependencies
* @babel/plugin-proposal-optional-chaining#^7.0.0
* @uportal/open-id-connect#^1.16.2
* datalist-polyfill#^1.22.1
* vue#^2.5.17
* vue-awesome-swiper#^3.1.3
* vue-i18n#^8.2.1
uPortal-web-components version 1.17.0
### Dependencies
* @babel/plugin-proposal-optional-chaining#^7.0.0
* @uportal/open-id-connect#^1.17.0
* datalist-polyfill#^1.22.1
* vue#^2.5.17
* vue-awesome-swiper#^3.1.3
* vue-i18n#^8.2.1
uPortal-web-components version 1.18.0
### Dependencies
* @babel/plugin-proposal-optional-chaining#^7.0.0
* @uportal/open-id-connect#^1.18.0
* datalist-polyfill#^1.22.1
* vue#^2.5.17
* vue-awesome-swiper#^3.1.3
* vue-i18n#^8.2.1
uPortal-web-components version 1.18.1
### Dependencies
* @babel/plugin-proposal-optional-chaining#^7.0.0
* @uportal/open-id-connect#^1.18.1
* datalist-polyfill#^1.22.1
* vue#^2.5.17
* vue-awesome-swiper#^3.1.3
* vue-i18n#^8.2.1
uPortal-web-components version 1.18.2
### Dependencies
* @babel/plugin-proposal-optional-chaining#^7.0.0
* @uportal/open-id-connect#^1.18.2
* vue#^2.5.17
* vue-awesome-swiper#^3.1.3
* vue-i18n#^8.2.1
uPortal-web-components version 1.19.0
### Dependencies
* @babel/plugin-proposal-optional-chaining#^7.0.0
* @uportal/open-id-connect#^1.19.0
* lodash#^4.17.11
* vue#^2.5.17
* vue-awesome-swiper#^3.1.3
* vue-i18n#^8.2.1
* vue-simple-spinner#^1.2.8
uPortal-web-components version 1.19.1
### Dependencies
* @uportal/open-id-connect#^1.19.1
* lodash#^4.17.11
* vue#^2.5.20
* vue-awesome-swiper#^3.1.3
* vue-i18n#^8.4.0
* vue-simple-spinner#^1.2.8
uPortal-web-components version 1.20.0
### Dependencies
* @uportal/open-id-connect#^1.20.0
* lodash#^4.17.11
* vue#^2.5.20
* vue-awesome-swiper#^3.1.3
* vue-i18n#^8.4.0
* vue-simple-spinner#^1.2.8
uPortal-web-components version 1.21.0
### Dependencies
* @uportal/open-id-connect#^1.21.0
* lodash#^4.17.11
* vue#^2.5.20
* vue-awesome-swiper#^3.1.3
* vue-i18n#^8.4.0
* vue-simple-spinner#^1.2.8
uPortal-web-components version 1.21.1
### Dependencies
* @uportal/open-id-connect#^1.21.1
* lodash#^4.17.11
* vue#^2.5.20
* vue-awesome-swiper#^3.1.3
* vue-i18n#^8.4.0
* vue-simple-spinner#^1.2.8
uPortal-web-components version 1.21.2
### Dependencies
* @uportal/open-id-connect#^1.21.2
* lodash#^4.17.11
* vue#^2.5.20
* vue-awesome-swiper#^3.1.3
* vue-i18n#^8.4.0
* vue-simple-spinner#^1.2.8
uPortal-web-components version 1.22.0
### Dependencies
* @uportal/open-id-connect#^1.22.0
* lodash#^4.17.11
* vue#^2.5.20
* vue-awesome-swiper#^3.1.3
* vue-i18n#^8.4.0
* vue-simple-spinner#^1.2.8
uPortal-web-components version 1.22.1
### Dependencies
* @uportal/open-id-connect#^1.22.1
* lodash#^4.17.11
* vue#^2.5.20
* vue-awesome-swiper#^3.1.3
* vue-i18n#^8.4.0
* vue-simple-spinner#^1.2.8
uPortal-web-components version 1.23.0
### Dependencies
* @uportal/open-id-connect#^1.23.0
* lodash#^4.17.11
* vue#^2.5.20
* vue-awesome-swiper#^3.1.3
* vue-i18n#^8.4.0
* vue-simple-spinner#^1.2.8
uPortal-web-components version 1.24.0
### Dependencies
* @uportal/open-id-connect#^1.24.0
* lodash#^4.17.11
* vue#^2.5.20
* vue-awesome-swiper#^3.1.3
* vue-i18n#^8.4.0
* vue-simple-spinner#^1.2.8
uPortal-web-components version 1.25.0
### Dependencies
* @uportal/open-id-connect#^1.25.0
* lodash#^4.17.11
* vue#^2.6.6
* vue-awesome-swiper#^3.1.3
* vue-i18n#^8.8.2
* vue-simple-spinner#^1.2.8
uPortal-web-components version 1.26.0
### Dependencies
* @uportal/open-id-connect#^1.26.0
* lodash#^4.17.11
* vue#^2.6.6
* vue-awesome-swiper#^3.1.3
* vue-i18n#^8.8.2
* vue-simple-spinner#^1.2.8
uPortal-web-components version 1.26.1
### Dependencies
* @uportal/open-id-connect#^1.26.1
* lodash#^4.17.11
* vue#^2.6.6
* vue-awesome-swiper#^3.1.3
* vue-i18n#^8.8.2
* vue-simple-spinner#^1.2.8
uPortal-web-components version 1.26.2
### Dependencies
* @uportal/open-id-connect#^1.26.2
* lodash#^4.17.11
* vue#^2.6.6
* vue-awesome-swiper#^3.1.3
* vue-i18n#^8.8.2
* vue-simple-spinner#^1.2.8
uPortal-web-components version 1.27.0
### Dependencies
* @uportal/open-id-connect#^1.27.0
* lodash#^4.17.11
* match-sorter#^3.0.0
* vue#^2.6.6
* vue-awesome-swiper#^3.1.3
* vue-i18n#^8.8.2
* vue-simple-spinner#^1.2.8
uPortal-web-components version 1.28.0
### Dependencies
* @uportal/open-id-connect#^1.28.0
* lodash#^4.17.11
* match-sorter#^3.0.0
* vue#^2.6.6
* vue-awesome-swiper#^3.1.3
* vue-i18n#^8.8.2
* vue-simple-spinner#^1.2.8