@operato/data-grist 2.0.0-alpha.90 → 2.0.0-alpha.93

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 (49) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/src/data-grid/data-grid-body-style.js +1 -0
  3. package/dist/src/data-grid/data-grid-body-style.js.map +1 -1
  4. package/dist/src/filters/filter-styles.js +10 -1
  5. package/dist/src/filters/filter-styles.js.map +1 -1
  6. package/dist/stories/accumulator.stories.js +10 -120
  7. package/dist/stories/accumulator.stories.js.map +1 -1
  8. package/dist/stories/barcode-input-filter.stories.js +15 -81
  9. package/dist/stories/barcode-input-filter.stories.js.map +1 -1
  10. package/dist/stories/default-filters.stories.js +3 -69
  11. package/dist/stories/default-filters.stories.js.map +1 -1
  12. package/dist/stories/dynamic-editable.stories.js +3 -97
  13. package/dist/stories/dynamic-editable.stories.js.map +1 -1
  14. package/dist/stories/empty-sorters.stories.js +3 -69
  15. package/dist/stories/empty-sorters.stories.js.map +1 -1
  16. package/dist/stories/explicit-fetch.stories.js +3 -69
  17. package/dist/stories/explicit-fetch.stories.js.map +1 -1
  18. package/dist/stories/fixed-column.stories.js +3 -117
  19. package/dist/stories/fixed-column.stories.js.map +1 -1
  20. package/dist/stories/grid-setting.stories.js +3 -135
  21. package/dist/stories/grid-setting.stories.js.map +1 -1
  22. package/dist/stories/grist-modes.stories.js +3 -122
  23. package/dist/stories/grist-modes.stories.js.map +1 -1
  24. package/dist/stories/group-header.stories.js +3 -117
  25. package/dist/stories/group-header.stories.js.map +1 -1
  26. package/dist/stories/textarea.stories.js +3 -118
  27. package/dist/stories/textarea.stories.js.map +1 -1
  28. package/dist/stories/tree-column-with-checkbox.stories.js +3 -122
  29. package/dist/stories/tree-column-with-checkbox.stories.js.map +1 -1
  30. package/dist/stories/tree-column.stories.js +3 -122
  31. package/dist/stories/tree-column.stories.js.map +1 -1
  32. package/dist/tsconfig.tsbuildinfo +1 -1
  33. package/package.json +5 -5
  34. package/src/data-grid/data-grid-body-style.ts +1 -0
  35. package/src/filters/filter-styles.ts +10 -1
  36. package/stories/accumulator.stories.ts +11 -120
  37. package/stories/barcode-input-filter.stories.ts +22 -87
  38. package/stories/default-filters.stories.ts +4 -69
  39. package/stories/dynamic-editable.stories.ts +3 -97
  40. package/stories/empty-sorters.stories.ts +3 -69
  41. package/stories/explicit-fetch.stories.ts +3 -69
  42. package/stories/fixed-column.stories.ts +4 -117
  43. package/stories/grid-setting.stories.ts +4 -135
  44. package/stories/grist-modes.stories.ts +4 -122
  45. package/stories/group-header.stories.ts +4 -117
  46. package/stories/textarea.stories.ts +4 -118
  47. package/stories/tree-column-with-checkbox.stories.ts +4 -122
  48. package/stories/tree-column.stories.ts +4 -122
  49. package/themes/grist-theme.css +2 -0
@@ -16,6 +16,8 @@ import {
16
16
  ValidationCallback
17
17
  } from '../src/types.js'
18
18
 
