@operato/data-grist 2.0.0-alpha.64 → 2.0.0-alpha.68

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 (118) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/demo/data-grist-test.html +25 -14
  3. package/demo/index.html +25 -14
  4. package/demo/report-test.html +13 -2
  5. package/dist/src/data-card/data-card-gutter-menu.d.ts +1 -1
  6. package/dist/src/data-card/data-card-gutter-menu.js +5 -5
  7. package/dist/src/data-card/data-card-gutter-menu.js.map +1 -1
  8. package/dist/src/data-card/data-card.d.ts +1 -1
  9. package/dist/src/data-card/data-card.js +3 -3
  10. package/dist/src/data-card/data-card.js.map +1 -1
  11. package/dist/src/data-card/record-card.d.ts +1 -1
  12. package/dist/src/data-card/record-card.js +26 -26
  13. package/dist/src/data-card/record-card.js.map +1 -1
  14. package/dist/src/data-grid/data-grid-accum-field.js +5 -1
  15. package/dist/src/data-grid/data-grid-accum-field.js.map +1 -1
  16. package/dist/src/data-grid/data-grid-footer.d.ts +1 -1
  17. package/dist/src/data-grid/data-grid-footer.js +17 -9
  18. package/dist/src/data-grid/data-grid-footer.js.map +1 -1
  19. package/dist/src/data-grid/data-grid-header.d.ts +1 -1
  20. package/dist/src/data-grid/data-grid-header.js +13 -15
  21. package/dist/src/data-grid/data-grid-header.js.map +1 -1
  22. package/dist/src/data-grist.js +21 -21
  23. package/dist/src/data-grist.js.map +1 -1
  24. package/dist/src/data-list/data-list.d.ts +1 -1
  25. package/dist/src/data-list/data-list.js +3 -3
  26. package/dist/src/data-list/data-list.js.map +1 -1
  27. package/dist/src/data-list/record-partial.d.ts +1 -1
  28. package/dist/src/data-list/record-partial.js +19 -19
  29. package/dist/src/data-list/record-partial.js.map +1 -1
  30. package/dist/src/empty-note.d.ts +1 -1
  31. package/dist/src/empty-note.js +3 -3
  32. package/dist/src/empty-note.js.map +1 -1
  33. package/dist/src/gutters/gutter-button.d.ts +1 -1
  34. package/dist/src/gutters/gutter-button.js +3 -3
  35. package/dist/src/gutters/gutter-button.js.map +1 -1
  36. package/dist/src/gutters/gutter-dirty.d.ts +1 -1
  37. package/dist/src/gutters/gutter-dirty.js +5 -5
  38. package/dist/src/gutters/gutter-dirty.js.map +1 -1
  39. package/dist/src/handlers/contextmenu-tree-mutation.js +4 -4
  40. package/dist/src/handlers/contextmenu-tree-mutation.js.map +1 -1
  41. package/dist/src/record-view/record-creator.d.ts +1 -1
  42. package/dist/src/record-view/record-creator.js +1 -1
  43. package/dist/src/record-view/record-creator.js.map +1 -1
  44. package/dist/src/record-view/record-view-body.d.ts +1 -1
  45. package/dist/src/record-view/record-view-body.js +4 -4
  46. package/dist/src/record-view/record-view-body.js.map +1 -1
  47. package/dist/src/record-view/record-view.d.ts +1 -1
  48. package/dist/src/record-view/record-view.js +5 -5
  49. package/dist/src/record-view/record-view.js.map +1 -1
  50. package/dist/src/sorters/sorters-control.js +3 -3
  51. package/dist/src/sorters/sorters-control.js.map +1 -1
  52. package/dist/stories/accumulator.stories.d.ts +1 -1
  53. package/dist/stories/accumulator.stories.js +22 -10
  54. package/dist/stories/accumulator.stories.js.map +1 -1
  55. package/dist/stories/barcode-input-filter.stories.d.ts +1 -1
  56. package/dist/stories/barcode-input-filter.stories.js +80 -72
  57. package/dist/stories/barcode-input-filter.stories.js.map +1 -1
  58. package/dist/stories/default-filters.stories.d.ts +1 -1
  59. package/dist/stories/default-filters.stories.js +80 -72
  60. package/dist/stories/default-filters.stories.js.map +1 -1
  61. package/dist/stories/dynamic-editable.stories.d.ts +1 -1
  62. package/dist/stories/dynamic-editable.stories.js +21 -9
  63. package/dist/stories/dynamic-editable.stories.js.map +1 -1
  64. package/dist/stories/empty-sorters.stories.d.ts +1 -1
  65. package/dist/stories/empty-sorters.stories.js +80 -71
  66. package/dist/stories/empty-sorters.stories.js.map +1 -1
  67. package/dist/stories/explicit-fetch.stories.d.ts +1 -1
  68. package/dist/stories/explicit-fetch.stories.js +81 -72
  69. package/dist/stories/explicit-fetch.stories.js.map +1 -1
  70. package/dist/stories/fixed-column.stories.d.ts +1 -1
  71. package/dist/stories/fixed-column.stories.js +122 -113
  72. package/dist/stories/fixed-column.stories.js.map +1 -1
  73. package/dist/stories/grist-modes.stories.d.ts +1 -1
  74. package/dist/stories/grist-modes.stories.js +132 -123
  75. package/dist/stories/grist-modes.stories.js.map +1 -1
  76. package/dist/stories/group-header.stories.d.ts +1 -1
  77. package/dist/stories/group-header.stories.js +122 -113
  78. package/dist/stories/group-header.stories.js.map +1 -1
  79. package/dist/stories/textarea.stories.d.ts +1 -1
  80. package/dist/stories/textarea.stories.js +113 -104
  81. package/dist/stories/textarea.stories.js.map +1 -1
  82. package/dist/stories/tree-column-with-checkbox.stories.d.ts +1 -1
  83. package/dist/stories/tree-column-with-checkbox.stories.js +126 -117
  84. package/dist/stories/tree-column-with-checkbox.stories.js.map +1 -1
  85. package/dist/stories/tree-column.stories.d.ts +1 -1
  86. package/dist/stories/tree-column.stories.js +126 -117
  87. package/dist/stories/tree-column.stories.js.map +1 -1
  88. package/dist/tsconfig.tsbuildinfo +1 -1
  89. package/package.json +7 -7
  90. package/src/data-card/data-card-gutter-menu.ts +5 -5
  91. package/src/data-card/data-card.ts +3 -3
  92. package/src/data-card/record-card.ts +30 -32
  93. package/src/data-grid/data-grid-accum-field.ts +5 -1
  94. package/src/data-grid/data-grid-footer.ts +18 -11
  95. package/src/data-grid/data-grid-header.ts +13 -15
  96. package/src/data-grist.ts +23 -23
  97. package/src/data-list/data-list.ts +3 -3
  98. package/src/data-list/record-partial.ts +21 -23
  99. package/src/empty-note.ts +3 -3
  100. package/src/gutters/gutter-button.ts +3 -3
  101. package/src/gutters/gutter-dirty.ts +5 -5
  102. package/src/handlers/contextmenu-tree-mutation.ts +4 -4
  103. package/src/record-view/record-creator.ts +1 -1
  104. package/src/record-view/record-view-body.ts +4 -4
  105. package/src/record-view/record-view.ts +5 -5
  106. package/src/sorters/sorters-control.ts +3 -3
  107. package/stories/accumulator.stories.ts +22 -10
  108. package/stories/barcode-input-filter.stories.ts +91 -82
  109. package/stories/default-filters.stories.ts +91 -82
  110. package/stories/dynamic-editable.stories.ts +21 -9
  111. package/stories/empty-sorters.stories.ts +92 -82
  112. package/stories/explicit-fetch.stories.ts +93 -83
  113. package/stories/fixed-column.stories.ts +134 -124
  114. package/stories/grist-modes.stories.ts +144 -139
  115. package/stories/group-header.stories.ts +134 -124
  116. package/stories/textarea.stories.ts +115 -110
  117. package/stories/tree-column-with-checkbox.stories.ts +134 -124
  118. package/stories/tree-column.stories.ts +134 -124
