@operato/data-grist 2.0.0-alpha.146 → 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 +17 -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
@@ -0,0 +1,151 @@
1
+ .light {
2
+ --md-sys-color-primary: rgb(73 93 146);
3
+ --md-sys-color-surface-tint: rgb(73 93 146);
4
+ --md-sys-color-on-primary: rgb(255 255 255);
5
+ --md-sys-color-primary-container: #e4eaf9;
6
+ --md-sys-color-on-primary-container: rgb(0 24 72);
7
+ --md-sys-color-secondary: rgb(27 101 133);
8
+ --md-sys-color-on-secondary: rgb(255 255 255);
9
+ --md-sys-color-secondary-container: rgb(195 232 255);
10
+ --md-sys-color-on-secondary-container: rgb(0 30 44);
11
+ --md-sys-color-tertiary: rgb(37 106 75);
12
+ --md-sys-color-on-tertiary: rgb(255 255 255);
13
+ --md-sys-color-tertiary-container: rgb(171 242 201);
14
+ --md-sys-color-on-tertiary-container: rgb(0 33 19);
15
+ --md-sys-color-error: #fe594e;
16
+ --md-sys-color-on-error: rgb(255 255 255);
17
+ --md-sys-color-error-container: rgb(255 218 215);
18
+ --md-sys-color-on-error-container: #fe594e;
19
+ --md-sys-color-background: rgb(250 248 255);
20
+ --md-sys-color-on-background: rgb(26 27 33);
21
+ --md-sys-color-surface: rgb(250 248 255);
22
+ --md-sys-color-on-surface: rgb(26 27 33);
23
+ --md-sys-color-surface-variant: rgb(225 226 236);
24
+ --md-sys-color-on-surface-variant: rgb(69 70 79);
25
+ --md-sys-color-outline: rgba(0,0,0,.25);
26
+ --md-sys-color-outline-variant: rgb(197 198 208);
27
+ --md-sys-color-shadow: rgb(0 0 0);
28
+ --md-sys-color-scrim: rgb(0 0 0);
29
+ --md-sys-color-inverse-surface: rgb(47 48 54);
30
+ --md-sys-color-inverse-on-surface: rgb(241 240 247);
31
+ --md-sys-color-inverse-primary: #c9d4f4;
32
+ --md-sys-color-primary-fixed: rgb(218 226 255);
33
+ --md-sys-color-on-primary-fixed: rgb(0 24 72);
34
+ --md-sys-color-primary-fixed-dim: #c9d4f4;
35
+ --md-sys-color-on-primary-fixed-variant: rgb(49 69 120);
36
+ --md-sys-color-secondary-fixed: rgb(195 232 255);
37
+ --md-sys-color-on-secondary-fixed: rgb(0 30 44);
38
+ --md-sys-color-secondary-fixed-dim: rgb(143 207 243);
39
+ --md-sys-color-on-secondary-fixed-variant: rgb(0 76 104);
40
+ --md-sys-color-tertiary-fixed: #e5f6da;
41
+ --md-sys-color-on-tertiary-fixed: #005234;
42
+ --md-sys-color-tertiary-fixed-dim: #c8eabc;
43
+ --md-sys-color-on-tertiary-fixed-variant: #005234;
44
+ --md-sys-color-surface-dim: rgb(218 217 224);
45
+ --md-sys-color-surface-bright: rgb(250 248 255);
46
+ --md-sys-color-surface-container-lowest: rgb(255 255 255);
47
+ --md-sys-color-surface-container-low: rgb(244 243 250);
48
+ --md-sys-color-surface-container: rgb(238 237 244);
49
+ --md-sys-color-surface-container-high: rgb(232 231 239);
50
+ --md-sys-color-surface-container-highest: rgb(227 226 233);
51
+
52
+ /* primary palette */
53
+ --md-ref-palette-primary0:#000000;
54
+ --md-ref-palette-primary5:#000E32;
55
+ --md-ref-palette-primary10:#001848;
56
+ --md-ref-palette-primary15:#00215E;
57
+ --md-ref-palette-primary20:#002B74;
58
+ --md-ref-palette-primary25:#002B74;
59
+ --md-ref-palette-primary30:#0040A2;
60
+ --md-ref-palette-primary35:#002B74;
61
+ --md-ref-palette-primary40:#1957CA;
62
+ --md-ref-palette-primary50:#3E71E5;
63
+ --md-ref-palette-primary60:#5C8BFF;
64
+ --md-ref-palette-primary70:#89A9FF;
65
+ --md-ref-palette-primary80:#B2C5FF;
66
+ --md-ref-palette-primary90:#DAE2FF;
67
+ --md-ref-palette-primary95:#EEF0FF;
68
+ --md-ref-palette-primary98:#FAF8FF;
69
+ --md-ref-palette-primary99:#FEFBFF;
70
+ --md-ref-palette-primary100:#FFFFFF;
71
+
72
+ /* secondary palette */
73
+ --md-ref-palette-secondary0:#000000;
74
+ --md-ref-palette-secondary5:#00131D;
75
+ --md-ref-palette-secondary10:#001E2C;
76
+ --md-ref-palette-secondary15:#00293A;
77
+ --md-ref-palette-secondary20:#003549;
78
+ --md-ref-palette-secondary25:#004058;
79
+ --md-ref-palette-secondary30:#004C68;
80
+ --md-ref-palette-secondary35:#005978;
81
+ --md-ref-palette-secondary40:#006689;
82
+ --md-ref-palette-secondary50:#0080AC;
83
+ --md-ref-palette-secondary60:#009BCF;
84
+ --md-ref-palette-secondary70:#00B8F4;
85
+ --md-ref-palette-secondary80:#79D1FF;
86
+ --md-ref-palette-secondary90:#C3E8FF;
87
+ --md-ref-palette-secondary95:#E3F3FF;
88
+ --md-ref-palette-secondary98:#F5FAFF;
89
+ --md-ref-palette-secondary99:#FBFCFF;
90
+ --md-ref-palette-secondary100:#FFFFFF;
91
+
92
+ /* tertiary palette */
93
+ --md-ref-palette-tertiary0:#000000;
94
+ --md-ref-palette-tertiary5:#00150A;
95
+ --md-ref-palette-tertiary10:#002113;
96
+ --md-ref-palette-tertiary15:#002C1B;
97
+ --md-ref-palette-tertiary20:#003823;
98
+ --md-ref-palette-tertiary25:#00452B;
99
+ --md-ref-palette-tertiary30:#005234;
100
+ --md-ref-palette-tertiary35:#005F3E;
101
+ --md-ref-palette-tertiary40:#006C47;
102
+ --md-ref-palette-tertiary50:#00885A;
103
+ --md-ref-palette-tertiary60:#31A372;
104
+ --md-ref-palette-tertiary70:#51BF8B;
105
+ --md-ref-palette-tertiary80:#6EDBA5;
106
+ --md-ref-palette-tertiary90:#A2F4C7;
107
+ --md-ref-palette-tertiary95:#BFFFD9;
108
+ --md-ref-palette-tertiary98:#E8FFEF;
109
+ --md-ref-palette-tertiary99:#F4FFF5;
110
+ --md-ref-palette-tertiary100:#FFFFFF;
111
+
112
+ /* error palette */
113
+ --md-ref-palette-error0:#000000;
114
+ --md-ref-palette-error5:#2d0102;
115
+ --md-ref-palette-error10:#410304;
116
+ --md-ref-palette-error15:#540507;
117
+ --md-ref-palette-error20:#68070a;
118
+ --md-ref-palette-error25:#7d0b0e;
119
+ --md-ref-palette-error30:#930f14;
120
+ --md-ref-palette-error35:#a91319;
121
+ --md-ref-palette-error40:#bc1620;
122
+ --md-ref-palette-error50:#e03236;
123
+ --md-ref-palette-error60:#ff5450;
124
+ --md-ref-palette-error70:#ff8982;
125
+ --md-ref-palette-error80:#ffb3ad;
126
+ --md-ref-palette-error90:#ffdad7;
127
+ --md-ref-palette-error95:#ffedeb;
128
+ --md-ref-palette-error98:#fff8f7;
129
+ --md-ref-palette-error99:#fffbff;
130
+ --md-ref-palette-error100:#FFFFFF;
131
+
132
+ /* neutral palette */
133
+ --md-ref-palette-neutral0:#000000;
134
+ --md-ref-palette-neutral5:#111111;
135
+ --md-ref-palette-neutral10:#1C1C1C;
136
+ --md-ref-palette-neutral15:#262626;
137
+ --md-ref-palette-neutral20:#313131;
138
+ --md-ref-palette-neutral25:#3C3C3C;
139
+ --md-ref-palette-neutral30:#474747;
140
+ --md-ref-palette-neutral35:#535353;
141
+ --md-ref-palette-neutral40:#5F5F5F;
142
+ --md-ref-palette-neutral50:#787878;
143
+ --md-ref-palette-neutral60:#929292;
144
+ --md-ref-palette-neutral70:#ACACAC;
145
+ --md-ref-palette-neutral80:#C8C8C8;
146
+ --md-ref-palette-neutral90:#E4E4E4;
147
+ --md-ref-palette-neutral95:#F0F0F0;
148
+ --md-ref-palette-neutral98:#F9F9F9;
149
+ --md-ref-palette-neutral99:#FEFEFE;
150
+ --md-ref-palette-neutral100:#FFFFFF;
151
+ }
@@ -0,0 +1,100 @@
1
+ @layer {
2
+ .md-typescale-display-small,
3
+ .md-typescale-display-small-prominent {
4
+ font: var(--md-sys-typescale-display-small-weight, var(--md-ref-typeface-weight-regular, 400))
5
+ var(--md-sys-typescale-display-small-size, 2.25rem) / var(--md-sys-typescale-display-small-line-height, 2.75rem)
6
+ var(--md-sys-typescale-display-small-font, var(--md-ref-typeface-brand, 'Noto'));
7
+ }
8
+ .md-typescale-display-medium,
9
+ .md-typescale-display-medium-prominent {
10
+ font: var(--md-sys-typescale-display-medium-weight, var(--md-ref-typeface-weight-regular, 400))
11
+ var(--md-sys-typescale-display-medium-size, 2.8125rem) /
12
+ var(--md-sys-typescale-display-medium-line-height, 3.25rem)
13
+ var(--md-sys-typescale-display-medium-font, var(--md-ref-typeface-brand, 'Noto'));
14
+ }
15
+ .md-typescale-display-large,
16
+ .md-typescale-display-large-prominent {
17
+ font: var(--md-sys-typescale-display-large-weight, var(--md-ref-typeface-weight-regular, 400))
18
+ var(--md-sys-typescale-display-large-size, 3.5625rem) / var(--md-sys-typescale-display-large-line-height, 4rem)
19
+ var(--md-sys-typescale-display-large-font, var(--md-ref-typeface-brand, 'Noto'));
20
+ }
21
+ .md-typescale-headline-small,
22
+ .md-typescale-headline-small-prominent {
23
+ font: var(--md-sys-typescale-headline-small-weight, var(--md-ref-typeface-weight-regular, 400))
24
+ var(--md-sys-typescale-headline-small-size, 1.5rem) / var(--md-sys-typescale-headline-small-line-height, 2rem)
25
+ var(--md-sys-typescale-headline-small-font, var(--md-ref-typeface-brand, 'Noto'));
26
+ }
27
+ .md-typescale-headline-medium,
28
+ .md-typescale-headline-medium-prominent {
29
+ font: var(--md-sys-typescale-headline-medium-weight, var(--md-ref-typeface-weight-regular, 400))
30
+ var(--md-sys-typescale-headline-medium-size, 1.75rem) /
31
+ var(--md-sys-typescale-headline-medium-line-height, 2.25rem)
32
+ var(--md-sys-typescale-headline-medium-font, var(--md-ref-typeface-brand, 'Noto'));
33
+ }
34
+ .md-typescale-headline-large,
35
+ .md-typescale-headline-large-prominent {
36
+ font: var(--md-sys-typescale-headline-large-weight, var(--md-ref-typeface-weight-regular, 400))
37
+ var(--md-sys-typescale-headline-large-size, 2rem) / var(--md-sys-typescale-headline-large-line-height, 2.5rem)
38
+ var(--md-sys-typescale-headline-large-font, var(--md-ref-typeface-brand, 'Noto'));
39
+ }
40
+ .md-typescale-title-small,
41
+ .md-typescale-title-small-prominent {
42
+ font: var(--md-sys-typescale-title-small-weight, var(--md-ref-typeface-weight-medium, 500))
43
+ var(--md-sys-typescale-title-small-size, 0.875rem) / var(--md-sys-typescale-title-small-line-height, 1.25rem)
44
+ var(--md-sys-typescale-title-small-font, var(--md-ref-typeface-plain, 'Noto'));
45
+ }
46
+ .md-typescale-title-medium,
47
+ .md-typescale-title-medium-prominent {
48
+ font: var(--md-sys-typescale-title-medium-weight, var(--md-ref-typeface-weight-medium, 500))
49
+ var(--md-sys-typescale-title-medium-size, 1rem) / var(--md-sys-typescale-title-medium-line-height, 1.5rem)
50
+ var(--md-sys-typescale-title-medium-font, var(--md-ref-typeface-plain, 'Noto'));
51
+ }
52
+ .md-typescale-title-large,
53
+ .md-typescale-title-large-prominent {
54
+ font: var(--md-sys-typescale-title-large-weight, var(--md-ref-typeface-weight-regular, 400))
55
+ var(--md-sys-typescale-title-large-size, 1.375rem) / var(--md-sys-typescale-title-large-line-height, 1.75rem)
56
+ var(--md-sys-typescale-title-large-font, var(--md-ref-typeface-brand, 'Noto'));
57
+ }
58
+ .md-typescale-body-small,
59
+ .md-typescale-body-small-prominent {
60
+ font: var(--md-sys-typescale-body-small-weight, var(--md-ref-typeface-weight-regular, 400))
61
+ var(--md-sys-typescale-body-small-size, 0.75rem) / var(--md-sys-typescale-body-small-line-height, 1rem)
62
+ var(--md-sys-typescale-body-small-font, var(--md-ref-typeface-plain, 'Noto'));
63
+ }
64
+ .md-typescale-body-medium,
65
+ .md-typescale-body-medium-prominent {
66
+ font: var(--md-sys-typescale-body-medium-weight, var(--md-ref-typeface-weight-regular, 400))
67
+ var(--md-sys-typescale-body-medium-size, 0.875rem) / var(--md-sys-typescale-body-medium-line-height, 1.25rem)
68
+ var(--md-sys-typescale-body-medium-font, var(--md-ref-typeface-plain, 'Noto'));
69
+ }
70
+ .md-typescale-body-large,
71
+ .md-typescale-body-large-prominent {
72
+ font: var(--md-sys-typescale-body-large-weight, var(--md-ref-typeface-weight-regular, 400))
73
+ var(--md-sys-typescale-body-large-size, 1rem) / var(--md-sys-typescale-body-large-line-height, 1.5rem)
74
+ var(--md-sys-typescale-body-large-font, var(--md-ref-typeface-plain, 'Noto'));
75
+ }
76
+ .md-typescale-label-small,
77
+ .md-typescale-label-small-prominent {
78
+ font: var(--md-sys-typescale-label-small-weight, var(--md-ref-typeface-weight-medium, 500))
79
+ var(--md-sys-typescale-label-small-size, 0.6875rem) / var(--md-sys-typescale-label-small-line-height, 1rem)
80
+ var(--md-sys-typescale-label-small-font, var(--md-ref-typeface-plain, 'Noto'));
81
+ }
82
+ .md-typescale-label-medium,
83
+ .md-typescale-label-medium-prominent {
84
+ font: var(--md-sys-typescale-label-medium-weight, var(--md-ref-typeface-weight-medium, 500))
85
+ var(--md-sys-typescale-label-medium-size, 0.75rem) / var(--md-sys-typescale-label-medium-line-height, 1rem)
86
+ var(--md-sys-typescale-label-medium-font, var(--md-ref-typeface-plain, 'Noto'));
87
+ }
88
+ .md-typescale-label-medium-prominent {
89
+ font-weight: var(--md-sys-typescale-label-medium-weight-prominent, var(--md-ref-typeface-weight-bold, 700));
90
+ }
91
+ .md-typescale-label-large,
92
+ .md-typescale-label-large-prominent {
93
+ font: var(--md-sys-typescale-label-large-weight, var(--md-ref-typeface-weight-medium, 500))
94
+ var(--md-sys-typescale-label-large-size, 0.875rem) / var(--md-sys-typescale-label-large-line-height, 1.25rem)
95
+ var(--md-sys-typescale-label-large-font, var(--md-ref-typeface-plain, 'Noto'));
96
+ }
97
+ .md-typescale-label-large-prominent {
98
+ font-weight: var(--md-sys-typescale-label-large-weight-prominent, var(--md-ref-typeface-weight-bold, 700));
99
+ }
100
+ } /*# sourceMappingURL=md-typescale-styles.css.map */
@@ -0,0 +1,43 @@
1
+ :root {
2
+ --spacing-none: 0px;
3
+ --spacing-tiny: 2px;
4
+ --spacing-small: 4px;
5
+ --spacing-medium: 8px;
6
+ --spacing-large: 12px;
7
+ --spacing-huge: 24px;
8
+
9
+ --icon-size-tiny: 14px;
10
+ --icon-size-small: 18px;
11
+ --icon-size-medium: 24px;
12
+ --icon-size-large: 32px;
13
+ --icon-size-huge: 48px;
14
+
15
+ /* form element height */
16
+ --form-element-height-tiny:18px;
17
+ --form-element-height-small:24px;
18
+ --form-element-height-medium:30px;
19
+ --form-element-height-large:40px;
20
+ --form-element-height-huge:55px;
21
+
22
+ /* shape corner */
23
+ --md-sys-shape-corner-none:0px;
24
+ --md-sys-shape-corner-small:5px;
25
+ --md-sys-shape-corner-medium:10px;
26
+ --md-sys-shape-corner-large:30px;
27
+ --md-sys-shape-corner-full:999px;
28
+
29
+ /* typescale corner */
30
+ --md-sys-typescale-label-tiny-size:11px;
31
+ --md-sys-typescale-label-small-size:13px;
32
+ --md-sys-typescale-label-medium-size:14px;
33
+ --md-sys-typescale-label-large-size:18px;
34
+ --md-sys-typescale-label-huge-size:24px;
35
+
36
+ --md-sys-typescale-label-medium-line-height:1;
37
+
38
+ --md-sys-typescale-label-tiny-weight:200;
39
+ --md-sys-typescale-label-small-weight:300;
40
+ --md-sys-typescale-label-medium-weight:500;
41
+ --md-sys-typescale-label-large-weight:700;
42
+ --md-sys-typescale-label-full-weight:900;
43
+ }
@@ -0,0 +1,6 @@
1
+ :root {
2
+ --status-danger-color: var(--md-sys-color-error, rgb(186 26 26));
3
+ --status-warning-color: #ee8d03;
4
+ --status-info-color: #398ace;
5
+ --status-success-color: #35a24a;
6
+ }
@@ -1,40 +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/record-creator.js';
5
- import '@operato/popup/ox-popup-list.js';
6
- import '@material/web/icon/icon.js';
7
- import { TemplateResult } from 'lit';
8
- declare const _default: {
9
- title: string;
10
- component: string;
11
- argTypes: {
12
- config: {
13
- control: string;
14
- };
15
- mode: {
16
- control: string;
17
- options: string[];
18
- };
19
- urlParamsSensitive: {
20
- control: string;
21
- };
22
- withoutSearch: {
23
- control: string;
24
- };
25
- };
26
- };
27
- export default _default;
28
- interface Story<T> {
29
- (args: T): TemplateResult;
30
- args?: Partial<T>;
31
- argTypes?: Record<string, unknown>;
32
- }
33
- interface ArgTypes {
34
- config: object;
35
- mode: string;
36
- urlParamsSensitive: boolean;
37
- withoutSearch: boolean;
38
- fetchHandler: object;
39
- }
40
- export declare const Regular: Story<ArgTypes>;
@@ -1,232 +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/record-creator.js';
5
- import '@operato/popup/ox-popup-list.js';
6
- import '@material/web/icon/icon.js';
7
- import { html } from 'lit';
8
- import { CommonHeaderStyles, CommonGristStyles } from '@operato/styles';
9
- const fetchHandler = async ({ page, limit }) => {
10
- var total = 25;
11
- var start = (page - 1) * limit;
12
- await new Promise(resolve => setTimeout(resolve, 500));
13
- return {
14
- total,
15
- records: Array(limit * page > total ? total % limit : limit)
16
- .fill('')
17
- .map((item, idx) => {
18
- return {
19
- id: String(idx),
20
- name: idx % 2 ? `shnam-${start + idx + 1}` : `heartyoh-${start + idx + 1}`,
21
- description: idx % 2 ? `hatiolabmanager${start + idx + 1}1234567890` : `hatiosea manager-${start + idx + 1}`,
22
- accval: Math.random(),
23
- accval2: Math.round(Math.random() * 15),
24
- createdAt: Date.now(),
25
- updatedAt: Date.now()
26
- };
27
- })
28
- };
29
- };
30
- const config = {
31
- columns: [
32
- {
33
- type: 'gutter',
34
- gutterName: 'dirty'
35
- },
36
- {
37
- type: 'gutter',
38
- gutterName: 'sequence'
39
- },
40
- {
41
- type: 'gutter',
42
- gutterName: 'row-selector',
43
- multiple: true
44
- },
45
- {
46
- type: 'gutter',
47
- gutterName: 'button',
48
- icon: 'add',
49
- title: 'add',
50
- handlers: {
51
- click: 'record-copy'
52
- }
53
- },
54
- {
55
- type: 'string',
56
- name: 'id',
57
- hidden: true
58
- },
59
- {
60
- type: 'string',
61
- name: 'name',
62
- label: true,
63
- header: 'name',
64
- record: {
65
- editable: true
66
- },
67
- filter: 'search',
68
- sortable: true,
69
- width: 120,
70
- fixed: true
71
- },
72
- {
73
- type: 'string',
74
- name: 'description',
75
- header: {
76
- renderer: () => 'description',
77
- style: 'text-transform: none;'
78
- },
79
- filter: 'search',
80
- record: {
81
- editable: true,
82
- align: 'left'
83
- },
84
- width: 200
85
- },
86
- {
87
- type: 'number',
88
- name: 'accval',
89
- label: true,
90
- header: 'accval',
91
- record: {
92
- editable: true,
93
- align: 'right',
94
- defaultValue: 100,
95
- format: '+$#,##0.00'
96
- },
97
- accumulator: 'avg',
98
- // accumulator: {
99
- // type: 'avg',
100
- // tag: true
101
- // },
102
- sortable: true,
103
- width: 130
104
- },
105
- {
106
- type: 'number',
107
- name: 'accval2',
108
- label: true,
109
- header: 'accval2',
110
- record: {
111
- editable: true,
112
- align: 'right',
113
- renderer: (value, column, record) => {
114
- return value && Intl.NumberFormat('en-US').format(value);
115
- }
116
- },
117
- accumulator: {
118
- type: 'sum',
119
- tag: true
120
- },
121
- sortable: true,
122
- width: 130
123
- },
124
- {
125
- type: 'datetime',
126
- name: 'updatedAt',
127
- header: 'updated at',
128
- record: {
129
- editable: true,
130
- defaultValue: {
131
- name: 'now'
132
- }
133
- },
134
- filter: 'between',
135
- sortable: true,
136
- width: 180
137
- },
138
- {
139
- type: 'datetime',
140
- name: 'createdAt',
141
- header: 'created at',
142
- record: {
143
- editable: false
144
- },
145
- sortable: true,
146
- width: 180
147
- }
148
- ],
149
- rows: {
150
- selectable: {
151
- multiple: false
152
- },
153
- handlers: {
154
- focus: 'select-row'
155
- },
156
- accumulator: true
157
- },
158
- sorters: [
159
- {
160
- name: 'name',
161
- desc: true
162
- }
163
- ],
164
- pagination: {
165
- pages: [20, 30, 50, 100, 200]
166
- }
167
- };
168
- export default {
169
- title: 'accumulator format in ox-grist',
170
- component: 'ox-grist',
171
- argTypes: {
172
- config: { control: 'object' },
173
- mode: { control: 'select', options: ['GRID', 'LIST', 'CARD'] },
174
- urlParamsSensitive: { control: 'boolean' },
175
- withoutSearch: { control: 'boolean' }
176
- }
177
- };
178
- const Template = ({ config, mode = 'GRID', urlParamsSensitive = false, withoutSearch = false, fetchHandler }) => html ` <link
179
- href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL@20..48,100..700,0..1"
180
- rel="stylesheet"
181
- />
182
- <link
183
- href="https://fonts.googleapis.com/css2?family=Material+Symbols+Rounded:opsz,wght,FILL@20..48,100..700,0..1"
184
- rel="stylesheet"
185
- />
186
- <link
187
- href="https://fonts.googleapis.com/css2?family=Material+Symbols+Sharp:opsz,wght,FILL@20..48,100..700,0..1"
188
- rel="stylesheet"
189
- />
190
-
191
- <link href="/themes/app-theme.css" rel="stylesheet" />
192
- <link href="/themes/oops-theme.css" rel="stylesheet" />
193
- <link href="/themes/grist-theme.css" rel="stylesheet" />
194
-
195
- <style>
196
- ${CommonGristStyles.cssText}
197
- ${CommonHeaderStyles.cssText}
198
- </style>
199
-
200
- <style>
201
- ox-grist {
202
- height: 600px;
203
- }
204
-
205
- ox-filters-form {
206
- flex: 1;
207
- }
208
- </style>
209
-
210
- <ox-grist
211
- mode="GRID"
212
- .config=${config}
213
- .fetchHandler=${fetchHandler}
214
- ?url-params-sensitive=${urlParamsSensitive}
215
- @filters-change=${(e) => console.log('filters', e.target.filters)}
216
- >
217
- <div slot="headroom" class="header">
218
- <div class="filters">
219
- <ox-filters-form ?without-search=${withoutSearch} autofocus></ox-filters-form>
220
- <ox-record-creator id="add" light-popup>
221
- <button><md-icon>add</md-icon></button>
222
- </ox-record-creator>
223
- </div>
224
- </div>
225
- </ox-grist>`;
226
- export const Regular = Template.bind({});
227
- Regular.args = {
228
- config,
229
- fetchHandler,
230
- mode: 'GRID'
231
- };
232
- //# sourceMappingURL=accumulator-format.stories%20copy.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"accumulator-format.stories copy.js","sourceRoot":"","sources":["../../stories/accumulator-format.stories copy.ts"],"names":[],"mappings":"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","sourcesContent":["import '../src/index.js'\nimport '../src/filters/filters-form.js'\nimport '../src/sorters/sorters-control.js'\nimport '../src/record-view/record-creator.js'\nimport '@operato/popup/ox-popup-list.js'\nimport '@material/web/icon/icon.js'\n\nimport { html, TemplateResult } from 'lit'\n\nimport {\n ColumnConfig,\n FetchHandler,\n GristClassifier,\n GristEventHandlerSet,\n GristRecord,\n ValidationCallback\n} from '../src/types.js'\n\nimport { CommonHeaderStyles, CommonGristStyles } from '@operato/styles'\n\nconst fetchHandler: FetchHandler = async ({ page, limit }) => {\n var total = 25\n var start = (page! - 1) * limit!\n\n await new Promise(resolve => setTimeout(resolve, 500))\n\n return {\n total,\n records: Array(limit! * page! > total ? total % limit! : limit)\n .fill('')\n .map((item, idx) => {\n return {\n id: String(idx),\n name: idx % 2 ? `shnam-${start + idx + 1}` : `heartyoh-${start + idx + 1}`,\n description: idx % 2 ? `hatiolabmanager${start + idx + 1}1234567890` : `hatiosea manager-${start + idx + 1}`,\n accval: Math.random(),\n accval2: Math.round(Math.random() * 15),\n createdAt: Date.now(),\n updatedAt: Date.now()\n }\n })\n }\n}\n\nconst config = {\n columns: [\n {\n type: 'gutter',\n gutterName: 'dirty'\n },\n {\n type: 'gutter',\n gutterName: 'sequence'\n },\n {\n type: 'gutter',\n gutterName: 'row-selector',\n multiple: true\n },\n {\n type: 'gutter',\n gutterName: 'button',\n icon: 'add',\n title: 'add',\n handlers: {\n click: 'record-copy'\n }\n },\n {\n type: 'string',\n name: 'id',\n hidden: true\n },\n {\n type: 'string',\n name: 'name',\n label: true,\n header: 'name',\n record: {\n editable: true\n },\n filter: 'search',\n sortable: true,\n width: 120,\n fixed: true\n },\n {\n type: 'string',\n name: 'description',\n header: {\n renderer: () => 'description',\n style: 'text-transform: none;'\n },\n filter: 'search',\n record: {\n editable: true,\n align: 'left'\n },\n width: 200\n },\n {\n type: 'number',\n name: 'accval',\n label: true,\n header: 'accval',\n record: {\n editable: true,\n align: 'right',\n defaultValue: 100,\n format: '+$#,##0.00'\n },\n accumulator: 'avg',\n // accumulator: {\n // type: 'avg',\n // tag: true\n // },\n sortable: true,\n width: 130\n },\n {\n type: 'number',\n name: 'accval2',\n label: true,\n header: 'accval2',\n record: {\n editable: true,\n align: 'right',\n renderer: (value: any, column: any, record: any) => {\n return value && Intl.NumberFormat('en-US').format(value)\n }\n },\n accumulator: {\n type: 'sum',\n tag: true\n },\n sortable: true,\n width: 130\n },\n {\n type: 'datetime',\n name: 'updatedAt',\n header: 'updated at',\n record: {\n editable: true,\n defaultValue: {\n name: 'now'\n }\n },\n filter: 'between',\n sortable: true,\n width: 180\n },\n {\n type: 'datetime',\n name: 'createdAt',\n header: 'created at',\n record: {\n editable: false\n },\n sortable: true,\n width: 180\n }\n ],\n rows: {\n selectable: {\n multiple: false\n },\n handlers: {\n focus: 'select-row'\n },\n accumulator: true\n },\n sorters: [\n {\n name: 'name',\n desc: true\n }\n ],\n pagination: {\n pages: [20, 30, 50, 100, 200]\n }\n}\n\nexport default {\n title: 'accumulator format in ox-grist',\n component: 'ox-grist',\n argTypes: {\n config: { control: 'object' },\n mode: { control: 'select', options: ['GRID', 'LIST', 'CARD'] },\n urlParamsSensitive: { control: 'boolean' },\n withoutSearch: { control: 'boolean' }\n }\n}\n\ninterface Story<T> {\n (args: T): TemplateResult\n args?: Partial<T>\n argTypes?: Record<string, unknown>\n}\n\ninterface ArgTypes {\n config: object\n mode: string\n urlParamsSensitive: boolean\n withoutSearch: boolean\n fetchHandler: object\n}\n\nconst Template: Story<ArgTypes> = ({\n config,\n mode = 'GRID',\n urlParamsSensitive = false,\n withoutSearch = false,\n fetchHandler\n}: ArgTypes) =>\n html` <link\n href=\"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL@20..48,100..700,0..1\"\n rel=\"stylesheet\"\n />\n <link\n href=\"https://fonts.googleapis.com/css2?family=Material+Symbols+Rounded:opsz,wght,FILL@20..48,100..700,0..1\"\n rel=\"stylesheet\"\n />\n <link\n href=\"https://fonts.googleapis.com/css2?family=Material+Symbols+Sharp:opsz,wght,FILL@20..48,100..700,0..1\"\n rel=\"stylesheet\"\n />\n\n <link href=\"/themes/app-theme.css\" rel=\"stylesheet\" />\n <link href=\"/themes/oops-theme.css\" rel=\"stylesheet\" />\n <link href=\"/themes/grist-theme.css\" rel=\"stylesheet\" />\n\n <style>\n ${CommonGristStyles.cssText}\n ${CommonHeaderStyles.cssText}\n </style>\n\n <style>\n ox-grist {\n height: 600px;\n }\n\n ox-filters-form {\n flex: 1;\n }\n </style>\n\n <ox-grist\n mode=\"GRID\"\n .config=${config}\n .fetchHandler=${fetchHandler}\n ?url-params-sensitive=${urlParamsSensitive}\n @filters-change=${(e: Event) => console.log('filters', (e.target as any).filters)}\n >\n <div slot=\"headroom\" class=\"header\">\n <div class=\"filters\">\n <ox-filters-form ?without-search=${withoutSearch} autofocus></ox-filters-form>\n <ox-record-creator id=\"add\" light-popup>\n <button><md-icon>add</md-icon></button>\n </ox-record-creator>\n </div>\n </div>\n </ox-grist>`\n\nexport const Regular = Template.bind({})\nRegular.args = {\n config,\n fetchHandler,\n mode: 'GRID'\n}\n"]}