19
+ import { CommonHeaderStyles, CommonGristStyles } from '@operato/styles'
20
+
19
21
  const fetchHandler: FetchHandler = async ({ page, limit }) => {
20
22
  var total = 120993
21
23
  var start = (page! - 1) * limit!
@@ -349,123 +351,8 @@ const Template: Story<ArgTypes> = ({ config }: ArgTypes) =>
349
351
  <link href="/themes/grist-theme.css" rel="stylesheet" />
350
352
 
351
353
  <style>
352
- ox-filters-form {
353
- --input-gap-vertical: 8px;
354
- --input-gap-horizontal: 16px;
355
-
356
- --ox-filters-input-placeholder-color: var(--primary-color);
357
-
358
- --ox-filters-input-border: 1px solid rgba(0, 0, 0, 0.2);
359
- --ox-filters-input-focus-border: 1px solid var(--primary-color);
360
- --ox-filters-input-font: normal 14px var(--theme-font);
361
- --ox-filters-input-color: var(--primary-text-color);
362
- --ox-filters-input-focus-color: var(--primary-color);
363
- --ox-filters-label-font: normal 14px var(--theme-font);
364
- --ox-filters-label-color: var(--primary-text-color);
365
-
366
- --ox-filters-form-gap: var(--input-gap-vertical, 8px) var(--input-gap-horizontal, 16px);
367
- --ox-filters-input-padding: 6px 2px;
368
- }
369
- </style>
370
-
371
- <style>
372
- [slot='headroom'] {
373
- display: flex;
374
- flex-direction: row;
375
- align-items: center;
376
- padding: var(--padding-default) var(--padding-wide);
377
- background-color: var(--theme-white-color);
378
- box-shadow: var(--box-shadow);
379
-
380
- --md-icon-size: 24px;
381
- }
382
- #sorters md-icon,
383
- #modes md-icon {
384
- --md-icon-size: 18px;
385
- }
386
- #sorters {
387
- margin-left: auto;
388
- margin-right: var(--margin-default);
389
- padding-left: var(--padding-narrow);
390
- border-bottom: var(--border-dark-color);
391
- position: relative;
392
- color: var(--secondary-color);
393
- font-size: var(--fontsize-default);
394
- user-select: none;
395
- }
396
-
397
- #sorters > * {
398
- padding: var(--padding-narrow);
399
- vertical-align: middle;
400
- }
401
-
402
- #modes > * {
403
- padding: var(--padding-narrow);
404
- opacity: 0.5;
405
- color: var(--primary-text-color);
406
- cursor: pointer;
407
- }
408
-
409
- #modes > md-icon[active] {
410
- border-radius: 9px;
411
- background-color: rgba(var(--primary-color-rgb), 0.05);
412
- opacity: 1;
413
- color: var(--secondary-text-color);
414
- cursor: default;
415
- }
416
-
417
- #modes > md-icon:hover {
418
- opacity: 1;
419
- color: var(--secondary-text-color);
420
- }
421
-
422
- #add {
423
- text-align: right;
424
- }
425
-
426
- #add button {
427
- display: flex;
428
- align-items: center;
429
- justify-content: center;
430
-
431
- background-color: var(--primary-color);
432
- border: 0;
433
- border-radius: 50%;
434
- padding: 5px;
435
- width: 32px;
436
- height: 32px;
437
- cursor: pointer;
438
- }
439
-
440
- #add button:hover {
441
- background-color: var(--focus-background-color);
442
- box-shadow: var(--box-shadow);
443
- }
444
-
445
- #add button md-icon {
446
- font-size: 1.5em;
447
- color: var(--theme-white-color);
448
- }
449
-
450
- #filters {
451
- display: flex;
452
- justify-content: center;
453
- align-items: center;
454
- }
455
-
456
- #filters * {
457
- margin-right: var(--margin-default);
458
- }
459
-
460
- @media only screen and (max-width: 460px) {
461
- #filters {
462
- flex-direction: column;
463
- }
464
-
465
- #modes {
466
- display: none;
467
- }
468
- }
354
+ ${CommonGristStyles.cssText}
355
+ ${CommonHeaderStyles.cssText}
469
356
  </style>
470
357
 
471
358
  <ox-grist
@@ -7,6 +7,8 @@ import '@material/web/icon/icon.js'
7
7
 
8
8
  import { html, TemplateResult } from 'lit'
9
9
 