@@ -3,7 +3,7 @@ import '../src/filters/filters-form.js'
3
3
  import '../src/sorters/sorters-control.js'
4
4
  import '../src/record-view/record-creator.js'
5
5
  import '@operato/popup/ox-popup-list.js'
6
- import '@material/mwc-icon'
6
+ import '@material/web/icon/icon.js'
7
7
 
8
8
  import { html, TemplateResult } from 'lit'
9
9
 
@@ -214,149 +214,159 @@ interface ArgTypes {
214
214
  config: object
215
215
  }
216
216
 
217
- const Template: Story<ArgTypes> = ({ config }: ArgTypes) => html` <link
218
- href="https://fonts.googleapis.com/css?family=Material+Icons"
219
- rel="stylesheet"
220
- />
221
- <link href="/themes/app-theme.css" rel="stylesheet" />
222
- <link href="/themes/oops-theme.css" rel="stylesheet" />
223
- <link href="/themes/grist-theme.css" rel="stylesheet" />
217
+ const Template: Story<ArgTypes> = ({ config }: ArgTypes) =>
218
+ html` <link
219
+ href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL@20..48,100..700,0..1"
220
+ rel="stylesheet"
221
+ />
222
+ <link
223
+ href="https://fonts.googleapis.com/css2?family=Material+Symbols+Rounded: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+Sharp:opsz,wght,FILL@20..48,100..700,0..1"
228
+ rel="stylesheet"
229
+ />
224
230
 
