matestack-ui-core 2.0.0 → 3.0.0.rc2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (74) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +1 -1
  3. data/README.md +15 -478
  4. data/lib/matestack/ui/core/base.rb +24 -7
  5. data/lib/matestack/ui/core/context.rb +2 -2
  6. data/lib/matestack/ui/core/helper.rb +29 -29
  7. data/lib/matestack/ui/core/{app.rb → layout.rb} +6 -17
  8. data/lib/matestack/ui/core/page.rb +0 -50
  9. data/lib/matestack/ui/core/tag_helper.rb +17 -10
  10. data/lib/matestack/ui/core/version.rb +1 -1
  11. data/lib/matestack/ui/core.rb +2 -45
  12. data/lib/matestack/ui/layout.rb +1 -0
  13. data/lib/matestack/ui/page.rb +1 -1
  14. metadata +7 -68
  15. data/lib/matestack/ui/app.rb +0 -1
  16. data/lib/matestack/ui/core/vue_attributes.rb +0 -13
  17. data/lib/matestack/ui/vue_js/app/app.js +0 -40
  18. data/lib/matestack/ui/vue_js/app/location.js +0 -9
  19. data/lib/matestack/ui/vue_js/app/store.js +0 -103
  20. data/lib/matestack/ui/vue_js/components/action.js +0 -151
  21. data/lib/matestack/ui/vue_js/components/action.rb +0 -46
  22. data/lib/matestack/ui/vue_js/components/async.js +0 -110
  23. data/lib/matestack/ui/vue_js/components/async.rb +0 -84
  24. data/lib/matestack/ui/vue_js/components/cable.js +0 -100
  25. data/lib/matestack/ui/vue_js/components/cable.rb +0 -69
  26. data/lib/matestack/ui/vue_js/components/collection/content.js +0 -97
  27. data/lib/matestack/ui/vue_js/components/collection/content.rb +0 -32
  28. data/lib/matestack/ui/vue_js/components/collection/filter.js +0 -45
  29. data/lib/matestack/ui/vue_js/components/collection/filter.rb +0 -29
  30. data/lib/matestack/ui/vue_js/components/collection/filter_reset.rb +0 -19
  31. data/lib/matestack/ui/vue_js/components/collection/helper.rb +0 -128
  32. data/lib/matestack/ui/vue_js/components/collection/next.rb +0 -19
  33. data/lib/matestack/ui/vue_js/components/collection/order.js +0 -46
  34. data/lib/matestack/ui/vue_js/components/collection/order.rb +0 -28
  35. data/lib/matestack/ui/vue_js/components/collection/order_toggle.rb +0 -21
  36. data/lib/matestack/ui/vue_js/components/collection/order_toggle_indicator.rb +0 -30
  37. data/lib/matestack/ui/vue_js/components/collection/page.rb +0 -21
  38. data/lib/matestack/ui/vue_js/components/collection/previous.rb +0 -19
  39. data/lib/matestack/ui/vue_js/components/form/base.rb +0 -167
  40. data/lib/matestack/ui/vue_js/components/form/checkbox.js +0 -15
  41. data/lib/matestack/ui/vue_js/components/form/checkbox.rb +0 -105
  42. data/lib/matestack/ui/vue_js/components/form/checkbox_mixin.js +0 -83
  43. data/lib/matestack/ui/vue_js/components/form/context.rb +0 -15
  44. data/lib/matestack/ui/vue_js/components/form/form.js +0 -275
  45. data/lib/matestack/ui/vue_js/components/form/form.rb +0 -64
  46. data/lib/matestack/ui/vue_js/components/form/input.js +0 -15
  47. data/lib/matestack/ui/vue_js/components/form/input.rb +0 -37
  48. data/lib/matestack/ui/vue_js/components/form/input_mixin.js +0 -58
  49. data/lib/matestack/ui/vue_js/components/form/radio.js +0 -15
  50. data/lib/matestack/ui/vue_js/components/form/radio.rb +0 -76
  51. data/lib/matestack/ui/vue_js/components/form/radio_mixin.js +0 -65
  52. data/lib/matestack/ui/vue_js/components/form/select.js +0 -15
  53. data/lib/matestack/ui/vue_js/components/form/select.rb +0 -88
  54. data/lib/matestack/ui/vue_js/components/form/select_mixin.js +0 -61
  55. data/lib/matestack/ui/vue_js/components/form/textarea.js +0 -15
  56. data/lib/matestack/ui/vue_js/components/form/textarea.rb +0 -37
  57. data/lib/matestack/ui/vue_js/components/form/textarea_mixin.js +0 -44
  58. data/lib/matestack/ui/vue_js/components/isolated.js +0 -108
  59. data/lib/matestack/ui/vue_js/components/isolated.rb +0 -86
  60. data/lib/matestack/ui/vue_js/components/mixin.js +0 -22
  61. data/lib/matestack/ui/vue_js/components/onclick.js +0 -19
  62. data/lib/matestack/ui/vue_js/components/onclick.rb +0 -37
  63. data/lib/matestack/ui/vue_js/components/toggle.js +0 -71
  64. data/lib/matestack/ui/vue_js/components/toggle.rb +0 -38
  65. data/lib/matestack/ui/vue_js/components/transition.js +0 -42
  66. data/lib/matestack/ui/vue_js/components/transition.rb +0 -40
  67. data/lib/matestack/ui/vue_js/components.rb +0 -94
  68. data/lib/matestack/ui/vue_js/event_hub.js +0 -5
  69. data/lib/matestack/ui/vue_js/helpers/query_params_helper.js +0 -56
  70. data/lib/matestack/ui/vue_js/index.js +0 -52
  71. data/lib/matestack/ui/vue_js/initialize.rb +0 -5
  72. data/lib/matestack/ui/vue_js/page/content.js +0 -23
  73. data/lib/matestack/ui/vue_js/vue.rb +0 -63
  74. data/lib/matestack/ui/vue_js_component.rb +0 -2
