@farm-investimentos/front-mfe-components 14.1.4 → 14.1.6

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": "14.1.4",
3
+ "version": "14.1.6",
4
4
  "author": "farm investimentos",
5
5
  "private": false,
6
6
  "main": "./dist/front-mfe-components.common.js",
@@ -2,11 +2,11 @@
2
2
  @import '../../../configurations/mixins';
3
3
  @import '../../../configurations/theme-colors';
4
4
  $butonSizes: (
5
- "xs": 20px,
6
- "sm": 28px,
7
- "md": 32px,
8
- "lg": 48px,
9
- "xl": 56px,
5
+ 'xs': 20px,
6
+ 'sm': 28px,
7
+ 'md': 32px,
8
+ 'lg': 48px,
9
+ 'xl': 56px,
10
10
  'default': 36px,
11
11
  );
12
12
 
@@ -37,8 +37,7 @@ $butonSizes: (
37
37
  width: 100%;
38
38
  }
39
39
 
40
- @each $size,
41
- $value in $sizes {
40
+ @each $size, $value in $sizes {
42
41
  &#{'.farm-btn[size=' + $size + ']'} {
43
42
  font-size: $value;
44
43
  height: map-get($butonSizes, $size);
@@ -136,8 +135,7 @@ $butonSizes: (
136
135
  color: gray;
137
136
  }
138
137
 
139
- @each $size,
140
- $value in $sizes {
138
+ @each $size, $value in $sizes {
141
139
  &#{'.farm-btn[size=' + $size + ']'} {
142
140
  font-size: $value;
143
141
  }
@@ -162,11 +160,30 @@ $butonSizes: (
162
160
  ::v-deep .farm-btn__content i.mdi {
163
161
  color: var(--farm-#{$color}-base);
164
162
  }
163
+
164
+ &.lighten-variation-icon {
165
+ &:hover {
166
+ color: var(--farm-#{$color}-lighten);
167
+ }
168
+
169
+ ::v-deep .farm-btn__content i.mdi {
170
+ color: var(--farm-#{$color}-lighten);
171
+ }
172
+ }
173
+
174
+ &.darken-variation-icon {
175
+ &:hover {
176
+ color: var(--farm-#{$color}-darken);
177
+ }
178
+
179
+ ::v-deep .farm-btn__content i.mdi {
180
+ color: var(--farm-#{$color}-darken);
181
+ }
182
+ }
165
183
  }
166
184
  }
167
185
 
168
186
  &#{'.farm-btn--white'}:not(.farm-btn--disabled) {
169
-
170
187
  ::v-deep .farm-btn__content i.mdi {
171
188
  color: white;
172
189
  }
@@ -190,7 +207,6 @@ $butonSizes: (
190
207
  }
191
208
  }
192
209
  }
193
-
194
210
  }
195
211
 
196
212
  .farm-btn--extra,
@@ -270,4 +286,4 @@ $butonSizes: (
270
286
  width: 100%;
271
287
  margin: 0;
272
288
  }
273
- }
289
+ }
@@ -201,6 +201,16 @@ export const Iconed = () => ({
201
201
  <farm-icon>book</farm-icon>
202
202
  </farm-btn>
203
203
 
204
+ <h4>Darken Icon</h4>
205
+ <farm-btn icon v-for="color of colors" :key="'random_2_' + color" :color="color" variation="darken">
206
+ <farm-icon>book</farm-icon>
207
+ </farm-btn>
208
+
209
+ <h4>Lighten Icon</h4>
210
+ <farm-btn icon v-for="color of colors" :key="'random_2_' + color" :color="color" variation="lighten">
211
+ <farm-icon>book</farm-icon>
212
+ </farm-btn>
213
+
204
214
  <h4>Disabled Icon</h4>
205
215
  <farm-btn icon v-for="color of colors" :key="'disabled_random_2_' + color" :color="color" :disabled="true">
206
216
  <farm-icon>book</farm-icon>
@@ -87,6 +87,13 @@ export default Vue.extend({
87
87
  type: String as PropType<'xs' | 'sm' | 'md' | 'lg' | 'xl'>,
88
88
  default: 'default',
89
89
  },
90
+ /**
91
+ * Color Variation to Icons
92
+ */
93
+ variation: {
94
+ type: String as PropType<'base' | 'lighten' | 'darken'>,
95
+ default: 'base',
96
+ },
90
97
  },
91
98
 
92
99
  computed: {
@@ -105,6 +112,7 @@ export default Vue.extend({
105
112
  'farm-btn--icon': this.icon,
106
113
  'farm-btn--full': this.full,
107
114
  ['farm-btn--' + this.color]: true,
115
+ [this.variation + '-variation-icon']: true,
108
116
  ...obj,
109
117
  };
110
118
  },
@@ -23,10 +23,37 @@ export const Primary = () => ({
23
23
  return {
24
24
  headers,
25
25
  sortClick: [],
26
- firstSelected: false,
26
+ firstSelected: true,
27
+
28
+ };
29
+ },
30
+ template: `<farm-datatable-header
31
+ :headers="headers"
32
+ :sortClick="sortClick"
33
+ :showCheckbox="false"
34
+ :firstSelected="firstSelected"
35
+ :selectedIndex="1"
36
+ />`,
37
+ });
38
+
39
+ export const SetDescInititalOrder = () => ({
40
+ data() {
41
+ let customHeaders = [...headers];
42
+ customHeaders[1].order = 'DESC';
43
+ return {
44
+ headers: customHeaders,
45
+ sortClick: [],
46
+ firstSelected: true,
47
+
27
48
  };
28
49
  },
29
- template: `<farm-datatable-header :headers="headers" :sortClick="sortClick" :showCheckbox="false" :firstSelected="firstSelected" />`,
50
+ template: `<farm-datatable-header
51
+ :headers="headers"
52
+ :sortClick="sortClick"
53
+ :showCheckbox="false"
54
+ :firstSelected="firstSelected"
55
+ :selectedIndex="1"
56
+ />`,
30
57
  });
31
58
 
32
59
  export const CheckBox = () => ({
@@ -46,7 +73,13 @@ export const CheckBox = () => ({
46
73
  firstSelected: false,
47
74
  };
48
75
  },
49
- template: `<farm-datatable-header :headers="headers" :headerProps="headerProps" :sortClick="sortClick" :firstSelected="firstSelected" :showCheckbox="true" :selectedIndex="1" />`,
76
+ template: `<farm-datatable-header
77
+ :headers="headers"
78
+ :headerProps="headerProps"
79
+ :sortClick="sortClick"
80
+ :firstSelected="firstSelected"
81
+ :showCheckbox="true"
82
+ :selectedIndex="1" />`,
50
83
  });
51
84
 
52
85
  const headerProps = { someItems: true, everyItem: true };
@@ -167,8 +167,8 @@ export default Vue.extend({
167
167
  created() {
168
168
  for (let i = 0; i < this.headers.length; i += 1) {
169
169
  this.sortClick.push({
170
- [this.headers[i].value]: false,
171
- descending: 'ASC',
170
+ [this.headers[i].value]: this.firstSelected && i === this.selectedIndex && this.headers[i].order === 'DESC',
171
+ descending: this.headers[i].order || 'ASC',
172
172
  field: this.headers[i].value,
173
173
  clicked: this.checkFirstSelected(i),
174
174
  show: this.checkFirstSelected(i),
@@ -66,3 +66,13 @@ export const Readonly = () => ({
66
66
  </div>`,
67
67
  });
68
68
 
69
+ export const IsNull = () => ({
70
+ data() {
71
+ return {
72
+ date: null,
73
+ };
74
+ },
75
+ template: `<div style='max-width: 320px'>
76
+ <farm-input-datepicker inputId="input-custom-id-8" v-model="date" :required="true" />
77
+ </div>`,
78
+ });
@@ -26,7 +26,12 @@
26
26
  Cancelar
27
27
  </farm-btn>
28
28
 
29
- <farm-btn class="ml-2" title="Confirmar" :disabled="!dateField.length" @click="save()">
29
+ <farm-btn
30
+ class="ml-2"
31
+ title="Confirmar"
32
+ :disabled="isDateFieldDisabled"
33
+ @click="save()"
34
+ >
30
35
  Confirmar <farm-icon>check</farm-icon>
31
36
  </farm-btn>
32
37
  </v-date-picker>
@@ -206,7 +211,16 @@ export default Vue.extend({
206
211
  },
207
212
  },
208
213
  isDisabled(): boolean {
209
- return this.value.length === 0 ? true : false;
214
+ if (this.value) {
215
+ return this.value.length === 0 ? true : false;
216
+ }
217
+ return true;
218
+ },
219
+ isDateFieldDisabled() {
220
+ if (this.dateField) {
221
+ return this.dateField.length === 0 ? true : false;
222
+ }
223
+ return true;
210
224
  },
211
225
  },
212
226
  });
@@ -33,6 +33,46 @@ describe('DatePicker component', () => {
33
33
  component.inputVal = 'teste';
34
34
  expect(wrapper.emitted().input).toBeDefined();
35
35
  });
36
+ it('isDisabled to be true when value is empty', async () => {
37
+ await wrapper.setProps({
38
+ value: '',
39
+ });
40
+ expect(component.isDisabled).toBe(true);
41
+ });
42
+
43
+ it('isDisabled to be true when value is empty', async () => {
44
+ await wrapper.setProps({
45
+ value: null,
46
+ });
47
+ expect(component.isDisabled).toBe(true);
48
+ });
49
+ it('isDisabled to be false when value is valid', async () => {
50
+ await wrapper.setProps({
51
+ value: '2023-02-02',
52
+ });
53
+ expect(component.isDisabled).toBe(false);
54
+ });
55
+
56
+ it('isDateFieldDisabled to be true when dateField is empty', async () => {
57
+ await wrapper.setProps({
58
+ value: '',
59
+ });
60
+ expect(component.isDateFieldDisabled).toBe(true);
61
+ });
62
+
63
+ it('isDateFieldDisabled to be true when dateField is empty', async () => {
64
+ await wrapper.setProps({
65
+ value: null,
66
+ });
67
+ expect(component.isDateFieldDisabled).toBe(true);
68
+ });
69
+
70
+ it('isDateFieldDisabled to be false when dateField is valid', async () => {
71
+ await wrapper.setProps({
72
+ value: '2023-02-02',
73
+ });
74
+ expect(component.isDateFieldDisabled).toBe(false);
75
+ });
36
76
  });
37
77
 
38
78
  describe('methods', () => {
@@ -31,7 +31,12 @@
31
31
  Cancelar
32
32
  </farm-btn>
33
33
 
34
- <farm-btn class="ml-2" title="Confirmar" :disabled="!dateField.length" @click="save()">
34
+ <farm-btn
35
+ class="ml-2"
36
+ title="Confirmar"
37
+ :disabled="isDateFieldDisabled"
38
+ @click="save()"
39
+ >
35
40
  Confirmar <farm-icon>check</farm-icon>
36
41
  </farm-btn>
37
42
  </v-date-picker>
@@ -111,6 +116,9 @@ export default Vue.extend({
111
116
  },
112
117
  watch: {
113
118
  value(newValue) {
119
+ if (newValue?.length === 1) {
120
+ newValue.push(newValue[0]);
121
+ }
114
122
  this.dateField = newValue;
115
123
  this.fieldRange = this.formatDateRange(newValue);
116
124
  },
@@ -160,7 +168,16 @@ export default Vue.extend({
160
168
  return !this.dateField || this.dateField.length == 1;
161
169
  },
162
170
  isDisabled() {
163
- return this.value?.length === 0 ? true : false;
171
+ if (this.value) {
172
+ return this.value.length === 0 ? true : false;
173
+ }
174
+ return true;
175
+ },
176
+ isDateFieldDisabled() {
177
+ if (this.dateField) {
178
+ return this.dateField.length === 0 ? true : false;
179
+ }
180
+ return true;
164
181
  },
165
182
  isInvertedDate() {
166
183
  if (this.dateField.length === 2) {
@@ -25,6 +25,48 @@ describe('RangeDatePicker component', () => {
25
25
  });
26
26
 
27
27
  describe('computed values', () => {
28
+ it('isDisabled to be true when value is empty', async () => {
29
+ await wrapper.setProps({
30
+ value: [],
31
+ });
32
+ expect(component.isDisabled).toBe(true);
33
+ });
34
+
35
+ it('isDisabled to be true when value is null', async () => {
36
+ await wrapper.setProps({
37
+ value: null,
38
+ });
39
+ expect(component.isDisabled).toBe(true);
40
+ });
41
+
42
+ it('isDisabled to be false when value is valid', async () => {
43
+ await wrapper.setProps({
44
+ value: ['2023-02-02'],
45
+ });
46
+ expect(component.isDisabled).toBe(false);
47
+ });
48
+
49
+ it('isDateFieldDisabled to be true when dateField is empty', async () => {
50
+ await wrapper.setProps({
51
+ value: [],
52
+ });
53
+ expect(component.isDateFieldDisabled).toBe(true);
54
+ });
55
+
56
+ it('isDateFieldDisabled to be true when dateField is null', async () => {
57
+ await wrapper.setProps({
58
+ value: null,
59
+ });
60
+ expect(component.isDateFieldDisabled).toBe(true);
61
+ });
62
+
63
+ it('isDateFieldDisabled to be false when dateField is valid', async () => {
64
+ await wrapper.setProps({
65
+ value: ['2023-02-02'],
66
+ });
67
+ expect(component.isDateFieldDisabled).toBe(false);
68
+ });
69
+
28
70
  it('min max correctly', async () => {
29
71
  await wrapper.setProps({
30
72
  inputId: 'someid',
@@ -48,4 +90,18 @@ describe('RangeDatePicker component', () => {
48
90
  expect(component.menuField).toBeFalsy();
49
91
  });
50
92
  });
93
+
94
+ describe('watchs', () => {
95
+ it('should show dateField and fieldRange correctly when it has one date', () => {
96
+ component.$options.watch.value.call(component, ['2023-02-27']);
97
+ expect(component.dateField).toEqual(['2023-02-27', '2023-02-27']);
98
+ expect(component.fieldRange).toEqual('27/02/2023 a 27/02/2023');
99
+ });
100
+
101
+ it('should show dateField and fieldRange correctly when it has two dates', () => {
102
+ component.$options.watch.value.call(component, ['2023-02-27', '2023-02-28']);
103
+ expect(component.dateField).toEqual(['2023-02-27', '2023-02-28']);
104
+ expect(component.fieldRange).toEqual('27/02/2023 a 28/02/2023');
105
+ });
106
+ });
51
107
  });
@@ -28,7 +28,7 @@
28
28
  margin: 24px 0;
29
29
  font-size: 12px;
30
30
  line-height: 20px;
31
- word-break: break-all;
31
+ word-break: break-word;
32
32
 
33
33
  ul {
34
34
  margin-left: 16px;