@operato/data-grist 0.3.14 → 0.3.18

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 (127) hide show
  1. package/CHANGELOG.md +47 -0
  2. package/assets/images/no-image.png +0 -0
  3. package/custom-elements.json +2063 -1488
  4. package/demo/index.html +37 -79
  5. package/dist/src/configure/column-builder.js +26 -2
  6. package/dist/src/configure/column-builder.js.map +1 -1
  7. package/dist/src/data-card/data-card.d.ts +3 -6
  8. package/dist/src/data-card/data-card.js +3 -131
  9. package/dist/src/data-card/data-card.js.map +1 -1
  10. package/dist/src/data-card/record-card.d.ts +0 -3
  11. package/dist/src/data-card/record-card.js +7 -62
  12. package/dist/src/data-card/record-card.js.map +1 -1
  13. package/dist/src/data-grid/data-grid-body.d.ts +7 -1
  14. package/dist/src/data-grid/data-grid-body.js +26 -5
  15. package/dist/src/data-grid/data-grid-body.js.map +1 -1
  16. package/dist/src/data-grid/data-grid-field.js +1 -1
  17. package/dist/src/data-grid/data-grid-field.js.map +1 -1
  18. package/dist/src/data-grid/data-grid-header.d.ts +1 -0
  19. package/dist/src/data-grid/data-grid-header.js +11 -3
  20. package/dist/src/data-grid/data-grid-header.js.map +1 -1
  21. package/dist/src/data-grid/data-grid.d.ts +8 -4
  22. package/dist/src/data-grid/data-grid.js +12 -132
  23. package/dist/src/data-grid/data-grid.js.map +1 -1
  24. package/dist/src/data-grist.d.ts +1 -0
  25. package/dist/src/data-grist.js +8 -0
  26. package/dist/src/data-grist.js.map +1 -1
  27. package/dist/src/data-list/data-list.d.ts +3 -6
  28. package/dist/src/data-list/data-list.js +3 -131
  29. package/dist/src/data-list/data-list.js.map +1 -1
  30. package/dist/src/data-list/record-partial.d.ts +0 -2
  31. package/dist/src/data-list/record-partial.js +7 -58
  32. package/dist/src/data-list/record-partial.js.map +1 -1
  33. package/dist/src/data-manipulator.d.ts +20 -0
  34. package/dist/src/data-manipulator.js +148 -0
  35. package/dist/src/data-manipulator.js.map +1 -0
  36. package/dist/src/editors/image-input.d.ts +7 -0
  37. package/dist/src/editors/image-input.js +31 -0
  38. package/dist/src/editors/image-input.js.map +1 -0
  39. package/dist/src/editors/index.d.ts +1 -0
  40. package/dist/src/editors/index.js +1 -0
  41. package/dist/src/editors/index.js.map +1 -1
  42. package/dist/src/editors/input-editors.d.ts +1 -8
  43. package/dist/src/editors/input-editors.js +3 -47
  44. package/dist/src/editors/input-editors.js.map +1 -1
  45. package/dist/src/editors/registry.js +2 -1
  46. package/dist/src/editors/registry.js.map +1 -1
  47. package/dist/src/filters/filter-checkbox.js +2 -2
  48. package/dist/src/filters/filter-checkbox.js.map +1 -1
  49. package/dist/src/filters/filter-input.js +1 -1
  50. package/dist/src/filters/filter-input.js.map +1 -1
  51. package/dist/src/filters/filter-range-date.js +1 -1
  52. package/dist/src/filters/filter-range-date.js.map +1 -1
  53. package/dist/src/filters/filter-range-number.js +1 -1
  54. package/dist/src/filters/filter-range-number.js.map +1 -1
  55. package/dist/src/filters/filter-select.js +2 -2
  56. package/dist/src/filters/filter-select.js.map +1 -1
  57. package/dist/src/filters/filters-form.d.ts +9 -5
  58. package/dist/src/filters/filters-form.js +63 -15
  59. package/dist/src/filters/filters-form.js.map +1 -1
  60. package/dist/src/handlers/record-view-handler.d.ts +1 -2
  61. package/dist/src/handlers/record-view-handler.js +5 -35
  62. package/dist/src/handlers/record-view-handler.js.map +1 -1
  63. package/dist/src/handlers/select-row-toggle.d.ts +1 -1
  64. package/dist/src/handlers/select-row-toggle.js.map +1 -1
  65. package/dist/src/record-view/event-handlers/record-view-body-click-handler.d.ts +7 -0
  66. package/dist/src/record-view/event-handlers/record-view-body-click-handler.js +24 -0
  67. package/dist/src/record-view/event-handlers/record-view-body-click-handler.js.map +1 -0
  68. package/dist/src/record-view/event-handlers/record-view-body-keydown-handler.d.ts +7 -0
  69. package/dist/src/record-view/event-handlers/record-view-body-keydown-handler.js +22 -0
  70. package/dist/src/record-view/event-handlers/record-view-body-keydown-handler.js.map +1 -0
  71. package/dist/src/record-view/index.d.ts +1 -0
  72. package/dist/src/record-view/index.js +1 -0
  73. package/dist/src/record-view/index.js.map +1 -1
  74. package/dist/src/record-view/record-creator.d.ts +16 -0
  75. package/dist/src/record-view/record-creator.js +145 -0
  76. package/dist/src/record-view/record-creator.js.map +1 -0
  77. package/dist/src/record-view/record-view-body.d.ts +3 -4
  78. package/dist/src/record-view/record-view-body.js +15 -39
  79. package/dist/src/record-view/record-view-body.js.map +1 -1
  80. package/dist/src/record-view/record-view-handler.d.ts +9 -0
  81. package/dist/src/record-view/record-view-handler.js +57 -0
  82. package/dist/src/record-view/record-view-handler.js.map +1 -0
  83. package/dist/src/record-view/record-view.d.ts +4 -3
  84. package/dist/src/record-view/record-view.js +20 -55
  85. package/dist/src/record-view/record-view.js.map +1 -1
  86. package/dist/src/renderers/image-renderer.js +12 -4
  87. package/dist/src/renderers/image-renderer.js.map +1 -1
  88. package/dist/src/sorters/sorters-control.d.ts +12 -0
  89. package/dist/src/sorters/sorters-control.js +106 -0
  90. package/dist/src/sorters/sorters-control.js.map +1 -0
  91. package/dist/src/types.d.ts +6 -4
  92. package/dist/src/types.js.map +1 -1
  93. package/dist/tsconfig.tsbuildinfo +1 -1
  94. package/package.json +10 -8
  95. package/src/configure/column-builder.ts +29 -3
  96. package/src/data-card/data-card.ts +4 -158
  97. package/src/data-card/record-card.ts +14 -78
  98. package/src/data-grid/data-grid-body.ts +43 -6
  99. package/src/data-grid/data-grid-field.ts +1 -1
  100. package/src/data-grid/data-grid-header.ts +15 -5
  101. package/src/data-grid/data-grid.ts +25 -143
  102. package/src/data-grist.ts +12 -0
  103. package/src/data-list/data-list.ts +4 -158
  104. package/src/data-list/record-partial.ts +14 -73
  105. package/src/data-manipulator.ts +201 -0
  106. package/src/editors/image-input.ts +29 -0
  107. package/src/editors/index.ts +1 -0
  108. package/src/editors/input-editors.ts +5 -48
  109. package/src/editors/registry.ts +1 -1
  110. package/src/filters/filter-checkbox.ts +3 -2
  111. package/src/filters/filter-input.ts +3 -3
  112. package/src/filters/filter-range-date.ts +3 -3
  113. package/src/filters/filter-range-number.ts +3 -3
  114. package/src/filters/filter-select.ts +3 -2
  115. package/src/filters/filters-form.ts +77 -41
  116. package/src/handlers/record-view-handler.ts +8 -44
  117. package/src/handlers/select-row-toggle.ts +1 -2
  118. package/src/record-view/event-handlers/record-view-body-click-handler.ts +30 -0
  119. package/src/record-view/event-handlers/record-view-body-keydown-handler.ts +26 -0
  120. package/src/record-view/index.ts +1 -0
  121. package/src/record-view/record-creator.ts +180 -0
  122. package/src/record-view/record-view-body.ts +16 -52
  123. package/src/record-view/record-view-handler.ts +86 -0
  124. package/src/record-view/record-view.ts +21 -55
  125. package/src/renderers/image-renderer.ts +14 -5
  126. package/src/sorters/sorters-control.ts +111 -0
  127. package/src/types.ts +41 -31
