@farm-investimentos/front-mfe-components 5.1.0 → 5.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. package/dist/front-mfe-components.common.js +330 -75
  2. package/dist/front-mfe-components.common.js.map +1 -1
  3. package/dist/front-mfe-components.css +1 -1
  4. package/dist/front-mfe-components.umd.js +330 -75
  5. package/dist/front-mfe-components.umd.js.map +1 -1
  6. package/dist/front-mfe-components.umd.min.js +1 -1
  7. package/dist/front-mfe-components.umd.min.js.map +1 -1
  8. package/package.json +6 -6
  9. package/src/components/Logger/Logger.scss +17 -0
  10. package/src/components/Logger/Logger.stories.js +33 -0
  11. package/src/components/Logger/Logger.vue +28 -0
  12. package/src/components/Logger/LoggerItem/ILoggerItem.ts +9 -0
  13. package/src/components/Logger/LoggerItem/LoggerItem.scss +64 -0
  14. package/src/components/Logger/LoggerItem/LoggerItem.stories.js +38 -0
  15. package/src/components/Logger/LoggerItem/LoggerItem.vue +53 -0
  16. package/src/components/Logger/LoggerItem/__tests__/LoggerItem.spec.js +53 -0
  17. package/src/components/Logger/LoggerItem/index.ts +4 -0
  18. package/src/components/Logger/__tests__/Logger.spec.js +26 -0
  19. package/src/components/Logger/index.ts +4 -0
  20. package/src/components/Stepper/StepperHeader/StepperHeader.scss +41 -53
  21. package/src/components/Stepper/StepperHeader/StepperHeader.stories.js +6 -0
  22. package/src/components/Stepper/StepperHeader/StepperHeader.vue +34 -32
  23. package/src/examples/Logger/Logger.stories.js +47 -0
  24. package/src/examples/Logger/LoggerItem.stories.js +81 -0
  25. package/src/examples/Modal.stories.js +53 -1
  26. package/src/main.ts +4 -0
  27. package/src/scss/DefaultModal.scss +9 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@farm-investimentos/front-mfe-components",
3
- "version": "5.1.0",
3
+ "version": "5.2.2",
4
4
  "author": "farm investimentos",
5
5
  "private": false,
6
6
  "main": "./dist/front-mfe-components.common.js",
@@ -27,11 +27,11 @@
27
27
  "vuetify-dialog": "^2.0.17"
28
28
  },
