@operato/data-grist 2.0.0-alpha.145 → 2.0.0-alpha.148

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 (152) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/demo/data-grist-test.html +1 -1
  3. package/demo/index.html +1 -1
  4. package/dist/src/data-card/data-card-field.js +2 -2
  5. package/dist/src/data-card/data-card-field.js.map +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-gutter.js +8 -6
  9. package/dist/src/data-card/data-card-gutter.js.map +1 -1
  10. package/dist/src/data-card/data-card.js +7 -9
  11. package/dist/src/data-card/data-card.js.map +1 -1
  12. package/dist/src/data-card/record-card.js +9 -10
  13. package/dist/src/data-card/record-card.js.map +1 -1
  14. package/dist/src/data-grid/data-grid-accum-field.js +5 -3
  15. package/dist/src/data-grid/data-grid-accum-field.js.map +1 -1
  16. package/dist/src/data-grid/data-grid-body-style.js +1 -1
  17. package/dist/src/data-grid/data-grid-body-style.js.map +1 -1
  18. package/dist/src/data-grid/data-grid-body.js +3 -3
  19. package/dist/src/data-grid/data-grid-body.js.map +1 -1
  20. package/dist/src/data-grid/data-grid-footer.js +2 -2
  21. package/dist/src/data-grid/data-grid-footer.js.map +1 -1
  22. package/dist/src/data-grid/data-grid-header.js +4 -4
  23. package/dist/src/data-grid/data-grid-header.js.map +1 -1
  24. package/dist/src/data-grid/data-grid.js +13 -1
  25. package/dist/src/data-grid/data-grid.js.map +1 -1
  26. package/dist/src/data-list/data-list-field.js +5 -5
  27. package/dist/src/data-list/data-list-field.js.map +1 -1
  28. package/dist/src/data-list/data-list-gutter.js +3 -3
  29. package/dist/src/data-list/data-list-gutter.js.map +1 -1
  30. package/dist/src/data-list/data-list.js +4 -4
  31. package/dist/src/data-list/data-list.js.map +1 -1
  32. package/dist/src/data-list/record-partial.js +9 -10
  33. package/dist/src/data-list/record-partial.js.map +1 -1
  34. package/dist/src/editors/ox-input-tree.js +7 -7
  35. package/dist/src/editors/ox-input-tree.js.map +1 -1
  36. package/dist/src/filters/filter-input-barcode.js +1 -0
  37. package/dist/src/filters/filter-input-barcode.js.map +1 -1
  38. package/dist/src/filters/filter-styles.js +25 -19
  39. package/dist/src/filters/filter-styles.js.map +1 -1
  40. package/dist/src/filters/filters-form.js +4 -0
  41. package/dist/src/filters/filters-form.js.map +1 -1
  42. package/dist/src/gutters/gutter-dirty.js +1 -1
  43. package/dist/src/gutters/gutter-dirty.js.map +1 -1
  44. package/dist/src/renderers/ox-grist-renderer-tree.js +7 -7
  45. package/dist/src/renderers/ox-grist-renderer-tree.js.map +1 -1
  46. package/dist/src/sorters/sorters-control.js +3 -3
  47. package/dist/src/sorters/sorters-control.js.map +1 -1
  48. package/dist/stories/accumulator-format.stories.d.ts +5 -0
  49. package/dist/stories/accumulator-format.stories.js +17 -4
  50. package/dist/stories/accumulator-format.stories.js.map +1 -1
  51. package/dist/stories/barcode-input-filter.stories.d.ts +5 -0
  52. package/dist/stories/barcode-input-filter.stories.js +19 -5
  53. package/dist/stories/barcode-input-filter.stories.js.map +1 -1
  54. package/dist/stories/bounded-select-filters.stories.d.ts +5 -0
  55. package/dist/stories/bounded-select-filters.stories.js +21 -7
  56. package/dist/stories/bounded-select-filters.stories.js.map +1 -1
  57. package/dist/stories/bounded-select-record.stories.d.ts +5 -0
  58. package/dist/stories/bounded-select-record.stories.js +21 -7
  59. package/dist/stories/bounded-select-record.stories.js.map +1 -1
  60. package/dist/stories/creatable-only-column.stories.d.ts +5 -0
  61. package/dist/stories/creatable-only-column.stories.js +34 -21
  62. package/dist/stories/creatable-only-column.stories.js.map +1 -1
  63. package/dist/stories/default-filters.stories.d.ts +5 -0
  64. package/dist/stories/default-filters.stories.js +31 -17
  65. package/dist/stories/default-filters.stories.js.map +1 -1
  66. package/dist/stories/dynamic-editable.stories.d.ts +5 -0
  67. package/dist/stories/dynamic-editable.stories.js +34 -21
  68. package/dist/stories/dynamic-editable.stories.js.map +1 -1
  69. package/dist/stories/empty-sorters.stories.d.ts +7 -1
  70. package/dist/stories/empty-sorters.stories.js +31 -17
  71. package/dist/stories/empty-sorters.stories.js.map +1 -1
  72. package/dist/stories/explicit-fetch.stories.d.ts +5 -0
  73. package/dist/stories/explicit-fetch.stories.js +30 -17
  74. package/dist/stories/explicit-fetch.stories.js.map +1 -1
  75. package/dist/stories/fixed-column.stories.d.ts +5 -0
  76. package/dist/stories/fixed-column.stories.js +34 -21
  77. package/dist/stories/fixed-column.stories.js.map +1 -1
  78. package/dist/stories/grid-setting.stories.d.ts +5 -0
  79. package/dist/stories/grid-setting.stories.js +41 -15
  80. package/dist/stories/grid-setting.stories.js.map +1 -1
  81. package/dist/stories/grist-modes.stories.d.ts +5 -0
  82. package/dist/stories/grist-modes.stories.js +39 -26
  83. package/dist/stories/grist-modes.stories.js.map +1 -1
  84. package/dist/stories/group-header.stories.d.ts +5 -0
  85. package/dist/stories/group-header.stories.js +34 -21
  86. package/dist/stories/group-header.stories.js.map +1 -1
  87. package/dist/stories/textarea.stories.d.ts +5 -0
  88. package/dist/stories/textarea.stories.js +27 -13
  89. package/dist/stories/textarea.stories.js.map +1 -1
  90. package/dist/stories/tree-column-with-checkbox.stories.d.ts +5 -0
  91. package/dist/stories/tree-column-with-checkbox.stories.js +34 -21
  92. package/dist/stories/tree-column-with-checkbox.stories.js.map +1 -1
  93. package/dist/stories/tree-column.stories.d.ts +5 -0
  94. package/dist/stories/tree-column.stories.js +34 -21
  95. package/dist/stories/tree-column.stories.js.map +1 -1
  96. package/dist/tsconfig.tsbuildinfo +1 -1
  97. package/package.json +6 -6
  98. package/src/data-card/data-card-field.ts +2 -2
  99. package/src/data-card/data-card-gutter-menu.ts +5 -5
  100. package/src/data-card/data-card-gutter.ts +8 -6
  101. package/src/data-card/data-card.ts +7 -9
  102. package/src/data-card/record-card.ts +9 -10
  103. package/src/data-grid/data-grid-accum-field.ts +5 -3
  104. package/src/data-grid/data-grid-body-style.ts +1 -1
  105. package/src/data-grid/data-grid-body.ts +4 -3
  106. package/src/data-grid/data-grid-footer.ts +2 -2
  107. package/src/data-grid/data-grid-header.ts +4 -4
  108. package/src/data-grid/data-grid.ts +13 -1
  109. package/src/data-list/data-list-field.ts +5 -5
  110. package/src/data-list/data-list-gutter.ts +3 -3
  111. package/src/data-list/data-list.ts +4 -4
  112. package/src/data-list/record-partial.ts +9 -10
  113. package/src/editors/ox-input-tree.ts +7 -7
  114. package/src/filters/filter-input-barcode.ts +1 -0
  115. package/src/filters/filter-styles.ts +25 -19
  116. package/src/filters/filters-form.ts +4 -0
  117. package/src/gutters/gutter-dirty.ts +1 -1
  118. package/src/renderers/ox-grist-renderer-tree.ts +7 -7
  119. package/src/sorters/sorters-control.ts +3 -3
  120. package/stories/accumulator-format.stories.ts +20 -5
  121. package/stories/barcode-input-filter.stories.ts +21 -6
  122. package/stories/bounded-select-filters.stories.ts +24 -8
  123. package/stories/bounded-select-record.stories.ts +24 -8
  124. package/stories/creatable-only-column.stories.ts +42 -28
  125. package/stories/default-filters.stories.ts +39 -24
  126. package/stories/dynamic-editable.stories.ts +42 -28
  127. package/stories/empty-sorters.stories.ts +41 -25
  128. package/stories/explicit-fetch.stories.ts +38 -24
  129. package/stories/fixed-column.stories.ts +42 -28
  130. package/stories/grid-setting.stories.ts +44 -16
  131. package/stories/grist-modes.stories.ts +53 -33
  132. package/stories/group-header.stories.ts +42 -28
  133. package/stories/textarea.stories.ts +35 -14
  134. package/stories/tree-column-with-checkbox.stories.ts +42 -28
  135. package/stories/tree-column.stories.ts +42 -28
  136. package/themes/dark-hc.css +151 -0
  137. package/themes/dark-mc.css +151 -0
  138. package/themes/dark.css +151 -0
  139. package/themes/grist-theme.css +99 -100
  140. package/themes/light-hc.css +151 -0
  141. package/themes/light-mc.css +151 -0
  142. package/themes/light.css +151 -0
  143. package/themes/md-typescale-styles.css +100 -0
  144. package/themes/spacing.css +43 -0
  145. package/themes/state-color.css +6 -0
  146. package/dist/stories/accumulator-format.stories copy.d.ts +0 -40
  147. package/dist/stories/accumulator-format.stories copy.js +0 -232
  148. package/dist/stories/accumulator-format.stories copy.js.map +0 -1
  149. package/themes/app-theme.css +0 -145
  150. package/themes/form-theme.css +0 -75
  151. package/themes/oops-theme.css +0 -26
  152. package/themes/report-theme.css +0 -47
