@operato/data-grist 7.1.30 → 7.1.32

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 (175) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/src/data-grid/data-grid-body-style.js +2 -2
  3. package/dist/src/data-grid/data-grid-body-style.js.map +1 -1
  4. package/dist/tsconfig.tsbuildinfo +1 -1
  5. package/package.json +10 -10
  6. package/.storybook/main.js +0 -3
  7. package/.storybook/preview.js +0 -52
  8. package/.storybook/server.mjs +0 -8
  9. package/demo/data-grist-test.html +0 -468
  10. package/demo/favicon.ico +0 -0
  11. package/demo/index.html +0 -541
  12. package/demo/report-test.html +0 -249
  13. package/dist/src/record-view/record-creator.d.ts +0 -17
  14. package/dist/src/record-view/record-creator.js +0 -148
  15. package/dist/src/record-view/record-creator.js.map +0 -1
  16. package/src/accumulator/accumulator.ts +0 -63
  17. package/src/configure/column-builder.ts +0 -114
  18. package/src/configure/config-builder.ts +0 -40
  19. package/src/configure/filters-option-builder.ts +0 -8
  20. package/src/configure/imex-option-builder.ts +0 -5
  21. package/src/configure/list-option-builder.ts +0 -9
  22. package/src/configure/rows-option-builder.ts +0 -38
  23. package/src/configure/tree-option-builder.ts +0 -22
  24. package/src/configure/zero-config.ts +0 -83
  25. package/src/const.ts +0 -1
  26. package/src/data-card/data-card-field.ts +0 -94
  27. package/src/data-card/data-card-gutter-menu.ts +0 -94
  28. package/src/data-card/data-card-gutter.ts +0 -103
  29. package/src/data-card/data-card.ts +0 -154
  30. package/src/data-card/event-handlers/record-card-click-handler.ts +0 -34
  31. package/src/data-card/event-handlers/record-card-dblclick-handler.ts +0 -34
  32. package/src/data-card/record-card.ts +0 -289
  33. package/src/data-consumer.ts +0 -11
  34. package/src/data-grid/data-grid-accum-field.ts +0 -109
  35. package/src/data-grid/data-grid-body-style.ts +0 -99
  36. package/src/data-grid/data-grid-body.ts +0 -753
  37. package/src/data-grid/data-grid-field.ts +0 -236
  38. package/src/data-grid/data-grid-footer.ts +0 -117
  39. package/src/data-grid/data-grid-header.ts +0 -574
  40. package/src/data-grid/data-grid.ts +0 -293
  41. package/src/data-grid/event-handlers/data-grid-body-click-handler.ts +0 -69
  42. package/src/data-grid/event-handlers/data-grid-body-contextmenu-handler.ts +0 -32
  43. package/src/data-grid/event-handlers/data-grid-body-dblclick-handler.ts +0 -42
  44. package/src/data-grid/event-handlers/data-grid-body-focus-change-handler.ts +0 -24
  45. package/src/data-grid/event-handlers/data-grid-body-keydown-handler.ts +0 -234
  46. package/src/data-grist.ts +0 -1233
  47. package/src/data-list/data-list-field.ts +0 -82
  48. package/src/data-list/data-list-gutter.ts +0 -108
  49. package/src/data-list/data-list.ts +0 -145
  50. package/src/data-list/event-handlers/record-partial-click-handler.ts +0 -34
  51. package/src/data-list/event-handlers/record-partial-dblclick-handler.ts +0 -33
  52. package/src/data-list/event-handlers/record-partial-long-press-handler.ts +0 -33
  53. package/src/data-list/record-partial.ts +0 -255
  54. package/src/data-manipulator.ts +0 -426
  55. package/src/data-provider.ts +0 -271
  56. package/src/data-report/data-report-body-style.ts +0 -58
  57. package/src/data-report/data-report-body.ts +0 -189
  58. package/src/data-report/data-report-component.ts +0 -138
  59. package/src/data-report/data-report-field.ts +0 -83
  60. package/src/data-report/data-report-header.ts +0 -242
  61. package/src/data-report/event-handlers/data-report-body-click-handler.ts +0 -38
  62. package/src/data-report/event-handlers/data-report-body-dblclick-handler.ts +0 -25
  63. package/src/data-report/event-handlers/data-report-body-keydown-handler.ts +0 -68
  64. package/src/data-report.ts +0 -424
  65. package/src/editors/index.ts +0 -4
  66. package/src/editors/ox-grist-editor-checkbox.ts +0 -28
  67. package/src/editors/ox-grist-editor-color.ts +0 -10
  68. package/src/editors/ox-grist-editor-date.ts +0 -10
  69. package/src/editors/ox-grist-editor-datetime.ts +0 -27
  70. package/src/editors/ox-grist-editor-email.ts +0 -10
  71. package/src/editors/ox-grist-editor-file.ts +0 -28
  72. package/src/editors/ox-grist-editor-image.ts +0 -31
  73. package/src/editors/ox-grist-editor-month.ts +0 -10
  74. package/src/editors/ox-grist-editor-multiple-select.ts +0 -57
  75. package/src/editors/ox-grist-editor-number.ts +0 -27
  76. package/src/editors/ox-grist-editor-password.ts +0 -10
  77. package/src/editors/ox-grist-editor-select.ts +0 -55
  78. package/src/editors/ox-grist-editor-tel.ts +0 -10
  79. package/src/editors/ox-grist-editor-text.ts +0 -14
  80. package/src/editors/ox-grist-editor-textarea.ts +0 -16
  81. package/src/editors/ox-grist-editor-time.ts +0 -10
  82. package/src/editors/ox-grist-editor-tree.ts +0 -27
  83. package/src/editors/ox-grist-editor-varname.ts +0 -36
  84. package/src/editors/ox-grist-editor-week.ts +0 -10
  85. package/src/editors/ox-grist-editor.ts +0 -207
  86. package/src/editors/ox-input-tree.ts +0 -226
  87. package/src/editors/registry.ts +0 -82
  88. package/src/empty-note.ts +0 -46
  89. package/src/filters/filter-checkbox.ts +0 -49
  90. package/src/filters/filter-input-barcode.ts +0 -34
  91. package/src/filters/filter-input.ts +0 -30
  92. package/src/filters/filter-range-date.ts +0 -81
  93. package/src/filters/filter-range-number.ts +0 -64
  94. package/src/filters/filter-select-buttons.ts +0 -60
  95. package/src/filters/filter-select.ts +0 -68
  96. package/src/filters/filter-styles.ts +0 -119
  97. package/src/filters/filters-form.ts +0 -476
  98. package/src/filters/index.ts +0 -10
  99. package/src/filters/registry.ts +0 -56
  100. package/src/formatters/date-formatter.ts +0 -3
  101. package/src/formatters/index.ts +0 -1
  102. package/src/formatters/number-formatter.ts +0 -3
  103. package/src/formatters/registry.ts +0 -30
  104. package/src/formatters/text-formatter.ts +0 -3
  105. package/src/gutters/gutter-button.ts +0 -51
  106. package/src/gutters/gutter-dirty.ts +0 -96
  107. package/src/gutters/gutter-row-selector.ts +0 -89
  108. package/src/gutters/gutter-sequence.ts +0 -54
  109. package/src/gutters/index.ts +0 -1
  110. package/src/gutters/registry.ts +0 -32
  111. package/src/handlers/contextmenu-tree-mutation.ts +0 -80
  112. package/src/handlers/index.ts +0 -1
  113. package/src/handlers/move-down.ts +0 -44
  114. package/src/handlers/move-up.ts +0 -44
  115. package/src/handlers/record-copy.ts +0 -38
  116. package/src/handlers/record-delete.ts +0 -30
  117. package/src/handlers/record-view-handler.ts +0 -27
  118. package/src/handlers/registry.ts +0 -42
  119. package/src/handlers/select-row-toggle.ts +0 -30
  120. package/src/handlers/select-row.ts +0 -27
  121. package/src/index.ts +0 -17
  122. package/src/personalizer/index.ts +0 -1
  123. package/src/personalizer/ox-grist-filter-personalizer.ts +0 -192
  124. package/src/personalizer/ox-grist-personalizer.ts +0 -226
  125. package/src/record-view/event-handlers/record-view-body-click-handler.ts +0 -33
  126. package/src/record-view/event-handlers/record-view-body-keydown-handler.ts +0 -26
  127. package/src/record-view/index.ts +0 -2
  128. package/src/record-view/ox-record-creator.ts +0 -289
  129. package/src/record-view/record-view-body.ts +0 -250
  130. package/src/record-view/record-view-handler.ts +0 -86
  131. package/src/record-view/record-view.ts +0 -122
  132. package/src/renderers/index.ts +0 -14
  133. package/src/renderers/ox-grist-renderer-boolean.ts +0 -43
  134. package/src/renderers/ox-grist-renderer-color.ts +0 -15
  135. package/src/renderers/ox-grist-renderer-date.ts +0 -62
  136. package/src/renderers/ox-grist-renderer-file.ts +0 -31
  137. package/src/renderers/ox-grist-renderer-image.ts +0 -27
  138. package/src/renderers/ox-grist-renderer-json5.ts +0 -36
  139. package/src/renderers/ox-grist-renderer-link.ts +0 -17
  140. package/src/renderers/ox-grist-renderer-password.ts +0 -7
  141. package/src/renderers/ox-grist-renderer-progress.ts +0 -45
  142. package/src/renderers/ox-grist-renderer-select.ts +0 -58
  143. package/src/renderers/ox-grist-renderer-text.ts +0 -16
  144. package/src/renderers/ox-grist-renderer-textarea.ts +0 -7
  145. package/src/renderers/ox-grist-renderer-tree.ts +0 -189
  146. package/src/renderers/ox-grist-renderer.ts +0 -35
  147. package/src/renderers/registry.ts +0 -111
  148. package/src/sorters/sorters-control.ts +0 -143
  149. package/src/types.ts +0 -813
  150. package/src/utils/index.ts +0 -2
  151. package/src/utils/list-param.ts +0 -72
  152. package/src/utils/supports-passive.ts +0 -13
  153. package/stories/accumulator-format.stories.ts +0 -276
  154. package/stories/barcode-input-filter.stories.ts +0 -216
  155. package/stories/bounded-select-filters.stories.ts +0 -333
  156. package/stories/bounded-select-record.stories.ts +0 -336
  157. package/stories/click-event-custom.stories.ts +0 -288
  158. package/stories/click-event.stories.ts +0 -283
  159. package/stories/creatable-only-column.stories.ts +0 -253
  160. package/stories/default-filters.stories.ts +0 -241
  161. package/stories/dynamic-editable.stories.ts +0 -313
  162. package/stories/empty-sorters.stories.ts +0 -180
  163. package/stories/explicit-fetch.stories.ts +0 -186
  164. package/stories/fixed-column.stories.ts +0 -416
  165. package/stories/grid-setting.stories.ts +0 -501
  166. package/stories/grist-modes.stories.ts +0 -451
  167. package/stories/group-header.stories.ts +0 -442
  168. package/stories/record-view.stories.ts +0 -143
  169. package/stories/textarea.stories.ts +0 -261
  170. package/stories/tree-column-with-checkbox.stories.ts +0 -297
  171. package/stories/tree-column.stories.ts +0 -296
  172. package/tsconfig.json +0 -26
  173. package/web-dev-server.config.mjs +0 -27
  174. package/web-test-runner.config.mjs +0 -45
  175. package/yarn-error.log +0 -16971