10
+ import { CommonHeaderStyles, CommonGristStyles } from '@operato/styles'
11
+
10
12
  import {
11
13
  ColumnConfig,
12
14
  FetchHandler,
@@ -375,141 +377,8 @@ const Template: Story<ArgTypes> = ({ config, mode = 'GRID', urlParamsSensitive =
375
377
  <link href="/themes/grist-theme.css" rel="stylesheet" />
376
378
 
377
379
  <style>
378
- ox-filters-form {
379
- --input-gap-vertical: 8px;
380
- --input-gap-horizontal: 16px;
381
-
382
- --ox-filters-input-placeholder-color: var(--primary-color);
383
-
384
- --ox-filters-input-border: 1px solid rgba(0, 0, 0, 0.2);
385
- --ox-filters-input-focus-border: 1px solid var(--primary-color);
386
- --ox-filters-input-font: normal 14px var(--theme-font);
387
- --ox-filters-input-color: var(--primary-text-color);
388
- --ox-filters-input-focus-color: var(--primary-color);
389
- --ox-filters-label-font: normal 14px var(--theme-font);
390
- --ox-filters-label-color: var(--primary-text-color);
391
-
392
- --ox-filters-form-gap: var(--input-gap-vertical, 8px) var(--input-gap-horizontal, 16px);
393
- --ox-filters-input-padding: 6px 2px;
394
- }
395
- </style>
396
-
397
- <style>
398
- ox-grist {
399
- width: 100%;
400
- height: 600px;
401
- }
402
-
403
- [slot='headroom'] {
404
- display: flex;
405
- flex-direction: row;
406
- align-items: center;
407
- padding: var(--padding-default) var(--padding-wide);
408
- background-color: var(--theme-white-color);
409
- box-shadow: var(--box-shadow);
410
-
411
- --md-icon-size: 24px;
412
- }
413
- #sorters md-icon,
414
- #modes md-icon {
415
- --md-icon-size: 18px;
416
- }
417
- #sorters {
418
- margin-left: auto;
419
- margin-right: var(--margin-default);
420
- padding-left: var(--padding-narrow);
421
- border-bottom: var(--border-dark-color);
422
- position: relative;
423
- color: var(--secondary-color);
424
- font-size: var(--fontsize-default);
425
- user-select: none;
426
- }
427
-
428
- #sorters > * {
429
- padding: var(--padding-narrow);
430
- vertical-align: middle;
431
- }
432
-
433
- #modes > * {
434
- padding: var(--padding-narrow);
435
- opacity: 0.5;
436
- color: var(--primary-text-color);
437
- cursor: pointer;
438
- }
439
-
440
- #modes > md-icon[active] {
441
- border-radius: 9px;
442
- background-color: rgba(var(--primary-color-rgb), 0.05);
443
- opacity: 1;
444
- color: var(--secondary-text-color);
445
- cursor: default;
446
- }
447
-
448
- #modes > md-icon:hover {
449
- opacity: 1;
450
- color: var(--secondary-text-color);
451
- }
452
-
453
- #add {
454
- text-align: right;
455
- }
456
-
457
- #add button {
458
- display: flex;
459
- align-items: center;
460
- justify-content: center;
461
-
462
- background-color: var(--primary-color);
463
- border: 0;
464
- border-radius: 50%;
465
- padding: 5px;
466
- width: 32px;
467
- height: 32px;
468
- cursor: pointer;
469
- }
470
-
471
- #add button:hover {
472
- background-color: var(--focus-background-color);
473
- box-shadow: var(--box-shadow);
474
- }
475
-
476
- #add button md-icon {
477
- font-size: 1.5em;
478
- color: var(--theme-white-color);
479
- }
480
-
481
- #filters {
482
- display: flex;
483
- justify-content: center;
484
- align-items: center;
485
- }
486
-
487
- #filters * {
488
- margin-right: var(--margin-default);
489
- }
490
-
491
- [slot='setting'] {
492
- --md-icon-size: 18px;
493
- position: absolute;
494
- right: 0;
495
- top: 2px;
496
- color: rgba(var(--secondary-color-rgb), 0.8);
497
- cursor: pointer;
498
- }
499
-
500
- [slot='setting']:hover {
501
- color: var(--primary-color);
502
- }
503
-
504
- @media only screen and (max-width: 460px) {
505
- #filters {
506
- flex-direction: column;
507
- }
508
-
509
- #modes {
510
- display: none;
511
- }
512
- }
380
+ ${CommonGristStyles.cssText}
381
+ ${CommonHeaderStyles.cssText}
513
382
  </style>
