@farm-investimentos/front-mfe-components 12.2.3 → 13.0.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.
- package/dist/front-mfe-components.common.js +503 -2121
- 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 +503 -2121
- 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/Buttons/DefaultButton/DefaultButton.scss +3 -3
- package/src/components/Buttons/DefaultButton/DefaultButton.stories.js +1 -1
- package/src/components/ContextMenu/ContextMenu.vue +15 -4
- package/src/components/DatePicker/DatePicker.scss +20 -0
- package/src/components/DatePicker/DatePicker.stories.js +20 -5
- package/src/components/DatePicker/DatePicker.vue +28 -30
- package/src/components/RangeDatePicker/RangeDatePicker.vue +25 -30
- package/src/configurations/_variables.scss +2 -2
package/package.json
CHANGED
|
@@ -52,6 +52,13 @@ export default Vue.extend({
|
|
|
52
52
|
type: Boolean,
|
|
53
53
|
default: false,
|
|
54
54
|
},
|
|
55
|
+
/**
|
|
56
|
+
* Popup Width
|
|
57
|
+
*/
|
|
58
|
+
popupWidth: {
|
|
59
|
+
type: [Number, String],
|
|
60
|
+
default: null,
|
|
61
|
+
},
|
|
55
62
|
},
|
|
56
63
|
setup(props, { emit }) {
|
|
57
64
|
const parent = ref(null);
|
|
@@ -127,10 +134,14 @@ export default Vue.extend({
|
|
|
127
134
|
|
|
128
135
|
let offsetLeft = activatorBoundingClientRect.left;
|
|
129
136
|
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
137
|
+
if (props.popupWidth) {
|
|
138
|
+
styles.minWidth = props.popupWidth + 'px';
|
|
139
|
+
} else {
|
|
140
|
+
styles.minWidth =
|
|
141
|
+
(activatorBoundingClientRect.width > 96
|
|
142
|
+
? parseInt(activatorBoundingClientRect.width)
|
|
143
|
+
: 96) + 'px';
|
|
144
|
+
}
|
|
134
145
|
|
|
135
146
|
if (activatorBoundingClientRect.width < 96) {
|
|
136
147
|
const w = popupClientRect.width < 96 ? 96 : popupClientRect.width;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
.datepicker :deep(.v-picker__actions) {
|
|
2
|
+
padding: 0;
|
|
3
|
+
margin: 0 16px 16px;
|
|
4
|
+
}
|
|
5
|
+
.datepicker :deep(.v-btn--active) {
|
|
6
|
+
background: var(--farm-primary-base);
|
|
7
|
+
}
|
|
8
|
+
.datepicker :deep(.v-date-picker-table__current) {
|
|
9
|
+
border-color: var(--farm-primary-base);
|
|
10
|
+
color: var(--farm-primary-base);
|
|
11
|
+
}
|
|
12
|
+
.datepicker :deep(.v-date-picker-table__current.v-btn--active) {
|
|
13
|
+
color: white;
|
|
14
|
+
}
|
|
15
|
+
.btn-clean {
|
|
16
|
+
margin: 0 8px;
|
|
17
|
+
}
|
|
18
|
+
.farm-contextmenu {
|
|
19
|
+
width: 100%;
|
|
20
|
+
}
|
|
@@ -29,25 +29,40 @@ export const Primary = () => ({
|
|
|
29
29
|
});
|
|
30
30
|
|
|
31
31
|
export const InitValue = () => ({
|
|
32
|
-
|
|
32
|
+
data() {
|
|
33
|
+
return {
|
|
34
|
+
date: '2023-08-01',
|
|
35
|
+
};
|
|
36
|
+
},
|
|
37
|
+
template: `<div style='max-width: 320px'><farm-input-datepicker inputId="input-custom-id-1" v-model="date" /></div>`,
|
|
33
38
|
});
|
|
34
39
|
|
|
35
40
|
export const MinMaxDates = () => ({
|
|
41
|
+
data() {
|
|
42
|
+
return {
|
|
43
|
+
date: '',
|
|
44
|
+
};
|
|
45
|
+
},
|
|
36
46
|
template: `<div style='max-width: 320px'>
|
|
37
|
-
<farm-input-datepicker inputId="input-custom-id-2" max="2021-12-02" min="2021-07-01" />
|
|
47
|
+
<farm-input-datepicker inputId="input-custom-id-2" max="2021-12-02" min="2021-07-01" v-model="date" />
|
|
38
48
|
max="2021-12-02" min="2021-07-01"
|
|
39
49
|
</div>`,
|
|
40
50
|
});
|
|
41
51
|
|
|
42
52
|
export const RequiredDates = () => ({
|
|
53
|
+
data() {
|
|
54
|
+
return {
|
|
55
|
+
date: '',
|
|
56
|
+
};
|
|
57
|
+
},
|
|
43
58
|
template: `<div style='max-width: 320px'>
|
|
44
|
-
<farm-input-datepicker inputId="input-custom-id-3" :required="true" />
|
|
59
|
+
<farm-input-datepicker inputId="input-custom-id-3" v-model="date" :required="true" />
|
|
45
60
|
</div>`,
|
|
46
61
|
});
|
|
47
62
|
|
|
48
|
-
export const
|
|
63
|
+
export const Readonly = () => ({
|
|
49
64
|
template: `<div style='max-width: 320px'>
|
|
50
|
-
<farm-input-datepicker :readonly="
|
|
65
|
+
<farm-input-datepicker :readonly="true" value="2021-08-01" inputId="input-custom-id-3"/>
|
|
51
66
|
</div>`,
|
|
52
67
|
});
|
|
53
68
|
|
|
@@ -1,50 +1,48 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<
|
|
3
|
-
|
|
2
|
+
<farm-contextmenu
|
|
3
|
+
stay-open
|
|
4
4
|
v-model="menuField"
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
min-width="290px"
|
|
5
|
+
ref="contextmenu"
|
|
6
|
+
maxHeight="auto"
|
|
7
|
+
bottom
|
|
8
|
+
popup-width="320"
|
|
10
9
|
>
|
|
11
|
-
<template v-slot:activator="{}">
|
|
12
|
-
<farm-textfield-v2
|
|
13
|
-
icon="calendar"
|
|
14
|
-
v-model="fieldRange"
|
|
15
|
-
autocomplete="off"
|
|
16
|
-
:readonly="readonly"
|
|
17
|
-
:mask="`${readonly ? '' : '##/##/####'}`"
|
|
18
|
-
:id="inputId"
|
|
19
|
-
:rules="[checkMax, checkMin, checkRequire]"
|
|
20
|
-
@keyup="keyUpInput"
|
|
21
|
-
@click="openDatepicker"
|
|
22
|
-
@onClickIcon="openDatepicker"
|
|
23
|
-
/>
|
|
24
|
-
</template>
|
|
25
10
|
<v-date-picker
|
|
26
11
|
v-if="menuField"
|
|
27
12
|
v-model="dateField"
|
|
28
13
|
no-title
|
|
29
14
|
scrollable
|
|
30
|
-
color="secondary"
|
|
31
15
|
locale="pt-br"
|
|
16
|
+
class="datepicker"
|
|
32
17
|
:max="max"
|
|
33
18
|
:min="min"
|
|
34
19
|
>
|
|
35
20
|
<farm-btn outlined color="secondary" @click="closeDatepicker" title="Fechar">
|
|
36
21
|
Fechar
|
|
37
22
|
</farm-btn>
|
|
38
|
-
<farm-btn outlined class="
|
|
23
|
+
<farm-btn outlined class="btn-clean" @click="clear"> Limpar </farm-btn>
|
|
39
24
|
<farm-btn class="ml-2" title="Confirmar" :disabled="!dateField.length" @click="save()">
|
|
40
25
|
Confirmar
|
|
41
26
|
</farm-btn>
|
|
42
27
|
</v-date-picker>
|
|
43
|
-
|
|
28
|
+
<template v-slot:activator="{ }">
|
|
29
|
+
<farm-textfield-v2
|
|
30
|
+
icon="calendar"
|
|
31
|
+
v-model="fieldRange"
|
|
32
|
+
autocomplete="off"
|
|
33
|
+
:readonly="readonly"
|
|
34
|
+
:mask="`${readonly ? '' : '##/##/####'}`"
|
|
35
|
+
:id="inputId"
|
|
36
|
+
:rules="[checkMax, checkMin, checkRequire]"
|
|
37
|
+
@keyup="keyUpInput"
|
|
38
|
+
@click="openDatepicker"
|
|
39
|
+
@onClickIcon="openDatepicker"
|
|
40
|
+
/>
|
|
41
|
+
</template>
|
|
42
|
+
</farm-contextmenu>
|
|
44
43
|
</template>
|
|
45
44
|
<script lang="ts">
|
|
46
45
|
import Vue from 'vue';
|
|
47
|
-
import { VMenu } from 'vuetify/lib/components/VMenu';
|
|
48
46
|
import { VDatePicker } from 'vuetify/lib/components/VDatePicker';
|
|
49
47
|
import { defaultFormat as dateDefaultFormatter, convertDate } from '../../helpers/date';
|
|
50
48
|
/**
|
|
@@ -53,7 +51,6 @@ import { defaultFormat as dateDefaultFormatter, convertDate } from '../../helper
|
|
|
53
51
|
export default Vue.extend({
|
|
54
52
|
name: 'farm-input-datepicker',
|
|
55
53
|
components: {
|
|
56
|
-
VMenu,
|
|
57
54
|
VDatePicker,
|
|
58
55
|
},
|
|
59
56
|
props: {
|
|
@@ -155,8 +152,10 @@ export default Vue.extend({
|
|
|
155
152
|
return dateDefaultFormatter(date);
|
|
156
153
|
},
|
|
157
154
|
save() {
|
|
158
|
-
this
|
|
155
|
+
this.formatDateRange(this.dateField);
|
|
159
156
|
this.inputVal = this.dateField;
|
|
157
|
+
this.menuField = false;
|
|
158
|
+
this.closeDatepicker();
|
|
160
159
|
},
|
|
161
160
|
clear() {
|
|
162
161
|
this.dateField = '';
|
|
@@ -185,6 +184,7 @@ export default Vue.extend({
|
|
|
185
184
|
},
|
|
186
185
|
closeDatepicker() {
|
|
187
186
|
this.menuField = false;
|
|
187
|
+
this.$refs.contextmenu.inputValue = false;
|
|
188
188
|
},
|
|
189
189
|
},
|
|
190
190
|
computed: {
|
|
@@ -200,7 +200,5 @@ export default Vue.extend({
|
|
|
200
200
|
});
|
|
201
201
|
</script>
|
|
202
202
|
<style lang="scss" scoped>
|
|
203
|
-
.
|
|
204
|
-
content: '' !important;
|
|
205
|
-
}
|
|
203
|
+
@import './DatePicker.scss';
|
|
206
204
|
</style>
|
|
@@ -1,27 +1,15 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<
|
|
3
|
-
|
|
2
|
+
<farm-contextmenu
|
|
3
|
+
stay-open
|
|
4
4
|
v-model="menuField"
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
offset-y
|
|
10
|
-
min-width="290px"
|
|
5
|
+
ref="contextmenu"
|
|
6
|
+
maxHeight="auto"
|
|
7
|
+
bottom
|
|
8
|
+
popup-width="320"
|
|
11
9
|
>
|
|
12
|
-
<template v-slot:activator="{}">
|
|
13
|
-
<farm-textfield-v2
|
|
14
|
-
v-model="fieldRange"
|
|
15
|
-
icon="calendar"
|
|
16
|
-
readonly
|
|
17
|
-
:id="inputId"
|
|
18
|
-
:rules="required ? [requiredRule] : []"
|
|
19
|
-
@click="openDatepicker"
|
|
20
|
-
@onClickIcon="openDatepicker"
|
|
21
|
-
/>
|
|
22
|
-
</template>
|
|
23
10
|
<v-date-picker
|
|
24
11
|
v-if="menuField"
|
|
12
|
+
class="datepicker"
|
|
25
13
|
v-model="dateField"
|
|
26
14
|
no-title
|
|
27
15
|
scrollable
|
|
@@ -34,18 +22,27 @@
|
|
|
34
22
|
<farm-btn outlined color="secondary" @click="closeDatepicker" title="Fechar">
|
|
35
23
|
Fechar
|
|
36
24
|
</farm-btn>
|
|
37
|
-
<farm-btn outlined class="
|
|
38
|
-
<farm-btn class="ml-2" :disabled="
|
|
25
|
+
<farm-btn outlined class="btn-clean" @click="clear"> Limpar </farm-btn>
|
|
26
|
+
<farm-btn class="ml-2" title="Confirmar" :disabled="!dateField.length" @click="save()">
|
|
39
27
|
Confirmar
|
|
40
28
|
</farm-btn>
|
|
41
29
|
</v-date-picker>
|
|
42
|
-
|
|
30
|
+
<template v-slot:activator="{ }">
|
|
31
|
+
<farm-textfield-v2
|
|
32
|
+
v-model="fieldRange"
|
|
33
|
+
icon="calendar"
|
|
34
|
+
readonly
|
|
35
|
+
:id="inputId"
|
|
36
|
+
:rules="required ? [requiredRule] : []"
|
|
37
|
+
@click="openDatepicker"
|
|
38
|
+
@onClickIcon="openDatepicker"
|
|
39
|
+
/>
|
|
40
|
+
</template>
|
|
41
|
+
</farm-contextmenu>
|
|
43
42
|
</template>
|
|
44
43
|
<script>
|
|
45
44
|
import Vue from 'vue';
|
|
46
|
-
import { VMenu } from 'vuetify/lib/components/VMenu';
|
|
47
45
|
import { VDatePicker } from 'vuetify/lib/components/VDatePicker';
|
|
48
|
-
import DefaultButton from '../Buttons/DefaultButton';
|
|
49
46
|
import { defaultFormat as dateDefaultFormatter } from '../../helpers/date';
|
|
50
47
|
/**
|
|
51
48
|
* Componente de input com datepicker para range de data
|
|
@@ -53,9 +50,7 @@ import { defaultFormat as dateDefaultFormatter } from '../../helpers/date';
|
|
|
53
50
|
export default Vue.extend({
|
|
54
51
|
name: 'farm-input-rangedatepicker',
|
|
55
52
|
components: {
|
|
56
|
-
VMenu,
|
|
57
53
|
VDatePicker,
|
|
58
|
-
'farm-btn': DefaultButton,
|
|
59
54
|
},
|
|
60
55
|
props: {
|
|
61
56
|
/**
|
|
@@ -127,9 +122,10 @@ export default Vue.extend({
|
|
|
127
122
|
return dateDefaultFormatter(dateStart) + ' a ' + dateDefaultFormatter(dateEnd);
|
|
128
123
|
},
|
|
129
124
|
save() {
|
|
130
|
-
this
|
|
125
|
+
this.formatDateRange(this.dateField);
|
|
131
126
|
this.inputVal = this.dateField;
|
|
132
127
|
this.menuField = false;
|
|
128
|
+
this.closeDatepicker();
|
|
133
129
|
},
|
|
134
130
|
clear() {
|
|
135
131
|
this.dateField = [];
|
|
@@ -140,6 +136,7 @@ export default Vue.extend({
|
|
|
140
136
|
},
|
|
141
137
|
closeDatepicker() {
|
|
142
138
|
this.menuField = false;
|
|
139
|
+
this.$refs.contextmenu.inputValue = false;
|
|
143
140
|
},
|
|
144
141
|
},
|
|
145
142
|
computed: {
|
|
@@ -158,7 +155,5 @@ export default Vue.extend({
|
|
|
158
155
|
});
|
|
159
156
|
</script>
|
|
160
157
|
<style lang="scss" scoped>
|
|
161
|
-
.
|
|
162
|
-
content: '' !important;
|
|
163
|
-
}
|
|
158
|
+
@import '../DatePicker/DatePicker.scss';
|
|
164
159
|
</style>
|