@@ -1,236 +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 disabled = this.column.record.disabled || false
207
- if (!!disabled) {
208
- // 비황성화 여부 표시
209
- this.setAttribute('disabled', '')
210
- } else {
211
- // 비황성화 여부 제거
212
- this.removeAttribute('disabled')
213
- }
214
-
215
- const emphasized =
216
- this.column.record.classifier.call(this, this.record, this.rowIndex)?.emphasized || this.emphasized
217
-
218
- if (!!emphasized) {
219
- this.setAttribute('emphasized-row', '')
220
-
221
- if (Symbol.iterator in Object(emphasized)) {
222
- const [backgroundColor, foregroundColor] = emphasized as string[]
223
- backgroundColor && this.style.setProperty('--grid-record-emphasized-background-color', backgroundColor)
224
- foregroundColor && this.style.setProperty('--grid-record-emphasized-color', foregroundColor)
225
- }
226
- } else {
227
- this.removeAttribute('emphasized-row')
228
- }
229
- }
230
-
231
- get editableOnClick() {
232
- const renderer = this.renderRoot.firstElementChild as HTMLElement
233
- //@ts-ignore
234
- return renderer && 'editableOnClick' in renderer ? renderer.editableOnClick : true
235
- }
236
- }
@@ -1,117 +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
-
26
- :host * {
27
- white-space: nowrap;
28
- overflow: hidden;
29
-
30
- text-overflow: ellipsis;
31
- text-align: center;
32
- color: var(--grid-footer-color);
33
- }
34
-
35
- .filler {
36
- flex: 1;
37
- }
38
-
39
- md-icon {
40
- font-size: 1.5em;
41
- vertical-align: middle;
42
-
43
- font-variation-settings: 'FILL' 1;
44
- }
45
-
46
- .limit {
47
- display: flex;
48
- flex-direction: row;
49
- gap: var(--spacing-small);
50
- align-items: center;
51
- }
52
-
53
- .limit a {
54
- color: var(--grid-footer-limit-color);
55
- }
56
-
57
- .limit a[selected] {
58
- color: var(--grid-footer-color);
59
- font-weight: bold;
60
- text-decoration: underline;
61
- }
62
-
63
- a[inactive] * {
64
- color: var(--grid-footer-inactive-color);
65
- }
66
- `
67
- ]
68
-
69
- @property() data: GristData = ZERO_DATA
70
- @property() pagination: PaginationConfig = {}
71
-
72
- _gotoPage(page: number) {
73
- var { pages = ZERO_PAGES } = this.pagination || {}
74
- var { limit = pages[0], total = 0 } = this.data
75
-
76
- if (page > Math.ceil(total / limit) || page <= 0) {
77
- return
78
- }
79
- this.dispatchEvent(new CustomEvent('page-change', { bubbles: true, composed: true, detail: page }))
80
- }
81
-
82
- _changeLimit(limit: number) {
83
- this.dispatchEvent(new CustomEvent('limit-change', { bubbles: true, composed: true, detail: limit }))
84
- }
85
-
86
- render() {
87
- var { pages = ZERO_PAGES } = this.pagination || {}
88
- var { records = [], page = 1, limit = pages[0], total = 0 } = this.data
89
-
90
- var begin = records.length == 0 ? 0 : limit * (page - 1) + 1
91
- var end = records.length == 0 ? 0 : begin + records.length - 1
92
- var totalPage = Math.max(1, Math.ceil(total / limit))
93
-
94
- return html`
95
- <a ?inactive=${page <= 1} @click=${() => this._gotoPage(1)}><md-icon>skip_previous</md-icon></a>
96
- <a ?inactive=${page <= 1} @click=${() => this._gotoPage(page - 1)}><md-icon>navigate_before</md-icon></a>
97
- <span>page <strong>${page}</strong>&nbsp;/&nbsp;${totalPage}</span>
98
- <a ?inactive=${page >= totalPage} @click=${() => this._gotoPage(page + 1)}><md-icon>navigate_next</md-icon></a>
99
- <a ?inactive=${page >= totalPage} @click=${() => this._gotoPage(totalPage)}><md-icon>skip_next</md-icon></a>
100
-
101
- <span class="filler"></span>
102
-
103
- <span class="limit">
104
- ${pages.map(
105
- size => html`
106
- <a ?selected=${limit == size} @click=${() => this._changeLimit(size)}>${stringifyBigNumber(size)}</a>
107
- `
108
- )}
109
- records
110
- </span>
111
- <span>&nbsp;</span>
112
- <span>${begin} - ${end}</span>
113
- <span>&nbsp;/&nbsp;</span>
114
- <span>total ${total || 0} records.</span>
115
- `
116
- }
117
- }