@operato/data-grist 0.2.31 → 0.2.36

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 (260) hide show
  1. package/CHANGELOG.md +69 -0
  2. package/custom-elements.json +4280 -2580
  3. package/demo/data-grist-test.html +1 -1
  4. package/demo/index.html +18 -1
  5. package/dist/src/configure/column-builder.d.ts +1 -0
  6. package/dist/src/configure/column-builder.js.map +1 -1
  7. package/dist/src/configure/config-builder.d.ts +1 -0
  8. package/dist/src/configure/config-builder.js.map +1 -1
  9. package/dist/src/configure/imex-option-builder.d.ts +1 -0
  10. package/dist/src/configure/imex-option-builder.js.map +1 -1
  11. package/dist/src/configure/list-option-builder.d.ts +1 -0
  12. package/dist/src/configure/list-option-builder.js +1 -1
  13. package/dist/src/configure/list-option-builder.js.map +1 -1
  14. package/dist/src/configure/rows-option-builder.d.ts +1 -0
  15. package/dist/src/configure/rows-option-builder.js.map +1 -1
  16. package/dist/src/configure/{config-types.d.ts → zero-config.d.ts} +1 -0
  17. package/dist/src/configure/{config-types.js → zero-config.js} +1 -1
  18. package/dist/src/configure/zero-config.js.map +1 -0
  19. package/dist/src/data-card/data-card-field.d.ts +1 -0
  20. package/dist/src/data-card/data-card-field.js +1 -1
  21. package/dist/src/data-card/data-card-field.js.map +1 -1
  22. package/dist/src/data-card/data-card-gutter-menu.js +2 -2
  23. package/dist/src/data-card/data-card-gutter-menu.js.map +1 -1
  24. package/dist/src/data-card/data-card-gutter.d.ts +13 -1
  25. package/dist/src/data-card/data-card-gutter.js +2 -1
  26. package/dist/src/data-card/data-card-gutter.js.map +1 -1
  27. package/dist/src/data-card/data-card.d.ts +1 -0
  28. package/dist/src/data-card/data-card.js +1 -1
  29. package/dist/src/data-card/data-card.js.map +1 -1
  30. package/dist/src/data-card/event-handlers/record-card-click-handler.js.map +1 -1
  31. package/dist/src/data-card/event-handlers/record-card-dblclick-handler.js.map +1 -1
  32. package/dist/src/data-card/record-card.d.ts +1 -0
  33. package/dist/src/data-card/record-card.js +1 -1
  34. package/dist/src/data-card/record-card.js.map +1 -1
  35. package/dist/src/data-consumer.d.ts +1 -0
  36. package/dist/src/data-consumer.js.map +1 -1
  37. package/dist/src/data-grid/data-grid-body.d.ts +1 -0
  38. package/dist/src/data-grid/data-grid-body.js +1 -1
  39. package/dist/src/data-grid/data-grid-body.js.map +1 -1
  40. package/dist/src/data-grid/data-grid-field.d.ts +3 -2
  41. package/dist/src/data-grid/data-grid-field.js +1 -1
  42. package/dist/src/data-grid/data-grid-field.js.map +1 -1
  43. package/dist/src/data-grid/data-grid-footer.d.ts +1 -0
  44. package/dist/src/data-grid/data-grid-footer.js +1 -1
  45. package/dist/src/data-grid/data-grid-footer.js.map +1 -1
  46. package/dist/src/data-grid/data-grid-header.d.ts +4 -0
  47. package/dist/src/data-grid/data-grid-header.js +39 -11
  48. package/dist/src/data-grid/data-grid-header.js.map +1 -1
  49. package/dist/src/data-grid/data-grid.d.ts +1 -0
  50. package/dist/src/data-grid/data-grid.js +1 -1
  51. package/dist/src/data-grid/data-grid.js.map +1 -1
  52. package/dist/src/data-grist.d.ts +10 -7
  53. package/dist/src/data-grist.js +27 -19
  54. package/dist/src/data-grist.js.map +1 -1
  55. package/dist/src/data-list/data-list-field.d.ts +1 -0
  56. package/dist/src/data-list/data-list-field.js +4 -4
  57. package/dist/src/data-list/data-list-field.js.map +1 -1
  58. package/dist/src/data-list/data-list-gutter.d.ts +13 -1
  59. package/dist/src/data-list/data-list-gutter.js +2 -1
  60. package/dist/src/data-list/data-list-gutter.js.map +1 -1
  61. package/dist/src/data-list/data-list.d.ts +1 -0
  62. package/dist/src/data-list/data-list.js +1 -1
  63. package/dist/src/data-list/data-list.js.map +1 -1
  64. package/dist/src/data-list/event-handlers/record-partial-click-handler.js.map +1 -1
  65. package/dist/src/data-list/event-handlers/record-partial-dblclick-handler.js.map +1 -1
  66. package/dist/src/data-list/event-handlers/record-partial-long-press-handler.js.map +1 -1
  67. package/dist/src/data-list/record-partial.d.ts +1 -0
  68. package/dist/src/data-list/record-partial.js +1 -1
  69. package/dist/src/data-list/record-partial.js.map +1 -1
  70. package/dist/src/data-provider.d.ts +1 -0
  71. package/dist/src/data-provider.js +1 -1
  72. package/dist/src/data-provider.js.map +1 -1
  73. package/dist/src/data-report/data-report-body.d.ts +1 -0
  74. package/dist/src/data-report/data-report-body.js +1 -1
  75. package/dist/src/data-report/data-report-body.js.map +1 -1
  76. package/dist/src/data-report/data-report-component.d.ts +1 -0
  77. package/dist/src/data-report/data-report-component.js +1 -1
  78. package/dist/src/data-report/data-report-component.js.map +1 -1
  79. package/dist/src/data-report/data-report-field.d.ts +3 -2
  80. package/dist/src/data-report/data-report-field.js +1 -1
  81. package/dist/src/data-report/data-report-field.js.map +1 -1
  82. package/dist/src/data-report/data-report-header.js +1 -1
  83. package/dist/src/data-report/data-report-header.js.map +1 -1
  84. package/dist/src/data-report.d.ts +1 -0
  85. package/dist/src/data-report.js +1 -1
  86. package/dist/src/data-report.js.map +1 -1
  87. package/dist/src/editors/input-editors.d.ts +1 -0
  88. package/dist/src/editors/input-editors.js +1 -1
  89. package/dist/src/editors/input-editors.js.map +1 -1
  90. package/dist/src/editors/registry.d.ts +1 -0
  91. package/dist/src/editors/registry.js.map +1 -1
  92. package/dist/src/filters/index.d.ts +2 -0
  93. package/dist/src/filters/index.js +3 -0
  94. package/dist/src/filters/index.js.map +1 -0
  95. package/dist/src/filters/list-select.d.ts +3 -0
  96. package/dist/src/filters/list-select.js +12 -0
  97. package/dist/src/filters/list-select.js.map +1 -0
  98. package/dist/src/filters/registry.d.ts +7 -0
  99. package/dist/src/filters/registry.js +40 -0
  100. package/dist/src/filters/registry.js.map +1 -0
  101. package/dist/src/gutters/gutter-button.js.map +1 -1
  102. package/dist/src/gutters/gutter-dirty.d.ts +1 -0
  103. package/dist/src/gutters/gutter-dirty.js.map +1 -1
  104. package/dist/src/gutters/gutter-row-selector.js.map +1 -1
  105. package/dist/src/gutters/gutter-sequence.js.map +1 -1
  106. package/dist/src/gutters/registry.d.ts +1 -0
  107. package/dist/src/gutters/registry.js.map +1 -1
  108. package/dist/src/handlers/record-view-handler.d.ts +1 -0
  109. package/dist/src/handlers/record-view-handler.js.map +1 -1
  110. package/dist/src/handlers/registry.d.ts +1 -0
  111. package/dist/src/handlers/registry.js.map +1 -1
  112. package/dist/src/handlers/select-row-toggle.d.ts +1 -0
  113. package/dist/src/handlers/select-row-toggle.js.map +1 -1
  114. package/dist/src/handlers/select-row.d.ts +1 -0
  115. package/dist/src/handlers/select-row.js.map +1 -1
  116. package/dist/src/index.d.ts +3 -0
  117. package/dist/src/index.js +3 -0
  118. package/dist/src/index.js.map +1 -1
  119. package/dist/src/interfaces/index.d.ts +2 -0
  120. package/dist/src/interfaces/index.js +3 -0
  121. package/dist/src/interfaces/index.js.map +1 -0
  122. package/dist/src/interfaces/ox-grist-search-form.d.ts +6 -0
  123. package/dist/src/interfaces/ox-grist-search-form.js +2 -0
  124. package/dist/src/interfaces/ox-grist-search-form.js.map +1 -0
  125. package/dist/src/interfaces/ox-search-field.d.ts +39 -0
  126. package/dist/src/interfaces/ox-search-field.js +2 -0
  127. package/dist/src/interfaces/ox-search-field.js.map +1 -0
  128. package/dist/src/record-view/record-view-body.d.ts +1 -0
  129. package/dist/src/record-view/record-view-body.js +1 -1
  130. package/dist/src/record-view/record-view-body.js.map +1 -1
  131. package/dist/src/record-view/record-view.d.ts +1 -0
  132. package/dist/src/record-view/record-view.js +1 -1
  133. package/dist/src/record-view/record-view.js.map +1 -1
  134. package/dist/src/renderers/boolean-renderer.d.ts +1 -0
  135. package/dist/src/renderers/boolean-renderer.js.map +1 -1
  136. package/dist/src/renderers/color-renderer.d.ts +1 -0
  137. package/dist/src/renderers/color-renderer.js.map +1 -1
  138. package/dist/src/renderers/date-renderer.d.ts +1 -0
  139. package/dist/src/renderers/date-renderer.js.map +1 -1
  140. package/dist/src/renderers/image-renderer.d.ts +1 -0
  141. package/dist/src/renderers/image-renderer.js.map +1 -1
  142. package/dist/src/renderers/json5-renderer.d.ts +1 -0
  143. package/dist/src/renderers/json5-renderer.js.map +1 -1
  144. package/dist/src/renderers/link-renderer.d.ts +1 -0
  145. package/dist/src/renderers/link-renderer.js.map +1 -1
  146. package/dist/src/renderers/password-renderer.d.ts +1 -0
  147. package/dist/src/renderers/password-renderer.js.map +1 -1
  148. package/dist/src/renderers/progress-renderer.d.ts +1 -0
  149. package/dist/src/renderers/progress-renderer.js.map +1 -1
  150. package/dist/src/renderers/registry.d.ts +1 -0
  151. package/dist/src/renderers/registry.js.map +1 -1
  152. package/dist/src/renderers/select-renderer.d.ts +1 -0
  153. package/dist/src/renderers/select-renderer.js.map +1 -1
  154. package/dist/src/renderers/text-renderer.d.ts +1 -0
  155. package/dist/src/renderers/text-renderer.js.map +1 -1
  156. package/dist/src/search-form/index.d.ts +7 -0
  157. package/dist/src/search-form/index.js +8 -0
  158. package/dist/src/search-form/index.js.map +1 -0
  159. package/dist/src/search-form/ox-basic-field.d.ts +18 -0
  160. package/dist/src/search-form/ox-basic-field.js +75 -0
  161. package/dist/src/search-form/ox-basic-field.js.map +1 -0
  162. package/dist/src/search-form/ox-checkbox-field.d.ts +11 -0
  163. package/dist/src/search-form/ox-checkbox-field.js +60 -0
  164. package/dist/src/search-form/ox-checkbox-field.js.map +1 -0
  165. package/dist/src/search-form/ox-grist-search-form.d.ts +11 -0
  166. package/dist/src/search-form/ox-grist-search-form.js +177 -0
  167. package/dist/src/search-form/ox-grist-search-form.js.map +1 -0
  168. package/dist/src/search-form/ox-number-field.d.ts +14 -0
  169. package/dist/src/search-form/ox-number-field.js +112 -0
  170. package/dist/src/search-form/ox-number-field.js.map +1 -0
  171. package/dist/src/search-form/ox-search-form.d.ts +15 -0
  172. package/dist/src/search-form/ox-search-form.js +53 -0
  173. package/dist/src/search-form/ox-search-form.js.map +1 -0
  174. package/dist/src/search-form/ox-select-field.d.ts +21 -0
  175. package/dist/src/search-form/ox-select-field.js +181 -0
  176. package/dist/src/search-form/ox-select-field.js.map +1 -0
  177. package/dist/src/search-form/ox-text-field.d.ts +11 -0
  178. package/dist/src/search-form/ox-text-field.js +60 -0
  179. package/dist/src/search-form/ox-text-field.js.map +1 -0
  180. package/dist/src/types.d.ts +138 -0
  181. package/dist/src/types.js +2 -0
  182. package/dist/src/types.js.map +1 -0
  183. package/dist/tsconfig.tsbuildinfo +1 -1
  184. package/package.json +7 -6
  185. package/src/configure/column-builder.ts +1 -0
  186. package/src/configure/config-builder.ts +1 -0
  187. package/src/configure/imex-option-builder.ts +2 -0
  188. package/src/configure/list-option-builder.ts +2 -1
  189. package/src/configure/rows-option-builder.ts +1 -0
  190. package/src/configure/{config-types.ts → zero-config.ts} +14 -0
  191. package/src/data-card/data-card-field.ts +2 -1
  192. package/src/data-card/data-card-gutter-menu.ts +3 -2
  193. package/src/data-card/data-card-gutter.ts +5 -4
  194. package/src/data-card/data-card.ts +2 -1
  195. package/src/data-card/event-handlers/record-card-click-handler.ts +2 -0
  196. package/src/data-card/event-handlers/record-card-dblclick-handler.ts +2 -0
  197. package/src/data-card/record-card.ts +2 -1
  198. package/src/data-consumer.ts +2 -0
  199. package/src/data-grid/data-grid-body.ts +2 -1
  200. package/src/data-grid/data-grid-field.ts +4 -3
  201. package/src/data-grid/data-grid-footer.ts +2 -1
  202. package/src/data-grid/data-grid-header.ts +44 -12
  203. package/src/data-grid/data-grid.ts +2 -1
  204. package/src/data-grist.ts +32 -21
  205. package/src/data-list/data-list-field.ts +5 -4
  206. package/src/data-list/data-list-gutter.ts +5 -4
  207. package/src/data-list/data-list.ts +2 -1
  208. package/src/data-list/event-handlers/record-partial-click-handler.ts +2 -0
  209. package/src/data-list/event-handlers/record-partial-dblclick-handler.ts +2 -0
  210. package/src/data-list/event-handlers/record-partial-long-press-handler.ts +2 -0
  211. package/src/data-list/record-partial.ts +2 -1
  212. package/src/data-provider.ts +2 -1
  213. package/src/data-report/data-report-body.ts +2 -1
  214. package/src/data-report/data-report-component.ts +2 -1
  215. package/src/data-report/data-report-field.ts +4 -3
  216. package/src/data-report/data-report-header.ts +2 -1
  217. package/src/data-report.ts +2 -1
  218. package/src/editors/input-editors.ts +2 -1
  219. package/src/editors/registry.ts +1 -0
  220. package/src/filters/index.ts +3 -0
  221. package/src/filters/list-select.ts +14 -0
  222. package/src/filters/registry.ts +48 -0
  223. package/src/gutters/gutter-button.ts +2 -0
  224. package/src/gutters/gutter-dirty.ts +1 -0
  225. package/src/gutters/gutter-row-selector.ts +2 -0
  226. package/src/gutters/gutter-sequence.ts +2 -0
  227. package/src/gutters/registry.ts +1 -0
  228. package/src/handlers/record-view-handler.ts +2 -0
  229. package/src/handlers/registry.ts +1 -0
  230. package/src/handlers/select-row-toggle.ts +2 -0
  231. package/src/handlers/select-row.ts +2 -0
  232. package/src/index.ts +4 -0
  233. package/src/interfaces/index.ts +2 -0
  234. package/src/interfaces/ox-grist-search-form.ts +7 -0
  235. package/src/interfaces/ox-search-field.ts +52 -0
  236. package/src/record-view/record-view-body.ts +2 -1
  237. package/src/record-view/record-view.ts +2 -1
  238. package/src/renderers/boolean-renderer.ts +1 -0
  239. package/src/renderers/color-renderer.ts +1 -0
  240. package/src/renderers/date-renderer.ts +2 -0
  241. package/src/renderers/image-renderer.ts +1 -0
  242. package/src/renderers/json5-renderer.ts +1 -0
  243. package/src/renderers/link-renderer.ts +1 -0
  244. package/src/renderers/password-renderer.ts +2 -0
  245. package/src/renderers/progress-renderer.ts +2 -0
  246. package/src/renderers/registry.ts +1 -0
  247. package/src/renderers/select-renderer.ts +2 -0
  248. package/src/renderers/text-renderer.ts +1 -0
  249. package/src/search-form/index.ts +7 -0
  250. package/src/search-form/ox-basic-field.ts +86 -0
  251. package/src/search-form/ox-checkbox-field.ts +57 -0
  252. package/src/search-form/ox-grist-search-form.ts +200 -0
  253. package/src/search-form/ox-number-field.ts +113 -0
  254. package/src/search-form/ox-search-form.ts +71 -0
  255. package/src/search-form/ox-select-field.ts +188 -0
  256. package/src/search-form/ox-text-field.ts +55 -0
  257. package/src/types.ts +169 -0
  258. package/yarn-error.log +2427 -3205
  259. package/dist/src/configure/config-types.js.map +0 -1
  260. package/src/types.d.ts +0 -144
