@operato/data-grist 8.0.0-alpha.8 → 8.0.0-beta.1

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 (218) hide show
  1. package/CHANGELOG.md +186 -0
  2. package/dist/src/data-grid/data-grid-body.js +21 -7
  3. package/dist/src/data-grid/data-grid-body.js.map +1 -1
  4. package/dist/src/data-grid/data-grid-footer.js +2 -0
  5. package/dist/src/data-grid/data-grid-footer.js.map +1 -1
  6. package/dist/src/data-grid/data-grid-header.d.ts +1 -1
  7. package/dist/src/data-grid/data-grid-header.js +13 -9
  8. package/dist/src/data-grid/data-grid-header.js.map +1 -1
  9. package/dist/src/editors/ox-grist-editor-varname.d.ts +6 -0
  10. package/dist/src/editors/ox-grist-editor-varname.js +36 -0
  11. package/dist/src/editors/ox-grist-editor-varname.js.map +1 -0
  12. package/dist/src/editors/ox-grist-editor.js +3 -3
  13. package/dist/src/editors/ox-grist-editor.js.map +1 -1
  14. package/dist/src/editors/registry.js +3 -1
  15. package/dist/src/editors/registry.js.map +1 -1
  16. package/dist/src/gutters/gutter-sequence.d.ts +1 -1
  17. package/dist/src/record-view/index.d.ts +1 -1
  18. package/dist/src/record-view/index.js +1 -1
  19. package/dist/src/record-view/index.js.map +1 -1
  20. package/dist/src/record-view/{record-creator.d.ts → ox-record-creator.d.ts} +8 -4
  21. package/dist/src/record-view/{record-creator.js → ox-record-creator.js} +90 -34
  22. package/dist/src/record-view/ox-record-creator.js.map +1 -0
  23. package/dist/src/renderers/ox-grist-renderer-boolean.js +1 -1
  24. package/dist/src/renderers/ox-grist-renderer-boolean.js.map +1 -1
  25. package/dist/stories/accumulator-format.stories.d.ts +1 -1
  26. package/dist/stories/accumulator-format.stories.js +1 -1
  27. package/dist/stories/accumulator-format.stories.js.map +1 -1
  28. package/dist/stories/click-event-custom.stories.d.ts +45 -0
  29. package/dist/stories/click-event-custom.stories.js +247 -0
  30. package/dist/stories/click-event-custom.stories.js.map +1 -0
  31. package/dist/stories/click-event.stories.d.ts +1 -1
  32. package/dist/stories/click-event.stories.js +1 -1
  33. package/dist/stories/click-event.stories.js.map +1 -1
  34. package/dist/stories/fixed-column.stories.d.ts +1 -1
  35. package/dist/stories/fixed-column.stories.js +1 -1
  36. package/dist/stories/fixed-column.stories.js.map +1 -1
  37. package/dist/stories/grid-setting.stories.d.ts +1 -1
  38. package/dist/stories/grid-setting.stories.js +1 -1
  39. package/dist/stories/grid-setting.stories.js.map +1 -1
  40. package/dist/stories/grist-modes.stories.d.ts +1 -1
  41. package/dist/stories/grist-modes.stories.js +1 -1
  42. package/dist/stories/grist-modes.stories.js.map +1 -1
  43. package/dist/stories/group-header.stories.d.ts +1 -1
  44. package/dist/stories/group-header.stories.js +1 -1
  45. package/dist/stories/group-header.stories.js.map +1 -1
  46. package/dist/stories/textarea.stories.d.ts +1 -1
  47. package/dist/stories/textarea.stories.js +1 -1
  48. package/dist/stories/textarea.stories.js.map +1 -1
  49. package/dist/stories/tree-column-with-checkbox.stories.d.ts +1 -1
  50. package/dist/stories/tree-column-with-checkbox.stories.js +1 -1
  51. package/dist/stories/tree-column-with-checkbox.stories.js.map +1 -1
  52. package/dist/stories/tree-column.stories.d.ts +1 -1
  53. package/dist/stories/tree-column.stories.js +1 -1
  54. package/dist/stories/tree-column.stories.js.map +1 -1
  55. package/dist/tsconfig.tsbuildinfo +1 -1
  56. package/package.json +20 -20
  57. package/themes/calendar-theme.css +3 -1
  58. package/.storybook/main.js +0 -3
  59. package/.storybook/preview.js +0 -52
  60. package/.storybook/server.mjs +0 -8
  61. package/dist/src/record-view/record-creator.js.map +0 -1
  62. package/src/accumulator/accumulator.ts +0 -63
  63. package/src/configure/column-builder.ts +0 -114
  64. package/src/configure/config-builder.ts +0 -40
  65. package/src/configure/filters-option-builder.ts +0 -8
  66. package/src/configure/imex-option-builder.ts +0 -5
  67. package/src/configure/list-option-builder.ts +0 -9
  68. package/src/configure/rows-option-builder.ts +0 -38
  69. package/src/configure/tree-option-builder.ts +0 -22
  70. package/src/configure/zero-config.ts +0 -83
  71. package/src/const.ts +0 -1
  72. package/src/data-card/data-card-field.ts +0 -94
  73. package/src/data-card/data-card-gutter-menu.ts +0 -94
  74. package/src/data-card/data-card-gutter.ts +0 -103
  75. package/src/data-card/data-card.ts +0 -154
  76. package/src/data-card/event-handlers/record-card-click-handler.ts +0 -34
  77. package/src/data-card/event-handlers/record-card-dblclick-handler.ts +0 -34
  78. package/src/data-card/record-card.ts +0 -298
  79. package/src/data-consumer.ts +0 -11
  80. package/src/data-grid/data-grid-accum-field.ts +0 -109
  81. package/src/data-grid/data-grid-body-style.ts +0 -85
  82. package/src/data-grid/data-grid-body.ts +0 -749
  83. package/src/data-grid/data-grid-field.ts +0 -227
  84. package/src/data-grid/data-grid-footer.ts +0 -117
  85. package/src/data-grid/data-grid-header.ts +0 -574
  86. package/src/data-grid/data-grid.ts +0 -293
  87. package/src/data-grid/event-handlers/data-grid-body-click-handler.ts +0 -69
  88. package/src/data-grid/event-handlers/data-grid-body-contextmenu-handler.ts +0 -32
  89. package/src/data-grid/event-handlers/data-grid-body-dblclick-handler.ts +0 -42
  90. package/src/data-grid/event-handlers/data-grid-body-focus-change-handler.ts +0 -24
  91. package/src/data-grid/event-handlers/data-grid-body-keydown-handler.ts +0 -234
  92. package/src/data-grist.ts +0 -1233
  93. package/src/data-list/data-list-field.ts +0 -82
  94. package/src/data-list/data-list-gutter.ts +0 -108
  95. package/src/data-list/data-list.ts +0 -145
  96. package/src/data-list/event-handlers/record-partial-click-handler.ts +0 -34
  97. package/src/data-list/event-handlers/record-partial-dblclick-handler.ts +0 -33
  98. package/src/data-list/event-handlers/record-partial-long-press-handler.ts +0 -33
  99. package/src/data-list/record-partial.ts +0 -264
  100. package/src/data-manipulator.ts +0 -426
  101. package/src/data-provider.ts +0 -271
  102. package/src/data-report/data-report-body-style.ts +0 -58
  103. package/src/data-report/data-report-body.ts +0 -189
  104. package/src/data-report/data-report-component.ts +0 -138
  105. package/src/data-report/data-report-field.ts +0 -83
  106. package/src/data-report/data-report-header.ts +0 -242
  107. package/src/data-report/event-handlers/data-report-body-click-handler.ts +0 -38
  108. package/src/data-report/event-handlers/data-report-body-dblclick-handler.ts +0 -25
  109. package/src/data-report/event-handlers/data-report-body-keydown-handler.ts +0 -68
  110. package/src/data-report.ts +0 -424
  111. package/src/editors/index.ts +0 -4
  112. package/src/editors/ox-grist-editor-checkbox.ts +0 -28
  113. package/src/editors/ox-grist-editor-color.ts +0 -10
  114. package/src/editors/ox-grist-editor-date.ts +0 -10
  115. package/src/editors/ox-grist-editor-datetime.ts +0 -27
  116. package/src/editors/ox-grist-editor-email.ts +0 -10
  117. package/src/editors/ox-grist-editor-file.ts +0 -28
  118. package/src/editors/ox-grist-editor-image.ts +0 -31
  119. package/src/editors/ox-grist-editor-month.ts +0 -10
  120. package/src/editors/ox-grist-editor-multiple-select.ts +0 -57
  121. package/src/editors/ox-grist-editor-number.ts +0 -27
  122. package/src/editors/ox-grist-editor-password.ts +0 -10
  123. package/src/editors/ox-grist-editor-select.ts +0 -55
  124. package/src/editors/ox-grist-editor-tel.ts +0 -10
  125. package/src/editors/ox-grist-editor-text.ts +0 -14
  126. package/src/editors/ox-grist-editor-textarea.ts +0 -16
  127. package/src/editors/ox-grist-editor-time.ts +0 -10
  128. package/src/editors/ox-grist-editor-tree.ts +0 -27
  129. package/src/editors/ox-grist-editor-week.ts +0 -10
  130. package/src/editors/ox-grist-editor.ts +0 -207
  131. package/src/editors/ox-input-tree.ts +0 -226
  132. package/src/editors/registry.ts +0 -80
  133. package/src/empty-note.ts +0 -46
  134. package/src/filters/filter-checkbox.ts +0 -49
  135. package/src/filters/filter-input-barcode.ts +0 -34
  136. package/src/filters/filter-input.ts +0 -30
  137. package/src/filters/filter-range-date.ts +0 -81
  138. package/src/filters/filter-range-number.ts +0 -64
  139. package/src/filters/filter-select-buttons.ts +0 -60
  140. package/src/filters/filter-select.ts +0 -68
  141. package/src/filters/filter-styles.ts +0 -119
  142. package/src/filters/filters-form.ts +0 -476
  143. package/src/filters/index.ts +0 -10
  144. package/src/filters/registry.ts +0 -56
  145. package/src/formatters/date-formatter.ts +0 -3
  146. package/src/formatters/index.ts +0 -1
  147. package/src/formatters/number-formatter.ts +0 -3
  148. package/src/formatters/registry.ts +0 -30
  149. package/src/formatters/text-formatter.ts +0 -3
  150. package/src/gutters/gutter-button.ts +0 -51
  151. package/src/gutters/gutter-dirty.ts +0 -96
  152. package/src/gutters/gutter-row-selector.ts +0 -89
  153. package/src/gutters/gutter-sequence.ts +0 -54
  154. package/src/gutters/index.ts +0 -1
  155. package/src/gutters/registry.ts +0 -32
  156. package/src/handlers/contextmenu-tree-mutation.ts +0 -80
  157. package/src/handlers/index.ts +0 -1
  158. package/src/handlers/move-down.ts +0 -44
  159. package/src/handlers/move-up.ts +0 -44
  160. package/src/handlers/record-copy.ts +0 -38
  161. package/src/handlers/record-delete.ts +0 -30
  162. package/src/handlers/record-view-handler.ts +0 -27
  163. package/src/handlers/registry.ts +0 -42
  164. package/src/handlers/select-row-toggle.ts +0 -30
  165. package/src/handlers/select-row.ts +0 -27
  166. package/src/index.ts +0 -17
  167. package/src/personalizer/index.ts +0 -1
  168. package/src/personalizer/ox-grist-filter-personalizer.ts +0 -192
  169. package/src/personalizer/ox-grist-personalizer.ts +0 -226
  170. package/src/record-view/event-handlers/record-view-body-click-handler.ts +0 -33
  171. package/src/record-view/event-handlers/record-view-body-keydown-handler.ts +0 -26
  172. package/src/record-view/index.ts +0 -2
  173. package/src/record-view/record-creator.ts +0 -226
  174. package/src/record-view/record-view-body.ts +0 -257
  175. package/src/record-view/record-view-handler.ts +0 -86
  176. package/src/record-view/record-view.ts +0 -122
  177. package/src/renderers/index.ts +0 -14
  178. package/src/renderers/ox-grist-renderer-boolean.ts +0 -43
  179. package/src/renderers/ox-grist-renderer-color.ts +0 -15
  180. package/src/renderers/ox-grist-renderer-date.ts +0 -62
  181. package/src/renderers/ox-grist-renderer-file.ts +0 -31
  182. package/src/renderers/ox-grist-renderer-image.ts +0 -27
  183. package/src/renderers/ox-grist-renderer-json5.ts +0 -36
  184. package/src/renderers/ox-grist-renderer-link.ts +0 -17
  185. package/src/renderers/ox-grist-renderer-password.ts +0 -7
  186. package/src/renderers/ox-grist-renderer-progress.ts +0 -45
  187. package/src/renderers/ox-grist-renderer-select.ts +0 -58
  188. package/src/renderers/ox-grist-renderer-text.ts +0 -16
  189. package/src/renderers/ox-grist-renderer-textarea.ts +0 -7
  190. package/src/renderers/ox-grist-renderer-tree.ts +0 -189
  191. package/src/renderers/ox-grist-renderer.ts +0 -35
  192. package/src/renderers/registry.ts +0 -111
  193. package/src/sorters/sorters-control.ts +0 -143
  194. package/src/types.ts +0 -813
  195. package/src/utils/index.ts +0 -2
  196. package/src/utils/list-param.ts +0 -72
  197. package/src/utils/supports-passive.ts +0 -13
  198. package/stories/accumulator-format.stories.ts +0 -276
  199. package/stories/barcode-input-filter.stories.ts +0 -216
  200. package/stories/bounded-select-filters.stories.ts +0 -333
  201. package/stories/bounded-select-record.stories.ts +0 -336
  202. package/stories/click-event.stories.ts +0 -283
  203. package/stories/creatable-only-column.stories.ts +0 -253
  204. package/stories/default-filters.stories.ts +0 -241
  205. package/stories/dynamic-editable.stories.ts +0 -313
  206. package/stories/empty-sorters.stories.ts +0 -180
  207. package/stories/explicit-fetch.stories.ts +0 -186
  208. package/stories/fixed-column.stories.ts +0 -416
  209. package/stories/grid-setting.stories.ts +0 -501
  210. package/stories/grist-modes.stories.ts +0 -451
  211. package/stories/group-header.stories.ts +0 -442
  212. package/stories/record-view.stories.ts +0 -143
  213. package/stories/textarea.stories.ts +0 -261
  214. package/stories/tree-column-with-checkbox.stories.ts +0 -297
  215. package/stories/tree-column.stories.ts +0 -296
  216. package/tsconfig.json +0 -26
  217. package/web-dev-server.config.mjs +0 -27
  218. package/web-test-runner.config.mjs +0 -45
