Skip to content
Permalink
Browse files

Added the link and handlebars template webparts to the repo

  • Loading branch information...
mptolly committed Sep 27, 2017
1 parent 3405bc3 commit d8b91dc1f76a47f556c36d2bead735355615e454
Showing with 8,954 additions and 0 deletions.
  1. +37 −0 solutions/LinksAndHandlebarsTemplate/README.md
  2. +56 −0 solutions/LinksAndHandlebarsTemplate/config/config.json
  3. +3 −0 solutions/LinksAndHandlebarsTemplate/config/copy-assets.json
  4. +6 −0 solutions/LinksAndHandlebarsTemplate/config/deploy-azure-storage.json
  5. +11 −0 solutions/LinksAndHandlebarsTemplate/config/package-solution.json
  6. +9 −0 solutions/LinksAndHandlebarsTemplate/config/serve.json
  7. +46 −0 solutions/LinksAndHandlebarsTemplate/config/tslint.json
  8. +3 −0 solutions/LinksAndHandlebarsTemplate/config/write-manifests.json
  9. +6 −0 solutions/LinksAndHandlebarsTemplate/gulpfile.js
  10. +46 −0 solutions/LinksAndHandlebarsTemplate/package.json
  11. +8 −0 solutions/LinksAndHandlebarsTemplate/src/components/LinkPickerPanel/ILinkPickerPanel.ts
  12. +18 −0 solutions/LinksAndHandlebarsTemplate/src/components/LinkPickerPanel/ILinkPickerPanelProps.ts
  13. +9 −0 solutions/LinksAndHandlebarsTemplate/src/components/LinkPickerPanel/ILinkPickerPanelState.ts
  14. +115 −0 solutions/LinksAndHandlebarsTemplate/src/components/LinkPickerPanel/LinkPickerPanel.module.scss
  15. +226 −0 solutions/LinksAndHandlebarsTemplate/src/components/LinkPickerPanel/LinkPickerPanel.tsx
  16. +52 −0 solutions/LinksAndHandlebarsTemplate/src/components/LinkPickerPanel/README.md
  17. +13 −0 solutions/LinksAndHandlebarsTemplate/src/components/loc/en-us.ts
  18. +205 −0 solutions/LinksAndHandlebarsTemplate/src/propertyPane/PropertyFields.module.scss
  19. +58 −0 solutions/LinksAndHandlebarsTemplate/src/propertyPane/loc/en-us.js
  20. +61 −0 solutions/LinksAndHandlebarsTemplate/src/propertyPane/loc/mystrings.d.ts
  21. +338 −0 ...emplate/src/propertyPane/propertyFieldCamlQueryFieldMapping/PropertyFieldCamlQueryFieldMapping.ts
  22. +961 −0 ...te/src/propertyPane/propertyFieldCamlQueryFieldMapping/PropertyFieldCamlQueryFieldMappingHost.tsx
  23. +122 −0 ...ions/LinksAndHandlebarsTemplate/src/propertyPane/propertyFieldGroupSort/PropertyFieldGroupSort.ts
  24. +132 −0 ...LinksAndHandlebarsTemplate/src/propertyPane/propertyFieldGroupSort/PropertyFieldGroupSortHost.tsx
  25. +60 −0 ...dHandlebarsTemplate/src/propertyPane/propertyFieldGuidanceMessage/PropertyFieldGuidanceMessage.ts
  26. +24 −0 ...lebarsTemplate/src/propertyPane/propertyFieldGuidanceMessage/PropertyFieldGuidanceMessageHost.tsx
  27. +102 −0 ...ksAndHandlebarsTemplate/src/propertyPane/propertyFieldImageSelector/PropertyFieldImageSelector.ts
  28. +116 −0 ...HandlebarsTemplate/src/propertyPane/propertyFieldImageSelector/PropertyFieldImageSelectorHost.tsx
  29. +113 −0 solutions/LinksAndHandlebarsTemplate/src/propertyPane/propertyFieldRichText/KendoEditor.tsx
  30. +73 −0 solutions/LinksAndHandlebarsTemplate/src/propertyPane/propertyFieldRichText/PropertyFieldRichText.ts
  31. +172 −0 ...s/LinksAndHandlebarsTemplate/src/propertyPane/propertyFieldRichText/PropertyFieldRichTextHost.tsx
  32. +26 −0 solutions/LinksAndHandlebarsTemplate/src/utilities/element/elemUtil.ts
  33. +30 −0 solutions/LinksAndHandlebarsTemplate/src/utilities/urlparser/queryStringParser.ts
  34. +22 −0 ...ns/LinksAndHandlebarsTemplate/src/webparts/boxButtonWebPart/BoxButtonWebPartWebPart.manifest.json
  35. +390 −0 solutions/LinksAndHandlebarsTemplate/src/webparts/boxButtonWebPart/BoxButtonWebPartWebPart.ts
  36. +14 −0 solutions/LinksAndHandlebarsTemplate/src/webparts/boxButtonWebPart/IBoxButtonWebPartWebPartProps.ts
  37. +145 −0 .../LinksAndHandlebarsTemplate/src/webparts/boxButtonWebPart/components/BoxButtonWebPart.module.scss
  38. +234 −0 solutions/LinksAndHandlebarsTemplate/src/webparts/boxButtonWebPart/components/BoxButtonWebPart.tsx
  39. +7 −0 solutions/LinksAndHandlebarsTemplate/src/webparts/boxButtonWebPart/components/IBoxButton.ts
  40. +23 −0 ...ons/LinksAndHandlebarsTemplate/src/webparts/boxButtonWebPart/components/IBoxButtonWebPartProps.ts
  41. +48 −0 solutions/LinksAndHandlebarsTemplate/src/webparts/boxButtonWebPart/loc/en-us.js
  42. +49 −0 solutions/LinksAndHandlebarsTemplate/src/webparts/boxButtonWebPart/loc/mystrings.d.ts
  43. +9 −0 solutions/LinksAndHandlebarsTemplate/src/webparts/boxButtonWebPart/tests/BoxButtonWebPart.test.ts
  44. +24 −0 ...andlebarsTemplate/src/webparts/featuredContentWebPart/FeaturedContentWebPartWebPart.manifest.json
  45. +507 −0 ...s/LinksAndHandlebarsTemplate/src/webparts/featuredContentWebPart/FeaturedContentWebPartWebPart.ts
  46. +11 −0 ...sAndHandlebarsTemplate/src/webparts/featuredContentWebPart/IFeaturedContentWebPartWebPartProps.ts
  47. +104 −0 ...dlebarsTemplate/src/webparts/featuredContentWebPart/components/FeaturedContentWebPart.module.scss
  48. +171 −0 ...ksAndHandlebarsTemplate/src/webparts/featuredContentWebPart/components/FeaturedContentWebPart.tsx
  49. +2 −0 ...inksAndHandlebarsTemplate/src/webparts/featuredContentWebPart/components/IFeaturedContentState.ts
  50. +22 −0 ...HandlebarsTemplate/src/webparts/featuredContentWebPart/components/IFeaturedContentWebPartProps.ts
  51. +14 −0 solutions/LinksAndHandlebarsTemplate/src/webparts/featuredContentWebPart/components/IFeaturedItem.ts
  52. +12 −0 ...HandlebarsTemplate/src/webparts/featuredContentWebPart/components/layouts/FeatureContentLayout.ts
  53. +43 −0 ...ndlebarsTemplate/src/webparts/featuredContentWebPart/components/layouts/FeaturedContentFactory.ts
  54. +36 −0 ...ebPart/components/layouts/horizontalTitleDescription/AdvancedHorizontalTitleDescriptionLayout.tsx
  55. +64 −0 ...ntWebPart/components/layouts/horizontalTitleDescription/BasicHorizontalTitleDescriptionLayout.tsx
  56. +211 −0 .../webparts/featuredContentWebPart/components/layouts/horizontalTitleDescription/Styles.module.scss
  57. +40 −0 ...aturedContentWebPart/components/layouts/horizontalTitleOnly/AdvancedHorizontalTitleOnlyLayout.tsx
  58. +68 −0 .../featuredContentWebPart/components/layouts/horizontalTitleOnly/BasicHorizontalTitleOnlyLayout.tsx
  59. +199 −0 ...ate/src/webparts/featuredContentWebPart/components/layouts/horizontalTitleOnly/Styles.module.scss
  60. +43 −0 ...Template/src/webparts/featuredContentWebPart/components/layouts/stacked/AdvancedStackedLayout.tsx
  61. +71 −0 ...arsTemplate/src/webparts/featuredContentWebPart/components/layouts/stacked/BasicStackedLayout.tsx
  62. +158 −0 ...dlebarsTemplate/src/webparts/featuredContentWebPart/components/layouts/stacked/Styles.module.scss
  63. +43 −0 ...featuredContentWebPart/components/layouts/stackedAlternating/AdvancedStackedAlternatingLayout.tsx
  64. +71 −0 ...ts/featuredContentWebPart/components/layouts/stackedAlternating/BasicStackedAlternatingLayout.tsx
  65. +177 −0 ...late/src/webparts/featuredContentWebPart/components/layouts/stackedAlternating/Styles.module.scss
  66. +63 −0 solutions/LinksAndHandlebarsTemplate/src/webparts/featuredContentWebPart/loc/en-us.js
  67. +63 −0 solutions/LinksAndHandlebarsTemplate/src/webparts/featuredContentWebPart/loc/mystrings.d.ts
  68. +9 −0 ...nksAndHandlebarsTemplate/src/webparts/featuredContentWebPart/tests/FeaturedContentWebPart.test.ts
  69. +28 −0 ...ebarsTemplate/src/webparts/handlebarTemplateDisplay/HandlebarTemplateDisplayWebPart.manifest.json
  70. +226 −0 ...nksAndHandlebarsTemplate/src/webparts/handlebarTemplateDisplay/HandlebarTemplateDisplayWebPart.ts
  71. +9 −0 ...HandlebarsTemplate/src/webparts/handlebarTemplateDisplay/IHandlebarTemplateDisplayWebPartProps.ts
  72. +65 −0 ...arsTemplate/src/webparts/handlebarTemplateDisplay/components/HandlebarTemplateDisplay.module.scss
  73. +179 −0 ...dHandlebarsTemplate/src/webparts/handlebarTemplateDisplay/components/HandlebarTemplateDisplay.tsx
  74. +18 −0 ...lebarsTemplate/src/webparts/handlebarTemplateDisplay/components/IHandlebarTemplateDisplayProps.ts
  75. +17 −0 solutions/LinksAndHandlebarsTemplate/src/webparts/handlebarTemplateDisplay/loc/en-us.js
  76. +20 −0 solutions/LinksAndHandlebarsTemplate/src/webparts/handlebarTemplateDisplay/loc/mystrings.d.ts
  77. +9 −0 ...ndHandlebarsTemplate/src/webparts/handlebarTemplateDisplay/tests/HandlebarTemplateDisplay.test.ts
  78. +25 −0 solutions/LinksAndHandlebarsTemplate/src/webparts/hubLinks/HubLinksWebPart.manifest.json
  79. +560 −0 solutions/LinksAndHandlebarsTemplate/src/webparts/hubLinks/HubLinksWebPart.ts
  80. +15 −0 solutions/LinksAndHandlebarsTemplate/src/webparts/hubLinks/IHubLinksWebPartProps.ts
  81. +88 −0 solutions/LinksAndHandlebarsTemplate/src/webparts/hubLinks/components/HubLinks.module.scss
  82. +173 −0 solutions/LinksAndHandlebarsTemplate/src/webparts/hubLinks/components/HubLinks.tsx
  83. +41 −0 solutions/LinksAndHandlebarsTemplate/src/webparts/hubLinks/components/IHubLinksItem.ts
  84. +22 −0 solutions/LinksAndHandlebarsTemplate/src/webparts/hubLinks/components/IHubLinksProps.ts
  85. +65 −0 ...Template/src/webparts/hubLinks/components/layouts/GroupedListLayout/AdvancedGroupedListLayout.tsx
  86. +77 −0 ...arsTemplate/src/webparts/hubLinks/components/layouts/GroupedListLayout/BasicGroupedListLayout.tsx
  87. +194 −0 ...ndlebarsTemplate/src/webparts/hubLinks/components/layouts/GroupedListLayout/GLLStyles.module.scss
  88. +27 −0 solutions/LinksAndHandlebarsTemplate/src/webparts/hubLinks/components/layouts/HubLinksFactory.ts
  89. +11 −0 solutions/LinksAndHandlebarsTemplate/src/webparts/hubLinks/components/layouts/HubLinksLayout.ts
  90. +40 −0 ...sAndHandlebarsTemplate/src/webparts/hubLinks/components/layouts/ItemLayout/AdvancedItemLayout.tsx
  91. +58 −0 ...inksAndHandlebarsTemplate/src/webparts/hubLinks/components/layouts/ItemLayout/BasicItemLayout.tsx
  92. +135 −0 ...nksAndHandlebarsTemplate/src/webparts/hubLinks/components/layouts/ItemLayout/ILStyles.module.scss
  93. +44 −0 ...sAndHandlebarsTemplate/src/webparts/hubLinks/components/layouts/ListLayout/AdvancedListLayout.tsx
  94. +63 −0 ...inksAndHandlebarsTemplate/src/webparts/hubLinks/components/layouts/ListLayout/BasicListLayout.tsx
  95. +137 −0 ...nksAndHandlebarsTemplate/src/webparts/hubLinks/components/layouts/ListLayout/LLStyles.module.scss
  96. +80 −0 solutions/LinksAndHandlebarsTemplate/src/webparts/hubLinks/loc/en-us.js
  97. +80 −0 solutions/LinksAndHandlebarsTemplate/src/webparts/hubLinks/loc/mystrings.d.ts
  98. +9 −0 solutions/LinksAndHandlebarsTemplate/src/webparts/hubLinks/tests/HubLinks.test.ts
  99. +15 −0 solutions/LinksAndHandlebarsTemplate/tsconfig.json