@@ -0,0 +1,111 @@
1
+ import { css, html, LitElement, PropertyValues, TemplateResult } from 'lit'
2
+ import { customElement, state } from 'lit/decorators.js'
3
+
4
+ import { DataGrist } from '../data-grist'
5
+ import { ColumnConfig, GristConfig, SorterConfig } from '../types'
6
+
7
+ @customElement('ox-sorters-control')
8
+ export class SortersControl extends LitElement {
9
+ static styles = [
10
+ css`
11
+ :host {
12
+ display: block;
13
+ }
14
+ `
15
+ ]
16
+
17
+ @state() config!: GristConfig
18
+ @state() columns: ColumnConfig[] = []
19
+ @state() sorters: SorterConfig[] = []
20
+
21
+ connectedCallback(): void {
22
+ super.connectedCallback()
23
+
24
+ const grist = this.closest('ox-grist') as DataGrist
25
+
26
+ if (grist) {
27
+ this.config = grist.config
28
+
29
+ this.closest('ox-grist')?.addEventListener('sorters-change', e => {
30
+ this.sorters = (e as CustomEvent).detail as SorterConfig[]
31
+ })
32
+ }
33
+ }
34
+
35
+ updated(changes: PropertyValues<this>) {
36
+ if (changes.has('config')) {
37
+ const sorters = this.config.sorters || []
38
+
39
+ this.columns = sorters
40
+ .map(({ name }) => this.config.columns.find(column => column.name === name))
41
+ .filter(column => !!column) as ColumnConfig[]
42
+
43
+ this.sorters = this.config.sorters || []
44
+ }
45
+ }
46
+
47
+ render(): TemplateResult {
48
+ const columns = this.columns
49
+
50
+ const current = this.sorters || []
51
+
52
+ return html`
53
+ ${columns.map(column => {
54
+ const { name } = column
55
+ var rank = current.findIndex(sorter => sorter.name === name) + 1
56
+ var desc = rank !== 0 ? current[rank - 1].desc : null
57
+
58
+ if (current.length <= 1) {
59
+ rank = 0
60
+ }
61
+
62
+ return html`
63
+ <div
64
+ option
65
+ @click=${(e: MouseEvent) => {
66
+ this.onChangeSort(name)
67
+ }}
68
+ >
69
+ ${column.header /*.renderer.call(this, column) */}
70
+ ${desc === null
71
+ ? html``
72
+ : html`
73
+ <mwc-icon>${desc ? 'keyboard_arrow_up' : 'keyboard_arrow_down'}</mwc-icon>
74
+ ${rank === 0 ? html`` : html`<sub>${rank}</sub>`}
75
+ `}
76
+ </div>
77
+ `
78
+ })}
79
+ `
80
+ }
81
+
82
+ onChangeSort(name: string) {
83
+ var sorters = [...this.sorters]
84
+
85
+ var idx = sorters.findIndex(sorter => sorter.name == name)
86
+ if (idx !== -1) {
87
+ let sorter = sorters[idx]
88
+ if (sorter.desc) {
89
+ sorters.splice(idx, 1)
90
+ } else {
91
+ sorter.desc = true
92
+ }
93
+ } else {
94
+ var sorter = {
95
+ name
96
+ }
97
+
98
+ sorters.push(sorter)
99
+ }
100
+
101
+ this.sorters = sorters
102
+
103
+ this.dispatchEvent(
104
+ new CustomEvent('sorters-change', {
105
+ bubbles: true,
106
+ composed: true,
107
+ detail: this.sorters
108
+ })
109
+ )
110
+ }
111
+ }
package/src/types.ts CHANGED
@@ -19,36 +19,38 @@ export type GristConfig = {
19
19
 
20
20
  export type SorterConfig = { name: string; desc?: boolean }
21
21
  export type SortersConfig = SorterConfig[]
22
- export type FilterConfig =
23
- | {
24
- type: string
25
- operator?:
26
- | 'eq'
27
- | 'between'
28
- | 'gte'
29
- | 'lte'
30
- | 'is_not_true'
31
- | 'in'
32
- | 'like'
33
- | 'i_like'
34
- | 'noteq'
35
- | 'is_empty_num_id'
36
- | 'is_blank'
37
- | 'is_present'
38
- | 'is_not_false'
39
- | 'is_true'
40
- | 'is_false'
41
- | 'is_not_null'
42
- | 'is_null'
43
- | 'notin_with_null'
44
- | 'notin'
45
- | 'gt'
46
- | 'lt'
47
- | 'i_nlike'
48
- | 'nlike'
49
- options?: { [key: string]: any }
50
- }
51
- | boolean
22
+ export type FilterOperator =
23
+ | 'search'
24
+ | 'eq'
25
+ | 'between'
26
+ | 'gte'
27
+ | 'lte'
28
+ | 'is_not_true'
29
+ | 'in'
30
+ | 'like'
31
+ | 'i_like'
32
+ | 'noteq'
33
+ | 'is_empty_num_id'
34
+ | 'is_blank'
35
+ | 'is_present'
36
+ | 'is_not_false'
37
+ | 'is_true'
38
+ | 'is_false'
39
+ | 'is_not_null'
40
+ | 'is_null'
41
+ | 'notin_with_null'
42
+ | 'notin'
43
+ | 'gt'
44
+ | 'lt'
45
+ | 'i_nlike'
46
+ | 'nlike'
47
+
48
+ export type FilterConfigObject = {
49
+ type: string
50
+ operator?: FilterOperator
51
+ options?: { [key: string]: any }
52
+ }
53
+ export type FilterConfig = FilterConfigObject | FilterOperator | boolean
52
54
 
53
55
  export type PaginationConfig = {
54
56
  page?: number
@@ -126,7 +128,15 @@ export type FieldRenderer = (
126
128
  column: ColumnConfig,
127
129
  record: GristRecord,
128
130
  rowIndex: number,
129
- owner: RecordCard | DataCardGutter | DataCardField | DataListGutter | DataListField | RecordPartial | DataReportField
131
+ owner:
132
+ | RecordCard
133
+ | DataCardGutter
134
+ | DataCardField
135
+ | DataListGutter
136
+ | DataListField
137
+ | RecordPartial
138
+ | DataReportField
139
+ | Element
130
140
  ) => TemplateResult | string | void
131
141
  export type FieldEditor = (
132
142
  value: any,