@magicgol/polyjuice 0.29.1 → 0.32.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (21) hide show
  1. package/package.json +1 -1
  2. package/src/assets/svg/arrow-down.js +10 -0
  3. package/src/assets/svg/circle-with-minus.js +10 -0
  4. package/src/assets/svg/index.js +2 -0
  5. package/src/components/card/horizontal-card/HCard.stories.js +24 -2
  6. package/src/components/card/horizontal-card/HCard.vue +12 -17
  7. package/src/components/footballer/{box → footballer-box}/FootballerBox.stories.js +0 -0
  8. package/src/components/footballer/{box → footballer-box}/FootballerBox.vue +0 -0
  9. package/src/components/footballer/horizontal-footballer/HFootballer.vue +2 -1
  10. package/src/components/footballer/horizontal-footballer-card/HFootballerCard.stories.js +75 -0
  11. package/src/components/footballer/horizontal-footballer-card/HFootballerCard.vue +74 -0
  12. package/src/components/footballer/{horizontal-placeholder → horizontal-footballer-placeholder}/HFootballerPlaceholder.stories.js +0 -0
  13. package/src/components/footballer/{horizontal-placeholder → horizontal-footballer-placeholder}/HFootballerPlaceholder.vue +0 -0
  14. package/src/components/form/advanced/{filter/Filter.stories.js → filter-button/FilterButton.stories.js} +5 -18
  15. package/src/components/form/advanced/{filter/Filter.vue → filter-button/FilterButton.vue} +3 -3
  16. package/src/components/form/advanced/remove-button/RemoveButton.stories.js +22 -0
  17. package/src/components/form/advanced/remove-button/RemoveButton.vue +45 -0
  18. package/src/components/list/head/ListHead.stories.js +7 -0
  19. package/src/components/list/head/ListHead.vue +30 -2
  20. package/src/svg/arrow-down.svg +3 -0
  21. package/src/svg/circle-with-minus.svg +3 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@magicgol/polyjuice",
3
- "version": "0.29.1",
3
+ "version": "0.32.0",
4
4
  "scripts": {
5
5
  "serve": "vue-cli-service serve",
6
6
  "build": "vue-cli-service build",
@@ -0,0 +1,10 @@
1
+ /* eslint-disable */
2
+ var icon = require('vue-svgicon')
3
+ icon.register({
4
+ 'arrow-down': {
5
+ width: 16,
6
+ height: 16,
7
+ viewBox: '0 0 10 8',
8
+ data: '<path pid="0" d="M8.807 3.527a.667.667 0 00-.947 0l-2.193 2.2V.667a.667.667 0 10-1.334 0v5.06l-2.193-2.2a.67.67 0 00-.947.946l3.334 3.334c.063.06.138.108.22.14a.627.627 0 00.506 0 .667.667 0 00.22-.14l3.334-3.334a.667.667 0 000-.946z" _fill="#000"/>'
9
+ }
10
+ })
@@ -0,0 +1,10 @@
1
+ /* eslint-disable */
2
+ var icon = require('vue-svgicon')
3
+ icon.register({
4
+ 'circle-with-minus': {
5
+ width: 16,
6
+ height: 16,
7
+ viewBox: '0 0 18 18',
8
+ data: '<path pid="0" d="M9 0a9 9 0 100 18A9 9 0 009 0zm0 16.2A7.2 7.2 0 119 1.8a7.2 7.2 0 010 14.4zm3.6-8.1H5.4a.9.9 0 000 1.8h7.2a.9.9 0 000-1.8z" _fill="#D81159"/>'
9
+ }
10
+ })
@@ -1,5 +1,7 @@
1
1
  /* eslint-disable */
2
+ require('./arrow-down')
2
3
  require('./check-with-circle')
4
+ require('./circle-with-minus')
3
5
  require('./facebook')
4
6
  require('./funnel-full')
5
7
  require('./funnel')
@@ -17,6 +17,18 @@ export default {
17
17
  summary: 'html',
18
18
  },
19
19
  }
