@ditojs/admin 0.270.0 → 0.273.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ditojs/admin",
3
- "version": "0.270.0",
3
+ "version": "0.273.0",
4
4
  "description": "Dito.js Admin is a schema based admin interface for Dito.js Server, featuring auto-generated views and forms and built with Vue.js",
5
5
  "main": "dist/dito-admin.umd.min.js",
6
6
  "repository": "https://github.com/ditojs/dito/tree/master/packages/admin",
@@ -33,15 +33,15 @@
33
33
  }
34
34
  },
35
35
  "dependencies": {
36
- "@babel/runtime": "^7.15.4",
37
- "@ditojs/ui": "^0.270.0",
38
- "@ditojs/utils": "^0.270.0",
39
- "axios": "^0.22.0",
36
+ "@babel/runtime": "^7.17.2",
37
+ "@ditojs/ui": "^0.273.0",
38
+ "@ditojs/utils": "^0.273.0",
39
+ "axios": "^0.26.0",
40
40
  "codeflask": "^1.4.1",
41
- "core-js": "^3.18.1",
42
- "filesize": "^8.0.3",
41
+ "core-js": "^3.21.1",
42
+ "filesize": "^8.0.7",
43
43
  "filesize-parser": "^1.5.0",
44
- "nanoid": "^3.1.28",
44
+ "nanoid": "^3.3.1",
45
45
  "postcss-inset": "^1.0.0",
46
46
  "tinycolor2": "^1.4.2",
47
47
  "tiptap": "^1.32.2",
@@ -53,29 +53,28 @@
53
53
  "vue-js-modal": "^1.3.35",
54
54
  "vue-multiselect": "^2.1.6",
55
55
  "vue-notification": "^1.3.20",
56
- "vue-router": "^3.5.2",
56
+ "vue-router": "^3.5.3",
57
57
  "vue-spinner": "^1.0.4",
58
58
  "vue-template-compiler": "^2.6.14",
59
59
  "vue-upload-component": "^2.8.22",
60
60
  "vuedraggable": "^2.24.3"
61
61
  },
62
62
  "devDependencies": {
63
- "@babel/core": "^7.15.5",
64
- "@babel/preset-env": "^7.15.6",
65
- "@ditojs/babel-preset": "^0.270.0",
66
- "@ditojs/build": "^0.270.0",
63
+ "@babel/core": "^7.17.5",
64
+ "@babel/preset-env": "^7.16.11",
65
+ "@ditojs/babel-preset": "^0.273.0",
66
+ "@ditojs/build": "^0.273.0",
67
67
  "@vue/cli-plugin-babel": "^4.5.13",
68
- "@vue/cli-service": "^4.5.13",
69
- "autoprefixer": "^9.8.7",
68
+ "@vue/cli-service": "^4.5.15",
69
+ "autoprefixer": "^9.8.8",
70
70
  "babel-loader": "^8.2.2",
71
- "fibers": "^5.0.0",
72
- "postcss": "^8.3.8",
71
+ "postcss": "^8.4.7",
73
72
  "postcss-loader": "^4.3.0",
74
73
  "pug": "^3.0.2",
75
74
  "pug-plain-loader": "^1.1.0",
76
75
  "sass": "1.32.13",
77
- "sass-loader": "^10.2.0",
76
+ "sass-loader": "^10.2.1",
78
77
  "webpack": "^4.46.0"
79
78
  },
80
- "gitHead": "99b1d3c89aa4a4aed19a0741d6a0683654a13196"
79
+ "gitHead": "ecdd9eee04947c3362c449623b8a685b3e02e0ab"
81
80
  }
@@ -16,6 +16,15 @@
16
16
  :is="isNestedRoute ? 'div' : 'form'"
17
17
  @submit.prevent
18
18
  )
19
+ // Prevent implicit submission of the form, for example when typing enter
20
+ // in an input field.
21
+ // https://stackoverflow.com/a/51507806
22
+ button(
23
+ v-show="false"
24
+ type="submit"
25
+ disabled="true"
26
+ aria-hidden="true"
27
+ )
19
28
  dito-schema(
20
29
  :schema="schema"
21
30
  :dataPath="dataPath"
@@ -158,6 +158,10 @@ export default DitoComponent.component('dito-root', {
158
158
 
159
159
  async login() {
160
160
  this.allowLogin = true
161
+ const {
162
+ additionalComponents,
163
+ redirectAfterLogin
164
+ } = this.options.login || {}
161
165
  const loginData = await this.showDialog({
162
166
  components: {
163
167
  username: {
@@ -166,7 +170,8 @@ export default DitoComponent.component('dito-root', {
166
170
  },
167
171
  password: {
168
172
  type: 'password'
169
- }
173
+ },
174
+ ...additionalComponents
170
175
  },
171
176
  buttons: {
172
177
  cancel: {},
@@ -180,8 +185,12 @@ export default DitoComponent.component('dito-root', {
180
185
  data: loginData,
181
186
  internal: true
182
187
  })
183
- this.setUser(response.data.user)
184
- await this.resolveViews()
188
+ if (redirectAfterLogin) {
189
+ location.replace(redirectAfterLogin)
190
+ } else {
191
+ this.setUser(response.data.user)
192
+ await this.resolveViews()
193
+ }
185
194
  } catch (err) {
186
195
  const error = err.response?.data?.error
187
196
  this.notify({
@@ -3,6 +3,7 @@
3
3
  tr
4
4
  th(
5
5
  v-for="(column, index) in columns"
6
+ v-if="shouldRender(column)"
6
7
  :class="getColumnClass(column)"
7
8
  )
8
9
  router-link(
@@ -264,9 +264,9 @@ export default {
264
264
  },
265
265
 
266
266
  getPayloadData(button, method) {
267
- // Convention: only post and patch requests pass the data as payload.
267
+ // Convention: only post, put and patch requests pass the data as payload.
268
268
  return (
269
- ['post', 'patch'].includes(method) && (
269
+ ['post', 'put', 'patch'].includes(method) && (
270
270
  // TODO: Use `handleDataSchema()` asynchronously here instead, to
271
271
  // offer the same amount of possibilities for data loading.
272
272
  button.getSchemaValue(['resource', 'data']) ||
@@ -103,6 +103,7 @@ export default TypeComponent.register('color', {
103
103
  } else {
104
104
  this.value = tinycolor(value).toString(format)
105
105
  }
106
+ this.onChange()
106
107
  }
107
108
  },
108
109
 
@@ -51,6 +51,7 @@
51
51
  template(v-if="columns")
52
52
  dito-table-cell(
53
53
  v-for="column in columns"
54
+ v-if="shouldRender(column)"
54
55
  :key="column.name"
55
56
  :class="getCellClass(column)"
56
57
  :cell="column"
@@ -31,6 +31,7 @@
31
31
  @search-change="onSearchChange"
32
32
  )
33
33
  button.dito-button-clear.dito-button-overlay(
34
+ type="button"
34
35
  v-if="showClearButton"
35
36
  @click="clear"
36
37
  :disabled="disabled"
@@ -283,6 +283,7 @@ export default TypeComponent.register('upload', {
283
283
  if (newFile && oldFile) {
284
284
  const { success, error } = newFile
285
285
  if (success) {
286
+ this.onChange()
286
287
  const file = newFile.response[0]
287
288
  if (file) {
288
289
  file.upload = newFile