514
383
 
515
384
  <ox-grist
@@ -7,6 +7,8 @@ import '@material/web/icon/icon.js'
7
7
 
8
8
  import { html, TemplateResult } from 'lit'
9
9
 
10
+ import { CommonHeaderStyles, CommonGristStyles } from '@operato/styles'
11
+
10
12
  import {
11
13
  ColumnConfig,
12
14
  FetchHandler,
@@ -374,128 +376,8 @@ const Template: Story<ArgTypes> = ({ config, mode = 'GRID', urlParamsSensitive =
374
376
  <link href="/themes/grist-theme.css" rel="stylesheet" />
375
377
 
376
378
  <style>
377
- ox-filters-form {
378
- --input-gap-vertical: 8px;
379
- --input-gap-horizontal: 16px;
380
-
381
- --ox-filters-input-placeholder-color: var(--primary-color);
382
-
383
- --ox-filters-input-border: 1px solid rgba(0, 0, 0, 0.2);
384
- --ox-filters-input-focus-border: 1px solid var(--primary-color);
385
- --ox-filters-input-font: normal 14px var(--theme-font);
386
- --ox-filters-input-color: var(--primary-text-color);
387
- --ox-filters-input-focus-color: var(--primary-color);
388
- --ox-filters-label-font: normal 14px var(--theme-font);
389
- --ox-filters-label-color: var(--primary-text-color);
390
-
391
- --ox-filters-form-gap: var(--input-gap-vertical, 8px) var(--input-gap-horizontal, 16px);
392
- --ox-filters-input-padding: 6px 2px;
393
- }
394
- </style>
395
-
396
- <style>
397
- ox-grist {
398
- width: 100%;
399
- height: 600px;
400
- }
401
-
402
- [slot='headroom'] {
403
- display: flex;
404
- flex-direction: row;
405
- align-items: center;
406
- padding: var(--padding-default) var(--padding-wide);
407
- background-color: var(--theme-white-color);
408
- box-shadow: var(--box-shadow);
409
-
410
- --md-icon-size: 24px;
411
- }
412
- #sorters md-icon,
413
- #modes md-icon {
414
- --md-icon-size: 18px;
415
- }
416
- #sorters {
417
- margin-left: auto;
418
- margin-right: var(--margin-default);
419
- padding-left: var(--padding-narrow);
420
- border-bottom: var(--border-dark-color);
421
- position: relative;
422
- color: var(--secondary-color);
423
- font-size: var(--fontsize-default);
424
- user-select: none;
425
- }
426
-
427
- #sorters > * {
428
- padding: var(--padding-narrow);
429
- vertical-align: middle;
430
- }
431
-
432
- #modes > * {
433
- padding: var(--padding-narrow);
434
- opacity: 0.5;
435
- color: var(--primary-text-color);
436
- cursor: pointer;
437
- }
438
-
439
- #modes > md-icon[active] {
440
- border-radius: 9px;
441
- background-color: rgba(var(--primary-color-rgb), 0.05);
442
- opacity: 1;
443
- color: var(--secondary-text-color);
444
- cursor: default;
445
- }
446
-
447
- #modes > md-icon:hover {
448
- opacity: 1;
449
- color: var(--secondary-text-color);
450
- }
451
-
452
- #add {
453
- text-align: right;
454
- }
455
-
456
- #add button {
457
- display: flex;
458
- align-items: center;
459
- justify-content: center;
460
-
461
- background-color: var(--primary-color);
462
- border: 0;
463
- border-radius: 50%;
464
- padding: 5px;
465
- width: 32px;
466
- height: 32px;
467
- cursor: pointer;
468
- }
469
-
470
- #add button:hover {
471
- background-color: var(--focus-background-color);
472
- box-shadow: var(--box-shadow);
473
- }
474
-
475
- #add button md-icon {
476
- font-size: 1.5em;
477
- color: var(--theme-white-color);
478
- }
479
-
480
- #filters {
481
- display: flex;
482
- justify-content: center;
483
- align-items: center;
484
- }
485
-
486
- #filters * {
487
- margin-right: var(--margin-default);
488
- }
489
-
490
- @media only screen and (max-width: 460px) {
491
- #filters {
492
- flex-direction: column;
493
- }
494
-
495
- #modes {
496
- display: none;
497
- }
498
- }
379
+ ${CommonGristStyles.cssText}
380
+ ${CommonHeaderStyles.cssText}
499
381
  </style>
