@farm-investimentos/front-mfe-components 11.10.7 → 11.11.1

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@farm-investimentos/front-mfe-components",
3
- "version": "11.10.7",
3
+ "version": "11.11.1",
4
4
  "author": "farm investimentos",
5
5
  "private": false,
6
6
  "main": "./dist/front-mfe-components.common.js",
@@ -32,6 +32,30 @@ export const Primary = () => ({
32
32
  </div>`,
33
33
  });
34
34
 
35
+ export const Value = () => ({
36
+ data() {
37
+ return {
38
+ option1: 'option1',
39
+ option2: 'option2',
40
+ option3: 'option3',
41
+ };
42
+ },
43
+ template: `<div>
44
+ <div class="d-flex">
45
+ <farm-checkbox v-model="option1" value="1" class="mr-2" />
46
+ option1 : {{option1}}
47
+ </div>
48
+ <div class="d-flex align-center">
49
+ <farm-checkbox v-model="option2" value="2" class="mr-2 my-2" />
50
+ option2 : {{option2}}
51
+ </div>
52
+ <div class="d-flex">
53
+ <farm-checkbox v-model="option3" value="3" class="mr-2" />
54
+ option3 : {{option3}}
55
+ </div>
56
+ </div>`,
57
+ });
58
+
35
59
  export const DefaultCheck = () => ({
36
60
  data() {
37
61
  return {
@@ -120,4 +144,4 @@ export const Indeterminate = () => ({
120
144
  template: `<div>
121
145
  <farm-checkbox :indeterminate="true" v-model="isChecked" :value="true" />
122
146
  </div>`,
123
- });
147
+ });
@@ -7,7 +7,8 @@ export default {
7
7
  docs: {
8
8
  description: {
9
9
  component: `Input Date Picker<br />
10
- selector: <em>farm-input-datepicker</em>
10
+ selector: <em>farm-input-datepicker</em><br />
11
+ <span style="color: var(--farm-primary-base);">ready for use</span>
11
12
  `,
12
13
  },
13
14
  },
@@ -12,13 +12,14 @@
12
12
  <farm-textfield-v2
13
13
  icon="calendar"
14
14
  v-model="fieldRange"
15
+ autocomplete="off"
15
16
  :readonly="readonly"
16
17
  :mask="`${readonly ? '' : '##/##/####'}`"
17
- autocomplete="off"
18
18
  :id="inputId"
19
19
  :rules="[checkMax, checkMin, checkRequire]"
20
20
  @keyup="keyUpInput"
21
- @click="menuField = true"
21
+ @click="openDatepicker"
22
+ @onClickIcon="openDatepicker"
22
23
  />
23
24
  </template>
24
25
  <v-date-picker
@@ -31,7 +32,7 @@
31
32
  :max="max"
32
33
  :min="min"
33
34
  >
34
- <farm-btn outlined color="secondary" @click="menuField = false" title="Fechar">
35
+ <farm-btn outlined color="secondary" @click="closeDatepicker" title="Fechar">
35
36
  Fechar
36
37
  </farm-btn>
37
38
  <farm-btn outlined class="ml-2" @click="clear"> Limpar </farm-btn>
@@ -57,23 +58,29 @@ export default Vue.extend({
57
58
  },
58
59
  props: {
59
60
  /**
60
- * String usada no como id do input e for do label
61
+ * Input's id
61
62
  */
62
63
  inputId: {
63
64
  type: String,
64
65
  required: true,
65
66
  },
66
67
  /**
67
- * Variável usada como v-model
68
+ * v-model bind
68
69
  */
69
70
  value: {
70
71
  type: String,
71
72
  default: '',
72
73
  },
74
+ /**
75
+ * Max date (ISO format)
76
+ */
73
77
  max: {
74
78
  type: String,
75
79
  default: null,
76
80
  },
81
+ /**
82
+ * Min date (ISO format)
83
+ */
77
84
  min: {
78
85
  type: String,
79
86
  default: null,
@@ -173,6 +180,12 @@ export default Vue.extend({
173
180
  const arr = onlyDMY.split('/');
174
181
  return new Date(arr[2], arr[1] - 1, arr[0]);
175
182
  },
183
+ openDatepicker() {
184
+ this.menuField = true;
185
+ },
186
+ closeDatepicker() {
187
+ this.menuField = false;
188
+ },
176
189
  },
177
190
  computed: {
178
191
  inputVal: {
@@ -34,4 +34,16 @@ describe('DatePicker component', () => {
34
34
  expect(wrapper.emitted().input).toBeDefined();
35
35
  });
36
36
  });
37
+
38
+ describe('methods', () => {
39
+ it('openDatepicker', () => {
40
+ component.openDatepicker();
41
+ expect(component.menuField).toBeTruthy();
42
+ });
43
+
44
+ it('closeDatepicker', () => {
45
+ component.closeDatepicker();
46
+ expect(component.menuField).toBeFalsy();
47
+ });
48
+ });
37
49
  });
@@ -2,24 +2,43 @@
2
2
  display: flex;
3
3
  flex-direction: column;
4
4
  }
5
+
5
6
  .logger__divider {
6
7
  height: 40px;
7
8
  margin: -4px 0 -4px 16px;
8
9
  width: 1px;
9
10
 
10
- &.logger__divider--success {
11
+ &.logger__divider--success-to-success {
11
12
  background: var(--farm-primary-base);
12
13
  }
13
14
 
14
- &.logger__divider--error {
15
+ &.logger__divider--error-to-error {
15
16
  background: var(--farm-error-base);
16
17
  }
17
18
 
18
- &.logger__divider--error-to-success {
19
- background: linear-gradient(to bottom, var(--farm-error-base), var(--farm-primary-base));
19
+ &.logger__divider--info-to-info {
20
+ background: var(--farm-error-base);
20
21
  }
21
22
 
22
23
  &.logger__divider--success-to-error {
23
24
  background: linear-gradient(to bottom, var(--farm-primary-base), var(--farm-error-base));
24
25
  }
25
- }
26
+ &.logger__divider--success-to-info {
27
+ background: linear-gradient(to bottom, var(--farm-error-base), var(--farm-info-base));
28
+ }
29
+
30
+ &.logger__divider--error-to-success {
31
+ background: linear-gradient(to bottom, var(--farm-error-base), var(--farm-primary-base));
32
+ }
33
+ &.logger__divider--error-to-info {
34
+ background: linear-gradient(to bottom, var(--farm-error-base), var(--farm-info-base));
35
+ }
36
+
37
+ &.logger__divider--info-to-success {
38
+ background: linear-gradient(to bottom, var(--farm-info-base), var(--farm-primary-base));
39
+ }
40
+ &.logger__divider--info-to-error {
41
+ background: linear-gradient(to bottom, var(--farm-info-base), var(--farm-error-base));
42
+ }
43
+
44
+ }
@@ -31,6 +31,7 @@ export const Primary = () => ({
31
31
  formattedDate: '13/06/2022 20:40',
32
32
  status: 'error',
33
33
  },
34
+
34
35
  {
35
36
  message: 'Aprovado entre as pré elegíveis',
36
37
  userName: 'Cleyton Rasta',
@@ -53,7 +54,13 @@ export const Primary = () => ({
53
54
  message: 'Recusado entre as pré elegíveis',
54
55
  userName: 'Cleyton Rasta',
55
56
  formattedDate: '13/06/2022 20:40',
56
- status: 'error',
57
+ status: 'success',
58
+ },
59
+ {
60
+ message: 'Info',
61
+ userName: 'Cleyton Rasta',
62
+ formattedDate: '13/06/2022 20:40',
63
+ status: 'info',
57
64
  },
58
65
  ],
59
66
  };
@@ -5,13 +5,8 @@
5
5
  <div
6
6
  v-if="hasDivider(index)"
7
7
  :class="{
8
- 'logger__divider': true,
9
- 'logger__divider--success': isPreviousLogAndCurrentLogSuccess(index),
10
- 'logger__divider--error': isPreviousLogAndCurrentLogError(index),
11
- 'logger__divider--success-to-error':
12
- isPreviousLogErrorAndCurrentLogSuccess(index),
13
- 'logger__divider--error-to-success':
14
- isPreviousLogSuccessAndCurrentLogError(index),
8
+ logger__divider: true,
9
+ [dividerCssClass(index)]: true,
15
10
  }"
16
11
  :key="'divider_' + index"
17
12
  ></div>
@@ -34,23 +29,10 @@ export default Vue.extend({
34
29
  hasDivider(index: number): boolean {
35
30
  return index < this.items.length - 1;
36
31
  },
37
- isPreviousLogAndCurrentLogError(index: number): boolean {
38
- return this.isError(index) && this.isError(index + 1);
39
- },
40
- isPreviousLogAndCurrentLogSuccess(index: number): boolean {
41
- return this.isSuccess(index) && this.isSuccess(index + 1);
42
- },
43
- isPreviousLogErrorAndCurrentLogSuccess(index: number): boolean {
44
- return this.isSuccess(index) && this.isError(index + 1);
45
- },
46
- isPreviousLogSuccessAndCurrentLogError(index: number): boolean {
47
- return this.isError(index) && this.isSuccess(index + 1);
48
- },
49
- isError(index: number): boolean {
50
- return this.items[index].status === 'error';
51
- },
52
- isSuccess(index: number): boolean {
53
- return this.items[index].status === 'success';
32
+ dividerCssClass(index: number): string {
33
+ const previous = this.items[index].status;
34
+ const next = this.items[index + 1].status;
35
+ return `logger__divider--${previous}-to-${next}`;
54
36
  },
55
37
  },
56
38
  });
@@ -4,6 +4,7 @@ interface ILoggerItem {
4
4
  formattedDate: string;
5
5
  message: string;
6
6
  status: string;
7
+ extraMessage?: string;
7
8
  details: Function;
8
9
  }
9
10
 
@@ -27,7 +27,10 @@
27
27
 
28
28
  &.logger__item--success {
29
29
  @include loggerMessage(var(--farm-primary-base));
30
+ }
30
31
 
32
+ &.logger__item--info {
33
+ @include loggerMessage(var(--farm-info-base));
31
34
  }
32
35
  }
33
36
 
@@ -53,7 +56,8 @@
53
56
  }
54
57
 
55
58
  .logger__date,
56
- .logger__username {
59
+ .logger__username,
60
+ .logger__extramessage {
57
61
  font-size: 10px;
58
62
  font-weight: 400;
59
63
  }
@@ -60,6 +60,34 @@ export const Error = () => ({
60
60
  template: `<farm-logger-item :item="item" />`,
61
61
  });
62
62
 
63
+ export const Info = () => ({
64
+ data() {
65
+ return {
66
+ item: {
67
+ message: 'Recusado entre as pré elegíveis',
68
+ userName: 'Cleyton Rasta',
69
+ formattedDate: '13/06/2022 20:40',
70
+ status: 'info',
71
+ },
72
+ };
73
+ },
74
+ template: `<farm-logger-item :item="item" />`,
75
+ });
76
+
77
+ export const ExtraMessage = () => ({
78
+ data() {
79
+ return {
80
+ item: {
81
+ message: 'Recusado entre as pré elegíveis',
82
+ extraMessage: 'More text',
83
+ formattedDate: '13/06/2022 20:40',
84
+ status: 'info',
85
+ },
86
+ };
87
+ },
88
+ template: `<farm-logger-item :item="item" />`,
89
+ });
90
+
63
91
  export const CustomIcon = () => ({
64
92
  data() {
65
93
  return {
@@ -2,8 +2,7 @@
2
2
  <section
3
3
  class="logger__item"
4
4
  :class="{
5
- 'logger__item--error': item.status === 'error',
6
- 'logger__item--success': item.status === 'success',
5
+ ['logger__item--' + item.status]: true,
7
6
  }"
8
7
  >
9
8
  <farm-icon>{{ mdiIconName }}</farm-icon>
@@ -14,10 +13,13 @@
14
13
  <span class="logger__message">
15
14
  {{ item.message }}
16
15
  </span>
17
- <span class="logger__username">
16
+ <span v-if="item.userName" class="logger__username">
18
17
  <i class="mdi mdi-account-circle" />
19
18
  {{ item.userName }}
20
19
  </span>
20
+ <span class="logger__extramessage">
21
+ {{ item.extraMessage }}
22
+ </span>
21
23
  </div>
22
24
  <farm-btn
23
25
  v-if="hasDetails"
@@ -25,14 +27,15 @@
25
27
  title="Ver Detalhes"
26
28
  :color="buttonColor"
27
29
  @click="callDetails"
28
- >
29
- Ver Detalhes
30
- </farm-btn>
30
+ >
31
+ Ver Detalhes
32
+ </farm-btn>
31
33
  </section>
32
34
  </template>
33
35
  <script lang="ts">
34
36
  import Vue, { PropType } from 'vue';
35
37
  import ILoggerItem from './ILoggerItem';
38
+ import mappingIconKeys from './mappingIconKeys';
36
39
 
37
40
  export default Vue.extend({
38
41
  name: 'farm-logger-item',
@@ -41,6 +44,7 @@ export default Vue.extend({
41
44
  * Logger item
42
45
  */
43
46
  item: { required: true, type: Object as PropType<ILoggerItem> },
47
+ customIcon: { type: String, required: false },
44
48
  },
45
49
  methods: {
46
50
  callDetails(): void {
@@ -55,7 +59,8 @@ export default Vue.extend({
55
59
  if (!this.item.status) {
56
60
  return '';
57
61
  }
58
- return `${this.item.status === 'success' ? 'check' : 'close'}`;
62
+
63
+ return this.item.status ? mappingIconKeys[this.item.status] : 'error';
59
64
  },
60
65
  buttonColor(): string {
61
66
  if (this.item.status === 'success') {
@@ -0,0 +1,5 @@
1
+ export default {
2
+ success: 'check',
3
+ info: 'timer-sand',
4
+ error: 'close',
5
+ };
@@ -65,57 +65,10 @@ describe('Logger component', () => {
65
65
  });
66
66
  });
67
67
 
68
- describe('isPreviousLogAndCurrentLogError', () => {
68
+ describe('dividerCssClass', () => {
69
69
  it('should return true', () => {
70
- expect(component.isPreviousLogAndCurrentLogError(0)).toBeTruthy();
71
- });
72
-
73
- it('should return false', () => {
74
- expect(component.isPreviousLogAndCurrentLogError(1)).toBeFalsy();
75
- });
76
- });
77
-
78
- describe('isPreviousLogAndCurrentLogSuccess', () => {
79
- it('should return true', () => {
80
- expect(component.isPreviousLogAndCurrentLogSuccess(2)).toBeTruthy();
81
- });
82
- it('should return false', () => {
83
- expect(component.isPreviousLogAndCurrentLogSuccess(0)).toBeFalsy();
84
- });
85
- });
86
-
87
- describe('isPreviousLogErrorAndCurrentLogSuccess', () => {
88
- it('should return true', () => {
89
- expect(component.isPreviousLogErrorAndCurrentLogSuccess(3)).toBeTruthy();
90
- });
91
- it('should return false', () => {
92
- expect(component.isPreviousLogErrorAndCurrentLogSuccess(2)).toBeFalsy();
93
- });
94
- });
95
- describe('isPreviousLogSuccessAndCurrentLogError', () => {
96
- it('should return true', () => {
97
- expect(component.isPreviousLogSuccessAndCurrentLogError(1)).toBeTruthy();
98
- });
99
- it('should false', () => {
100
- expect(component.isPreviousLogSuccessAndCurrentLogError(2)).toBeFalsy();
101
- });
102
- });
103
-
104
- describe('isError', () => {
105
- it('should true when the status is error', () => {
106
- expect(component.isError(1)).toBeTruthy();
107
- });
108
- it('should false when the status is success', () => {
109
- expect(component.isError(2)).toBeFalsy();
110
- });
111
- });
112
-
113
- describe('isSuccess', () => {
114
- it('should return true when the status is success', () => {
115
- expect(component.isSuccess(2)).toBeTruthy();
116
- });
117
- it('should false when the status is error', () => {
118
- expect(component.isSuccess(1)).toBeFalsy();
70
+ expect(component.dividerCssClass(0)).toEqual('logger__divider--error-to-error');
71
+ expect(component.dividerCssClass(1)).toEqual('logger__divider--error-to-success');
119
72
  });
120
73
  });
121
74
  });
@@ -8,8 +8,9 @@ export default {
8
8
  parameters: {
9
9
  docs: {
10
10
  description: {
11
- component: `Range I put Date Picker<br />
12
- selector: <em>farm-input-rangedatepicker</em>
11
+ component: `Range Input Date Picker<br />
12
+ selector: <em>farm-input-rangedatepicker</em><br />
13
+ <span style="color: var(--farm-primary-base);">ready for use</span>
13
14
  `,
14
15
  },
15
16
  },
