@operato/data-grist 7.1.31 → 7.1.33

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