225
- <style>
226
- ox-grist {
227
- width: 100%;
228
- height: 600px;
229
- }
230
-
231
- [slot='headroom'] {
232
- display: flex;
233
- flex-direction: row;
234
- align-items: center;
235
- padding: var(--padding-default) var(--padding-wide);
236
- background-color: var(--theme-white-color);
237
- box-shadow: var(--box-shadow);
231
+ <link href="/themes/app-theme.css" rel="stylesheet" />
232
+ <link href="/themes/oops-theme.css" rel="stylesheet" />
233
+ <link href="/themes/grist-theme.css" rel="stylesheet" />
238
234
 
239
- --mdc-icon-size: 24px;
240
- }
241
- #sorters mwc-icon,
242
- #modes mwc-icon {
243
- --mdc-icon-size: 18px;
244
- }
245
- #sorters {
246
- margin-left: auto;
247
- margin-right: var(--margin-default);
248
- padding-left: var(--padding-narrow);
249
- border-bottom: var(--border-dark-color);
250
- position: relative;
251
- color: var(--secondary-color);
252
- font-size: var(--fontsize-default);
253
- user-select: none;
254
- }
235
+ <style>
236
+ ox-grist {
237
+ width: 100%;
238
+ height: 600px;
239
+ }
255
240
 
256
- #sorters > * {
257
- padding: var(--padding-narrow);
258
- vertical-align: middle;
259
- }
241
+ [slot='headroom'] {
242
+ display: flex;
243
+ flex-direction: row;
244
+ align-items: center;
245
+ padding: var(--padding-default) var(--padding-wide);
246
+ background-color: var(--theme-white-color);
247
+ box-shadow: var(--box-shadow);
260
248
 
261
- #modes > * {
262
- padding: var(--padding-narrow);
263
- opacity: 0.5;
264
- color: var(--primary-text-color);
265
- cursor: pointer;
266
- }
249
+ --md-icon-size: 24px;
250
+ }
251
+ #sorters md-icon,
252
+ #modes md-icon {
253
+ --md-icon-size: 18px;
254
+ }
255
+ #sorters {
256
+ margin-left: auto;
257
+ margin-right: var(--margin-default);
258
+ padding-left: var(--padding-narrow);
259
+ border-bottom: var(--border-dark-color);
260
+ position: relative;
261
+ color: var(--secondary-color);
262
+ font-size: var(--fontsize-default);
263
+ user-select: none;
264
+ }
267
265
 