@@ -16,7 +16,8 @@
16
16
  readonly
17
17
  :id="inputId"
18
18
  :rules="required ? [requiredRule] : []"
19
- @click="menuField = true"
19
+ @click="openDatepicker"
20
+ @onClickIcon="openDatepicker"
20
21
  />
21
22
  </template>
22
23
  <v-date-picker
@@ -30,7 +31,7 @@
30
31
  color="secondary"
31
32
  locale="pt-br"
32
33
  >
33
- <farm-btn outlined color="secondary" @click="menuField = false" title="Fechar">
34
+ <farm-btn outlined color="secondary" @click="closeDatepicker" title="Fechar">
34
35
  Fechar
35
36
  </farm-btn>
36
37
  <farm-btn outlined class="ml-2" @click="clear()" title="Limpar"> Limpar</farm-btn>
@@ -134,6 +135,12 @@ export default Vue.extend({
134
135
  this.dateField = [];
135
136
  this.save();
136
137
  },
138
+ openDatepicker() {
139
+ this.menuField = true;
140
+ },
141
+ closeDatepicker() {
142
+ this.menuField = false;
143
+ },
137
144
  },
138
145
  computed: {
139
146
  inputVal: {
@@ -3,6 +3,7 @@ import RangeDatePicker from '../RangeDatePicker';
3
3
 
4
4
  describe('RangeDatePicker component', () => {
5
5
  let wrapper;
6
+ let component;
6
7
 
7
8
  beforeEach(() => {
8
9
  wrapper = shallowMount(RangeDatePicker, {
@@ -10,6 +11,7 @@ describe('RangeDatePicker component', () => {
10
11
  inputId: 'someid',
11
12
  },
12
13
  });
14
+ component = wrapper.vm;
13
15
  });
14
16
 
15
17
  test('Created hook', () => {
@@ -29,9 +31,21 @@ describe('RangeDatePicker component', () => {
29
31
  min: '2022-01-17',
30
32
  max: '2022-01-31',
31
33
  });
32
- expect(wrapper.vm.inputId).toBe('someid');
33
- expect(wrapper.vm.min).toBe('2022-01-17');
34
- expect(wrapper.vm.max).toBe('2022-01-31');
34
+ expect(component.inputId).toBe('someid');
35
+ expect(component.min).toBe('2022-01-17');
36
+ expect(component.max).toBe('2022-01-31');
37
+ });
38
+ });
39
+
40
+ describe('methods', () => {
41
+ it('openDatepicker', () => {
42
+ component.openDatepicker();
43
+ expect(component.menuField).toBeTruthy();
44
+ });
45
+
46
+ it('closeDatepicker', () => {
47
+ component.closeDatepicker();
48
+ expect(component.menuField).toBeFalsy();
35
49
  });
36
50
  });
37
51
  });
@@ -35,7 +35,7 @@ export const Structure = () => ({
35
35
  <farm-row>
36
36
  <farm-col md="6" lg="3">
37
37
  coluna 1
38
- </farm-col>›
38
+ </farm-col>
39
39
  <farm-col md="6" lg="3">
40
40
  coluna 2
41
41
  </farm-col>
@@ -46,6 +46,28 @@ export const Structure = () => ({
46
46
  coluna 4
47
47
  </farm-col>
48
48
  </farm-row>
49
+
50
+ <farm-row>
51
+ <farm-col lg="2">
52
+ coluna 1
53
+ </farm-col>
54
+ <farm-col lg="2">
55
+ coluna 2
56
+ </farm-col>
57
+ <farm-col lg="2">
58
+ coluna 3
59
+ </farm-col>
60
+ <farm-col lg="2">
61
+ coluna 4
62
+ </farm-col>
63
+ <farm-col lg="2">
64
+ coluna 5
65
+ </farm-col>
66
+ <farm-col lg="2">
67
+ coluna 6
68
+ </farm-col>
69
+ </farm-row>
70
+
49
71
  <farm-row :extra-decrease="true">
50
72
  <farm-container-footer>
51
73
  Footer content