500
382
 
501
383
  <ox-grist
@@ -7,6 +7,8 @@ import '@material/web/icon/icon.js'
7
7
 
8
8
  import { html, TemplateResult } from 'lit'
9
9
 
10
+ import { CommonHeaderStyles, CommonGristStyles } from '@operato/styles'
11
+
10
12
  import {
11
13
  ColumnConfig,
12
14
  FetchHandler,
@@ -379,123 +381,8 @@ const Template: Story<ArgTypes> = ({ config }: ArgTypes) =>
379
381
  <link href="/themes/grist-theme.css" rel="stylesheet" />
380
382
 
381
383
  <style>
382
- ox-filters-form {
383
- --input-gap-vertical: 8px;
384
- --input-gap-horizontal: 16px;
385
-
386
- --ox-filters-input-placeholder-color: var(--primary-color);
387
-
388
- --ox-filters-input-border: 1px solid rgba(0, 0, 0, 0.2);
389
- --ox-filters-input-focus-border: 1px solid var(--primary-color);
390
- --ox-filters-input-font: normal 14px var(--theme-font);
391
- --ox-filters-input-color: var(--primary-text-color);
392
- --ox-filters-input-focus-color: var(--primary-color);
393
- --ox-filters-label-font: normal 14px var(--theme-font);
394
- --ox-filters-label-color: var(--primary-text-color);
395
-
396
- --ox-filters-form-gap: var(--input-gap-vertical, 8px) var(--input-gap-horizontal, 16px);
397
- --ox-filters-input-padding: 6px 2px;
398
- }
399
- </style>
400
-
401
- <style>
402
- [slot='headroom'] {
403
- display: flex;
404
- flex-direction: row;
405
- align-items: center;
406
- padding: var(--padding-default) var(--padding-wide);
407
- background-color: var(--theme-white-color);
408
- box-shadow: var(--box-shadow);
409
-
410
- --md-icon-size: 24px;
411
- }
412
- #sorters md-icon,
413
- #modes md-icon {
414
- --md-icon-size: 18px;
415
- }
416
- #sorters {
417
- margin-left: auto;
418
- margin-right: var(--margin-default);
419
- padding-left: var(--padding-narrow);
420
- border-bottom: var(--border-dark-color);
421
- position: relative;
422
- color: var(--secondary-color);
423
- font-size: var(--fontsize-default);
424
- user-select: none;
425
- }
426
-
427
- #sorters > * {
428
- padding: var(--padding-narrow);
429
- vertical-align: middle;
430
- }
431
-
432
- #modes > * {
433
- padding: var(--padding-narrow);
434
- opacity: 0.5;
435
- color: var(--primary-text-color);
436
- cursor: pointer;
437
- }
438
-
439
- #modes > md-icon[active] {
440
- border-radius: 9px;
441
- background-color: rgba(var(--primary-color-rgb), 0.05);
442
- opacity: 1;
443
- color: var(--secondary-text-color);
444
- cursor: default;
445
- }
446
-
447
- #modes > md-icon:hover {
448
- opacity: 1;
449
- color: var(--secondary-text-color);
450
- }
451
-
452
- #add {
453
- text-align: right;
454
- }
455
-
456
- #add button {
457
- display: flex;
458
- align-items: center;
459
- justify-content: center;
460
-
461
- background-color: var(--primary-color);
462
- border: 0;
463
- border-radius: 50%;
464
- padding: 5px;
465
- width: 32px;
466
- height: 32px;
467
- cursor: pointer;
468
- }
469
-
470
- #add button:hover {
471
- background-color: var(--focus-background-color);
472
- box-shadow: var(--box-shadow);
473
- }
474
-
475
- #add button md-icon {
476
- font-size: 1.5em;
477
- color: var(--theme-white-color);
478
- }
479
-
480
- #filters {
481
- display: flex;
482
- justify-content: center;
483
- align-items: center;
484
- }
485
-
486
- #filters * {
487
- margin-right: var(--margin-default);
488
- }
489
-
490
- @media only screen and (max-width: 460px) {
491
- #filters {
492
- flex-direction: column;
493
- }
494
-
495
- #modes {
496
- display: none;
497
- }
498
- }
384
+ ${CommonGristStyles.cssText}
385
+ ${CommonHeaderStyles.cssText}
499
386
  </style>