29
29
  "devDependencies": {
30
- "@socheatsok78/storybook-addon-vuetify": "^0.1.8",
31
- "@storybook/addon-actions": "^6.3.6",
32
- "@storybook/addon-essentials": "^6.3.6",
33
- "@storybook/addon-links": "^6.3.6",
34
- "@storybook/vue": "^6.3.6",
30
+ "@socheatsok78/storybook-addon-vuetify": "^0.1.9",
31
+ "@storybook/addon-actions": "^6.5.8",
32
+ "@storybook/addon-essentials": "^6.5.8",
33
+ "@storybook/addon-links": "^6.5.8",
34
+ "@storybook/vue": "^6.5.8",
35
35
  "@types/jest": "^24.9.1",
36
36
  "@typescript-eslint/eslint-plugin": "^4.18.0",
37
37
  "@typescript-eslint/parser": "^4.18.0",
@@ -0,0 +1,17 @@
1
+ .logger {
2
+ display: block;
3
+
4
+ .logger__item {
5
+ float: left;
6
+ clear: both;
7
+ }
8
+ }
9
+
10
+ .logger__divider {
11
+ float: left;
12
+ clear: both;
13
+ height: 40px;
14
+ margin: -4px 0 -4px 16px;
15
+ width: 1px;
16
+ background-color: var(--v-gray-lighten1);
17
+ }
@@ -0,0 +1,33 @@
1
+ import Logger from './Logger.vue';
2
+
3
+ export default {
4
+ title: 'API/Logger',
5
+ component: Logger,
6
+ parameters: {
7
+ docs: {
8
+ description: {
9
+ component: `Logger<br />
10
+ selector: <em>farm-logger</em>
11
+ `,
12
+ },
13
+ },
14
+
15
+ design: {
16
+ type: 'figma',
17
+ url: 'https://www.figma.com/file/XDwOALFs1s9uXPFVE7BP9B/%E2%9C%8D---Cr%C3%A9dito?node-id=4029%3A28672',
18
+ },
19
+ viewMode: 'docs',
20
+ },
21
+ };
22
+
23
+ export const Primary = () => ({
24
+ components: { Logger },
25
+ data() {
26
+ return {};
27
+ },
28
+ template: `<Logger>
29
+
30
+ </Logger>`,
31
+ });
32
+
33
+ Primary.storyName = 'Básico';
@@ -0,0 +1,28 @@
1
+ <template>
2
+ <section class="logger">
3
+ <template v-for="(item, index) in items">
4
+ <LoggerItem :item="item" :key="index" />
5
+ <div v-if="hasDivider(index)" class="logger__divider" :key="'divider_' + index">
6
+ </div>
7
+ </template>
8
+ </section>
9
+ </template>
10
+ <script lang="ts">
11
+ import Vue, { PropType } from 'vue';
12
+ import ILoggerItem from './LoggerItem/ILoggerItem';
13
+ import LoggerItem from './LoggerItem/';
14
+
15
+ export default Vue.extend({
16
+ name: 'farm-logger',
17
+ components: { LoggerItem },
18
+ props: { items: { required: true, type: Array as PropType<Array<ILoggerItem>> } },
19
+ methods: {
20
+ hasDivider(index: number): boolean {
21
+ return index < this.items.length - 1;
22
+ },
23
+ },
24
+ });
25
+ </script>
26
+ <style lang="sass" scoped>
27
+ @import './Logger.scss'
28
+ </style>
@@ -0,0 +1,9 @@
1
+ interface ILoggerItem {
2
+ userName: string;
3
+ icon: string;
4
+ formattedDate: string;
5
+ message: string;
6
+ status: string;
7
+ }
8
+
9
+ export default ILoggerItem;
@@ -0,0 +1,64 @@
1
+ @mixin loggerMessage($color) {
2
+ >i.mdi {
3
+ border-color: $color;
4
+ background-color: $color;
5
+ }
6
+
7
+ .logger__message {
8
+ color: $color;
9
+ }
10
+ }
11
+
12
+ .logger__item {
13
+ display: flex;
14
+ flex-direction: row;
15
+ height: 64px;
16
+ align-items: center;
17
+
18
+ >div {
19
+ display: flex;
20
+ flex-direction: column;
21
+ padding-left: 8px;
22
+ }
23
+
24
+ &.logger__item--error {
25
+ @include loggerMessage(var(--v-error-base));
26
+ }
27
+
28
+ &.logger__item--success {
29
+ @include loggerMessage(var(--v-secondary-base));
30
+
31
+ }
32
+ }
33
+
34
+
35
+ .logger__item>i.mdi {
36
+ border: 1px solid var(--v-gray-lighten2);
37
+ border-radius: 50%;
38
+ width: 32px;
39
+ height: 32px;
40
+ display: block;
41
+
42
+ display: flex;
43
+ align-items: center;
44
+ justify-content: center;
45
+
46
+ border-color: var(--v-gray-lighten1);
47
+ background-color: var(--v-gray-lighten1);
48
+
49
+ &:before {
50
+ font-size: 16px;
51
+ color: white;
52
+ }
53
+ }
54
+
55
+ .logger__date,
56
+ .logger__username {
57
+ font-size: 10px;
58
+ font-weight: 400;
59
+ }
60
+
61
+ .logger__message {
62
+ font-size: 14px;
63
+ font-weight: 700;
64
+ }
@@ -0,0 +1,38 @@
1
+ import LoggerItem from './LoggerItem.vue';
2
+
3
+ export default {
4
+ title: 'API/Logger/LoggerItem',
5
+ component: LoggerItem,
6
+ parameters: {
7
+ docs: {
8
+ description: {
9
+ component: `LoggerItem<br />
10
+ selector: <em>farm-logger-item</em>
11
+ `,
12
+ },
13
+ },
14
+ design: {
15
+ type: 'figma',
16
+ url: 'https://www.figma.com/file/XDwOALFs1s9uXPFVE7BP9B/%E2%9C%8D---Cr%C3%A9dito?node-id=4029%3A28672',
17
+ },
18
+ viewMode: 'docs',
19
+ },
20
+ };
21
+
22
+ export const Primary = () => ({
23
+ components: { LoggerItem },
24
+ data() {
25
+ return {
26
+ item: {
27
+ icon: 'book',
28
+ message: 'Recusado entre as pré elegíveis',
29
+ userName: 'Cleyton Rasta',
30
+ formattedDate: '13/06/2022 20:40',
31
+ status: 'error',
32
+ },
33
+ };
34
+ },
35
+ template: `<LoggerItem :item="item" />`,
36
+ });
37
+
38
+ Primary.storyName = 'Básico';
@@ -0,0 +1,53 @@
1
+ <template>
2
+ <section
3
+ class="logger__item"
4
+ :class="{
5
+ 'logger__item--error': item.status === 'error',
6
+ 'logger__item--success': item.status === 'success',
7
+ }"
8
+ >
9
+ <i
10
+ :class="{
11
+ mdi: true,
12
+ [mdiIconName]: true,
13
+ }"
14
+ />
15
+ <div>
16
+ <span class="logger__date">
17
+ {{ item.formattedDate }}
18
+ </span>
19
+ <span class="logger__message">
20
+ {{ item.message }}
21
+ </span>
22
+ <span class="logger__username">
23
+ <i class="mdi mdi-account-circle" />
24
+ {{ item.userName }}
25
+ </span>
26
+ </div>
27
+ </section>
28
+ </template>
29
+ <script lang="ts">
30
+ import Vue, { PropType } from 'vue';
31
+ import ILoggerItem from './ILoggerItem';
32
+
33
+ export default Vue.extend({
34
+ name: 'farm-logger-item',
35
+ props: {
36
+ item: { required: true, type: Object as PropType<ILoggerItem> },
37
+ },
38
+ computed: {
39
+ mdiIconName() {
40
+ if (this.item.icon) {
41
+ return `mdi-${this.item.icon}`;
42
+ }
43
+ if(!this.item.status) {
44
+ return '';
45
+ }
46
+ return `mdi-${this.item.status === 'success' ? 'check' : 'close'}`;
47
+ },
48
+ },
49
+ });
50
+ </script>
51
+ <style lang="sass" scoped>
52
+ @import './LoggerItem.scss'
53
+ </style>
@@ -0,0 +1,53 @@
1
+ import { shallowMount } from '@vue/test-utils';
2
+ import LoggerItem from '../LoggerItem';
3
+
4
+ describe('LoggerItem component', () => {
5
+ let wrapper;
6
+ let component;
7
+
8
+ beforeEach(() => {
9
+ wrapper = shallowMount(LoggerItem, {
10
+ propsData: {
11
+ item: {},
12
+ },
13
+ });
14
+ component = wrapper.vm;
15
+ });
16
+
17
+ test('LoggerItem created', () => {
18
+ expect(wrapper).toBeDefined();
19
+ });
20
+
21
+ describe('Computed properties', () => {
22
+ it('Should return custom icon', async () => {
23
+ await wrapper.setProps({
24
+ item: {
25
+ message: 'Recusado entre as pré elegíveis',
26
+ userName: 'Cleyton Rasta',
27
+ formattedDate: '13/06/2022 20:40',
28
+ icon: 'aaa',
29
+ },
30
+ });
31
+ expect(component.mdiIconName).toEqual('mdi-aaa');
32
+ });
33
+
34
+ it('Should return success icon', async () => {
35
+ await wrapper.setProps({
36
+ item: {
37
+ status: 'success',
38
+ },
39
+ });
40
+ expect(component.mdiIconName).toEqual('mdi-check');
41
+ });
42
+
43
+ it('Should return success icon', async () => {
44
+ await wrapper.setProps({
45
+ item: {
46
+ status: 'error',
47
+ },
48
+ });
49
+ expect(component.mdiIconName).toEqual('mdi-close');
50
+ });
51
+
52
+ });
53
+ });
@@ -0,0 +1,4 @@
1
+ import LoggerItem from './LoggerItem.vue';
2
+
3
+ export { LoggerItem };
4
+ export default LoggerItem;
@@ -0,0 +1,26 @@
1
+ import { shallowMount } from '@vue/test-utils';
2
+ import Logger from '../Logger';
3
+
4
+ describe('Logger component', () => {
5
+ let wrapper;
6
+
7
+ beforeEach(() => {
8
+ wrapper = shallowMount(Logger, {
9
+ propsData: {
10
+ items: [
11
+ {
12
+ icon: 'book',
13
+ message: 'Recusado entre as pré elegíveis',
14
+ userName: 'Cleyton Rasta',
15
+ formattedDate: '13/06/2022 20:40',
16
+ status: 'error',
17
+ },
18
+ ],
19
+ },
20
+ });
21
+ });
22
+
23
+ test('Logger created', () => {
24
+ expect(wrapper).toBeDefined();
25
+ });
26
+ });
@@ -0,0 +1,4 @@
1
+ import Logger from './Logger.vue';
2
+
3
+ export { Logger };
4
+ export default Logger;
@@ -1,10 +1,19 @@
1
1
  $step-height: 64px;