@@ -1,105 +0,0 @@
1
- module Matestack
2
- module Ui
3
- module VueJs
4
- module Components
5
- module Form
6
- class Checkbox < Matestack::Ui::VueJs::Components::Form::Base
7
- vue_name 'matestack-ui-core-form-checkbox'
8
-
9
- def response
10
- div class: 'matestack-ui-core-form-checkbox' do
11
- render_options
12
- render_errors
13
- end
14
- end
15
-
16
- def render_options
17
- if checkbox_options
18
- render_checkbox_options
19
- else
20
- render_true_false_checkbox
21
- end
22
- end
23
-
24
- def component_id
25
- "checkbox-component-for-#{key}"
26
- end
27
-
28
- def vue_props
29
- {
30
- init_value: init_value,
31
- key: key,
32
- }
33
- end
34
-
35
- # checkbox rendering
36
-
37
- def render_checkbox_options
38
- checkbox_options.to_a.each do |item|
39
- input checkbox_attributes(item)
40
- label item_label(item), for: item_id(item)
41
- end
42
- end
43
-
44
- def checkbox_attributes(item)
45
- {
46
- id: item_id(item),
47
- type: :checkbox,
48
- name: item_label(item),
49
- value: item_value(item),
50
- ref: "select.multiple.#{key}",
51
- '@change': change_event,
52
- 'init-value': (init_value || []).to_json,
53
- 'v-bind:class': "{ '#{error_class}': #{error_key} }",
54
- 'value-type': value_type(item),
55
- "#{v_model_type(item)}": input_key,
56
- }.merge(self.options)
57
- end
58
-
59
- def render_true_false_checkbox
60
- input true_false_checkbox_attributes.merge(type: :hidden, id: nil, value: 0)
61
- input true_false_checkbox_attributes.merge(type: :checkbox, id: item_id(1))
62
- label input_label, for: item_id(1) if input_label
63
- end
64
-
65
- def true_false_checkbox_attributes
66
- attributes.merge({
67
- 'init-value': init_value_for_single_input,
68
- })
69
- end
70
-
71
- def init_value_for_single_input
72
- if init_value == true || init_value == 1
73
- return "true"
74
- end
75
- if init_value == false || init_value == 0
76
- return "false"
77
- end
78
- end
79
-
80
- # checkbox options
81
-
82
- def checkbox_options
83
- @checkbox_options ||= options.delete(:options)
84
- end
85
-
86
- # calculated attributes
87
-
88
- def item_value(item)
89
- item.is_a?(Array) ? item.last : item
90
- end
91
-
92
- def item_label(item)
93
- item.is_a?(Array) ? item.first : item
94
- end
95
-
96
- def item_id(item)
97
- "#{id}_#{item_value(item).to_s.gsub(" ", '_')}"
98
- end
99
-
100
- end
101
- end
102
- end
103
- end
104
- end
105
- end
@@ -1,83 +0,0 @@
1
- const formCheckboxMixin = {
2
- methods: {
3
- initialize: function(){
4
- const self = this
5
- let data = {};
6
-
7
- for (let key in self.$refs) {
8
- let initValue = self.$refs[key]["attributes"]["init-value"];
9
- let valueType = self.$refs[key]["attributes"]["value-type"];
10
-
11
- if (key.startsWith("select.")) {
12
- if (key.startsWith("select.multiple.")) {
13
- if (initValue) {
14
- data[key.replace("select.multiple.", "")] = JSON.parse(initValue["value"]);
15
- Object.assign(self.$parent.data, data);
16
- self.afterInitialize(JSON.parse(initValue["value"]))
17
- } else {
18
- data[key.replace("select.multiple.", "")] = [];
19
- Object.assign(self.$parent.data, data);
20
- self.afterInitialize([])
21
- }
22
- } else {
23
- if (initValue) {
24
- if (valueType && valueType["value"] == "Integer") {
25
- data[key.replace("select.", "")] = parseInt(initValue["value"]);
26
- Object.assign(self.$parent.data, data);
27
- self.afterInitialize(parseInt(initValue["value"]))
28
- } else {
29
-
30
- data[key.replace("select.", "")] = initValue["value"];
31
- Object.assign(self.$parent.data, data);
32
- self.afterInitialize(initValue["value"])
33
- }
34
- } else {
35
- data[key.replace("select.", "")] = null;
36
- Object.assign(self.$parent.data, data);
37
- self.afterInitialize(null)
38
- }
39
- }
40
- } else {
41
- if (initValue) {
42
- if(initValue["value"] === "true"){
43
- data[key.replace("input.", "")] = true;
44
- Object.assign(self.$parent.data, data);
45
- self.afterInitialize(true)
46
- }
47
- if(initValue["value"] === "false"){
48
- data[key.replace("input.", "")] = false;
49
- Object.assign(self.$parent.data, data);
50
- self.afterInitialize(false)
51
- }
52
- } else {
53
- data[key.replace("input.", "")] = null;
54
- Object.assign(self.$parent.data, data);
55
- self.afterInitialize(null)
56
- }
57
- }
58
- }
59
-
60
- //without the timeout it's somehow not working
61
- setTimeout(function () {
62
- self.$parent.$forceUpdate();
63
- self.$forceUpdate();
64
- }, 1);
65
- },
66
- inputChanged: function (key) {
67
- this.$parent.resetErrors(key);
68
- this.$parent.$forceUpdate();
69
- this.$forceUpdate();
70
- },
71
- afterInitialize: function(value){
72
- // can be used in the main component for further initialization steps
73
- },
74
- setValue: function (value){
75
- this.$parent.data[this.props["key"]] = value
76
- this.$parent.$forceUpdate();
77
- this.$forceUpdate();
78
- }
79
- }
80
-
81
- }
82
-
83
- export default formCheckboxMixin
@@ -1,15 +0,0 @@
1
- module Matestack
2
- module Ui
3
- module VueJs
4
- module Components
5
- module Form
6
- class Context < ActiveSupport::CurrentAttributes
7
-
8
- attribute :form_context
9
-
10
- end
11
- end
12
- end
13
- end
14
- end
15
- end
@@ -1,275 +0,0 @@
1
- import Vue from "vue/dist/vue.esm";
2
- import Vuex from "vuex";
3
- import axios from "axios";
4
-
5
- import matestackEventHub from "../../event_hub";
6
- import componentMixin from "../mixin";
7
-
8
- const componentDef = {
9
- mixins: [componentMixin],
10
- data: function () {
11
- return {
12
- data: {},
13
- errors: {},
14
- loading: false
15
- };
16
- },
17
- methods: {
18
- initDataKey: function (key, initValue) {
19
- this.data[key] = initValue;
20
- },
21
- updateFormValue: function (key, value) {
22
- this.data[key] = value;
23
- },
24
- hasErrors: function(){
25
- //https://stackoverflow.com/a/27709663/13886137
26
- for (var key in this.errors) {
27
- if (this.errors[key] !== null && this.errors[key] != ""){
28
- return true;
29
- }
30
- }
31
- return false;
32
- },
33
- resetErrors: function (key) {
34
- if (this.errors[key]) {
35
- this.errors[key] = null;
36
- }
37
- },
38
- setProps: function (flat, newVal) {
39
- for (var i in flat) {
40
- if (flat[i] === null){
41
- flat[i] = newVal;
42
- } else if (flat[i] instanceof File){
43
- flat[i] = newVal;
44
- this.$refs["input-component-for-"+i].value = newVal
45
- } else if (flat[i] instanceof Array) {
46
- if(flat[i][0] instanceof File){
47
- flat[i] = newVal
48
- this.$refs["input-component-for-"+i].value = newVal
49
- }
50
- } else if (typeof flat[i] === "object" && !(flat[i] instanceof Array)) {
51
- setProps(flat[i], newVal);
52
- } else {
53
- flat[i] = newVal;
54
- }
55
- }
56
- },
57
- initValues: function () {
58
- let self = this;
59
- let data = {};
60
- for (let key in self.$refs) {
61
- if (key.startsWith("input-component")) {
62
- self.$refs[key].initialize()
63
- }
64
- if (key.startsWith("textarea-component")) {
65
- self.$refs[key].initialize()
66
- }
67
- if (key.startsWith("select-component")) {
68
- self.$refs[key].initialize()
69
- }
70
- if (key.startsWith("radio-component")) {
71
- self.$refs[key].initialize()
72
- }
73
- if (key.startsWith("checkbox-component")) {
74
- self.$refs[key].initialize()
75
- }
76
- }
77
- },
78
- shouldResetFormOnSuccessfulSubmit() {
79
- const self = this;
80
- if (self.props["success"] != undefined && self.props["success"]["reset"] != undefined) {
81
- return self.props["success"]["reset"];
82
- } else {
83
- return self.shouldResetFormOnSuccessfulSubmitByDefault();
84
- }
85
- },
86
- shouldResetFormOnSuccessfulSubmitByDefault() {
87
- const self = this;
88
- if (self.props["method"] == "put") {
89
- return false;
90
- } else {
91
- return true;
92
- }
93
- },
94
- perform: function(){
95
- const self = this
96
- var form = self.$el.tagName == 'FORM' ? self.$el : self.$el.querySelector('form');
97
- if(form.checkValidity()){
98
- self.loading = true;
99
- if (self.props["emit"] != undefined) {
100
- matestackEventHub.$emit(self.props["emit"]);
101
- }
102
- if (self.props["delay"] != undefined) {
103
- setTimeout(function () {
104
- self.sendRequest()
105
- }, parseInt(self.props["delay"]));
106
- } else {
107
- self.sendRequest()
108
- }
109
- } else {
110
- matestackEventHub.$emit('static_form_errors');
111
- }
112
- },
113
- sendRequest: function(){
114
- const self = this;
115
- let payload = {};
116
- payload[self.props["for"]] = self.data;
117
- let axios_config = {};
118
- if (self.props["multipart"] == true ) {
119
- let form_data = new FormData();
120
- for (let key in self.data) {
121
- if (key.endsWith("[]")) {
122
- for (let i in self.data[key]) {
123
- let file = self.data[key][i];
124
- form_data.append(self.props["for"] + "[" + key.slice(0, -2) + "][]", file);
125
- }
126
- } else {
127
- if (self.data[key] != null){
128
- form_data.append(self.props["for"] + "[" + key + "]", self.data[key]);
129
- }
130
- }
131
- }
132
- axios_config = {
133
- method: self.props["method"],
134
- url: self.props["submit_path"],
135
- data: form_data,
136
- headers: {
137
- "X-CSRF-Token": document.getElementsByName("csrf-token")[0].getAttribute("content"),
138
- "Content-Type": "multipart/form-data",
139
- },
140
- };
141
- } else {
142
- axios_config = {
143
- method: self.props["method"],
144
- url: self.props["submit_path"],
145
- data: payload,
146
- headers: {
147
- "X-CSRF-Token": document.getElementsByName("csrf-token")[0].getAttribute("content"),
148
- "Content-Type": "application/json",
149
- },
150
- };
151
- }
152
- axios(axios_config)
153
- .then(function (response) {
154
- self.loading = false;
155
- if (self.props["success"] != undefined && self.props["success"]["emit"] != undefined) {
156
- matestackEventHub.$emit(self.props["success"]["emit"], response.data);
157
- }
158
- // transition handling
159
- if (self.props["success"] != undefined
160
- && self.props["success"]["transition"] != undefined
161
- && (
162
- self.props["success"]["transition"]["follow_response"] == undefined
163
- ||
164
- self.props["success"]["transition"]["follow_response"] === false
165
- )
166
- && self.$store != undefined
167
- ) {
168
- let path = self.props["success"]["transition"]["path"]
169
- self.$store.dispatch('navigateTo', {url: path, backwards: false})
170
- return;
171
- }
172
- if (self.props["success"] != undefined
173
- && self.props["success"]["transition"] != undefined
174
- && self.props["success"]["transition"]["follow_response"] === true
175
- && self.$store != undefined
176
- ) {
177
- let path = response.data["transition_to"] || response.request.responseURL
178
- self.$store.dispatch('navigateTo', {url: path, backwards: false})
179
- return;
180
- }
181
- // redirect handling
182
- if (self.props["success"] != undefined
183
- && self.props["success"]["redirect"] != undefined
184
- && (
185
- self.props["success"]["redirect"]["follow_response"] == undefined
186
- ||
187
- self.props["success"]["redirect"]["follow_response"] === false
188
- )
189
- && self.$store != undefined
190
- ) {
191
- let path = self.props["success"]["redirect"]["path"]
192
- window.location.href = path
193
- return;
194
- }
195
- if (self.props["success"] != undefined
196
- && self.props["success"]["redirect"] != undefined
197
- && self.props["success"]["redirect"]["follow_response"] === true
198
- && self.$store != undefined
199
- ) {
200
- let path = response.data["redirect_to"] || response.request.responseURL
201
- window.location.href = path
202
- return;
203
- }
204
-
205
- if (self.shouldResetFormOnSuccessfulSubmit())
206
- {
207
- self.setProps(self.data, null);
208
- self.initValues();
209
- }
210
- })
211
- .catch(function (error) {
212
- self.loading = false;
213
- if (error.response && error.response.data && error.response.data.errors) {
214
- self.errors = error.response.data.errors;
215
- }
216
- if (self.props["failure"] != undefined && self.props["failure"]["emit"] != undefined) {
217
- matestackEventHub.$emit(self.props["failure"]["emit"], error.response.data);
218
- }
219
- // transition handling
220
- if (self.props["failure"] != undefined
221
- && self.props["failure"]["transition"] != undefined
222
- && (
223
- self.props["failure"]["transition"]["follow_response"] == undefined
224
- ||
225
- self.props["failure"]["transition"]["follow_response"] === false
226
- )
227
- && self.$store != undefined
228
- ) {
229
- let path = self.props["failure"]["transition"]["path"]
230
- self.$store.dispatch('navigateTo', {url: path, backwards: false})
231
- return;
232
- }
233
- if (self.props["failure"] != undefined
234
- && self.props["failure"]["transition"] != undefined
235
- && self.props["failure"]["transition"]["follow_response"] === true
236
- && self.$store != undefined
237
- ) {
238
- let path = error.response.data["transition_to"] || response.request.responseURL
239
- self.$store.dispatch('navigateTo', {url: path, backwards: false})
240
- return;
241
- }
242
- // redirect handling
243
- if (self.props["failure"] != undefined
244
- && self.props["failure"]["redirect"] != undefined
245
- && (
246
- self.props["failure"]["redirect"]["follow_response"] == undefined
247
- ||
248
- self.props["failure"]["redirect"]["follow_response"] === false
249
- )
250
- && self.$store != undefined
251
- ) {
252
- let path = self.props["failure"]["redirect"]["path"]
253
- window.location.href = path
254
- return;
255
- }
256
- if (self.props["failure"] != undefined
257
- && self.props["failure"]["redirect"] != undefined
258
- && self.props["failure"]["redirect"]["follow_response"] === true
259
- && self.$store != undefined
260
- ) {
261
- let path = error.response.data["redirect_to"] || response.request.responseURL
262
- window.location.href = path
263
- return;
264
- }
265
- });
266
- },
267
- },
268
- mounted: function () {
269
- this.initValues();
270
- },
271
- };
272
-
273
- let component = Vue.component("matestack-ui-core-form", componentDef);
274
-
275
- export default componentDef;
@@ -1,64 +0,0 @@
1
- module Matestack
2
- module Ui
3
- module VueJs
4
- module Components
5
- module Form
6
- class Form < Matestack::Ui::VueJs::Vue
7
- vue_name 'matestack-ui-core-form'
8
-
9
- optional :for, :path, :success, :failure, :multipart, :emit, :delay, :errors
10
-
11
- # setup form context to allow child components like inputs to access the form configuration
12
- def initialize(html_tag = nil, text = nil, options = {}, &block)
13
- previous_form_context = Matestack::Ui::VueJs::Components::Form::Context.form_context
14
- Matestack::Ui::VueJs::Components::Form::Context.form_context = self
15
- super(html_tag, text, options, &block)
16
- Matestack::Ui::VueJs::Components::Form::Context.form_context = previous_form_context
17
- end
18
-
19
- def response
20
- form attributes do
21
- yield
22
- end
23
- end
24
-
25
- def attributes
26
- {
27
- class: 'matestack-form',
28
- 'v-bind:class': "{ 'has-errors': hasErrors(), loading: loading }",
29
- '@submit.prevent': 'perform',
30
- }
31
- end
32
-
33
- def vue_props
34
- {
35
- for: for_attribute,
36
- submit_path: ctx.path,
37
- method: form_method,
38
- success: ctx.success,
39
- failure: ctx.failure,
40
- multipart: !!ctx.multipart,
41
- emit: ctx.emit,
42
- delay: ctx.delay,
43
- }
44
- end
45
-
46
- def for_attribute
47
- return for_option.model_name.singular if for_option.respond_to?(:model_name)
48
- for_option
49
- end
50
-
51
- def for_option
52
- @for_option ||= ctx.for
53
- end
54
-
55
- def form_method
56
- @form_method ||= options.delete(:method)
57
- end
58
-
59
- end
60
- end
61
- end
62
- end
63
- end
64
- end
@@ -1,15 +0,0 @@
1
- import Vue from "vue/dist/vue.esm";
2
-
3
- import formInputMixin from "./input_mixin";
4
- import componentMixin from "../mixin";
5
-
6
- const componentDef = {
7
- mixins: [componentMixin, formInputMixin],
8
- data() {
9
- return {};
10
- }
11
- }
12
-
13
- let component = Vue.component("matestack-ui-core-form-input", componentDef);
14
-
15
- export default componentDef;
@@ -1,37 +0,0 @@
1
- module Matestack
2
- module Ui
3
- module VueJs
4
- module Components
5
- module Form
6
- class Input < Matestack::Ui::VueJs::Components::Form::Base
7
- vue_name 'matestack-ui-core-form-input'
8
-
9
- def response
10
- div class: 'matestack-ui-core-form-input' do
11
- label input_label, for: id if input_label
12
- input input_attributes
13
- render_errors
14
- end
15
- end
16
-
17
- def component_id
18
- "input-component-for-#{attribute_key}"
19
- end
20
-
21
- def input_attributes
22
- attributes
23
- end
24
-
25
- def vue_props
26
- {
27
- init_value: init_value,
28
- key: key,
29
- }
30
- end
31
-
32
- end
33
- end
34
- end
35
- end
36
- end
37
- end
@@ -1,58 +0,0 @@
1
- const formInputMixin = {
2
- methods: {
3
- initialize: function(){
4
- const self = this
5
- let data = {};
6
-
7
- for (let key in this.$refs) {
8
- let initValue = this.$refs[key]["attributes"]["init-value"];
9
-
10
- if (initValue) {
11
- data[key.replace("input.", "")] = initValue["value"];
12
- Object.assign(self.$parent.data, data);
13
- self.afterInitialize(initValue["value"])
14
- } else {
15
- data[key.replace("input.", "")] = null;
16
- Object.assign(self.$parent.data, data);
17
- self.afterInitialize(null)
18
- }
19
- }
20
-
21
- //without the timeout it's somehow not working
22
- setTimeout(function () {
23
- self.$parent.$forceUpdate();
24
- self.$forceUpdate();
25
- }, 1);
26
- },
27
- filesAdded: function (key) {
28
- const dataTransfer = event.dataTransfer || event.target;
29
- const files = dataTransfer.files;
30
- if (event.target.attributes.multiple) {
31
- this.$parent.data[key] = [];
32
- for (let index in files) {
33
- if (files[index] instanceof File) {
34
- this.$parent.data[key].push(files[index]);
35
- }
36
- }
37
- } else {
38
- this.$parent.data[key] = files[0];
39
- }
40
- },
41
- inputChanged: function (key) {
42
- this.$parent.resetErrors(key);
43
- this.$parent.$forceUpdate();
44
- this.$forceUpdate();
45
- },
46
- afterInitialize: function(value){
47
- // can be used in the main component for further initialization steps
48
- },
49
- setValue: function (value){
50
- this.$parent.data[this.props["key"]] = value
51
- this.$parent.$forceUpdate();
52
- this.$forceUpdate();
53
- }
54
- }
55
-
56
- }
57
-
58
- export default formInputMixin
@@ -1,15 +0,0 @@
1
- import Vue from "vue/dist/vue.esm";
2
-
3
- import formRadioMixin from "./radio_mixin";
4
- import componentMixin from "../mixin";
5
-
6
- const componentDef = {
7
- mixins: [componentMixin, formRadioMixin],
8
- data() {
9
- return {};
10
- }
11
- }
12
-
13
- let component = Vue.component("matestack-ui-core-form-radio", componentDef);
14
-
15
- export default componentDef;