@@ -0,0 +1,37 @@
## hub-web-parts

This solution contains the following web parts.
* Hub Links: A list of links that can either be set within the properties of the web part or in a SharePoint List
* Featured Content: Tile links that enable users to show links with images stored within the web part or in a SharePoint list
* Box Button: Button links that can be stored within the web part or in a SharePoint list
* Hub Template: A handlebars template web part that enables highly customized UI code to be applied to SharePoint list items

Steps needed to prepare the solution for deployment:
1) Download the [caml.js](https://github.com/andrei-markeev/camljs/blob/master/CamlJs/camljs.js) library and host it in an accessible location.
2) Change the config/config.json file to point to the above location.
3) Set the cdnBasePath in the config/write-manifests.json file
4) (Optional) Set the Azure storage account information for where the files should be deployed


### Building the code

```bash
git clone the repo
npm i
npm i -g gulp
gulp
```

This package produces the following:

* lib/* - intermediate-stage commonjs build artifacts
* dist/* - the bundled script, along with other resources
* deploy/* - all resources which should be uploaded to a CDN.

### Build options

gulp clean - TODO
gulp test - TODO
gulp serve - TODO
gulp bundle - TODO
gulp package-solution - TODO
@@ -0,0 +1,56 @@
{
"entries": [{
"entry": "./lib/webparts/boxButtonWebPart/BoxButtonWebPartWebPart.js",
"manifest": "./src/webparts/boxButtonWebPart/BoxButtonWebPartWebPart.manifest.json",
"outputPath": "./dist/box-button-web-part.bundle.js"
},
{
"entry": "./lib/webparts/featuredContentWebPart/FeaturedContentWebPartWebPart.js",
"manifest": "./src/webparts/featuredContentWebPart/FeaturedContentWebPartWebPart.manifest.json",
"outputPath": "./dist/featured-content-web-part.bundle.js"
},
{
"entry": "./lib/webparts/hubLinks/HubLinksWebPart.js",
"manifest": "./src/webparts/hubLinks/HubLinksWebPart.manifest.json",
"outputPath": "./dist/hub-links.bundle.js"
},
{
"entry": "./lib/webparts/handlebarTemplateDisplay/HandlebarTemplateDisplayWebPart.js",
"manifest": "./src/webparts/handlebarTemplateDisplay/HandlebarTemplateDisplayWebPart.manifest.json",
"outputPath": "./dist/handlebar-template-display.bundle.js"
}
],
"externals": {
"camljs": {
"path": "https://raw.githubusercontent.com/andrei-markeev/camljs/master/CamlJs/camljs.js", //Set URL to your caml.js file
"globalName": "camljs"
},
"jquery": {
"path": "https://code.jquery.com/jquery-1.12.3.min.js",
"globalName": "jquery"
},
"kendo": {
"path": "https://kendo.cdn.telerik.com/2017.2.621/js/kendo.editor.min.js",
"globalName": "kendo"
},
"handlebars": {
"path": "https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/4.0.10/handlebars.min.js",
"globalName": "handlebars"
},
"file-saver": {
"path": "https://cdnjs.cloudflare.com/ajax/libs/FileSaver.js/1.3.3/FileSaver.min.js",
"globalName": "file-saver"
},
"moment": {
"path": "https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js",
"globalName": "moment"
}
},
"localizedResources": {
"boxButtonWebPartStrings": "webparts/boxButtonWebPart/loc/{locale}.js",
"featuredContentWebPartStrings": "webparts/featuredContentWebPart/loc/{locale}.js",
"propertyFieldStrings": "propertyPane/loc/{locale}.js",
"hubLinksStrings": "webparts/hubLinks/loc/{locale}.js",
"handlebarTemplateDisplayStrings": "webparts/handlebarTemplateDisplay/loc/{locale}.js"
}
}
@@ -0,0 +1,3 @@
{
"deployCdnPath": "temp/deploy"
}
@@ -0,0 +1,6 @@
{
"workingDir": "./temp/deploy/",
"account": "",
"container": "",
"accessKey": ""
}
@@ -0,0 +1,11 @@
{
"solution": {
"name": "Sample Hub Web Parts",
"id": "520c2090-be2a-4538-b2b0-fd3eeca0cea0",
"version": "1.0.3.9",
"skipFeatureDeployment": true
},
"paths": {
"zippedPackage": "solution/hub-web-parts.sppkg"
}
}
@@ -0,0 +1,9 @@
{
"port": 4321,
"initialPage": "https://localhost:5432/workbench",
"https": true,
"api": {
"port": 5432,
"entryPath": "node_modules/@microsoft/sp-webpart-workbench/lib/api/"
}
}
@@ -0,0 +1,46 @@
{
// Display errors as warnings
"displayAsWarning": true,
// The TSLint task may have been configured with several custom lint rules
// before this config file is read (for example lint rules from the tslint-microsoft-contrib
// project). If true, this flag will deactivate any of these rules.
"removeExistingRules": true,
// When true, the TSLint task is configured with some default TSLint "rules.":
"useDefaultConfigAsBase": false,
// Since removeExistingRules=true and useDefaultConfigAsBase=false, there will be no lint rules
// which are active, other than the list of rules below.
"lintConfig": {
// Opt-in to Lint rules which help to eliminate bugs in JavaScript
"rules": {
"class-name": false,
"export-name": false,
"forin": false,
"label-position": false,
"member-access": true,
"no-arg": false,
"no-console": false,
"no-construct": false,
"no-duplicate-case": true,
"no-duplicate-variable": true,
"no-eval": false,
"no-function-expression": true,
"no-internal-module": true,
"no-shadowed-variable": true,
"no-switch-case-fall-through": true,
"no-unnecessary-semicolons": true,
"no-unused-expression": true,
"no-unused-imports": true,
"no-use-before-declare": true,
"no-with-statement": true,
"semicolon": true,
"trailing-comma": false,
"typedef": false,
"typedef-whitespace": false,
"use-named-parameter": true,
"valid-typeof": true,
"variable-name": false,
"whitespace": false,
"prefer-const": true
}
}
}
@@ -0,0 +1,3 @@
{
"cdnBasePath": ""
}
@@ -0,0 +1,6 @@
'use strict';

const gulp = require('gulp');
const build = require('@microsoft/sp-build-web');

build.initialize(gulp);
@@ -0,0 +1,46 @@
{
"name": "hub-web-parts",
"version": "1.1.2",
"private": true,
"engines": {
"node": ">=0.10.0"
},
"dependencies": {
"@microsoft/sp-core-library": "~1.1.0",
"@microsoft/sp-loader": "~1.1.1",
"@microsoft/sp-webpart-base": "~1.1.1",
"@progress/kendo-ui": "^2017.2.621",
"@types/camljs": "0.0.30",
"@types/js-beautify": "0.0.30",
"@types/react": "0.14.46",
"@types/react-addons-shallow-compare": "0.14.17",
"@types/react-addons-test-utils": "0.14.15",
"@types/react-addons-update": "0.14.14",
"@types/react-dom": "0.14.18",
"@types/webpack-env": ">=1.12.1 <1.14.0",
"camljs": "^2.6.2",
"handlebars": "^4.0.10",
"deep-diff": "^0.3.8",
"js-beautify": "^1.6.14",
"linqts": "^1.8.2",
"react": "15.4.2",
"react-dom": "15.4.2",
"sp-pnp-js": "^2.0.4"
},
"devDependencies": {
"@microsoft/sp-build-web": "~1.1.0",
"@microsoft/sp-module-interfaces": "~1.1.0",
"@microsoft/sp-webpart-workbench": "~1.1.0",
"@types/chai": ">=3.4.34 <3.6.0",
"@types/chrome": "0.0.46",
"@types/mocha": ">=2.2.33 <2.6.0",
"file-saver": "^1.3.3",
"gulp": "~3.9.1",
"moment": "^2.18.1"
},
"scripts": {
"build": "gulp bundle",
"clean": "gulp clean",
"test": "gulp test"
}
}
@@ -0,0 +1,8 @@
export interface ILinkPickerChoice {
name: string;
url: string;
}

export interface ILinkPickerPanel {
pickLink: () => Promise<ILinkPickerChoice>;
}
@@ -0,0 +1,18 @@
import{ IWebPartContext } from '@microsoft/sp-webpart-base';
// Bitwise enumeration of link type(s) to select
export enum LinkType {
doc = 1 << 0,
page = 1 << 1,
image = 1 << 2,
folder = 1 << 3,
developer = 1 << 4,
any = doc | page | image | folder | developer,
all = -1
}

export interface ILinkPickerPanelProps {
webPartContext: IWebPartContext;
className?: string;
webAbsUrl: string;
linkType: LinkType;
}
@@ -0,0 +1,9 @@
// The left navigation selects what kind of link picking to do
export enum NavState { site, link }

export interface ILinkPickerPanelState {
isOpen? : boolean; // true if the panel is open
navState?: NavState; // the navigation selection
isUrlValid?: boolean; // true if the URL is valid
url?: string; // the link
}
@@ -0,0 +1,115 @@
.link-picker {
& [role="navigation"] {
width: 210px;
min-height: 100%;
padding-top: 60px;
box-sizing: border-box;
border-top: 40px solid #F4F4F4;
border-right: 2px solid #F4F4F4;
& a {
width: 100%;
&:hover,
&:focus {
text-decoration: none;
}
}
}
& .source-type {
height: 100%;
}
& .tabs {
position: absolute;
left: 250px;
top: 0;
right: 0;
bottom: 0;
&>div {
overflow-y: auto;
}
&>div,
& iframe {
height: 100%;
width: 97%;
border: none;
}
& .link-insert {
padding-left: 30px;
box-sizing: border-box;
border-top: 40px solid #F4F4F4;
border-right: 2px solid #F4F4F4;
& label:after {
content: ' *';
color: #a80000;
}
}
& textarea {
resize: none;
line-height: 17px;
overflow: auto;
min-height: 60px;
max-width: 639px;
width: 100%;
padding: 6px 12px 0 12px;
border: solid 1px #C8C8C8;
font-family: "Segoe UI WestEuropean", "Segoe UI", -apple-system, BlinkMacSystemFont, Roboto, "Helvetica Neue", sans-serif;
}
& .buttons {
position: absolute;
bottom: 10px;
right: 10px;
& button {
margin-right: 20px;
}
}
& .imageCont {
width: 100%;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-ms-flex-wrap: wrap;
flex-wrap: wrap;
padding: 10px;
padding-left: 30px;
box-sizing: border-box;
border-top: 40px solid #f4f4f4;
border-right: 2px solid #f4f4f4;
& .imageItem {
width: 158px;
height: 158px;
cursor: pointer;
overflow: hidden;
border: 1px #fff solid;
display: block;
padding: 0;
text-align: center;
outline: 1px #eaeaea solid;
margin-right: 10px;
margin-bottom: 10px;
position: relative;
&:hover {
outline: 2px #c8c8c8 solid;
}
&[is-selected] {
outline: 2px #767676 solid;
}
& img {
width: 100%;
}
& p {
text-align: left;
position: absolute;
bottom: -14px;
opacity: 0.95;
border-top: 1px solid #EAEAEA;
min-height: 35px;
width: 158px;
padding: 4px 6px 0;
background-color: #FFFFFF;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
}
}
}
}
}
Oops, something went wrong.

0 comments on commit d8b91dc

Please sign in to comment.
You can’t perform that action at this time.