@operato/data-grist 8.0.0-beta.0 → 8.0.0-beta.2

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 (168) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/package.json +10 -10
  3. package/.storybook/main.js +0 -3
  4. package/.storybook/preview.js +0 -52
  5. package/.storybook/server.mjs +0 -8
  6. package/demo/data-grist-test.html +0 -468
  7. package/demo/favicon.ico +0 -0
  8. package/demo/index.html +0 -541
  9. package/demo/report-test.html +0 -249
  10. package/src/accumulator/accumulator.ts +0 -63
  11. package/src/configure/column-builder.ts +0 -114
  12. package/src/configure/config-builder.ts +0 -40
  13. package/src/configure/filters-option-builder.ts +0 -8
  14. package/src/configure/imex-option-builder.ts +0 -5
  15. package/src/configure/list-option-builder.ts +0 -9
  16. package/src/configure/rows-option-builder.ts +0 -38
  17. package/src/configure/tree-option-builder.ts +0 -22
  18. package/src/configure/zero-config.ts +0 -83
  19. package/src/const.ts +0 -1
  20. package/src/data-card/data-card-field.ts +0 -94
  21. package/src/data-card/data-card-gutter-menu.ts +0 -94
  22. package/src/data-card/data-card-gutter.ts +0 -103
  23. package/src/data-card/data-card.ts +0 -154
  24. package/src/data-card/event-handlers/record-card-click-handler.ts +0 -34
  25. package/src/data-card/event-handlers/record-card-dblclick-handler.ts +0 -34
  26. package/src/data-card/record-card.ts +0 -298
  27. package/src/data-consumer.ts +0 -11
  28. package/src/data-grid/data-grid-accum-field.ts +0 -109
  29. package/src/data-grid/data-grid-body-style.ts +0 -85
  30. package/src/data-grid/data-grid-body.ts +0 -765
  31. package/src/data-grid/data-grid-field.ts +0 -227
  32. package/src/data-grid/data-grid-footer.ts +0 -119
  33. package/src/data-grid/data-grid-header.ts +0 -578
  34. package/src/data-grid/data-grid.ts +0 -293
  35. package/src/data-grid/event-handlers/data-grid-body-click-handler.ts +0 -69
  36. package/src/data-grid/event-handlers/data-grid-body-contextmenu-handler.ts +0 -32
  37. package/src/data-grid/event-handlers/data-grid-body-dblclick-handler.ts +0 -42
  38. package/src/data-grid/event-handlers/data-grid-body-focus-change-handler.ts +0 -24
  39. package/src/data-grid/event-handlers/data-grid-body-keydown-handler.ts +0 -234
  40. package/src/data-grist.ts +0 -1233
  41. package/src/data-list/data-list-field.ts +0 -82
  42. package/src/data-list/data-list-gutter.ts +0 -108
  43. package/src/data-list/data-list.ts +0 -145
  44. package/src/data-list/event-handlers/record-partial-click-handler.ts +0 -34
  45. package/src/data-list/event-handlers/record-partial-dblclick-handler.ts +0 -33
  46. package/src/data-list/event-handlers/record-partial-long-press-handler.ts +0 -33
  47. package/src/data-list/record-partial.ts +0 -264
  48. package/src/data-manipulator.ts +0 -426
  49. package/src/data-provider.ts +0 -271
  50. package/src/data-report/data-report-body-style.ts +0 -58
  51. package/src/data-report/data-report-body.ts +0 -189
  52. package/src/data-report/data-report-component.ts +0 -138
  53. package/src/data-report/data-report-field.ts +0 -83
  54. package/src/data-report/data-report-header.ts +0 -242
  55. package/src/data-report/event-handlers/data-report-body-click-handler.ts +0 -38
  56. package/src/data-report/event-handlers/data-report-body-dblclick-handler.ts +0 -25
  57. package/src/data-report/event-handlers/data-report-body-keydown-handler.ts +0 -68
  58. package/src/data-report.ts +0 -424
  59. package/src/editors/index.ts +0 -4
  60. package/src/editors/ox-grist-editor-checkbox.ts +0 -28
  61. package/src/editors/ox-grist-editor-color.ts +0 -10
  62. package/src/editors/ox-grist-editor-date.ts +0 -10
  63. package/src/editors/ox-grist-editor-datetime.ts +0 -27
  64. package/src/editors/ox-grist-editor-email.ts +0 -10
  65. package/src/editors/ox-grist-editor-file.ts +0 -28
  66. package/src/editors/ox-grist-editor-image.ts +0 -31
  67. package/src/editors/ox-grist-editor-month.ts +0 -10
  68. package/src/editors/ox-grist-editor-multiple-select.ts +0 -57
  69. package/src/editors/ox-grist-editor-number.ts +0 -27
  70. package/src/editors/ox-grist-editor-password.ts +0 -10
  71. package/src/editors/ox-grist-editor-select.ts +0 -55
  72. package/src/editors/ox-grist-editor-tel.ts +0 -10
  73. package/src/editors/ox-grist-editor-text.ts +0 -14
  74. package/src/editors/ox-grist-editor-textarea.ts +0 -16
  75. package/src/editors/ox-grist-editor-time.ts +0 -10
  76. package/src/editors/ox-grist-editor-tree.ts +0 -27
  77. package/src/editors/ox-grist-editor-varname.ts +0 -36
  78. package/src/editors/ox-grist-editor-week.ts +0 -10
  79. package/src/editors/ox-grist-editor.ts +0 -207
  80. package/src/editors/ox-input-tree.ts +0 -226
  81. package/src/editors/registry.ts +0 -82
  82. package/src/empty-note.ts +0 -46
  83. package/src/filters/filter-checkbox.ts +0 -49
  84. package/src/filters/filter-input-barcode.ts +0 -34
  85. package/src/filters/filter-input.ts +0 -30
  86. package/src/filters/filter-range-date.ts +0 -81
  87. package/src/filters/filter-range-number.ts +0 -64
  88. package/src/filters/filter-select-buttons.ts +0 -60
  89. package/src/filters/filter-select.ts +0 -68
  90. package/src/filters/filter-styles.ts +0 -119
  91. package/src/filters/filters-form.ts +0 -476
  92. package/src/filters/index.ts +0 -10
  93. package/src/filters/registry.ts +0 -56
  94. package/src/formatters/date-formatter.ts +0 -3
  95. package/src/formatters/index.ts +0 -1
  96. package/src/formatters/number-formatter.ts +0 -3
  97. package/src/formatters/registry.ts +0 -30
  98. package/src/formatters/text-formatter.ts +0 -3
  99. package/src/gutters/gutter-button.ts +0 -51
  100. package/src/gutters/gutter-dirty.ts +0 -96
  101. package/src/gutters/gutter-row-selector.ts +0 -89
  102. package/src/gutters/gutter-sequence.ts +0 -54
  103. package/src/gutters/index.ts +0 -1
  104. package/src/gutters/registry.ts +0 -32
  105. package/src/handlers/contextmenu-tree-mutation.ts +0 -80
  106. package/src/handlers/index.ts +0 -1
  107. package/src/handlers/move-down.ts +0 -44
  108. package/src/handlers/move-up.ts +0 -44
  109. package/src/handlers/record-copy.ts +0 -38
  110. package/src/handlers/record-delete.ts +0 -30
  111. package/src/handlers/record-view-handler.ts +0 -27
  112. package/src/handlers/registry.ts +0 -42
  113. package/src/handlers/select-row-toggle.ts +0 -30
  114. package/src/handlers/select-row.ts +0 -27
  115. package/src/index.ts +0 -17
  116. package/src/personalizer/index.ts +0 -1
  117. package/src/personalizer/ox-grist-filter-personalizer.ts +0 -192
  118. package/src/personalizer/ox-grist-personalizer.ts +0 -226
  119. package/src/record-view/event-handlers/record-view-body-click-handler.ts +0 -33
  120. package/src/record-view/event-handlers/record-view-body-keydown-handler.ts +0 -26
  121. package/src/record-view/index.ts +0 -2
  122. package/src/record-view/ox-record-creator.ts +0 -289
  123. package/src/record-view/record-view-body.ts +0 -257
  124. package/src/record-view/record-view-handler.ts +0 -86
  125. package/src/record-view/record-view.ts +0 -122
  126. package/src/renderers/index.ts +0 -14
  127. package/src/renderers/ox-grist-renderer-boolean.ts +0 -43
  128. package/src/renderers/ox-grist-renderer-color.ts +0 -15
  129. package/src/renderers/ox-grist-renderer-date.ts +0 -62
  130. package/src/renderers/ox-grist-renderer-file.ts +0 -31
  131. package/src/renderers/ox-grist-renderer-image.ts +0 -27
  132. package/src/renderers/ox-grist-renderer-json5.ts +0 -36
  133. package/src/renderers/ox-grist-renderer-link.ts +0 -17
  134. package/src/renderers/ox-grist-renderer-password.ts +0 -7
  135. package/src/renderers/ox-grist-renderer-progress.ts +0 -45
  136. package/src/renderers/ox-grist-renderer-select.ts +0 -58
  137. package/src/renderers/ox-grist-renderer-text.ts +0 -16
  138. package/src/renderers/ox-grist-renderer-textarea.ts +0 -7
  139. package/src/renderers/ox-grist-renderer-tree.ts +0 -189
  140. package/src/renderers/ox-grist-renderer.ts +0 -35
  141. package/src/renderers/registry.ts +0 -111
  142. package/src/sorters/sorters-control.ts +0 -143
  143. package/src/types.ts +0 -813
  144. package/src/utils/index.ts +0 -2
  145. package/src/utils/list-param.ts +0 -72
  146. package/src/utils/supports-passive.ts +0 -13
  147. package/stories/accumulator-format.stories.ts +0 -276
  148. package/stories/barcode-input-filter.stories.ts +0 -216
  149. package/stories/bounded-select-filters.stories.ts +0 -333
  150. package/stories/bounded-select-record.stories.ts +0 -336
  151. package/stories/click-event-custom.stories.ts +0 -287
  152. package/stories/click-event.stories.ts +0 -283
  153. package/stories/creatable-only-column.stories.ts +0 -253
  154. package/stories/default-filters.stories.ts +0 -241
  155. package/stories/dynamic-editable.stories.ts +0 -313
  156. package/stories/empty-sorters.stories.ts +0 -180
  157. package/stories/explicit-fetch.stories.ts +0 -186
  158. package/stories/fixed-column.stories.ts +0 -416
  159. package/stories/grid-setting.stories.ts +0 -501
  160. package/stories/grist-modes.stories.ts +0 -451
  161. package/stories/group-header.stories.ts +0 -442
  162. package/stories/record-view.stories.ts +0 -143
  163. package/stories/textarea.stories.ts +0 -261
  164. package/stories/tree-column-with-checkbox.stories.ts +0 -297
  165. package/stories/tree-column.stories.ts +0 -296
  166. package/tsconfig.json +0 -26
  167. package/web-dev-server.config.mjs +0 -27
  168. package/web-test-runner.config.mjs +0 -45