@@ -1,2 +0,0 @@
1
- export * from './supports-passive'
2
- export * from './list-param'
@@ -1,72 +0,0 @@
1
- import json5 from 'json5'
2
- import pickBy from 'lodash-es/pickBy'
3
-
4
- import { FilterValue, SortersConfig } from '../types'
5
-
6
- export function convertListParamToSearchString({
7
- filters,
8
- sorters,
9
- page,
10
- limit,
11
- base
12
- }: {
13
- filters?: FilterValue[]
14
- sorters?: SortersConfig
15
- page?: number
16
- limit?: number
17
- base?: string
18
- }) {
19
- const urlParams = new URLSearchParams(base)
20
-
21
- if (sorters) {
22
- if (sorters.length > 0) {
23
- urlParams.set('sorters', json5.stringify(sorters))
24
- } else {
25
- urlParams.delete('sorters')
26
- }
27
- }
28
-
29
- if (filters) {
30
- if (filters.length > 0) {
31
- urlParams.set('filters', json5.stringify(filters))
32
- } else {
33
- urlParams.delete('filters')
34
- }
35
- }
36
-
37
- if (!isNaN(page as any)) {
38
- urlParams.set('page', String(page))
39
- }
40
-
41
- if (!isNaN(limit as any)) {
42
- urlParams.set('limit', String(limit))
43
- }
44
-
45
- return String(urlParams)
46
- }
47
-
48
- export function convertSearchStringToListParam(searchParams: string): {
49
- filters?: FilterValue[]
50
- sorters?: SortersConfig
51
- pagination?: {
52
- page?: number
53
- limit?: number
54
- }
55
- } {
56
- const urlParams = new URLSearchParams(searchParams)
57
-
58
- return pickBy(
59
- {
60
- filters: json5.parse(urlParams.get('filters') || '[]'),
61
- sorters: json5.parse(urlParams.get('sorters') || '[]'),
62
- pagination: pickBy(
63
- {
64
- page: Number(urlParams.get('page')),
65
- limit: Number(urlParams.get('limit'))
66
- },
67
- v => !isNaN(v)
68
- )
69
- },
70
- v => v !== undefined && !(typeof v === 'object' && Object.keys(v).length == 0)
71
- )
72
- }
@@ -1,13 +0,0 @@
1
- // Test via a getter in the options object to see if the passive property is accessed
2
- export var supportsPassive = false
3
-
4
- try {
5
- var opts = Object.defineProperty({}, 'passive', {
6
- get: function () {
7
- supportsPassive = true
8
- }
9
- })
10
-
11
- window.addEventListener('testPassive', () => {}, opts)
12
- window.removeEventListener('testPassive', () => {}, opts)
13
- } catch (e) {}
@@ -1,276 +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
-
8
- import { html, TemplateResult } from 'lit'
9
- import { styles as MDTypeScaleStyles } from '@material/web/typography/md-typescale-styles'
10
-
11
- import {
12
- ColumnConfig,
13
- FetchHandler,
14
- FetchOption,
15
- GristClassifier,
16
- GristEventHandlerSet,
17
- GristRecord,
18
- ValidationCallback
19
- } from '../src/types.js'
20
-
21
- import { CommonHeaderStyles, CommonGristStyles } from '@operato/styles'
22
-
23
- const fetchHandler: FetchHandler = async ({ page, limit }: FetchOption) => {
24
- var total = 25
25
- var start = (page! - 1) * limit!
26
-
27
- await new Promise(resolve => setTimeout(resolve, 500))
28
-
29
- return {
30
- total,
31
- records: Array(limit! * page! > total ? total % limit! : limit)
32
- .fill('')
33
- .map((item, idx) => {
34
- return {
35
- id: String(idx),
36
- name: idx % 2 ? `shnam-${start + idx + 1}` : `heartyoh-${start + idx + 1}`,
37
- description: idx % 2 ? `hatiolabmanager${start + idx + 1}1234567890` : `hatiosea manager-${start + idx + 1}`,
38
- accval: Math.random(),
39
- accval2: Math.round(Math.random() * 15),
40
- createdAt: Date.now(),
41
- updatedAt: Date.now()
42
- }
43
- })
44
- }
45
- }
46
-
47
- const config = {
48
- columns: [
49
- {
50
- type: 'gutter',
51
- gutterName: 'dirty'
52
- },
53
- {
54
- type: 'gutter',
55
- gutterName: 'sequence'
56
- },
57
- {
58
- type: 'gutter',
59
- gutterName: 'row-selector',
60
- multiple: true
61
- },
62
- {
63
- type: 'gutter',
64
- gutterName: 'button',
65
- icon: 'add',
66
- title: 'add',
67
- handlers: {
68
- click: 'record-copy'
69
- }
70
- },
71
- {
72
- type: 'string',
73
- name: 'id',
74
- hidden: true
75
- },
76
- {
77
- type: 'string',
78
- name: 'name',
79
- label: true,
80
- header: 'name',
81
- record: {
82
- editable: true
83
- },
84
- filter: 'search',
85
- sortable: true,
86
- width: 120,
87
- fixed: true
88
- },
89
- {
90
- type: 'string',
91
- name: 'description',
92
- header: {
93
- renderer: () => 'description',
94
- style: 'text-transform: none;'
95
- },
96
- filter: 'search',
97
- record: {
98
- editable: true,
99
- align: 'left'
100
- },
101
- width: 200
102
- },
103
- {
104
- type: 'number',
105
- name: 'accval',
106
- label: true,
107
- header: 'accval',
108
- record: {
109
- editable: true,
110
- align: 'right',
111
- defaultValue: 100,
112
- format: '+$#,##0.00'
113
- },
114
- accumulator: 'avg',
115
- // accumulator: {
116
- // type: 'avg',
117
- // tag: true
118
- // },
119
- sortable: true,
120
- width: 130
121
- },
122
- {
123
- type: 'number',
124
- name: 'accval2',
125
- label: true,
126
- header: 'accval2',
127
- record: {
128
- editable: true,
129
- align: 'right',
130
- renderer: (value: any, column: any, record: any) => {
131
- return value && Intl.NumberFormat('en-US').format(value)
132
- }
133
- },
134
- accumulator: {
135
- type: 'sum',
136
- tag: true
137
- },
138
- sortable: true,
139
- width: 130
140
- },
141
- {
142
- type: 'datetime',
143
- name: 'updatedAt',
144
- header: 'updated at',
145
- record: {
146
- editable: true,
147
- defaultValue: {
148
- name: 'now'
149
- }
150
- },
151
- filter: 'between',
152
- sortable: true,
153
- width: 180
154
- },
155
- {
156
- type: 'datetime',
157
- name: 'createdAt',
158
- header: 'created at',
159
- record: {
160
- editable: false
161
- },
162
- sortable: true,
163
- width: 180
164
- }
165
- ],
166
- rows: {
167
- selectable: {
168
- multiple: false
169
- },
170
- accumulator: true
171
- },
172
- sorters: [
173
- {
174
- name: 'name',
175
- desc: true
176
- }
177
- ],
178
- pagination: {
179
- pages: [20, 30, 50, 100, 200]
180
- }
181
- }
182
-
183
- export default {
184
- title: 'accumulator format in ox-grist',
185
- component: 'ox-grist',
186
- argTypes: {
187
- config: { control: 'object' },
188
- mode: { control: 'select', options: ['GRID', 'LIST', 'CARD'] },
189
- urlParamsSensitive: { control: 'boolean' },
190
- withoutSearch: { control: 'boolean' }
191
- }
192
- }
193
-
194
- interface Story<T> {
195
- (args: T): TemplateResult
196
- args?: Partial<T>
197
- argTypes?: Record<string, unknown>
198
- }
199
-
200
- interface ArgTypes {
201
- config: object
202
- mode: string
203
- urlParamsSensitive: boolean
204
- withoutSearch: boolean
205
- fetchHandler: FetchHandler
206
- }
207
-
208
- const Template: Story<ArgTypes> = ({
209
- config,
210
- mode = 'GRID',
211
- urlParamsSensitive = false,
212
- withoutSearch = false,
213
- fetchHandler
214
- }: ArgTypes) =>
215
- html` <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@400;500;700&display=swap" rel="stylesheet" />
216
-
217
- <link href="/themes/light.css" rel="stylesheet" />
218
- <link href="/themes/dark.css" rel="stylesheet" />
219
- <link href="/themes/spacing.css" rel="stylesheet" />
220
- <link href="/themes/grist-theme.css" rel="stylesheet" />
221
-
222
- <link
223
- href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL@20..48,100..700,0..1"
224
- rel="stylesheet"
225
- />
226
- <link
227
- href="https://fonts.googleapis.com/css2?family=Material+Symbols+Rounded:opsz,wght,FILL@20..48,100..700,0..1"
228
- rel="stylesheet"
229
- />
230
- <link
231
- href="https://fonts.googleapis.com/css2?family=Material+Symbols+Sharp:opsz,wght,FILL@20..48,100..700,0..1"
232
- rel="stylesheet"
233
- />
234
-
235
- <style>
236
- ${MDTypeScaleStyles.cssText}
237
- </style>
238
-
239
- <style>
240
- ${CommonGristStyles.cssText}
241
- ${CommonHeaderStyles.cssText}
242
- </style>
243
-
244
- <style>
245
- ox-grist {
246
- height: 600px;
247
- }
248
-
249
- ox-filters-form {
250
- flex: 1;
251
- }
252
- </style>
253
-
254
- <ox-grist
255
- mode="GRID"
256
- .config=${config}
257
- .fetchHandler=${fetchHandler}
258
- ?url-params-sensitive=${urlParamsSensitive}
259
- @filters-change=${(e: Event) => console.log('filters', (e.target as any).filters)}
260
- >
261
- <div slot="headroom" class="header">
262
- <div class="filters">
263
- <ox-filters-form ?without-search=${withoutSearch} autofocus></ox-filters-form>
264
- <ox-record-creator id="add" light-popup>
265
- <button><md-icon>add</md-icon></button>
266
- </ox-record-creator>
267
- </div>
268
- </div>
269
- </ox-grist>`
270
-
271
- export const Regular = Template.bind({})
272
- Regular.args = {
273
- config,
274
- fetchHandler,
275
- mode: 'GRID'
276
- }
@@ -1,216 +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
-
7
- import { html, TemplateResult } from 'lit'
8
- import { styles as MDTypeScaleStyles } from '@material/web/typography/md-typescale-styles'
9
-
10
- import { FetchHandler } from '../src/types.js'
11
-
12
- import { CommonHeaderStyles, CommonGristStyles } from '@operato/styles'
13
-
14
- const fetchHandler: FetchHandler = async ({ filters, page, limit }) => {
15
- var total = 120993
16
- var start = (page! - 1) * limit!
17
-
18
- await new Promise(resolve => setTimeout(resolve, 500))
19
-
20
- return {
21
- total,
22
- records: Array(limit! * page! > total ? total % limit! : limit)
23
- .fill('')
24
- .map((item, idx) => {
25
- return {
26
- id: String(idx),
27
- name: idx % 2 ? `shnam-${start + idx + 1}` : `heartyoh-${start + idx + 1}`,
28
- description: idx % 2 ? `hatiolabmanager${start + idx + 1}1234567890` : `hatiosea manager-${start + idx + 1}`,
29
- createdAt: Date.now(),
30
- updatedAt: Date.now()
31
- }
32
- })
33
- }
34
- }
35
-
36
- function buildConfig({
37
- englishOnly,
38
- selectAfterChange,
39
- headerFilter
40
- }: {
41
- englishOnly: boolean
42
- selectAfterChange: boolean
43
- headerFilter: boolean
44
- }) {
45
- return {
46
- list: {
47
- fields: ['name', 'description'],
48
- details: ['updatedAt', 'createdAt']
49
- },
50
- columns: [
51
- {
52
- type: 'gutter',
53
- gutterName: 'sequence'
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
- filter: {
66
- type: 'barcode',
67
- operator: 'eq',
68
- value: 'shnam',
69
- options: {
70
- englishOnly,
71
- selectAfterChange
72
- }
73
- },
74
- sortable: true,
75
- width: 120
76
- },
77
- {
78
- type: 'string',
79
- name: 'description',
80
- header: 'description',
81
- filter: {
82
- operator: 'like',
83
- value: 'hahaha'
84
- },
85
- record: {
86
- align: 'left'
87
- },
88
- width: 200
89
- },
90
- {
91
- type: 'datetime',
92
- name: 'updatedAt',
93
- header: 'updated at',
94
- width: 180
95
- },
96
- {
97
- type: 'datetime',
98
- name: 'createdAt',
99
- header: 'created at',
100
- width: 180
101
- }
102
- ],
103
- rows: {},
104
- sorters: [
105
- {
106
- name: 'name',
107
- desc: true
108
- }
109
- ],
110
- filters: {
111
- header: headerFilter
112
- },
113
- pagination: {
114
- pages: [30, 50, 100, 200]
115
- }
116
- }
117
- }
118
-
119
- export default {
120
- title: 'barcode input filter for ox-grist',
121
- component: 'ox-grist',
122
- argTypes: {
123
- englishOnly: { control: 'boolean' },
124
- selectAfterChange: { control: 'boolean' },
125
- headerFilter: { control: 'boolean' }
126
- }
127
- }
128
-
129
- interface Story<T> {
130
- (args: T): TemplateResult
131
- args?: Partial<T>
132
- argTypes?: Record<string, unknown>
133
- }
134
-
135
- interface ArgTypes {
136
- englishOnly: boolean
137
- selectAfterChange: boolean
138
- headerFilter: boolean
139
- }
140
-
141
- const Template: Story<ArgTypes> = ({ englishOnly, selectAfterChange, headerFilter }: ArgTypes) =>
142
- html` <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@400;500;700&display=swap" rel="stylesheet" />
143
-
144
- <link href="/themes/light.css" rel="stylesheet" />
145
- <link href="/themes/dark.css" rel="stylesheet" />
146
- <link href="/themes/spacing.css" rel="stylesheet" />
147
- <link href="/themes/grist-theme.css" rel="stylesheet" />
148
-
149
- <link
150
- href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL@20..48,100..700,0..1"
151
- rel="stylesheet"
152
- />
153
- <link
154
- href="https://fonts.googleapis.com/css2?family=Material+Symbols+Rounded:opsz,wght,FILL@20..48,100..700,0..1"
155
- rel="stylesheet"
156
- />
157
- <link
158
- href="https://fonts.googleapis.com/css2?family=Material+Symbols+Sharp:opsz,wght,FILL@20..48,100..700,0..1"
159
- rel="stylesheet"
160
- />
161
-
162
- <style>
163
- ${MDTypeScaleStyles.cssText}
164
- </style>
165
-
166
- <style>
167
- ${CommonGristStyles.cssText}
168
- ${CommonHeaderStyles.cssText}
169
- </style>
170
-
171
- <style>
172
- ox-grist {
173
- height: 600px;
174
- }
175
-
176
- ox-filters-form {
177
- flex: 1;
178
- }
179
- </style>
180
-
181
- <ox-grist
182
- .config=${buildConfig({ englishOnly, selectAfterChange, headerFilter })}
183
- mode="GRID"
184
- .fetchHandler=${fetchHandler}
185
- @filters-change=${(e: Event) => console.log('filters', (e.target as any).filters)}
186
- >
187
- <div slot="headroom" class="header">
188
- <div class="filters">
189
- <ox-filters-form></ox-filters-form>
190
-
191
- <div id="sorters">
192
- Sort
193
- <md-icon
194
- @click=${(e: Event) => {
195
- const target = e.currentTarget as HTMLElement
196
- ;(target.closest('#sorters')!.querySelector('#sorter-control') as any).open({
197
- right: 0,
198
- top: target.offsetTop + target.offsetHeight
199
- })
200
- }}
201
- >expand_more</md-icon
202
- >
203
- <ox-popup id="sorter-control">
204
- <ox-sorters-control> </ox-sorters-control>
205
- </ox-popup>
206
- </div>
207
- </div>
208
- </div>
209
- </ox-grist>`
210
-
211
- export const Regular = Template.bind({})
212
- Regular.args = {
213
- englishOnly: true,
214
- selectAfterChange: true,
215
- headerFilter: true
216
- }