268
- #modes > mwc-icon[active] {
269
- border-radius: 9px;
270
- background-color: rgba(var(--primary-color-rgb), 0.05);
271
- opacity: 1;
272
- color: var(--secondary-text-color);
273
- cursor: default;
274
- }
266
+ #sorters > * {
267
+ padding: var(--padding-narrow);
268
+ vertical-align: middle;
269
+ }
275
270
 
276
- #modes > mwc-icon:hover {
277
- opacity: 1;
278
- color: var(--secondary-text-color);
279
- }
271
+ #modes > * {
272
+ padding: var(--padding-narrow);
273
+ opacity: 0.5;
274
+ color: var(--primary-text-color);
275
+ cursor: pointer;
276
+ }
280
277
 
281
- #add {
282
- width: 50px;
283
- text-align: right;
284
- }
278
+ #modes > md-icon[active] {
279
+ border-radius: 9px;
280
+ background-color: rgba(var(--primary-color-rgb), 0.05);
281
+ opacity: 1;
282
+ color: var(--secondary-text-color);
283
+ cursor: default;
284
+ }
285
285
 
286
- #add button {
287
- background-color: var(--primary-color);
288
- border: 0;
289
- border-radius: 50%;
290
- padding: 5px;
291
- width: 36px;
292
- height: 36px;
293
- cursor: pointer;
294
- }
286
+ #modes > md-icon:hover {
287
+ opacity: 1;
288
+ color: var(--secondary-text-color);
289
+ }
295
290
 
296
- #add button:hover {
297
- background-color: var(--focus-background-color);
298
- box-shadow: var(--box-shadow);
299
- }
291
+ #add {
292
+ width: 50px;
293
+ text-align: right;
294
+ }
300
295
 
301
- #add button mwc-icon {
302
- font-size: 2em;
303
- color: var(--theme-white-color);
304
- }
296
+ #add button {
297
+ background-color: var(--primary-color);
298
+ border: 0;
299
+ border-radius: 50%;
300
+ padding: 5px;
301
+ width: 36px;
302
+ height: 36px;
303
+ cursor: pointer;
304
+ }
305
305
 
306
- #filters {
307
- display: flex;
308
- justify-content: center;
309
- align-items: center;
310
- }
306
+ #add button:hover {
307
+ background-color: var(--focus-background-color);
308
+ box-shadow: var(--box-shadow);
309
+ }
311
310
 
312
- #filters * {
313
- margin-right: var(--margin-default);
314
- }
311
+ #add button md-icon {
312
+ font-size: 2em;
313
+ color: var(--theme-white-color);
314
+ }
315
315
 
316
- @media only screen and (max-width: 460px) {
317
316
  #filters {
318
- flex-direction: column;
317
+ display: flex;
318
+ justify-content: center;
319
+ align-items: center;
319
320
  }
320
321
 
321
- #modes {
322
- display: none;
322
+ #filters * {
323
+ margin-right: var(--margin-default);
323
324
  }
324
- }
325
- </style>
326
325
 
327
- <ox-grist
328
- mode="GRID"
329
- .config=${config}
330
- .fetchHandler=${fetchHandler}
331
- @filters-change=${(e: Event) => console.log('filters', (e.target as any).filters)}
332
- >
333
- <div slot="headroom">
334
- <div id="filters">
335
- <ox-filters-form autofocus></ox-filters-form>
336
- </div>
326
+ @media only screen and (max-width: 460px) {
327
+ #filters {
328
+ flex-direction: column;
329
+ }
337
330
 