@@ -1,227 +0,0 @@
1
- import { css, html, LitElement, PropertyValues, TemplateResult } from 'lit'
2
- // import { guard } from 'lit/directives/guard.js'
3
- import { customElement, property } from 'lit/decorators.js'
4
-
5
- import { TooltipReactiveController } from '@operato/utils'
6
-
7
- import { ZERO_COLUMN } from '../configure/zero-config'
8
- import { ColumnConfig, GristRecord } from '../types'
9
-
10
- const DEFAULT_TEXT_ALIGN = 'left'
11
-
12
- @customElement('ox-grid-field')
13
- export class DataGridField extends LitElement {
14
- static styles = [
15
- css`
16
- :host {
17
- display: flex;
18
-
19
- align-items: center;
20
- justify-content: var(--data-grid-field-justify-content, flex-start);
21
- position: relative;
22
-
23
- white-space: nowrap;
24
- background-color: var(--grid-record-background-color);
25
- padding: var(--grid-record-padding);
26
- border: 1px solid transparent;
27
- border-width: 1px 0;
28
- border-bottom: var(--grid-record-border-bottom);
29
-
30
- font-size: var(--grid-record-wide-fontsize);
31
- min-height: 30px;
32
- box-sizing: border-box;
33
- }
34
-
35
- :host([gutter]) {
36
- padding: var(--grid-gutter-padding);
37
- text-align: center;
38
- }
39
-
40
- :host([gutter]) * {
41
- cursor: default;
42
- }
43
-
44
- :host([editing]) {
45
- border-top: var(--grid-record-editing-border);
46
- border-bottom: var(--grid-record-editing-border);
47
- }
48
-
49
- :host([focused]) {
50
- --grid-record-border-bottom: var(--grid-record-focused-cell-border);
51
- }
52
-
53
- :host([dirty])::after {
54
- content: '';
55
- position: absolute;
56
- right: 0;
57
- top: 0;
58
-
59
- width: 0px;
60
- height: 0px;
61
- border-top: 9px solid red;
62
- border-left: 9px solid transparent;
63
- }
64
-
65
- span,
66
- pre {
67
- display: block;
68
- text-overflow: ellipsis;
69
- overflow: hidden;
70
- }
71
-
72
- * {
73
- margin: 0;
74
- text-align: var(--data-grid-field-text-align);
75
- }
76
-
77
- *[center] {
78
- flex: none;
79
- margin: 0 auto;
80
- }
81
-
82
- :host > button {
83
- display: flex;
84
- gap: var(--spacing-small);
85
- border: 0;
86
- align-items: center;
87
- padding: var(--spacing-small);
88
-
89
- color: var(--md-sys-color-on-primary);
90
- background-color: var(--md-sys-color-primary);
91
- border-radius: var(--data-card-item-btn-border-radius, var(--md-sys-shape-corner-tiny));
92
-
93
- font-size: 0.8rem;
94
- line-height: 0.8rem;
95
-
96
- md-icon {
97
- border: 0;
98
- padding: 0;
99
- background-color: unset;
100
- }
101
- }
102
-
103
- :host([danger]) > button {
104
- color: var(--md-sys-color-on-primary);
105
- background-color: var(--md-sys-color-error);
106
- border-color: var(--md-sys-color-error);
107
- }
108
-
109
- :host([danger]) > button:hover {
110
- color: var(--md-sys-color-on-secondary);
111
- background-color: var(--md-sys-color-secondary);
112
- border-color: var(--md-sys-color-secondary);
113
- }
114
- `
115
- ]
116
-
117
- @property({ type: String, attribute: true }) align = DEFAULT_TEXT_ALIGN
118
- @property({ type: Object }) record: GristRecord = {}
119
- @property({ type: Object }) column: ColumnConfig = ZERO_COLUMN
120
- @property({ type: Number }) rowIndex = 0
121
- @property({ type: Number }) columnIndex = 0
122
- @property({ type: Boolean }) editing = false
123
- @property({ type: Object }) value = {}
124
- @property({ type: String }) valueWith: string | null = null
125
- @property({ attribute: false }) emphasized: any = false
126
- @property({ type: String, attribute: true }) fixed?: string
127
- @property({ type: String }) type?: string
128
- @property({ type: Boolean }) isWorking: boolean = false
129
-
130
- /* check in tree의 변화에 대응하기 위함임. 만일, record control 오브젝트로 통일되면 대체될 것임. */
131
- @property({ type: String }) checked?: string
132
-
133
- private _editCancelled?: boolean
134
- private _onFieldChange: (e: Event) => void = e => {}
135
- private _onKeydownInEditingMode: (e: KeyboardEvent) => void = e => {}
136
-
137
- private tooltipController?: TooltipReactiveController = new TooltipReactiveController(this)
138
-
139
- render(): TemplateResult {
140
- if (!this.column) {
141
- return html``
142
- }
143
-
144
- var { value, column, record, rowIndex } = this
145
- var { renderer, editor } = column.record
146
-
147
- return html`
148
- ${this.editing
149
- ? editor?.call(this, value, column, record, rowIndex, this)
150
- : renderer?.call(this, value, column, record, rowIndex, this)}
151
- `
152
- }
153
-
154
- updated(changes: PropertyValues<this>) {
155
- if (changes.has('editing')) {
156
- if (this.editing) {
157
- this._onKeydownInEditingMode = ((e: KeyboardEvent) => {
158
- if (e.key === 'Esc' || e.key === 'Escape') {
159
- /* 편집 취소 */
160
- this._editCancelled = true
161
- }
162
- }).bind(this)
163
-
164
- this._onFieldChange = ((e: Event) => {
165
- this._editCancelled && e.stopPropagation()
166
- }).bind(this)
167
-
168
- delete this._editCancelled
169
- this.addEventListener('field-change', this._onFieldChange)
170
- this.addEventListener('keydown', this._onKeydownInEditingMode)
171
- } else {
172
- this.removeEventListener('field-change', this._onFieldChange)
173
- this.removeEventListener('keydown', this._onKeydownInEditingMode)
174
- }
175
- }
176
-
177
- if (changes.has('column')) {
178
- var align = this.column.record.align || DEFAULT_TEXT_ALIGN
179
- if (align != DEFAULT_TEXT_ALIGN) {
180
- let justify = 'center'
181
- switch (align) {
182
- case 'right':
183
- justify = 'flex-end'
184
- break
185
- }
186
- this.style.setProperty('--data-grid-field-justify-content', justify)
187
- this.style.setProperty('--data-grid-field-text-align', align)
188
- }
189
-
190
- const { danger } = this.column
191
- if (danger) {
192
- this.setAttribute('danger', '')
193
- } else {
194
- this.removeAttribute('danger')
195
- }
196
- }
197
-
198
- if (changes.has('fixed')) {
199
- if (this.fixed) {
200
- this.style.left = this.fixed + 'px'
201
- } else {
202
- this.style.left = 'unset'
203
- }
204
- }
205
-
206
- const emphasized =
207
- this.column.record.classifier.call(this, this.record, this.rowIndex)?.emphasized || this.emphasized
208
-
209
- if (!!emphasized) {
210
- this.setAttribute('emphasized-row', '')
211
-
212
- if (Symbol.iterator in Object(emphasized)) {
213
- const [backgroundColor, foregroundColor] = emphasized as string[]
214
- backgroundColor && this.style.setProperty('--grid-record-emphasized-background-color', backgroundColor)
215
- foregroundColor && this.style.setProperty('--grid-record-emphasized-color', foregroundColor)
216
- }
217
- } else {
218
- this.removeAttribute('emphasized-row')
219
- }
220
- }
221
-
222
- get editableOnClick() {
223
- const renderer = this.renderRoot.firstElementChild as HTMLElement
224
- //@ts-ignore
225
- return renderer && 'editableOnClick' in renderer ? renderer.editableOnClick : true
226
- }
227
- }
@@ -1,119 +0,0 @@
1
- import '@material/web/icon/icon.js'
2
-
3
- import { css, html, LitElement } from 'lit'
4
- import { customElement, property } from 'lit/decorators.js'
5
-
6
- import { ZERO_DATA, ZERO_PAGES } from '../configure/zero-config'
7
- import { GristData, PaginationConfig } from '../types'
8
- import { stringifyBigNumber } from '@operato/utils'
9
-
10
- @customElement('ox-grid-footer')
11
- export class DataGridFooter extends LitElement {
12
- static styles = [
13
- css`
14
- :host {
15
- display: flex;
16
- flex-direction: row;
17
- gap: var(--spacing-small);
18
- overflow: hidden;
19
-
20
- padding: var(--grid-footer-padding);
21
- background-color: var(--grid-footer-background-color);
22
- font-size: var(--grid-footer-font-size);
23
- align-items: center;
24
-
25
- user-select: none;
26
- }
27
-
28
- :host * {
29
- white-space: nowrap;
30
- overflow: hidden;
31
-
32
- text-overflow: ellipsis;
33
- text-align: center;
34
- color: var(--grid-footer-color);
35
- }
36
-
37
- .filler {
38
- flex: 1;
39
- }
40
-
41
- md-icon {
42
- font-size: 1.5em;
43
- vertical-align: middle;
44
-
45
- font-variation-settings: 'FILL' 1;
46
- }
47
-
48
- .limit {
49
- display: flex;
50
- flex-direction: row;
51
- gap: var(--spacing-small);
52
- align-items: center;
53
- }
54
-
55
- .limit a {
56
- color: var(--grid-footer-limit-color);
57
- }
58
-
59
- .limit a[selected] {
60
- color: var(--grid-footer-color);
61
- font-weight: bold;
62
- text-decoration: underline;
63
- }
64
-
65
- a[inactive] * {
66
- color: var(--grid-footer-inactive-color);
67
- }
68
- `
69
- ]
70
-
71
- @property() data: GristData = ZERO_DATA
72
- @property() pagination: PaginationConfig = {}
73
-
74
- _gotoPage(page: number) {
75
- var { pages = ZERO_PAGES } = this.pagination || {}
76
- var { limit = pages[0], total = 0 } = this.data
77
-
78
- if (page > Math.ceil(total / limit) || page <= 0) {
79
- return
80
- }
81
- this.dispatchEvent(new CustomEvent('page-change', { bubbles: true, composed: true, detail: page }))
82
- }
83
-
84
- _changeLimit(limit: number) {
85
- this.dispatchEvent(new CustomEvent('limit-change', { bubbles: true, composed: true, detail: limit }))
86
- }
87
-
88
- render() {
89
- var { pages = ZERO_PAGES } = this.pagination || {}
90
- var { records = [], page = 1, limit = pages[0], total = 0 } = this.data
91
-
92
- var begin = records.length == 0 ? 0 : limit * (page - 1) + 1
93
- var end = records.length == 0 ? 0 : begin + records.length - 1
94
- var totalPage = Math.max(1, Math.ceil(total / limit))
95
-
96
- return html`
97
- <a ?inactive=${page <= 1} @click=${() => this._gotoPage(1)}><md-icon>skip_previous</md-icon></a>
98
- <a ?inactive=${page <= 1} @click=${() => this._gotoPage(page - 1)}><md-icon>navigate_before</md-icon></a>
99
- <span>page <strong>${page}</strong>&nbsp;/&nbsp;${totalPage}</span>
100
- <a ?inactive=${page >= totalPage} @click=${() => this._gotoPage(page + 1)}><md-icon>navigate_next</md-icon></a>
101
- <a ?inactive=${page >= totalPage} @click=${() => this._gotoPage(totalPage)}><md-icon>skip_next</md-icon></a>
102
-
103
- <span class="filler"></span>
104
-
105
- <span class="limit">
106
- ${pages.map(
107
- size => html`
108
- <a ?selected=${limit == size} @click=${() => this._changeLimit(size)}>${stringifyBigNumber(size)}</a>
109
- `
110
- )}
111
- records
112
- </span>
113
- <span>&nbsp;</span>
114
- <span>${begin} - ${end}</span>
115
- <span>&nbsp;/&nbsp;</span>
116
- <span>total ${total || 0} records.</span>
117
- `
118
- }
119
- }