frappe-ui 0.1.249 → 0.1.251
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/frappe/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
// components dependent on frappe backend
|
|
2
2
|
export * from './Link'
|
|
3
|
+
export { default as Filter } from './Filter/Filter.vue'
|
|
3
4
|
|
|
4
5
|
// help components
|
|
5
6
|
export { default as HelpModal } from './Help/HelpModal.vue'
|
|
@@ -26,4 +27,5 @@ export { useOnboarding } from './Onboarding/onboarding.js'
|
|
|
26
27
|
export { showHelpModal, minimize } from './Help/help.js'
|
|
27
28
|
export { showHelpCenter } from './HelpCenter/helpCenter.js'
|
|
28
29
|
|
|
29
|
-
|
|
30
|
+
// plugins
|
|
31
|
+
export { default as telemetryPlugin } from './telemetry.ts'
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { call } from 'frappe-ui'
|
|
2
|
+
import type { App } from 'vue'
|
|
3
|
+
// @ts-expect-error
|
|
4
|
+
import { pulse_provider } from '../../../frappe/frappe/public/js/telemetry/pulse.js'
|
|
5
|
+
|
|
6
|
+
type TelemetryPluginOptions = {
|
|
7
|
+
app_name: string
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
declare global {
|
|
11
|
+
interface Window {
|
|
12
|
+
frappe: any
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
type TelemetryConfig = {
|
|
17
|
+
is_enabled: boolean
|
|
18
|
+
capture: (event_name: string, data?: any) => void
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export default {
|
|
22
|
+
install(app: App, options = {} as TelemetryPluginOptions): void {
|
|
23
|
+
initializeFrappeBoot()
|
|
24
|
+
enableTelemetry(app, options.app_name)
|
|
25
|
+
},
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
const silentCall = <T>(method: string): Promise<T> => {
|
|
29
|
+
// To prevent console errors/logs from being shown
|
|
30
|
+
const originalError = console.error
|
|
31
|
+
const originalLog = console.log
|
|
32
|
+
console.error = () => {}
|
|
33
|
+
console.log = () => {}
|
|
34
|
+
|
|
35
|
+
return call(method).finally(() => {
|
|
36
|
+
console.log = originalLog
|
|
37
|
+
console.error = originalError
|
|
38
|
+
})
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
const enableTelemetry = (app: App, app_name: string): void => {
|
|
42
|
+
silentCall<boolean>('frappe.utils.telemetry.pulse.client.is_enabled')
|
|
43
|
+
.then((is_enabled: boolean) => {
|
|
44
|
+
setupTelemetry(app, is_enabled, app_name)
|
|
45
|
+
})
|
|
46
|
+
.catch(() => {
|
|
47
|
+
console.warn('Failed to fetch telemetry settings. Disabling telemetry.')
|
|
48
|
+
setupTelemetry(app, false, app_name)
|
|
49
|
+
})
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
const setupTelemetry = (
|
|
53
|
+
app: App,
|
|
54
|
+
is_enabled: boolean,
|
|
55
|
+
app_name: string,
|
|
56
|
+
): void => {
|
|
57
|
+
window.frappe.boot.enable_telemetry = is_enabled
|
|
58
|
+
window.frappe.boot.telemetry_provider = is_enabled ? ['pulse'] : []
|
|
59
|
+
|
|
60
|
+
if (is_enabled) {
|
|
61
|
+
setupPulseProvider(app_name)
|
|
62
|
+
app.config.globalProperties.$telemetry = {
|
|
63
|
+
is_enabled: pulse_provider.is_enabled,
|
|
64
|
+
capture: pulse_provider.capture,
|
|
65
|
+
} as TelemetryConfig
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
const setupPulseProvider = (app_name: string): void => {
|
|
70
|
+
const originalCapture = pulse_provider.capture
|
|
71
|
+
pulse_provider.capture = (event_name: string, data: any = {}) =>
|
|
72
|
+
originalCapture(event_name, app_name, data)
|
|
73
|
+
pulse_provider.init()
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
const initializeFrappeBoot = (): void => {
|
|
77
|
+
window.frappe ??= {}
|
|
78
|
+
window.frappe.boot = {
|
|
79
|
+
...window.frappe.boot,
|
|
80
|
+
}
|
|
81
|
+
}
|
package/package.json
CHANGED
|
@@ -299,11 +299,13 @@ function close() {
|
|
|
299
299
|
|
|
300
300
|
// Unified click handling for all dropdown items
|
|
301
301
|
const handleItemClick = (item: DropdownOption, event: PointerEvent) => {
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
item.onClick
|
|
306
|
-
|
|
302
|
+
setTimeout(() => {
|
|
303
|
+
if (item.route) {
|
|
304
|
+
router.push(item.route)
|
|
305
|
+
} else if (item.onClick) {
|
|
306
|
+
item.onClick(event)
|
|
307
|
+
}
|
|
308
|
+
}, 75)
|
|
307
309
|
}
|
|
308
310
|
|
|
309
311
|
const normalizeDropdownItem = (option: DropdownOption) => {
|