338
- <div id="sorters">
339
- Sort
340
- <mwc-icon
341
- @click=${(e: Event) => {
342
- const target = e.currentTarget as HTMLElement
343
- ;(target.closest('#sorters')!.querySelector('#sorter-control') as any).open({
344
- right: 0,
345
- top: target.offsetTop + target.offsetHeight
346
- })
347
- }}
348
- >expand_more</mwc-icon
349
- >
350
- <ox-popup id="sorter-control">
351
- <ox-sorters-control> </ox-sorters-control>
352
- </ox-popup>
353
- </div>
331
+ #modes {
332
+ display: none;
333
+ }
334
+ }
335
+ </style>
336
+
337
+ <ox-grist
338
+ mode="GRID"
339
+ .config=${config}
340
+ .fetchHandler=${fetchHandler}
341
+ @filters-change=${(e: Event) => console.log('filters', (e.target as any).filters)}
342
+ >
343
+ <div slot="headroom">
344
+ <div id="filters">
345
+ <ox-filters-form autofocus></ox-filters-form>
346
+ </div>
354
347
 
355
- <ox-record-creator id="add" light-popup>
356
- <button><mwc-icon>add</mwc-icon></button>
357
- </ox-record-creator>
358
- </div>
359
- </ox-grist>`
348
+ <div id="sorters">
349
+ Sort
350
+ <md-icon
351
+ @click=${(e: Event) => {
352
+ const target = e.currentTarget as HTMLElement
353
+ ;(target.closest('#sorters')!.querySelector('#sorter-control') as any).open({
354
+ right: 0,
355
+ top: target.offsetTop + target.offsetHeight
356
+ })
357
+ }}
358
+ >expand_more</md-icon
359
+ >
360
+ <ox-popup id="sorter-control">
361
+ <ox-sorters-control> </ox-sorters-control>
362
+ </ox-popup>
363
+ </div>
364
+
365
+ <ox-record-creator id="add" light-popup>
366
+ <button><md-icon>add</md-icon></button>
367
+ </ox-record-creator>
368
+ </div>
369
+ </ox-grist>`
360
370
 
361
371
  export const Regular = Template.bind({})
362
372
  Regular.args = {
@@ -3,7 +3,7 @@ import '../src/filters/filters-form.js'
3
3
  import '../src/sorters/sorters-control.js'
4
4
  import '../src/record-view/record-creator.js'
5
5
  import '@operato/popup/ox-popup-list.js'
6
- import '@material/mwc-icon'
6
+ import '@material/web/icon/icon.js'
7
7
 
8
8
  import { html, TemplateResult } from 'lit'
9
9
 
@@ -213,149 +213,159 @@ interface ArgTypes {
213
213
  config: object
214
214
  }
215
215
 
216
- const Template: Story<ArgTypes> = ({ config }: ArgTypes) => html` <link
217
- href="https://fonts.googleapis.com/css?family=Material+Icons"
218
- rel="stylesheet"
219
- />
220
- <link href="/themes/app-theme.css" rel="stylesheet" />
221
- <link href="/themes/oops-theme.css" rel="stylesheet" />
222
- <link href="/themes/grist-theme.css" rel="stylesheet" />
216
+ const Template: Story<ArgTypes> = ({ config }: ArgTypes) =>
217
+ html` <link
218
+ href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL@20..48,100..700,0..1"
219
+ rel="stylesheet"
220
+ />
221
+ <link
222
+ href="https://fonts.googleapis.com/css2?family=Material+Symbols+Rounded:opsz,wght,FILL@20..48,100..700,0..1"
223
+ rel="stylesheet"
224
+ />
225
+ <link
226
+ href="https://fonts.googleapis.com/css2?family=Material+Symbols+Sharp:opsz,wght,FILL@20..48,100..700,0..1"
227
+ rel="stylesheet"
228
+ />
223
229
 
224
- <style>
225
- ox-grist {
226
- width: 100%;
227
- height: 600px;
228
- }
229
-
230
- [slot='headroom'] {
231
- display: flex;
232
- flex-direction: row;
233
- align-items: center;
234
- padding: var(--padding-default) var(--padding-wide);
235
- background-color: var(--theme-white-color);
236
- box-shadow: var(--box-shadow);
230
+ <link href="/themes/app-theme.css" rel="stylesheet" />
231
+ <link href="/themes/oops-theme.css" rel="stylesheet" />
232
+ <link href="/themes/grist-theme.css" rel="stylesheet" />
237
233
 
238
- --mdc-icon-size: 24px;
239
- }
240
- #sorters mwc-icon,
241
- #modes mwc-icon {
242
- --mdc-icon-size: 18px;
243
- }
244
- #sorters {
245
- margin-left: auto;
246
- margin-right: var(--margin-default);
247
- padding-left: var(--padding-narrow);
248
- border-bottom: var(--border-dark-color);
249
- position: relative;
250
- color: var(--secondary-color);
251
- font-size: var(--fontsize-default);
252
- user-select: none;
253
- }
234
+ <style>
235
+ ox-grist {
236
+ width: 100%;
237
+ height: 600px;
238
+ }
254
239
 
