toggle-components-library 1.10.1

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.
Files changed (149) hide show
  1. package/README.md +24 -0
  2. package/babel.config.js +5 -0
  3. package/dist/demo.html +10 -0
  4. package/dist/img/add_circle.7c6b29c6.svg +29 -0
  5. package/dist/img/arrow-left-blue-hover.5b0a1e54.svg +32 -0
  6. package/dist/img/arrow-left-blue.1e5404dd.svg +32 -0
  7. package/dist/img/arrow-right-blue-hover.b800a882.svg +32 -0
  8. package/dist/img/arrow-right-blue.fbc83729.svg +32 -0
  9. package/dist/img/arrow_down.787e1a8b.svg +28 -0
  10. package/dist/img/calendar.16f176cd.svg +37 -0
  11. package/dist/img/card.e1735960.svg +9 -0
  12. package/dist/img/checkbox_blank.907b325c.svg +6 -0
  13. package/dist/img/checkbox_checked.3e2d399f.svg +9 -0
  14. package/dist/img/checkbox_hover.e99ab40c.svg +3 -0
  15. package/dist/img/checkbox_inactive.b94b6c81.svg +9 -0
  16. package/dist/img/circle_blank.ab1622db.svg +24 -0
  17. package/dist/img/clipboard.e483ded3.svg +12 -0
  18. package/dist/img/delete-grey.cf15dcd1.svg +29 -0
  19. package/dist/img/delete.ee71bb54.svg +29 -0
  20. package/dist/img/drag_drop.0c778868.svg +14 -0
  21. package/dist/img/draggable.7493006c.svg +1 -0
  22. package/dist/img/edit_circle.4f3826d3.svg +34 -0
  23. package/dist/img/edit_circle_grey.0c96938c.svg +34 -0
  24. package/dist/img/email.078e944d.svg +7 -0
  25. package/dist/img/file.f4fb9e5d.svg +9 -0
  26. package/dist/img/graph.7f2e3985.svg +16 -0
  27. package/dist/img/grey_cross.2ac5fda1.svg +15 -0
  28. package/dist/img/info.4b233da4.svg +29 -0
  29. package/dist/img/megaphone.73161a8a.svg +19 -0
  30. package/dist/img/orders.51f8963f.svg +29 -0
  31. package/dist/img/search.db8f673f.svg +25 -0
  32. package/dist/img/tick-grey.b6d7b16c.svg +12 -0
  33. package/dist/img/tick.97f35963.svg +12 -0
  34. package/dist/img/tick_circle.417fd97d.svg +28 -0
  35. package/dist/img/tick_circle_grey.92b7e747.svg +32 -0
  36. package/dist/img/upload.9b0f1f1c.svg +30 -0
  37. package/dist/toggle-components-library.common.js +17714 -0
  38. package/dist/toggle-components-library.common.js.map +1 -0
  39. package/dist/toggle-components-library.css +1 -0
  40. package/dist/toggle-components-library.umd.js +17724 -0
  41. package/dist/toggle-components-library.umd.js.map +1 -0
  42. package/dist/toggle-components-library.umd.min.js +9 -0
  43. package/dist/toggle-components-library.umd.min.js.map +1 -0
  44. package/package-lock.json +20271 -0
  45. package/package.json +78 -0
  46. package/public/favicon.ico +0 -0
  47. package/public/index.html +17 -0
  48. package/src/assets/ProximaNova-Regular.otf +0 -0
  49. package/src/assets/icons/add_circle.svg +29 -0
  50. package/src/assets/icons/arrow-left-blue-hover.svg +32 -0
  51. package/src/assets/icons/arrow-left-blue.svg +32 -0
  52. package/src/assets/icons/arrow-right-blue-hover.svg +32 -0
  53. package/src/assets/icons/arrow-right-blue.svg +32 -0
  54. package/src/assets/icons/arrow_down.svg +28 -0
  55. package/src/assets/icons/calendar.svg +37 -0
  56. package/src/assets/icons/card.svg +9 -0
  57. package/src/assets/icons/checkbox_blank.svg +6 -0
  58. package/src/assets/icons/checkbox_checked.svg +9 -0
  59. package/src/assets/icons/checkbox_hover.svg +3 -0
  60. package/src/assets/icons/checkbox_inactive.svg +9 -0
  61. package/src/assets/icons/circle_blank.svg +24 -0
  62. package/src/assets/icons/clipboard.svg +12 -0
  63. package/src/assets/icons/delete-grey.svg +29 -0
  64. package/src/assets/icons/delete.svg +29 -0
  65. package/src/assets/icons/drag.svg +15 -0
  66. package/src/assets/icons/drag_drop.svg +14 -0
  67. package/src/assets/icons/draggable.svg +1 -0
  68. package/src/assets/icons/draggable.textClipping +0 -0
  69. package/src/assets/icons/edit_circle.svg +34 -0
  70. package/src/assets/icons/edit_circle_grey.svg +34 -0
  71. package/src/assets/icons/email.svg +7 -0
  72. package/src/assets/icons/file.svg +9 -0
  73. package/src/assets/icons/graph.svg +16 -0
  74. package/src/assets/icons/grey_cross.svg +15 -0
  75. package/src/assets/icons/info.svg +29 -0
  76. package/src/assets/icons/megaphone.svg +19 -0
  77. package/src/assets/icons/orders.svg +29 -0
  78. package/src/assets/icons/search.svg +25 -0
  79. package/src/assets/icons/tick-grey.svg +12 -0
  80. package/src/assets/icons/tick.svg +12 -0
  81. package/src/assets/icons/tick_circle.svg +28 -0
  82. package/src/assets/icons/tick_circle_grey.svg +32 -0
  83. package/src/assets/icons/upload.svg +30 -0
  84. package/src/assets/img/airship.svg +42 -0
  85. package/src/assets/img/toggle.svg +1 -0
  86. package/src/assets/logo.png +0 -0
  87. package/src/components/badges/ToggleBadge.vue +23 -0
  88. package/src/components/breadcrumb/ToggleBreadCrumb.vue +43 -0
  89. package/src/components/buttons/ToggleButton.vue +88 -0
  90. package/src/components/buttons/ToggleFeatureButton.vue +68 -0
  91. package/src/components/elements/ToggleLineBreak.vue +9 -0
  92. package/src/components/forms/ToggleColourPicker.vue +192 -0
  93. package/src/components/forms/ToggleDatePicker.vue +168 -0
  94. package/src/components/forms/ToggleDateRangePicker.vue +208 -0
  95. package/src/components/forms/ToggleInputCheckbox.vue +74 -0
  96. package/src/components/forms/ToggleInputCheckboxContainer.vue +65 -0
  97. package/src/components/forms/ToggleInputCheckboxInline.vue +74 -0
  98. package/src/components/forms/ToggleInputCrudField.vue +95 -0
  99. package/src/components/forms/ToggleInputCurrency.vue +198 -0
  100. package/src/components/forms/ToggleInputFile.vue +101 -0
  101. package/src/components/forms/ToggleInputGrid.vue +409 -0
  102. package/src/components/forms/ToggleInputGroup.vue +48 -0
  103. package/src/components/forms/ToggleInputImage.vue +168 -0
  104. package/src/components/forms/ToggleInputNumber.vue +164 -0
  105. package/src/components/forms/ToggleInputPercentage.vue +142 -0
  106. package/src/components/forms/ToggleInputRadioButtonGroup.vue +81 -0
  107. package/src/components/forms/ToggleInputRadioButtons.vue +136 -0
  108. package/src/components/forms/ToggleInputSearch.vue +235 -0
  109. package/src/components/forms/ToggleInputSelect.vue +109 -0
  110. package/src/components/forms/ToggleInputText.vue +130 -0
  111. package/src/components/forms/ToggleInputTextArea.vue +123 -0
  112. package/src/components/forms/ToggleInputWebsite.vue +163 -0
  113. package/src/components/forms/ToggleInternationalPhoneInputSelect.vue +166 -0
  114. package/src/components/loaders/ToggleFillLoader.vue +34 -0
  115. package/src/components/mixins/mixins.js +48 -0
  116. package/src/components/modals/ToggleModal.vue +83 -0
  117. package/src/components/navs/sidenav/ToggleSideNav.vue +45 -0
  118. package/src/components/navs/sidenav/ToggleSideNavItem.vue +32 -0
  119. package/src/components/navs/sidenav/ToggleSideSubNav.vue +24 -0
  120. package/src/components/notifications/ToggleNotifications.vue +93 -0
  121. package/src/components/tables/TogglePagination.vue +114 -0
  122. package/src/components/tables/ToggleTable.vue +178 -0
  123. package/src/components/tables/ToggleTableColumn.vue +3 -0
  124. package/src/components/tables/ToggleTableRow.vue +5 -0
  125. package/src/components/text/ToggleHeaderTextLarge.vue +3 -0
  126. package/src/components/text/ToggleHelperTextSmall.vue +3 -0
  127. package/src/components/text/ToggleInfoText.vue +3 -0
  128. package/src/components/text/ToggleTextClipboardCopy.vue +51 -0
  129. package/src/index.js +105 -0
  130. package/src/sass/includes/_as_animations.scss +8 -0
  131. package/src/sass/includes/_as_badges.scss +27 -0
  132. package/src/sass/includes/_as_breadcrumb.scss +39 -0
  133. package/src/sass/includes/_as_buttons.scss +235 -0
  134. package/src/sass/includes/_as_elements.scss +3 -0
  135. package/src/sass/includes/_as_fonts.scss +12 -0
  136. package/src/sass/includes/_as_globals.scss +1 -0
  137. package/src/sass/includes/_as_gridbuilder.scss +136 -0
  138. package/src/sass/includes/_as_inputs.scss +900 -0
  139. package/src/sass/includes/_as_loader.scss +37 -0
  140. package/src/sass/includes/_as_loaders.scss +41 -0
  141. package/src/sass/includes/_as_modals.scss +83 -0
  142. package/src/sass/includes/_as_navs.scss +120 -0
  143. package/src/sass/includes/_as_notifications.scss +30 -0
  144. package/src/sass/includes/_as_sizes.scss +4 -0
  145. package/src/sass/includes/_as_table.scss +276 -0
  146. package/src/sass/includes/_as_text.scss +73 -0
  147. package/src/sass/includes/_as_variables.scss +49 -0
  148. package/src/sass/main.scss +20 -0
  149. package/vue.config.js +8 -0
