Skip to content

Commit c6e3f5e

Browse files
author
Lionel Bijaoui
committed
🆕 new: new field type: Cleave. Reorganization of dev index file.
1 parent 1f22d80 commit c6e3f5e

File tree

3 files changed

+143
-3
lines changed

3 files changed

+143
-3
lines changed

dev/index.html

+7-3
Original file line numberDiff line numberDiff line change
@@ -12,19 +12,23 @@
1212
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/ion-rangeslider/2.1.4/css/ion.rangeSlider.skinHTML5.css">
1313
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/noUiSlider/8.5.1/nouislider.min.css">
1414

15-
15+
1616
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.3/jquery.js"></script>
1717
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.13.0/moment.min.js"></script>
18-
18+
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.3.0/lodash.min.js"></script>
19+
<!-- jQuery dependent -->
1920
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.6/js/bootstrap.js"></script>
2021
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.10.0/js/bootstrap-select.min.js"></script>
2122
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datetimepicker/4.17.37/js/bootstrap-datetimepicker.min.js"></script>
2223
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/spectrum/1.8.0/spectrum.js"></script>
2324
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery.maskedinput/1.4.1/jquery.maskedinput.js"></script>
2425
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/ion-rangeslider/2.1.4/js/ion.rangeSlider.js"></script>
26+
<!-- Vanilla libs -->
2527
<script type="text/javascript" src="https://rawgit.com/monterail/vue-multiselect/master/lib/vue-multiselect.min.js"></script>
28+
<script type="text/javascript" src="https://rawgit.com/nosir/cleave.js/master/dist/cleave.min.js"></script>
29+
<script type="text/javascript" src="https://nosir.github.io/cleave.js/lib/cleave-phone.i18n.js"></script>
2630
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/noUiSlider/8.5.1/nouislider.js"></script>
27-
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.3.0/lodash.min.js"></script>
31+
2832
</head>
2933
<body>
3034
<div class="container-fluid"></div>

dev/schema.js

+33
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,39 @@ module.exports = {
191191
styleClasses: "half-width"
192192
//validator: validators.regexp
193193
}, {
194+
type: "cleave",
195+
label: "Mobile (Cleave.js field)",
196+
model: "mobile",
197+
cleaveOptions: {
198+
// Credit Card
199+
creditCard: false,
200+
onCreditCardTypeChanged(type){
201+
console.log("onCreditCardTypeChanged", type);
202+
},
203+
// Phone
204+
phone: false,
205+
phoneRegionCode: 'AU',
206+
// Date
207+
date: false,
208+
datePattern: ['d', 'm', 'Y'],
209+
// Numerals
210+
numeral: false,
211+
numeralThousandsGroupStyle: 'thousand',
212+
numeralDecimalScale: 2,
213+
numeralDecimalMark: '.',
214+
// General
215+
blocks: [0, 2, 3, 4],
216+
delimiter: ' ',
217+
delimiters: ['(', ') ', '-', '-'],
218+
// prefix: '(',
219+
numericOnly: true,
220+
uppercase: false,
221+
lowercase: false
222+
},
223+
224+
styleClasses: "half-width",
225+
validator: validators.required
226+
}, {
194227
type: "masked",
195228
label: "Mobile (masked field)",
196229
model: "mobile",

src/fields/fieldCleave.vue

+103
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
<template lang="jade">
2+
input.form-control(type="text")
3+
</template>
4+
5+
<script>
6+
import abstractField from "./abstractField";
7+
import { defaults } from "lodash";
8+
9+
export default {
10+
mixins: [abstractField],
11+
12+
data() {
13+
return {
14+
cleave: null
15+
};
16+
},
17+
18+
watch: {
19+
/*model: {
20+
get(){
21+
if (window.Cleave) {
22+
console.log("get model", this.model);
23+
}
24+
},
25+
set(value) {
26+
if (window.Cleave) {
27+
console.log("set model", this.model, value);
28+
29+
}
30+
}
31+
}*/
32+
},
33+
34+
methods: {
35+
/*formatValueToField(){
36+
console.log(" 1 formatValueToField",this.cleave);
37+
if (this.cleave) {
38+
39+
return this.cleave.getRawValue();
40+
}else{
41+
console.log("fail")
42+
// this.cleave.element.value = "";
43+
return "";
44+
}
45+
},*/
46+
/*formatValueToModel(newValue){
47+
console.log(" 2 formatValueToModel");
48+
this.cleave.setRawValue(newValue);
49+
return newValue;
50+
}*/
51+
// onCreditCardTypeChanged(type){
52+
// let onCreditCardTypeChanged = this.schema.onCreditCardTypeChanged;
53+
// if (typeof(onNewTag) == "function") {
54+
// onNewTag(newTag, id, this.options, this.value);
55+
// }
56+
// }
57+
/*onChange(value) {
58+
console.log(value);
59+
if (value.length === 1) {
60+
// Single value
61+
this.value = parseFloat(value[0]);
62+
} else {
63+
// Array (range)
64+
this.value = [parseFloat(value[0]), parseFloat(value[1])];
65+
}
66+
}*/
67+
},
68+
69+
ready() {
70+
if (window.Cleave) {
71+
this.cleave = new Cleave(this.$el, defaults(this.schema.cleaveOptions || {}, {
72+
// Credit Card
73+
creditCard: false,
74+
// onCreditCardTypeChanged: onCreditCardTypeChanged.bind(this),
75+
// Phone
76+
phone: false,
77+
phoneRegionCode: 'AU',
78+
// Date
79+
date: false,
80+
datePattern: ['d', 'm', 'Y'],
81+
// Numerals
82+
numeral: false,
83+
numeralThousandsGroupStyle: 'thousand',
84+
numeralDecimalScale: 2,
85+
numeralDecimalMark: '.',
86+
// General
87+
blocks: [],
88+
delimiter: ' ',
89+
prefix: null,
90+
numericOnly: false,
91+
uppercase: false,
92+
lowercase: false
93+
}));
94+
} else {
95+
console.warn("Cleave is missing. Please download from https://github.com/nosir/cleave.js/ and load the script in the HTML head section!");
96+
}
97+
}
98+
};
99+
</script>
100+
101+
<style lang="sass">
102+
.vue-form-generator .field-cleave {}
103+
</style>

0 commit comments

Comments
 (0)