@operato/data-grist 9.0.0-beta.7 → 9.0.0-beta.85

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 (87) hide show
  1. package/CHANGELOG.md +285 -0
  2. package/README.md +337 -44
  3. package/dist/src/data-grid/data-grid-body.js +39 -27
  4. package/dist/src/data-grid/data-grid-body.js.map +1 -1
  5. package/dist/src/data-grid/data-grid-header.js +9 -0
  6. package/dist/src/data-grid/data-grid-header.js.map +1 -1
  7. package/dist/src/data-grist.d.ts +13 -1
  8. package/dist/src/data-grist.js +42 -0
  9. package/dist/src/data-grist.js.map +1 -1
  10. package/dist/src/data-report.js +4 -4
  11. package/dist/src/data-report.js.map +1 -1
  12. package/dist/src/editors/ox-grist-editor-json5.d.ts +8 -0
  13. package/dist/src/editors/ox-grist-editor-json5.js +66 -0
  14. package/dist/src/editors/ox-grist-editor-json5.js.map +1 -0
  15. package/dist/src/editors/ox-popup-code-input.d.ts +14 -0
  16. package/dist/src/editors/ox-popup-code-input.js +78 -0
  17. package/dist/src/editors/ox-popup-code-input.js.map +1 -0
  18. package/dist/src/editors/registry.js +3 -1
  19. package/dist/src/editors/registry.js.map +1 -1
  20. package/dist/src/filters/filter-select.js +2 -1
  21. package/dist/src/filters/filter-select.js.map +1 -1
  22. package/dist/src/formatters/registry.d.ts +1 -1
  23. package/dist/src/gutters/registry.d.ts +1 -1
  24. package/dist/src/handlers/registry.d.ts +1 -1
  25. package/dist/tsconfig.tsbuildinfo +1 -1
  26. package/package.json +18 -14
  27. package/dist/index.d.ts +0 -1
  28. package/dist/index.js +0 -2
  29. package/dist/index.js.map +0 -1
  30. package/dist/stories/accumulator-format.stories.d.ts +0 -41
  31. package/dist/stories/accumulator-format.stories.js +0 -237
  32. package/dist/stories/accumulator-format.stories.js.map +0 -1
  33. package/dist/stories/barcode-input-filter.stories.d.ts +0 -33
  34. package/dist/stories/barcode-input-filter.stories.js +0 -185
  35. package/dist/stories/barcode-input-filter.stories.js.map +0 -1
  36. package/dist/stories/bounded-select-filters.stories.d.ts +0 -25
  37. package/dist/stories/bounded-select-filters.stories.js +0 -283
  38. package/dist/stories/bounded-select-filters.stories.js.map +0 -1
  39. package/dist/stories/bounded-select-record.stories.d.ts +0 -25
  40. package/dist/stories/bounded-select-record.stories.js +0 -286
  41. package/dist/stories/bounded-select-record.stories.js.map +0 -1
  42. package/dist/stories/click-event-custom.stories.d.ts +0 -45
  43. package/dist/stories/click-event-custom.stories.js +0 -248
  44. package/dist/stories/click-event-custom.stories.js.map +0 -1
  45. package/dist/stories/click-event.stories.d.ts +0 -45
  46. package/dist/stories/click-event.stories.js +0 -243
  47. package/dist/stories/click-event.stories.js.map +0 -1
  48. package/dist/stories/creatable-only-column.stories.d.ts +0 -29
  49. package/dist/stories/creatable-only-column.stories.js +0 -232
  50. package/dist/stories/creatable-only-column.stories.js.map +0 -1
  51. package/dist/stories/default-filters.stories.d.ts +0 -26
  52. package/dist/stories/default-filters.stories.js +0 -219
  53. package/dist/stories/default-filters.stories.js.map +0 -1
  54. package/dist/stories/dynamic-editable.stories.d.ts +0 -25
  55. package/dist/stories/dynamic-editable.stories.js +0 -293
  56. package/dist/stories/dynamic-editable.stories.js.map +0 -1
  57. package/dist/stories/empty-sorters.stories.d.ts +0 -25
  58. package/dist/stories/empty-sorters.stories.js +0 -162
  59. package/dist/stories/empty-sorters.stories.js.map +0 -1
  60. package/dist/stories/explicit-fetch.stories.d.ts +0 -25
  61. package/dist/stories/explicit-fetch.stories.js +0 -166
  62. package/dist/stories/explicit-fetch.stories.js.map +0 -1
  63. package/dist/stories/fixed-column.stories.d.ts +0 -26
  64. package/dist/stories/fixed-column.stories.js +0 -383
  65. package/dist/stories/fixed-column.stories.js.map +0 -1
  66. package/dist/stories/grid-setting.stories.d.ts +0 -47
  67. package/dist/stories/grid-setting.stories.js +0 -453
  68. package/dist/stories/grid-setting.stories.js.map +0 -1
  69. package/dist/stories/grist-modes.stories.d.ts +0 -37
  70. package/dist/stories/grist-modes.stories.js +0 -416
  71. package/dist/stories/grist-modes.stories.js.map +0 -1
  72. package/dist/stories/group-header.stories.d.ts +0 -26
  73. package/dist/stories/group-header.stories.js +0 -410
  74. package/dist/stories/group-header.stories.js.map +0 -1
  75. package/dist/stories/record-view.stories.d.ts +0 -24
  76. package/dist/stories/record-view.stories.js +0 -125
  77. package/dist/stories/record-view.stories.js.map +0 -1
  78. package/dist/stories/textarea.stories.d.ts +0 -37
  79. package/dist/stories/textarea.stories.js +0 -229
  80. package/dist/stories/textarea.stories.js.map +0 -1
  81. package/dist/stories/tree-column-with-checkbox.stories.d.ts +0 -26
  82. package/dist/stories/tree-column-with-checkbox.stories.js +0 -267
  83. package/dist/stories/tree-column-with-checkbox.stories.js.map +0 -1
  84. package/dist/stories/tree-column.stories.d.ts +0 -26
  85. package/dist/stories/tree-column.stories.js +0 -266
  86. package/dist/stories/tree-column.stories.js.map +0 -1
  87. package/index.ts +0 -1