20
+ },
21
+ actions: {
22
+ description: "The actions Vue slot",
23
+ control: {
24
+ type: 'text',
25
+ },
26
+ table: {
27
+ category: 'Slots',
28
+ type: {
29
+ summary: 'html',
30
+ },
31
+ }
20
32
  }
21
33
  },
22
34
  };
@@ -25,11 +37,21 @@ export default {
25
37
  const Template = (args, { argTypes }) => ({
26
38
  props: Object.keys(argTypes),
27
39
  components: { MgHCard },
28
- template: `<mg-h-card @click="$emit('click')" v-bind="$props"><template v-if="${'default' in args}" v-slot>${args.default}</template></mg-h-card>`,
40
+ template: `<mg-h-card @click="$emit('click')" v-bind="$props">
41
+ <template v-if="${'default' in args}" v-slot>${args.default}</template>
42
+ <template v-if="${'actions' in args}" v-slot:actions>${args.actions}</template>
43
+ </mg-h-card>`,
29
44
  });
30
45
 
31
46
  export const Default = Template.bind({});
32
47
  // More on args: https://storybook.js.org/docs/vue/writing-stories/args
33
48
  Default.args = {
34
- default: '<div>This is a vertical card.</div><div>What do you think about?</div>'
49
+ default: '<div>This is a vertical card.</div><div>What do you think about?</div>',
50
+ };
51
+
52
+ export const Actions = Template.bind({});
53
+ // More on args: https://storybook.js.org/docs/vue/writing-stories/args
54
+ Actions.args = {
55
+ default: '<div>This is a vertical card.</div><div>What do you think about?</div>',
56
+ actions: '<div>+</div>',
35
57
  };
@@ -1,21 +1,19 @@
1
1
  <template>
2
2
  <div
3
- class="d-flex justify-content-between align-items-center rounded px-3 bg-white"
3
+ class="d-flex text-truncate justify-content-between align-items-center rounded px-3"
4
4
  v-bind:class="classes"
5
5
  >
6
6
  <div
7
7
  class="flex-fill"
8
8
  ><slot></slot></div>
9
- <!-- ARROW -->
9
+ <!-- ACTIONS -->
10
10
  <div
11
+ v-if="actionsSlotVisibility"
11
12
  class="pl-3"
12
13
  >
13
- <font-awesome-icon
14
- icon="chevron-right"
15
- class="mg-icon"
16
- />
14
+ <slot name="actions"></slot>
17
15
  </div>
18
- <!-- end of ARROW -->
16
+ <!-- end of ACTIONS -->
19
17
  </div>
20
18
  </template>
21
19
 
@@ -28,21 +26,18 @@ export default {
28
26
  return {
29
27
  'mg-h-card': true,
30
28
  };
29
+ },
30
+ actionsSlotVisibility() {
31
+ return 'actions' in this.$slots && !!this.$slots.actions;
31
32
  }
32
33
  },
33
34
  };
34
35
  </script>
35
36
 
36
37
  <style lang="scss">