@@ -2,8 +2,9 @@ import './data-grid-header'
2
2
  import './data-grid-body'
3
3
  import './data-grid-footer'
4
4
 
5
+ import { ColumnConfig, GristConfig, GristData, GristRecord, PaginationConfig } from '../types'
5
6
  import { LitElement, PropertyValues, css, html } from 'lit'
6
- import { ZERO_CONFIG, ZERO_DATA } from '../configure/config-types'
7
+ import { ZERO_CONFIG, ZERO_DATA } from '../configure/zero-config'
7
8
  import { customElement, property, query } from 'lit/decorators.js'
8
9
 
9
10
  import { DataGridHeader } from './data-grid-header'
package/src/data-grist.ts CHANGED
@@ -4,9 +4,10 @@ import './data-card/data-card'
4
4
  import './empty-note'
5
5
 
6
6
  import { DataConsumer, FetchHandler } from './data-consumer'
7
+ import { GristConfig, GristData, GristRecord } from './types'
7
8
  import { HeadroomStyles, ScrollbarStyles, SpinnerStyles } from '@operato/styles'
8
9
  import { LitElement, PropertyValues, css, html } from 'lit'
9
- import { ZERO_CONFIG, ZERO_DATA, ZERO_PAGINATION } from './configure/config-types'
10
+ import { ZERO_CONFIG, ZERO_DATA, ZERO_PAGINATION } from './configure/zero-config'
10
11
  import { customElement, property, query, queryAsync, state } from 'lit/decorators.js'
