@farm-investimentos/front-mfe-components 14.1.1 → 14.1.3
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/dist/front-mfe-components.common.js +447 -368
- package/dist/front-mfe-components.common.js.map +1 -1
- package/dist/front-mfe-components.css +1 -1
- package/dist/front-mfe-components.umd.js +447 -368
- package/dist/front-mfe-components.umd.js.map +1 -1
- package/dist/front-mfe-components.umd.min.js +1 -1
- package/dist/front-mfe-components.umd.min.js.map +1 -1
- package/package.json +1 -1
- package/src/components/DatePicker/DatePicker.scss +7 -8
- package/src/components/DatePicker/DatePicker.vue +15 -5
- package/src/components/RangeDatePicker/RangeDatePicker.vue +30 -8
- package/src/components/Select/Select.scss +5 -3
- package/src/components/Select/Select.vue +17 -18
- package/src/components/Select/__tests__/composition.spec.js +27 -0
- package/src/components/Select/composition/buildData.ts +27 -0
- package/src/components/Select/composition/index.ts +3 -0
- package/src/components/Stepper/StepperHeader/StepperHeader.scss +1 -1
- package/src/components/Typography/BodyText/BodyText.vue +2 -1
- package/src/components/Typography/Caption/Caption.vue +2 -1
- package/src/components/Typography/Heading/Heading.vue +5 -3
- package/src/components/Typography/OverlayText/OverlayText.vue +7 -1
- package/src/components/Typography/Subtitle/Subtitle.vue +2 -1
- package/src/components/Typography/Typography.stories.js +11 -0
- package/src/components/Typography/Typography.vue +1 -0
- package/src/helpers/formatDatePickerHeader.ts +19 -0
- package/src/helpers/index.ts +3 -0
- package/src/scss/VuejsDialog.scss +8 -1
- package/src/scss/utils.scss +154 -1
- package/src/stories/Introduction.stories.mdx +6 -3
- package/src/stories/assets/logo_farmtech.svg +21 -0
- package/src/helpers/index.js +0 -1
package/package.json
CHANGED
|
@@ -5,16 +5,15 @@
|
|
|
5
5
|
.datepicker :deep(.v-btn--active) {
|
|
6
6
|
background: var(--farm-primary-base);
|
|
7
7
|
}
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
|
|
9
|
+
.datepicker :deep(.v-picker__body) {
|
|
10
|
+
width: 341px !important;
|
|
11
11
|
}
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
}
|
|
15
|
-
.btn-clean {
|
|
12
|
+
|
|
13
|
+
.btn-cancel {
|
|
16
14
|
margin: 0 8px;
|
|
17
15
|
}
|
|
16
|
+
|
|
18
17
|
.farm-contextmenu {
|
|
19
18
|
width: 100%;
|
|
20
|
-
}
|
|
19
|
+
}
|
|
@@ -14,18 +14,23 @@
|
|
|
14
14
|
scrollable
|
|
15
15
|
locale="pt-br"
|
|
16
16
|
class="datepicker"
|
|
17
|
+
show-adjacent-months
|
|
18
|
+
:header-date-format="formatDatePickerHeader"
|
|
17
19
|
:max="max"
|
|
18
20
|
:min="min"
|
|
19
21
|
>
|
|
20
|
-
<farm-btn
|
|
21
|
-
|
|
22
|
+
<farm-btn plain title="Limpar" color="primary" :disabled="isDisabled" @click="clear">
|
|
23
|
+
Limpar
|
|
22
24
|
</farm-btn>
|
|
23
|
-
<farm-btn outlined class="btn-
|
|
25
|
+
<farm-btn outlined class="btn-cancel" title="Cancelar" @click="closeDatepicker">
|
|
26
|
+
Cancelar
|
|
27
|
+
</farm-btn>
|
|
28
|
+
|
|
24
29
|
<farm-btn class="ml-2" title="Confirmar" :disabled="!dateField.length" @click="save()">
|
|
25
|
-
Confirmar
|
|
30
|
+
Confirmar <farm-icon>check</farm-icon>
|
|
26
31
|
</farm-btn>
|
|
27
32
|
</v-date-picker>
|
|
28
|
-
<template v-slot:activator="{
|
|
33
|
+
<template v-slot:activator="{}">
|
|
29
34
|
<farm-textfield-v2
|
|
30
35
|
icon="calendar"
|
|
31
36
|
v-model="fieldRange"
|
|
@@ -45,6 +50,7 @@
|
|
|
45
50
|
import Vue from 'vue';
|
|
46
51
|
import { VDatePicker } from 'vuetify/lib/components/VDatePicker';
|
|
47
52
|
import { defaultFormat as dateDefaultFormatter, convertDate } from '../../helpers/date';
|
|
53
|
+
import { formatDatePickerHeader } from '../../helpers';
|
|
48
54
|
/**
|
|
49
55
|
* Componente de input com datepicker para data
|
|
50
56
|
*/
|
|
@@ -186,6 +192,7 @@ export default Vue.extend({
|
|
|
186
192
|
this.menuField = false;
|
|
187
193
|
this.$refs.contextmenu.inputValue = false;
|
|
188
194
|
},
|
|
195
|
+
formatDatePickerHeader,
|
|
189
196
|
},
|
|
190
197
|
computed: {
|
|
191
198
|
inputVal: {
|
|
@@ -196,6 +203,9 @@ export default Vue.extend({
|
|
|
196
203
|
this.$emit('input', val);
|
|
197
204
|
},
|
|
198
205
|
},
|
|
206
|
+
isDisabled(): boolean {
|
|
207
|
+
return this.value.length === 0 ? true : false;
|
|
208
|
+
},
|
|
199
209
|
},
|
|
200
210
|
});
|
|
201
211
|
</script>
|
|
@@ -9,22 +9,30 @@
|
|
|
9
9
|
>
|
|
10
10
|
<v-date-picker
|
|
11
11
|
v-if="menuField"
|
|
12
|
-
class="datepicker"
|
|
12
|
+
class="rangedatepicker datepicker"
|
|
13
13
|
v-model="dateField"
|
|
14
14
|
no-title
|
|
15
15
|
scrollable
|
|
16
16
|
range
|
|
17
|
-
|
|
18
|
-
:
|
|
17
|
+
show-adjacent-months
|
|
18
|
+
:header-date-format="formatDatePickerHeader"
|
|
19
19
|
color="secondary"
|
|
20
20
|
locale="pt-br"
|
|
21
|
+
:max="max"
|
|
22
|
+
:min="min"
|
|
23
|
+
:class="{
|
|
24
|
+
'invert-date': isInvertedDate,
|
|
25
|
+
}"
|
|
21
26
|
>
|
|
22
|
-
<farm-btn
|
|
23
|
-
|
|
27
|
+
<farm-btn plain title="Limpar" color="primary" :disabled="isDisabled" @click="clear">
|
|
28
|
+
Limpar
|
|
24
29
|
</farm-btn>
|
|
25
|
-
<farm-btn outlined class="btn-
|
|
26
|
-
|
|
27
|
-
|
|
30
|
+
<farm-btn outlined class="btn-cancel" title="Cancelar" @click="closeDatepicker">
|
|
31
|
+
Cancelar
|
|
32
|
+
</farm-btn>
|
|
33
|
+
|
|
34
|
+
<farm-btn class="ml-2" title="Confirmar" :disabled="!dateField.length" @click="save()">
|
|
35
|
+
Confirmar <farm-icon>check</farm-icon>
|
|
28
36
|
</farm-btn>
|
|
29
37
|
</v-date-picker>
|
|
30
38
|
<template v-slot:activator="{}">
|
|
@@ -44,6 +52,7 @@
|
|
|
44
52
|
import Vue from 'vue';
|
|
45
53
|
import { VDatePicker } from 'vuetify/lib/components/VDatePicker';
|
|
46
54
|
import { defaultFormat as dateDefaultFormatter } from '../../helpers/date';
|
|
55
|
+
import { formatDatePickerHeader } from '../../helpers';
|
|
47
56
|
/**
|
|
48
57
|
* Componente de input com datepicker para range de data
|
|
49
58
|
*/
|
|
@@ -136,6 +145,7 @@ export default Vue.extend({
|
|
|
136
145
|
this.menuField = false;
|
|
137
146
|
this.$refs.contextmenu.inputValue = false;
|
|
138
147
|
},
|
|
148
|
+
formatDatePickerHeader,
|
|
139
149
|
},
|
|
140
150
|
computed: {
|
|
141
151
|
inputVal: {
|
|
@@ -149,6 +159,18 @@ export default Vue.extend({
|
|
|
149
159
|
canConfirm() {
|
|
150
160
|
return !this.dateField || this.dateField.length == 1;
|
|
151
161
|
},
|
|
162
|
+
isDisabled() {
|
|
163
|
+
return this.value?.length === 0 ? true : false;
|
|
164
|
+
},
|
|
165
|
+
isInvertedDate() {
|
|
166
|
+
if (this.dateField.length === 2) {
|
|
167
|
+
const firstDate = new Date(this.dateField[0]);
|
|
168
|
+
const secondDate = new Date(this.dateField[1]);
|
|
169
|
+
|
|
170
|
+
return firstDate.getTime() > secondDate.getTime();
|
|
171
|
+
}
|
|
172
|
+
return false;
|
|
173
|
+
},
|
|
152
174
|
},
|
|
153
175
|
});
|
|
154
176
|
</script>
|
|
@@ -28,9 +28,11 @@
|
|
|
28
28
|
margin-right: 8px;
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
-
|
|
31
|
+
:deep(.farm-listitem:hover .farm-checkbox .farm-icon) {
|
|
32
32
|
color: var(--farm-primary-lighten);
|
|
33
33
|
}
|
|
34
|
-
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
:deep(.farm-listitem:hover .farm-checkbox.farm-checkbox--checked .farm-icon) {
|
|
35
37
|
color: white;
|
|
36
|
-
}
|
|
38
|
+
}
|
|
@@ -47,11 +47,11 @@
|
|
|
47
47
|
<div class="farm-textfield--input farm-textfield--input--iconed">
|
|
48
48
|
<input
|
|
49
49
|
v-bind="$attrs"
|
|
50
|
-
:id="$props.id"
|
|
51
50
|
v-model="selectedText"
|
|
52
51
|
ref="inputField"
|
|
52
|
+
readonly
|
|
53
|
+
:id="$props.id"
|
|
53
54
|
@click="clickInput"
|
|
54
|
-
@keyup="onKeyUp"
|
|
55
55
|
@blur="onBlur"
|
|
56
56
|
@focusin="onFocus(true)"
|
|
57
57
|
@focusout="onFocus(false)"
|
|
@@ -81,12 +81,13 @@
|
|
|
81
81
|
</template>
|
|
82
82
|
|
|
83
83
|
<script lang="ts">
|
|
84
|
-
import Vue, { computed, onBeforeMount, PropType,
|
|
84
|
+
import Vue, { computed, onBeforeMount, PropType, toRefs, watch } from 'vue';
|
|
85
85
|
import validateFormStateBuilder from '../../composition/validateFormStateBuilder';
|
|
86
86
|
import validateFormFieldBuilder from '../../composition/validateFormFieldBuilder';
|
|
87
87
|
import validateFormMethodBuilder from '../../composition/validateFormMethodBuilder';
|
|
88
88
|
import deepEqual from '../../composition/deepEqual';
|
|
89
89
|
import randomId from '../../helpers/randomId';
|
|
90
|
+
import { buildData } from './composition';
|
|
90
91
|
|
|
91
92
|
export default Vue.extend({
|
|
92
93
|
name: 'farm-select',
|
|
@@ -217,16 +218,19 @@ export default Vue.extend({
|
|
|
217
218
|
},
|
|
218
219
|
setup(props, { emit }) {
|
|
219
220
|
const { rules, items, itemText, itemValue, disabled, multiple } = toRefs(props);
|
|
220
|
-
|
|
221
|
-
const
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
221
|
+
|
|
222
|
+
const {
|
|
223
|
+
multipleValues,
|
|
224
|
+
innerValue,
|
|
225
|
+
isTouched,
|
|
226
|
+
isFocus,
|
|
227
|
+
isBlured,
|
|
228
|
+
isVisible,
|
|
229
|
+
selectedText,
|
|
230
|
+
checked,
|
|
231
|
+
notChecked,
|
|
232
|
+
inputField,
|
|
233
|
+
} = buildData(props);
|
|
230
234
|
|
|
231
235
|
const { errorBucket, valid, validatable } = validateFormStateBuilder();
|
|
232
236
|
|
|
@@ -300,10 +304,6 @@ export default Vue.extend({
|
|
|
300
304
|
emit('input', innerValue.value);
|
|
301
305
|
};
|
|
302
306
|
|
|
303
|
-
const onKeyUp = (event: Event) => {
|
|
304
|
-
emit('keyup', event);
|
|
305
|
-
};
|
|
306
|
-
|
|
307
307
|
const onBlur = (event: Event) => {
|
|
308
308
|
isBlured.value = true;
|
|
309
309
|
validate(innerValue.value);
|
|
@@ -413,7 +413,6 @@ export default Vue.extend({
|
|
|
413
413
|
validate,
|
|
414
414
|
reset,
|
|
415
415
|
selectItem,
|
|
416
|
-
onKeyUp,
|
|
417
416
|
onBlur,
|
|
418
417
|
onFocus,
|
|
419
418
|
clickInput,
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import buildData from '../composition/buildData';
|
|
2
|
+
|
|
3
|
+
describe('buildData', () => {
|
|
4
|
+
it('should initialize with empty arrays and false values', () => {
|
|
5
|
+
const props = { value: [] };
|
|
6
|
+
const result = buildData(props);
|
|
7
|
+
|
|
8
|
+
expect(result.multipleValues.value).toEqual([]);
|
|
9
|
+
expect(result.innerValue.value).toEqual([]);
|
|
10
|
+
expect(result.isTouched.value).toBe(false);
|
|
11
|
+
expect(result.isFocus.value).toBe(false);
|
|
12
|
+
expect(result.isBlured.value).toBe(false);
|
|
13
|
+
expect(result.isVisible.value).toBe(false);
|
|
14
|
+
expect(result.selectedText.value).toBe('');
|
|
15
|
+
expect(result.checked.value).toBe('1');
|
|
16
|
+
expect(result.notChecked.value).toBe(false);
|
|
17
|
+
expect(result.inputField.value).toBe(undefined);
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
it('should initialize with provided values', () => {
|
|
21
|
+
const props = { value: 'test' };
|
|
22
|
+
const result = buildData(props);
|
|
23
|
+
|
|
24
|
+
expect(result.multipleValues.value).toEqual([]);
|
|
25
|
+
expect(result.innerValue.value).toBe('test');
|
|
26
|
+
});
|
|
27
|
+
});
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { ref } from 'vue';
|
|
2
|
+
|
|
3
|
+
export default function (props) {
|
|
4
|
+
const multipleValues = ref(Array.isArray(props.value) ? [...props.value] : []);
|
|
5
|
+
const innerValue = ref(props.value);
|
|
6
|
+
const isTouched = ref(false);
|
|
7
|
+
const isFocus = ref(false);
|
|
8
|
+
const isBlured = ref(false);
|
|
9
|
+
const isVisible = ref(false);
|
|
10
|
+
const selectedText = ref('');
|
|
11
|
+
const checked = ref('1');
|
|
12
|
+
const notChecked = ref(false);
|
|
13
|
+
const inputField = ref();
|
|
14
|
+
|
|
15
|
+
return {
|
|
16
|
+
multipleValues,
|
|
17
|
+
innerValue,
|
|
18
|
+
isTouched,
|
|
19
|
+
isFocus,
|
|
20
|
+
isBlured,
|
|
21
|
+
isVisible,
|
|
22
|
+
selectedText,
|
|
23
|
+
checked,
|
|
24
|
+
notChecked,
|
|
25
|
+
inputField,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<farm-typography
|
|
3
|
+
v-bind="$attrs"
|
|
4
|
+
v-on="$listeners"
|
|
3
5
|
:weight="weight"
|
|
4
6
|
:size="size"
|
|
5
7
|
:key="key"
|
|
6
8
|
:class="{ [`farm-bodytext--${type}`]: true, [`farm-bodytext--${variation}`]: true }"
|
|
7
|
-
v-bind="$attrs"
|
|
8
9
|
>
|
|
9
10
|
<slot></slot>
|
|
10
11
|
</farm-typography>
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<farm-typography
|
|
3
|
+
v-bind="$attrs"
|
|
4
|
+
v-on="$listeners"
|
|
3
5
|
:weight="weight"
|
|
4
6
|
:size="size"
|
|
5
7
|
:tag="tag"
|
|
@@ -18,9 +20,9 @@ export default Vue.extend({
|
|
|
18
20
|
inheritAttrs: true,
|
|
19
21
|
name: 'farm-heading',
|
|
20
22
|
props: {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
23
|
+
/**
|
|
24
|
+
* Type of the heading
|
|
25
|
+
*/
|
|
24
26
|
type: { type: [String, Number] as PropType<1 | 2 | 3 | 4 | 5 | 6>, default: 1 },
|
|
25
27
|
},
|
|
26
28
|
setup(props) {
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<farm-typography
|
|
2
|
+
<farm-typography
|
|
3
|
+
v-bind="$attrs"
|
|
4
|
+
v-on="$listeners"
|
|
5
|
+
size="10px"
|
|
6
|
+
class="farm-overlaytext"
|
|
7
|
+
:weight="400"
|
|
8
|
+
>
|
|
3
9
|
<slot></slot>
|
|
4
10
|
</farm-typography>
|
|
5
11
|
</template>
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<farm-typography
|
|
3
|
+
v-bind="$attrs"
|
|
4
|
+
v-on="$listeners"
|
|
3
5
|
:weight="weight"
|
|
4
6
|
:size="size"
|
|
5
7
|
:key="key"
|
|
6
8
|
:class="{ [`farm-subtitle--${type}`]: true, [`farm-subtitle--${variation}`]: true }"
|
|
7
|
-
v-bind="$attrs"
|
|
8
9
|
>
|
|
9
10
|
<slot></slot>
|
|
10
11
|
</farm-typography>
|
|
@@ -183,4 +183,15 @@ export const Ellipsis = () => ({
|
|
|
183
183
|
template: `<div style="width: 100px;">
|
|
184
184
|
<farm-typography ellipsis>sample text for css text ellipsis</farm-typography>
|
|
185
185
|
</div>`,
|
|
186
|
+
});
|
|
187
|
+
|
|
188
|
+
export const Listener = () => ({
|
|
189
|
+
methods: {
|
|
190
|
+
handleEvent(type) {
|
|
191
|
+
alert(type);
|
|
192
|
+
},
|
|
193
|
+
},
|
|
194
|
+
template: `<farm-bodytext @click="handleEvent">
|
|
195
|
+
Click me
|
|
196
|
+
</farm-bodytext>`,
|
|
186
197
|
});
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
const monthNumberToMonthName = {
|
|
2
|
+
'01': 'Janeiro',
|
|
3
|
+
'02': 'Fevereiro',
|
|
4
|
+
'03': 'Março',
|
|
5
|
+
'04': 'Abril',
|
|
6
|
+
'05': 'Maio',
|
|
7
|
+
'06': 'Junho',
|
|
8
|
+
'07': 'Julho',
|
|
9
|
+
'08': 'Agosto',
|
|
10
|
+
'09': 'Setembro',
|
|
11
|
+
'10': 'Outubro',
|
|
12
|
+
'11': 'Novembro',
|
|
13
|
+
'12': 'Dezembro',
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
export function formatDatePickerHeader(date: string): string {
|
|
17
|
+
const [year, month] = date.split('-');
|
|
18
|
+
return `${month ? monthNumberToMonthName[month] + ' ' : ''}${year}`;
|
|
19
|
+
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
@import 'vuejs-dialog/dist/vuejs-dialog.min';
|
|
2
2
|
@import '../components/Buttons/DefaultButton/DefaultButton.scss';
|
|
3
3
|
|
|
4
|
+
|
|
4
5
|
.dg-main-content {
|
|
5
6
|
font-family: Montserrat, sans-serif !important;
|
|
6
7
|
}
|
|
@@ -27,6 +28,11 @@
|
|
|
27
28
|
margin: 24px 0;
|
|
28
29
|
font-size: 12px;
|
|
29
30
|
line-height: 20px;
|
|
31
|
+
word-break: break-all;
|
|
32
|
+
|
|
33
|
+
ul {
|
|
34
|
+
margin-left: 16px;
|
|
35
|
+
}
|
|
30
36
|
}
|
|
31
37
|
|
|
32
38
|
.dg-content-footer {
|
|
@@ -53,7 +59,7 @@
|
|
|
53
59
|
background-color: rgba(0, 0, 0, .46);
|
|
54
60
|
}
|
|
55
61
|
|
|
56
|
-
.dg-parent-nofooter{
|
|
62
|
+
.dg-parent-nofooter {
|
|
57
63
|
.dg-content-footer {
|
|
58
64
|
display: none;
|
|
59
65
|
}
|
|
@@ -73,6 +79,7 @@
|
|
|
73
79
|
.dg-btn--ok {
|
|
74
80
|
@extend .farm-btn--error;
|
|
75
81
|
}
|
|
82
|
+
|
|
76
83
|
.dg-title {
|
|
77
84
|
color: var(--farm-error-base);
|
|
78
85
|
}
|
package/src/scss/utils.scss
CHANGED
|
@@ -92,7 +92,7 @@ tr.v-data-table__empty-wrapper {
|
|
|
92
92
|
}
|
|
93
93
|
.v-date-picker-header {
|
|
94
94
|
display: grid;
|
|
95
|
-
grid-template-columns: 1fr
|
|
95
|
+
grid-template-columns: 1fr 60px 36px;
|
|
96
96
|
grid-template-areas: ' a b c ';
|
|
97
97
|
margin-top: 0.5rem;
|
|
98
98
|
|
|
@@ -106,6 +106,159 @@ tr.v-data-table__empty-wrapper {
|
|
|
106
106
|
grid-area: c;
|
|
107
107
|
}
|
|
108
108
|
}
|
|
109
|
+
|
|
110
|
+
.v-date-picker-table__current.v-btn--active {
|
|
111
|
+
color: white;
|
|
112
|
+
}
|
|
113
|
+
.v-date-picker-header {
|
|
114
|
+
padding: 0;
|
|
115
|
+
margin-top: 16px;
|
|
116
|
+
margin-bottom: 16px;
|
|
117
|
+
margin-left: 4px;
|
|
118
|
+
|
|
119
|
+
.mdi-chevron-left::before,
|
|
120
|
+
.mdi-chevron-right::before {
|
|
121
|
+
color: var(--farm-neutral-darken);
|
|
122
|
+
font-size: 20px;
|
|
123
|
+
font-weight: 900;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
.v-picker__body:has(div > .v-date-picker-years) {
|
|
128
|
+
li {
|
|
129
|
+
color: var(--farm-neutral-darken);
|
|
130
|
+
font-size: 12px;
|
|
131
|
+
font-weight: 500;
|
|
132
|
+
width: 70px;
|
|
133
|
+
margin: 0 auto;
|
|
134
|
+
border-radius: 5px;
|
|
135
|
+
|
|
136
|
+
&.active {
|
|
137
|
+
color: #fff;
|
|
138
|
+
background-color: var(--farm-primary-base);
|
|
139
|
+
border: 1px solid var(--farm-primary-base);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
&:hover:not(.active) {
|
|
143
|
+
background-color: var(--farm-primary-lighten);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
.v-date-picker-header__value {
|
|
149
|
+
button {
|
|
150
|
+
padding-left: 0;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
.v-picker__actions {
|
|
155
|
+
margin-bottom: 24px;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
.v-date-picker-table {
|
|
159
|
+
padding: 0 40px;
|
|
160
|
+
margin-bottom: 24px;
|
|
161
|
+
|
|
162
|
+
table {
|
|
163
|
+
height: 100%;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
table thead th {
|
|
167
|
+
color: var(--farm-neutral-darken);
|
|
168
|
+
font-size: 16px;
|
|
169
|
+
font-weight: 700;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
table tbody td .v-btn {
|
|
173
|
+
color: var(--farm-neutral-darken);
|
|
174
|
+
font-size: 12px;
|
|
175
|
+
font-weight: 500;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
table tbody td .v-btn.v-btn--disabled {
|
|
179
|
+
color: var(--farm-gray-lighten);
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
table tbody td .v-btn.v-date-picker-table__current,
|
|
183
|
+
.v-btn.v-btn--active {
|
|
184
|
+
border-radius: 5px;
|
|
185
|
+
border-color: var(--farm-primary-base);
|
|
186
|
+
border-width: 2px;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
table tbody td .v-btn.v-date-picker-table__current {
|
|
190
|
+
color: var(--farm-primary-base);
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
table tbody td .v-btn.v-btn--active {
|
|
194
|
+
color: white;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
table tbody td .v-btn--rounded {
|
|
198
|
+
border-radius: 5px;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
table tbody td .v-btn {
|
|
202
|
+
&:not(.v-btn--active):hover::before {
|
|
203
|
+
background-color: var(--farm-primary-lighten);
|
|
204
|
+
opacity: 1;
|
|
205
|
+
}
|
|
206
|
+
&::before {
|
|
207
|
+
background-color: transparent;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
&.rangedatepicker .v-date-picker-table {
|
|
213
|
+
table tbody td .v-btn.v-btn--active {
|
|
214
|
+
&:not(.v-date-picker--first-in-range, .v-date-picker--last-in-range) {
|
|
215
|
+
background: var(--farm-primary-lighten);
|
|
216
|
+
color: var(--farm-primary-base);
|
|
217
|
+
border-radius: 0;
|
|
218
|
+
width: 37px;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
&.v-date-picker--first-in-range,
|
|
222
|
+
&.v-date-picker--last-in-range {
|
|
223
|
+
width: 37px;
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
&.v-date-picker--first-in-range {
|
|
227
|
+
border-top-right-radius: 0;
|
|
228
|
+
border-bottom-right-radius: 0;
|
|
229
|
+
border-top-left-radius: 5px;
|
|
230
|
+
border-bottom-left-radius: 5px;
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
&.v-date-picker--last-in-range {
|
|
234
|
+
border-top-right-radius: 5px;
|
|
235
|
+
border-bottom-right-radius: 5px;
|
|
236
|
+
border-top-left-radius: 0;
|
|
237
|
+
border-bottom-left-radius: 0;
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
&.v-date-picker--last-in-range.v-date-picker--first-in-range {
|
|
241
|
+
border-radius: 5px;
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
&.rangedatepicker.invert-date .v-date-picker-table {
|
|
246
|
+
table tbody td .v-btn.v-btn--active {
|
|
247
|
+
&.v-date-picker--first-in-range {
|
|
248
|
+
border-top-left-radius: 0;
|
|
249
|
+
border-bottom-left-radius: 0;
|
|
250
|
+
border-top-right-radius: 5px;
|
|
251
|
+
border-bottom-right-radius: 5px;
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
&.v-date-picker--last-in-range {
|
|
255
|
+
border-top-left-radius: 5px;
|
|
256
|
+
border-bottom-left-radius: 5px;
|
|
257
|
+
border-top-right-radius: 0;
|
|
258
|
+
border-bottom-right-radius: 0;
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
}
|
|
109
262
|
}
|
|
110
263
|
|
|
111
264
|
.v-icon.v-icon__extral4 {
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Meta } from '@storybook/addon-docs';
|
|
2
|
+
import imageFile from './assets/logo_farmtech.svg';
|
|
2
3
|
|
|
3
4
|
<Meta title="Introduction" />
|
|
4
5
|
|
|
@@ -106,8 +107,10 @@ import { Meta } from '@storybook/addon-docs';
|
|
|
106
107
|
|
|
107
108
|
`}</style>
|
|
108
109
|
|
|
109
|
-
#
|
|
110
|
+
# Welcome to Farmtech Storybook
|
|
110
111
|
|
|
111
|
-
|
|
112
|
-
Navegue pelo menu lateral para conhecê-los.
|
|
112
|
+
<img src={imageFile} />
|
|
113
113
|
|
|
114
|
+
Here you can find the components from the Farmtech's Design System on the top of Vue 2.
|
|
115
|
+
|
|
116
|
+
Currrent version: {VERSION}
|