@operato/data-grist 7.1.30 → 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 (175) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/src/data-grid/data-grid-body-style.js +2 -2
  3. package/dist/src/data-grid/data-grid-body-style.js.map +1 -1
  4. package/dist/tsconfig.tsbuildinfo +1 -1
  5. package/package.json +10 -10
  6. package/.storybook/main.js +0 -3
  7. package/.storybook/preview.js +0 -52
  8. package/.storybook/server.mjs +0 -8
  9. package/demo/data-grist-test.html +0 -468
  10. package/demo/favicon.ico +0 -0
  11. package/demo/index.html +0 -541
  12. package/demo/report-test.html +0 -249
  13. package/dist/src/record-view/record-creator.d.ts +0 -17
  14. package/dist/src/record-view/record-creator.js +0 -148
  15. package/dist/src/record-view/record-creator.js.map +0 -1
  16. package/src/accumulator/accumulator.ts +0 -63
  17. package/src/configure/column-builder.ts +0 -114
  18. package/src/configure/config-builder.ts +0 -40
  19. package/src/configure/filters-option-builder.ts +0 -8
  20. package/src/configure/imex-option-builder.ts +0 -5
  21. package/src/configure/list-option-builder.ts +0 -9
  22. package/src/configure/rows-option-builder.ts +0 -38
  23. package/src/configure/tree-option-builder.ts +0 -22
  24. package/src/configure/zero-config.ts +0 -83
  25. package/src/const.ts +0 -1
  26. package/src/data-card/data-card-field.ts +0 -94
  27. package/src/data-card/data-card-gutter-menu.ts +0 -94
  28. package/src/data-card/data-card-gutter.ts +0 -103
  29. package/src/data-card/data-card.ts +0 -154
  30. package/src/data-card/event-handlers/record-card-click-handler.ts +0 -34
  31. package/src/data-card/event-handlers/record-card-dblclick-handler.ts +0 -34
  32. package/src/data-card/record-card.ts +0 -289
  33. package/src/data-consumer.ts +0 -11
  34. package/src/data-grid/data-grid-accum-field.ts +0 -109
  35. package/src/data-grid/data-grid-body-style.ts +0 -99
  36. package/src/data-grid/data-grid-body.ts +0 -753
  37. package/src/data-grid/data-grid-field.ts +0 -236
  38. package/src/data-grid/data-grid-footer.ts +0 -117
  39. package/src/data-grid/data-grid-header.ts +0 -574
  40. package/src/data-grid/data-grid.ts +0 -293
  41. package/src/data-grid/event-handlers/data-grid-body-click-handler.ts +0 -69
  42. package/src/data-grid/event-handlers/data-grid-body-contextmenu-handler.ts +0 -32
  43. package/src/data-grid/event-handlers/data-grid-body-dblclick-handler.ts +0 -42
  44. package/src/data-grid/event-handlers/data-grid-body-focus-change-handler.ts +0 -24
  45. package/src/data-grid/event-handlers/data-grid-body-keydown-handler.ts +0 -234
  46. package/src/data-grist.ts +0 -1233
  47. package/src/data-list/data-list-field.ts +0 -82
  48. package/src/data-list/data-list-gutter.ts +0 -108
  49. package/src/data-list/data-list.ts +0 -145
  50. package/src/data-list/event-handlers/record-partial-click-handler.ts +0 -34
  51. package/src/data-list/event-handlers/record-partial-dblclick-handler.ts +0 -33
  52. package/src/data-list/event-handlers/record-partial-long-press-handler.ts +0 -33
  53. package/src/data-list/record-partial.ts +0 -255
  54. package/src/data-manipulator.ts +0 -426
  55. package/src/data-provider.ts +0 -271
  56. package/src/data-report/data-report-body-style.ts +0 -58
  57. package/src/data-report/data-report-body.ts +0 -189
  58. package/src/data-report/data-report-component.ts +0 -138
  59. package/src/data-report/data-report-field.ts +0 -83
  60. package/src/data-report/data-report-header.ts +0 -242
  61. package/src/data-report/event-handlers/data-report-body-click-handler.ts +0 -38
  62. package/src/data-report/event-handlers/data-report-body-dblclick-handler.ts +0 -25
  63. package/src/data-report/event-handlers/data-report-body-keydown-handler.ts +0 -68
  64. package/src/data-report.ts +0 -424
  65. package/src/editors/index.ts +0 -4
  66. package/src/editors/ox-grist-editor-checkbox.ts +0 -28
  67. package/src/editors/ox-grist-editor-color.ts +0 -10
  68. package/src/editors/ox-grist-editor-date.ts +0 -10
  69. package/src/editors/ox-grist-editor-datetime.ts +0 -27
  70. package/src/editors/ox-grist-editor-email.ts +0 -10
  71. package/src/editors/ox-grist-editor-file.ts +0 -28
  72. package/src/editors/ox-grist-editor-image.ts +0 -31
  73. package/src/editors/ox-grist-editor-month.ts +0 -10
  74. package/src/editors/ox-grist-editor-multiple-select.ts +0 -57
  75. package/src/editors/ox-grist-editor-number.ts +0 -27
  76. package/src/editors/ox-grist-editor-password.ts +0 -10
  77. package/src/editors/ox-grist-editor-select.ts +0 -55
  78. package/src/editors/ox-grist-editor-tel.ts +0 -10
  79. package/src/editors/ox-grist-editor-text.ts +0 -14
  80. package/src/editors/ox-grist-editor-textarea.ts +0 -16
  81. package/src/editors/ox-grist-editor-time.ts +0 -10
  82. package/src/editors/ox-grist-editor-tree.ts +0 -27
  83. package/src/editors/ox-grist-editor-varname.ts +0 -36
  84. package/src/editors/ox-grist-editor-week.ts +0 -10
  85. package/src/editors/ox-grist-editor.ts +0 -207
  86. package/src/editors/ox-input-tree.ts +0 -226
  87. package/src/editors/registry.ts +0 -82
  88. package/src/empty-note.ts +0 -46
  89. package/src/filters/filter-checkbox.ts +0 -49
  90. package/src/filters/filter-input-barcode.ts +0 -34
  91. package/src/filters/filter-input.ts +0 -30
  92. package/src/filters/filter-range-date.ts +0 -81
  93. package/src/filters/filter-range-number.ts +0 -64
  94. package/src/filters/filter-select-buttons.ts +0 -60
  95. package/src/filters/filter-select.ts +0 -68
  96. package/src/filters/filter-styles.ts +0 -119
  97. package/src/filters/filters-form.ts +0 -476
  98. package/src/filters/index.ts +0 -10
  99. package/src/filters/registry.ts +0 -56
  100. package/src/formatters/date-formatter.ts +0 -3
  101. package/src/formatters/index.ts +0 -1
  102. package/src/formatters/number-formatter.ts +0 -3
  103. package/src/formatters/registry.ts +0 -30
  104. package/src/formatters/text-formatter.ts +0 -3
  105. package/src/gutters/gutter-button.ts +0 -51
  106. package/src/gutters/gutter-dirty.ts +0 -96
  107. package/src/gutters/gutter-row-selector.ts +0 -89
  108. package/src/gutters/gutter-sequence.ts +0 -54
  109. package/src/gutters/index.ts +0 -1
  110. package/src/gutters/registry.ts +0 -32
  111. package/src/handlers/contextmenu-tree-mutation.ts +0 -80
  112. package/src/handlers/index.ts +0 -1
  113. package/src/handlers/move-down.ts +0 -44
  114. package/src/handlers/move-up.ts +0 -44
  115. package/src/handlers/record-copy.ts +0 -38
  116. package/src/handlers/record-delete.ts +0 -30
  117. package/src/handlers/record-view-handler.ts +0 -27
  118. package/src/handlers/registry.ts +0 -42
  119. package/src/handlers/select-row-toggle.ts +0 -30
  120. package/src/handlers/select-row.ts +0 -27
  121. package/src/index.ts +0 -17
  122. package/src/personalizer/index.ts +0 -1
  123. package/src/personalizer/ox-grist-filter-personalizer.ts +0 -192
  124. package/src/personalizer/ox-grist-personalizer.ts +0 -226
  125. package/src/record-view/event-handlers/record-view-body-click-handler.ts +0 -33
  126. package/src/record-view/event-handlers/record-view-body-keydown-handler.ts +0 -26
  127. package/src/record-view/index.ts +0 -2
  128. package/src/record-view/ox-record-creator.ts +0 -289
  129. package/src/record-view/record-view-body.ts +0 -250
  130. package/src/record-view/record-view-handler.ts +0 -86
  131. package/src/record-view/record-view.ts +0 -122
  132. package/src/renderers/index.ts +0 -14
  133. package/src/renderers/ox-grist-renderer-boolean.ts +0 -43
  134. package/src/renderers/ox-grist-renderer-color.ts +0 -15
  135. package/src/renderers/ox-grist-renderer-date.ts +0 -62
  136. package/src/renderers/ox-grist-renderer-file.ts +0 -31
  137. package/src/renderers/ox-grist-renderer-image.ts +0 -27
  138. package/src/renderers/ox-grist-renderer-json5.ts +0 -36
  139. package/src/renderers/ox-grist-renderer-link.ts +0 -17
  140. package/src/renderers/ox-grist-renderer-password.ts +0 -7
  141. package/src/renderers/ox-grist-renderer-progress.ts +0 -45
  142. package/src/renderers/ox-grist-renderer-select.ts +0 -58
  143. package/src/renderers/ox-grist-renderer-text.ts +0 -16
  144. package/src/renderers/ox-grist-renderer-textarea.ts +0 -7
  145. package/src/renderers/ox-grist-renderer-tree.ts +0 -189
  146. package/src/renderers/ox-grist-renderer.ts +0 -35
  147. package/src/renderers/registry.ts +0 -111
  148. package/src/sorters/sorters-control.ts +0 -143
  149. package/src/types.ts +0 -813
  150. package/src/utils/index.ts +0 -2
  151. package/src/utils/list-param.ts +0 -72
  152. package/src/utils/supports-passive.ts +0 -13
  153. package/stories/accumulator-format.stories.ts +0 -276
  154. package/stories/barcode-input-filter.stories.ts +0 -216
  155. package/stories/bounded-select-filters.stories.ts +0 -333
  156. package/stories/bounded-select-record.stories.ts +0 -336
  157. package/stories/click-event-custom.stories.ts +0 -288
  158. package/stories/click-event.stories.ts +0 -283
  159. package/stories/creatable-only-column.stories.ts +0 -253
  160. package/stories/default-filters.stories.ts +0 -241
  161. package/stories/dynamic-editable.stories.ts +0 -313
  162. package/stories/empty-sorters.stories.ts +0 -180
  163. package/stories/explicit-fetch.stories.ts +0 -186
  164. package/stories/fixed-column.stories.ts +0 -416
  165. package/stories/grid-setting.stories.ts +0 -501
  166. package/stories/grist-modes.stories.ts +0 -451
  167. package/stories/group-header.stories.ts +0 -442
  168. package/stories/record-view.stories.ts +0 -143
  169. package/stories/textarea.stories.ts +0 -261
  170. package/stories/tree-column-with-checkbox.stories.ts +0 -297
  171. package/stories/tree-column.stories.ts +0 -296
  172. package/tsconfig.json +0 -26
  173. package/web-dev-server.config.mjs +0 -27
  174. package/web-test-runner.config.mjs +0 -45
  175. package/yarn-error.log +0 -16971