@@ -38,7 +38,7 @@ export class OxGristRendererTree extends OxGristRenderer {
38
38
  transform: translate(-25%, -50%) rotate(-90deg);
39
39
  content: ' ';
40
40
  border: 5px solid transparent;
41
- border-top: 5px solid var(--primary-color, #1890ff);
41
+ border-top: 5px solid var(--md-sys-color-on-primary-container, #1890ff);
42
42
  }
43
43
 
44
44
  span[expander][expanded]::before {
@@ -48,7 +48,7 @@ export class OxGristRendererTree extends OxGristRenderer {
48
48
  transform: translate(-50%, -25%);
49
49
  content: ' ';
50
50
  border: 5px solid transparent;
51
- border-top: 5px solid var(--primary-color, #1890ff);
51
+ border-top: 5px solid var(--md-sys-color-on-primary-container, #1890ff);
52
52
  }
53
53
 
54
54
  span[checkbox] {
@@ -70,7 +70,7 @@ export class OxGristRendererTree extends OxGristRenderer {
70
70
  display: block;
71
71
  width: 10px;
72
72
  height: 10px;
73
- border: 1px solid var(--primary-color, #1890ff);
73
+ border: 1px solid var(--md-sys-color-on-primary-container, #1890ff);
74
74
  border-radius: 2px;
75
75
  }
76
76
 
@@ -79,8 +79,8 @@ export class OxGristRendererTree extends OxGristRenderer {
79
79
  }
80
80
 
81
81
  span[checkbox][checked='checked']::before {
82
- background-color: var(--primary-color, #1890ff);
83
- border-color: var(--primary-color, #1890ff);
82
+ background-color: var(--md-sys-color-on-primary-container, #1890ff);
83
+ border-color: var(--md-sys-color-on-primary-container, #1890ff);
84
84
  }
85
85
 
86
86
  span[checkbox][checked='checked']::after {
@@ -100,8 +100,8 @@ export class OxGristRendererTree extends OxGristRenderer {
100
100
  }
101
101
 
102
102
  span[checkbox][checked='half-checked']::before {
103
- background-color: var(--primary-color, #1890ff);
104
- border-color: var(--primary-color, #1890ff);
103
+ background-color: var(--md-sys-color-on-primary-container, #1890ff);
104
+ border-color: var(--md-sys-color-on-primary-container, #1890ff);
105
105
  }
106
106
 
107
107
  span[checkbox][checked='half-checked']::after {
@@ -30,12 +30,12 @@ export class SortersControl extends LitElement {
30
30
  user-select: none;
31
31
  }
32
32
  [option] md-icon {
33
- margin-left: var(--margin-default);
33
+ margin-left: var(--spacing-medium);
34
34
  --md-icon-size: var(--fontsize-large);
35
- color: var(--primary-color);
35
+ color: var(--md-sys-color-on-primary-container);
36
36
  }
37
37
  [option] sub {
38
- color: var(--primary-color);
38
+ color: var(--md-sys-color-on-primary-container);
39
39
  }
40
40
  `
41
41
  ]
@@ -6,6 +6,7 @@ import '@operato/popup/ox-popup-list.js'
6
6
  import '@material/web/icon/icon.js'
7
7
 
8
8
  import { html, TemplateResult } from 'lit'
9
+ import { styles as MDTypeScaleStyles } from '@material/web/typography/md-typescale-styles'
9
10
 
10
11
  import {
11
12
  ColumnConfig,
@@ -188,6 +189,7 @@ export default {
188
189
  config: { control: 'object' },
189
190
  mode: { control: 'select', options: ['GRID', 'LIST', 'CARD'] },
190
191
  urlParamsSensitive: { control: 'boolean' },
192
+ theme: { control: 'select', options: ['light', 'dark'] },
191
193
  withoutSearch: { control: 'boolean' }
192
194
  }
193
195
  }
@@ -204,6 +206,7 @@ interface ArgTypes {
204
206
  urlParamsSensitive: boolean
205
207
  withoutSearch: boolean
206
208
  fetchHandler: object
209
+ theme: 'light' | 'dark'
207
210
  }
208
211
 
209
212
  const Template: Story<ArgTypes> = ({
@@ -211,9 +214,17 @@ const Template: Story<ArgTypes> = ({
211
214
  mode = 'GRID',
212
215
  urlParamsSensitive = false,
213
216
  withoutSearch = false,
214
- fetchHandler
217
+ fetchHandler,
218
+ theme = 'light'
215
219
  }: ArgTypes) =>
216
- html` <link
220
+ html` <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@400;500;700&display=swap" rel="stylesheet" />
221
+
222
+ <link href="/themes/light.css" rel="stylesheet" />
223
+ <link href="/themes/dark.css" rel="stylesheet" />
224
+ <link href="/themes/spacing.css" rel="stylesheet" />
225
+ <link href="/themes/grist-theme.css" rel="stylesheet" />
226
+
227
+ <link
217
228
  href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL@20..48,100..700,0..1"
218
229
  rel="stylesheet"
219
230
  />
@@ -226,15 +237,19 @@ const Template: Story<ArgTypes> = ({
226
237
  rel="stylesheet"
227
238
  />
228
239
 
229
- <link href="/themes/app-theme.css" rel="stylesheet" />
230
- <link href="/themes/oops-theme.css" rel="stylesheet" />
231
- <link href="/themes/grist-theme.css" rel="stylesheet" />
240
+ <style>
241
+ ${MDTypeScaleStyles.cssText}
242
+ </style>
232
243
 
233
244
  <style>
234
245
  ${CommonGristStyles.cssText}
235
246
  ${CommonHeaderStyles.cssText}
236
247
  </style>
237
248
 
249
+ <script>
250
+ document.body.classList.add('${theme}')
251
+ </script>
252
+
238
253
  <style>
239
254
  ox-grist {
240
255
  height: 600px;
@@ -5,6 +5,7 @@ import '@operato/popup/ox-popup-list.js'
5
5
  import '@material/web/icon/icon.js'
6
6
 
7
7
  import { html, TemplateResult } from 'lit'
8
+ import { styles as MDTypeScaleStyles } from '@material/web/typography/md-typescale-styles'
8
9
 
9
10
  import { FetchHandler } from '../src/types.js'
10
11
 
@@ -121,7 +122,8 @@ export default {
121
122
  argTypes: {
122
123
  englishOnly: { control: 'boolean' },
123
124
  selectAfterChange: { control: 'boolean' },
124
- headerFilter: { control: 'boolean' }
125
+ headerFilter: { control: 'boolean' },
126
+ theme: { control: 'select', options: ['light', 'dark'] }
125
127
  }
126
128
  }
127
129
 
@@ -135,10 +137,18 @@ interface ArgTypes {
135
137
  englishOnly: boolean
136
138
  selectAfterChange: boolean
137
139
  headerFilter: boolean
140
+ theme: 'light' | 'dark'
138
141
  }
139
142
 
140
- const Template: Story<ArgTypes> = ({ englishOnly, selectAfterChange, headerFilter }: ArgTypes) =>
141
- html` <link
143
+ const Template: Story<ArgTypes> = ({ englishOnly, selectAfterChange, headerFilter, theme = 'light' }: ArgTypes) =>
144
+ html` <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@400;500;700&display=swap" rel="stylesheet" />
145
+
146
+ <link href="/themes/light.css" rel="stylesheet" />
147
+ <link href="/themes/dark.css" rel="stylesheet" />
148
+ <link href="/themes/spacing.css" rel="stylesheet" />
149
+ <link href="/themes/grist-theme.css" rel="stylesheet" />
150
+
151
+ <link
142
152
  href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL@20..48,100..700,0..1"
143
153
  rel="stylesheet"
144
154
  />
@@ -150,15 +160,20 @@ const Template: Story<ArgTypes> = ({ englishOnly, selectAfterChange, headerFilte
150
160
  href="https://fonts.googleapis.com/css2?family=Material+Symbols+Sharp:opsz,wght,FILL@20..48,100..700,0..1"
151
161
  rel="stylesheet"
152
162
  />
153
- <link href="/themes/app-theme.css" rel="stylesheet" />
154
- <link href="/themes/oops-theme.css" rel="stylesheet" />
155
- <link href="/themes/grist-theme.css" rel="stylesheet" />
163
+
164
+ <style>
165
+ ${MDTypeScaleStyles.cssText}
166
+ </style>
156
167
 
157
168
  <style>
158
169
  ${CommonGristStyles.cssText}
159
170
  ${CommonHeaderStyles.cssText}
160
171
  </style>
161
172
 
173
+ <script>
174
+ document.body.classList.add('${theme}')
175
+ </script>
176
+
162
177
  <style>
163
178
  ox-grist {
164
179
  height: 600px;
@@ -5,6 +5,8 @@ import '@operato/popup/ox-popup-list.js'
5
5
  import '@material/web/icon/icon.js'
6
6
 
7
7
  import { html, TemplateResult } from 'lit'
8
+ import { styles as MDTypeScaleStyles } from '@material/web/typography/md-typescale-styles'
9
+
8
10
  import { sleep } from '@operato/utils'
9
11
 
10
12
  import { ColumnConfig, FetchHandler, GristRecord, SelectOption } from '../src/types.js'
@@ -258,7 +260,8 @@ export default {
258
260
  title: 'bounded select filters for ox-grist',
259
261
  component: 'ox-grist',
260
262
  argTypes: {
261
- headerFilter: { control: 'boolean' }
263
+ headerFilter: { control: 'boolean' },
264
+ theme: { control: 'select', options: ['light', 'dark'] }
262
265
  }
263
266
  }
264
267
 
@@ -270,10 +273,18 @@ interface Story<T> {
270
273
 
271
274
  interface ArgTypes {
272
275
  headerFilter: boolean
276
+ theme: 'light' | 'dark'
273
277
  }
274
278
 
275
- const Template: Story<ArgTypes> = ({ headerFilter }: ArgTypes) =>
276
- html` <link
279
+ const Template: Story<ArgTypes> = ({ headerFilter, theme = 'light' }: ArgTypes) =>
280
+ html` <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@400;500;700&display=swap" rel="stylesheet" />
281
+
282
+ <link href="/themes/light.css" rel="stylesheet" />
283
+ <link href="/themes/dark.css" rel="stylesheet" />
284
+ <link href="/themes/spacing.css" rel="stylesheet" />
285
+ <link href="/themes/grist-theme.css" rel="stylesheet" />
286
+
287
+ <link
277
288
  href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL@20..48,100..700,0..1"
278
289
  rel="stylesheet"
279
290
  />
@@ -285,15 +296,20 @@ const Template: Story<ArgTypes> = ({ headerFilter }: ArgTypes) =>
285
296
  href="https://fonts.googleapis.com/css2?family=Material+Symbols+Sharp:opsz,wght,FILL@20..48,100..700,0..1"
286
297
  rel="stylesheet"
287
298
  />
288
- <link href="/themes/app-theme.css" rel="stylesheet" />
289
- <link href="/themes/oops-theme.css" rel="stylesheet" />
290
- <link href="/themes/grist-theme.css" rel="stylesheet" />
299
+
300
+ <style>
301
+ ${MDTypeScaleStyles.cssText}
302
+ </style>
291
303
 
292
304
  <style>
293
305
  ${CommonGristStyles.cssText}
294
306
  ${CommonHeaderStyles.cssText}
295
307
  </style>
296
308
 
309
+ <script>
310
+ document.body.classList.add('${theme}')
311
+ </script>
312
+
297
313
  <style>
298
314
  ox-grist {
299
315
  height: 600px;
@@ -310,8 +326,8 @@ const Template: Story<ArgTypes> = ({ headerFilter }: ArgTypes) =>
310
326
  .fetchHandler=${fetchHandler}
311
327
  @filters-change=${(e: Event) => console.log('filters', (e.target as any).filters)}
312
328
  >
313
- <div slot="headroom">
314
- <div id="filters">
329
+ <div slot="headroom" class="header">
330
+ <div class="filters">
315
331
  <ox-filters-form></ox-filters-form>
316
332
  </div>
317
333
  </div>
@@ -5,6 +5,8 @@ import '@operato/popup/ox-popup-list.js'
5
5
  import '@material/web/icon/icon.js'
6
6
 
7
7
  import { html, TemplateResult } from 'lit'
8
+ import { styles as MDTypeScaleStyles } from '@material/web/typography/md-typescale-styles'
9
+
8
10
  import { sleep } from '@operato/utils'
9
11
 
10
12
  import { ColumnConfig, FetchHandler, FieldEditor, GristRecord, SelectOption } from '../src/types.js'
@@ -261,7 +263,8 @@ export default {
261
263
  title: 'bounded select record for ox-grist',
262
264
  component: 'ox-grist',
263
265
  argTypes: {
264
- headerFilter: { control: 'boolean' }
266
+ headerFilter: { control: 'boolean' },
267
+ theme: { control: 'select', options: ['light', 'dark'] }
265
268
  }
266
269
  }
267
270
 
@@ -273,10 +276,18 @@ interface Story<T> {
273
276
 
274
277
  interface ArgTypes {
275
278
  headerFilter: boolean
279
+ theme: 'light' | 'dark'
276
280
  }
277
281
 
278
- const Template: Story<ArgTypes> = ({ headerFilter }: ArgTypes) =>
279
- html` <link
282
+ const Template: Story<ArgTypes> = ({ headerFilter, theme = 'light' }: ArgTypes) =>
283
+ html` <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@400;500;700&display=swap" rel="stylesheet" />
284
+
285
+ <link href="/themes/light.css" rel="stylesheet" />
286
+ <link href="/themes/dark.css" rel="stylesheet" />
287
+ <link href="/themes/spacing.css" rel="stylesheet" />
288
+ <link href="/themes/grist-theme.css" rel="stylesheet" />
289
+
290
+ <link
280
291
  href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL@20..48,100..700,0..1"
281
292
  rel="stylesheet"
282
293
  />
@@ -288,15 +299,20 @@ const Template: Story<ArgTypes> = ({ headerFilter }: ArgTypes) =>
288
299
  href="https://fonts.googleapis.com/css2?family=Material+Symbols+Sharp:opsz,wght,FILL@20..48,100..700,0..1"
289
300
  rel="stylesheet"
290
301
  />
291
- <link href="/themes/app-theme.css" rel="stylesheet" />
292
- <link href="/themes/oops-theme.css" rel="stylesheet" />
293
- <link href="/themes/grist-theme.css" rel="stylesheet" />
302
+
303
+ <style>
304
+ ${MDTypeScaleStyles.cssText}
305
+ </style>
294
306
 
295
307
  <style>
296
308
  ${CommonGristStyles.cssText}
297
309
  ${CommonHeaderStyles.cssText}
298
310
  </style>
299
311
 
312
+ <script>
313
+ document.body.classList.add('${theme}')
314
+ </script>
315
+
300
316
  <style>
301
317
  ox-grist {
302
318
  height: 600px;
@@ -313,8 +329,8 @@ const Template: Story<ArgTypes> = ({ headerFilter }: ArgTypes) =>
313
329
  .fetchHandler=${fetchHandler}
314
330
  @filters-change=${(e: Event) => console.log('filters', (e.target as any).filters)}
315
331
  >
316
- <div slot="headroom">
317
- <div id="filters">
332
+ <div slot="headroom" class="header">
333
+ <div class="filters">
318
334
  <ox-filters-form></ox-filters-form>
319
335
  </div>
320
336
  </div>
@@ -5,6 +5,7 @@ import '@operato/popup/ox-popup-list.js'
5
5
  import '@material/web/icon/icon.js'
6
6
 
7
7
  import { html, TemplateResult } from 'lit'
8
+ import { styles as MDTypeScaleStyles } from '@material/web/typography/md-typescale-styles'
8
9
 
9
10
  import { FetchHandler } from '../src/types.js'
10
11
  import { CommonHeaderStyles, CommonGristStyles } from '@operato/styles'
@@ -152,7 +153,8 @@ export default {
152
153
  title: 'creatable only column for ox-grist',
153
154
  component: 'ox-grist',
154
155
  argTypes: {
155
- headerFilter: { control: 'boolean' }
156
+ headerFilter: { control: 'boolean' },
157
+ theme: { control: 'select', options: ['light', 'dark'] }
156
158
  }
157
159
  }
158
160
 
@@ -164,10 +166,18 @@ interface Story<T> {
164
166
 
165
167
  interface ArgTypes {
166
168
  headerFilter: boolean
169
+ theme: 'light' | 'dark'
167
170
  }
168
171
 
169
- const Template: Story<ArgTypes> = ({ headerFilter }: ArgTypes) =>
170
- html` <link
172
+ const Template: Story<ArgTypes> = ({ headerFilter, theme = 'light' }: ArgTypes) =>
173
+ html` <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@400;500;700&display=swap" rel="stylesheet" />
174
+
175
+ <link href="/themes/light.css" rel="stylesheet" />
176
+ <link href="/themes/dark.css" rel="stylesheet" />
177
+ <link href="/themes/spacing.css" rel="stylesheet" />
178
+ <link href="/themes/grist-theme.css" rel="stylesheet" />
179
+
180
+ <link
171
181
  href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL@20..48,100..700,0..1"
172
182
  rel="stylesheet"
173
183
  />
@@ -180,15 +190,19 @@ const Template: Story<ArgTypes> = ({ headerFilter }: ArgTypes) =>
180
190
  rel="stylesheet"
181
191
  />
182
192
 
183
- <link href="/themes/app-theme.css" rel="stylesheet" />
184
- <link href="/themes/oops-theme.css" rel="stylesheet" />
185
- <link href="/themes/grist-theme.css" rel="stylesheet" />
193
+ <style>
194
+ ${MDTypeScaleStyles.cssText}
195
+ </style>
186
196
 
187
197
  <style>
188
198
  ${CommonGristStyles.cssText}
189
199
  ${CommonHeaderStyles.cssText}
190
200
  </style>
191
201
 
202
+ <script>
203
+ document.body.classList.add('${theme}')
204
+ </script>
205
+
192
206
  <style>
193
207
  ox-grist {
194
208
  height: 600px;
@@ -209,31 +223,31 @@ const Template: Story<ArgTypes> = ({ headerFilter }: ArgTypes) =>
209
223
  console.log(name, number, chk)
210
224
  }}
211
225
  >
212
- <div slot="headroom">
213
- <div id="filters">
226
+ <div slot="headroom" class="header">
227
+ <div class="filters">
214
228
  <ox-filters-form></ox-filters-form>
215
- </div>
216
229
 
217
- <div id="sorters">
218
- Sort
219
- <md-icon
220
- @click=${(e: Event) => {
221
- const target = e.currentTarget as HTMLElement
222
- ;(target.closest('#sorters')!.querySelector('#sorter-control') as any).open({
223
- right: 0,
224
- top: target.offsetTop + target.offsetHeight
225
- })
226
- }}
227
- >expand_more</md-icon
228
- >
229
- <ox-popup id="sorter-control">
230
- <ox-sorters-control> </ox-sorters-control>
231
- </ox-popup>
230
+ <div id="sorters">
231
+ Sort
232
+ <md-icon
233
+ @click=${(e: Event) => {
234
+ const target = e.currentTarget as HTMLElement
235
+ ;(target.closest('#sorters')!.querySelector('#sorter-control') as any).open({
236
+ right: 0,
237
+ top: target.offsetTop + target.offsetHeight
238
+ })
239
+ }}
240
+ >expand_more</md-icon
241
+ >
242
+ <ox-popup id="sorter-control">
243
+ <ox-sorters-control> </ox-sorters-control>
244
+ </ox-popup>
245
+ </div>
246
+
247
+ <ox-record-creator id="add" light-popup>
248
+ <button><md-icon>add</md-icon></button>
249
+ </ox-record-creator>
232
250
  </div>
233
-
234
- <ox-record-creator id="add" light-popup>
235
- <button><md-icon>add</md-icon></button>
236
- </ox-record-creator>
237
251
  </div>
238
252
  </ox-grist>`
239
253
 
@@ -5,6 +5,7 @@ import '@operato/popup/ox-popup-list.js'
5
5
  import '@material/web/icon/icon.js'
6
6
 
7
7
  import { html, TemplateResult } from 'lit'
8
+ import { styles as MDTypeScaleStyles } from '@material/web/typography/md-typescale-styles'
8
9
 
9
10
  import { FetchHandler } from '../src/types.js'
10
11
 
@@ -149,7 +150,8 @@ export default {
149
150
  title: 'default filters for ox-grist',
150
151
  component: 'ox-grist',
151
152
  argTypes: {
152
- headerFilter: { control: 'boolean' }
153
+ headerFilter: { control: 'boolean' },
154
+ theme: { control: 'select', options: ['light', 'dark'] }
153
155
  }
154
156
  }
155
157
 
@@ -161,10 +163,18 @@ interface Story<T> {
161
163
 
162
164
  interface ArgTypes {
163
165
  headerFilter: boolean
166
+ theme?: 'light' | 'dark'
164
167
  }
165
168
 
166
- const Template: Story<ArgTypes> = ({ headerFilter }: ArgTypes) =>
167
- html` <link
169
+ const Template: Story<ArgTypes> = ({ headerFilter, theme = 'light' }: ArgTypes) =>
170
+ html` <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@400;500;700&display=swap" rel="stylesheet" />
171
+
172
+ <link href="/themes/light.css" rel="stylesheet" />
173
+ <link href="/themes/dark.css" rel="stylesheet" />
174
+ <link href="/themes/spacing.css" rel="stylesheet" />
175
+ <link href="/themes/grist-theme.css" rel="stylesheet" />
176
+
177
+ <link
168
178
  href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL@20..48,100..700,0..1"
169
179
  rel="stylesheet"
170
180
  />
@@ -176,15 +186,20 @@ const Template: Story<ArgTypes> = ({ headerFilter }: ArgTypes) =>
176
186
  href="https://fonts.googleapis.com/css2?family=Material+Symbols+Sharp:opsz,wght,FILL@20..48,100..700,0..1"
177
187
  rel="stylesheet"
178
188
  />
179
- <link href="/themes/app-theme.css" rel="stylesheet" />
180
- <link href="/themes/oops-theme.css" rel="stylesheet" />
181
- <link href="/themes/grist-theme.css" rel="stylesheet" />
189
+
190
+ <style>
191
+ ${MDTypeScaleStyles.cssText}
192
+ </style>
182
193
 
183
194
  <style>
184
195
  ${CommonGristStyles.cssText}
185
196
  ${CommonHeaderStyles.cssText}
186
197
  </style>
187
198
 
199
+ <script>
200
+ document.body.classList.add('${theme}')
201
+ </script>
202
+
188
203
  <style>
189
204
  ox-grist {
190
205
  height: 600px;
@@ -201,26 +216,26 @@ const Template: Story<ArgTypes> = ({ headerFilter }: ArgTypes) =>
201
216
  .fetchHandler=${fetchHandler}
202
217
  @filters-change=${(e: Event) => console.log('filters', (e.target as any).filters)}
203
218
  >
204
- <div slot="headroom">
205
- <div id="filters">
219
+ <div slot="headroom" class="header">
220
+ <div class="filters">
206
221
  <ox-filters-form></ox-filters-form>
207
- </div>
208
222
 
209
- <div id="sorters">
210
- Sort
211
- <md-icon
212
- @click=${(e: Event) => {
213
- const target = e.currentTarget as HTMLElement
214
- ;(target.closest('#sorters')!.querySelector('#sorter-control') as any).open({
215
- right: 0,
216
- top: target.offsetTop + target.offsetHeight
217
- })
218
- }}
219
- >expand_more</md-icon
220
- >
221
- <ox-popup id="sorter-control">
222
- <ox-sorters-control> </ox-sorters-control>
223
- </ox-popup>
223
+ <div id="sorters">
224
+ Sort
225
+ <md-icon
226
+ @click=${(e: Event) => {
227
+ const target = e.currentTarget as HTMLElement
228
+ ;(target.closest('#sorters')!.querySelector('#sorter-control') as any).open({
229
+ right: 0,
230
+ top: target.offsetTop + target.offsetHeight
231
+ })
232
+ }}
233
+ >expand_more</md-icon
234
+ >
235
+ <ox-popup id="sorter-control">
236
+ <ox-sorters-control> </ox-sorters-control>
237
+ </ox-popup>
238
+ </div>
224
239
  </div>
225
240
  </div>
226
241
  </ox-grist>`