@bryntum/grid-vue-3 7.1.2 → 7.1.3
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/README.md +12 -6
- package/lib/chunks/{D4TAsqNB.js → DjlFx3AM.js} +6 -2
- package/lib/chunks/DjlFx3AM.js.map +1 -0
- package/lib/chunks/{Cqm7WaTu.js → Dopu_9xj.js} +6 -2
- package/lib/chunks/Dopu_9xj.js.map +1 -0
- package/lib/chunks/{khm7PMFG.js → drZFLbSb.js} +6 -2
- package/lib/chunks/drZFLbSb.js.map +1 -0
- package/lib/components/BryntumGrid.js +1 -1
- package/lib/components/BryntumGridBase.js +1 -1
- package/lib/components/BryntumTreeGrid.js +1 -1
- package/lib/helper/WrapperHelper.js +42 -42
- package/lib/helper/WrapperHelper.js.map +1 -1
- package/lib/index.js +3 -3
- package/package.json +1 -1
- package/src/components/BryntumGrid.vue +46 -22
- package/src/components/BryntumGridBase.vue +46 -22
- package/src/components/BryntumTreeGrid.vue +46 -22
- package/src/helper/WrapperHelper.ts +5 -1
- package/lib/chunks/Cqm7WaTu.js.map +0 -1
- package/lib/chunks/D4TAsqNB.js.map +0 -1
- package/lib/chunks/khm7PMFG.js.map +0 -1
|
@@ -67,8 +67,8 @@ Solution: Use separate parameter for each "${e}" value to enable reactive update
|
|
|
67
67
|
widgetData: e,
|
|
68
68
|
emit: n,
|
|
69
69
|
element: i,
|
|
70
|
-
processCellContent:
|
|
71
|
-
processEventContent:
|
|
70
|
+
processCellContent: o,
|
|
71
|
+
processEventContent: s,
|
|
72
72
|
processWidgetContent: l,
|
|
73
73
|
hasFrameworkRenderer: r,
|
|
74
74
|
toRaw: d
|
|
@@ -77,14 +77,14 @@ Solution: Use separate parameter for each "${e}" value to enable reactive update
|
|
|
77
77
|
for (const a of Object.keys(u))
|
|
78
78
|
f[this.camelize(a)] = u[a];
|
|
79
79
|
const {
|
|
80
|
-
instanceClass:
|
|
80
|
+
instanceClass: m,
|
|
81
81
|
instanceName: v
|
|
82
|
-
} = e,
|
|
82
|
+
} = e, y = (a) => f[a] !== void 0, p = (e.configNames || []).filter(y), C = (e.propertyConfigNames || []).filter(y), h = (e.propertyNames || []).filter(y), $ = (e.featureNames || []).filter(y), E = e.eventNames.filter((a) => !y(a) && !f[`on${this.capitalize(a)}`]), g = {
|
|
83
83
|
vueComponent: t,
|
|
84
84
|
listeners: {},
|
|
85
85
|
features: {},
|
|
86
|
-
processCellContent:
|
|
87
|
-
processEventContent:
|
|
86
|
+
processCellContent: o,
|
|
87
|
+
processEventContent: s,
|
|
88
88
|
processWidgetContent: l,
|
|
89
89
|
hasFrameworkRenderer: r
|
|
90
90
|
};
|
|
@@ -93,8 +93,8 @@ Solution: Use separate parameter for each "${e}" value to enable reactive update
|
|
|
93
93
|
...C,
|
|
94
94
|
...$
|
|
95
95
|
].forEach((a) => {
|
|
96
|
-
c.applyPropValue(g, a, f[a], !0, d), ["features", "config"].includes(a) && c.devWarningConfigProp(
|
|
97
|
-
}), g.cls = (g.cls || "") + ` b-vue-${
|
|
96
|
+
c.applyPropValue(g, a, f[a], !0, d), ["features", "config"].includes(a) && c.devWarningConfigProp(m.$name, a);
|
|
97
|
+
}), g.cls = (g.cls || "") + ` b-vue-${m.$name.toLowerCase()}-container`, e.configNames = p, e.propertyNames = [
|
|
98
98
|
...p,
|
|
99
99
|
...h,
|
|
100
100
|
...C,
|
|
@@ -106,7 +106,7 @@ Solution: Use separate parameter for each "${e}" value to enable reactive update
|
|
|
106
106
|
"insertAfter",
|
|
107
107
|
"insertBefore"
|
|
108
108
|
].find((a) => g[a]);
|
|
109
|
-
return V ? c.devWarningContainer(
|
|
109
|
+
return V ? c.devWarningContainer(m.$name, V) : v === "Button" ? g.appendTo = i : g.adopt = i, g;
|
|
110
110
|
}
|
|
111
111
|
/**
|
|
112
112
|
* Setup store events relay
|
|
@@ -115,9 +115,9 @@ Solution: Use separate parameter for each "${e}" value to enable reactive update
|
|
|
115
115
|
*/
|
|
116
116
|
static relayStores(t, e) {
|
|
117
117
|
const { dataStores: n, projectStores: i } = t;
|
|
118
|
-
n && (Object.keys(n).forEach((
|
|
119
|
-
const
|
|
120
|
-
|
|
118
|
+
n && (Object.keys(n).forEach((o) => {
|
|
119
|
+
const s = i ? e.project[o] : e[o];
|
|
120
|
+
s && (s.syncDataOnLoad == null && !s.readUrl && !s.lazyLoad && (!s.crudManager || !s.crudManager.loadUrl) && (s.syncDataOnLoad = !0), e && e.relayStoreEvents && s.relayAll(e, n[o]));
|
|
121
121
|
}), delete t.dataStores);
|
|
122
122
|
}
|
|
123
123
|
/**
|
|
@@ -144,25 +144,25 @@ Solution: Use separate parameter for each "${e}" value to enable reactive update
|
|
|
144
144
|
* @param {Boolean} [isConfig] config setting mode
|
|
145
145
|
* @param {Function} [toRaw] Vue fn to unwrap reactive object
|
|
146
146
|
*/
|
|
147
|
-
static applyPropValue(t, e, n, i = !0,
|
|
147
|
+
static applyPropValue(t, e, n, i = !0, o) {
|
|
148
148
|
if (e === "project")
|
|
149
149
|
n && typeof n == "object" && (t[e] = n.instance ? n.instance.value || n.instance : n);
|
|
150
150
|
else if (e === "features" && typeof n == "object")
|
|
151
|
-
Object.keys(n).forEach((
|
|
151
|
+
Object.keys(n).forEach((s) => c.applyPropValue(t, `${s}Feature`, n[s], i, o));
|
|
152
152
|
else if (e === "config" && typeof n == "object")
|
|
153
|
-
Object.keys(n).forEach((
|
|
153
|
+
Object.keys(n).forEach((s) => c.applyPropValue(t, s, n[s], i, o));
|
|
154
154
|
else if (e === "columns" && !i)
|
|
155
155
|
t.columns.data = n;
|
|
156
156
|
else if (e.endsWith("Feature")) {
|
|
157
|
-
const
|
|
157
|
+
const s = t.features, l = e.replace("Feature", "");
|
|
158
158
|
if (i)
|
|
159
|
-
|
|
159
|
+
s[l] = n;
|
|
160
160
|
else {
|
|
161
|
-
const r =
|
|
161
|
+
const r = s[l];
|
|
162
162
|
r && r.setConfig(n);
|
|
163
163
|
}
|
|
164
164
|
} else
|
|
165
|
-
t[e] =
|
|
165
|
+
t[e] = o ? o(n) : n;
|
|
166
166
|
}
|
|
167
167
|
/**
|
|
168
168
|
* Creates watches for vue component properties
|
|
@@ -175,12 +175,12 @@ Solution: Use separate parameter for each "${e}" value to enable reactive update
|
|
|
175
175
|
static watchProps(t, e, n) {
|
|
176
176
|
const {
|
|
177
177
|
configNames: i,
|
|
178
|
-
propertyNames:
|
|
179
|
-
instanceClass:
|
|
178
|
+
propertyNames: o,
|
|
179
|
+
instanceClass: s
|
|
180
180
|
} = e;
|
|
181
|
-
|
|
181
|
+
o.forEach((l) => n(l, (r) => {
|
|
182
182
|
const d = Array.isArray(r) ? r.slice() : r;
|
|
183
|
-
c.applyPropValue(t, l, d, !1), i.includes(l) && c.devWarningUpdateProp(
|
|
183
|
+
c.applyPropValue(t, l, d, !1), i.includes(l) && c.devWarningUpdateProp(s.$name, l);
|
|
184
184
|
})), e.configNames = [], e.propertyNames = [];
|
|
185
185
|
}
|
|
186
186
|
/**
|
|
@@ -190,11 +190,11 @@ Solution: Use separate parameter for each "${e}" value to enable reactive update
|
|
|
190
190
|
* @param {Object} context.html Object containing the Vue component properties and event listeners
|
|
191
191
|
*/
|
|
192
192
|
static processWidgetContent({ widget: t, html: e }) {
|
|
193
|
-
const { is: n, bind: i = {}, vue:
|
|
194
|
-
if (
|
|
193
|
+
const { is: n, bind: i = {}, vue: o, on: s = {} } = e, { vueComponent: l } = this, { teleports: { value: r } } = l.provides, { contentElement: d, id: f } = t;
|
|
194
|
+
if (o) {
|
|
195
195
|
const u = `key-${f}`;
|
|
196
196
|
r.has(u) && r.delete(u), b(() => {
|
|
197
|
-
r.set(u, { bind: i, on:
|
|
197
|
+
r.set(u, { bind: i, on: s, key: u, is: n, to: d });
|
|
198
198
|
});
|
|
199
199
|
}
|
|
200
200
|
}
|
|
@@ -204,7 +204,7 @@ Solution: Use separate parameter for each "${e}" value to enable reactive update
|
|
|
204
204
|
* @param {String} html The HTML content to be processed
|
|
205
205
|
*/
|
|
206
206
|
static handleVueContent(t, e) {
|
|
207
|
-
const n = (
|
|
207
|
+
const n = (s) => !!s.vueComponent?.provides?.teleports, i = t.closest(n);
|
|
208
208
|
(i?.vueComponent ? i : N.query(n))?.processWidgetContent?.({ widget: t, html: e });
|
|
209
209
|
}
|
|
210
210
|
/**
|
|
@@ -224,25 +224,25 @@ Solution: Use separate parameter for each "${e}" value to enable reactive update
|
|
|
224
224
|
targetElement: n,
|
|
225
225
|
isRelease: i
|
|
226
226
|
}) {
|
|
227
|
-
let
|
|
227
|
+
let o = n, s = !1;
|
|
228
228
|
const l = this.isVertical ? e?.elementData?.renderData : e?.elementData;
|
|
229
229
|
if (c.isVueConfig(t) && t?.is) {
|
|
230
|
-
e?.dataset?.isMilestone ?
|
|
231
|
-
const r = this.isVertical ?
|
|
232
|
-
|
|
230
|
+
e?.dataset?.isMilestone ? o = n.parentElement.parentElement.parentElement : o = n.parentElement.parentElement;
|
|
231
|
+
const r = this.isVertical ? o.elementData.renderData : o.elementData, { assignmentRecord: d } = i ? l : r, { eventRecord: f } = r, { vueComponent: u } = this, { teleports: { value: m } } = u.provides, v = f.isRecurring || f.isOccurrence, y = `assignment-${d?.id}${v ? "-" + f.id : ""}`;
|
|
232
|
+
o.vueKey && m.get(o.vueKey)?.to === n && m.delete(o.vueKey);
|
|
233
233
|
const p = { ...t }, { is: C, on: h = {} } = p;
|
|
234
234
|
delete p.is, delete p.on, b(() => {
|
|
235
|
-
|
|
235
|
+
m.set(y, {
|
|
236
236
|
bind: p,
|
|
237
|
-
key:
|
|
237
|
+
key: y,
|
|
238
238
|
is: C,
|
|
239
239
|
on: h,
|
|
240
240
|
to: n,
|
|
241
241
|
generation: d.generation
|
|
242
242
|
});
|
|
243
|
-
}),
|
|
243
|
+
}), o.vueKey = y, s = !0;
|
|
244
244
|
}
|
|
245
|
-
return
|
|
245
|
+
return s;
|
|
246
246
|
}
|
|
247
247
|
/**
|
|
248
248
|
* Cell renderer method
|
|
@@ -252,21 +252,21 @@ Solution: Use separate parameter for each "${e}" value to enable reactive update
|
|
|
252
252
|
* @returns {Boolean}
|
|
253
253
|
*/
|
|
254
254
|
static processCellContent({ rendererData: t, rendererHtml: e }) {
|
|
255
|
-
const { record: n, column: i, cellElement:
|
|
255
|
+
const { record: n, column: i, cellElement: o, row: s } = t;
|
|
256
256
|
if (c.isVueConfig(i.data) && i.data?.renderer) {
|
|
257
|
-
const { vueComponent: l } = this, { teleports: { value: r } } = l.provides, d = `${i.id}-${n.id}`, f = i.tree ?
|
|
258
|
-
|
|
259
|
-
const u = { ...e }, { is:
|
|
257
|
+
const { vueComponent: l } = this, { teleports: { value: r } } = l.provides, d = `${i.id}-${n.id}`, f = i.tree ? o.querySelector(".b-tree-cell-value") : o;
|
|
258
|
+
o.vueKey && r.delete(o.vueKey);
|
|
259
|
+
const u = { ...e }, { is: m, on: v = {} } = u;
|
|
260
260
|
delete u.is, delete u.on, b(() => {
|
|
261
|
-
|
|
261
|
+
s.id === n.id && r.set(d, {
|
|
262
262
|
bind: u,
|
|
263
263
|
key: d,
|
|
264
|
-
is:
|
|
264
|
+
is: m,
|
|
265
265
|
on: v,
|
|
266
266
|
to: f,
|
|
267
267
|
generation: n.generation
|
|
268
268
|
});
|
|
269
|
-
}),
|
|
269
|
+
}), o.vueKey = d;
|
|
270
270
|
}
|
|
271
271
|
}
|
|
272
272
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WrapperHelper.js","sources":["../../src/helper/WrapperHelper.ts"],"sourcesContent":["/**\n * Vue 3 widget helper\n */\n\nimport { type ComponentInternalInstance, nextTick } from 'vue';\nimport { type VueConfig, Widget } from '@bryntum/grid';\n\ndeclare global {\n interface Window {\n bryntum: {\n isTestEnv?: boolean;\n vue?: {\n isVueConfig?: (config: any) => boolean;\n handleVueContent?: (widget: Widget, html: VueConfig) => void;\n };\n };\n }\n}\n\ninterface RenderElement extends HTMLElement {\n vueKey: string;\n}\n\nexport type Data = Record<string, unknown>;\n\ntype SuppressNew<T> = { [K in keyof T]: T[ K ] }\n\ntype AnyConstructor<\n Instance extends object = object,\n Static extends object = object\n> = (new (...input: any[]) => Instance) & SuppressNew<Static>\n\ntype AnyWidget = AnyConstructor<any, any>;\n\ntype RenderData = {\n record: any,\n row: any,\n column: any,\n cellElement: RenderElement\n}\n\ntype VueTeleportConfig = {\n vue: boolean,\n is: string,\n bind?: object\n on?: object\n}\n\nexport type WidgetData<T extends AnyWidget> = {\n instanceClass: T,\n instanceName: string\n isView?: boolean,\n dataStores?: object,\n projectStores?: boolean,\n configNames: string[]\n propertyConfigNames: string[]\n propertyNames: string[]\n eventNames: string[]\n featureNames?: string[]\n}\n\nexport type WidgetConfig<T extends AnyWidget> = {\n me?: ComponentInternalInstance;\n widgetData: WidgetData<T>,\n emit: (...args: any[]) => any\n element: HTMLDivElement;\n processCellContent?: Function;\n processEventContent?: Function;\n processWidgetContent?: Function;\n hasFrameworkRenderer?: Function;\n toRaw?: Function\n}\n\nexport type BryntumConfig = Record<string, any> & {\n vueComponent?: Object,\n listeners: Record<string, Function>,\n features: {},\n processCellContent: Function,\n processEventContent: Function,\n processWidgetContent: Function;\n hasFrameworkRenderer: Function\n};\n\nexport class WrapperHelper {\n\n /**\n * Development warning. Showed when environment is set to 'development'\n * @param {String} clsName vue component instance\n * @param {String} msg console message\n */\n static devWarning(clsName: string, msg: string) {\n // @ts-ignore\n if (window.bryntum?.isTestEnv || process.env.NODE_ENV === 'development') {\n console.warn(`Bryntum${clsName}Component development warning!\\n${msg}\\n` +\n 'Please check Vue integration guide: https://bryntum.com/products/grid/docs/guide/Grid/integration/vue/guide'\n );\n }\n }\n\n static devWarningContainer(clsName: string, containerParam: string) {\n WrapperHelper.devWarning(clsName,\n `Using \"${containerParam}\" parameter for configuration is not recommended.\\n` +\n 'Widget is placed automatically inside it\\'s container element.\\n' +\n `Solution: remove \"${containerParam}\" parameter from configuration.`\n );\n }\n\n static devWarningConfigProp(clsName: string, prop: string) {\n WrapperHelper.devWarning(clsName,\n `Using \"${prop}\" parameter for configuration is not recommended.\\n` +\n `Solution: Use separate parameter for each \"${prop}\" value to enable reactive updates of the API instance`\n );\n }\n\n static devWarningUpdateProp(clsName: string, prop: string) {\n WrapperHelper.devWarning(clsName,\n `\"${prop}\" is a static config option for component constructor only. No runtime changes are supported!`\n );\n }\n\n static camelize(str: string) {\n return str.replace(/-./g, s => (s[1] || '').toUpperCase());\n }\n\n static capitalize(str: string) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n }\n\n /**\n * Returns `true` if the provided configuration object is valid for Vue processing.\n * @param {*} config\n * @returns {Boolean}\n */\n static isVueConfig(config: any): boolean {\n return Boolean(config?.vue);\n }\n\n /**\n * Creates bryntum component config from vue component\n * @param {Object} context\n * @param {Object} context.me vue component instance\n * @param {Object} context.widgetData reference to data\n * @param {Function} context.emit reference to emit\n * @param {Object} context.element HTML element\n * @param {Function} context.processCellContent cell renderer method\n * @param {Function} context.processEventContent event renderer method\n * @param {Function} context.processWidgetContent widget renderer method\n * @param {Function} context.hasFrameworkRenderer checks presence of vue renderer\n * @param {Function} context.toRaw Vue fn to unwrap reactive object\n * @returns {Object} config object\n */\n static createConfig<T extends AnyWidget>({\n me,\n widgetData,\n emit,\n element,\n processCellContent,\n processEventContent,\n processWidgetContent,\n hasFrameworkRenderer,\n toRaw\n }: WidgetConfig<T>) {\n\n const\n props: Record<string, any> = {},\n vProps = me!.vnode!.props! || {};\n\n for (const key of Object.keys(vProps)) {\n // Convert possible kebab keys to camelCase\n props[this.camelize(key)] = vProps[key];\n }\n\n const\n {\n instanceClass,\n instanceName\n } = widgetData,\n isValidProp = (propName: string) => props[propName] !== undefined,\n configNames = (widgetData.configNames || []).filter(isValidProp),\n propertyConfigNames = (widgetData.propertyConfigNames || []).filter(isValidProp),\n propertyNames = (widgetData.propertyNames || []).filter(isValidProp),\n featureNames = (widgetData.featureNames || []).filter(isValidProp),\n // Disable event listeners for onProps, which are duplicating functions with preventable result support\n eventNames = widgetData.eventNames.filter(eventName => !isValidProp(eventName) && !props[`on${this.capitalize(eventName)}`]),\n bryntumConfig = {\n vueComponent : me,\n listeners : {},\n features : {},\n processCellContent,\n processEventContent,\n processWidgetContent,\n hasFrameworkRenderer\n } as BryntumConfig;\n\n // Setup events listeners\n eventNames.forEach(eventName => bryntumConfig.listeners[eventName] = (params: any) => emit(eventName, params));\n\n // Setup configs\n [\n ...configNames,\n ...propertyConfigNames,\n ...featureNames\n ].forEach(propName => {\n WrapperHelper.applyPropValue(bryntumConfig, propName, props[propName], true, toRaw);\n if (['features', 'config'].includes(propName)) {\n WrapperHelper.devWarningConfigProp(instanceClass.$name, propName);\n }\n });\n\n // Add vue wrapper class name\n bryntumConfig.cls = (bryntumConfig.cls || '') + ` b-vue-${instanceClass.$name.toLowerCase()}-container`;\n\n // Prepare watch arrays\n widgetData.configNames = configNames;\n widgetData.propertyNames = [\n ...configNames,\n ...propertyNames,\n ...propertyConfigNames,\n ...featureNames\n ];\n\n // Cleanup unused instance arrays\n widgetData.eventNames = [];\n widgetData.propertyConfigNames = [];\n widgetData.featureNames = [];\n\n // If component has no container specified in config then use adopt to Wrapper's element\n const\n containerParam = [\n 'adopt',\n 'appendTo',\n 'insertAfter',\n 'insertBefore'\n ].find((prop: string) => bryntumConfig[prop]);\n\n if (!containerParam) {\n if (instanceName === 'Button') {\n // Button should always be <a> or <button> inside owner element\n bryntumConfig.appendTo = element;\n }\n else {\n bryntumConfig.adopt = element;\n }\n }\n else {\n WrapperHelper.devWarningContainer(instanceClass.$name, containerParam);\n }\n return bryntumConfig;\n }\n\n /**\n * Setup store events relay\n * @param {Object} data reference to data\n * @param {Object} instance bryntum widget instance\n */\n static relayStores(data: any, instance: any) {\n const { dataStores, projectStores } = data;\n\n if (dataStores) {\n Object.keys(dataStores).forEach(storeName => {\n const store = projectStores ? instance.project[storeName] : instance[storeName];\n if (store) {\n\n\n if (store.syncDataOnLoad == null && !store.readUrl && !store.lazyLoad && (!store.crudManager || !store.crudManager.loadUrl)) {\n store.syncDataOnLoad = true;\n }\n\n\n\n // Makes relaying store events configurable but off by default\n if (instance && instance.relayStoreEvents) {\n store.relayAll(instance, dataStores[storeName]);\n }\n }\n });\n delete data.dataStores;\n }\n }\n\n /**\n * Creates bryntum Widget from vue component\n * @param {Object} config\n * @param {Object} config.me vue component instance\n * @param {Object} config.widgetData reference to data\n * @param {Function} config.emit reference to emit\n * @param {Object} config.element HTML element\n * @param {Function} config.processCellContent cell renderer method\n * @param {Function} config.hasFrameworkRenderer check the presence of vue renderer\n * @param {Function} config.toRaw Vue fn to unwrap reactive object\n * @returns {Object} widget object\n */\n static createWidget<T extends AnyWidget>(config: WidgetConfig<T>): InstanceType<T> {\n const\n { instanceClass } = config.widgetData,\n cfg = WrapperHelper.createConfig(config);\n return (instanceClass.$name === 'Widget' ? Widget.create(cfg) : new instanceClass(cfg)) as InstanceType<T>;\n }\n\n /**\n * Applies property value to Bryntum config or instance.\n * @param {Object} configOrInstance target object\n * @param {String} prop property name\n * @param {Object} value value\n * @param {Boolean} [isConfig] config setting mode\n * @param {Function} [toRaw] Vue fn to unwrap reactive object\n */\n static applyPropValue(configOrInstance: any, prop: string, value: any, isConfig = true, toRaw?: Function) {\n\n if (prop === 'project') {\n // Allow use ProjectModel component as project\n if (value && typeof value === 'object') {\n configOrInstance[prop] = value.instance ? value.instance.value || value.instance : value;\n }\n }\n else if (prop === 'features' && typeof value === 'object') {\n Object.keys(value).forEach(key => WrapperHelper.applyPropValue(configOrInstance, `${key}Feature`, value[key], isConfig, toRaw));\n }\n else if (prop === 'config' && typeof value === 'object') {\n Object.keys(value).forEach(key => WrapperHelper.applyPropValue(configOrInstance, key, value[key], isConfig, toRaw));\n }\n else if (prop === 'columns' && !isConfig) {\n configOrInstance['columns'].data = value;\n }\n else if (prop.endsWith('Feature')) {\n const\n features = configOrInstance['features'],\n featureName = prop.replace('Feature', '');\n if (isConfig) {\n features[featureName] = value;\n }\n else {\n const feature = features[featureName];\n if (feature) {\n feature.setConfig(value);\n }\n }\n }\n else {\n configOrInstance[prop] = toRaw ? toRaw(value) : value;\n }\n }\n\n /**\n * Creates watches for vue component properties\n * @param {Object} me vue component instance\n * @param {Object} instance bryntum widget instance\n * @param {Object} props reference to props\n * @param {Object} data reference to data\n * @param {Function} watcher watch method reference (Accepts: prop and newValue)\n */\n static watchProps<T extends AnyWidget>(\n instance: InstanceType<T>,\n data: WidgetData<T>,\n watcher: (prop: string, callback: (value: any) => void) => void) {\n const\n {\n configNames,\n propertyNames,\n instanceClass\n } = data;\n\n propertyNames.forEach(prop => watcher(prop, newValue => {\n const value = Array.isArray(newValue) ? newValue.slice() : newValue;\n WrapperHelper.applyPropValue(instance, prop, value, false);\n\n // Check if property is a config and notify\n if (configNames.includes(prop)) {\n WrapperHelper.devWarningUpdateProp(instanceClass.$name, prop);\n }\n }));\n\n // Cleanup unused instance arrays\n data.configNames = [];\n data.propertyNames = [];\n }\n\n /**\n * Called from Widget.js to add the Vue component to teleports\n * @param {Object} context\n * @param {Widget} context.widget Widget which content is rendered by the Vue component\n * @param {Object} context.html Object containing the Vue component properties and event listeners\n */\n static processWidgetContent({ widget, html }: { widget: Widget; html: VueTeleportConfig }) {\n const\n { is, bind = {}, vue, on = {} } = html,\n // @ts-ignore\n { vueComponent } = this,\n { teleports : { value : teleports } } = vueComponent.provides,\n { contentElement : to, id } = widget;\n\n if (vue) {\n const key = `key-${id}`;\n\n // delete the teleport with the same key if any\n if (teleports.has(key)) {\n teleports.delete(key);\n }\n\n nextTick(() => {\n teleports.set(key, { bind, on, key, is, to });\n });\n }\n }\n\n /**\n * Handles the content provided by a Vue component for the widget.\n * @param {Widget} widget Owner widget\n * @param {String} html The HTML content to be processed\n */\n static handleVueContent(widget: Widget, html: VueConfig): void {\n // Called when a Vue component is to provide the widget content\n const\n hasTeleports = (element: any) => Boolean(element.vueComponent?.provides?.teleports),\n parentView = widget.closest(hasTeleports) as any,\n // Find a view (grid, scheduler, etc.) which has `teleports` defined. It also has `processWidgetContent`\n view = parentView?.vueComponent ? parentView : Widget.query(hasTeleports);\n\n view?.processWidgetContent?.({ widget, html });\n }\n\n /**\n * Event renderer method\n * @param {Object} context\n * @param {*} context.jsx\n * @param {DomConfig} context.domConfig\n * @param {HTMLElement} context.targetElement\n * @param {Boolean} context.isRelease\n * @returns {Boolean}\n */\n static processEventContent({\n // Core passes it as jsx for React wrappers.\n // Let's rename it to a more appropriate name.\n jsx : rendererConfig,\n domConfig,\n targetElement,\n isRelease\n }: {\n jsx: { [key: string]: any },\n domConfig: any;\n isRelease: boolean;\n targetElement: HTMLElement & { vueKey: string }\n scrolling: boolean\n }) {\n\n let wrap: any = targetElement,\n returnValue = false;\n\n // @ts-ignore\n const domConfigData = this.isVertical ? domConfig?.elementData?.renderData : domConfig?.elementData;\n\n if (WrapperHelper.isVueConfig(rendererConfig) && rendererConfig?.is) {\n if (domConfig?.dataset?.isMilestone) {\n wrap = targetElement.parentElement!.parentElement!.parentElement!;\n }\n else {\n wrap = targetElement.parentElement!.parentElement!;\n }\n const\n // Vertical nests renderData, while horizontal does not\n // @ts-ignore\n wrapData = this.isVertical ? wrap.elementData.renderData : wrap.elementData,\n { assignmentRecord } = isRelease ? domConfigData : wrapData,\n { eventRecord } = wrapData,\n { vueComponent } = this as any,\n { teleports : { value : teleports } } = vueComponent.provides,\n\n // Recurring events are handled a bit differently so get the flag\n isRecurring = eventRecord.isRecurring || eventRecord.isOccurrence,\n key = `assignment-${assignmentRecord?.id}${isRecurring ? '-' + eventRecord.id : ''}`;\n\n if (wrap.vueKey) {\n teleports.delete(wrap.vueKey);\n }\n const\n bind = { ...rendererConfig },\n { is, on = {} } = bind;\n\n delete bind.is;\n delete bind.on;\n\n nextTick(() => {\n teleports.set(key, {\n bind,\n key,\n is,\n on,\n to : targetElement,\n generation : assignmentRecord.generation\n });\n\n });\n\n wrap.vueKey = key;\n returnValue = true;\n }\n\n return returnValue;\n }\n\n /**\n * Cell renderer method\n * @param {Object} context\n * @param {RenderData} context.rendererData\n * @param {*} context.rendererHtml\n * @returns {Boolean}\n */\n static processCellContent({ rendererData, rendererHtml }: { rendererData: RenderData, rendererHtml: any }) {\n const { record, column, cellElement, row } = rendererData;\n\n // Only run for cells with vue renderers\n if (WrapperHelper.isVueConfig(column.data) && column.data?.renderer) {\n const\n // `this` is a caller component\n { vueComponent } = this as any,\n // `teleports` is javascript Map object\n { teleports : { value : teleports } } = vueComponent.provides,\n key = `${column.id}-${record.id}`,\n renderElement = column.tree\n ? cellElement.querySelector('.b-tree-cell-value')\n : cellElement;\n\n // If the cell already has a teleport, release it\n if (cellElement.vueKey) {\n teleports.delete(cellElement.vueKey);\n }\n\n const\n bind = { ...rendererHtml },\n { is, on = {} } = bind;\n\n delete bind.is;\n delete bind.on;\n\n // Create new teleport\n nextTick(() => {\n // Only teleport if the row is still used for the same record. Since this happens async, we might have\n // scrolled over the entire block of rows since the render\n if (row.id === record.id) {\n teleports.set(key, {\n bind,\n key,\n is,\n on,\n to : renderElement,\n generation : record.generation\n });\n }\n });\n\n // Link cell to the teleport, to be able to release it above\n cellElement.vueKey = key;\n }\n }\n\n /**\n *\n * @param {Object} context\n * @param {*} context.cellContent Content to be rendered in cell (set by renderer)\n * @param {*} context.column Column being rendered\n * @returns {Boolean} `true` if there is a Vue Renderer in this cell, `false` otherwise\n */\n static hasFrameworkRenderer({ cellContent, column }: { cellContent: any, column: any }) {\n return cellContent && typeof cellContent === 'object' && WrapperHelper.isVueConfig(column?.data);\n }\n}\n\n// Expose wrapper methods on window.bryntum\nwindow.bryntum = window.bryntum || {};\nwindow.bryntum.vue = {\n isVueConfig : WrapperHelper.isVueConfig,\n handleVueContent : WrapperHelper.handleVueContent\n};\n"],"names":["WrapperHelper","clsName","msg","containerParam","prop","str","s","config","me","widgetData","emit","element","processCellContent","processEventContent","processWidgetContent","hasFrameworkRenderer","toRaw","props","vProps","key","instanceClass","instanceName","isValidProp","propName","configNames","propertyConfigNames","propertyNames","featureNames","eventNames","eventName","bryntumConfig","params","data","instance","dataStores","projectStores","storeName","store","cfg","Widget","configOrInstance","value","isConfig","features","featureName","feature","watcher","newValue","widget","html","is","bind","vue","on","vueComponent","teleports","to","id","nextTick","hasTeleports","parentView","rendererConfig","domConfig","targetElement","isRelease","wrap","returnValue","domConfigData","wrapData","assignmentRecord","eventRecord","isRecurring","rendererData","rendererHtml","record","column","cellElement","row","renderElement","cellContent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"WrapperHelper.js","sources":["../../src/helper/WrapperHelper.ts"],"sourcesContent":["/**\n * Vue 3 widget helper\n */\n\nimport { type ComponentInternalInstance, nextTick } from 'vue';\nimport { type VueConfig, Widget } from '@bryntum/grid';\n\ndeclare global {\n interface Window {\n bryntum: {\n isTestEnv?: boolean;\n vue?: {\n isVueConfig?: (config: any) => boolean;\n handleVueContent?: (widget: Widget, html: VueConfig) => void;\n };\n };\n }\n}\n\ninterface RenderElement extends HTMLElement {\n vueKey: string;\n}\n\nexport type Data = Record<string, unknown>;\n\ntype SuppressNew<T> = { [K in keyof T]: T[ K ] }\n\ntype AnyConstructor<\n Instance extends object = object,\n Static extends object = object\n> = (new (...input: any[]) => Instance) & SuppressNew<Static>\n\ntype AnyWidget = AnyConstructor<any, any>;\n\ntype RenderData = {\n record: any,\n row: any,\n column: any,\n cellElement: RenderElement\n}\n\ntype VueTeleportConfig = {\n vue: boolean,\n is: string,\n bind?: object\n on?: object\n}\n\nexport type WidgetData<T extends AnyWidget> = {\n instanceClass: T,\n instanceName: string\n isView?: boolean,\n dataStores?: object,\n projectStores?: boolean,\n configNames: string[]\n propertyConfigNames: string[]\n propertyNames: string[]\n eventNames: string[]\n featureNames?: string[]\n}\n\nexport type WidgetConfig<T extends AnyWidget> = {\n me?: ComponentInternalInstance;\n widgetData: WidgetData<T>,\n emit: (...args: any[]) => any\n element: HTMLDivElement;\n processCellContent?: Function;\n processEventContent?: Function;\n processWidgetContent?: Function;\n hasFrameworkRenderer?: Function;\n toRaw?: Function\n}\n\nexport type BryntumConfig = Record<string, any> & {\n vueComponent?: Object,\n listeners: Record<string, Function>,\n features: {},\n processCellContent: Function,\n processEventContent: Function,\n processWidgetContent: Function;\n hasFrameworkRenderer: Function\n};\n\nexport class WrapperHelper {\n\n /**\n * Development warning. Showed when environment is set to 'development'\n * @param {String} clsName vue component instance\n * @param {String} msg console message\n */\n static devWarning(clsName: string, msg: string) {\n // @ts-ignore\n if (window.bryntum?.isTestEnv || process.env.NODE_ENV === 'development') {\n console.warn(`Bryntum${clsName}Component development warning!\\n${msg}\\n` +\n 'Please check Vue integration guide: https://bryntum.com/products/grid/docs/guide/Grid/integration/vue/guide'\n );\n }\n }\n\n static devWarningContainer(clsName: string, containerParam: string) {\n WrapperHelper.devWarning(clsName,\n `Using \"${containerParam}\" parameter for configuration is not recommended.\\n` +\n 'Widget is placed automatically inside it\\'s container element.\\n' +\n `Solution: remove \"${containerParam}\" parameter from configuration.`\n );\n }\n\n static devWarningConfigProp(clsName: string, prop: string) {\n WrapperHelper.devWarning(clsName,\n `Using \"${prop}\" parameter for configuration is not recommended.\\n` +\n `Solution: Use separate parameter for each \"${prop}\" value to enable reactive updates of the API instance`\n );\n }\n\n static devWarningUpdateProp(clsName: string, prop: string) {\n WrapperHelper.devWarning(clsName,\n `\"${prop}\" is a static config option for component constructor only. No runtime changes are supported!`\n );\n }\n\n static camelize(str: string) {\n return str.replace(/-./g, s => (s[1] || '').toUpperCase());\n }\n\n static capitalize(str: string) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n }\n\n /**\n * Returns `true` if the provided configuration object is valid for Vue processing.\n * @param {*} config\n * @returns {Boolean}\n */\n static isVueConfig(config: any): boolean {\n return Boolean(config?.vue);\n }\n\n /**\n * Creates bryntum component config from vue component\n * @param {Object} context\n * @param {Object} context.me vue component instance\n * @param {Object} context.widgetData reference to data\n * @param {Function} context.emit reference to emit\n * @param {Object} context.element HTML element\n * @param {Function} context.processCellContent cell renderer method\n * @param {Function} context.processEventContent event renderer method\n * @param {Function} context.processWidgetContent widget renderer method\n * @param {Function} context.hasFrameworkRenderer checks presence of vue renderer\n * @param {Function} context.toRaw Vue fn to unwrap reactive object\n * @returns {Object} config object\n */\n static createConfig<T extends AnyWidget>({\n me,\n widgetData,\n emit,\n element,\n processCellContent,\n processEventContent,\n processWidgetContent,\n hasFrameworkRenderer,\n toRaw\n }: WidgetConfig<T>) {\n\n const\n props: Record<string, any> = {},\n vProps = me!.vnode!.props! || {};\n\n for (const key of Object.keys(vProps)) {\n // Convert possible kebab keys to camelCase\n props[this.camelize(key)] = vProps[key];\n }\n\n const\n {\n instanceClass,\n instanceName\n } = widgetData,\n isValidProp = (propName: string) => props[propName] !== undefined,\n configNames = (widgetData.configNames || []).filter(isValidProp),\n propertyConfigNames = (widgetData.propertyConfigNames || []).filter(isValidProp),\n propertyNames = (widgetData.propertyNames || []).filter(isValidProp),\n featureNames = (widgetData.featureNames || []).filter(isValidProp),\n // Disable event listeners for onProps, which are duplicating functions with preventable result support\n eventNames = widgetData.eventNames.filter(eventName => !isValidProp(eventName) && !props[`on${this.capitalize(eventName)}`]),\n bryntumConfig = {\n vueComponent : me,\n listeners : {},\n features : {},\n processCellContent,\n processEventContent,\n processWidgetContent,\n hasFrameworkRenderer\n } as BryntumConfig;\n\n // Setup events listeners\n eventNames.forEach(eventName => bryntumConfig.listeners[eventName] = (params: any) => emit(eventName, params));\n\n // Setup configs\n [\n ...configNames,\n ...propertyConfigNames,\n ...featureNames\n ].forEach(propName => {\n WrapperHelper.applyPropValue(bryntumConfig, propName, props[propName], true, toRaw);\n if (['features', 'config'].includes(propName)) {\n WrapperHelper.devWarningConfigProp(instanceClass.$name, propName);\n }\n });\n\n // Add vue wrapper class name\n bryntumConfig.cls = (bryntumConfig.cls || '') + ` b-vue-${instanceClass.$name.toLowerCase()}-container`;\n\n // Prepare watch arrays\n widgetData.configNames = configNames;\n widgetData.propertyNames = [\n ...configNames,\n ...propertyNames,\n ...propertyConfigNames,\n ...featureNames\n ];\n\n // Cleanup unused instance arrays\n widgetData.eventNames = [];\n widgetData.propertyConfigNames = [];\n widgetData.featureNames = [];\n\n // If component has no container specified in config then use adopt to Wrapper's element\n const\n containerParam = [\n 'adopt',\n 'appendTo',\n 'insertAfter',\n 'insertBefore'\n ].find((prop: string) => bryntumConfig[prop]);\n\n if (!containerParam) {\n if (instanceName === 'Button') {\n // Button should always be <a> or <button> inside owner element\n bryntumConfig.appendTo = element;\n }\n else {\n bryntumConfig.adopt = element;\n }\n }\n else {\n WrapperHelper.devWarningContainer(instanceClass.$name, containerParam);\n }\n return bryntumConfig;\n }\n\n /**\n * Setup store events relay\n * @param {Object} data reference to data\n * @param {Object} instance bryntum widget instance\n */\n static relayStores(data: any, instance: any) {\n const { dataStores, projectStores } = data;\n\n if (dataStores) {\n Object.keys(dataStores).forEach(storeName => {\n const store = projectStores ? instance.project[storeName] : instance[storeName];\n if (store) {\n\n\n if (store.syncDataOnLoad == null && !store.readUrl && !store.lazyLoad && (!store.crudManager || !store.crudManager.loadUrl)) {\n store.syncDataOnLoad = true;\n }\n\n\n\n // Makes relaying store events configurable but off by default\n if (instance && instance.relayStoreEvents) {\n store.relayAll(instance, dataStores[storeName]);\n }\n }\n });\n delete data.dataStores;\n }\n }\n\n /**\n * Creates bryntum Widget from vue component\n * @param {Object} config\n * @param {Object} config.me vue component instance\n * @param {Object} config.widgetData reference to data\n * @param {Function} config.emit reference to emit\n * @param {Object} config.element HTML element\n * @param {Function} config.processCellContent cell renderer method\n * @param {Function} config.hasFrameworkRenderer check the presence of vue renderer\n * @param {Function} config.toRaw Vue fn to unwrap reactive object\n * @returns {Object} widget object\n */\n static createWidget<T extends AnyWidget>(config: WidgetConfig<T>): InstanceType<T> {\n const\n { instanceClass } = config.widgetData,\n cfg = WrapperHelper.createConfig(config);\n return (instanceClass.$name === 'Widget' ? Widget.create(cfg) : new instanceClass(cfg)) as InstanceType<T>;\n }\n\n /**\n * Applies property value to Bryntum config or instance.\n * @param {Object} configOrInstance target object\n * @param {String} prop property name\n * @param {Object} value value\n * @param {Boolean} [isConfig] config setting mode\n * @param {Function} [toRaw] Vue fn to unwrap reactive object\n */\n static applyPropValue(configOrInstance: any, prop: string, value: any, isConfig = true, toRaw?: Function) {\n\n if (prop === 'project') {\n // Allow use ProjectModel component as project\n if (value && typeof value === 'object') {\n configOrInstance[prop] = value.instance ? value.instance.value || value.instance : value;\n }\n }\n else if (prop === 'features' && typeof value === 'object') {\n Object.keys(value).forEach(key => WrapperHelper.applyPropValue(configOrInstance, `${key}Feature`, value[key], isConfig, toRaw));\n }\n else if (prop === 'config' && typeof value === 'object') {\n Object.keys(value).forEach(key => WrapperHelper.applyPropValue(configOrInstance, key, value[key], isConfig, toRaw));\n }\n else if (prop === 'columns' && !isConfig) {\n configOrInstance['columns'].data = value;\n }\n else if (prop.endsWith('Feature')) {\n const\n features = configOrInstance['features'],\n featureName = prop.replace('Feature', '');\n if (isConfig) {\n features[featureName] = value;\n }\n else {\n const feature = features[featureName];\n if (feature) {\n feature.setConfig(value);\n }\n }\n }\n else {\n configOrInstance[prop] = toRaw ? toRaw(value) : value;\n }\n }\n\n /**\n * Creates watches for vue component properties\n * @param {Object} me vue component instance\n * @param {Object} instance bryntum widget instance\n * @param {Object} props reference to props\n * @param {Object} data reference to data\n * @param {Function} watcher watch method reference (Accepts: prop and newValue)\n */\n static watchProps<T extends AnyWidget>(\n instance: InstanceType<T>,\n data: WidgetData<T>,\n watcher: (prop: string, callback: (value: any) => void) => void) {\n const\n {\n configNames,\n propertyNames,\n instanceClass\n } = data;\n\n propertyNames.forEach(prop => watcher(prop, newValue => {\n const value = Array.isArray(newValue) ? newValue.slice() : newValue;\n WrapperHelper.applyPropValue(instance, prop, value, false);\n\n // Check if property is a config and notify\n if (configNames.includes(prop)) {\n WrapperHelper.devWarningUpdateProp(instanceClass.$name, prop);\n }\n }));\n\n // Cleanup unused instance arrays\n data.configNames = [];\n data.propertyNames = [];\n }\n\n /**\n * Called from Widget.js to add the Vue component to teleports\n * @param {Object} context\n * @param {Widget} context.widget Widget which content is rendered by the Vue component\n * @param {Object} context.html Object containing the Vue component properties and event listeners\n */\n static processWidgetContent({ widget, html }: { widget: Widget; html: VueTeleportConfig }) {\n const\n { is, bind = {}, vue, on = {} } = html,\n // @ts-ignore\n { vueComponent } = this,\n { teleports : { value : teleports } } = vueComponent.provides,\n { contentElement : to, id } = widget;\n\n if (vue) {\n const key = `key-${id}`;\n\n // delete the teleport with the same key if any\n if (teleports.has(key)) {\n teleports.delete(key);\n }\n\n nextTick(() => {\n teleports.set(key, { bind, on, key, is, to });\n });\n }\n }\n\n /**\n * Handles the content provided by a Vue component for the widget.\n * @param {Widget} widget Owner widget\n * @param {String} html The HTML content to be processed\n */\n static handleVueContent(widget: Widget, html: VueConfig): void {\n // Called when a Vue component is to provide the widget content\n const\n hasTeleports = (element: any) => Boolean(element.vueComponent?.provides?.teleports),\n parentView = widget.closest(hasTeleports) as any,\n // Find a view (grid, scheduler, etc.) which has `teleports` defined. It also has `processWidgetContent`\n view = parentView?.vueComponent ? parentView : Widget.query(hasTeleports);\n\n view?.processWidgetContent?.({ widget, html });\n }\n\n /**\n * Event renderer method\n * @param {Object} context\n * @param {*} context.jsx\n * @param {DomConfig} context.domConfig\n * @param {HTMLElement} context.targetElement\n * @param {Boolean} context.isRelease\n * @returns {Boolean}\n */\n static processEventContent({\n // Core passes it as jsx for React wrappers.\n // Let's rename it to a more appropriate name.\n jsx : rendererConfig,\n domConfig,\n targetElement,\n isRelease\n }: {\n jsx: { [key: string]: any },\n domConfig: any;\n isRelease: boolean;\n targetElement: HTMLElement & { vueKey: string }\n scrolling: boolean\n }) {\n\n let wrap: any = targetElement,\n returnValue = false;\n\n // @ts-ignore\n const domConfigData = this.isVertical ? domConfig?.elementData?.renderData : domConfig?.elementData;\n\n if (WrapperHelper.isVueConfig(rendererConfig) && rendererConfig?.is) {\n if (domConfig?.dataset?.isMilestone) {\n wrap = targetElement.parentElement!.parentElement!.parentElement!;\n }\n else {\n wrap = targetElement.parentElement!.parentElement!;\n }\n const\n // Vertical nests renderData, while horizontal does not\n // @ts-ignore\n wrapData = this.isVertical ? wrap.elementData.renderData : wrap.elementData,\n { assignmentRecord } = isRelease ? domConfigData : wrapData,\n { eventRecord } = wrapData,\n { vueComponent } = this as any,\n { teleports : { value : teleports } } = vueComponent.provides,\n\n // Recurring events are handled a bit differently so get the flag\n isRecurring = eventRecord.isRecurring || eventRecord.isOccurrence,\n key = `assignment-${assignmentRecord?.id}${isRecurring ? '-' + eventRecord.id : ''}`;\n\n // Only delete the teleport if it's rendering into this specific targetElement.\n // Prevents issues when elements are reused during scrolling with LockRows feature.\n if (wrap.vueKey && teleports.get(wrap.vueKey)?.to === targetElement) {\n // Only delete if the existing teleport is rendering into this specific targetElement\n teleports.delete(wrap.vueKey);\n }\n\n const\n bind = { ...rendererConfig },\n { is, on = {} } = bind;\n\n delete bind.is;\n delete bind.on;\n\n nextTick(() => {\n teleports.set(key, {\n bind,\n key,\n is,\n on,\n to : targetElement,\n generation : assignmentRecord.generation\n });\n\n });\n\n wrap.vueKey = key;\n returnValue = true;\n }\n\n return returnValue;\n }\n\n /**\n * Cell renderer method\n * @param {Object} context\n * @param {RenderData} context.rendererData\n * @param {*} context.rendererHtml\n * @returns {Boolean}\n */\n static processCellContent({ rendererData, rendererHtml }: { rendererData: RenderData, rendererHtml: any }) {\n const { record, column, cellElement, row } = rendererData;\n\n // Only run for cells with vue renderers\n if (WrapperHelper.isVueConfig(column.data) && column.data?.renderer) {\n const\n // `this` is a caller component\n { vueComponent } = this as any,\n // `teleports` is javascript Map object\n { teleports : { value : teleports } } = vueComponent.provides,\n key = `${column.id}-${record.id}`,\n renderElement = column.tree\n ? cellElement.querySelector('.b-tree-cell-value')\n : cellElement;\n\n // If the cell already has a teleport, release it\n if (cellElement.vueKey) {\n teleports.delete(cellElement.vueKey);\n }\n\n const\n bind = { ...rendererHtml },\n { is, on = {} } = bind;\n\n delete bind.is;\n delete bind.on;\n\n // Create new teleport\n nextTick(() => {\n // Only teleport if the row is still used for the same record. Since this happens async, we might have\n // scrolled over the entire block of rows since the render\n if (row.id === record.id) {\n teleports.set(key, {\n bind,\n key,\n is,\n on,\n to : renderElement,\n generation : record.generation\n });\n }\n });\n\n // Link cell to the teleport, to be able to release it above\n cellElement.vueKey = key;\n }\n }\n\n /**\n *\n * @param {Object} context\n * @param {*} context.cellContent Content to be rendered in cell (set by renderer)\n * @param {*} context.column Column being rendered\n * @returns {Boolean} `true` if there is a Vue Renderer in this cell, `false` otherwise\n */\n static hasFrameworkRenderer({ cellContent, column }: { cellContent: any, column: any }) {\n return cellContent && typeof cellContent === 'object' && WrapperHelper.isVueConfig(column?.data);\n }\n}\n\n// Expose wrapper methods on window.bryntum\nwindow.bryntum = window.bryntum || {};\nwindow.bryntum.vue = {\n isVueConfig : WrapperHelper.isVueConfig,\n handleVueContent : WrapperHelper.handleVueContent\n};\n"],"names":["WrapperHelper","clsName","msg","containerParam","prop","str","s","config","me","widgetData","emit","element","processCellContent","processEventContent","processWidgetContent","hasFrameworkRenderer","toRaw","props","vProps","key","instanceClass","instanceName","isValidProp","propName","configNames","propertyConfigNames","propertyNames","featureNames","eventNames","eventName","bryntumConfig","params","data","instance","dataStores","projectStores","storeName","store","cfg","Widget","configOrInstance","value","isConfig","features","featureName","feature","watcher","newValue","widget","html","is","bind","vue","on","vueComponent","teleports","to","id","nextTick","hasTeleports","parentView","rendererConfig","domConfig","targetElement","isRelease","wrap","returnValue","domConfigData","wrapData","assignmentRecord","eventRecord","isRecurring","rendererData","rendererHtml","record","column","cellElement","row","renderElement","cellContent"],"mappings":"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"}
|
package/lib/index.js
CHANGED
|
@@ -27,8 +27,8 @@ import { _ as X } from "./chunks/DeUYzvrV.js";
|
|
|
27
27
|
import { _ as $ } from "./chunks/TzHGidVW.js";
|
|
28
28
|
import { _ as or } from "./chunks/0VK2Jl2S.js";
|
|
29
29
|
import { _ as er } from "./chunks/BbodcqTk.js";
|
|
30
|
-
import { _ as ar } from "./chunks/
|
|
31
|
-
import { _ as ur } from "./chunks/
|
|
30
|
+
import { _ as ar } from "./chunks/Dopu_9xj.js";
|
|
31
|
+
import { _ as ur } from "./chunks/DjlFx3AM.js";
|
|
32
32
|
import { _ as ir } from "./chunks/R6LyS5qC.js";
|
|
33
33
|
import { _ as xr } from "./chunks/Cn0Ya94A.js";
|
|
34
34
|
import { _ as yr } from "./chunks/CP3_GOOQ.js";
|
|
@@ -55,7 +55,7 @@ import { _ as $r } from "./chunks/B5X85Zm3.js";
|
|
|
55
55
|
import { _ as oo } from "./chunks/CKeNM4Nf.js";
|
|
56
56
|
import { _ as eo } from "./chunks/XEoDbTsi.js";
|
|
57
57
|
import { _ as ao } from "./chunks/DtvMMHtT.js";
|
|
58
|
-
import { _ as uo } from "./chunks/
|
|
58
|
+
import { _ as uo } from "./chunks/drZFLbSb.js";
|
|
59
59
|
import { _ as io } from "./chunks/0Ky_G00z.js";
|
|
60
60
|
import { _ as xo } from "./chunks/DS2xjnqc.js";
|
|
61
61
|
export {
|
package/package.json
CHANGED
|
@@ -1114,6 +1114,16 @@ const emit = defineEmits<{
|
|
|
1114
1114
|
* @param {any} params.event.value The value being set
|
|
1115
1115
|
*/
|
|
1116
1116
|
(e: 'beforeCellRangeEdit', params: ((event: { record: Model, field: string, value: any }) => Promise<boolean>|boolean|void)|string): Promise<boolean>|boolean|void
|
|
1117
|
+
/**
|
|
1118
|
+
* This event is triggered before a parent column is collapsed or expanded.
|
|
1119
|
+
* @param {string} e Event name
|
|
1120
|
+
* @param {object} params Event parameters
|
|
1121
|
+
* @param {object} params.event Event object
|
|
1122
|
+
* @param {Grid.view.GridBase} params.event.source The grid instance
|
|
1123
|
+
* @param {Grid.column.Column} params.event.column The column
|
|
1124
|
+
* @param {boolean} params.event.collapsed `true` if the column is being collapsed, `false` if expanded
|
|
1125
|
+
*/
|
|
1126
|
+
(e: 'beforeColumnCollapseToggle', params: ((event: { source: GridBase, column: Column, collapsed: boolean }) => void)|string): void
|
|
1117
1127
|
/**
|
|
1118
1128
|
* This event is fired prior to starting a column drag gesture. The drag is canceled if a listener returns `false`.
|
|
1119
1129
|
* @param {string} e Event name
|
|
@@ -1252,20 +1262,20 @@ const emit = defineEmits<{
|
|
|
1252
1262
|
* @param {string} e Event name
|
|
1253
1263
|
* @param {object} params Event parameters
|
|
1254
1264
|
* @param {object} params.event Event object
|
|
1255
|
-
* @param {Grid.view.
|
|
1256
|
-
* @param {Grid.row.Row} params.event.row The row about to be rendered
|
|
1257
|
-
* @param {Core.data.Model} params.event.record The record for the row
|
|
1258
|
-
* @param {number} params.event.recordIndex The zero-based index of the record
|
|
1265
|
+
* @param {Grid.view.GridBase} params.event.source The firing Grid instance
|
|
1266
|
+
* @param {Grid.row.Row} params.event.row The row about to be rendered
|
|
1267
|
+
* @param {Core.data.Model} params.event.record The record for the row
|
|
1268
|
+
* @param {number} params.event.recordIndex The zero-based index of the record
|
|
1259
1269
|
*/
|
|
1260
|
-
(e: 'beforeRenderRow', params: ((event: { source:
|
|
1270
|
+
(e: 'beforeRenderRow', params: ((event: { source: GridBase, row: Row, record: Model, recordIndex: number }) => void)|string): void
|
|
1261
1271
|
/**
|
|
1262
1272
|
* Grid rows are about to be rendered
|
|
1263
1273
|
* @param {string} e Event name
|
|
1264
1274
|
* @param {object} params Event parameters
|
|
1265
1275
|
* @param {object} params.event Event object
|
|
1266
|
-
* @param {Grid.view.
|
|
1276
|
+
* @param {Grid.view.GridBase} params.event.source This grid.
|
|
1267
1277
|
*/
|
|
1268
|
-
(e: 'beforeRenderRows', params: ((event: { source:
|
|
1278
|
+
(e: 'beforeRenderRows', params: ((event: { source: GridBase }) => void)|string): void
|
|
1269
1279
|
/**
|
|
1270
1280
|
* This event fires before row collapse is started.
|
|
1271
1281
|
* ...
|
|
@@ -1546,6 +1556,16 @@ const emit = defineEmits<{
|
|
|
1546
1556
|
* @param {Core.data.Model} params.event.record The record which has been collapsed.
|
|
1547
1557
|
*/
|
|
1548
1558
|
(e: 'collapseNode', params: ((event: { source: Grid, record: Model }) => void)|string): void
|
|
1559
|
+
/**
|
|
1560
|
+
* This event is triggered after a parent column has been collapsed or expanded.
|
|
1561
|
+
* @param {string} e Event name
|
|
1562
|
+
* @param {object} params Event parameters
|
|
1563
|
+
* @param {object} params.event Event object
|
|
1564
|
+
* @param {Grid.view.GridBase} params.event.source The Grid instance
|
|
1565
|
+
* @param {Grid.column.Column} params.event.column The column being toggled
|
|
1566
|
+
* @param {boolean} params.event.collapsed `true` if the column is now collapsed, `false` if expanded
|
|
1567
|
+
*/
|
|
1568
|
+
(e: 'columnCollapseToggle', params: ((event: { source: GridBase, column: Column, collapsed: boolean }) => void)|string): void
|
|
1549
1569
|
/**
|
|
1550
1570
|
* This event is fired when a column is being dragged, and you can set the `valid` flag on the `context` object
|
|
1551
1571
|
* to indicate whether the drop position is valid or not.
|
|
@@ -1645,14 +1665,14 @@ const emit = defineEmits<{
|
|
|
1645
1665
|
* @param {string} e Event name
|
|
1646
1666
|
* @param {object} params Event parameters
|
|
1647
1667
|
* @param {object} params.event Event object
|
|
1648
|
-
* @param {Grid.view.
|
|
1668
|
+
* @param {Grid.view.GridBase} params.event.source Owning grid
|
|
1649
1669
|
* @param {Core.data.Store} params.event.store The originating store
|
|
1650
1670
|
* @param {'remove','removeAll','add','clearchanges','filter','update','dataset','replace'} params.event.action Name of action which triggered the change. May be one of: * `'remove'` * `'removeAll'` * `'add'` * `'clearchanges'` * `'filter'` * `'update'` * `'dataset'` * `'replace'`
|
|
1651
1671
|
* @param {Core.data.Model} params.event.record Changed record, for actions that affects exactly one record (`'update'`)
|
|
1652
1672
|
* @param {Core.data.Model[]} params.event.records Changed records, passed for all actions except `'removeAll'`
|
|
1653
1673
|
* @param {object} params.event.changes Passed for the `'update'` action, info on which record fields changed
|
|
1654
1674
|
*/
|
|
1655
|
-
(e: 'dataChange', params: ((event: { source:
|
|
1675
|
+
(e: 'dataChange', params: ((event: { source: GridBase, store: Store, action: 'remove'|'removeAll'|'add'|'clearchanges'|'filter'|'update'|'dataset'|'replace', record: Model, records: Model[], changes: object }) => void)|string): void
|
|
1656
1676
|
/**
|
|
1657
1677
|
* Fires when an object is destroyed.
|
|
1658
1678
|
* @param {string} e Event name
|
|
@@ -2030,20 +2050,20 @@ const emit = defineEmits<{
|
|
|
2030
2050
|
* @param {string} e Event name
|
|
2031
2051
|
* @param {object} params Event parameters
|
|
2032
2052
|
* @param {object} params.event Event object
|
|
2033
|
-
* @param {Grid.view.
|
|
2034
|
-
* @param {Grid.row.Row} params.event.row The row that has been rendered
|
|
2035
|
-
* @param {Core.data.Model} params.event.record The record for the row
|
|
2036
|
-
* @param {number} params.event.recordIndex The zero-based index of the record
|
|
2053
|
+
* @param {Grid.view.GridBase} params.event.source The firing Grid instance
|
|
2054
|
+
* @param {Grid.row.Row} params.event.row The row that has been rendered
|
|
2055
|
+
* @param {Core.data.Model} params.event.record The record for the row
|
|
2056
|
+
* @param {number} params.event.recordIndex The zero-based index of the record
|
|
2037
2057
|
*/
|
|
2038
|
-
(e: 'renderRow', params: ((event: { source:
|
|
2058
|
+
(e: 'renderRow', params: ((event: { source: GridBase, row: Row, record: Model, recordIndex: number }) => void)|string): void
|
|
2039
2059
|
/**
|
|
2040
2060
|
* Grid rows have been rendered
|
|
2041
2061
|
* @param {string} e Event name
|
|
2042
2062
|
* @param {object} params Event parameters
|
|
2043
2063
|
* @param {object} params.event Event object
|
|
2044
|
-
* @param {Grid.view.
|
|
2064
|
+
* @param {Grid.view.GridBase} params.event.source This grid.
|
|
2045
2065
|
*/
|
|
2046
|
-
(e: 'renderRows', params: ((event: { source:
|
|
2066
|
+
(e: 'renderRows', params: ((event: { source: GridBase }) => void)|string): void
|
|
2047
2067
|
/**
|
|
2048
2068
|
* Fired when the encapsulating element of a Widget resizes *only when [monitorResize](https://bryntum.com/products/grid/docs/api/Core/widget/Widget#config-monitorResize) is `true`*.
|
|
2049
2069
|
* @param {string} e Event name
|
|
@@ -2117,10 +2137,10 @@ const emit = defineEmits<{
|
|
|
2117
2137
|
* @param {string} e Event name
|
|
2118
2138
|
* @param {object} params Event parameters
|
|
2119
2139
|
* @param {object} params.event Event object
|
|
2120
|
-
* @param {Grid.view.
|
|
2140
|
+
* @param {Grid.view.GridBase} params.event.source The firing Grid instance.
|
|
2121
2141
|
* @param {number} params.event.scrollTop The vertical scroll position.
|
|
2122
2142
|
*/
|
|
2123
|
-
(e: 'scroll', params: ((event: { source:
|
|
2143
|
+
(e: 'scroll', params: ((event: { source: GridBase, scrollTop: number }) => void)|string): void
|
|
2124
2144
|
/**
|
|
2125
2145
|
* The selection has been changed.
|
|
2126
2146
|
* @param {string} e Event name
|
|
@@ -2230,19 +2250,19 @@ const emit = defineEmits<{
|
|
|
2230
2250
|
* @param {string} e Event name
|
|
2231
2251
|
* @param {object} params Event parameters
|
|
2232
2252
|
* @param {object} params.event Event object
|
|
2233
|
-
* @param {Grid.view.
|
|
2253
|
+
* @param {Grid.view.GridBase} params.event.source The firing Grid instance
|
|
2234
2254
|
* @param {Grid.view.SubGrid} params.event.subGrid The sub grid instance
|
|
2235
2255
|
*/
|
|
2236
|
-
(e: 'subGridCollapse', params: ((event: { source:
|
|
2256
|
+
(e: 'subGridCollapse', params: ((event: { source: GridBase, subGrid: SubGrid }) => void)|string): void
|
|
2237
2257
|
/**
|
|
2238
2258
|
* Fires after a sub grid is expanded.
|
|
2239
2259
|
* @param {string} e Event name
|
|
2240
2260
|
* @param {object} params Event parameters
|
|
2241
2261
|
* @param {object} params.event Event object
|
|
2242
|
-
* @param {Grid.view.
|
|
2262
|
+
* @param {Grid.view.GridBase} params.event.source The firing Grid instance
|
|
2243
2263
|
* @param {Grid.view.SubGrid} params.event.subGrid The sub grid instance
|
|
2244
2264
|
*/
|
|
2245
|
-
(e: 'subGridExpand', params: ((event: { source:
|
|
2265
|
+
(e: 'subGridExpand', params: ((event: { source: GridBase, subGrid: SubGrid }) => void)|string): void
|
|
2246
2266
|
/**
|
|
2247
2267
|
* Fired when one or more groups are expanded or collapsed
|
|
2248
2268
|
* @param {string} e Event name
|
|
@@ -2452,6 +2472,7 @@ const widgetData = {
|
|
|
2452
2472
|
'onBeforeCellEditStart',
|
|
2453
2473
|
'onBeforeCellRangeDelete',
|
|
2454
2474
|
'onBeforeCellRangeEdit',
|
|
2475
|
+
'onBeforeColumnCollapseToggle',
|
|
2455
2476
|
'onBeforeColumnDragStart',
|
|
2456
2477
|
'onBeforeColumnDropFinalize',
|
|
2457
2478
|
'onBeforeColumnResize',
|
|
@@ -2492,6 +2513,7 @@ const widgetData = {
|
|
|
2492
2513
|
'onCellMouseOver',
|
|
2493
2514
|
'onCollapse',
|
|
2494
2515
|
'onCollapseNode',
|
|
2516
|
+
'onColumnCollapseToggle',
|
|
2495
2517
|
'onColumnDrag',
|
|
2496
2518
|
'onColumnDragStart',
|
|
2497
2519
|
'onColumnDrop',
|
|
@@ -2599,6 +2621,7 @@ const widgetData = {
|
|
|
2599
2621
|
'beforeCellEditStart',
|
|
2600
2622
|
'beforeCellRangeDelete',
|
|
2601
2623
|
'beforeCellRangeEdit',
|
|
2624
|
+
'beforeColumnCollapseToggle',
|
|
2602
2625
|
'beforeColumnDragStart',
|
|
2603
2626
|
'beforeColumnDropFinalize',
|
|
2604
2627
|
'beforeColumnResize',
|
|
@@ -2639,6 +2662,7 @@ const widgetData = {
|
|
|
2639
2662
|
'cellMouseOver',
|
|
2640
2663
|
'collapse',
|
|
2641
2664
|
'collapseNode',
|
|
2665
|
+
'columnCollapseToggle',
|
|
2642
2666
|
'columnDrag',
|
|
2643
2667
|
'columnDragStart',
|
|
2644
2668
|
'columnDrop',
|