@operato/data-grist 2.0.0-alpha.0 → 2.0.0-alpha.2
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/CHANGELOG.md +13 -0
- package/dist/src/configure/column-builder.js +5 -5
- package/dist/src/configure/column-builder.js.map +1 -1
- package/dist/src/configure/zero-config.js +3 -1
- package/dist/src/configure/zero-config.js.map +1 -1
- package/dist/src/data-card/data-card-field.js +1 -1
- package/dist/src/data-card/data-card-field.js.map +1 -1
- package/dist/src/data-grid/data-grid-accum-field.d.ts +1 -0
- package/dist/src/data-grid/data-grid-accum-field.js +8 -0
- package/dist/src/data-grid/data-grid-accum-field.js.map +1 -1
- package/dist/src/data-grid/data-grid-body.js +24 -2
- package/dist/src/data-grid/data-grid-body.js.map +1 -1
- package/dist/src/data-grid/data-grid-field.d.ts +1 -0
- package/dist/src/data-grid/data-grid-field.js +5 -0
- package/dist/src/data-grid/data-grid-field.js.map +1 -1
- package/dist/src/data-grid/event-handlers/data-grid-body-click-handler.js +2 -2
- package/dist/src/data-grid/event-handlers/data-grid-body-click-handler.js.map +1 -1
- package/dist/src/data-grid/event-handlers/data-grid-body-contextmenu-handler.d.ts +7 -0
- package/dist/src/data-grid/event-handlers/data-grid-body-contextmenu-handler.js +25 -0
- package/dist/src/data-grid/event-handlers/data-grid-body-contextmenu-handler.js.map +1 -0
- package/dist/src/data-grid/event-handlers/data-grid-body-dblclick-handler.js +2 -2
- package/dist/src/data-grid/event-handlers/data-grid-body-dblclick-handler.js.map +1 -1
- package/dist/src/data-grid/event-handlers/data-grid-body-focus-change-handler copy.d.ts +7 -0
- package/dist/src/data-grid/event-handlers/data-grid-body-focus-change-handler copy.js +19 -0
- package/dist/src/data-grid/event-handlers/data-grid-body-focus-change-handler copy.js.map +1 -0
- package/dist/src/data-grid/event-handlers/data-grid-body-focus-change-handler.js +2 -2
- package/dist/src/data-grid/event-handlers/data-grid-body-focus-change-handler.js.map +1 -1
- package/dist/src/data-list/data-list-field.js +1 -1
- package/dist/src/data-list/data-list-field.js.map +1 -1
- package/dist/src/data-manipulator.d.ts +3 -1
- package/dist/src/data-manipulator.js +20 -7
- package/dist/src/data-manipulator.js.map +1 -1
- package/dist/src/editors/ox-grist-editor-tree.d.ts +6 -0
- package/dist/src/editors/ox-grist-editor-tree.js +27 -0
- package/dist/src/editors/ox-grist-editor-tree.js.map +1 -0
- package/dist/src/editors/ox-grist-editor.d.ts +1 -0
- package/dist/src/editors/ox-grist-editor.js +3 -0
- package/dist/src/editors/ox-grist-editor.js.map +1 -1
- package/dist/src/editors/ox-input-tree.d.ts +20 -0
- package/dist/src/editors/ox-input-tree.js +221 -0
- package/dist/src/editors/ox-input-tree.js.map +1 -0
- package/dist/src/editors/registry.js +3 -1
- package/dist/src/editors/registry.js.map +1 -1
- package/dist/src/filters/filters-form.js +1 -1
- package/dist/src/filters/filters-form.js.map +1 -1
- package/dist/src/handlers/contextmenu-tree-mutation.d.ts +3 -0
- package/dist/src/handlers/contextmenu-tree-mutation.js +82 -0
- package/dist/src/handlers/contextmenu-tree-mutation.js.map +1 -0
- package/dist/src/handlers/contextmenu-tree.d.ts +3 -0
- package/dist/src/handlers/contextmenu-tree.js +30 -0
- package/dist/src/handlers/contextmenu-tree.js.map +1 -0
- package/dist/src/handlers/move-up copy.d.ts +3 -0
- package/dist/src/handlers/move-up copy.js +26 -0
- package/dist/src/handlers/move-up copy.js.map +1 -0
- package/dist/src/handlers/registry.js +3 -1
- package/dist/src/handlers/registry.js.map +1 -1
- package/dist/src/renderers/ox-grist-renderer-tree.d.ts +1 -0
- package/dist/src/renderers/ox-grist-renderer-tree.js +5 -2
- package/dist/src/renderers/ox-grist-renderer-tree.js.map +1 -1
- package/dist/src/types.d.ts +3 -2
- package/dist/src/types.js.map +1 -1
- package/dist/stories/tree-column-with-checkbox.stories.js +8 -3
- package/dist/stories/tree-column-with-checkbox.stories.js.map +1 -1
- package/dist/stories/tree-column.stories.js +8 -3
- package/dist/stories/tree-column.stories.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -4
- package/src/configure/column-builder.ts +4 -4
- package/src/configure/zero-config.ts +3 -1
- package/src/data-card/data-card-field.ts +1 -1
- package/src/data-grid/data-grid-accum-field.ts +7 -0
- package/src/data-grid/data-grid-body.ts +30 -2
- package/src/data-grid/data-grid-field.ts +6 -0
- package/src/data-grid/event-handlers/data-grid-body-click-handler.ts +2 -2
- package/src/data-grid/event-handlers/data-grid-body-contextmenu-handler.ts +32 -0
- package/src/data-grid/event-handlers/data-grid-body-dblclick-handler.ts +2 -2
- package/src/data-grid/event-handlers/data-grid-body-focus-change-handler.ts +2 -2
- package/src/data-list/data-list-field.ts +1 -1
- package/src/data-manipulator.ts +25 -8
- package/src/editors/ox-grist-editor-tree.ts +27 -0
- package/src/editors/ox-grist-editor.ts +4 -0
- package/src/editors/ox-input-tree.ts +226 -0
- package/src/editors/registry.ts +3 -1
- package/src/filters/filters-form.ts +1 -1
- package/src/handlers/contextmenu-tree-mutation.ts +98 -0
- package/src/handlers/registry.ts +3 -1
- package/src/renderers/ox-grist-renderer-tree.ts +6 -2
- package/src/types.ts +4 -2
- package/stories/tree-column-with-checkbox.stories.ts +8 -3
- package/stories/tree-column.stories.ts +8 -3
@@ -0,0 +1,98 @@
|
|
1
|
+
import { html } from 'lit'
|
2
|
+
import { OxPopupMenu } from '@operato/popup'
|
3
|
+
|
4
|
+
import { DataGridField } from '../data-grid/data-grid-field'
|
5
|
+
import { ColumnConfig, GristData, GristRecord } from '../types'
|
6
|
+
|
7
|
+
function dispatchEvent(field: DataGridField, event: string) {
|
8
|
+
field.dispatchEvent(
|
9
|
+
new CustomEvent(event, {
|
10
|
+
bubbles: true,
|
11
|
+
composed: true,
|
12
|
+
detail: field
|
13
|
+
})
|
14
|
+
)
|
15
|
+
}
|
16
|
+
|
17
|
+
/*
|
18
|
+
* handler들은 ox-grid-field 로부터 호출되는 것을 전제로 하며,
|
19
|
+
* 전반적인 처리를 위해서, columns 및 data 정보를 포함해서 제공할 수 있어야 한다.
|
20
|
+
*/
|
21
|
+
export const ContextMenuTreeMutation = function (
|
22
|
+
columns: ColumnConfig[],
|
23
|
+
data: GristData,
|
24
|
+
column: ColumnConfig,
|
25
|
+
record: GristRecord,
|
26
|
+
rowIndex: number,
|
27
|
+
field: DataGridField,
|
28
|
+
event: Event
|
29
|
+
): void {
|
30
|
+
const e = event as PointerEvent
|
31
|
+
if (!('pageX' in e && 'pageY' in e)) {
|
32
|
+
return
|
33
|
+
}
|
34
|
+
|
35
|
+
e.preventDefault()
|
36
|
+
|
37
|
+
OxPopupMenu.open({
|
38
|
+
template: html`
|
39
|
+
<ox-popup-menuitem
|
40
|
+
label="add sibling node"
|
41
|
+
@click=${() => {
|
42
|
+
dispatchEvent(field, 'add-sibling-node')
|
43
|
+
}}
|
44
|
+
>
|
45
|
+
<mwc-icon slot="icon">add</mwc-icon>
|
46
|
+
</ox-popup-menuitem>
|
47
|
+
|
48
|
+
<ox-popup-menuitem
|
49
|
+
label="add child node"
|
50
|
+
@click=${() => {
|
51
|
+
dispatchEvent(field, 'add-child-node')
|
52
|
+
}}
|
53
|
+
>
|
54
|
+
<mwc-icon slot="icon">playlist_add</mwc-icon>
|
55
|
+
</ox-popup-menuitem>
|
56
|
+
|
57
|
+
<ox-popup-menuitem
|
58
|
+
label="move up"
|
59
|
+
@click=${() => {
|
60
|
+
dispatchEvent(field, 'move-up')
|
61
|
+
}}
|
62
|
+
>
|
63
|
+
<mwc-icon slot="icon">arrow_upward</mwc-icon>
|
64
|
+
</ox-popup-menuitem>
|
65
|
+
|
66
|
+
<ox-popup-menuitem
|
67
|
+
label="move down"
|
68
|
+
@click=${() => {
|
69
|
+
dispatchEvent(field, 'move-down')
|
70
|
+
}}
|
71
|
+
>
|
72
|
+
<mwc-icon slot="icon">arrow_downward</mwc-icon>
|
73
|
+
</ox-popup-menuitem>
|
74
|
+
|
75
|
+
<div separator></div>
|
76
|
+
|
77
|
+
<ox-popup-menuitem
|
78
|
+
label="collapse all"
|
79
|
+
@click=${() => {
|
80
|
+
dispatchEvent(field, 'collapse-all')
|
81
|
+
}}
|
82
|
+
>
|
83
|
+
<mwc-icon slot="icon">unfold_less</mwc-icon>
|
84
|
+
</ox-popup-menuitem>
|
85
|
+
|
86
|
+
<ox-popup-menuitem
|
87
|
+
label="expand all"
|
88
|
+
@click=${() => {
|
89
|
+
dispatchEvent(field, 'expand-all')
|
90
|
+
}}
|
91
|
+
>
|
92
|
+
<mwc-icon slot="icon">unfold_more</mwc-icon>
|
93
|
+
</ox-popup-menuitem>
|
94
|
+
`,
|
95
|
+
top: e.pageY,
|
96
|
+
left: e.pageX
|
97
|
+
})
|
98
|
+
}
|
package/src/handlers/registry.ts
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
import { GristEventHandler } from '../types'
|
2
|
+
import { ContextMenuTreeMutation } from './contextmenu-tree-mutation'
|
2
3
|
import { MoveDown } from './move-down'
|
3
4
|
import { MoveUp } from './move-up'
|
4
5
|
import { RecordCopy } from './record-copy'
|
@@ -16,7 +17,8 @@ var HANDLERS: {
|
|
16
17
|
'move-up': MoveUp as GristEventHandler,
|
17
18
|
'move-down': MoveDown as GristEventHandler,
|
18
19
|
'record-copy': RecordCopy as GristEventHandler,
|
19
|
-
'record-delete': RecordDelete as GristEventHandler
|
20
|
+
'record-delete': RecordDelete as GristEventHandler,
|
21
|
+
'contextmenu-tree-mutation': ContextMenuTreeMutation as GristEventHandler
|
20
22
|
}
|
21
23
|
|
22
24
|
export function registerGristEventHandler(type: string, handler: GristEventHandler) {
|
@@ -74,8 +74,8 @@ export class OxGristRendererTree extends OxGristRenderer {
|
|
74
74
|
border-radius: 2px;
|
75
75
|
}
|
76
76
|
|
77
|
-
span[label]
|
78
|
-
|
77
|
+
span[label] {
|
78
|
+
flex: 1;
|
79
79
|
}
|
80
80
|
|
81
81
|
span[checkbox][checked='checked']::before {
|
@@ -182,4 +182,8 @@ export class OxGristRendererTree extends OxGristRenderer {
|
|
182
182
|
|
183
183
|
this.requestUpdate()
|
184
184
|
}
|
185
|
+
|
186
|
+
get editableOnClick() {
|
187
|
+
return false
|
188
|
+
}
|
185
189
|
}
|
package/src/types.ts
CHANGED
@@ -111,7 +111,8 @@ export type GristEventHandler = (
|
|
111
111
|
column?: ColumnConfig,
|
112
112
|
record?: GristRecord,
|
113
113
|
rowIndex?: number,
|
114
|
-
target?: any
|
114
|
+
target?: any,
|
115
|
+
e?: Event
|
115
116
|
) => void
|
116
117
|
|
117
118
|
export type AccumulatorFunc =
|
@@ -160,7 +161,7 @@ export type LabelConfig =
|
|
160
161
|
renderer: LabelRenderer
|
161
162
|
}
|
162
163
|
|
163
|
-
export type LabelRenderer = () => void
|
164
|
+
export type LabelRenderer = (column: ColumnConfig) => void
|
164
165
|
|
165
166
|
export type ColumnWidthCallback = (column: ColumnConfig) => string
|
166
167
|
|
@@ -234,6 +235,7 @@ export type GristEventHandlerSet = {
|
|
234
235
|
click?: GristEventHandler
|
235
236
|
dblclick?: GristEventHandler
|
236
237
|
focus?: GristEventHandler
|
238
|
+
contextmenu?: GristEventHandler
|
237
239
|
}
|
238
240
|
|
239
241
|
export type ListConfig = {
|
@@ -40,6 +40,7 @@ const fetchHandler: FetchHandler = async ({ page, limit }) => {
|
|
40
40
|
name: 'subitem' + idx,
|
41
41
|
description: 'sub items...',
|
42
42
|
active: Math.round(Math.random() * 2) % 2 ? true : false,
|
43
|
+
accval: Math.random(),
|
43
44
|
children: [
|
44
45
|
...Array.from({ length: 3 }, (_, idx2) => {
|
45
46
|
return {
|
@@ -91,7 +92,7 @@ const config = {
|
|
91
92
|
label: true,
|
92
93
|
header: 'name',
|
93
94
|
record: {
|
94
|
-
editable:
|
95
|
+
editable: true,
|
95
96
|
options: {
|
96
97
|
selectable: true /* with checkbox */
|
97
98
|
}
|
@@ -99,7 +100,10 @@ const config = {
|
|
99
100
|
filter: 'search',
|
100
101
|
sortable: true,
|
101
102
|
width: 200,
|
102
|
-
fixed: true
|
103
|
+
fixed: true,
|
104
|
+
handlers: {
|
105
|
+
contextmenu: 'contextmenu-tree-mutation'
|
106
|
+
}
|
103
107
|
},
|
104
108
|
{
|
105
109
|
type: 'gutter',
|
@@ -157,6 +161,7 @@ const config = {
|
|
157
161
|
}
|
158
162
|
],
|
159
163
|
rows: {
|
164
|
+
appendable: false,
|
160
165
|
selectable: {
|
161
166
|
multiple: true
|
162
167
|
},
|
@@ -210,7 +215,7 @@ interface ArgTypes {
|
|
210
215
|
}
|
211
216
|
|
212
217
|
const Template: Story<ArgTypes> = ({ config }: ArgTypes) => html` <link
|
213
|
-
href="https://fonts.googleapis.com/css?family=Material+Icons
|
218
|
+
href="https://fonts.googleapis.com/css?family=Material+Icons"
|
214
219
|
rel="stylesheet"
|
215
220
|
/>
|
216
221
|
<link href="/themes/app-theme.css" rel="stylesheet" />
|
@@ -40,6 +40,7 @@ const fetchHandler: FetchHandler = async ({ page, limit }) => {
|
|
40
40
|
name: 'subitem' + idx,
|
41
41
|
description: 'sub items...',
|
42
42
|
active: Math.round(Math.random() * 2) % 2 ? true : false,
|
43
|
+
accval: Math.random(),
|
43
44
|
children: [
|
44
45
|
...Array.from({ length: 3 }, (_, idx2) => {
|
45
46
|
return {
|
@@ -91,7 +92,7 @@ const config = {
|
|
91
92
|
label: true,
|
92
93
|
header: 'name',
|
93
94
|
record: {
|
94
|
-
editable:
|
95
|
+
editable: true,
|
95
96
|
options: {
|
96
97
|
selectable: false
|
97
98
|
}
|
@@ -99,7 +100,10 @@ const config = {
|
|
99
100
|
filter: 'search',
|
100
101
|
sortable: true,
|
101
102
|
width: 200,
|
102
|
-
fixed: true
|
103
|
+
fixed: true,
|
104
|
+
handlers: {
|
105
|
+
contextmenu: 'contextmenu-tree-mutation'
|
106
|
+
}
|
103
107
|
},
|
104
108
|
{
|
105
109
|
type: 'gutter',
|
@@ -157,6 +161,7 @@ const config = {
|
|
157
161
|
}
|
158
162
|
],
|
159
163
|
rows: {
|
164
|
+
appendable: false,
|
160
165
|
selectable: {
|
161
166
|
multiple: true
|
162
167
|
},
|
@@ -209,7 +214,7 @@ interface ArgTypes {
|
|
209
214
|
}
|
210
215
|
|
211
216
|
const Template: Story<ArgTypes> = ({ config }: ArgTypes) => html` <link
|
212
|
-
href="https://fonts.googleapis.com/css?family=Material+Icons
|
217
|
+
href="https://fonts.googleapis.com/css?family=Material+Icons"
|
213
218
|
rel="stylesheet"
|
214
219
|
/>
|
215
220
|
<link href="/themes/app-theme.css" rel="stylesheet" />
|