2
- $line-color : #D6D6D6;
3
- $fore-color: #858585;
4
- $current-color: #5089DE;
5
- $previous-color: #00B493;
6
- $error-color: #EA5455;
7
- $vertical-step-width: 160px;
2
+
3
+ @mixin stepperHeaderStepColor($color) {
4
+ i.mdi {
5
+ background-color: $color;
6
+ border-color: $color;
7
+ }
8
+
9
+ i.mdi:before {
10
+ color: white;
11
+ }
12
+ }
13
+
14
+ .horizontal-step-size .stepper__header--vertical {
15
+ width: 160px;
16
+ }
8
17
 
9
18
  .stepper__header {
10
19
  display: flex;
@@ -17,44 +26,20 @@ $vertical-step-width: 160px;
17
26
  flex-direction: column;
18
27
  align-items: center;
19
28
  justify-items: center;
20
- color: $fore-color;
29
+ color: var(--v-gray-lighten1);
21
30
  font-size: 14px;
22
31
  font-weight: 700;
23
32
 
24
33
  &.stepper__header-step--previous {
25
- color: $previous-color;
26
-
27
- i.mdi {
28
- border-color: $previous-color;
29
- }
30
-
31
- i.mdi:before {
32
- color: $previous-color;
33
- }
34
+ @include stepperHeaderStepColor(var(--v-secondary-base));
34
35
  }
35
36
 
36
37
  &.stepper__header-step--current {
37
- color: $current-color;
38
-
39
- i.mdi {
40
- border-color: $current-color;
41
- }
42
-
43
- i.mdi:before {
44
- color: $current-color;
45
- }
38
+ @include stepperHeaderStepColor(var(--v-accent-base));
46
39
  }
47
40
 
48
41
  &.stepper__header-step--error {
49
- color: $error-color;
50
-
51
- i.mdi {
52
- border-color: $error-color;
53
- }
54
-
55
- i.mdi:before {
56
- color: $error-color;
57
- }
42
+ @include stepperHeaderStepColor(var(--v-error-base));
58
43
  }
59
44
 
60
45
  span {
@@ -63,8 +48,6 @@ $vertical-step-width: 160px;
63
48
  }
64
49
  }
