frappe-ui 0.0.38 → 0.0.39

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": "frappe-ui",
3
- "version": "0.0.38",
3
+ "version": "0.0.39",
4
4
  "description": "A set of components and utilities for rapid UI development",
5
5
  "main": "./src/index.js",
6
6
  "scripts": {
@@ -30,7 +30,7 @@
30
30
  "autoprefixer": "^10.4.2",
31
31
  "feather-icons": "^4.28.0",
32
32
  "postcss": "^8.4.5",
33
- "socket.io-client": "^2.4.0",
33
+ "socket.io-client": "^4.5.1",
34
34
  "tailwindcss": "^3.0.12"
35
35
  }
36
36
  }
@@ -17,11 +17,11 @@
17
17
  >
18
18
  <MenuItems
19
19
  class="absolute z-10 mt-2 bg-white divide-y divide-gray-100 rounded-md shadow-lg min-w-40 ring-1 ring-black ring-opacity-5 focus:outline-none"
20
- :class="
21
- placement === 'left'
22
- ? 'left-0 origin-top-left'
23
- : 'right-0 origin-top-right'
24
- "
20
+ :class="{
21
+ 'left-0 origin-top-left': placement == 'left',
22
+ 'right-0 origin-top-right': placement == 'right',
23
+ 'inset-x-0 origin-top': placement == 'center',
24
+ }"
25
25
  >
26
26
  <div v-for="group in groups" :key="group.key" class="px-1 py-1">
27
27
  <div
@@ -4,6 +4,7 @@ import { reactive, watch } from 'vue'
4
4
  let cached = {}
5
5
  let documentCache = reactive({})
6
6
  let listCache = reactive({})
7
+ let listResources = {}
7
8
 
8
9
  export function createResource(options, vm, getResource) {
9
10
  let cacheKey = null
@@ -181,6 +182,8 @@ export function createDocumentResource(options, vm) {
181
182
  beforeSubmit(params) {
182
183
  out.previousDoc = JSON.stringify(out.doc)
183
184
  Object.assign(out.doc, params.fieldname || {})
185
+ // update data in list resources
186
+ updateRowInListResource(out.doctype, out.doc)
184
187
  },
185
188
  onSuccess(data) {
186
189
  out.doc = transform(data)
@@ -189,6 +192,8 @@ export function createDocumentResource(options, vm) {
189
192
  onError(error) {
190
193
  out.doc = JSON.parse(out.previousDoc)
191
194
  options.setValue?.onError?.call(vm, error)
195
+ // revert data in list resource
196
+ revertRowInListResource(out.doctype, out.doc)
192
197
  },
193
198
  }
194
199
 
@@ -426,6 +431,7 @@ export function createListResource(options, vm, getResource) {
426
431
  update,
427
432
  reload,
428
433
  setData,
434
+ transform,
429
435
  })
430
436
 
431
437
  function update(updatedOptions) {
@@ -467,9 +473,50 @@ export function createListResource(options, vm, getResource) {
467
473
  listCache[cacheKey] = out
468
474
  }
469
475
 
476
+ listResources[out.doctype] = listResources[out.doctype] || []
477
+ listResources[out.doctype].push(out)
478
+
470
479
  return out
471
480
  }
472
481
 
482
+ function updateRowInListResource(doctype, doc) {
483
+ let resources = listResources[doctype]
484
+ for (let resource of resources) {
485
+ if (resource.originalData) {
486
+ for (let row of resource.originalData) {
487
+ if (row.name && row.name == doc.name) {
488
+ let previousRowData = JSON.stringify(row)
489
+ for (let key in row) {
490
+ if (key in doc) {
491
+ row[key] = doc[key]
492
+ }
493
+ }
494
+ row._previousData = previousRowData
495
+ }
496
+ }
497
+ resource.data = resource.transform(resource.originalData)
498
+ }
499
+ }
500
+ }
501
+
502
+ function revertRowInListResource(doctype, doc) {
503
+ let resources = listResources[doctype]
504
+ for (let resource of resources) {
505
+ if (resource.originalData) {
506
+ for (let row of resource.originalData) {
507
+ if (row.name && row.name == doc.name) {
508
+ let previousRowData = JSON.parse(row._previousData)
509
+ for (let key in row) {
510
+ row[key] = previousRowData[key]
511
+ }
512
+ delete row._previousData
513
+ }
514
+ }
515
+ resource.data = resource.transform(resource.originalData)
516
+ }
517
+ }
518
+ }
519
+
473
520
  function createResourceForOptions(options, vm, getResource) {
474
521
  if (options.type === 'document') {
475
522
  return createDocumentResource(options, vm, getResource)
@@ -1,9 +1,13 @@
1
- import io from 'socket.io-client/dist/socket.io.slim'
1
+ import { io } from 'socket.io-client'
2
2
 
3
- let host = window.location.hostname
4
- let port = window.location.port ? ':9000' : ''
5
- let protocol = port ? 'http' : 'https'
6
- let url = `${protocol}://${host}${port}`
7
- let socket = io(url)
3
+ function initSocket() {
4
+ let host = window.location.hostname
5
+ let port = window.location.port ? ':9000' : ''
6
+ let protocol = port ? 'http' : 'https'
7
+ let url = `${protocol}://${host}${port}`
8
+ return io(url)
9
+ }
10
+
11
+ let socket = initSocket()
8
12
 
9
13
  export default socket