@operato/data-grist 7.1.31 → 7.1.32

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.
Files changed (173) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/dist/tsconfig.tsbuildinfo +1 -1
  3. package/package.json +10 -10
  4. package/.storybook/main.js +0 -3
  5. package/.storybook/preview.js +0 -52
  6. package/.storybook/server.mjs +0 -8
  7. package/demo/data-grist-test.html +0 -468
  8. package/demo/favicon.ico +0 -0
  9. package/demo/index.html +0 -541
  10. package/demo/report-test.html +0 -249
  11. package/dist/src/record-view/record-creator.d.ts +0 -17
  12. package/dist/src/record-view/record-creator.js +0 -148
  13. package/dist/src/record-view/record-creator.js.map +0 -1
  14. package/src/accumulator/accumulator.ts +0 -63
  15. package/src/configure/column-builder.ts +0 -114
  16. package/src/configure/config-builder.ts +0 -40
  17. package/src/configure/filters-option-builder.ts +0 -8
  18. package/src/configure/imex-option-builder.ts +0 -5
  19. package/src/configure/list-option-builder.ts +0 -9
  20. package/src/configure/rows-option-builder.ts +0 -38
  21. package/src/configure/tree-option-builder.ts +0 -22
  22. package/src/configure/zero-config.ts +0 -83
  23. package/src/const.ts +0 -1
  24. package/src/data-card/data-card-field.ts +0 -94
  25. package/src/data-card/data-card-gutter-menu.ts +0 -94
  26. package/src/data-card/data-card-gutter.ts +0 -103
  27. package/src/data-card/data-card.ts +0 -154
  28. package/src/data-card/event-handlers/record-card-click-handler.ts +0 -34
  29. package/src/data-card/event-handlers/record-card-dblclick-handler.ts +0 -34
  30. package/src/data-card/record-card.ts +0 -289
  31. package/src/data-consumer.ts +0 -11
  32. package/src/data-grid/data-grid-accum-field.ts +0 -109
  33. package/src/data-grid/data-grid-body-style.ts +0 -99
  34. package/src/data-grid/data-grid-body.ts +0 -753
  35. package/src/data-grid/data-grid-field.ts +0 -236
  36. package/src/data-grid/data-grid-footer.ts +0 -117
  37. package/src/data-grid/data-grid-header.ts +0 -574
  38. package/src/data-grid/data-grid.ts +0 -293
  39. package/src/data-grid/event-handlers/data-grid-body-click-handler.ts +0 -69
  40. package/src/data-grid/event-handlers/data-grid-body-contextmenu-handler.ts +0 -32
  41. package/src/data-grid/event-handlers/data-grid-body-dblclick-handler.ts +0 -42
  42. package/src/data-grid/event-handlers/data-grid-body-focus-change-handler.ts +0 -24
  43. package/src/data-grid/event-handlers/data-grid-body-keydown-handler.ts +0 -234
  44. package/src/data-grist.ts +0 -1233
  45. package/src/data-list/data-list-field.ts +0 -82
  46. package/src/data-list/data-list-gutter.ts +0 -108
  47. package/src/data-list/data-list.ts +0 -145
  48. package/src/data-list/event-handlers/record-partial-click-handler.ts +0 -34
  49. package/src/data-list/event-handlers/record-partial-dblclick-handler.ts +0 -33
  50. package/src/data-list/event-handlers/record-partial-long-press-handler.ts +0 -33
  51. package/src/data-list/record-partial.ts +0 -255
  52. package/src/data-manipulator.ts +0 -426
  53. package/src/data-provider.ts +0 -271
  54. package/src/data-report/data-report-body-style.ts +0 -58
  55. package/src/data-report/data-report-body.ts +0 -189
  56. package/src/data-report/data-report-component.ts +0 -138
  57. package/src/data-report/data-report-field.ts +0 -83
  58. package/src/data-report/data-report-header.ts +0 -242
  59. package/src/data-report/event-handlers/data-report-body-click-handler.ts +0 -38
  60. package/src/data-report/event-handlers/data-report-body-dblclick-handler.ts +0 -25
  61. package/src/data-report/event-handlers/data-report-body-keydown-handler.ts +0 -68
  62. package/src/data-report.ts +0 -424
  63. package/src/editors/index.ts +0 -4
  64. package/src/editors/ox-grist-editor-checkbox.ts +0 -28
  65. package/src/editors/ox-grist-editor-color.ts +0 -10
  66. package/src/editors/ox-grist-editor-date.ts +0 -10
  67. package/src/editors/ox-grist-editor-datetime.ts +0 -27
  68. package/src/editors/ox-grist-editor-email.ts +0 -10
  69. package/src/editors/ox-grist-editor-file.ts +0 -28
  70. package/src/editors/ox-grist-editor-image.ts +0 -31
  71. package/src/editors/ox-grist-editor-month.ts +0 -10
  72. package/src/editors/ox-grist-editor-multiple-select.ts +0 -57
  73. package/src/editors/ox-grist-editor-number.ts +0 -27
  74. package/src/editors/ox-grist-editor-password.ts +0 -10
  75. package/src/editors/ox-grist-editor-select.ts +0 -55
  76. package/src/editors/ox-grist-editor-tel.ts +0 -10
  77. package/src/editors/ox-grist-editor-text.ts +0 -14
  78. package/src/editors/ox-grist-editor-textarea.ts +0 -16
  79. package/src/editors/ox-grist-editor-time.ts +0 -10
  80. package/src/editors/ox-grist-editor-tree.ts +0 -27
  81. package/src/editors/ox-grist-editor-varname.ts +0 -36
  82. package/src/editors/ox-grist-editor-week.ts +0 -10
  83. package/src/editors/ox-grist-editor.ts +0 -207
  84. package/src/editors/ox-input-tree.ts +0 -226
  85. package/src/editors/registry.ts +0 -82
  86. package/src/empty-note.ts +0 -46
  87. package/src/filters/filter-checkbox.ts +0 -49
  88. package/src/filters/filter-input-barcode.ts +0 -34
  89. package/src/filters/filter-input.ts +0 -30
  90. package/src/filters/filter-range-date.ts +0 -81
  91. package/src/filters/filter-range-number.ts +0 -64
  92. package/src/filters/filter-select-buttons.ts +0 -60
  93. package/src/filters/filter-select.ts +0 -68
  94. package/src/filters/filter-styles.ts +0 -119
  95. package/src/filters/filters-form.ts +0 -476
  96. package/src/filters/index.ts +0 -10
  97. package/src/filters/registry.ts +0 -56
  98. package/src/formatters/date-formatter.ts +0 -3
  99. package/src/formatters/index.ts +0 -1
  100. package/src/formatters/number-formatter.ts +0 -3
  101. package/src/formatters/registry.ts +0 -30
  102. package/src/formatters/text-formatter.ts +0 -3
  103. package/src/gutters/gutter-button.ts +0 -51
  104. package/src/gutters/gutter-dirty.ts +0 -96
  105. package/src/gutters/gutter-row-selector.ts +0 -89
  106. package/src/gutters/gutter-sequence.ts +0 -54
  107. package/src/gutters/index.ts +0 -1
  108. package/src/gutters/registry.ts +0 -32
  109. package/src/handlers/contextmenu-tree-mutation.ts +0 -80
  110. package/src/handlers/index.ts +0 -1
  111. package/src/handlers/move-down.ts +0 -44
  112. package/src/handlers/move-up.ts +0 -44
  113. package/src/handlers/record-copy.ts +0 -38
  114. package/src/handlers/record-delete.ts +0 -30
  115. package/src/handlers/record-view-handler.ts +0 -27
  116. package/src/handlers/registry.ts +0 -42
  117. package/src/handlers/select-row-toggle.ts +0 -30
  118. package/src/handlers/select-row.ts +0 -27
  119. package/src/index.ts +0 -17
  120. package/src/personalizer/index.ts +0 -1
  121. package/src/personalizer/ox-grist-filter-personalizer.ts +0 -192
  122. package/src/personalizer/ox-grist-personalizer.ts +0 -226
  123. package/src/record-view/event-handlers/record-view-body-click-handler.ts +0 -33
  124. package/src/record-view/event-handlers/record-view-body-keydown-handler.ts +0 -26
  125. package/src/record-view/index.ts +0 -2
  126. package/src/record-view/ox-record-creator.ts +0 -289
  127. package/src/record-view/record-view-body.ts +0 -250
  128. package/src/record-view/record-view-handler.ts +0 -86
  129. package/src/record-view/record-view.ts +0 -122
  130. package/src/renderers/index.ts +0 -14
  131. package/src/renderers/ox-grist-renderer-boolean.ts +0 -43
  132. package/src/renderers/ox-grist-renderer-color.ts +0 -15
  133. package/src/renderers/ox-grist-renderer-date.ts +0 -62
  134. package/src/renderers/ox-grist-renderer-file.ts +0 -31
  135. package/src/renderers/ox-grist-renderer-image.ts +0 -27
  136. package/src/renderers/ox-grist-renderer-json5.ts +0 -36
  137. package/src/renderers/ox-grist-renderer-link.ts +0 -17
  138. package/src/renderers/ox-grist-renderer-password.ts +0 -7
  139. package/src/renderers/ox-grist-renderer-progress.ts +0 -45
  140. package/src/renderers/ox-grist-renderer-select.ts +0 -58
  141. package/src/renderers/ox-grist-renderer-text.ts +0 -16
  142. package/src/renderers/ox-grist-renderer-textarea.ts +0 -7
  143. package/src/renderers/ox-grist-renderer-tree.ts +0 -189
  144. package/src/renderers/ox-grist-renderer.ts +0 -35
  145. package/src/renderers/registry.ts +0 -111
  146. package/src/sorters/sorters-control.ts +0 -143
  147. package/src/types.ts +0 -813
  148. package/src/utils/index.ts +0 -2
  149. package/src/utils/list-param.ts +0 -72
  150. package/src/utils/supports-passive.ts +0 -13
  151. package/stories/accumulator-format.stories.ts +0 -276
  152. package/stories/barcode-input-filter.stories.ts +0 -216
  153. package/stories/bounded-select-filters.stories.ts +0 -333
  154. package/stories/bounded-select-record.stories.ts +0 -336
  155. package/stories/click-event-custom.stories.ts +0 -288
  156. package/stories/click-event.stories.ts +0 -283
  157. package/stories/creatable-only-column.stories.ts +0 -253
  158. package/stories/default-filters.stories.ts +0 -241
  159. package/stories/dynamic-editable.stories.ts +0 -313
  160. package/stories/empty-sorters.stories.ts +0 -180
  161. package/stories/explicit-fetch.stories.ts +0 -186
  162. package/stories/fixed-column.stories.ts +0 -416
  163. package/stories/grid-setting.stories.ts +0 -501
  164. package/stories/grist-modes.stories.ts +0 -451
  165. package/stories/group-header.stories.ts +0 -442
  166. package/stories/record-view.stories.ts +0 -143
  167. package/stories/textarea.stories.ts +0 -261
  168. package/stories/tree-column-with-checkbox.stories.ts +0 -297
  169. package/stories/tree-column.stories.ts +0 -296
  170. package/tsconfig.json +0 -26
  171. package/web-dev-server.config.mjs +0 -27
  172. package/web-test-runner.config.mjs +0 -45
  173. package/yarn-error.log +0 -16971