500
387
 
501
388
  <ox-grist
@@ -7,6 +7,8 @@ import '@material/web/icon/icon.js'
7
7
 
8
8
  import { html, TemplateResult } from 'lit'
9
9
 
10
+ import { CommonHeaderStyles, CommonGristStyles } from '@operato/styles'
11
+
10
12
  import {
11
13
  ColumnConfig,
12
14
  FetchHandler,
@@ -208,124 +210,8 @@ const Template: Story<ArgTypes> = ({ config, mode = 'GRID', urlParamsSensitive =
208
210
  <link href="/themes/grist-theme.css" rel="stylesheet" />
209
211
 
210
212
  <style>
211
- ox-filters-form {
212
- --input-gap-vertical: 8px;
213
- --input-gap-horizontal: 16px;
214
-
215
- --ox-filters-input-placeholder-color: var(--primary-color);
216
-
217
- --ox-filters-input-border: 1px solid rgba(0, 0, 0, 0.2);
218
- --ox-filters-input-focus-border: 1px solid var(--primary-color);
219
- --ox-filters-input-font: normal 14px var(--theme-font);
220
- --ox-filters-input-color: var(--primary-text-color);
221
- --ox-filters-input-focus-color: var(--primary-color);
222
- --ox-filters-label-font: normal 14px var(--theme-font);
223
- --ox-filters-label-color: var(--primary-text-color);
224
-
225
- --ox-filters-form-gap: var(--input-gap-vertical, 8px) var(--input-gap-horizontal, 16px);
226
- --ox-filters-input-padding: 6px 2px;
227
- }
228
- </style>
229
-
230
- <style>
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);
238
-
239
- --md-icon-size: 24px;
240
- }
241
- #sorters md-icon,
242
- #modes md-icon {
243
- --md-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
- }
255
-
256
- #sorters > * {
257
- padding: var(--padding-narrow);
258
- vertical-align: middle;
259
- }
260
-
261
- #modes > * {
262
- padding: var(--padding-narrow);
263
- opacity: 0.5;
264
- color: var(--primary-text-color);
265
- cursor: pointer;
266
- }
267
-
268
- #modes > md-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
- }
275
-
276
- #modes > md-icon:hover {
277
- opacity: 1;
278
- color: var(--secondary-text-color);
279
- }
280
-
281
- #add {
282
- margin-left: auto;
283
- text-align: right;
284
- }
285
-
286
- #add button {
287
- display: flex;
288
- align-items: center;
289
- justify-content: center;
290
-
291
- background-color: var(--primary-color);
292
- border: 0;
293
- border-radius: 50%;
294
- padding: 5px;
295
- width: 32px;
296
- height: 32px;
297
- cursor: pointer;
298
- }
299
-
300
- #add button:hover {
301
- background-color: var(--focus-background-color);
302
- box-shadow: var(--box-shadow);
303
- }
304
-
305
- #add button md-icon {
306
- font-size: 1.5em;
307
- color: var(--theme-white-color);
308
- }
309
-
310
- #filters {
311
- display: flex;
312
- justify-content: center;
313
- align-items: center;
314
- }
315
-
316
- #filters * {
317
- margin-right: var(--margin-default);
318
- }
319
-
320
- @media only screen and (max-width: 460px) {
321
- #filters {
322
- flex-direction: column;
323
- }
324
-
325
- #modes {
326
- display: none;
327
- }
328
- }
213
+ ${CommonGristStyles.cssText}
214
+ ${CommonHeaderStyles.cssText}
329
215
  </style>
330
216
 
331
217
  <ox-grist