@farm-investimentos/front-mfe-components 15.4.5 → 15.4.7
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 +154 -103
- 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 +154 -103
- 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/RangeDatePicker/RangeDatePicker.stories.js +12 -0
- package/src/components/RangeDatePicker/RangeDatePicker.vue +53 -7
- package/src/components/TextArea/TextArea.scss +7 -0
- package/src/components/TextFieldV2/TextFieldV2.scss +9 -1
package/package.json
CHANGED
|
@@ -46,6 +46,18 @@ export const InitialValue = () => ({
|
|
|
46
46
|
</div>`,
|
|
47
47
|
});
|
|
48
48
|
|
|
49
|
+
export const readOnly = () => ({
|
|
50
|
+
data() {
|
|
51
|
+
return {
|
|
52
|
+
date: ['2023-08-01', '2023-08-05'],
|
|
53
|
+
};
|
|
54
|
+
},
|
|
55
|
+
template: `<div style='max-width: 320px'>
|
|
56
|
+
<RangeDatePicker readonly inputId="input-custom-id" :value="date" />
|
|
57
|
+
date: {{ date }}
|
|
58
|
+
</div>`,
|
|
59
|
+
});
|
|
60
|
+
|
|
49
61
|
export const MinMax = () => ({
|
|
50
62
|
template: `<RangeDatePicker inputId="input-custom-id" min="2022-01-17" max="2022-02-15" />`,
|
|
51
63
|
});
|
|
@@ -40,13 +40,16 @@
|
|
|
40
40
|
Confirmar <farm-icon>check</farm-icon>
|
|
41
41
|
</farm-btn>
|
|
42
42
|
</v-date-picker>
|
|
43
|
-
<template v-slot:activator
|
|
43
|
+
<template v-slot:activator>
|
|
44
44
|
<farm-textfield-v2
|
|
45
45
|
v-model="fieldRange"
|
|
46
46
|
icon="calendar"
|
|
47
|
-
|
|
47
|
+
ref="inputCalendar"
|
|
48
|
+
:readonly="readonly"
|
|
48
49
|
:id="inputId"
|
|
49
|
-
:
|
|
50
|
+
:mask="`${readonly ? [''] : ['##/##/####' + ' a ' + '##/##/####']}`"
|
|
51
|
+
:rules="[checkDateValid, checkRequire]"
|
|
52
|
+
@keyup="keyUpInput"
|
|
50
53
|
/>
|
|
51
54
|
</template>
|
|
52
55
|
</farm-contextmenu>
|
|
@@ -54,7 +57,11 @@
|
|
|
54
57
|
<script>
|
|
55
58
|
import { defineComponent } from 'vue';
|
|
56
59
|
import { VDatePicker } from 'vuetify/lib/components/VDatePicker';
|
|
57
|
-
import {
|
|
60
|
+
import {
|
|
61
|
+
defaultFormat as dateDefaultFormatter,
|
|
62
|
+
convertDate,
|
|
63
|
+
checkDateValid,
|
|
64
|
+
} from '../../helpers/date';
|
|
58
65
|
import { formatDatePickerHeader } from '../../helpers';
|
|
59
66
|
|
|
60
67
|
/**
|
|
@@ -101,6 +108,13 @@ export default defineComponent({
|
|
|
101
108
|
type: Boolean,
|
|
102
109
|
default: false,
|
|
103
110
|
},
|
|
111
|
+
/**
|
|
112
|
+
* Readonly field
|
|
113
|
+
*/
|
|
114
|
+
readonly: {
|
|
115
|
+
type: Boolean,
|
|
116
|
+
default: false,
|
|
117
|
+
},
|
|
104
118
|
},
|
|
105
119
|
data() {
|
|
106
120
|
const s = this.formatDateRange(this.value);
|
|
@@ -108,8 +122,16 @@ export default defineComponent({
|
|
|
108
122
|
menuField: false,
|
|
109
123
|
dateField: this.value || [],
|
|
110
124
|
fieldRange: s,
|
|
111
|
-
|
|
112
|
-
return !!value || value != '' || 'Campo obrigatório';
|
|
125
|
+
checkRequire: value => {
|
|
126
|
+
return this.required ? !!value || value != '' || 'Campo obrigatório' : true;
|
|
127
|
+
},
|
|
128
|
+
checkDateValid: value => {
|
|
129
|
+
if (value.length) {
|
|
130
|
+
const checkPartOne = checkDateValid(value.slice(0, 10));
|
|
131
|
+
const checkPartTwo = checkDateValid(value.slice(13));
|
|
132
|
+
return checkPartOne && checkPartTwo ? true : 'Data inválida';
|
|
133
|
+
}
|
|
134
|
+
return true;
|
|
113
135
|
},
|
|
114
136
|
};
|
|
115
137
|
},
|
|
@@ -136,6 +158,11 @@ export default defineComponent({
|
|
|
136
158
|
return dateDefaultFormatter(dateStart) + ' a ' + dateDefaultFormatter(dateEnd);
|
|
137
159
|
},
|
|
138
160
|
save() {
|
|
161
|
+
if (this.readonly) {
|
|
162
|
+
this.menuField = false;
|
|
163
|
+
this.closeDatepicker();
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
139
166
|
this.formatDateRange(this.dateField);
|
|
140
167
|
this.inputVal = this.dateField;
|
|
141
168
|
this.menuField = false;
|
|
@@ -144,6 +171,7 @@ export default defineComponent({
|
|
|
144
171
|
clear() {
|
|
145
172
|
this.dateField = [];
|
|
146
173
|
this.save();
|
|
174
|
+
this.$refs.inputCalendar.reset();
|
|
147
175
|
},
|
|
148
176
|
openDatepicker() {
|
|
149
177
|
this.menuField = true;
|
|
@@ -153,7 +181,7 @@ export default defineComponent({
|
|
|
153
181
|
this.$refs.contextmenu.inputValue = false;
|
|
154
182
|
},
|
|
155
183
|
sortDates(dates) {
|
|
156
|
-
if(dates?.length !== 2) {
|
|
184
|
+
if (dates?.length !== 2) {
|
|
157
185
|
return dates;
|
|
158
186
|
}
|
|
159
187
|
const firstDate = new Date(dates[0]);
|
|
@@ -165,6 +193,24 @@ export default defineComponent({
|
|
|
165
193
|
|
|
166
194
|
return [dates[1], dates[0]];
|
|
167
195
|
},
|
|
196
|
+
validation(date) {
|
|
197
|
+
const pattern =
|
|
198
|
+
/^(?:(?:31(\/|-|\.)(?:0?[13578]|1[02]))\1|(?:(?:29|30)(\/|-|\.)(?:0?[13-9]|1[0-2])\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:29(\/|-|\.)0?2\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1\d|2[0-8])(\/|-|\.)(?:(?:0?[1-9])|(?:1[0-2]))\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$/gm;
|
|
199
|
+
return pattern.test(date);
|
|
200
|
+
},
|
|
201
|
+
keyUpInput(event) {
|
|
202
|
+
let newValue = event.target.value;
|
|
203
|
+
if (newValue.length === 23) {
|
|
204
|
+
const partOne = newValue.slice(0, 10);
|
|
205
|
+
const partTwo = newValue.slice(13);
|
|
206
|
+
if (this.validation(partOne) && this.validation(partTwo)) {
|
|
207
|
+
const partOneDate = convertDate(partOne);
|
|
208
|
+
const partTwoDate = convertDate(partTwo);
|
|
209
|
+
this.dateField = [partOneDate, partTwoDate];
|
|
210
|
+
this.save();
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
},
|
|
168
214
|
formatDatePickerHeader,
|
|
169
215
|
},
|
|
170
216
|
computed: {
|
|
@@ -36,7 +36,14 @@
|
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
&--disabled {
|
|
39
|
+
.farm-textarea--textarea {
|
|
40
|
+
background-color: var(--farm-neutral-lighten);
|
|
41
|
+
border-color: var(--farm-gray-lighten);
|
|
42
|
+
color: var(--farm-bw-black-30);
|
|
43
|
+
}
|
|
39
44
|
textarea {
|
|
45
|
+
background-color: var(--farm-neutral-lighten);
|
|
46
|
+
border-color: var(--farm-gray-lighten);
|
|
40
47
|
color: var(--farm-bw-black-30);
|
|
41
48
|
}
|
|
42
49
|
}
|
|
@@ -44,9 +44,18 @@
|
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
&--disabled {
|
|
47
|
+
.farm-textfield--input {
|
|
48
|
+
background-color: var(--farm-neutral-lighten);
|
|
49
|
+
border-color: var(--farm-gray-lighten);
|
|
50
|
+
color: var(--farm-bw-black-30);
|
|
51
|
+
}
|
|
52
|
+
|
|
47
53
|
input {
|
|
54
|
+
background-color: var(--farm-neutral-lighten);
|
|
55
|
+
border-color: var(--farm-gray-lighten);
|
|
48
56
|
color: var(--farm-bw-black-30);
|
|
49
57
|
}
|
|
58
|
+
|
|
50
59
|
.farm-icon {
|
|
51
60
|
color: var(--farm-bw-black-30);
|
|
52
61
|
cursor: default;
|
|
@@ -62,7 +71,6 @@
|
|
|
62
71
|
}
|
|
63
72
|
}
|
|
64
73
|
|
|
65
|
-
|
|
66
74
|
.farm-textfield--touched.farm-textfield--blured.farm-textfield--validatable {
|
|
67
75
|
&.farm-textfield--error {
|
|
68
76
|
.farm-textfield {
|