@@ -1,288 +0,0 @@
1
- import '../src/index.js'
2
- import '../src/filters/filters-form.js'
3
- import '../src/sorters/sorters-control.js'
4
- import '../src/record-view/ox-record-creator.js'
5
- import '@operato/popup/ox-popup-list.js'
6
- import '@material/web/icon/icon.js'
7
-
8
- import { html, TemplateResult } from 'lit'
9
- import { styles as MDTypeScaleStyles } from '@material/web/typography/md-typescale-styles'
10
-
11
- import { FetchHandler, FetchOption, GristEventHandler } from '../src/types.js'
12
-
13
- import { CommonHeaderStyles, CommonGristStyles } from '@operato/styles'
14
-
15
- const fetchHandler: FetchHandler = async ({ page, limit }: FetchOption) => {
16
- var total = 25
17
- var start = (page! - 1) * limit!
18
-
19
- await new Promise(resolve => setTimeout(resolve, 500))
20
-
21
- return {
22
- total,
23
- records: Array(limit! * page! > total ? total % limit! : limit)
24
- .fill('')
25
- .map((item, idx) => {
26
- return {
27
- id: String(idx),
28
- name: idx % 2 ? `shnam-${start + idx + 1}` : `heartyoh-${start + idx + 1}`,
29
- description: idx % 2 ? `hatiolabmanager${start + idx + 1}1234567890` : `hatiosea manager-${start + idx + 1}`,
30
- accval: Math.random(),
31
- accval2: Math.round(Math.random() * 15),
32
- createdAt: Date.now(),
33
- updatedAt: Date.now()
34
- }
35
- })
36
- }
37
- }
38
-
39
- const config = {
40
- columns: [
41
- {
42
- type: 'gutter',
43
- gutterName: 'dirty'
44
- },
45
- {
46
- type: 'gutter',
47
- gutterName: 'sequence'
48
- },
49
- {
50
- type: 'gutter',
51
- gutterName: 'row-selector',
52
- multiple: true
53
- },
54
- {
55
- type: 'gutter',
56
- gutterName: 'button',
57
- icon: 'add',
58
- title: 'add',
59
- handlers: {
60
- click: ((columns, data, column, record, rowIndex, target, e) =>
61
- console.log('column - clicked')) as GristEventHandler,
62
- dblclick: ((columns, data, column, record, rowIndex, target, e) =>
63
- console.log('column - dblclicked')) as GristEventHandler,
64
- contextmenu: ((columns, data, column, record, rowIndex, target, e) =>
65
- console.log('column - contextmenued')) as GristEventHandler,
66
- focus: ((columns, data, column, record, rowIndex, target, e) =>
67
- console.log('column - focused')) as GristEventHandler
68
- }
69
- },
70
- {
71
- type: 'string',
72
- name: 'id',
73
- hidden: true
74
- },
75
- {
76
- type: 'string',
77
- name: 'name',
78
- label: true,
79
- header: 'name',
80
- record: {
81
- editable: true
82
- },
83
- filter: 'search',
84
- sortable: true,
85
- width: 120,
86
- fixed: true
87
- },
88
- {
89
- type: 'string',
90
- name: 'description',
91
- header: {
92
- renderer: () => 'description',
93
- style: 'text-transform: none;'
94
- },
95
- filter: 'search',
96
- record: {
97
- editable: true,
98
- align: 'left'
99
- },
100
- width: 200
101
- },
102
- {
103
- type: 'number',
104
- name: 'accval',
105
- label: true,
106
- header: 'accval',
107
- record: {
108
- editable: true,
109
- align: 'right',
110
- defaultValue: 100,
111
- format: '+$#,##0.00'
112
- },
113
- accumulator: 'avg',
114
- sortable: true,
115
- width: 130
116
- },
117
- {
118
- type: 'number',
119
- name: 'accval2',
120
- label: true,
121
- header: 'accval2',
122
- record: {
123
- editable: true,
124
- align: 'right',
125
- renderer: (value: any, column: any, record: any) => {
126
- return value && Intl.NumberFormat('en-US').format(value)
127
- }
128
- },
129
- accumulator: {
130
- type: 'sum',
131
- tag: true
132
- },
133
- sortable: true,
134
- width: 130
135
- },
136
- {
137
- type: 'datetime',
138
- name: 'updatedAt',
139
- header: 'updated at',
140
- record: {
141
- editable: true,
142
- defaultValue: {
143
- name: 'now'
144
- },
145
- disabled: true
146
- },
147
- filter: 'between',
148
- sortable: true,
149
- width: 180
150
- },
151
- {
152
- type: 'datetime',
153
- name: 'createdAt',
154
- header: 'created at',
155
- record: {
156
- editable: false
157
- },
158
- sortable: true,
159
- width: 180
160
- }
161
- ],
162
- rows: {
163
- selectable: {
164
- multiple: false
165
- },
166
- handlers: {
167
- click: ((columns, data, column, record, rowIndex, target, e) =>
168
- console.log('row - clicked')) as GristEventHandler,
169
- dblclick: ((columns, data, column, record, rowIndex, target, e) =>
170
- console.log('row - dblclicked')) as GristEventHandler,
171
- contextmenu: ((columns, data, column, record, rowIndex, target, e) =>
172
- console.log('row - contextmenued')) as GristEventHandler,
173
- focus: ((columns, data, column, record, rowIndex, target, e) => console.log('row - focused')) as GristEventHandler
174
- },
175
- accumulator: true
176
- },
177
- sorters: [
178
- {
179
- name: 'name',
180
- desc: true
181
- }
182
- ],
183
- pagination: {
184
- pages: [20, 30, 50, 100, 200]
185
- }
186
- }
187
-
188
- export default {
189
- title: 'click events for custom popup in ox-grist',
190
- component: 'ox-grist',
191
- argTypes: {
192
- config: { control: 'object' },
193
- mode: { control: 'select', options: ['GRID', 'LIST', 'CARD'] },
194
- urlParamsSensitive: { control: 'boolean' },
195
- withoutSearch: { control: 'boolean' },
196
- preventCloseOnBlur: { control: 'boolean' }
197
- }
198
- }
199
-
200
- interface Story<T> {
201
- (args: T): TemplateResult
202
- args?: Partial<T>
203
- argTypes?: Record<string, unknown>
204
- }
205
-
206
- interface ArgTypes {
207
- config: object
208
- mode: 'GRID' | 'LIST' | 'CARD'
209
- urlParamsSensitive: boolean
210
- withoutSearch: boolean
211
- preventCloseOnBlur: boolean
212
- fetchHandler: FetchHandler
213
- }
214
-
215
- const Template: Story<ArgTypes> = ({
216
- config,
217
- mode = 'GRID',
218
- urlParamsSensitive = false,
219
- withoutSearch = false,
220
- preventCloseOnBlur = false,
221
- fetchHandler
222
- }: ArgTypes) =>
223
- html` <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@400;500;700&display=swap" rel="stylesheet" />
224
-
225
- <link href="/themes/light.css" rel="stylesheet" />
226
- <link href="/themes/dark.css" rel="stylesheet" />
227
- <link href="/themes/spacing.css" rel="stylesheet" />
228
- <link href="/themes/grist-theme.css" rel="stylesheet" />
229
-
230
- <link
231
- href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL@20..48,100..700,0..1"
232
- rel="stylesheet"
233
- />
234
- <link
235
- href="https://fonts.googleapis.com/css2?family=Material+Symbols+Rounded:opsz,wght,FILL@20..48,100..700,0..1"
236
- rel="stylesheet"
237
- />
238
- <link
239
- href="https://fonts.googleapis.com/css2?family=Material+Symbols+Sharp:opsz,wght,FILL@20..48,100..700,0..1"
240
- rel="stylesheet"
241
- />
242
-
243
- <style>
244
- ${MDTypeScaleStyles.cssText}
245
- </style>
246
-
247
- <style>
248
- ${CommonGristStyles.cssText}
249
- ${CommonHeaderStyles.cssText}
250
- </style>
251
-
252
- <style>
253
- ox-grist {
254
- height: 600px;
255
- }
256
-
257
- ox-filters-form {
258
- flex: 1;
259
- }
260
- </style>
261
-
262
- <ox-grist
263
- mode=${mode}
264
- .config=${config}
265
- .fetchHandler=${fetchHandler}
266
- ?url-params-sensitive=${urlParamsSensitive}
267
- @filters-change=${(e: Event) => console.log('filters', (e.target as any).filters)}
268
- >
269
- <div slot="headroom" class="header">
270
- <div class="filters">
271
- <ox-filters-form ?without-search=${withoutSearch} autofocus></ox-filters-form>
272
- <ox-record-creator id="add" light-popup ?prevent-close-on-blur=${preventCloseOnBlur}>
273
- <button><md-icon>add</md-icon></button>
274
- <div slot="popup">
275
- <label>Test</label>
276
- <input />
277
- </div>
278
- </ox-record-creator>
279
- </div>
280
- </div>
281
- </ox-grist>`
282
-
283
- export const Regular = Template.bind({})
284
- Regular.args = {
285
- config,
286
- fetchHandler,
287
- mode: 'GRID'
288
- }
@@ -1,283 +0,0 @@
1
- import '../src/index.js'
2
- import '../src/filters/filters-form.js'
3
- import '../src/sorters/sorters-control.js'
4
- import '../src/record-view/ox-record-creator.js'
5
- import '@operato/popup/ox-popup-list.js'
6
- import '@material/web/icon/icon.js'
7
-
8
- import { html, TemplateResult } from 'lit'
9
- import { styles as MDTypeScaleStyles } from '@material/web/typography/md-typescale-styles'
10
-
11
- import { FetchHandler, FetchOption, GristEventHandler } from '../src/types.js'
12
-
13
- import { CommonHeaderStyles, CommonGristStyles } from '@operato/styles'
14
-
15
- const fetchHandler: FetchHandler = async ({ page, limit }: FetchOption) => {
16
- var total = 25
17
- var start = (page! - 1) * limit!
18
-
19
- await new Promise(resolve => setTimeout(resolve, 500))
20
-
21
- return {
22
- total,
23
- records: Array(limit! * page! > total ? total % limit! : limit)
24
- .fill('')
25
- .map((item, idx) => {
26
- return {
27
- id: String(idx),
28
- name: idx % 2 ? `shnam-${start + idx + 1}` : `heartyoh-${start + idx + 1}`,
29
- description: idx % 2 ? `hatiolabmanager${start + idx + 1}1234567890` : `hatiosea manager-${start + idx + 1}`,
30
- accval: Math.random(),
31
- accval2: Math.round(Math.random() * 15),
32
- createdAt: Date.now(),
33
- updatedAt: Date.now()
34
- }
35
- })
36
- }
37
- }
38
-
39
- const config = {
40
- columns: [
41
- {
42
- type: 'gutter',
43
- gutterName: 'dirty'
44
- },
45
- {
46
- type: 'gutter',
47
- gutterName: 'sequence'
48
- },
49
- {
50
- type: 'gutter',
51
- gutterName: 'row-selector',
52
- multiple: true
53
- },
54
- {
55
- type: 'gutter',
56
- gutterName: 'button',
57
- icon: 'add',
58
- title: 'add',
59
- handlers: {
60
- click: ((columns, data, column, record, rowIndex, target, e) =>
61
- console.log('column - clicked')) as GristEventHandler,
62
- dblclick: ((columns, data, column, record, rowIndex, target, e) =>
63
- console.log('column - dblclicked')) as GristEventHandler,
64
- contextmenu: ((columns, data, column, record, rowIndex, target, e) =>
65
- console.log('column - contextmenued')) as GristEventHandler,
66
- focus: ((columns, data, column, record, rowIndex, target, e) =>
67
- console.log('column - focused')) as GristEventHandler
68
- }
69
- },
70
- {
71
- type: 'string',
72
- name: 'id',
73
- hidden: true
74
- },
75
- {
76
- type: 'string',
77
- name: 'name',
78
- label: true,
79
- header: 'name',
80
- record: {
81
- editable: true
82
- },
83
- filter: 'search',
84
- sortable: true,
85
- width: 120,
86
- fixed: true
87
- },
88
- {
89
- type: 'string',
90
- name: 'description',
91
- header: {
92
- renderer: () => 'description',
93
- style: 'text-transform: none;'
94
- },
95
- filter: 'search',
96
- record: {
97
- editable: true,
98
- align: 'left'
99
- },
100
- width: 200
101
- },
102
- {
103
- type: 'number',
104
- name: 'accval',
105
- label: true,
106
- header: 'accval',
107
- record: {
108
- editable: true,
109
- align: 'right',
110
- defaultValue: 100,
111
- format: '+$#,##0.00'
112
- },
113
- accumulator: 'avg',
114
- sortable: true,
115
- width: 130
116
- },
117
- {
118
- type: 'number',
119
- name: 'accval2',
120
- label: true,
121
- header: 'accval2',
122
- record: {
123
- editable: true,
124
- align: 'right',
125
- renderer: (value: any, column: any, record: any) => {
126
- return value && Intl.NumberFormat('en-US').format(value)
127
- }
128
- },
129
- accumulator: {
130
- type: 'sum',
131
- tag: true
132
- },
133
- sortable: true,
134
- width: 130
135
- },
136
- {
137
- type: 'datetime',
138
- name: 'updatedAt',
139
- header: 'updated at',
140
- record: {
141
- editable: true,
142
- defaultValue: {
143
- name: 'now'
144
- }
145
- },
146
- filter: 'between',
147
- sortable: true,
148
- width: 180
149
- },
150
- {
151
- type: 'datetime',
152
- name: 'createdAt',
153
- header: 'created at',
154
- record: {
155
- editable: false
156
- },
157
- sortable: true,
158
- width: 180
159
- }
160
- ],
161
- rows: {
162
- selectable: {
163
- multiple: false
164
- },
165
- handlers: {
166
- click: ((columns, data, column, record, rowIndex, target, e) =>
167
- console.log('row - clicked')) as GristEventHandler,
168
- dblclick: ((columns, data, column, record, rowIndex, target, e) =>
169
- console.log('row - dblclicked')) as GristEventHandler,
170
- contextmenu: ((columns, data, column, record, rowIndex, target, e) =>
171
- console.log('row - contextmenued')) as GristEventHandler,
172
- focus: ((columns, data, column, record, rowIndex, target, e) => console.log('row - focused')) as GristEventHandler
173
- },
174
- accumulator: true
175
- },
176
- sorters: [
177
- {
178
- name: 'name',
179
- desc: true
180
- }
181
- ],
182
- pagination: {
183
- pages: [20, 30, 50, 100, 200]
184
- }
185
- }
186
-
187
- export default {
188
- title: 'click events in ox-grist',
189
- component: 'ox-grist',
190
- argTypes: {
191
- config: { control: 'object' },
192
- mode: { control: 'select', options: ['GRID', 'LIST', 'CARD'] },
193
- urlParamsSensitive: { control: 'boolean' },
194
- withoutSearch: { control: 'boolean' },
195
- preventCloseOnBlur: { control: 'boolean' }
196
- }
197
- }
198
-
199
- interface Story<T> {
200
- (args: T): TemplateResult
201
- args?: Partial<T>
202
- argTypes?: Record<string, unknown>
203
- }
204
-
205
- interface ArgTypes {
206
- config: object
207
- mode: 'GRID' | 'LIST' | 'CARD'
208
- urlParamsSensitive: boolean
209
- withoutSearch: boolean
210
- preventCloseOnBlur: boolean
211
- fetchHandler: FetchHandler
212
- }
213
-
214
- const Template: Story<ArgTypes> = ({
215
- config,
216
- mode = 'GRID',
217
- urlParamsSensitive = false,
218
- withoutSearch = false,
219
- preventCloseOnBlur = false,
220
- fetchHandler
221
- }: ArgTypes) =>
222
- html` <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@400;500;700&display=swap" rel="stylesheet" />
223
-
224
- <link href="/themes/light.css" rel="stylesheet" />
225
- <link href="/themes/dark.css" rel="stylesheet" />
226
- <link href="/themes/spacing.css" rel="stylesheet" />
227
- <link href="/themes/grist-theme.css" rel="stylesheet" />
228
-
229
- <link
230
- href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL@20..48,100..700,0..1"
231
- rel="stylesheet"
232
- />
233
- <link
234
- href="https://fonts.googleapis.com/css2?family=Material+Symbols+Rounded:opsz,wght,FILL@20..48,100..700,0..1"
235
- rel="stylesheet"
236
- />
237
- <link
238
- href="https://fonts.googleapis.com/css2?family=Material+Symbols+Sharp:opsz,wght,FILL@20..48,100..700,0..1"
239
- rel="stylesheet"
240
- />
241
-
242
- <style>
243
- ${MDTypeScaleStyles.cssText}
244
- </style>
245
-
246
- <style>
247
- ${CommonGristStyles.cssText}
248
- ${CommonHeaderStyles.cssText}
249
- </style>
250
-
251
- <style>
252
- ox-grist {
253
- height: 600px;
254
- }
255
-
256
- ox-filters-form {
257
- flex: 1;
258
- }
259
- </style>
260
-
261
- <ox-grist
262
- mode=${mode}
263
- .config=${config}
264
- .fetchHandler=${fetchHandler}
265
- ?url-params-sensitive=${urlParamsSensitive}
266
- @filters-change=${(e: Event) => console.log('filters', (e.target as any).filters)}
267
- >
268
- <div slot="headroom" class="header">
269
- <div class="filters">
270
- <ox-filters-form ?without-search=${withoutSearch} autofocus></ox-filters-form>
271
- <ox-record-creator id="add" light-popup ?prevent-close-on-blur=${preventCloseOnBlur}>
272
- <button><md-icon>add</md-icon></button>
273
- </ox-record-creator>
274
- </div>
275
- </div>
276
- </ox-grist>`
277
-
278
- export const Regular = Template.bind({})
279
- Regular.args = {
280
- config,
281
- fetchHandler,
282
- mode: 'GRID'
283
- }