65
50
 
66
-
67
-
68
51
  .stepper__divider--horizontal {
69
52
  display: block;
70
53
  flex: 1 1 0px;
@@ -73,27 +56,23 @@ $vertical-step-width: 160px;
73
56
 
74
57
  border: none;
75
58
  margin: 16px -16px 0;
76
- background: $line-color;
59
+ background: var(--v-gray-lighten2);
77
60
 
78
61
  &.stepper__divider--previous {
79
- background: $previous-color;
62
+ background: var(--v-secondary-base);
80
63
  }
81
64
 
82
65
  &.stepper__divider--previous-to-current {
83
- background: linear-gradient(to right, $previous-color, $current-color);
66
+ background: linear-gradient(to right, var(--v-secondary-base), var(--v-accent-base));
84
67
  }
85
68
 
86
69
  &.stepper__divider--previous-to-error {
87
- background: linear-gradient(to right, $previous-color, $error-color);
70
+ background: linear-gradient(to right, var(--v-secondary-base), var(--v-error-base));
88
71
  }
89
72
  }
90
73
 
91
74
  &.stepper__header--vertical {
92
75
  display: block;
93
- align-items: center;
94
- flex-direction: column;
95
- width: $vertical-step-width;
96
-
97
76
 
98
77
  div.stepper__header-step {
99
78
  width: 100%;
@@ -106,8 +85,10 @@ $vertical-step-width: 160px;
106
85
  }
107
86
 
108
87
  span {
109
- display: block;
88
+ display: flex;
89
+ align-items: center;
110
90
  width: calc(100% - 40px);
91
+ height: 32px;
111
92
  clear: none;
112
93
  float: left;
113
94
  margin-top: 0;
@@ -122,25 +103,33 @@ $vertical-step-width: 160px;
122
103
  height: 32px;
123
104
  margin: -24px 0 8px 16px;
124
105
  width: 1px;
125
- background-color: $line-color;
106
+ background-color: var(--v-gray-lighten2);
126
107
 
127
108
  &.stepper__divider--previous {
128
- background-color: $previous-color;
109
+ background-color: var(--v-secondary-base);
129
110
  }
130
111
 
131
112
  &.stepper__divider--previous-to-current {
132
- background: linear-gradient(to bottom, $previous-color, $current-color);
113
+ background: linear-gradient(
114
+ to bottom,
115
+ var(--v-secondary-base),
116
+ var(--v-accent-base)
117
+ );
133
118
  }
134
119
 
135
120
  &.stepper__divider--previous-to-error {
136
- background: linear-gradient(to bottom, $previous-color, $error-color);
121
+ background: linear-gradient(
122
+ to bottom,
123
+ var(--v-secondary-base),
124
+ var(--v-error-base)
125
+ );
137
126
  }
138
127
  }
139
128
  }
