@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,261 +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
- FetchOption,
17
- GristClassifier,
18
- GristEventHandlerSet,
19
- GristRecord,
20
- ValidationCallback
21
- } from '../src/types.js'
22
-
23
- const fetchHandler: FetchHandler = async ({ page, limit }: FetchOption) => {
24
- var total = 3
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
- textarea: `
39
- long long long text
40
- long long long text
41
- long long long text
42
- long long long text
43
- long long long text white-space: pre-wrap;white-space: pre-wrap;white-space: pre-wrap;
44
- long long long text
45
- long long long text
46
- long long long text
47
- long long long text
48
- long long long text
49
- `,
50
- createdAt: Date.now(),
51
- updatedAt: Date.now()
52
- }
53
- })
54
- }
55
- }
56
-
57
- const config = {
58
- list: {
59
- thumbnail: 'thumbnail',
60
- fields: ['name', 'description'],
61
- details: ['role', 'email']
62
- },
63
- columns: [
64
- {
65
- type: 'gutter',
66
- gutterName: 'dirty'
67
- },
68
- {
69
- type: 'gutter',
70
- gutterName: 'sequence'
71
- },
72
- {
73
- type: 'gutter',
74
- gutterName: 'row-selector',
75
- multiple: true
76
- },
77
- {
78
- type: 'gutter',
79
- gutterName: 'button',
80
- icon: 'add',
81
- title: 'add',
82
- handlers: {
83
- click: 'record-copy'
84
- }
85
- },
86
- {
87
- type: 'string',
88
- name: 'id',
89
- hidden: true
90
- },
91
- {
92
- type: 'string',
93
- name: 'name',
94
- label: true,
95
- header: 'name',
96
- record: {
97
- editable: true
98
- },
99
- filter: 'search',
100
- sortable: true,
101
- width: 120
102
- },
103
- {
104
- type: 'string',
105
- name: 'description',
106
- header: 'description',
107
- filter: 'search',
108
- record: {
109
- editable: true,
110
- align: 'left'
111
- },
112
- width: 200
113
- },
114
- {
115
- type: 'textarea',
116
- name: 'textarea',
117
- label: true,
118
- header: 'textarea',
119
- record: {
120
- editable: true,
121
- wide: true
122
- },
123
- filter: 'search',
124
- sortable: true,
125
- width: 130
126
- },
127
- {
128
- type: 'datetime',
129
- name: 'updatedAt',
130
- header: 'updated at',
131
- record: {
132
- editable: true,
133
- defaultValue: {
134
- name: 'now'
135
- }
136
- },
137
- filter: 'between',
138
- sortable: true,
139
- width: 180
140
- },
141
- {
142
- type: 'datetime',
143
- name: 'createdAt',
144
- header: 'created at',
145
- record: {
146
- editable: false
147
- },
148
- sortable: true,
149
- width: 180
150
- }
151
- ],
152
- rows: {
153
- selectable: {
154
- multiple: false
155
- },
156
- handlers: {
157
- focus: 'select-row'
158
- }
159
- },
160
- sorters: [
161
- {
162
- name: 'name',
163
- desc: true
164
- },
165
- {
166
- name: 'email'
167
- }
168
- ],
169
- pagination: {
170
- pages: [20, 30, 50, 100, 200]
171
- }
172
- }
173
-
174
- export default {
175
- title: 'textarea in ox-grist',
176
- component: 'ox-grist',
177
- argTypes: {
178
- config: { control: 'object' },
179
- mode: { control: 'select', options: ['GRID', 'LIST', 'CARD'] },
180
- urlParamsSensitive: { control: 'boolean' }
181
- }
182
- }
183
-
184
- interface Story<T> {
185
- (args: T): TemplateResult
186
- args?: Partial<T>
187
- argTypes?: Record<string, unknown>
188
- }
189
-
190
- interface ArgTypes {
191
- config: object
192
- mode: 'GRID' | 'LIST' | 'CARD'
193
- urlParamsSensitive: boolean
194
- fetchHandler: FetchHandler
195
- }
196
-
197
- const Template: Story<ArgTypes> = ({ config, mode = 'GRID', urlParamsSensitive = false, fetchHandler }: ArgTypes) =>
198
- html` <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@400;500;700&display=swap" rel="stylesheet" />
199
-
200
- <link href="/themes/light.css" rel="stylesheet" />
201
- <link href="/themes/dark.css" rel="stylesheet" />
202
- <link href="/themes/spacing.css" rel="stylesheet" />
203
- <link href="/themes/grist-theme.css" rel="stylesheet" />
204
-
205
- <link
206
- href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL@20..48,100..700,0..1"
207
- rel="stylesheet"
208
- />
209
- <link
210
- href="https://fonts.googleapis.com/css2?family=Material+Symbols+Rounded:opsz,wght,FILL@20..48,100..700,0..1"
211
- rel="stylesheet"
212
- />
213
- <link
214
- href="https://fonts.googleapis.com/css2?family=Material+Symbols+Sharp:opsz,wght,FILL@20..48,100..700,0..1"
215
- rel="stylesheet"
216
- />
217
-
218
- <style>
219
- ${MDTypeScaleStyles.cssText}
220
- </style>
221
-
222
- <style>
223
- ${CommonGristStyles.cssText} ${CommonHeaderStyles.cssText} #add {
224
- margin-left: auto;
225
- }
226
- </style>
227
-
228
- <style>
229
- ox-grist {
230
- height: 600px;
231
- }
232
-
233
- ox-filters-form {
234
- flex: 1;
235
- }
236
- </style>
237
-
238
- <ox-grist
239
- .config=${config}
240
- .mode=${mode}
241
- .fetchHandler=${fetchHandler}
242
- ?url-params-sensitive=${urlParamsSensitive}
243
- @filters-change=${(e: Event) => console.log('filters', (e.target as any).filters)}
244
- >
245
- <div slot="headroom" class="header">
246
- <div class="filters">
247
- <ox-filters-form autofocus></ox-filters-form>
248
-
249
- <ox-record-creator id="add" light-popup>
250
- <button><md-icon>add</md-icon></button>
251
- </ox-record-creator>
252
- </div>
253
- </div>
254
- </ox-grist>`
255
-
256
- export const Regular = Template.bind({})
257
- Regular.args = {
258
- config,
259
- fetchHandler,
260
- mode: 'GRID'
261
- }
@@ -1,297 +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
-
22
- const fetchHandler: FetchHandler = async ({ page, limit }) => {
23
- var total = 120993
24
- var start = (page! - 1) * limit!
25
-
26
- await new Promise(resolve => setTimeout(resolve, 500))
27
-
28
- var records = Array(limit! * page! > total ? total % limit! : limit)
29
- .fill('')
30
- .map((item, idx) => {
31
- return {
32
- id: String(idx),
33
- name: idx % 2 ? `shnam-${start + idx + 1}` : `heartyoh-${start + idx + 1}`,
34
- description: idx % 2 ? `hatiolabmanager${start + idx + 1}1234567890` : `hatiosea manager-${start + idx + 1}`,
35
- active: Math.round(Math.random() * 2) % 2 ? true : false,
36
- accval: Math.random(),
37
- createdAt: Date.now(),
38
- updatedAt: Date.now(),
39
- children: [
40
- ...Array.from({ length: 3 }, (_, idx) => {
41
- return {
42
- id: `sub:${idx}`,
43
- name: 'subitem' + idx,
44
- description: 'sub items...',
45
- active: Math.round(Math.random() * 2) % 2 ? true : false,
46
- accval: Math.random(),
47
- children: [
48
- ...Array.from({ length: 3 }, (_, idx2) => {
49
- return {
50
- id: `sub-sub:${idx}:${idx2}`,
51
- name: 'sub-subitem:' + idx2,
52
- description: 'sub sub items...',
53
- active: Math.round(Math.random() * 2) % 2 ? true : false,
54
- accval: Math.random(),
55
- children: [],
56
- createdAt: Date.now(),
57
- updatedAt: Date.now()
58
- }
59
- })
60
- ],
61
- createdAt: Date.now(),
62
- updatedAt: Date.now()
63
- }
64
- })
65
- ]
66
- }
67
- })
68
-
69
- return {
70
- total,
71
- records
72
- }
73
- }
74
-
75
- const config = {
76
- list: {
77
- thumbnail: 'thumbnail',
78
- fields: ['name', 'description'],
79
- details: ['role', 'email']
80
- },
81
- columns: [
82
- {
83
- type: 'gutter',
84
- gutterName: 'dirty',
85
- fixed: true
86
- },
87
- // {
88
- // type: 'gutter',
89
- // gutterName: 'sequence',
90
- // fixed: true
91
- // },
92
- {
93
- type: 'tree',
94
- name: 'name',
95
- label: true,
96
- header: 'name',
97
- record: {
98
- editable: true,
99
- options: {
100
- selectable: true /* with checkbox */
101
- }
102
- },
103
- filter: 'search',
104
- sortable: true,
105
- width: 200,
106
- fixed: true,
107
- handlers: {
108
- contextmenu: 'contextmenu-tree-mutation'
109
- }
110
- },
111
- {
112
- type: 'gutter',
113
- gutterName: 'row-selector',
114
- multiple: true
115
- },
116
- {
117
- type: 'string',
118
- name: 'description',
119
- header: 'description',
120
- filter: 'search',
121
- record: {
122
- editable: true,
123
- align: 'left'
124
- },
125
- width: 200
126
- },
127
- {
128
- type: 'boolean',
129
- name: 'active',
130
- header: 'active',
131
- record: {
132
- editable: true
133
- },
134
- filter: true,
135
- sortable: true,
136
- width: 60
137
- },
138
- {
139
- type: 'number',
140
- name: 'accval',
141
- label: true,
142
- header: 'accval',
143
- record: {
144
- editable: true,
145
- align: 'right'
146
- },
147
- accumulator: 'sum',
148
- sortable: true,
149
- width: 130
150
- },
151
- {
152
- type: 'datetime',
153
- name: 'updatedAt',
154
- header: 'updated at',
155
- record: {
156
- editable: true,
157
- defaultValue: {
158
- name: 'now'
159
- }
160
- },
161
- filter: 'between',
162
- sortable: true,
163
- width: 180
164
- }
165
- ],
166
- rows: {
167
- appendable: false,
168
- selectable: {
169
- multiple: true
170
- },
171
- handlers: {
172
- // focus: 'select-row-toggle'
173
- },
174
- classifier: function (record, rowIndex) {
175
- const rate = record['rate']
176
- const emphasized =
177
- rate < 10 ? ['black', 'white'] : rate < 25 ? ['yellow', 'blue'] : rate < 40 ? ['cyan', 'red'] : undefined
178
- return {
179
- emphasized
180
- }
181
- } as GristClassifier,
182
- accumulator: true
183
- },
184
- sorters: [
185
- {
186
- name: 'name',
187
- desc: true
188
- },
189
- {
190
- name: 'email'
191
- }
192
- ],
193
- pagination: {
194
- pages: [20, 30, 50, 100, 200]
195
- },
196
- tree: {
197
- childrenProperty: 'children',
198
- expanded: true
199
- }
200
- }
201
-
202
- export default {
203
- title: 'tree column with checkbox',
204
- component: 'ox-grist',
205
- argTypes: {
206
- config: { control: 'object' }
207
- }
208
- }
209
-
210
- interface Story<T> {
211
- (args: T): TemplateResult
212
- args?: Partial<T>
213
- argTypes?: Record<string, unknown>
214
- }
215
-
216
- interface ArgTypes {
217
- config: object
218
- }
219
-
220
- const Template: Story<ArgTypes> = ({ config }: ArgTypes) =>
221
- html` <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@400;500;700&display=swap" rel="stylesheet" />
222
-
223
- <link href="/themes/light.css" rel="stylesheet" />
224
- <link href="/themes/dark.css" rel="stylesheet" />
225
- <link href="/themes/spacing.css" rel="stylesheet" />
226
- <link href="/themes/grist-theme.css" rel="stylesheet" />
227
-
228
- <link
229
- href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL@20..48,100..700,0..1"
230
- rel="stylesheet"
231
- />
232
- <link
233
- href="https://fonts.googleapis.com/css2?family=Material+Symbols+Rounded:opsz,wght,FILL@20..48,100..700,0..1"
234
- rel="stylesheet"
235
- />
236
- <link
237
- href="https://fonts.googleapis.com/css2?family=Material+Symbols+Sharp:opsz,wght,FILL@20..48,100..700,0..1"
238
- rel="stylesheet"
239
- />
240
-
241
- <style>
242
- ${MDTypeScaleStyles.cssText}
243
- </style>
244
-
245
- <style>
246
- ${CommonGristStyles.cssText}
247
- ${CommonHeaderStyles.cssText}
248
- </style>
249
-
250
- <style>
251
- ox-grist {
252
- height: 600px;
253
- }
254
-
255
- ox-filters-form {
256
- flex: 1;
257
- }
258
- </style>
259
-
260
- <ox-grist
261
- mode="GRID"
262
- .config=${config}
263
- .fetchHandler=${fetchHandler}
264
- @filters-change=${(e: Event) => console.log('filters', (e.target as any).filters)}
265
- >
266
- <div slot="headroom" class="header">
267
- <div class="filters">
268
- <ox-filters-form autofocus></ox-filters-form>
269
-
270
- <div id="sorters">
271
- Sort
272
- <md-icon
273
- @click=${(e: Event) => {
274
- const target = e.currentTarget as HTMLElement
275
- ;(target.closest('#sorters')!.querySelector('#sorter-control') as any).open({
276
- right: 0,
277
- top: target.offsetTop + target.offsetHeight
278
- })
279
- }}
280
- >expand_more</md-icon
281
- >
282
- <ox-popup id="sorter-control">
283
- <ox-sorters-control> </ox-sorters-control>
284
- </ox-popup>
285
- </div>
286
-
287
- <ox-record-creator id="add" light-popup>
288
- <button><md-icon>add</md-icon></button>
289
- </ox-record-creator>
290
- </div>
291
- </div>
292
- </ox-grist>`
293
-
294
- export const Regular = Template.bind({})
295
- Regular.args = {
296
- config
297
- }