@farm-investimentos/front-mfe-components 7.0.2 → 7.3.0

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 (38) hide show
  1. package/dist/front-mfe-components.common.js +613 -286
  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 +613 -286
  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 +1 -1
  9. package/src/components/Buttons/DefaultButton/DefaultButton.scss +26 -4
  10. package/src/components/Buttons/DefaultButton/DefaultButton.vue +34 -7
  11. package/src/components/ChipInviteStatus/ChipInviteStatus.vue +2 -0
  12. package/src/components/DefaultTextField/DefaultTextField.stories.js +4 -1
  13. package/src/components/DefaultTextField/DefaultTextField.vue +11 -13
  14. package/src/components/Icon/Icon.scss +4 -3
  15. package/src/components/Label/Label.scss +13 -0
  16. package/src/components/Label/Label.stories.js +38 -0
  17. package/src/components/Label/Label.vue +24 -0
  18. package/src/components/Label/__tests__/Label.spec.js +20 -0
  19. package/src/components/Label/index.ts +4 -0
  20. package/src/components/Loader/Loader.vue +40 -40
  21. package/src/components/ProgressBar/ProgressBar.scss +25 -0
  22. package/src/components/ProgressBar/ProgressBar.stories.js +43 -0
  23. package/src/components/ProgressBar/ProgressBar.vue +67 -0
  24. package/src/components/ProgressBar/__tests__/ProgressBar.spec.js +22 -0
  25. package/src/components/ProgressBar/index.ts +4 -0
  26. package/src/components/TextField/TextField.scss +51 -0
  27. package/src/components/TextField/TextField.stories.js +47 -0
  28. package/src/components/TextField/TextField.vue +18 -0
  29. package/src/components/TextField/__tests__/Label.spec.js +20 -0
  30. package/src/components/TextField/index.ts +4 -0
  31. package/src/examples/Buttons.stories.js +66 -11
  32. package/src/examples/Form/Full.stories.js +64 -0
  33. package/src/examples/Form/Label.stories.js +18 -0
  34. package/src/examples/Form/TextField.stories.js +47 -0
  35. package/src/examples/ProgressBar.stories.js +71 -0
  36. package/src/examples/inputs/Password.stories.js +1 -1
  37. package/src/examples/inputs/Select.stories.js +1 -1
  38. package/src/main.ts +4 -1
@@ -0,0 +1,47 @@
1
+ import { withDesign } from 'storybook-addon-designs';
2
+ import TextField from './TextField.vue';
3
+
4
+ export default {
5
+ title: 'API/Form/TextField',
6
+ component: TextField,
7
+ decorators: [withDesign],
8
+ parameters: {
9
+ docs: {
10
+ description: {
11
+ component: `Text field<br />
12
+ selector: <em>farm-texfield</em>
13
+ `,
14
+ },
15
+ },
16
+ design: {
17
+ type: 'figma',
18
+ url: 'https://www.figma.com/file/1f84J4m1IBghWhozQvdyyt/%E2%9C%85---Design-System-%7C-v1?node-id=1503%3A227',
19
+ },
20
+ viewMode: 'docs',
21
+ },
22
+ };
23
+
24
+ export const Primary = () => ({
25
+ components: { 'farm-textfield': TextField },
26
+ data() {
27
+ return {
28
+ v: '',
29
+ };
30
+ },
31
+ template: `<div style="width: 480px">
32
+ <farm-textfield v-model="v" />
33
+ value: {{ v }}
34
+ </div>`,
35
+ });
36
+
37
+ const parameters = {
38
+ design: {
39
+ type: 'figma',
40
+ url: 'https://www.figma.com/file/1f84J4m1IBghWhozQvdyyt/%E2%9C%85---Design-System-%7C-v1?node-id=1503%3A227',
41
+ },
42
+ };
43
+
44
+ Primary.story = {
45
+ name: 'Basic',
46
+ parameters,
47
+ };
@@ -0,0 +1,18 @@
1
+ <template>
2
+ <v-text-field class="farm-textfield" v-on="{ ...$listeners }" v-bind="$attrs" outlined />
3
+ </template>
4
+ <script lang="ts">
5
+ import Vue from 'vue';
6
+ import { VTextField } from 'vuetify/lib/components/VTextField';
7
+
8
+ export default Vue.extend({
9
+ name: 'farm-textfield',
10
+ inheritAttrs: true,
11
+ components: {
12
+ VTextField,
13
+ },
14
+ });
15
+ </script>
16
+ <style lang="scss" scoped>
17
+ @import 'TextField.scss';
18
+ </style>
@@ -0,0 +1,20 @@
1
+ import { shallowMount } from '@vue/test-utils';
2
+ import TextField from '../TextField';
3
+
4
+ describe('TextField component', () => {
5
+ let wrapper;
6
+
7
+ beforeEach(() => {
8
+ wrapper = shallowMount(TextField);
9
+ });
10
+
11
+ test('Created hook', () => {
12
+ expect(wrapper).toBeDefined();
13
+ });
14
+
15
+ describe('mount component', () => {
16
+ it('renders correctly', () => {
17
+ expect(wrapper.element).toMatchSnapshot();
18
+ });
19
+ });
20
+ });
@@ -0,0 +1,4 @@
1
+ import TextField from './TextField.vue';
2
+
3
+ export { TextField };
4
+ export default TextField;
@@ -1,5 +1,5 @@
1
1
  import { withDesign } from 'storybook-addon-designs';