@@ -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 '@operato/popup/ox-popup-list.js';
5
- import '@material/web/icon/icon.js';
6
- import { html } from 'lit';
7
- import { styles as MDTypeScaleStyles } from '@material/web/typography/md-typescale-styles.js';
8
- import { CommonHeaderStyles, CommonGristStyles } from '@operato/styles';
9
- const fetchHandler = async ({ sorters = [], filters, page, limit }) => {
10
- var total = 5;
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
- number: idx,
23
- float: 1.3,
24
- date: '2023-09-20',
25
- updatedAt: Date.now()
26
- };
27
- })
28
- };
29
- };
30
- function buildConfig({ headerFilter }) {
31
- return {
32
- list: {
33
- fields: ['name', 'description'],
34
- details: ['updatedAt', 'createdAt']
35
- },
36
- columns: [
37
- {
38
- type: 'gutter',
39
- gutterName: 'sequence'
40
- },
41
- {
42
- type: 'string',
43
- name: 'id',
44
- hidden: 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: 'name',
58
- label: true,
59
- header: 'name',
60
- filter: 'search',
61
- record: {
62
- mandatory: true,
63
- editable: (value, column, record, rowIndex, field) => {
64
- return !record.id;
65
- }
66
- },
67
- sortable: true,
68
- width: 120
69
- },
70
- {
71
- type: 'string',
72
- name: 'description',
73
- header: 'description',
74
- filter: 'search',
75
- record: {
76
- align: 'left',
77
- editable: true
78
- },
79
- width: 200
80
- },
81
- {
82
- type: 'checkbox',
83
- name: 'chk',
84
- header: 'chk',
85
- record: {
86
- editable: true
87
- },
88
- width: 40
89
- },
90
- {
91
- type: 'number',
92
- name: 'number',
93
- header: 'number',
94
- record: {
95
- mandatory: true,
96
- editable: true
97
- },
98
- width: 80
99
- },
100
- {
101
- type: 'float',
102
- name: 'float',
103
- header: 'float',
104
- record: {
105
- editable: true
106
- },
107
- width: 80
108
- },
109
- {
110
- type: 'date',
111
- name: 'date',
112
- header: 'date',
113
- width: 120
114
- },
115
- {
116
- type: 'datetime',
117
- name: 'updatedAt',
118
- header: 'updated at',
119
- width: 180
120
- }
121
- ],
122
- rows: {
123
- selectable: {
124
- multiple: false
125
- },
126
- handlers: {
127
- click: 'select-row'
128
- },
129
- appendable: true
130
- },
131
- sorters: [
132
- {
133
- name: 'name',
134
- desc: true
135
- }
136
- ],
137
- filters: {
138
- header: headerFilter
139
- },
140
- pagination: {
141
- pages: [30, 50, 100, 200]
142
- }
143
- };
144
- }
145
- /* Make the 'name' column editable only at the time of creation. */
146
- export default {
147
- title: 'creatable only column for ox-grist',
148
- component: 'ox-grist',
149
- argTypes: {
150
- headerFilter: { control: 'boolean' },
151
- preventCloseOnBlur: { control: 'boolean' }
152
- }
153
- };
154
- const Template = ({ headerFilter, preventCloseOnBlur }) => html ` <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@400;500;700&display=swap" rel="stylesheet" />
155
-
156
- <link href="/themes/light.css" rel="stylesheet" />
157
- <link href="/themes/dark.css" rel="stylesheet" />
158
- <link href="/themes/spacing.css" rel="stylesheet" />
159
- <link href="/themes/grist-theme.css" rel="stylesheet" />
160
-
161
- <link
162
- href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL@20..48,100..700,0..1"
163
- rel="stylesheet"
164
- />
165
- <link
166
- href="https://fonts.googleapis.com/css2?family=Material+Symbols+Rounded:opsz,wght,FILL@20..48,100..700,0..1"
167
- rel="stylesheet"
168
- />
169
- <link
170
- href="https://fonts.googleapis.com/css2?family=Material+Symbols+Sharp:opsz,wght,FILL@20..48,100..700,0..1"
171
- rel="stylesheet"
172
- />
173
-
174
- <style>
175
- ${MDTypeScaleStyles.cssText}
176
- </style>
177
-
178
- <style>
179
- ${CommonGristStyles.cssText}
180
- ${CommonHeaderStyles.cssText}
181
- </style>
182
-
183
- <style>
184
- ox-grist {
185
- height: 600px;
186
- }
187
-
188
- ox-filters-form {
189
- flex: 1;
190
- }
191
- </style>
192
-
193
- <ox-grist
194
- .config=${buildConfig({ headerFilter })}
195
- mode="GRID"
196
- .fetchHandler=${fetchHandler}
197
- @filters-change=${(e) => console.log('filters', e.target.filters)}
198
- @field-change=${(e) => {
199
- const { name, number, chk } = e.detail.record;
200
- console.log(name, number, chk);
201
- }}
202
- >
203
- <div slot="headroom" class="header">
204
- <div class="filters">
205
- <ox-filters-form></ox-filters-form>
206
-
207
- <div id="sorters">
208
- Sort
209
- <md-icon
210
- @click=${(e) => {
211
- const target = e.currentTarget;
212
- target.closest('#sorters').querySelector('#sorter-control').open({
213
- right: 0,
214
- top: target.offsetTop + target.offsetHeight
215
- });
216
- }}
217
- >expand_more</md-icon
218
- >
219
- <ox-popup id="sorter-control">
220
- <ox-sorters-control> </ox-sorters-control>
221
- </ox-popup>
222
- </div>
223
-
224
- <ox-record-creator id="add" light-popup ?prevent-close-on-blur=${preventCloseOnBlur}>
225
- <button><md-icon>add</md-icon></button>
226
- </ox-record-creator>
227
- </div>
228
- </div>
229
- </ox-grist>`;
230
- export const Regular = Template.bind({});
231
- Regular.args = {};
232
- //# sourceMappingURL=creatable-only-column.stories.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"creatable-only-column.stories.js","sourceRoot":"","sources":["../../stories/creatable-only-column.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 '@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.js'\n\nimport { FetchHandler } from '../src/types.js'\nimport { CommonHeaderStyles, CommonGristStyles } from '@operato/styles'\n\nconst fetchHandler: FetchHandler = async ({ sorters = [], filters, page, limit }) => {\n var total = 5\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 number: idx,\n float: 1.3,\n date: '2023-09-20',\n updatedAt: Date.now()\n }\n })\n }\n}\n\nfunction buildConfig({ headerFilter }: { headerFilter: boolean }) {\n return {\n list: {\n fields: ['name', 'description'],\n details: ['updatedAt', 'createdAt']\n },\n columns: [\n {\n type: 'gutter',\n gutterName: 'sequence'\n },\n {\n type: 'string',\n name: 'id',\n hidden: 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: 'name',\n label: true,\n header: 'name',\n filter: 'search',\n record: {\n mandatory: true,\n editable: (value: any, column: any, record: any, rowIndex: any, field: any) => {\n return !record.id\n }\n },\n sortable: true,\n width: 120\n },\n {\n type: 'string',\n name: 'description',\n header: 'description',\n filter: 'search',\n record: {\n align: 'left',\n editable: true\n },\n width: 200\n },\n {\n type: 'checkbox',\n name: 'chk',\n header: 'chk',\n record: {\n editable: true\n },\n width: 40\n },\n {\n type: 'number',\n name: 'number',\n header: 'number',\n record: {\n mandatory: true,\n editable: true\n },\n width: 80\n },\n {\n type: 'float',\n name: 'float',\n header: 'float',\n record: {\n editable: true\n },\n width: 80\n },\n {\n type: 'date',\n name: 'date',\n header: 'date',\n width: 120\n },\n {\n type: 'datetime',\n name: 'updatedAt',\n header: 'updated at',\n width: 180\n }\n ],\n rows: {\n selectable: {\n multiple: false\n },\n handlers: {\n click: 'select-row'\n },\n appendable: true\n },\n sorters: [\n {\n name: 'name',\n desc: true\n }\n ],\n filters: {\n header: headerFilter\n },\n pagination: {\n pages: [30, 50, 100, 200]\n }\n }\n}\n\n/* Make the 'name' column editable only at the time of creation. */\nexport default {\n title: 'creatable only column for ox-grist',\n component: 'ox-grist',\n argTypes: {\n headerFilter: { control: 'boolean' },\n preventCloseOnBlur: { 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 headerFilter: boolean\n preventCloseOnBlur: boolean\n}\n\nconst Template: Story<ArgTypes> = ({ headerFilter, preventCloseOnBlur }: 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 <style>\n ox-grist {\n height: 600px;\n }\n\n ox-filters-form {\n flex: 1;\n }\n </style>\n\n <ox-grist\n .config=${buildConfig({ headerFilter })}\n mode=\"GRID\"\n .fetchHandler=${fetchHandler}\n @filters-change=${(e: Event) => console.log('filters', (e.target as any).filters)}\n @field-change=${(e: any) => {\n const { name, number, chk } = e.detail.record\n console.log(name, number, chk)\n }}\n >\n <div slot=\"headroom\" class=\"header\">\n <div class=\"filters\">\n <ox-filters-form></ox-filters-form>\n\n <div id=\"sorters\">\n Sort\n <md-icon\n @click=${(e: Event) => {\n const target = e.currentTarget as HTMLElement\n ;(target.closest('#sorters')!.querySelector('#sorter-control') as any).open({\n right: 0,\n top: target.offsetTop + target.offsetHeight\n })\n }}\n >expand_more</md-icon\n >\n <ox-popup id=\"sorter-control\">\n <ox-sorters-control> </ox-sorters-control>\n </ox-popup>\n </div>\n\n <ox-record-creator id=\"add\" light-popup ?prevent-close-on-blur=${preventCloseOnBlur}>\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"]}
@@ -1,26 +0,0 @@
1
- import '../src/index.js';
2
- import '../src/filters/filters-form.js';
3
- import '../src/sorters/sorters-control.js';
4
- import '@operato/popup/ox-popup-list.js';
5
- import '@material/web/icon/icon.js';
6
- import { TemplateResult } from 'lit';
7
- declare const _default: {
8
- title: string;
9
- component: string;
10
- argTypes: {
11
- headerFilter: {
12
- control: string;
13
- };
14
- };
15
- };
16
- export default _default;
17
- interface Story<T> {
18
- (args: T): TemplateResult;
19
- args?: Partial<T>;
20
- argTypes?: Record<string, unknown>;
21
- }
22
- interface ArgTypes {
23
- headerFilter: boolean;
24
- theme?: 'light' | 'dark';
25
- }
26
- export declare const Regular: Story<ArgTypes>;
@@ -1,219 +0,0 @@
1
- import '../src/index.js';
2
- import '../src/filters/filters-form.js';
3
- import '../src/sorters/sorters-control.js';
4
- import '@operato/popup/ox-popup-list.js';
5
- import '@material/web/icon/icon.js';
6
- import { html } from 'lit';
7
- import { styles as MDTypeScaleStyles } from '@material/web/typography/md-typescale-styles.js';
8
- import { CommonHeaderStyles, CommonGristStyles } from '@operato/styles';
9
- const fetchHandler = async ({ sorters = [], filters, page, limit }) => {
10
- var total = 120993;
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
- due: idx % 2 ? '2024-01-01' : '2024-02-01',
23
- createdAt: Date.now(),
24
- updatedAt: Date.now()
25
- };
26
- })
27
- };
28
- };
29
- function buildConfig({ headerFilter }) {
30
- return {
31
- list: {
32
- fields: ['name', 'description'],
33
- details: ['updatedAt', 'createdAt']
34
- },
35
- columns: [
36
- {
37
- type: 'gutter',
38
- gutterName: 'sequence'
39
- },
40
- {
41
- type: 'string',
42
- name: 'id',
43
- hidden: true
44
- },
45
- {
46
- type: 'string',
47
- name: 'name',
48
- label: true,
49
- header: 'name',
50
- filter: {
51
- operator: 'eq',
52
- value: 'shnam'
53
- },
54
- sortable: true,
55
- width: 120
56
- },
57
- {
58
- type: 'string',
59
- name: 'description',
60
- header: 'description',
61
- filter: {
62
- operator: 'like',
63
- value: 'hahaha'
64
- },
65
- record: {
66
- align: 'left'
67
- },
68
- width: 200
69
- },
70
- {
71
- type: 'date',
72
- name: 'due',
73
- header: 'due',
74
- filter: {
75
- operator: 'between',
76
- value: [
77
- {
78
- name: 'today',
79
- params: {
80
- relativeDays: -2,
81
- timeZone: 'Asia/Seoul',
82
- format: 'YYYY-MM-DD'
83
- }
84
- },
85
- {
86
- name: 'today',
87
- params: {
88
- relativeDays: 1,
89
- timeZone: 'Asia/Seoul',
90
- locale: 'en-CA' /* 'YYYY-MM-DD' format */,
91
- format: {
92
- year: 'numeric',
93
- month: '2-digit',
94
- day: '2-digit'
95
- }
96
- }
97
- }
98
- ]
99
- },
100
- record: {
101
- align: 'left'
102
- },
103
- width: 120
104
- },
105
- {
106
- type: 'datetime',
107
- name: 'updatedAt',
108
- header: 'updated at',
109
- filter: {
110
- operator: 'between',
111
- value: [
112
- { name: 'week', params: { relativeWeeks: -1 } },
113
- { name: 'today', params: { relativeDays: +1 } }
114
- ]
115
- },
116
- width: 180
117
- },
118
- {
119
- type: 'datetime',
120
- name: 'createdAt',
121
- header: 'created at',
122
- width: 180
123
- }
124
- ],
125
- rows: {},
126
- sorters: [
127
- {
128
- name: 'name',
129
- desc: true
130
- }
131
- ],
132
- filters: {
133
- header: headerFilter
134
- },
135
- pagination: {
136
- pages: [30, 50, 100, 200]
137
- }
138
- };
139
- }
140
- export default {
141
- title: 'default filters for ox-grist',
142
- component: 'ox-grist',
143
- argTypes: {
144
- headerFilter: { control: 'boolean' }
145
- }
146
- };
147
- const Template = ({ headerFilter }) => html ` <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@400;500;700&display=swap" rel="stylesheet" />
148
-
149
- <link href="/themes/light.css" rel="stylesheet" />
150
- <link href="/themes/dark.css" rel="stylesheet" />
151
- <link href="/themes/spacing.css" rel="stylesheet" />
152
- <link href="/themes/grist-theme.css" rel="stylesheet" />
153
-
154
- <link
155
- href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL@20..48,100..700,0..1"
156
- rel="stylesheet"
157
- />
158
- <link
159
- href="https://fonts.googleapis.com/css2?family=Material+Symbols+Rounded:opsz,wght,FILL@20..48,100..700,0..1"
160
- rel="stylesheet"
161
- />
162
- <link
163
- href="https://fonts.googleapis.com/css2?family=Material+Symbols+Sharp:opsz,wght,FILL@20..48,100..700,0..1"
164
- rel="stylesheet"
165
- />
166
-
167
- <style>
168
- ${MDTypeScaleStyles.cssText}
169
- </style>
170
-
171
- <style>
172
- ${CommonGristStyles.cssText}
173
- ${CommonHeaderStyles.cssText}
174
- </style>
175
-
176
- <style>
177
- ox-grist {
178
- height: 600px;
179
- }
180
-
181
- ox-filters-form {
182
- flex: 1;
183
- }
184
- </style>
185
-
186
- <ox-grist
187
- .config=${buildConfig({ headerFilter })}
188
- mode="GRID"
189
- .fetchHandler=${fetchHandler}
190
- @filters-change=${(e) => console.log('filters', e.target.filters)}
191
- >
192
- <div slot="headroom" class="header">
193
- <div class="filters">
194
- <ox-filters-form></ox-filters-form>
195
-
196
- <div id="sorters">
197
- Sort
198
- <md-icon
199
- @click=${(e) => {
200
- const target = e.currentTarget;
201
- target.closest('#sorters').querySelector('#sorter-control').open({
202
- right: 0,
203
- top: target.offsetTop + target.offsetHeight
204
- });
205
- }}
206
- >expand_more</md-icon
207
- >
208
- <ox-popup id="sorter-control">
209
- <ox-sorters-control> </ox-sorters-control>
210
- </ox-popup>
211
- </div>
212
- </div>
213
- </div>
214
- </ox-grist>`;
215
- export const Regular = Template.bind({});
216
- Regular.args = {
217
- headerFilter: true
218
- };
219
- //# sourceMappingURL=default-filters.stories.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"default-filters.stories.js","sourceRoot":"","sources":["../../stories/default-filters.stories.ts"],"names":[],"mappings":"AAAA,OAAO,iBAAiB,CAAA;AACxB,OAAO,gCAAgC,CAAA;AACvC,OAAO,mCAAmC,CAAA;AAC1C,OAAO,iCAAiC,CAAA;AACxC,OAAO,4BAA4B,CAAA;AAEnC,OAAO,EAAE,IAAI,EAAkB,MAAM,KAAK,CAAA;AAC1C,OAAO,EAAE,MAAM,IAAI,iBAAiB,EAAE,MAAM,iDAAiD,CAAA;AAI7F,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAEvE,MAAM,YAAY,GAAiB,KAAK,EAAE,EAAE,OAAO,GAAG,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;IAClF,IAAI,KAAK,GAAG,MAAM,CAAA;IAClB,IAAI,KAAK,GAAG,CAAC,IAAK,GAAG,CAAC,CAAC,GAAG,KAAM,CAAA;IAEhC,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAA;IAEtD,OAAO;QACL,KAAK;QACL,OAAO,EAAE,KAAK,CAAC,KAAM,GAAG,IAAK,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,KAAM,CAAC,CAAC,CAAC,KAAK,CAAC;aAC5D,IAAI,CAAC,EAAE,CAAC;aACR,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;YACjB,OAAO;gBACL,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC;gBACf,IAAI,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,GAAG,GAAG,GAAG,CAAC,EAAE;gBAC1E,WAAW,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,kBAAkB,KAAK,GAAG,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,oBAAoB,KAAK,GAAG,GAAG,GAAG,CAAC,EAAE;gBAC5G,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY;gBAC1C,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;gBACrB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;aACtB,CAAA;QACH,CAAC,CAAC;KACL,CAAA;AACH,CAAC,CAAA;AAED,SAAS,WAAW,CAAC,EAAE,YAAY,EAA6B;IAC9D,OAAO;QACL,IAAI,EAAE;YACJ,MAAM,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC;YAC/B,OAAO,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC;SACpC;QACD,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE,UAAU;aACvB;YACD;gBACE,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,IAAI;gBACV,MAAM,EAAE,IAAI;aACb;YACD;gBACE,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,MAAM;gBACZ,KAAK,EAAE,IAAI;gBACX,MAAM,EAAE,MAAM;gBACd,MAAM,EAAE;oBACN,QAAQ,EAAE,IAAI;oBACd,KAAK,EAAE,OAAO;iBACf;gBACD,QAAQ,EAAE,IAAI;gBACd,KAAK,EAAE,GAAG;aACX;YACD;gBACE,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,aAAa;gBACnB,MAAM,EAAE,aAAa;gBACrB,MAAM,EAAE;oBACN,QAAQ,EAAE,MAAM;oBAChB,KAAK,EAAE,QAAQ;iBAChB;gBACD,MAAM,EAAE;oBACN,KAAK,EAAE,MAAM;iBACd;gBACD,KAAK,EAAE,GAAG;aACX;YACD;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,KAAK;gBACX,MAAM,EAAE,KAAK;gBACb,MAAM,EAAE;oBACN,QAAQ,EAAE,SAAS;oBACnB,KAAK,EAAE;wBACL;4BACE,IAAI,EAAE,OAAO;4BACb,MAAM,EAAE;gCACN,YAAY,EAAE,CAAC,CAAC;gCAChB,QAAQ,EAAE,YAAY;gCACtB,MAAM,EAAE,YAAY;6BACrB;yBACF;wBACD;4BACE,IAAI,EAAE,OAAO;4BACb,MAAM,EAAE;gCACN,YAAY,EAAE,CAAC;gCACf,QAAQ,EAAE,YAAY;gCACtB,MAAM,EAAE,OAAO,CAAC,yBAAyB;gCACzC,MAAM,EAAE;oCACN,IAAI,EAAE,SAAS;oCACf,KAAK,EAAE,SAAS;oCAChB,GAAG,EAAE,SAAS;iCACf;6BACF;yBACF;qBACF;iBACF;gBACD,MAAM,EAAE;oBACN,KAAK,EAAE,MAAM;iBACd;gBACD,KAAK,EAAE,GAAG;aACX;YACD;gBACE,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,WAAW;gBACjB,MAAM,EAAE,YAAY;gBACpB,MAAM,EAAE;oBACN,QAAQ,EAAE,SAAS;oBACnB,KAAK,EAAE;wBACL,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC,EAAE,EAAE;wBAC/C,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;qBAChD;iBACF;gBACD,KAAK,EAAE,GAAG;aACX;YACD;gBACE,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,WAAW;gBACjB,MAAM,EAAE,YAAY;gBACpB,KAAK,EAAE,GAAG;aACX;SACF;QACD,IAAI,EAAE,EAAE;QACR,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,IAAI;aACX;SACF;QACD,OAAO,EAAE;YACP,MAAM,EAAE,YAAY;SACrB;QACD,UAAU,EAAE;YACV,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC;SAC1B;KACF,CAAA;AACH,CAAC;AAED,eAAe;IACb,KAAK,EAAE,8BAA8B;IACrC,SAAS,EAAE,UAAU;IACrB,QAAQ,EAAE;QACR,YAAY,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE;KACrC;CACF,CAAA;AAaD,MAAM,QAAQ,GAAoB,CAAC,EAAE,YAAY,EAAY,EAAE,EAAE,CAC/D,IAAI,CAAA;;;;;;;;;;;;;;;;;;;;;QAqBE,iBAAiB,CAAC,OAAO;;;;QAIzB,iBAAiB,CAAC,OAAO;QACzB,kBAAkB,CAAC,OAAO;;;;;;;;;;;;;;gBAclB,WAAW,CAAC,EAAE,YAAY,EAAE,CAAC;;sBAEvB,YAAY;wBACV,CAAC,CAAQ,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAG,CAAC,CAAC,MAAc,CAAC,OAAO,CAAC;;;;;;;;;uBAShE,CAAC,CAAQ,EAAE,EAAE;IACpB,MAAM,MAAM,GAAG,CAAC,CAAC,aAA4B,CAC5C;IAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAE,CAAC,aAAa,CAAC,iBAAiB,CAAS,CAAC,IAAI,CAAC;QAC1E,KAAK,EAAE,CAAC;QACR,GAAG,EAAE,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,YAAY;KAC5C,CAAC,CAAA;AACJ,CAAC;;;;;;;;;gBASC,CAAA;AAEhB,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;AACxC,OAAO,CAAC,IAAI,GAAG;IACb,YAAY,EAAE,IAAI;CACnB,CAAA","sourcesContent":["import '../src/index.js'\nimport '../src/filters/filters-form.js'\nimport '../src/sorters/sorters-control.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.js'\n\nimport { FetchHandler } from '../src/types.js'\n\nimport { CommonHeaderStyles, CommonGristStyles } from '@operato/styles'\n\nconst fetchHandler: FetchHandler = async ({ sorters = [], filters, page, limit }) => {\n var total = 120993\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 due: idx % 2 ? '2024-01-01' : '2024-02-01',\n createdAt: Date.now(),\n updatedAt: Date.now()\n }\n })\n }\n}\n\nfunction buildConfig({ headerFilter }: { headerFilter: boolean }) {\n return {\n list: {\n fields: ['name', 'description'],\n details: ['updatedAt', 'createdAt']\n },\n columns: [\n {\n type: 'gutter',\n gutterName: 'sequence'\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 filter: {\n operator: 'eq',\n value: 'shnam'\n },\n sortable: true,\n width: 120\n },\n {\n type: 'string',\n name: 'description',\n header: 'description',\n filter: {\n operator: 'like',\n value: 'hahaha'\n },\n record: {\n align: 'left'\n },\n width: 200\n },\n {\n type: 'date',\n name: 'due',\n header: 'due',\n filter: {\n operator: 'between',\n value: [\n {\n name: 'today',\n params: {\n relativeDays: -2,\n timeZone: 'Asia/Seoul',\n format: 'YYYY-MM-DD'\n }\n },\n {\n name: 'today',\n params: {\n relativeDays: 1,\n timeZone: 'Asia/Seoul',\n locale: 'en-CA' /* 'YYYY-MM-DD' format */,\n format: {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit'\n }\n }\n }\n ]\n },\n record: {\n align: 'left'\n },\n width: 120\n },\n {\n type: 'datetime',\n name: 'updatedAt',\n header: 'updated at',\n filter: {\n operator: 'between',\n value: [\n { name: 'week', params: { relativeWeeks: -1 } },\n { name: 'today', params: { relativeDays: +1 } }\n ]\n },\n width: 180\n },\n {\n type: 'datetime',\n name: 'createdAt',\n header: 'created at',\n width: 180\n }\n ],\n rows: {},\n sorters: [\n {\n name: 'name',\n desc: true\n }\n ],\n filters: {\n header: headerFilter\n },\n pagination: {\n pages: [30, 50, 100, 200]\n }\n }\n}\n\nexport default {\n title: 'default filters for ox-grist',\n component: 'ox-grist',\n argTypes: {\n headerFilter: { 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 headerFilter: boolean\n theme?: 'light' | 'dark'\n}\n\nconst Template: Story<ArgTypes> = ({ headerFilter }: 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 <style>\n ox-grist {\n height: 600px;\n }\n\n ox-filters-form {\n flex: 1;\n }\n </style>\n\n <ox-grist\n .config=${buildConfig({ headerFilter })}\n mode=\"GRID\"\n .fetchHandler=${fetchHandler}\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></ox-filters-form>\n\n <div id=\"sorters\">\n Sort\n <md-icon\n @click=${(e: Event) => {\n const target = e.currentTarget as HTMLElement\n ;(target.closest('#sorters')!.querySelector('#sorter-control') as any).open({\n right: 0,\n top: target.offsetTop + target.offsetHeight\n })\n }}\n >expand_more</md-icon\n >\n <ox-popup id=\"sorter-control\">\n <ox-sorters-control> </ox-sorters-control>\n </ox-popup>\n </div>\n </div>\n </div>\n </ox-grist>`\n\nexport const Regular = Template.bind({})\nRegular.args = {\n headerFilter: true\n}\n"]}
@@ -1,25 +0,0 @@
1
- import '../src/index.js';
2
- import '../src/filters/filters-form.js';
3
- import '../src/sorters/sorters-control.js';
4
- import '@operato/popup/ox-popup-list.js';
5
- import '@material/web/icon/icon.js';
6
- import { TemplateResult } from 'lit';
7
- declare const _default: {
8
- title: string;
9
- component: string;
10
- argTypes: {
11
- headerFilter: {
12
- control: string;
13
- };
14
- };
15
- };
16
- export default _default;
17
- interface Story<T> {
18
- (args: T): TemplateResult;
19
- args?: Partial<T>;
20
- argTypes?: Record<string, unknown>;
21
- }
22
- interface ArgTypes {
23
- headerFilter: boolean;
24
- }
25
- export declare const Regular: Story<ArgTypes>;