255
- #sorters > * {
256
- padding: var(--padding-narrow);
257
- vertical-align: middle;
258
- }
240
+ [slot='headroom'] {
241
+ display: flex;
242
+ flex-direction: row;
243
+ align-items: center;
244
+ padding: var(--padding-default) var(--padding-wide);
245
+ background-color: var(--theme-white-color);
246
+ box-shadow: var(--box-shadow);
259
247
 
260
- #modes > * {
261
- padding: var(--padding-narrow);
262
- opacity: 0.5;
263
- color: var(--primary-text-color);
264
- cursor: pointer;
265
- }
248
+ --md-icon-size: 24px;
249
+ }
250
+ #sorters md-icon,
251
+ #modes md-icon {
252
+ --md-icon-size: 18px;
253
+ }
254
+ #sorters {
255
+ margin-left: auto;
256
+ margin-right: var(--margin-default);
257
+ padding-left: var(--padding-narrow);
258
+ border-bottom: var(--border-dark-color);
259
+ position: relative;
260
+ color: var(--secondary-color);
261
+ font-size: var(--fontsize-default);
262
+ user-select: none;
263
+ }
266
264
 
267
- #modes > mwc-icon[active] {
268
- border-radius: 9px;
269
- background-color: rgba(var(--primary-color-rgb), 0.05);
270
- opacity: 1;
271
- color: var(--secondary-text-color);
272
- cursor: default;
273
- }
265
+ #sorters > * {
266
+ padding: var(--padding-narrow);
267
+ vertical-align: middle;
268
+ }
274
269
 
275
- #modes > mwc-icon:hover {
276
- opacity: 1;
277
- color: var(--secondary-text-color);
278
- }
270
+ #modes > * {
271
+ padding: var(--padding-narrow);
272
+ opacity: 0.5;
273
+ color: var(--primary-text-color);
274
+ cursor: pointer;
275
+ }
279
276
 
280
- #add {
281
- width: 50px;
282
- text-align: right;
283
- }
277
+ #modes > md-icon[active] {
278
+ border-radius: 9px;
279
+ background-color: rgba(var(--primary-color-rgb), 0.05);
280
+ opacity: 1;
281
+ color: var(--secondary-text-color);
282
+ cursor: default;
283
+ }
284
284
 
285
- #add button {
286
- background-color: var(--primary-color);
287
- border: 0;
288
- border-radius: 50%;
289
- padding: 5px;
290
- width: 36px;
291
- height: 36px;
292
- cursor: pointer;
293
- }
285
+ #modes > md-icon:hover {
286
+ opacity: 1;
287
+ color: var(--secondary-text-color);
288
+ }
294
289
 
295
- #add button:hover {
296
- background-color: var(--focus-background-color);
297
- box-shadow: var(--box-shadow);
298
- }
290
+ #add {
291
+ width: 50px;
292
+ text-align: right;
293
+ }
299
294
 