@@ -1,442 +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 { CommonHeaderStyles, CommonGristStyles } from '@operato/styles'
12
-
13
- import {
14
- ColumnConfig,
15
- FetchHandler,
16
- GristClassifier,
17
- GristEventHandlerSet,
18
- GristRecord,
19
- ValidationCallback
20
- } from '../src/types.js'
21
- import { OxPrompt } from '@operato/popup'
22
-
23
- const fetchHandler: FetchHandler = async ({ page, limit }) => {
24
- var total = 120993
25
- var start = (page! - 1) * limit!
26
-
27
- await new Promise(resolve => setTimeout(resolve, 500))
28
-
29
- return {
30
- total,
31
- records: Array(limit! * page! > total ? total % limit! : limit)
32
- .fill('')
33
- .map((item, idx) => {
34
- return {
35
- id: String(idx),
36
- name: idx % 2 ? `shnam-${start + idx + 1}` : `heartyoh-${start + idx + 1}`,
37
- description: idx % 2 ? `hatiolabmanager${start + idx + 1}1234567890` : `hatiosea manager-${start + idx + 1}`,
38
- email: idx % 2 ? `shnam-${start + idx + 1}@gmail.com` : `heartyoh-${start + idx + 1}@gmail.com`,
39
- active: Math.round(Math.random() * 2) % 2 ? true : false,
40
- barcode: idx % 2 ? `1234567890${start + idx + 1}` : `0987654321${start + idx + 1}`,
41
- company:
42
- idx % 2
43
- ? {
44
- id: '2',
45
- name: 'HatioLAB',
46
- description: `경기도 성남시-${start + idx + 1}`
47
- }
48
- : {
49
- id: '3',
50
- name: 'HatioSEA',
51
- description: `말레이시아 세티아알람-${start + idx + 1}`
52
- },
53
- thumbnail:
54
- idx % 4 === 0
55
- ? '' /* no source */
56
- : idx % 4 === 1
57
- ? `http://www.hatiolab.com/assets/img/operato-biz3.png`
58
- : idx % 4 === 2
59
- ? `http://www.hatiolab.com/assets/img/thingsboard-30.png`
60
- : `http://www.hatiolab.com/wrong-url.png` /* wrong source */,
61
- role: ['admin', 'worker', 'tester'][idx % 3],
62
- color: idx % 2 ? `#87f018` : `#180f87`,
63
- rate: Math.round(Math.random() * 100),
64
- dynamicType: ['text', 'email', 'checkbox', 'color', 'progress', 'barcode'][idx % 5],
65
- dynamicValue: ['abcdefghijkl', 'heartyoh@hatiolab.com', 'true', 'orange', '50', '1234567890'][idx % 5],
66
- homepage:
67
- idx % 2 ? `http://hatiolab.com/${start + idx + 1}` : `http://deadpool.hatiolab.com/${start + idx + 1}`,
68
- json5: {
69
- abc: 'abc',
70
- value: 123
71
- },
72
- createdAt: Date.now(),
73
- updatedAt: Date.now()
74
- }
75
- })
76
- }
77
- }
78
-
79
- const config = {
80
- list: {
81
- thumbnail: 'thumbnail',
82
- fields: ['name', 'description'],
83
- details: ['role', 'email']
84
- },
85
- columns: [
86
- {
87
- type: 'gutter',
88
- gutterName: 'dirty',
89
- fixed: true
90
- },
91
- {
92
- type: 'gutter',
93
- gutterName: 'sequence',
94
- fixed: true
95
- },
96
- {
97
- type: 'gutter',
98
- gutterName: 'row-selector',
99
- multiple: true,
100
- fixed: true
101
- },
102
- {
103
- type: 'gutter',
104
- gutterName: 'button',
105
- icon: 'edit',
106
- title: 'edit',
107
- handlers: {
108
- click: function () {
109
- console.log('clicked')
110
- }
111
- },
112
- fixed: true
113
- },
114
- {
115
- type: 'gutter',
116
- gutterName: 'button',
117
- icon: 'add',
118
- title: 'add',
119
- handlers: {
120
- click: 'record-copy'
121
- },
122
- fixed: true
123
- },
124
- {
125
- type: 'gutter',
126
- gutterName: 'button',
127
- icon: 'arrow_downward',
128
- title: 'download',
129
- handlers: {
130
- click: 'move-down'
131
- },
132
- fixed: true
133
- },
134
- {
135
- type: 'string',
136
- name: 'id',
137
- hidden: true
138
- },
139
- {
140
- type: 'link',
141
- name: 'name',
142
- label: true,
143
- header: 'name',
144
- record: {
145
- editable: true,
146
- options: {
147
- // href: 'http://hatiolab.com',
148
- href: function (column: ColumnConfig, record: GristRecord, rowIndex: number) {
149
- return record['homepage']
150
- },
151
- target: '_blank'
152
- }
153
- },
154
- filter: 'search',
155
- sortable: true,
156
- width: 120,
157
- fixed: true
158
- },
159
- {
160
- type: 'string',
161
- name: 'description',
162
- header: 'description',
163
- filter: 'search',
164
- record: {
165
- editable: true,
166
- align: 'left'
167
- },
168
- width: 200,
169
- handlers: {
170
- click: (columns, data, column, record, rowIndex, target) => {
171
- alert(`${column!.name} ${record![column!.name]}, row : ${rowIndex}`)
172
- }
173
- } as GristEventHandlerSet
174
- },
175
- {
176
- type: 'email',
177
- name: 'email',
178
- label: true,
179
- header: {
180
- renderer: 'email',
181
- group: 'information',
182
- groupStyle: 'background-color: red;color: white',
183
- style: 'background-color: red;color: white;'
184
- },
185
- record: {
186
- editable: true
187
- },
188
- filter: 'search',
189
- sortable: true,
190
- width: 130,
191
- validation: (async (after, before, record, column) => {
192
- if (after.indexOf('@') == -1) {
193
- return await OxPrompt.open({
194
- title: '잘못된 이메일 포맷',
195
- text: '그래도 변경하시겠습니까?',
196
- cancelButton: { text: 'No' },
197
- confirmButton: { text: 'Yes' }
198
- })
199
- }
200
- return true
201
- }) as ValidationCallback
202
- },
203
- {
204
- type: 'boolean',
205
- name: 'active',
206
- header: {
207
- renderer: 'active',
208
- group: 'information'
209
- },
210
- record: {
211
- editable: true
212
- },
213
- filter: true,
214
- handlers: {
215
- dblclick: () => {
216
- const grist = document.querySelector('ox-grist') as any
217
- console.log(grist!.dirtyRecords)
218
- }
219
- },
220
- sortable: true,
221
- width: 60
222
- },
223
- {
224
- type: 'string[]',
225
- name: 'role',
226
- label: true,
227
- header: {
228
- renderer: 'role',
229
- group: 'information'
230
- },
231
- record: {
232
- options: ['', 'admin', 'worker', 'tester'],
233
- editable: true
234
- },
235
- filter: true,
236
- sortable: true,
237
- width: 120
238
- },
239
- {
240
- type: 'color',
241
- name: 'color',
242
- header: {
243
- renderer: 'color',
244
- group: 'information'
245
- },
246
- record: {
247
- editable: true
248
- },
249
- sortable: true,
250
- width: 50
251
- },
252
- {
253
- type: 'float',
254
- name: 'rate',
255
- header: {
256
- renderer: 'rate',
257
- group: '2023',
258
- groupStyle: 'background-color: blue;color: white;',
259
- style: 'background-color: blue;color: white;'
260
- },
261
- record: {
262
- align: 'right',
263
- editable: true,
264
- defaultValue: 10000.1
265
- },
266
- filter: 'between',
267
- sortable: true,
268
- width: 50
269
- },
270
- {
271
- type: 'json5',
272
- name: 'json5',
273
- header: {
274
- renderer: 'JSON5',
275
- group: '2023'
276
- },
277
- width: 200
278
- },
279
- {
280
- type: 'image',
281
- name: 'thumbnail',
282
- header: {
283
- renderer: 'thumbnail',
284
- group: '2023'
285
- },
286
- record: {
287
- editable: true,
288
- wide: true
289
- },
290
- width: 120
291
- },
292
- {
293
- type: 'datetime',
294
- name: 'updatedAt',
295
- header: 'updated at',
296
- record: {
297
- editable: true,
298
- defaultValue: {
299
- name: 'now'
300
- }
301
- },
302
- filter: 'between',
303
- sortable: true,
304
- width: 180
305
- },
306
- {
307
- type: 'datetime',
308
- name: 'createdAt',
309
- header: 'created at',
310
- record: {
311
- editable: false
312
- },
313
- sortable: true,
314
- width: 180
315
- }
316
- ],
317
- rows: {
318
- selectable: {
319
- multiple: true
320
- },
321
- handlers: {
322
- focus: 'select-row-toggle'
323
- },
324
- classifier: function (record, rowIndex) {
325
- const rate = record['rate']
326
- const emphasized =
327
- rate < 10 ? ['black', 'white'] : rate < 25 ? ['yellow', 'blue'] : rate < 40 ? ['cyan', 'red'] : undefined
328
- return {
329
- emphasized
330
- }
331
- } as GristClassifier
332
- },
333
- sorters: [
334
- {
335
- name: 'name',
336
- desc: true
337
- },
338
- {
339
- name: 'email'
340
- }
341
- ],
342
- pagination: {
343
- pages: [20, 30, 50, 100, 200]
344
- }
345
- }
346
-
347
- export default {
348
- title: 'group header',
349
- component: 'ox-grist',
350
- argTypes: {
351
- config: { control: 'object' }
352
- }
353
- }
354
-
355
- interface Story<T> {
356
- (args: T): TemplateResult
357
- args?: Partial<T>
358
- argTypes?: Record<string, unknown>
359
- }
360
-
361
- interface ArgTypes {
362
- config: object
363
- }
364
-
365
- const Template: Story<ArgTypes> = ({ config }: ArgTypes) =>
366
- html` <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@400;500;700&display=swap" rel="stylesheet" />
367
-
368
- <link href="/themes/light.css" rel="stylesheet" />
369
- <link href="/themes/dark.css" rel="stylesheet" />
370
- <link href="/themes/spacing.css" rel="stylesheet" />
371
- <link href="/themes/grist-theme.css" rel="stylesheet" />
372
-
373
- <link
374
- href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL@20..48,100..700,0..1"
375
- rel="stylesheet"
376
- />
377
- <link
378
- href="https://fonts.googleapis.com/css2?family=Material+Symbols+Rounded:opsz,wght,FILL@20..48,100..700,0..1"
379
- rel="stylesheet"
380
- />
381
- <link
382
- href="https://fonts.googleapis.com/css2?family=Material+Symbols+Sharp:opsz,wght,FILL@20..48,100..700,0..1"
383
- rel="stylesheet"
384
- />
385
-
386
- <style>
387
- ${MDTypeScaleStyles.cssText}
388
- </style>
389
-
390
- <style>
391
- ${CommonGristStyles.cssText}
392
- ${CommonHeaderStyles.cssText}
393
- </style>
394
-
395
- <style>
396
- ox-grist {
397
- height: 600px;
398
- }
399
-
400
- ox-filters-form {
401
- flex: 1;
402
- }
403
- </style>
404
-
405
- <ox-grist
406
- mode="GRID"
407
- .config=${config}
408
- .fetchHandler=${fetchHandler}
409
- @filters-change=${(e: Event) => console.log('filters', (e.target as any).filters)}
410
- >
411
- <div slot="headroom" class="header">
412
- <div class="filters">
413
- <ox-filters-form autofocus></ox-filters-form>
414
-
415
- <div id="sorters">
416
- Sort
417
- <md-icon
418
- @click=${(e: Event) => {
419
- const target = e.currentTarget as HTMLElement
420
- ;(target.closest('#sorters')!.querySelector('#sorter-control') as any).open({
421
- right: 0,
422
- top: target.offsetTop + target.offsetHeight
423
- })
424
- }}
425
- >expand_more</md-icon
426
- >
427
- <ox-popup id="sorter-control">
428
- <ox-sorters-control> </ox-sorters-control>
429
- </ox-popup>
430
- </div>
431
-
432
- <ox-record-creator id="add" light-popup>
433
- <button><md-icon>add</md-icon></button>
434
- </ox-record-creator>
435
- </div>
436
- </div>
437
- </ox-grist>`
438
-
439
- export const Regular = Template.bind({})
440
- Regular.args = {
441
- config
442
- }
@@ -1,143 +0,0 @@
1
- import '@material/web/icon/icon.js'
2
- import '../src/index.js'
3
- import '../src/record-view/record-view-body.js'
4
-
5
- import { html, TemplateResult } from 'lit'
6
- import { styles as MDTypeScaleStyles } from '@material/web/typography/md-typescale-styles'
7
-
8
- import { CommonGristStyles } from '@operato/styles'
9
- import { ColumnConfig, GristRecord } from '../src/types.js'
10
- import { buildColumn } from '../src/configure/column-builder.js'
11
- import { ZERO_RECORD } from '../src/index.js'
12
-
13
- const columnsConfig: ColumnConfig[] = [
14
- {
15
- type: 'string',
16
- name: 'id',
17
- hidden: true
18
- },
19
- {
20
- type: 'string',
21
- name: 'name',
22
- label: true,
23
- header: 'name',
24
- record: {
25
- editable: true
26
- },
27
- filter: 'search',
28
- sortable: true,
29
- width: 120
30
- },
31
- {
32
- type: 'string',
33
- name: 'description',
34
- header: 'description',
35
- filter: 'search',
36
- record: {
37
- editable: true,
38
- align: 'left'
39
- },
40
- width: 200
41
- },
42
- {
43
- type: 'textarea',
44
- name: 'textarea',
45
- label: true,
46
- header: 'textarea',
47
- record: {
48
- editable: true,
49
- wide: true
50
- },
51
- filter: 'search',
52
- sortable: true,
53
- width: 130
54
- },
55
- {
56
- type: 'datetime',
57
- name: 'updatedAt',
58
- header: 'updated at',
59
- record: {
60
- editable: true,
61
- defaultValue: {
62
- name: 'now'
63
- }
64
- },
65
- filter: 'between',
66
- sortable: true,
67
- width: 180
68
- },
69
- {
70
- type: 'datetime',
71
- name: 'createdAt',
72
- header: 'created at',
73
- record: {
74
- editable: false
75
- },
76
- sortable: true,
77
- width: 180
78
- }
79
- ].map((column: any) => buildColumn(column))
80
-
81
- const record: GristRecord = ZERO_RECORD
82
-
83
- export default {
84
- title: 'ox-record-view-body',
85
- component: 'ox-record-view-body',
86
- argTypes: {
87
- headerFilter: { control: 'boolean' }
88
- }
89
- }
90
-
91
- interface Story<T> {
92
- (args: T): TemplateResult
93
- args?: Partial<T>
94
- argTypes?: Record<string, unknown>
95
- }
96
-
97
- interface ArgTypes {
98
- headerFilter: boolean
99
- theme?: 'light' | 'dark'
100
- }
101
-
102
- const Template: Story<ArgTypes> = ({ headerFilter }: ArgTypes) => html`
103
- <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@400;500;700&display=swap" rel="stylesheet" />
104
-
105
- <link href="/themes/light.css" rel="stylesheet" />
106
- <link href="/themes/dark.css" rel="stylesheet" />
107
- <link href="/themes/spacing.css" rel="stylesheet" />
108
- <link href="/themes/grist-theme.css" rel="stylesheet" />
109
-
110
- <link
111
- href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL@20..48,100..700,0..1"
112
- rel="stylesheet"
113
- />
114
- <link
115
- href="https://fonts.googleapis.com/css2?family=Material+Symbols+Rounded:opsz,wght,FILL@20..48,100..700,0..1"
116
- rel="stylesheet"
117
- />
118
- <link
119
- href="https://fonts.googleapis.com/css2?family=Material+Symbols+Sharp:opsz,wght,FILL@20..48,100..700,0..1"
120
- rel="stylesheet"
121
- />
122
-
123
- <style>
124
- ${MDTypeScaleStyles.cssText}
125
- </style>
126
-
127
- <style>
128
- ${CommonGristStyles.cssText}
129
- </style>
130
-
131
- <style>
132
- ox-record-view-body {
133
- height: 600px;
134
- }
135
- </style>
136
-
137
- <ox-record-view-body .columns=${columnsConfig} .record=${record}> </ox-record-view-body>
138
- `
139
-
140
- export const Regular = Template.bind({})
141
- Regular.args = {
142
- headerFilter: true
143
- }