@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,2 +0,0 @@
1
- export * from './supports-passive'
2
- export * from './list-param'
@@ -1,72 +0,0 @@
1
- import json5 from 'json5'
2
- import pickBy from 'lodash-es/pickBy'
3
-
4
- import { FilterValue, SortersConfig } from '../types'
5
-
6
- export function convertListParamToSearchString({
7
- filters,
8
- sorters,
9
- page,
10
- limit,
11
- base
12
- }: {
13
- filters?: FilterValue[]
14
- sorters?: SortersConfig
15
- page?: number
16
- limit?: number
17
- base?: string
18
- }) {
19
- const urlParams = new URLSearchParams(base)
20
-
21
- if (sorters) {
22
- if (sorters.length > 0) {
23
- urlParams.set('sorters', json5.stringify(sorters))
24
- } else {
25
- urlParams.delete('sorters')
26
- }
27
- }
28
-
29
- if (filters) {
30
- if (filters.length > 0) {
31
- urlParams.set('filters', json5.stringify(filters))
32
- } else {
33
- urlParams.delete('filters')
34
- }
35
- }
36
-
37
- if (!isNaN(page as any)) {
38
- urlParams.set('page', String(page))
39
- }
40
-
41
- if (!isNaN(limit as any)) {
42
- urlParams.set('limit', String(limit))
43
- }
44
-
45
- return String(urlParams)
46
- }
47
-
48
- export function convertSearchStringToListParam(searchParams: string): {
49
- filters?: FilterValue[]
50
- sorters?: SortersConfig
51
- pagination?: {
52
- page?: number
53
- limit?: number
54
- }
55
- } {
56
- const urlParams = new URLSearchParams(searchParams)
57
-
58
- return pickBy(
59
- {
60
- filters: json5.parse(urlParams.get('filters') || '[]'),
61
- sorters: json5.parse(urlParams.get('sorters') || '[]'),
62
- pagination: pickBy(
63
- {
64
- page: Number(urlParams.get('page')),
65
- limit: Number(urlParams.get('limit'))
66
- },
67
- v => !isNaN(v)
68
- )
69
- },
70
- v => v !== undefined && !(typeof v === 'object' && Object.keys(v).length == 0)
71
- )
72
- }
@@ -1,13 +0,0 @@
1
- // Test via a getter in the options object to see if the passive property is accessed
2
- export var supportsPassive = false
3
-
4
- try {
5
- var opts = Object.defineProperty({}, 'passive', {
6
- get: function () {
7
- supportsPassive = true
8
- }
9
- })
10
-
11
- window.addEventListener('testPassive', () => {}, opts)
12
- window.removeEventListener('testPassive', () => {}, opts)
13
- } catch (e) {}
@@ -1,276 +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
- FetchOption,
15
- GristClassifier,
16
- GristEventHandlerSet,
17
- GristRecord,
18
- ValidationCallback
19
- } from '../src/types.js'
20
-
21
- import { CommonHeaderStyles, CommonGristStyles } from '@operato/styles'
22
-
23
- const fetchHandler: FetchHandler = async ({ page, limit }: FetchOption) => {
24
- var total = 25
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
- accval: Math.random(),
39
- accval2: Math.round(Math.random() * 15),
40
- createdAt: Date.now(),
41
- updatedAt: Date.now()
42
- }
43
- })
44
- }
45
- }
46
-
47
- const config = {
48
- columns: [
49
- {
50
- type: 'gutter',
51
- gutterName: 'dirty'
52
- },
53
- {
54
- type: 'gutter',
55
- gutterName: 'sequence'
56
- },
57
- {
58
- type: 'gutter',
59
- gutterName: 'row-selector',
60
- multiple: true
61
- },
62
- {
63
- type: 'gutter',
64
- gutterName: 'button',
65
- icon: 'add',
66
- title: 'add',
67
- handlers: {
68
- click: 'record-copy'
69
- }
70
- },
71
- {
72
- type: 'string',
73
- name: 'id',
74
- hidden: true
75
- },
76
- {
77
- type: 'string',
78
- name: 'name',
79
- label: true,
80
- header: 'name',
81
- record: {
82
- editable: true
83
- },
84
- filter: 'search',
85
- sortable: true,
86
- width: 120,
87
- fixed: true
88
- },
89
- {
90
- type: 'string',
91
- name: 'description',
92
- header: {
93
- renderer: () => 'description',
94
- style: 'text-transform: none;'
95
- },
96
- filter: 'search',
97
- record: {
98
- editable: true,
99
- align: 'left'
100
- },
101
- width: 200
102
- },
103
- {
104
- type: 'number',
105
- name: 'accval',
106
- label: true,
107
- header: 'accval',
108
- record: {
109
- editable: true,
110
- align: 'right',
111
- defaultValue: 100,
112
- format: '+$#,##0.00'
113
- },
114
- accumulator: 'avg',
115
- // accumulator: {
116
- // type: 'avg',
117
- // tag: true
118
- // },
119
- sortable: true,
120
- width: 130
121
- },
122
- {
123
- type: 'number',
124
- name: 'accval2',
125
- label: true,
126
- header: 'accval2',
127
- record: {
128
- editable: true,
129
- align: 'right',
130
- renderer: (value: any, column: any, record: any) => {
131
- return value && Intl.NumberFormat('en-US').format(value)
132
- }
133
- },
134
- accumulator: {
135
- type: 'sum',
136
- tag: true
137
- },
138
- sortable: true,
139
- width: 130
140
- },
141
- {
142
- type: 'datetime',
143
- name: 'updatedAt',
144
- header: 'updated at',
145
- record: {
146
- editable: true,
147
- defaultValue: {
148
- name: 'now'
149
- }
150
- },
151
- filter: 'between',
152
- sortable: true,
153
- width: 180
154
- },
155
- {
156
- type: 'datetime',
157
- name: 'createdAt',
158
- header: 'created at',
159
- record: {
160
- editable: false
161
- },
162
- sortable: true,
163
- width: 180
164
- }
165
- ],
166
- rows: {
167
- selectable: {
168
- multiple: false
169
- },
170
- accumulator: true
171
- },
172
- sorters: [
173
- {
174
- name: 'name',
175
- desc: true
176
- }
177
- ],
178
- pagination: {
179
- pages: [20, 30, 50, 100, 200]
180
- }
181
- }
182
-
183
- export default {
184
- title: 'accumulator format in ox-grist',
185
- component: 'ox-grist',
186
- argTypes: {
187
- config: { control: 'object' },
188
- mode: { control: 'select', options: ['GRID', 'LIST', 'CARD'] },
189
- urlParamsSensitive: { control: 'boolean' },
190
- withoutSearch: { control: 'boolean' }
191
- }
192
- }
193
-
194
- interface Story<T> {
195
- (args: T): TemplateResult
196
- args?: Partial<T>
197
- argTypes?: Record<string, unknown>
198
- }
199
-
200
- interface ArgTypes {
201
- config: object
202
- mode: string
203
- urlParamsSensitive: boolean
204
- withoutSearch: boolean
205
- fetchHandler: FetchHandler
206
- }
207
-
208
- const Template: Story<ArgTypes> = ({
209
- config,
210
- mode = 'GRID',
211
- urlParamsSensitive = false,
212
- withoutSearch = false,
213
- fetchHandler
214
- }: ArgTypes) =>
215
- html` <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@400;500;700&display=swap" rel="stylesheet" />
216
-
217
- <link href="/themes/light.css" rel="stylesheet" />
218
- <link href="/themes/dark.css" rel="stylesheet" />
219
- <link href="/themes/spacing.css" rel="stylesheet" />
220
- <link href="/themes/grist-theme.css" rel="stylesheet" />
221
-
222
- <link
223
- href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL@20..48,100..700,0..1"
224
- rel="stylesheet"
225
- />
226
- <link
227
- href="https://fonts.googleapis.com/css2?family=Material+Symbols+Rounded:opsz,wght,FILL@20..48,100..700,0..1"
228
- rel="stylesheet"
229
- />
230
- <link
231
- href="https://fonts.googleapis.com/css2?family=Material+Symbols+Sharp:opsz,wght,FILL@20..48,100..700,0..1"
232
- rel="stylesheet"
233
- />
234
-
235
- <style>
236
- ${MDTypeScaleStyles.cssText}
237
- </style>
238
-
239
- <style>
240
- ${CommonGristStyles.cssText}
241
- ${CommonHeaderStyles.cssText}
242
- </style>
243
-
244
- <style>
245
- ox-grist {
246
- height: 600px;
247
- }
248
-
249
- ox-filters-form {
250
- flex: 1;
251
- }
252
- </style>
253
-
254
- <ox-grist
255
- mode="GRID"
256
- .config=${config}
257
- .fetchHandler=${fetchHandler}
258
- ?url-params-sensitive=${urlParamsSensitive}
259
- @filters-change=${(e: Event) => console.log('filters', (e.target as any).filters)}
260
- >
261
- <div slot="headroom" class="header">
262
- <div class="filters">
263
- <ox-filters-form ?without-search=${withoutSearch} autofocus></ox-filters-form>
264
- <ox-record-creator id="add" light-popup>
265
- <button><md-icon>add</md-icon></button>
266
- </ox-record-creator>
267
- </div>
268
- </div>
269
- </ox-grist>`
270
-
271
- export const Regular = Template.bind({})
272
- Regular.args = {
273
- config,
274
- fetchHandler,
275
- mode: 'GRID'
276
- }
@@ -1,216 +0,0 @@
1
- import '../src/index.js'
2
- import '../src/filters/filters-form.js'
3
- import '../src/sorters/sorters-control.js'
4
- import '@operato/popup/ox-popup-list.js'
5
- import '@material/web/icon/icon.js'
6
-
7
- import { html, TemplateResult } from 'lit'
8
- import { styles as MDTypeScaleStyles } from '@material/web/typography/md-typescale-styles'
9
-
10
- import { FetchHandler } from '../src/types.js'
11
-
12
- import { CommonHeaderStyles, CommonGristStyles } from '@operato/styles'
13
-
14
- const fetchHandler: FetchHandler = async ({ filters, page, limit }) => {
15
- var total = 120993
16
- var start = (page! - 1) * limit!
17
-
18
- await new Promise(resolve => setTimeout(resolve, 500))
19
-
20
- return {
21
- total,
22
- records: Array(limit! * page! > total ? total % limit! : limit)
23
- .fill('')
24
- .map((item, idx) => {
25
- return {
26
- id: String(idx),
27
- name: idx % 2 ? `shnam-${start + idx + 1}` : `heartyoh-${start + idx + 1}`,
28
- description: idx % 2 ? `hatiolabmanager${start + idx + 1}1234567890` : `hatiosea manager-${start + idx + 1}`,
29
- createdAt: Date.now(),
30
- updatedAt: Date.now()
31
- }
32
- })
33
- }
34
- }
35
-
36
- function buildConfig({
37
- englishOnly,
38
- selectAfterChange,
39
- headerFilter
40
- }: {
41
- englishOnly: boolean
42
- selectAfterChange: boolean
43
- headerFilter: boolean
44
- }) {
45
- return {
46
- list: {
47
- fields: ['name', 'description'],
48
- details: ['updatedAt', 'createdAt']
49
- },
50
- columns: [
51
- {
52
- type: 'gutter',
53
- gutterName: 'sequence'
54
- },
55
- {
56
- type: 'string',
57
- name: 'id',
58
- hidden: true
59
- },
60
- {
61
- type: 'string',
62
- name: 'name',
63
- label: true,
64
- header: 'name',
65
- filter: {
66
- type: 'barcode',
67
- operator: 'eq',
68
- value: 'shnam',
69
- options: {
70
- englishOnly,
71
- selectAfterChange
72
- }
73
- },
74
- sortable: true,
75
- width: 120
76
- },
77
- {
78
- type: 'string',
79
- name: 'description',
80
- header: 'description',
81
- filter: {
82
- operator: 'like',
83
- value: 'hahaha'
84
- },
85
- record: {
86
- align: 'left'
87
- },
88
- width: 200
89
- },
90
- {
91
- type: 'datetime',
92
- name: 'updatedAt',
93
- header: 'updated at',
94
- width: 180
95
- },
96
- {
97
- type: 'datetime',
98
- name: 'createdAt',
99
- header: 'created at',
100
- width: 180
101
- }
102
- ],
103
- rows: {},
104
- sorters: [
105
- {
106
- name: 'name',
107
- desc: true
108
- }
109
- ],
110
- filters: {
111
- header: headerFilter
112
- },
113
- pagination: {
114
- pages: [30, 50, 100, 200]
115
- }
116
- }
117
- }
118
-
119
- export default {
120
- title: 'barcode input filter for ox-grist',
121
- component: 'ox-grist',
122
- argTypes: {
123
- englishOnly: { control: 'boolean' },
124
- selectAfterChange: { control: 'boolean' },
125
- headerFilter: { control: 'boolean' }
126
- }
127
- }
128
-
129
- interface Story<T> {
130
- (args: T): TemplateResult
131
- args?: Partial<T>
132
- argTypes?: Record<string, unknown>
133
- }
134
-
135
- interface ArgTypes {
136
- englishOnly: boolean
137
- selectAfterChange: boolean
138
- headerFilter: boolean
139
- }
140
-
141
- const Template: Story<ArgTypes> = ({ englishOnly, selectAfterChange, headerFilter }: ArgTypes) =>
142
- html` <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@400;500;700&display=swap" rel="stylesheet" />
143
-
144
- <link href="/themes/light.css" rel="stylesheet" />
145
- <link href="/themes/dark.css" rel="stylesheet" />
146
- <link href="/themes/spacing.css" rel="stylesheet" />
147
- <link href="/themes/grist-theme.css" rel="stylesheet" />
148
-
149
- <link
150
- href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL@20..48,100..700,0..1"
151
- rel="stylesheet"
152
- />
153
- <link
154
- href="https://fonts.googleapis.com/css2?family=Material+Symbols+Rounded:opsz,wght,FILL@20..48,100..700,0..1"
155
- rel="stylesheet"
156
- />
157
- <link
158
- href="https://fonts.googleapis.com/css2?family=Material+Symbols+Sharp:opsz,wght,FILL@20..48,100..700,0..1"
159
- rel="stylesheet"
160
- />
161
-
162
- <style>
163
- ${MDTypeScaleStyles.cssText}
164
- </style>
165
-
166
- <style>
167
- ${CommonGristStyles.cssText}
168
- ${CommonHeaderStyles.cssText}
169
- </style>
170
-
171
- <style>
172
- ox-grist {
173
- height: 600px;
174
- }
175
-
176
- ox-filters-form {
177
- flex: 1;
178
- }
179
- </style>
180
-
181
- <ox-grist
182
- .config=${buildConfig({ englishOnly, selectAfterChange, headerFilter })}
183
- mode="GRID"
184
- .fetchHandler=${fetchHandler}
185
- @filters-change=${(e: Event) => console.log('filters', (e.target as any).filters)}
186
- >
187
- <div slot="headroom" class="header">
188
- <div class="filters">
189
- <ox-filters-form></ox-filters-form>
190
-
191
- <div id="sorters">
192
- Sort
193
- <md-icon
194
- @click=${(e: Event) => {
195
- const target = e.currentTarget as HTMLElement
196
- ;(target.closest('#sorters')!.querySelector('#sorter-control') as any).open({
197
- right: 0,
198
- top: target.offsetTop + target.offsetHeight
199
- })
200
- }}
201
- >expand_more</md-icon
202
- >
203
- <ox-popup id="sorter-control">
204
- <ox-sorters-control> </ox-sorters-control>
205
- </ox-popup>
206
- </div>
207
- </div>
208
- </div>
209
- </ox-grist>`
210
-
211
- export const Regular = Template.bind({})
212
- Regular.args = {
213
- englishOnly: true,
214
- selectAfterChange: true,
215
- headerFilter: true
216
- }