Skip to content

Commit

Permalink
Merge pull request #5 from DivanteLtd/master
Browse files Browse the repository at this point in the history
Pull
  • Loading branch information
pspaczek authored Jun 5, 2019
2 parents 290f6de + d19cb44 commit 383d3b8
Show file tree
Hide file tree
Showing 59 changed files with 1,448 additions and 237 deletions.
12 changes: 7 additions & 5 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@storefrontui/vue",
"version": "0.0.2-aplha.1",
"version": "0.0.2-aplha.2",
"scripts": {
"serve": "vue-cli-service serve",
"build": "vue-cli-service build --target lib --name storefront-ui ./src/index.js",
Expand All @@ -16,7 +16,9 @@
"create-component": "node ./scripts/create-component.js"
},
"dependencies": {
"@glidejs/glide": "^3.3.0",
"@snowdog/alpaca-components": "^0.3.0-alpha.5",
"lozad": "^1.9.0",
"webpack-dev-middleware": "3.6.0"
},
"resolutions": {
Expand All @@ -28,8 +30,8 @@
"public/assets"
],
"devDependencies": {
"@storybook/addon-a11y": "^5.0.11",
"@babel/core": "^7.4.4",
"@storybook/addon-a11y": "^5.0.11",
"@storybook/addon-actions": "^5.0.11",
"@storybook/addon-knobs": "^5.0.11",
"@storybook/addon-links": "^5.0.11",
Expand All @@ -52,13 +54,13 @@
"file-save": "^0.2.0",
"glob": "^7.1.4",
"html-loader": "^0.5.5",
"lint-staged": "^8.1.6",
"lint-staged": "^8.1.7",
"markdown-loader": "^5.0.0",
"node-sass": "^4.12.0",
"sass-loader": "^7.1.0",
"storybook-addon-vue-info": "^1.1.1",
"storybook-addon-vue-info": "^1.2.0",
"ts-jest": "^24.0.1",
"typescript": "^3.4.5",
"typescript": "^3.5.1",
"uppercamelcase": "^3.0.0",
"vue-cli-plugin-storybook": "^0.6.0",
"vue-template-compiler": "^2.6.8",
Expand Down
53 changes: 15 additions & 38 deletions scripts/create-component.js
Original file line number Diff line number Diff line change
Expand Up @@ -47,26 +47,6 @@ function createComponent(folder, componentName) {
}

const files = [
{
fileName: "README.md",
content: `# ${PrefixComponentName}
## Events
- \`event\` - description
## CSS Modifiers
- \`classname\` - description
## SCSS variables
- \`variablename\` (defaultvalue) - description
`
},
{
fileName: `${PrefixComponentName}.html`,
content: `<div class="${joinedComponentName}"></div>`
Expand All @@ -75,8 +55,7 @@ function createComponent(folder, componentName) {
fileName: `${PrefixComponentName}.js`,
content: `export default {
name: "${PrefixComponentName}"
};
`
};`
},
{
fileName: `${PrefixComponentName}.scss`,
Expand All @@ -91,8 +70,7 @@ function createComponent(folder, componentName) {
// &--modifier {
// }
// }
`
// }`
},
{
fileName: `${PrefixComponentName}.spec.ts`,
Expand All @@ -104,34 +82,34 @@ describe("${PrefixComponentName}.vue", () => {
const component = shallowMount(${PrefixComponentName});
expect(component.contains(".${joinedComponentName}")).toBe(true);
});
});
`
});`
},
{
fileName: `${PrefixComponentName}.stories.js`,
content: `// /* eslint-disable import/no-extraneous-dependencies */
import { storiesOf } from "@storybook/vue";
import { withKnobs, text, select } from "@storybook/addon-knobs";
import ${PrefixComponentName} from "./${PrefixComponentName}.vue";
import { generateStorybookTable } from "@/helpers";
// use this to documment scss vars
import ${PrefixComponentName} from "./${PrefixComponentName}.vue";
// use this to document scss vars
const scssTableConfig = {
tableHeadConfig: ["NAME", "DEFAULT", "DESCRIPTION"],
tableBodyConfig: [
["$component-size", "1.438rem", "size of checkmark"],
["$component-size", "1.438rem", "size of checkmark"]
]
};
// use this to documment events
// use this to document events
const eventsTableConfig = {
tableHeadConfig: ["NAME", "DESCRIPTION"],
tableBodyConfig: [
["input", "event emmited when option is selected"],
["input", "event emited when option is selected"]
]
};
// storiesOf("Component", module)
// storiesOf("${PrefixComponentName}", module)
// .addDecorator(withKnobs)
// .add(
// "[slot] default",
Expand All @@ -153,26 +131,25 @@ const eventsTableConfig = {
// template: \`<${PrefixComponentName}
// :class="customClass"
// >
// /${PrefixComponentName}>\`
// </${PrefixComponentName}>\`
// }),
// {
// info: {
// summary: \`<p>Component for simple group of radio buttons, pass an array get selected value via v-model.</p>
// <h2> Usage </h2>
// summary: \`<p>Component description.</p>
// <h2>Usage</h2>
// <pre><code>import ${PrefixComponentName} from "@storefrontui/vue/dist/${PrefixComponentName}.vue"</code></pre>
// \${generateStorybookTable(scssTableConfig, "SCSS variables")}
// \${generateStorybookTable(eventsTableConfig, "Events")}
// \`
// }
// }
// }
// );`
},
{
fileName: `${PrefixComponentName}.vue`,
content: `<script src="./${PrefixComponentName}.js"></script>
<template lang="html" src="./${PrefixComponentName}.html"></template>
<style lang="scss" src="./${PrefixComponentName}.scss"></style>
`
<style lang="scss" src="./${PrefixComponentName}.scss"></style>`
}
];

Expand Down
4 changes: 4 additions & 0 deletions src/assets/arrow_left.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
10 changes: 10 additions & 0 deletions src/components/atoms/SfArrow/SfArrow.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<div class="sf-arrow">
<button v-on="$listeners" class="sf-arrow__button" type="button">
<slot>
<svg class="sf-arrow__icon"viewBox="0 0 24 12" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M24 7L2 7L2 5L24 5L24 7Z"/>
<path d="M6.61667 1.20934e-07L8 1.25423L2.76478 6L8 10.7458L6.61667 12L-5.24538e-07 5.99998L6.61667 1.20934e-07Z"/>
</svg>
</slot>
</button>
</div>
3 changes: 3 additions & 0 deletions src/components/atoms/SfArrow/SfArrow.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
export default {
name: "SfArrow"
};
77 changes: 77 additions & 0 deletions src/components/atoms/SfArrow/SfArrow.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
@import '../../../css/variables';

$arrow__button-color: $c-light-primary;
$arrow__button-color--hover: $c-dark-primary;

$arrow__button-shadow: 0 5px 12px -6px rgba($c-dark-primary, 0);
$arrow__button-shadow--right: 0 -5px 12px -5px rgba($c-dark-primary, 0.6);

$arrow__icon-color: $c-white;
$arrow__icon-color--hover: $c-dark-primary;

.sf-arrow {

&__button{
position: relative;
display: flex;
border: 0;
padding: 14px 10px 14px;
background-color: $arrow__button-color;
cursor: pointer;
outline: 0;
transition: padding 150ms linear,
background-color 150ms linear,
box-shadow 150ms linear;
box-shadow: 0 5px 12px -6px rgba(29, 31, 34, 0);

&:hover{
background-color: $arrow__button-color--hover;
box-shadow: 0 5px 12px -5px rgba(29, 31, 34, 0.6);

.sf-arrow__icon{
fill: $arrow__icon-color;
}
}
}
&__icon {
position: relative;
z-index: 1;
flex: 0 0 24px;
height: 12px;
fill: $arrow__icon-color--hover;
transition: fill 150ms linear;
}

&--long{
width: 70px;
height: 40px;
display: flex;
align-items: center;
justify-content: flex-start;

.sf-arrow{
&__button{
padding: 9px 26px 9px 10px;
background-color: $arrow__icon-color;

&:hover{
padding: 14px 36px 14px 10px;
background-color: $arrow__icon-color--hover;
}
}
}
}
&--right{
justify-content: flex-end;

.sf-arrow{
&__button{
transform: rotate(180deg);

&:hover{
box-shadow: $arrow__button-shadow--right;
}
}
}
}
}
9 changes: 9 additions & 0 deletions src/components/atoms/SfArrow/SfArrow.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import { shallowMount } from "@vue/test-utils";
import SfArrow from "./SfArrow.vue";

describe("SfArrow.vue", () => {
it("renders a component", () => {
const component = shallowMount(SfArrow);
expect(component.contains(".sf-arrow")).toBe(true);
});
});
74 changes: 74 additions & 0 deletions src/components/atoms/SfArrow/SfArrow.stories.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
/* eslint-disable import/no-extraneous-dependencies */
import { storiesOf } from "@storybook/vue";
import { withKnobs, optionsKnob as options } from "@storybook/addon-knobs";
import { generateStorybookTable } from "@/helpers";
import SfArrow from "./SfArrow.vue";

const scssTableConfig = {
tableHeadConfig: ["NAME", "DEFAULT", "DESCRIPTION"],
tableBodyConfig: [
["$arrow__button-color", "$c-light-primary", "color for button"],
[
"$arrow__button-color--hover",
"$c-dark-primary",
"color for hovered button"
],
[
"$arrow__button-shadow",
"0 5px 12px -6px rgba($c-dark-primary, 0)",
"shadow for hovered button"
],
[
"$arrow__button-shadow--right",
"0 -5px 12px -5px rgba($c-dark-primary, 0.6)",
"shadow for hovered right arrow"
],
["$arrow__icon-color", "$c-white", "color for icon"],
["$arrow__icon-color--hover", "$c-dark-primary", "color for hovered icon"]
]
};

const cssTableConfig = {
tableHeadConfig: ["NAME", "DESCRIPTION"],
tableBodyConfig: [
[".sf-arrow--long", "change short to long arrow"],
[".sf-arrow--right", "transform left to right arrow"]
]
};

storiesOf("Atoms|Arrow", module)
.addDecorator(withKnobs)
.add(
"Basic",
() => ({
components: { SfArrow },
props: {
customClass: {
default: options(
"CSS Modifiers",
{
null: "null",
"sf-arrow--right": "sf-arrow--right",
"sf-arrow--long": "sf-arrow--long"
},
"null",
{ display: "multi-select" }
)
}
},
template: `
<div :style="{padding: '1rem', 'background-color': customClass.indexOf('sf-arrow--long') ? '' : '#F1F2F3'}">
<SfArrow :class="customClass">
</div>
`
}),
{
info: {
summary: `<h2> Usage </h2>
<pre><code>import SfArrow from "@storefrontui/vue/dist/SfArrow.vue"</code></pre>
${generateStorybookTable(scssTableConfig, "SCSS variables")}
${generateStorybookTable(cssTableConfig, "CSS modifiers")}
`
}
}
);
3 changes: 3 additions & 0 deletions src/components/atoms/SfArrow/SfArrow.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
<script src="./SfArrow.js"></script>
<template lang="html" src="./SfArrow.html"></template>
<style lang="scss" src="./SfArrow.scss"></style>
3 changes: 1 addition & 2 deletions src/components/atoms/SfBadge/SfBadge.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
export default {
name: "SfBadge",
name: "SfBadge"
};

14 changes: 5 additions & 9 deletions src/components/atoms/SfBadge/SfBadge.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,23 +9,19 @@ describe("SfBadge.vue", () => {

it("renders a badge with css modifier", () => {
const component = shallowMount({
components: {SfBadge},
template : `<SfBadge class="sf-badge--warning" />`,

components: { SfBadge },
template: `<SfBadge class="sf-badge--warning" />`
});
expect(component.contains(".sf-badge--warning")).toBe(true);
});

it("renders a badge content via default slot", () => {
const content = 'sfbadge content'
const content = "sfbadge content";
const component = shallowMount(SfBadge, {
slots: {
default: content,
default: content
}
});
expect(component.find(".sf-badge").text()).toBe(content);
});


});

Loading

0 comments on commit 383d3b8

Please sign in to comment.