@operato/data-grist 2.0.0-alpha.108 → 2.0.0-alpha.110

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.
@@ -1,41 +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
- theme: {
23
- control: string;
24
- options: string[];
25
- };
26
- };
27
- };
28
- export default _default;
29
- interface Story<T> {
30
- (args: T): TemplateResult;
31
- args?: Partial<T>;
32
- argTypes?: Record<string, unknown>;
33
- }
34
- interface ArgTypes {
35
- config: object;
36
- mode: string;
37
- urlParamsSensitive: boolean;
38
- fetchHandler: object;
39
- theme: 'light' | 'dark';
40
- }
41
- export declare const Regular: Story<ArgTypes>;
@@ -1,243 +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 { styles as MDTypeScaleStyles } from '@material/web/typography/md-typescale-styles';
9
- import { CommonHeaderStyles, CommonGristStyles } from '@operato/styles';
10
- const fetchHandler = async ({ page, limit }) => {
11
- var total = 25;
12
- var start = (page - 1) * limit;
13
- await new Promise(resolve => setTimeout(resolve, 500));
14
- return {
15
- total,
16
- records: Array(limit * page > total ? total % limit : limit)
17
- .fill('')
18
- .map((item, idx) => {
19
- return {
20
- id: String(idx),
21
- name: idx % 2 ? `shnam-${start + idx + 1}` : `heartyoh-${start + idx + 1}`,
22
- description: idx % 2 ? `hatiolabmanager${start + idx + 1}1234567890` : `hatiosea manager-${start + idx + 1}`,
23
- accval: Math.random(),
24
- accval2: Math.round(Math.random() * 15),
25
- createdAt: Date.now(),
26
- updatedAt: Date.now()
27
- };
28
- })
29
- };
30
- };
31
- const config = {
32
- columns: [
33
- {
34
- type: 'gutter',
35
- gutterName: 'dirty'
36
- },
37
- {
38
- type: 'gutter',
39
- gutterName: 'sequence'
40
- },
41
- {
42
- type: 'gutter',
43
- gutterName: 'row-selector',
44
- multiple: true
45
- },
46
- {
47
- type: 'gutter',
48
- gutterName: 'button',
49
- icon: 'add',
50
- title: 'add',
51
- handlers: {
52
- click: 'record-copy'
53
- }
54
- },
55
- {
56
- type: 'string',
57
- name: 'id',
58
- hidden: true
59
- },
60
- {
61
- type: 'string',
62
- name: 'name',
63
- label: true,
64
- header: 'name',
65
- record: {
66
- editable: true
67
- },
68
- filter: 'search',
69
- sortable: true,
70
- width: 120,
71
- fixed: true
72
- },
73
- {
74
- type: 'string',
75
- name: 'description',
76
- header: {
77
- renderer: () => 'description',
78
- style: 'text-transform: none;'
79
- },
80
- filter: 'search',
81
- record: {
82
- editable: true,
83
- align: 'left'
84
- },
85
- width: 200
86
- },
87
- {
88
- type: 'number',
89
- name: 'accval',
90
- label: true,
91
- header: 'accval',
92
- record: {
93
- editable: true,
94
- align: 'right',
95
- defaultValue: 100
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 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
- theme: { control: 'select', options: ['light', 'dark'] }
176
- }
177
- };
178
- const Template = ({ config, mode = 'GRID', urlParamsSensitive = false, fetchHandler, theme = 'light' }) => html ` <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@400;500;700&display=swap" rel="stylesheet" />
179
-
180
- <link href="/themes/light.css" rel="stylesheet" />
181
- <link href="/themes/dark.css" rel="stylesheet" />
182
- <link href="/themes/spacing.css" rel="stylesheet" />
183
- <link href="/themes/grist-theme.css" rel="stylesheet" />
184
-
185
- <link
186
- href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL@20..48,100..700,0..1"
187
- rel="stylesheet"
188
- />
189
- <link
190
- href="https://fonts.googleapis.com/css2?family=Material+Symbols+Rounded:opsz,wght,FILL@20..48,100..700,0..1"
191
- rel="stylesheet"
192
- />
193
- <link
194
- href="https://fonts.googleapis.com/css2?family=Material+Symbols+Sharp:opsz,wght,FILL@20..48,100..700,0..1"
195
- rel="stylesheet"
196
- />
197
-
198
- <style>
199
- ${MDTypeScaleStyles.cssText}
200
- </style>
201
-
202
- <style>
203
- ${CommonGristStyles.cssText}
204
- ${CommonHeaderStyles.cssText}
205
- </style>
206
-
207
- <script>
208
- document.body.classList.add('${theme}')
209
- </script>
210
-
211
- <style>
212
- ox-grist {
213
- height: 600px;
214
- }
215
-
216
- ox-filters-form {
217
- flex: 1;
218
- }
219
- </style>
220
-
221
- <ox-grist
222
- mode="GRID"
223
- .config=${config}
224
- .fetchHandler=${fetchHandler}
225
- ?url-params-sensitive=${urlParamsSensitive}
226
- @filters-change=${(e) => console.log('filters', e.target.filters)}
227
- >
228
- <div slot="headroom" class="header">
229
- <div class="filters">
230
- <ox-filters-form autofocus></ox-filters-form>
231
- <ox-record-creator id="add" light-popup>
232
- <button><md-icon>add</md-icon></button>
233
- </ox-record-creator>
234
- </div>
235
- </div>
236
- </ox-grist>`;
237
- export const Regular = Template.bind({});
238
- Regular.args = {
239
- config,
240
- fetchHandler,
241
- mode: 'GRID'
242
- };
243
- //# sourceMappingURL=accumulator.stories.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"accumulator.stories.js","sourceRoot":"","sources":["../../stories/accumulator.stories.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'\nimport { styles as MDTypeScaleStyles } from '@material/web/typography/md-typescale-styles'\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 },\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 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 theme: { control: 'select', options: ['light', 'dark'] }\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 fetchHandler: object\n theme: 'light' | 'dark'\n}\n\nconst Template: Story<ArgTypes> = ({\n config,\n mode = 'GRID',\n urlParamsSensitive = false,\n fetchHandler,\n theme = 'light'\n}: ArgTypes) =>\n html` <link href=\"https://fonts.googleapis.com/css2?family=Roboto:wght@400;500;700&display=swap\" rel=\"stylesheet\" />\n\n <link href=\"/themes/light.css\" rel=\"stylesheet\" />\n <link href=\"/themes/dark.css\" rel=\"stylesheet\" />\n <link href=\"/themes/spacing.css\" rel=\"stylesheet\" />\n <link href=\"/themes/grist-theme.css\" rel=\"stylesheet\" />\n\n <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 <style>\n ${MDTypeScaleStyles.cssText}\n </style>\n\n <style>\n ${CommonGristStyles.cssText}\n ${CommonHeaderStyles.cssText}\n </style>\n\n <script>\n document.body.classList.add('${theme}')\n </script>\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 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"]}