11
12
 
12
13
  import { DataCard } from './data-card/data-card'
@@ -87,37 +88,44 @@ export class DataGrist extends LitElement implements DataConsumer {
87
88
  @state() private _showSpinner: boolean = false
88
89
 
89
90
  private dataProvider?: DataProvider
90
- private pulltorefreshHandle?: any
91
- private headroom?: Headroom
91
+ private _pulltorefreshHandle?: any
92
+ private _headroom?: Headroom
93
+ private _resizeObserver = new ResizeObserver(entries => {
94
+ this._adjustPaddingTop()
95
+ })
92
96
 
93
97
  @query('slot[name=headroom]') head!: HTMLElement
94
98
  @query('#grist') grist!: DataGrid | DataList | DataCard
95
99
  @queryAsync('#wrap') private wrap!: Promise<HTMLElement>
96
100
 
97
- connectedCallback() {
101
+ async connectedCallback() {
98
102
  super.connectedCallback()
99
103
 
100
104
  this.dataProvider = new DataProvider(this)
105
+
106
+ await this.updateComplete
107
+ this._resizeObserver.observe(this.head)
101
108
  }
102
109
 
103
110
  disconnectedCallback() {
104
111
  super.disconnectedCallback()
105
112
 
106
113
  this.dataProvider?.dispose()
107
- this.resetPullToRefresh()
114
+ this._resetPullToRefresh()
115
+ this._resizeObserver.unobserve(this.head)
108
116
  }
109
117
 
110
- private resetPullToRefresh() {
111
- if (this.pulltorefreshHandle) {
112
- this.pulltorefreshHandle()
113
- delete this.pulltorefreshHandle
118
+ private _resetPullToRefresh() {
119
+ if (this._pulltorefreshHandle) {
120
+ this._pulltorefreshHandle()
121
+ delete this._pulltorefreshHandle
114
122
  }
115
123
  }
116
124
 
117
- private async setPullToRefresh() {
118
- this.resetPullToRefresh()
125
+ private async _setPullToRefresh() {
126
+ this._resetPullToRefresh()
119
127
  if (this.fetchHandler) {
120
- this.pulltorefreshHandle = pulltorefresh({
128
+ this._pulltorefreshHandle = pulltorefresh({
121
129
  container: await this.wrap,
122
130
  scrollable: this.grist.pullToRefreshTarget,
123
131
  refresh: () => {
@@ -127,17 +135,20 @@ export class DataGrist extends LitElement implements DataConsumer {
127
135
  }
128
136
  }
129
137
 
130
- setHeadroom() {
131
- this.headroom?.destroy()
138
+ private _adjustPaddingTop() {
139
+ this.grist.style.paddingTop = this.head.clientHeight + 'px'
140
+ }
141
+
142
+ private _setHeadroom() {
143
+ this._headroom?.destroy()
132
144
 
133
145
  if (this.grist && this.head) {
134
- var originPaddingTop = parseFloat(getComputedStyle(this.grist, null).getPropertyValue('padding-top'))
135
- this.grist.style.paddingTop = this.head.clientHeight + originPaddingTop + 'px'
146
+ this._adjustPaddingTop()
136
147
 
137
- this.headroom = new Headroom(this.head, {
148
+ this._headroom = new Headroom(this.head, {
138
149
  scroller: this.grist
139
150
  })
140
- this.headroom.init()
151
+ this._headroom.init()
141
152
  }
142
153
  }
143
154
 
@@ -227,7 +238,7 @@ export class DataGrist extends LitElement implements DataConsumer {
227
238
 
228
239
  if (changes.has('mode')) {
229
240
  needToSetPullToRefresh = true
230
- this.setHeadroom()
241
+ this._setHeadroom()
231
242
  }
232
243
 
233
244
  if (changes.has('selectedRecords')) {
@@ -250,7 +261,7 @@ export class DataGrist extends LitElement implements DataConsumer {
250
261
  }
251
262
 
252
263
  if (needToSetPullToRefresh) {
253
- await this.setPullToRefresh()
264
+ await this._setPullToRefresh()
254
265
  }
255
266
  }
256
267
 
@@ -354,7 +365,7 @@ export class DataGrist extends LitElement implements DataConsumer {
354
365
  /**
355
366
  * Forced internal data to be reflected on the screen
356
367
  * Data changing through a normal method is automatically reflected on the screen, so it is a method that does not need to be used in general.
357
- Therefore, it will be deprecated.
368
+ * Therefore, it will be deprecated.
358
369
  * @deprecated
359
370
  * @method
360
371
  */
@@ -1,5 +1,6 @@
1
+ import { ColumnConfig, GristRecord } from '../types'
1
2
  import { LitElement, css, html } from 'lit'
2
- import { ZERO_COLUMN, ZERO_RECORD } from '../configure/config-types'
3
+ import { ZERO_COLUMN, ZERO_RECORD } from '../configure/zero-config'
3
4
  import { customElement, property } from 'lit/decorators.js'
4
5
 
5
6
  @customElement('ox-list-field')
@@ -60,14 +61,14 @@ export class DataListField extends LitElement {
60
61
 
61
62
  var {
62
63
  label,
63
- record: { renderer: recordRenderer }
64
+ record: { renderer: fieldRenderer }
64
65
  } = column
65
66
 
66
67
  if (typeof label == 'object') {
67
68
  let { renderer: labelRenderer } = label
68
- return html`<label>${labelRenderer()}</label>${recordRenderer(value, column, record, rowIndex, this)}`
69
+ return html`<label>${labelRenderer()}</label>${fieldRenderer(value, column, record, rowIndex, this)}`
69
70
  } else {
70
- return html`${recordRenderer(value, column, record, rowIndex, this)}`
71
+ return html`${fieldRenderer(value, column, record, rowIndex, this)}`
71
72
  }
72
73
  }
73
74
  }
@@ -1,11 +1,12 @@
1
- import { LitElement, PropertyValues, css, html } from 'lit'
2
- import { ZERO_COLUMN, ZERO_RECORD } from '../configure/config-types'
1
+ import { ColumnConfig, GristRecord } from '../types'
2
+ import { LitElement, PropertyValues, TemplateResult, css, html } from 'lit'
3
+ import { ZERO_COLUMN, ZERO_RECORD } from '../configure/zero-config'
3
4
  import { customElement, property } from 'lit/decorators.js'
4
5
 
5
6
  const DEFAULT_TEXT_ALIGN = 'left'
6
7
 
7
8
  @customElement('ox-list-gutter')
8
- class DataListGutter extends LitElement {
9
+ export class DataListGutter extends LitElement {
9
10
  static styles = [
10
11
  css`
11
12
  :host {
@@ -45,7 +46,7 @@ class DataListGutter extends LitElement {
45
46
  return this.hasAttribute('editing')
46
47
  }
47
48
 
48
- render() {
49
+ render(): TemplateResult {
49
50
  if (!this.column) {
50
51
  return html``
51
52
  }
@@ -1,8 +1,9 @@
1
1
  import '@material/mwc-icon'
2
2
  import './record-partial'
3
3
 
4
+ import { ColumnConfig, GristConfig, GristData, GristRecord } from '../types'
4
5
  import { LitElement, PropertyValues, css, html } from 'lit'
5
- import { ZERO_CONFIG, ZERO_DATA } from '../configure/config-types'
6
+ import { ZERO_CONFIG, ZERO_DATA } from '../configure/zero-config'
6
7
  import { customElement, property } from 'lit/decorators.js'
7
8
 
8
9
  import { dataListClickHandler } from './event-handlers/data-list-click-handler'
@@ -1,3 +1,5 @@
1
+ import { ColumnConfig, GristRecord } from '../../types'
2
+
1
3
  import { RecordPartial } from '../record-partial'
2
4
 
3
5
  /**
@@ -1,3 +1,5 @@
1
+ import { ColumnConfig, GristRecord } from '../../types'
2
+
1
3
  import { RecordPartial } from '../record-partial'
2
4
 
3
5
  /**
@@ -1,3 +1,5 @@
1
+ import { ColumnConfig, GristRecord } from '../../types'
2
+
1
3
  import { RecordPartial } from '../record-partial'
2
4
 
3
5
  /**
@@ -4,8 +4,9 @@ import './data-list-gutter'
4
4
  import './data-list-field'
5
5
  import '../record-view'
6
6
 
7
+ import { GristConfig, GristData, GristRecord } from '../types'
7
8
  import { LitElement, PropertyValues, css, html } from 'lit'
8
- import { ZERO_CONFIG, ZERO_DATA, ZERO_RECORD } from '../configure/config-types'
9
+ import { ZERO_CONFIG, ZERO_DATA, ZERO_RECORD } from '../configure/zero-config'
9
10
  import { customElement, property } from 'lit/decorators.js'
10
11
 
11
12
  import { recordPartialClickHandler } from './event-handlers/record-partial-click-handler'
@@ -1,6 +1,7 @@
1
1
  import { DataConsumer, FetchHandler } from './data-consumer'
2
+ import { GristRecord, SorterConfig } from './types'
2
3
 
3
- import { ZERO_RECORDS } from './configure/config-types'
4
+ import { ZERO_RECORDS } from './configure/zero-config'
4
5
 
5
6
  function EMPTY_FETCHHANDLER() {
6
7
  return {
@@ -1,7 +1,8 @@
1
1
  import './data-report-field'
2
2
 
3
+ import { ColumnConfig, GristConfig, GristData } from '../types'
3
4
  import { LitElement, PropertyValues, html } from 'lit'
4
- import { ZERO_CONFIG, ZERO_DATA } from '../configure/config-types'
5
+ import { ZERO_CONFIG, ZERO_DATA } from '../configure/zero-config'
5
6
  import { customElement, property } from 'lit/decorators.js'
6
7
 
7
8
  import { dataReportBodyClickHandler } from './event-handlers/data-report-body-click-handler'
@@ -1,8 +1,9 @@
1
1
  import './data-report-header'
2
2
  import './data-report-body'
3
3
 
4
+ import { ColumnConfig, GristConfig, GristData } from '../types'
4
5
  import { LitElement, PropertyValues, css, html } from 'lit'
5
- import { ZERO_CONFIG, ZERO_DATA } from '../configure/config-types'
6
+ import { ZERO_CONFIG, ZERO_DATA } from '../configure/zero-config'
6
7
  import { customElement, property, query } from 'lit/decorators.js'
7
8
 
8
9
  import { ScrollbarStyles } from '@operato/styles'
@@ -1,5 +1,6 @@
1
- import { LitElement, PropertyValues, css, html } from 'lit'
2
- import { ZERO_COLUMN, ZERO_RECORD } from '../configure/config-types'
1
+ import { ColumnConfig, GristRecord } from '../types'
2
+ import { LitElement, PropertyValues, TemplateResult, css, html } from 'lit'
3
+ import { ZERO_COLUMN, ZERO_RECORD } from '../configure/zero-config'
3
4
  import { customElement, property } from 'lit/decorators.js'
4
5
 
5
6
  const DEFAULT_TEXT_ALIGN = 'left'
@@ -51,7 +52,7 @@ export class DataReportField extends LitElement {
51
52
  @property({ type: Number }) columnIndex: number = -1
52
53
  @property({ type: Object }) value: any
53
54
 
54
- render() {
55
+ render(): TemplateResult {
55
56
  if (!this.column) {
56
57
  return html``
57
58
  }
@@ -1,5 +1,6 @@
1
+ import { ColumnConfig, GristConfig, GristData, SortersConfig } from '../types'
1
2
  import { LitElement, css, html } from 'lit'
2
- import { ZERO_CONFIG, ZERO_DATA } from '../configure/config-types'
3
+ import { ZERO_CONFIG, ZERO_DATA } from '../configure/zero-config'
3
4
  import { customElement, property } from 'lit/decorators.js'
4
5
 
5
6
  import { supportsPassive } from '../utils'
@@ -1,8 +1,9 @@
1
1
  import './data-report/data-report-component'
2
2
 
3
+ import { GristConfig, GristData, GristRecord, GroupConfig } from './types'
3
4
  import { LitElement, PropertyValues, css, html } from 'lit'
4
5
  import { ScrollbarStyles, SpinnerStyles } from '@operato/styles'
5
- import { ZERO_CONFIG, ZERO_DATA, ZERO_PAGINATION } from './configure/config-types'
6
+ import { ZERO_CONFIG, ZERO_DATA, ZERO_PAGINATION } from './configure/zero-config'
6
7
  import { customElement, property, query, queryAsync, state } from 'lit/decorators.js'
7
8
 
8
9
  import { DataConsumer } from './data-consumer'
@@ -1,5 +1,6 @@
1
+ import { ColumnConfig, GristRecord } from '../types'
1
2
  import { LitElement, css, html } from 'lit'
2
- import { ZERO_COLUMN, ZERO_RECORD } from '../configure/config-types'
3
+ import { ZERO_COLUMN, ZERO_RECORD } from '../configure/zero-config'
3
4
  import { customElement, property, query } from 'lit/decorators.js'
4
5
 
5
6
  import { DataGridField } from '../data-grid/data-grid-field'
@@ -15,6 +15,7 @@ import {
15
15
  TimeInput,
16
16
  WeekInput
17
17
  } from './input-editors'
18
+ import { ColumnConfig, FieldEditor, GristRecord } from '../types'
18
19
 
19
20
  import { DataGridField } from '../data-grid/data-grid-field'
20
21
 
@@ -0,0 +1,3 @@
1
+ export * from './registry'
2
+
3
+ export * from './list-select'
@@ -0,0 +1,14 @@
1
+ import '@operato/popup'
2
+
3
+ import { FilterSelectRenderer } from '../types'
4
+ import { html } from 'lit-html'
5
+
6
+ export const ListSelect: FilterSelectRenderer = (column, owner) => {
7
+ const options = column.filter?.options
8
+
9
+ return html`
10
+ <ox-popup-list .config=${column} multiple attr-selected="checked" popup>
11
+ ${options?.map((option: string) => html` <ox-checkbox option value="${option}">${option}</ox-checkbox> `)}
12
+ </ox-popup-list>
13
+ `
14
+ }
@@ -0,0 +1,48 @@
1
+ import { FilterSelectRenderer } from '../types'
2
+ import { ListSelect } from './list-select'
3
+
4
+ var RENDERERS: {
5
+ [name: string]: FilterSelectRenderer
6
+ } = {
7
+ string: ListSelect,
8
+ text: ListSelect,
9
+ email: ListSelect,
10
+ tel: ListSelect,
11
+ password: ListSelect,
12
+ integer: ListSelect,
13
+ float: ListSelect,
14
+ number: ListSelect,
15
+ select: ListSelect,
16
+ boolean: ListSelect,
17
+ checkbox: ListSelect,
18
+ month: ListSelect,
19
+ week: ListSelect,
20
+ date: ListSelect,
21
+ time: ListSelect,
22
+ datetime: ListSelect,
23
+ color: ListSelect,
24
+ progress: ListSelect,
25
+ link: ListSelect,
26
+ image: ListSelect,
27
+ json5: ListSelect
28
+ }
29
+
30
+ export function registerRenderer(type: string, renderer: FilterSelectRenderer) {
31
+ RENDERERS[type] = renderer
32
+ }
33
+
34
+ export function unregisterRenderer(type: string): void {
35
+ delete RENDERERS[type]
36
+ }
37
+
38
+ export function getRenderers(): { [name: string]: FilterSelectRenderer } {
39
+ return { ...RENDERERS }
40
+ }
41
+
42
+ export function getRenderer(type: string | FilterSelectRenderer): FilterSelectRenderer {
43
+ if (typeof type == 'function') {
44
+ return type
45
+ }
46
+
47
+ return RENDERERS[type || 'text'] || ListSelect
48
+ }
@@ -1,5 +1,7 @@
1
1
  import '@material/mwc-icon'
2
2
 
3
+ import { FieldRenderer, HeaderRenderer } from '../types'
4
+
3
5
  import { html } from 'lit'
4
6
 
5
7
  export class GutterButton {
@@ -1,5 +1,6 @@
1
1
  import '@material/mwc-icon'
2
2
 
3
+ import { ColumnConfig, FieldRenderer } from '../types'
3
4
  import { LitElement, css, html } from 'lit'
4
5
  import { customElement, property } from 'lit/decorators.js'
5
6
 
@@ -1,3 +1,5 @@
1
+ import { FieldRenderer, HeaderRenderer } from '../types'
2
+
1
3
  import { DataCard } from '../data-card/data-card'
2
4
  import { DataGrid } from '../data-grid/data-grid'
3
5
  import { DataList } from '../data-list/data-list'
@@ -1,3 +1,5 @@
1
+ import { ColumnWidthCallback, FieldRenderer } from '../types'
2
+
1
3
  import { DataCard } from '../data-card/data-card'
2
4
  import { DataGrid } from '../data-grid/data-grid'
3
5
  import { DataList } from '../data-list/data-list'
@@ -1,3 +1,4 @@
1
+ import { ColumnConfig } from '../types'
1
2
  import { GutterButton } from './gutter-button'
2
3
  import { GutterDirty } from './gutter-dirty'
3
4
  import { GutterRowSelector } from './gutter-row-selector'
@@ -1,5 +1,7 @@
1
1
  import '../record-view/record-view'
2
2
 
3
+ import { ColumnConfig, GristData, GristRecord } from '../types'
4
+
3
5
  import { DataGridField } from '../data-grid/data-grid-field'
4
6
  import { html } from 'lit'
5
7
 
@@ -1,3 +1,4 @@
1
+ import { GristEventHandler } from '../types'
1
2
  import { RecordViewHandler } from './record-view-handler'
2
3
  import { SelectRow } from './select-row'
3
4
  import { SelectRowToggle } from './select-row-toggle'
@@ -1,3 +1,5 @@
1
+ import { ColumnConfig, GristData, GristRecord } from '../types'
2
+
1
3
  import { DataGridField } from '../data-grid/data-grid-field'
2
4
 
3
5
  /*
@@ -1,3 +1,5 @@
1
+ import { ColumnConfig, GristData, GristRecord } from '../types'
2
+
1
3
  import { DataGridField } from '../data-grid/data-grid-field'
2
4
 
3
5
  /*
package/src/index.ts CHANGED
@@ -1,3 +1,4 @@
1
+ export * from './configure/zero-config'
1
2
  export * from './data-grist'
2
3
  export * from './data-report'
3
4
 
@@ -6,3 +7,6 @@ export * from './renderers'
6
7
  export * from './handlers'
7
8
  export * from './formatters'
8
9
  export * from './gutters'
10
+
11
+ export * from './interfaces'
12
+ export * from './search-form'
@@ -0,0 +1,2 @@
1
+ export * from './ox-search-field'
2
+ export * from './ox-grist-search-form'
@@ -0,0 +1,7 @@
1
+ export type QueryFilterRangeValue = [from: number, to: number]
2
+
3
+ export type QueryFilter = {
4
+ name: string
5
+ operator?: string
6
+ value: any
7
+ }
@@ -0,0 +1,52 @@
1
+ export type OXSearchFieldType = 'select' | 'checkbox' | 'text' | 'number'
2
+
3
+ export interface OXFieldOptionProps {
4
+ name?: string
5
+ value: string
6
+ }
7
+
8
+ export interface OXBasicFieldProps {
9
+ name: string
10
+ type?: OXSearchFieldType
11
+ hidden?: boolean
12
+ id?: string
13
+ placeholder?: string
14
+ handlers?: Record<string, (event: Event) => void>
15
+ defaultValue?: any
16
+ operator?: string
17
+ }
18
+
19
+ export interface OXTextFieldProps extends OXBasicFieldProps {
20
+ defaultValue?: string
21
+ }
22
+
23
+ export interface OXNumberFieldProps extends OXBasicFieldProps {
24
+ min?: number
25
+ max?: number
26
+ step: number
27
+ defaultValue?: number
28
+ }
29
+
30
+ export interface OXObjectFieldProps extends OXBasicFieldProps {
31
+ field: string
32
+ queryName: string
33
+ defaultValue?: Record<string, any>
34
+ }
35
+
36
+ export interface OXSelectFieldProps extends OXBasicFieldProps {
37
+ searchEnable?: boolean
38
+ options: OXFieldOptionProps[]
39
+ defaultValue?: any
40
+ }
41
+
42
+ export interface OXCheckboxFieldProps extends OXBasicFieldProps {
43
+ indeterminate?: boolean
44
+ defaultValue?: boolean
45
+ }
46
+
47
+ export type OXSearchFieldProps =
48
+ | OXTextFieldProps
49
+ | OXNumberFieldProps
50
+ | OXObjectFieldProps
51
+ | OXSelectFieldProps
52
+ | OXCheckboxFieldProps
@@ -1,11 +1,12 @@
1
1
  import '@material/mwc-icon'
2
2
  import '../data-grid/data-grid-field'
3
3
 
4
+ import { ColumnConfig, GristRecord } from '../types'
4
5
  import { LitElement, css, html } from 'lit'
5
6
  import { customElement, property } from 'lit/decorators.js'
6
7
 
7
8
  import { DataGridField } from '../data-grid/data-grid-field'
8
- import { ZERO_RECORD } from '../configure/config-types'
9
+ import { ZERO_RECORD } from '../configure/zero-config'
9
10
 
10
11
  const KEY_ENTER = 13
11
12
  const KEY_ESC = 27
@@ -1,10 +1,11 @@
1
1
  import '@material/mwc-icon'
2
2
  import './record-view-body'
3
3
 
4
+ import { ColumnConfig, GristRecord } from '../types'
4
5
  import { LitElement, css, html } from 'lit'
5
6
  import { customElement, property } from 'lit/decorators.js'
6
7
 
7
- import { ZERO_RECORD } from '../configure/config-types'
8
+ import { ZERO_RECORD } from '../configure/zero-config'
8
9
 
9
10
  @customElement('ox-record-view')
10
11
  export class RecordView extends LitElement {
@@ -1,3 +1,4 @@
1
+ import { FieldRenderer } from '../types'
1
2
  import { html } from 'lit'
2
3
 
3
4
  export const BooleanRenderer: FieldRenderer = (value, column, record, rowIndex, field) => {
@@ -1,3 +1,4 @@
1
+ import { FieldRenderer } from '../types'
1
2
  import { html } from 'lit'
2
3
 
3
4
  export const ColorRenderer: FieldRenderer = (value, column, record, rowIndex, field) => {
@@ -1,3 +1,5 @@
1
+ import { FieldRenderer } from '../types'
2
+
1
3
  // TODO 로케일 설정에 따라서 포맷이 바뀌도록 해야한다.
2
4
  const DATETIME_OPTIONS = {
3
5
  year: 'numeric',
@@ -1,3 +1,4 @@
1
+ import { FieldRenderer } from '../types'
1
2
  import { html } from 'lit'
2
3
 
3
4
  export const ImageRenderer: FieldRenderer = (value, column, record, rowIndex, field) => {
@@ -1,3 +1,4 @@
1
+ import { FieldRenderer } from '../types'
1
2
  import JSON5 from 'json5'
2
3
  import { html } from 'lit'
3
4
 
@@ -1,3 +1,4 @@
1
+ import { FieldRenderer } from '../types'
1
2
  import { html } from 'lit'
2
3
 
3
4
  export const LinkRenderer: FieldRenderer = (value, column, record, rowIndex, field) => {
@@ -1,3 +1,5 @@
1
+ import { FieldRenderer } from '../types'
2
+
1
3
  export const PasswordRenderer: FieldRenderer = (value, column, record, rowIndex, field) => {
2
4
  return Array(String(value).length).fill('*').join('')
3
5
  }
@@ -1,6 +1,8 @@
1
1
  import { LitElement, css, html } from 'lit'
2
2
  import { customElement, property } from 'lit/decorators.js'
3
3
 
4
+ import { FieldRenderer } from '../types'
5
+
4
6
  @customElement('ox-grist-progress-renderer')
5
7
  class DataGristProgressRenderer extends LitElement {
6
8
  static styles = css`
@@ -1,6 +1,7 @@
1
1
  import { BooleanRenderer } from './boolean-renderer'
2
2
  import { ColorRenderer } from './color-renderer'
3
3
  import { DateRenderer } from './date-renderer'
4
+ import { FieldRenderer } from '../types'
4
5
  import { ImageRenderer } from './image-renderer'
5
6
  import { Json5Renderer } from './json5-renderer'
6
7
  import { LinkRenderer } from './link-renderer'
@@ -1,3 +1,5 @@
1
+ import { FieldRenderer } from '../types'
2
+
1
3
  export const SelectRenderer: FieldRenderer = (value, column, record, rowIndex, field) => {
2
4
  if (!value) {
3
5
  return ''
@@ -1,3 +1,4 @@
1
+ import { FieldRenderer } from '../types'
1
2
  import { html } from 'lit'
2
3
 
3
4
  export const TextRenderer: FieldRenderer = (value, column, record, rowIndex, field) => {