2
- import { DefaultButton } from '../main';
2
+ import { DefaultButton, Icon } from '../main';
3
3
  import('./Buttons.stories.scss');
4
4
 
5
5
  export default {
@@ -27,7 +27,7 @@ export const ActiveButtons = () => ({
27
27
  };
28
28
  },
29
29
  template: `<div class="buttons-container">
30
- <farm-btn v-for="color of colors":key="color" :color="color">
30
+ <farm-btn v-for="color of colors":key="'random_9_' + color" :color="color">
31
31
  {{ color }}
32
32
  </farm-btn>
33
33
  </div>`,
@@ -44,7 +44,7 @@ export const OutlinedButtons = () => ({
44
44
  },
45
45
  template: `<div class="buttons-container">
46
46
  <h4>Outlined</h4>
47
- <farm-btn v-for="color of colors":key="color" :color="color" outlined>
47
+ <farm-btn v-for="color of colors":key="'random_8_' + color" :color="color" outlined>
48
48
  {{ color }}
49
49
  </farm-btn>
50
50
  </div>`,
@@ -62,15 +62,15 @@ export const DisabledButtons = () => ({
62
62
  },
63
63
  template: `<div class="buttons-container">
64
64
  <h4>Default</h4>
65
- <farm-btn v-for="color of colors":key="color" :color="color" disabled>
65
+ <farm-btn v-for="color of colors":key="'random_5_' + color" :color="color" disabled>
66
66
  {{ color }}
67
67
  </farm-btn>
68
68
  <h4>Outlined</h4>
69
- <farm-btn v-for="color of colors":key="color" :color="color" outlined disabled>
69
+ <farm-btn v-for="color of colors":key="'random_6_' + color" :color="color" outlined disabled>
70
70
  {{ color }}
71
71
  </farm-btn>
72
72
  <h4>Plain</h4>
73
- <farm-btn v-for="color of colors":key="color" :color="color" plain disabled>
73
+ <farm-btn v-for="color of colors":key="'random_7_' + color" :color="color" plain disabled>
74
74
  {{ color }}
75
75
  </farm-btn>
76
76
  </div>`,
@@ -86,7 +86,7 @@ export const Plain = () => ({
86
86
  };
87
87
  },
88
88
  template: `<div class="buttons-container">
89
- <farm-btn v-for="color of colors":key="color" :color="color" plain>
89
+ <farm-btn v-for="color of colors":key="'random_4_' + color" :color="color" plain>
90
90
  {{ color }}
91
91
  </farm-btn>
92
92
  </div>`,
@@ -103,7 +103,7 @@ export const Icons = () => ({
103
103
  },
104
104
  template: `<div class="buttons-container">
105
105
  <h4>Full</h4>
106
- <farm-btn v-for="color of colors":key="color" :color="color">
106
+ <farm-btn v-for="color of colors":key="'random_3_' + color" :color="color">
107
107
  <v-icon>mdi-book</v-icon> book
108
108
  </farm-btn>
109
109
 
@@ -123,6 +123,7 @@ export const Icons = () => ({
123
123
  export const Iconed = () => ({
124
124
  components: {
125
125
  'farm-btn': DefaultButton,
126
+ 'farm-icon': Icon,
126
127
  },
127
128
  data() {
128
129
  return {
@@ -131,8 +132,8 @@ export const Iconed = () => ({
131
132
  },
132
133
  template: `<div class="buttons-container">
133
134
  <h4>Icon</h4>
134
- <farm-btn icon v-for="color of colors" :key="color" :color="color">
135
- <v-icon>mdi-book</v-icon>
135
+ <farm-btn icon v-for="color of colors" :key="'random_2_' + color" :color="color">
136
+ <farm-icon>book</farm-icon>
136
137
  </farm-btn>
137
138
  </div>`,
138
139
  });
@@ -148,11 +149,62 @@ export const Rounded = () => ({
148
149
  },
149
150
  template: `<div class="buttons-container">
150
151
  <h4>Rounded</h4>
151
- <farm-btn v-for="color of colors" :key="color" :color="color" rounded >rounded
152
+ <farm-btn v-for="color of colors" :key="'random_1_' + color" :color="color" rounded >rounded
152
153
  </farm-btn>
153
154
  </div>`,
154
155
  });
155
156
 
157
+ export const Sizes = () => ({
158
+ components: {
159
+ 'farm-btn': DefaultButton,
160
+ 'farm-icon': Icon,
161
+ },
162
+ data() {
163
+ return {
164
+ sizes: ['xs', 'sm', 'md', 'lg', 'xl'],
165
+ styles: {
166
+ display: 'flex',
167
+ flexDirection: 'row',
168
+ farmBtn: {
169
+ marginRight: '12px',
170
+ },
171
+ },
172
+ };
173
+ },
174
+ template: `<div>
175
+ <h4>Default</h4>
176
+ <div :style="styles">
177
+ <farm-btn v-for="size of sizes" :style="styles.farmBtn" :key="'default_' + size" :size="size" color="secondary">
178
+ {{ size }}
179
+ </farm-btn>
180
+ </div>
181
+ <h4>Outlined</h4>
182
+ <div :style="styles">
183
+ <farm-btn v-for="size of sizes" :style="styles.farmBtn" :key="'outlined_' + size" :size="size" color="secondary" outlined>
184
+ {{ size }}
185
+ </farm-btn>
186
+ </div>
187
+ <h4>Plain</h4>
188
+ <div :style="styles">
189
+ <farm-btn v-for="size of sizes" :style="styles.farmBtn" :key="'plain_' + size" :size="size" color="secondary" plain>
190
+ {{ size }}
191
+ </farm-btn>
192
+ </div>
193
+ <h4>Rounded</h4>
194
+ <div :style="styles">
195
+ <farm-btn v-for="size of sizes" :style="styles.farmBtn" :key="'rouned_' + size" :size="size" color="secondary" rounded>
196
+ {{ size }}
197
+ </farm-btn>
198
+ </div>
199
+ <h4>Icon</h4>
200
+ <div :style="styles">
201
+ <farm-btn v-for="size of sizes" :style="styles.farmBtn" :key="'icon_' + size" color="secondary" :size="size" icon>
202
+ <farm-icon :size="size">book</farm-icon>
203
+ </farm-btn>
204
+ </div>
205
+ </div>`,
206
+ });
207
+
156
208
  ActiveButtons.story = {
157
209
  name: 'Active',
158
210
  };
@@ -171,3 +223,6 @@ Icons.story = {
171
223
  Rounded.story = {
172
224
  name: 'Rounded',
173
225
  };
226
+ Sizes.story = {
227
+ name: 'Sizes',
228
+ };
@@ -0,0 +1,64 @@
1
+ import { Label, TextField } from '../../main.ts';
2
+
3
+ export default {
4
+ title: 'Examples/Form/Full',
5
+ component: Label,
6
+ };
7
+
8
+ export const Primary = () => ({
9
+ components: { 'farm-label': Label, 'farm-textfield': TextField },
10
+ data() {
11
+ return {
12
+ form: {
13
+ document: 22055527835,
14
+ email: '',
15
+ name: '',
16
+ },
17
+ validForm: false,
18
+ rules: {
19
+ required: value => !!value || 'Campo obrigatório',
20
+ email: value =>
21
+ value === '' || value === null || emailValidator(value) || 'E-mail inválido',
22
+ },
23
+ styles: {
24
+ vForm: {
25
+ maxWidth: '480px',
26
+ },
27
+ footer: {
28
+ display: 'flex',
29
+ justifyContent: 'end',
30
+ },
31
+ },
32
+ };
33
+ },
34
+ template: `
35
+ <v-form v-model="validForm" :style="[styles.vForm]">
36
+ <div>
37
+ <farm-label :required="true">Documento</farm-label>
38
+ <farm-textfield v-model="form.document" :rules="[rules.required]" />
39
+ </div>
40
+ <div>
41
+ <farm-label :required="true">E-mail</farm-label>
42
+ <farm-textfield v-model="form.email" :rules="[rules.required, rules.email]" />
43
+ </div>
44
+ <div>
45
+ <farm-label>Nome</farm-label>
46
+ <farm-textfield v-model="form.name" />
47
+ </div>
48
+ <div class="footer" :style="[styles.footer]">
49
+ <v-btn color="secondary" :disabled="!validForm">Salvar</v-btn>
50
+ </div>
51
+ </v-form>
52
+ `,
53
+ });
54
+
55
+ Primary.storyName = 'Basic';
56
+
57
+ const emailValidator = value => {
58
+ if (!value) {
59
+ return false;
60
+ }
61
+ const pattern =
62
+ /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
63
+ return pattern.test(value.trim()) || false;
64
+ };
@@ -0,0 +1,18 @@
1
+ import { Label } from '../../main.ts';
2
+
3
+ export default {
4
+ title: 'Examples/Form/Label',
5
+ component: Label,
6
+ };
7
+
8
+ export const Primary = () => ({
9
+ components: { 'farm-label': Label },
10
+ template: '<farm-label>Label</farm-label>',
11
+ });
12
+ export const Required = () => ({
13
+ components: { 'farm-label': Label },
14
+ template: '<farm-label :required="true">Label</farm-label>',
15
+ });
16
+
17
+ Primary.storyName = 'Basic';
18
+ Required.storyName = 'Required';
@@ -0,0 +1,47 @@
1
+ import { TextField } from '../../main.ts';
2
+
3
+ export default {
4
+ title: 'Examples/Form/TextField',
5
+ component: TextField,
6
+ };
7
+
8
+ export const Primary = () => ({
9
+ components: { 'farm-textfield': TextField },
10
+ template: `<div style="width: 480px">
11
+ <farm-textfield />
12
+ </div>`,
13
+ });
14
+
15
+ export const BindVar = () => ({
16
+ components: { 'farm-textfield': TextField },
17
+ data() {
18
+ return {
19
+ v: '',
20
+ };
21
+ },
22
+ template: `<div style="width: 480px">
23
+ <farm-textfield v-model="v" />
24
+ value: {{ v }}
25
+ </div>`,
26
+ });
27
+
28
+ export const Rules = () => ({
29
+ components: { 'farm-textfield': TextField },
30
+ data() {
31
+ return {
32
+ v: '',
33
+ rules: {
34
+ required: val => !!val,
35
+ },
36
+ };
37
+ },
38
+ template: `<div style="width: 480px">
39
+ <h4>Custom rule (required field)</h4>
40
+ <farm-textfield v-model="v" :rules="[rules.required]" />
41
+ value: {{ v }}
42
+ </div>`,
43
+ });
44
+
45
+ Primary.storyName = 'Basic';
46
+ BindVar.storyName = 'Bind variable';
47
+ Rules.storyName = 'Rules';
@@ -0,0 +1,71 @@
1
+ import { withDesign } from 'storybook-addon-designs';
2
+ import ProgressBar from '../components/ProgressBar';
3
+
4
+ export default {
5
+ title: 'Examples/ProgressBar',
6
+ component: ProgressBar,
7
+ decorators: [withDesign],
8
+ parameters: {
9
+ viewMode: 'docs',
10
+ design: {
11
+ type: 'figma',
12
+ url: 'https://www.figma.com/file/1f84J4m1IBghWhozQvdyyt/%E2%9C%85---Design-System-%7C-v1?node-id=1503%3A227',
13
+ },
14
+ docs: {
15
+ description: {
16
+ component: `ProgressBar<br />
17
+ selector: <em>farm-progressbar</em>`,
18
+ },
19
+ },
20
+ },
21
+ };
22
+
23
+ export const Primary = () => ({
24
+ components: { 'farm-progressbar': ProgressBar },
25
+ data() {
26
+ return {
27
+ val: 35,
28
+ };
29
+ },
30
+ template: '<farm-progressbar :value="val" />',
31
+ });
32
+
33
+ export const CustomColors = () => ({
34
+ components: { 'farm-progressbar': ProgressBar },
35
+ data() {
36
+ return {
37
+ val: 35,
38
+ };
39
+ },
40
+ template: '<farm-progressbar :value="val" backgroundColor="accent" valueColor="secondary" />',
41
+ });
42
+
43
+ export const CustomHexaColors = () => ({
44
+ components: { 'farm-progressbar': ProgressBar },
45
+ data() {
46
+ return {
47
+ val: 35,
48
+ };
49
+ },
50
+ template: '<farm-progressbar :value="val" backgroundColor="#FFFF00" valueColor="#00FF00" />',
51
+ });
52
+
53
+ const parameters = {
54
+ design: {
55
+ type: 'figma',
56
+ url: 'https://www.figma.com/file/1f84J4m1IBghWhozQvdyyt/%E2%9C%85---Design-System-%7C-v1?node-id=1503%3A227',
57
+ },
58
+ };
59
+
60
+ Primary.story = {
61
+ name: 'Basic',
62
+ parameters,
63
+ };
64
+ CustomColors.story = {
65
+ name: 'Custom Colors',
66
+ parameters,
67
+ };
68
+ CustomHexaColors.story = {
69
+ name: 'Custom Hexadecimals Colors',
70
+ parameters,
71
+ };
@@ -1,5 +1,5 @@
1
1
  export default {
2
- title: 'Examples/Inputs/Password',
2
+ title: 'Examples/Form/Inputs/Password',
3
3
  component: Password,
4
4
  parameters: {
5
5
  docs: {
@@ -1,5 +1,5 @@
1
1
  export default {
2
- title: 'Examples/Inputs/Select',
2
+ title: 'Examples/Form/Inputs/Select',
3
3
  parameters: {
4
4
  docs: {
5
5
  description: {
package/src/main.ts CHANGED
@@ -61,8 +61,11 @@ export * from './components/ResetTableRowSelection';
61
61
  export * from './components/MultipleSelectShortener';
62
62
  export * from './components/SelectModalOptions';
63
63
  export * from './components/ChipInviteStatus';
64
- export * from './components/Stepper';
64
+ export * from './components/Label';
65
65
  export * from './components/Logger';
66
66
  export * from './components/Logger/LoggerItem';
67
67
  export * from './components/Icon';
68
+ export * from './components/ProgressBar';
69
+ export * from './components/Stepper';
68
70
  export * from './components/Switcher';
71
+ export * from './components/TextField';