37
- @import '../../../assets/palette';
38
-
39
- .mg-h-card {
40
- box-shadow: 0 8px 12px 0 rgba(0, 0, 0, 0.25);
41
- height: 3.75rem;
42
-
43
- .mg-icon {
44
- color: map-get($palette, 'brand');
45
- cursor: pointer;
38
+ .mg-h-card {
39
+ background: #fff;
40
+ box-shadow: 0 8px 12px 0 rgba(0, 0, 0, 0.25);
41
+ height: 3.75rem;
46
42
  }
47
- }
48
43
  </style>
@@ -25,7 +25,7 @@
25
25
  <div
26
26
  v-if="slotVisibility"
27
27
  class="mg-h-footballer-subtext text-uppercase"
28
- ><span v-if="!isLarge" class="mx-2">-</span><slot></slot></div>
28
+ ><span v-if="!isLarge" class="mx-1">-</span><slot></slot></div>
29
29
  </div>
30
30
  <!-- end of FOOTBALLER NAME -->
31
31
  <!-- ROLE BADGE -->
@@ -132,6 +132,7 @@ export default {
132
132
  }
133
133
 
134
134
  &-subtext {
135
+ color: #979797;
135
136
  font-size: 0.875rem;
136
137
  }
137
138
 
@@ -0,0 +1,75 @@
1
+ import MgHFootballerCard from './HFootballerCard.vue';
2
+
3
+ // More on default export: https://storybook.js.org/docs/vue/writing-stories/introduction#default-export
4
+ export default {
5
+ title: 'Footballer/HFootballerCard',
6
+ component: MgHFootballerCard,
7
+ // More on argTypes: https://storybook.js.org/docs/vue/api/argtypes
8
+ argTypes: {
9
+ default: {
10
+ description: "The default Vue slot",
11
+ control: {
12
+ type: 'text',
13
+ },
14
+ table: {
15
+ category: 'Slots',
16
+ type: {
17
+ summary: 'html',
18
+ },
19
+ }
20
+ },
21
+ actions: {
22
+ description: "The actions Vue slot",
23
+ control: {
24
+ type: 'text',
25
+ },
26
+ table: {
27
+ category: 'Slots',
28
+ type: {
29
+ summary: 'html',
30
+ },
31
+ }
32
+ }
33
+ },
34
+ };
35
+
36
+ // More on component templates: https://storybook.js.org/docs/vue/writing-stories/introduction#using-args
37
+ const Template = (args, { argTypes }) => ({
38
+ props: Object.keys(argTypes),
39
+ components: { MgHFootballerCard },
40
+ template: `<mg-h-footballer-card @click="$emit('click')" v-bind="$props">
41
+ <template v-if="${'default' in args}" v-slot>${args.default}</template>
42
+ <template v-if="${'actions' in args}" v-slot:actions>${args.actions}</template>
43
+ </mg-h-footballer-card>`,
44
+ });
45
+
46
+ export const Default = Template.bind({});
47
+ // More on args: https://storybook.js.org/docs/vue/writing-stories/args
48
+ Default.args = {
49
+ firstname: 'P',
50
+ lastname: 'Dybala',
51
+ role: 'A',
52
+ default: '<span><b>MIL</b></span> - <span>JUV</span>',
53
+ pressed: false
54
+ };
55
+
56
+ export const Actions = Template.bind({});
57
+ // More on args: https://storybook.js.org/docs/vue/writing-stories/args
58
+ Actions.args = {
59
+ firstname: 'P',
60
+ lastname: 'Dybala',
61
+ role: 'A',
62
+ default: '<span><b>MIL</b></span> - <span>JUV</span>',
63
+ actions: '<div>+</div>',
64
+ pressed: false
65
+ };
66
+
67
+ export const Pressed = Template.bind({});
68
+ // More on args: https://storybook.js.org/docs/vue/writing-stories/args
69
+ Pressed.args = {
70
+ firstname: 'P',
71
+ lastname: 'Dybala',
72
+ role: 'A',
73
+ default: '<span><b>MIL</b></span> - <span>JUV</span>',
74
+ pressed: true
75
+ };
@@ -0,0 +1,74 @@
1
+ <template>
2
+ <mg-h-card
3
+ :class="classes"
4
+ >
5
+ <template v-slot:default>
6
+ <mg-h-footballer
7
+ size="large"
8
+ :firstname="firstname"
9
+ :lastname="lastname"
10
+ :role="role"
11
+ ><slot></slot></mg-h-footballer>
12
+ </template>
13
+ <template v-slot:actions><slot name="actions"></slot></template>
14
+ </mg-h-card>
15
+ </template>
16
+
17
+ <script>
18
+ import MgHFootballer from "../horizontal-footballer/HFootballer";
19
+ import MgHCard from "../../card/horizontal-card/HCard";
20
+
21
+ export default {
22
+ name: 'mg-h-footballer-card',
23
+
24
+ props: {
25
+ firstname: {
26
+ type: String,
27
+ default: null
28
+ },
29
+ lastname: {
30
+ type: String,
31
+ default: null
32
+ },
33
+ role: {
34
+ type: String,
35
+ default: null,
36
+ validator: function (value) {
37
+ return ['P', 'D', 'C', 'A'].indexOf(value) !== -1;
38
+ },
39
+ },
40
+ pressed: {
41
+ props: {
42
+ type: Boolean,
43
+ default: false
44
+ }
45
+ }
46
+ },
47
+
48
+ computed: {
49
+ classes() {
50
+ return {
51
+ 'mg-h-footballer-card': true,
52
+ 'mg-h-footballer-card--pressed': this.pressed === true,
53
+ };
54
+ },
55
+ actionsSlotVisibility() {
56
+ return 'actions' in this.$slots && !!this.$slots.actions;
57
+ }
58
+ },
59
+
60
+ components: {
61
+ MgHFootballer,
62
+ MgHCard,
63
+ },
64
+ };
65
+ </script>
66
+
67
+ <style lang="scss">
68
+ .mg-h-footballer-card {
69
+ &--pressed {
70
+ background: #daf0d9 !important;
71
+ box-shadow: inset 0 4px 9px rgba(0, 0, 0, 0.1) !important;
72
+ }
73
+ }
74
+ </style>
@@ -1,9 +1,9 @@
1
- import MgFilter from './Filter.vue';
1
+ import MgFilterButton from './FilterButton.vue';
2
2
 
3
3
  // More on default export: https://storybook.js.org/docs/vue/writing-stories/introduction#default-export
4
4
  export default {
5
- title: 'Form/Advanced/Filter',
6
- component: MgFilter,
5
+ title: 'Form/Advanced/FilterButton',
6
+ component: MgFilterButton,
7
7
  // More on argTypes: https://storybook.js.org/docs/vue/api/argtypes
8
8
  argTypes: {
9
9
  },
@@ -12,8 +12,8 @@ export default {
12
12
  // More on component templates: https://storybook.js.org/docs/vue/writing-stories/introduction#using-args
13
13
  const Template = (args, { argTypes }) => ({
14
14
  props: Object.keys(argTypes),
15
- components: { MgFilter },
16
- template: `<mg-filter @click="$emit('click')" v-bind="$props"><template v-if="${'default' in args}" v-slot>${args.default}</template></mg-filter>`,
15
+ components: { MgFilterButton },
16
+ template: `<mg-filter-button @click="$emit('click')" v-bind="$props"><template v-if="${'default' in args}" v-slot>${args.default}</template></mg-filter-button>`,
17
17
  });
18
18
 
19
19
  export const Default = Template.bind({});
@@ -21,16 +21,3 @@ export const Default = Template.bind({});
21
21
  Default.args = {
22
22
  default: 'test'
23
23
  };
24
- //
25
- // export const Disabled = Template.bind({});
26
- // Disabled.args = {
27
- // disabled: true,
28
- // value: 'given input',
29
- // };
30
- //
31
- // export const Error = Template.bind({});
32
- // Error.args = {
33
- // disabled: false,
34
- // value: 'given input',
35
- // error: true
36
- // };
@@ -20,7 +20,7 @@
20
20
  import MgTertiaryButton from "../../button/tertiary-button/TertiaryButton";
21
21
 
22
22
  export default {
23
- name: 'mg-filter',
23
+ name: 'mg-filter-button',
24
24
 
25
25
  props: {
26
26
  enabledFiltersCount: {
@@ -32,7 +32,7 @@ export default {
32
32
  computed: {
33
33
  classes() {
34
34
  return {
35
- 'mg-filter': true,
35
+ 'mg-filter-button': true,
36
36
  };
37
37
  },
38
38
 
@@ -56,7 +56,7 @@ export default {
56
56
  <style lang="scss">
57
57
  @import '../../../../assets/palette';
58
58
 
59
- .mg-filter {
59
+ .mg-filter-button {
60
60
  svg {
61
61
  fill: map-get($palette, 'brand');
62
62
  width: 1.25rem;
@@ -0,0 +1,22 @@
1
+ import MgRemoveButton from './RemoveButton.vue';
2
+
3
+ // More on default export: https://storybook.js.org/docs/vue/writing-stories/introduction#default-export
4
+ export default {
5
+ title: 'Form/Advanced/RemoveButton',
6
+ component: MgRemoveButton,
7
+ // More on argTypes: https://storybook.js.org/docs/vue/api/argtypes
8
+ argTypes: {
9
+ },
10
+ };
11
+
12
+ // More on component templates: https://storybook.js.org/docs/vue/writing-stories/introduction#using-args
13
+ const Template = (args, { argTypes }) => ({
14
+ props: Object.keys(argTypes),
15
+ components: { MgRemoveButton },
16
+ template: `<mg-remove-button @click="$emit('click')" v-bind="$props"></mg-remove-button>`,
17
+ });
18
+
19
+ export const Default = Template.bind({});
20
+ // More on args: https://storybook.js.org/docs/vue/writing-stories/args
21
+ Default.args = {
22
+ };
@@ -0,0 +1,45 @@
1
+ <template>
2
+ <mg-tertiary-button
3
+ @click="onClick"
4
+ :class="classes"
5
+ >
6
+ <svgicon name="circle-with-minus"></svgicon>
7
+ </mg-tertiary-button>
8
+ </template>
9
+
10
+ <script>
11
+ import MgTertiaryButton from "../../button/tertiary-button/TertiaryButton";
12
+
13
+ export default {
14
+ name: 'mg-remove-button',
15
+
16
+ computed: {
17
+ classes() {
18
+ return {
19
+ 'mg-remove-button': true,
20
+ };
21
+ }
22
+ },
23
+
24
+ components: {
25
+ MgTertiaryButton,
26
+ },
27
+
28
+ methods: {
29
+ onClick() {
30
+ this.$emit('click');
31
+ },
32
+ }
33
+ };
34
+ </script>
35
+
36
+ <style lang="scss">
37
+ @import '../../../../assets/palette';
38
+
39
+ .mg-remove-button {
40
+ svg {
41
+ fill: map-get($palette, 'brand');
42
+ width: 1.125rem;
43
+ }
44
+ }
45
+ </style>
@@ -41,3 +41,10 @@ export const Default = Template.bind({});
41
41
  Default.args = {
42
42
  default: 'this is the list head'
43
43
  };
44
+
45
+ export const Active = Template.bind({});
46
+ // More on args: https://storybook.js.org/docs/vue/writing-stories/args
47
+ Active.args = {
48
+ default: 'this is the list head',
49
+ active: true
50
+ };
@@ -1,18 +1,33 @@
1
1
  <template>
2
2
  <div
3
- class="text-uppercase pb-2 px-2"
3
+ class="d-flex align-items-center text-uppercase pb-2 px-2"
4
4
  :class="classes"
5
- ><slot></slot></div>
5
+ >
6
+ <div><slot></slot></div>
7
+ <svgicon
8
+ v-if="active"
9
+ name="arrow-down"
10
+ class="ml-2"
11
+ ></svgicon>
12
+ </div>
6
13
  </template>
7
14
 
8
15
  <script>
9
16
  export default {
10
17
  name: 'mg-list-head',
11
18
 
19
+ props: {
20
+ active: {
21
+ type: Boolean,
22
+ default: false
23
+ }
24
+ },
25
+
12
26
  computed: {
13
27
  classes() {
14
28
  return {
15
29
  'mg-list-head': true,
30
+ 'mg-list-head--active': this.active === true,
16
31
  };
17
32
  },
18
33
  footerVisibility() {
@@ -31,5 +46,18 @@ export default {
31
46
  font-family: 'Ubuntu', sans-serif;
32
47
  font-size: 0.75rem;
33
48
  font-weight: 500;
49
+
50
+ svg {
51
+ fill: #777;
52
+ height: 0.5rem;
53
+ }
54
+
55
+ &--active {
56
+ color: map-get($palette, 'text') !important;
57
+
58
+ svg {
59
+ fill: map-get($palette, 'text') !important;
60
+ }
61
+ }
34
62
  }
35
63
  </style>
@@ -0,0 +1,3 @@
1
+ <svg viewBox="0 0 10 8" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M8.80666 3.52667C8.74469 3.46418 8.67095 3.41459 8.58971 3.38074C8.50847 3.34689 8.42134 3.32947 8.33333 3.32947C8.24532 3.32947 8.15818 3.34689 8.07694 3.38074C7.99571 3.41459 7.92197 3.46418 7.86 3.52667L5.66666 5.72667V0.666667C5.66666 0.489856 5.59643 0.320287 5.4714 0.195262C5.34638 0.070238 5.17681 0 5 0C4.82319 0 4.65362 0.070238 4.52859 0.195262C4.40357 0.320287 4.33333 0.489856 4.33333 0.666667V5.72667L2.14 3.52667C2.01446 3.40113 1.8442 3.33061 1.66666 3.33061C1.48913 3.33061 1.31887 3.40113 1.19333 3.52667C1.06779 3.6522 0.997269 3.82247 0.997269 4C0.997269 4.17753 1.06779 4.3478 1.19333 4.47333L4.52666 7.80667C4.59007 7.86736 4.66483 7.91494 4.74666 7.94667C4.82646 7.98194 4.91275 8.00016 5 8.00016C5.08724 8.00016 5.17353 7.98194 5.25333 7.94667C5.33516 7.91494 5.40993 7.86736 5.47333 7.80667L8.80666 4.47333C8.86915 4.41136 8.91874 4.33762 8.95259 4.25638C8.98644 4.17515 9.00386 4.08801 9.00386 4C9.00386 3.91199 8.98644 3.82486 8.95259 3.74362C8.91874 3.66238 8.86915 3.58864 8.80666 3.52667Z" fill="black"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M9 0C7.21997 0 5.47991 0.527841 3.99987 1.51677C2.51983 2.50571 1.36628 3.91131 0.685088 5.55585C0.00389956 7.20038 -0.17433 9.00998 0.172937 10.7558C0.520203 12.5016 1.37737 14.1053 2.63604 15.364C3.89472 16.6226 5.49836 17.4798 7.24419 17.8271C8.99002 18.1743 10.7996 17.9961 12.4442 17.3149C14.0887 16.6337 15.4943 15.4802 16.4832 14.0001C17.4722 12.5201 18 10.78 18 9C18 7.8181 17.7672 6.64778 17.3149 5.55585C16.8626 4.46392 16.1997 3.47177 15.364 2.63604C14.5282 1.80031 13.5361 1.13738 12.4442 0.685084C11.3522 0.232792 10.1819 0 9 0ZM9 16.2C7.57598 16.2 6.18393 15.7777 4.9999 14.9866C3.81586 14.1954 2.89302 13.0709 2.34807 11.7553C1.80312 10.4397 1.66054 8.99201 1.93835 7.59535C2.21616 6.19868 2.9019 4.91577 3.90883 3.90883C4.91577 2.90189 6.19869 2.21616 7.59535 1.93835C8.99202 1.66053 10.4397 1.80312 11.7553 2.34807C13.071 2.89302 14.1954 3.81586 14.9866 4.99989C15.7777 6.18393 16.2 7.57597 16.2 9C16.2 10.9096 15.4414 12.7409 14.0912 14.0912C12.7409 15.4414 10.9096 16.2 9 16.2ZM12.6 8.1H5.4C5.16131 8.1 4.93239 8.19482 4.76361 8.3636C4.59482 8.53238 4.5 8.7613 4.5 9C4.5 9.23869 4.59482 9.46761 4.76361 9.63639C4.93239 9.80518 5.16131 9.9 5.4 9.9H12.6C12.8387 9.9 13.0676 9.80518 13.2364 9.63639C13.4052 9.46761 13.5 9.23869 13.5 9C13.5 8.7613 13.4052 8.53238 13.2364 8.3636C13.0676 8.19482 12.8387 8.1 12.6 8.1Z" fill="#D81159"/>
3
+ </svg>