140
129
  }
141
130
 
142
131
  i.mdi {
143
- border: 1px solid $line-color;
132
+ border: 1px solid var(--v-gray-lighten2);
144
133
  border-radius: 50%;
145
134
  width: 32px;
146
135
  height: 32px;
@@ -150,9 +139,8 @@ i.mdi {
150
139
  align-items: center;
151
140
  justify-content: center;
152
141
 
153
-
154
142
  &:before {
155
143
  font-size: 16px;
156
- color: $fore-color;
144
+ color: var(--v-gray-lighten1);
157
145
  }
158
- }
146
+ }
@@ -11,6 +11,10 @@ export default {
11
11
  `,
12
12
  },
13
13
  },
14
+ design: {
15
+ type: 'figma',
16
+ url: 'https://www.figma.com/file/XDwOALFs1s9uXPFVE7BP9B/%E2%9C%8D---Cr%C3%A9dito?node-id=4029%3A28672',
17
+ },
14
18
  viewMode: 'docs',
15
19
  },
16
20
  };
@@ -32,3 +36,5 @@ export const Primary = () => ({
32
36
  });
33
37
 
34
38
  Primary.storyName = 'Básico';
39
+
40
+ //
@@ -1,39 +1,41 @@
1
1
  <template>
2
- <section :class="{ stepper__header: true, 'stepper__header--vertical': vertical }">
3
- <template v-for="(step, index) in steps">
4
- <div
5
- :class="{
6
- 'stepper__header-step': true,
7
- 'stepper__header-step--current': isStepCurrent(index),
8
- 'stepper__header-step--previous': isStepPrevious(index),
9
- 'stepper__header-step--error': isStepError(index),
10
- }"
11
- :key="step.label"
12
- >
13
- <i
2
+ <div class="horizontal-step-size">
3
+ <section :class="{ stepper__header: true, 'stepper__header--vertical': vertical }">
4
+ <template v-for="(step, index) in steps">
5
+ <div
14
6
  :class="{
15
- mdi: true,
16
- ['mdi-' + step.icon]: true,
7
+ 'stepper__header-step': true,
8
+ 'stepper__header-step--current': isStepCurrent(index),
9
+ 'stepper__header-step--previous': isStepPrevious(index),
10
+ 'stepper__header-step--error': isStepError(index),
17
11
  }"
18
- v-if="step.icon"
12
+ :key="step.label"
13
+ >
14
+ <i
15
+ :class="{
16
+ mdi: true,
17
+ ['mdi-' + step.icon]: true,
18
+ }"
19
+ v-if="step.icon"
20
+ />
21
+ <span>
22
+ {{ step.label }}
23
+ </span>
24
+ </div>
25
+ <div
26
+ :class="{
27
+ 'stepper__divider--horizontal': !vertical,
28
+ 'stepper__divider--vertical': vertical,
29
+ 'stepper__divider--previous': isStepPrevious(index),
30
+ 'stepper__divider--previous-to-current': isStepPreviousToCurrent(index),
31
+ 'stepper__divider--previous-to-error': isStepPreviousToError(index),
32
+ }"
33
+ v-if="hasDivider(index)"
34
+ :key="'divider_' + step.label"
19
35
  />
20
- <span>
21
- {{ step.label }}
22
- </span>
23
- </div>
24
- <div
25
- :class="{
26
- 'stepper__divider--horizontal': !vertical,
27
- 'stepper__divider--vertical': vertical,
28
- 'stepper__divider--previous': isStepPrevious(index),
29
- 'stepper__divider--previous-to-current': isStepPreviousToCurrent(index),
30
- 'stepper__divider--previous-to-error': isStepPreviousToError(index),
31
- }"
32
- v-if="hasDivider(index)"
33
- :key="'divider_' + step.label"
34
- />
35
- </template>
36
- </section>
36
+ </template>
37
+ </section>
38
+ </div>
37
39
  </template>
38
40
  <script lang="ts">
39
41
  import Vue, { PropType } from 'vue';
@@ -0,0 +1,47 @@
1
+ import { Logger } from '../../main';
2
+
3
+ export default {
4
+ title: 'Examples/Logger/Logger',
5
+ component: Logger,
6
+ parameters: {
7
+ docs: {
8
+ description: {
9
+ component: `Logger<br />
10
+ selector: <em>farm-logger</em>
11
+ `,
12
+ },
13
+ },
14
+ viewMode: 'docs',
15
+ },
16
+ };
17
+
18
+ export const Primary = () => ({
19
+ components: { Logger },
20
+ data() {
21
+ return {
22
+ items: [
23
+ {
24
+ message: 'Recusado entre as pré elegíveis',
25
+ userName: 'Cleyton Rasta',
26
+ formattedDate: '13/06/2022 20:40',
27
+ status: 'error',
28
+ },
29
+ {
30
+ message: 'Aprovado entre as pré elegíveis',
31
+ userName: 'Cleyton Rasta',
32
+ formattedDate: '13/06/2022 20:40',
33
+ status: 'success',
34
+ },
35
+ {
36
+ message: 'Aprovado entre as pré elegíveis',
37
+ userName: 'Cleyton Rasta',
38
+ formattedDate: '13/06/2022 20:40',
39
+ status: 'success',
40
+ },
41
+ ],
42
+ };
43
+ },
44
+ template: `<Logger :items="items" />`,
45
+ });
46
+
47
+ Primary.storyName = 'Básico';