@@ -0,0 +1,192 @@
1
+ <template>
2
+ <div class="toggle-input-container" :class="{'toggle-input-is-invalid':isInvalid }">
3
+
4
+ <div ref="colorpicker">
5
+ <label class="toggle-input-label">{{label}}</label>
6
+ <input :name="name" type="text" class="toggle-input-colour-picker toggle-input" v-model="colorValue" @input="updateFromInput" :style="'outline-color:'+borderColour"/>
7
+ <span class="toggle-color-picker-current-color" :style="'background-color: ' + borderColour" @click="togglePicker()"></span>
8
+ </div>
9
+
10
+ <chrome-picker class="toggle-chrome-picker" :value="colors" v-if="displayPicker" @input="updateFromPicker"/>
11
+
12
+ <label
13
+ class="toggle-input-label-error"
14
+ v-if="isInvalid"
15
+ :for="name ? name : 'ToggleInputText' "
16
+ >
17
+ {{ errorMessage }}
18
+ </label>
19
+ </div>
20
+ </template>
21
+
22
+
23
+ <script>
24
+ import Vue from "vue";
25
+ import { mixins } from '../mixins/mixins';
26
+ import { Chrome } from 'vue-color';
27
+ Vue.component('chrome-picker', Chrome);
28
+
29
+ export default {
30
+ mixins:[mixins],
31
+ props: {
32
+ value: {
33
+ type: [String]
34
+ },
35
+ name: {
36
+ type: String,
37
+ default: "ToggleInputText"
38
+ },
39
+ label: {
40
+ type: String,
41
+ required: false
42
+ },
43
+ placeholder: {
44
+ type: String,
45
+ required: false
46
+ },
47
+ autocomplete: {
48
+ type: Boolean,
49
+ default: true
50
+ },
51
+ size: {
52
+ type: String,
53
+ validator: function (value) {
54
+ return ['extra-small', 'small', 'medium', 'large', 'full'].indexOf(value) !== -1
55
+ }
56
+ },
57
+ required: {
58
+ type: Boolean,
59
+ default: false
60
+ },
61
+ isInvalid: {
62
+ type: Boolean,
63
+ default: false
64
+ },
65
+ errorMessage: {
66
+ type: String,
67
+ required: false
68
+ },
69
+ },
70
+ data : function(){
71
+ return {
72
+ displayPicker: false,
73
+ colorValue: '',
74
+ colors: {
75
+ hex: '#000000',
76
+ },
77
+ borderColour: '#EAE8E8',
78
+ };
79
+ },
80
+ computed: {
81
+
82
+ colour:
83
+ {
84
+ get:function(){
85
+ return this.value;
86
+ },
87
+ set:function(newVal){
88
+ this.$emit('input', newVal)
89
+ }
90
+ },
91
+
92
+ },
93
+ created : function(){
94
+
95
+ },
96
+
97
+ beforeDestroy: function () {
98
+ },
99
+ watch:{
100
+
101
+ colorValue(val) {
102
+ if(val) {
103
+ this.updateColors(val);
104
+ this.$emit('input', val);
105
+ }
106
+
107
+ }
108
+
109
+ },
110
+ mounted : function ()
111
+ {
112
+ this.setColor(this.value || '#000000');
113
+ },
114
+ methods:{
115
+
116
+ setColor(color) {
117
+ this.updateColors(color);
118
+ this.colorValue = color;
119
+ },
120
+
121
+ setBorderColour(color, colorsRgba = ''){
122
+ if (colorsRgba === '') //if has only hex
123
+ {
124
+ let isWhite = color.charAt(1) === 'F' && color.charAt(2) != 'F' ? true : false;
125
+ this.borderColour = isWhite ? '#EAE8E8' : color;
126
+ }
127
+ else if (colorsRgba != '' ) //if has rgba
128
+ {
129
+ let hasTransparency = parseFloat(colorsRgba.a) < 0.2 ? true : false ;
130
+ this.borderColour = hasTransparency ? colorsRgba.hex : color;
131
+ }
132
+ },
133
+
134
+ updateColors(color) {
135
+ if(color.slice(0, 1) == '#') {
136
+ this.colors = {
137
+ hex: color
138
+ };
139
+ this.setBorderColour(color);
140
+ }
141
+ else if(color.slice(0, 4) == 'rgba') {
142
+ var rgba = color.replace(/^rgba?\(|\s+|\)$/g,'').split(','),
143
+ hex = '#' + ((1 << 24) + (parseInt(rgba[0]) << 16) + (parseInt(rgba[1]) << 8) + parseInt(rgba[2])).toString(16).slice(1);
144
+ this.colors = {
145
+ hex: hex,
146
+ a: rgba[3],
147
+ }
148
+ this.setBorderColour(color, this.colors);
149
+ }
150
+ },
151
+
152
+ updateFromInput() {
153
+ this.updateColors(this.colorValue);
154
+ },
155
+
156
+ showPicker() {
157
+ this.displayPicker = true;
158
+ document.addEventListener('click', this.documentClick);
159
+ },
160
+
161
+ hidePicker() {
162
+ this.displayPicker = false;
163
+ document.removeEventListener('click', this.documentClick);
164
+ },
165
+ togglePicker() {
166
+ this.displayPicker ? this.hidePicker() : this.showPicker();
167
+ },
168
+
169
+ documentClick(e) {
170
+ console.log('fda');
171
+ var el = this.$refs.colorpicker,
172
+ target = e.target;
173
+ if(el !== target && !el.contains(target)) {
174
+ this.hidePicker()
175
+ }
176
+ },
177
+
178
+ updateFromPicker(color) {
179
+ this.colors = color;
180
+ if(color.rgba.a == 1) {
181
+ this.colorValue = color.hex;
182
+ }
183
+ else {
184
+ this.colorValue = 'rgba(' + color.rgba.r + ', ' + color.rgba.g + ', ' + color.rgba.b + ', ' + color.rgba.a + ')';
185
+ }
186
+ }
187
+
188
+
189
+ }
190
+ }
191
+
192
+ </script>
@@ -0,0 +1,168 @@
1
+ <template>
2
+
3
+ <div class="toggle-date-container" :class="['datepicker-trigger',{'toggle-input-is-invalid':isInvalid }]">
4
+
5
+
6
+ <label class="toggle-input-label">{{label}}</label>
7
+
8
+ <div class="toggle-date-input-container">
9
+ <div class="toggle-date-input-calendar-icon">
10
+ <input type="text" class="toggle-input" :name="name" ref="date-input" :id="'toggle-date-input'+_uid" :value="date" v-on:keypress="$event.preventDefault()">
11
+ </div>
12
+ <button type="button" class="toggle-clear" v-on:click="clearDate" v-if="displayValue"></button>
13
+ </div>
14
+
15
+ <AirbnbStyleDatepicker
16
+ :trigger-element-id="'toggle-date-input'+_uid"
17
+ :trigger="datePickerOpen"
18
+ :mode="'single'"
19
+ :date-one="displayValue"
20
+ @date-one-selected="val => { displayValue = val}"
21
+ @closed="toggleDatePickerState(false)"
22
+ @cancelled="toggleDatePickerState(false)"
23
+ :monthsToShow="1"
24
+ :showShortcutsMenuTrigger="false"
25
+ />
26
+ <label
27
+ class="toggle-input-label-error"
28
+ v-if="isInvalid"
29
+ :for="name ? name : 'ToggleInputText' "
30
+ >
31
+ {{ errorMessage }}
32
+ </label>
33
+
34
+ </div>
35
+ </template>
36
+
37
+ <script>
38
+
39
+ import Vue from "vue";
40
+ import { mixins } from '../mixins/mixins'
41
+ import 'vue-airbnb-style-datepicker/dist/vue-airbnb-style-datepicker.min.css'
42
+ import AirbnbStyleDatepicker from 'vue-airbnb-style-datepicker';
43
+ import variables from '../../sass/includes/_as_variables.scss';
44
+
45
+ Vue.use(AirbnbStyleDatepicker, {
46
+ colors: {
47
+ selected : variables.toggleblue,
48
+ inRange : variables.togglelightblue,
49
+ selectedText : variables.togglewhite,
50
+ text : variables.toggleinputcolour,
51
+ inRangeBorder: variables.togglewhite,
52
+ disabled : variables.togglewhite,
53
+ },
54
+ texts: {
55
+ apply: 'Done'
56
+ },
57
+ });
58
+
59
+ export default {
60
+ mixins:[mixins],
61
+ components:{},
62
+ props: {
63
+ value: {
64
+ type: [Boolean,Date]
65
+ },
66
+
67
+ name: {
68
+ type: String,
69
+ default: "ToggleInputText"
70
+ },
71
+ label: {
72
+ type: String,
73
+ required: false
74
+ },
75
+ placeholder: {
76
+ type: String,
77
+ required: false
78
+ },
79
+ autocomplete: {
80
+ type: Boolean,
81
+ default: true
82
+ },
83
+ size: {
84
+ type: String,
85
+ validator: function (value) {
86
+ return ['extra-small', 'small', 'medium', 'large', 'full'].indexOf(value) !== -1
87
+ }
88
+ },
89
+ required: {
90
+ type: Boolean,
91
+ default: false
92
+ },
93
+ isInvalid: {
94
+ type: Boolean,
95
+ default: false
96
+ },
97
+ errorMessage: {
98
+ type: String,
99
+ required: false
100
+ },
101
+ maxLength:{
102
+ type: Number,
103
+ required:false
104
+ }
105
+ },
106
+
107
+ created : function(){
108
+ },
109
+ data : function(){
110
+ return {
111
+ datePickerOpen: false,
112
+ };
113
+ },
114
+ watch :{
115
+
116
+ datePickerOpen(newVal){
117
+ let state = newVal ? 'open' : 'closed';
118
+ this.$emit('state', state);
119
+ }
120
+
121
+ },
122
+ computed: {
123
+ date() {
124
+ return this.dateRangeView(this.displayValue)
125
+ },
126
+
127
+ // plugin only accepts MM/DD/YYYY, so change this so that it excepts and outputs JS dates
128
+ displayValue: {
129
+ get: function() {
130
+ return this.formatDate(this.value)
131
+ },
132
+ set: function(modifiedValue) {
133
+ if(modifiedValue){
134
+ modifiedValue = new Date(new Date(modifiedValue+' 00:00:00').toISOString());
135
+ }
136
+ else modifiedValue = false;
137
+ this.$emit('input', modifiedValue);
138
+ }
139
+ }
140
+ },
141
+ methods: {
142
+
143
+ clearDate()
144
+ {
145
+ this.displayValue = '';
146
+ },
147
+
148
+ toggleDatePickerState(state){
149
+ this.$nextTick( () => {
150
+ if(typeof state === 'boolean')
151
+ this.datePickerOpen = state;
152
+ else this.datePickerOpen = !this.datePickerOpen;
153
+ });
154
+ },
155
+ }
156
+ }
157
+
158
+
159
+ </script>
160
+
161
+ <style lang="scss">
162
+
163
+
164
+
165
+ </style>
166
+
167
+
168
+
@@ -0,0 +1,208 @@
1
+ <template>
2
+
3
+ <div class="toggle-date-container" :class="['datepicker-trigger',{'toggle-input-is-invalid':isInvalid }]">
4
+
5
+ <label class="toggle-input-label">{{label}}</label>
6
+
7
+ <div class="toggle-date-input-container">
8
+ <div class="toggle-date-input-calendar-icon">
9
+ <input type="text" class="toggle-input" :name="name" ref="date-input" :id="'toggle-date-input'+_uid" :value="dateRange" v-on:keypress="$event.preventDefault()">
10
+ </div>
11
+ <button type="button" class="toggle-clear" v-on:click="clearDate" v-if="displayValue"></button>
12
+ </div>
13
+
14
+ <AirbnbStyleDatepicker
15
+ :trigger-element-id="'toggle-date-input'+_uid"
16
+ :trigger="datePickerOpen"
17
+ :mode="'range'"
18
+ :date-one="displayValue.start"
19
+ :date-two="displayValue.end"
20
+ @date-one-selected="val => { displayValue = {start:val, end:displayValue.end }}"
21
+ @date-two-selected="val => { displayValue = {start:displayValue.start, end:val } }"
22
+ @closed="toggleDatePickerState(false)"
23
+ @cancelled="toggleDatePickerState(false)"
24
+ :showShortcutsMenuTrigger="false"
25
+ />
26
+ <label
27
+ class="toggle-input-label-error"
28
+ v-if="isInvalid"
29
+ :for="name ? name : 'ToggleInputText' "
30
+ >
31
+ {{ errorMessage }}
32
+ </label>
33
+
34
+ </div>
35
+ </template>
36
+
37
+ <script>
38
+
39
+ import Vue from "vue";
40
+ import { mixins } from '../mixins/mixins'
41
+ import 'vue-airbnb-style-datepicker/dist/vue-airbnb-style-datepicker.min.css'
42
+ import AirbnbStyleDatepicker from 'vue-airbnb-style-datepicker';
43
+ import variables from '../../sass/includes/_as_variables.scss';
44
+
45
+
46
+ Vue.use(AirbnbStyleDatepicker, {
47
+ colors: {
48
+ selected : variables.toggleblue,
49
+ inRange : variables.togglelightblue,
50
+ selectedText : variables.togglewhite,
51
+ text : variables.toggleinputcolour,
52
+ inRangeBorder: variables.togglewhite,
53
+ disabled : variables.togglewhite,
54
+ },
55
+ texts: {
56
+ apply: 'Done'
57
+ },
58
+ });
59
+
60
+ export default {
61
+ mixins:[mixins],
62
+ components:{},
63
+ props: {
64
+ value: {
65
+ type: Object
66
+ },
67
+ name: {
68
+ type: String,
69
+ default: "ToggleInputText"
70
+ },
71
+ label: {
72
+ type: String,
73
+ required: false
74
+ },
75
+ placeholder: {
76
+ type: String,
77
+ required: false
78
+ },
79
+ autocomplete: {
80
+ type: Boolean,
81
+ default: true
82
+ },
83
+ size: {
84
+ type: String,
85
+ validator: function (value) {
86
+ return ['extra-small', 'small', 'medium', 'large', 'full'].indexOf(value) !== -1
87
+ }
88
+ },
89
+ required: {
90
+ type: Boolean,
91
+ default: false
92
+ },
93
+ isInvalid: {
94
+ type: Boolean,
95
+ default: false
96
+ },
97
+ errorMessage: {
98
+ type: String,
99
+ required: false
100
+ },
101
+ maxLength:{
102
+ type: Number,
103
+ required:false
104
+ },
105
+
106
+ },
107
+
108
+ created : function(){
109
+ },
110
+ data : function(){
111
+ return {
112
+ datePickerOpen: false,
113
+ };
114
+ },
115
+ watch :{
116
+
117
+ datePickerOpen(newVal){
118
+ let state = newVal ? 'open' : 'closed';
119
+ this.$emit('state', state);
120
+ }
121
+
122
+ },
123
+ computed: {
124
+
125
+
126
+ dateRange() {
127
+ let formattedDates = ''
128
+ if (this.displayValue.start) {
129
+ formattedDates = this.dateRangeView(this.displayValue.start);
130
+ }
131
+ if (this.displayValue.end) {
132
+ formattedDates += ' - ' + this.dateRangeView(this.displayValue.end);
133
+ }
134
+
135
+ return formattedDates
136
+ },
137
+
138
+
139
+ displayValue: {
140
+ get: function() {
141
+ return {start:this.formatDate(this.value.start), end:this.formatDate(this.value.end)}
142
+ },
143
+ set: function(modifiedValue) {
144
+
145
+
146
+
147
+
148
+ if(!modifiedValue.start){
149
+ modifiedValue.start = false;
150
+ modifiedValue.end = false;
151
+ this.$emit('input', modifiedValue);
152
+ return;
153
+ }
154
+
155
+ modifiedValue.start = new Date(new Date(modifiedValue.start+' 00:00:00').toISOString());
156
+ if(modifiedValue.end)
157
+ modifiedValue.end = new Date(new Date(modifiedValue.end+' 00:00:00').toISOString());
158
+ else
159
+ modifiedValue.end = modifiedValue.start;
160
+
161
+ this.$emit('input', modifiedValue);
162
+ }
163
+ }
164
+
165
+ },
166
+
167
+
168
+ methods: {
169
+
170
+
171
+ mirrorSingleDates(){
172
+
173
+ if(this.displayValue.start !== '' && this.displayValue.end === ''){
174
+ this.displayValue.end = this.displayValue.start;
175
+ }
176
+ if(this.displayValue.end !== '' && this.displayValue.start === ''){
177
+ this.displayValue.start = this.displayValue.end;
178
+ }
179
+ },
180
+
181
+
182
+ clearDate()
183
+ {
184
+ this.displayValue = {start:'',end:''};
185
+ },
186
+
187
+ toggleDatePickerState(state){
188
+ this.mirrorSingleDates();
189
+ this.$nextTick( () => {
190
+ if(typeof state === 'boolean')
191
+ this.datePickerOpen = state;
192
+ else this.datePickerOpen = !this.datePickerOpen;
193
+ });
194
+ },
195
+ }
196
+ }
197
+
198
+
199
+ </script>
200
+
201
+ <style lang="scss">
202
+
203
+
204
+
205
+ </style>
206
+
207
+
208
+
@@ -0,0 +1,74 @@
1
+ <template>
2
+
3
+ <label class="toggle-input-checkbox" >
4
+ <input type="checkbox" :name="name ? name : 'ToggleInputCheckbox' " v-model="inputVal" :disabled="disabled"/>
5
+ <div>
6
+ <span class="toggle-input-checkbox-check-element "></span>
7
+ <span :class="[ 'toggle-input-checkbox-label', label_style ]" >{{label}}</span>
8
+ </div>
9
+ </label>
10
+
11
+ </template>
12
+
13
+ <script>
14
+
15
+ import { mixins } from '../mixins/mixins'
16
+
17
+ export default {
18
+ mixins:[mixins],
19
+ props: {
20
+ value: {
21
+ type: Boolean
22
+ },
23
+ disabled: {
24
+ type: Boolean
25
+ },
26
+ name: {
27
+ type: String,
28
+ default: "ToggleInputText"
29
+ },
30
+ label_style: {
31
+ type: String,
32
+ default: ""
33
+ },
34
+ label: {
35
+ type: String,
36
+ required: false
37
+ },
38
+ isInvalid: {
39
+ type: Boolean,
40
+ default: false
41
+ },
42
+ errorMessage: {
43
+ type: String,
44
+ required: false
45
+ }
46
+ },
47
+
48
+ created : function(){
49
+ },
50
+ computed: {
51
+ inputVal: {
52
+ get: function (){
53
+ return this.value;
54
+ },
55
+
56
+ set: function (value){
57
+ this.$emit('input', value);
58
+ }
59
+ }
60
+ },
61
+ methods: {
62
+
63
+ onFocus() {
64
+ this.$emit('onFocus');
65
+ },
66
+
67
+ onBlur(){
68
+ this.$emit('onBlur');
69
+ },
70
+ }
71
+ }
72
+
73
+
74
+ </script>
@@ -0,0 +1,65 @@
1
+ <template>
2
+
3
+
4
+
5
+ <div class="toggle-input-container margin-bottom-0" :class="{'toggle-input-is-invalid':isInvalid }" v-on:click="focusClosestInput">
6
+
7
+
8
+ <label
9
+ v-if="label"
10
+ class="toggle-input-label"
11
+ > {{ label }}
12
+ </label>
13
+
14
+ <div class="toggle-input-radio-container">
15
+ <slot></slot>
16
+ </div>
17
+
18
+ <label
19
+ class="toggle-input-label-error"
20
+ v-if="isInvalid"
21
+ >
22
+ {{ errorMessage }}
23
+ </label>
24
+
25
+ </div>
26
+ </template>
27
+
28
+ <script>
29
+
30
+ import { mixins } from '../mixins/mixins'
31
+
32
+ export default {
33
+ mixins:[mixins],
34
+ props: {
35
+ label: {
36
+ type: String,
37
+ required: false
38
+ },
39
+ isInvalid: {
40
+ type: Boolean,
41
+ default: false
42
+ },
43
+ errorMessage: {
44
+ type: String,
45
+ required: false
46
+ }
47
+ },
48
+
49
+ created : function(){
50
+ },
51
+ computed: {
52
+
53
+ },
54
+ methods: {
55
+ onFocus() {
56
+ this.$emit('onFocus');
57
+ },
58
+ onBlur(){
59
+ this.$emit('onBlur');
60
+ },
61
+ }
62
+ }
63
+
64
+
65
+ </script>