300
- #add button mwc-icon {
301
- font-size: 2em;
302
- color: var(--theme-white-color);
303
- }
295
+ #add button {
296
+ background-color: var(--primary-color);
297
+ border: 0;
298
+ border-radius: 50%;
299
+ padding: 5px;
300
+ width: 36px;
301
+ height: 36px;
302
+ cursor: pointer;
303
+ }
304
304
 
305
- #filters {
306
- display: flex;
307
- justify-content: center;
308
- align-items: center;
309
- }
305
+ #add button:hover {
306
+ background-color: var(--focus-background-color);
307
+ box-shadow: var(--box-shadow);
308
+ }
310
309
 
311
- #filters * {
312
- margin-right: var(--margin-default);
313
- }
310
+ #add button md-icon {
311
+ font-size: 2em;
312
+ color: var(--theme-white-color);
313
+ }
314
314
 
315
- @media only screen and (max-width: 460px) {
316
315
  #filters {
317
- flex-direction: column;
316
+ display: flex;
317
+ justify-content: center;
318
+ align-items: center;
318
319
  }
319
320
 
320
- #modes {
321
- display: none;
321
+ #filters * {
322
+ margin-right: var(--margin-default);
322
323
  }
323
- }
324
- </style>
325
324
 
326
- <ox-grist
327
- mode="GRID"
328
- .config=${config}
329
- .fetchHandler=${fetchHandler}
330
- @filters-change=${(e: Event) => console.log('filters', (e.target as any).filters)}
331
- >
332
- <div slot="headroom">
333
- <div id="filters">
334
- <ox-filters-form autofocus></ox-filters-form>
335
- </div>
325
+ @media only screen and (max-width: 460px) {
326
+ #filters {
327
+ flex-direction: column;
328
+ }
336
329
 
337
- <div id="sorters">
338
- Sort
339
- <mwc-icon
340
- @click=${(e: Event) => {
341
- const target = e.currentTarget as HTMLElement
342
- ;(target.closest('#sorters')!.querySelector('#sorter-control') as any).open({
343
- right: 0,
344
- top: target.offsetTop + target.offsetHeight
345
- })
346
- }}
347
- >expand_more</mwc-icon
348
- >
349
- <ox-popup id="sorter-control">
350
- <ox-sorters-control> </ox-sorters-control>
351
- </ox-popup>
352
- </div>
330
+ #modes {
331
+ display: none;
332
+ }
333
+ }
334
+ </style>
335
+
336
+ <ox-grist
337
+ mode="GRID"
338
+ .config=${config}
339
+ .fetchHandler=${fetchHandler}
340
+ @filters-change=${(e: Event) => console.log('filters', (e.target as any).filters)}
341
+ >
342
+ <div slot="headroom">
343
+ <div id="filters">
344
+ <ox-filters-form autofocus></ox-filters-form>
345
+ </div>
353
346
 
354
- <ox-record-creator id="add" light-popup>
355
- <button><mwc-icon>add</mwc-icon></button>
356
- </ox-record-creator>
357
- </div>
358
- </ox-grist>`
347
+ <div id="sorters">
348
+ Sort
349
+ <md-icon
350
+ @click=${(e: Event) => {
351
+ const target = e.currentTarget as HTMLElement
352
+ ;(target.closest('#sorters')!.querySelector('#sorter-control') as any).open({
353
+ right: 0,
354
+ top: target.offsetTop + target.offsetHeight
355
+ })
356
+ }}
357
+ >expand_more</md-icon
358
+ >
359
+ <ox-popup id="sorter-control">
360
+ <ox-sorters-control> </ox-sorters-control>
361
+ </ox-popup>
362
+ </div>
363
+
364
+ <ox-record-creator id="add" light-popup>
365
+ <button><md-icon>add</md-icon></button>
366
+ </ox-record-creator>
367
+ </div>
368
+ </ox-grist>`
359
369
 
360
370
  export const Regular = Template.bind({})
361
371
  Regular.args = {