@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,122 +0,0 @@
1
- import '@material/web/icon/icon.js'
2
- import './record-view-body'
3
- import '@operato/input/ox-input-file.js'
4
- import '../data-grid/data-grid-field'
5
-
6
- import { css, html, LitElement } from 'lit'
7
- import { customElement, property, query } from 'lit/decorators.js'
8
-
9
- import { ScrollbarStyles } from '@operato/styles'
10
-
11
- import { ZERO_RECORD } from '../configure/zero-config'
12
- import { ColumnConfig, GristRecord, ValidationReason } from '../types'
13
-
14
- import { RecordViewBody } from './record-view-body'
15
-
16
- @customElement('ox-record-view')
17
- export class RecordView extends LitElement {
18
- static styles = [
19
- ScrollbarStyles,
20
- css`
21
- :host {
22
- display: flex;
23
- flex-direction: column;
24
- background-color: var(--record-view-background-color);
25
- }
26
-
27
- ox-record-view-body {
28
- flex: 1;
29
- overflow-y: auto;
30
- }
31
-
32
- [footer] {
33
- text-align: right;
34
- background-color: var(--record-view-footer-background);
35
- box-shadow: var(--context-toolbar-shadow-line);
36
- }
37
-
38
- [footer] button {
39
- display: inline-block;
40
- align-items: center;
41
- justify-content: center;
42
-
43
- background-color: transparent;
44
- border: var(--record-view-footer-button-border);
45
- border-width: var(--record-view-footer-button-border-width);
46
- padding: var(--spacing-tiny) var(--spacing-medium);
47
- color: var(--record-view-footer-button-color);
48
- font-size: var(--md-sys-typescale-title-medium-size, 1rem);
49
- line-height: 2;
50
- }
51
-
52
- [footer] button * {
53
- vertical-align: middle;
54
- }
55
-
56
- [footer] button md-icon {
57
- --md-icon-size: var(--icon-size-small);
58
- margin-right: var(--spacing-small, 4px);
59
- }
60
-
61
- [footer] button[ok] {
62
- background-color: var(--record-view-footer-focus-background);
63
- }
64
- `
65
- ]
66
-
67
- @property({ type: Array }) columns: ColumnConfig[] = []
68
- @property({ type: Object }) record: GristRecord = ZERO_RECORD
69
- @property({ type: Number }) rowIndex: number = -1
70
-
71
- @query('ox-record-view-body') body!: RecordViewBody
72
-
73
- render() {
74
- return html`
75
- <ox-record-view-body .columns=${this.columns} .record=${this.record} .rowIndex=${this.rowIndex}>
76
- </ox-record-view-body>
77
- <div footer>
78
- <button @click=${this.onReset.bind(this)}><md-icon>refresh</md-icon><span>Reset</span></button>
79
- <button @click=${this.onCancel.bind(this)}><md-icon>clear</md-icon><span>Cancel</span></button>
80
- <button @click=${this.onOK.bind(this)} ok><md-icon>task_alt</md-icon><span>OK</span></button>
81
- </div>
82
- `
83
- }
84
-
85
- firstUpdated() {
86
- this.setAttribute('tabindex', '0')
87
- }
88
-
89
- setFocusOnInvalid(invalidFields: { field: string; reason: ValidationReason }[]) {
90
- this.body.setFocusOnInvalid(invalidFields)
91
- }
92
-
93
- onReset() {
94
- this.focus()
95
-
96
- this.dispatchEvent(
97
- new CustomEvent('reset', {
98
- detail: this.record
99
- })
100
- )
101
- }
102
-
103
- onCancel() {
104
- this.focus()
105
-
106
- this.dispatchEvent(
107
- new CustomEvent('cancel', {
108
- detail: this.record
109
- })
110
- )
111
- }
112
-
113
- onOK() {
114
- this.focus()
115
-
116
- this.dispatchEvent(
117
- new CustomEvent('ok', {
118
- detail: this.record
119
- })
120
- )
121
- }
122
- }
@@ -1,14 +0,0 @@
1
- export * from './registry.js'
2
-
3
- export * from './ox-grist-renderer.js'
4
- export * from './ox-grist-renderer-boolean.js'
5
- export * from './ox-grist-renderer-color.js'
6
- export * from './ox-grist-renderer-date.js'
7
- export * from './ox-grist-renderer-link.js'
8
- export * from './ox-grist-renderer-password.js'
9
- export * from './ox-grist-renderer-progress.js'
10
- export * from './ox-grist-renderer-text.js'
11
- export * from './ox-grist-renderer-select.js'
12
- export * from './ox-grist-renderer-image.js'
13
- export * from './ox-grist-renderer-file.js'
14
- export * from './ox-grist-renderer-json5.js'
@@ -1,43 +0,0 @@
1
- import { FieldRenderer } from '../types'
2
- import { html } from 'lit'
3
-
4
- export const OxGristRendererBoolean: FieldRenderer = (value, column, record, rowIndex, field) => {
5
- let { editable } = column.record
6
- if (typeof editable === 'function') {
7
- editable = editable.call(field, value, column, record, rowIndex, field)
8
- }
9
-
10
- return html`
11
- <input
12
- type="checkbox"
13
- .checked=${!!value && !!String(value).match(/true/i)}
14
- ?disabled=${!editable}
15
- @mousedown=${(e: Event) => {
16
- /* edit mode로 전환되지 않도록 차단함. 체크박스인풋은 렌더러 모드에서도 처리가능하므로. */
17
- e.stopPropagation()
18
- }}
19
- @click=${(e: Event) => {
20
- e.stopPropagation()
21
- /*
22
- * 특별하게, checkbox인 경우에, editor가 활성화되지 않아도, renderer에서 값을 변경할 수 있게 함.
23
- * checkbox가 클릭되면, 클릭에 의해 변경된 값을 레코드에 반영하기 위해서 value-changed 이벤트를 발생시킨다.
24
- *
25
- * 만일, readonly인 경우에는 click 이벤트가 발생하지 않으므로, 클릭으로 에디트할 수 없게 됨.
26
- */
27
- field.dispatchEvent(
28
- new CustomEvent('field-change', {
29
- bubbles: true,
30
- composed: true,
31
- detail: {
32
- before: value,
33
- after: (e.target as HTMLInputElement).checked,
34
- column: column,
35
- record: record,
36
- row: rowIndex
37
- }
38
- })
39
- )
40
- }}
41
- />
42
- `
43
- }
@@ -1,15 +0,0 @@
1
- import { html } from 'lit'
2
-
3
- import { FieldRenderer } from '../types'
4
-
5
- export const OxGristRendererColor: FieldRenderer = (value, column, record, rowIndex, field) => {
6
- value = value == null ? '#000' : value
7
-
8
- return html`
9
- <div
10
- style="display:flex;align-items:center;justify-content:center;width:100%;height:100%;background-color:${value};"
11
- >
12
- ${value ? html`<p>${value}</p>` : html`<p>&nbsp</p>`}
13
- </div>
14
- `
15
- }
@@ -1,62 +0,0 @@
1
- import { FieldRenderer } from '../types'
2
- import { html } from 'lit'
3
-
4
- // TODO 로케일 설정에 따라서 포맷이 바뀌도록 해야한다.
5
- const DATETIME_OPTIONS = {
6
- year: 'numeric',
7
- month: 'numeric',
8
- day: 'numeric',
9
- hour: 'numeric',
10
- minute: 'numeric',
11
- second: 'numeric',
12
- hour12: false
13
- }
14
-
15
- const DATE_OPTIONS = {
16
- year: 'numeric',
17
- month: 'numeric',
18
- day: 'numeric'
19
- }
20
-
21
- const TIME_OPTIONS = {
22
- hour: 'numeric',
23
- minute: 'numeric',
24
- second: 'numeric'
25
- }
26
-
27
- const OPTIONS = {
28
- datetime: DATETIME_OPTIONS,
29
- time: TIME_OPTIONS,
30
- date: DATE_OPTIONS
31
- }
32
-
33
- function getsec(time: string): number {
34
- var arr = time.split(':')
35
- return Number(arr[0]) * 3600 + Number(arr[1]) * 60 + (Number(arr[2]) || 0)
36
- }
37
-
38
- /*
39
- TODO date, time, month, week 등 datetime 이 외의 타입인 경우에는 문자열로 처리하도록 한다.
40
- 따라서, 이 경우는 타임존에 대한 처리가 불필요하다.
41
- */
42
- export const OxGristRendererDate: FieldRenderer = (value, column, record, rowIndex, field) => {
43
- if (!value) {
44
- return ''
45
- }
46
-
47
- if (!isNaN(Number(value))) value = Number(value)
48
-
49
- var options = column.record.options || OPTIONS[column.type as 'datetime' | 'date' | 'time']
50
- var formatter = new Intl.DateTimeFormat(navigator.language, options)
51
-
52
- switch (column.type) {
53
- case 'datetime':
54
- case 'date':
55
- value = formatter.format(new Date(value))
56
- break
57
- case 'time':
58
- default:
59
- }
60
-
61
- return value ? html`<span>${value}</span>` : html`<span>&nbsp</span>`
62
- }
@@ -1,31 +0,0 @@
1
- import { html, nothing } from 'lit'
2
-
3
- import { FieldRenderer } from '../types'
4
-
5
- function download(file: { mimetype: string; name: string; fullpath: string }) {
6
- const element = document.createElement('a')
7
- element.setAttribute('href', file.fullpath)
8
- element.setAttribute('download', file.name!)
9
- document.body.appendChild(element)
10
- element.click()
11
- }
12
-
13
- export const OxGristRendererFile: FieldRenderer = (value, column, record, rowIndex, field) => {
14
- let text: string
15
-
16
- if (!value) {
17
- return html`<span>&nbsp;</span>`
18
- } else if (typeof value === 'string') {
19
- return html`<span>${value}</span>`
20
- } else {
21
- const files = value as { mimetype: string; name: string; fullpath: string }[]
22
- return html`<span
23
- >${files.map(
24
- (file, idx) => html`
25
- <a @click=${() => download(file)} file><md-icon>description</md-icon>${file.name}</a>
26
- ${files.length - 1 == idx ? html`</br>` : nothing}
27
- `
28
- )}</span
29
- >`
30
- }
31
- }
@@ -1,27 +0,0 @@
1
- import { FieldRenderer } from '../types'
2
- import { html } from 'lit'
3
-
4
- const IMAGE_FALLBACK = new URL('../../../assets/images/no-image.png', import.meta.url).href
5
-
6
- export const OxGristRendererImage: FieldRenderer = (value, column, record, rowIndex, field) => {
7
- let src: string
8
-
9
- if (!value) {
10
- src = IMAGE_FALLBACK
11
- } else if (typeof value === 'string') {
12
- src = value
13
- } else {
14
- src = URL.createObjectURL(value)
15
- requestAnimationFrame(() => URL.revokeObjectURL(src))
16
- }
17
-
18
- const { width, height } = column.record.options || {}
19
-
20
- return html` <img
21
- src=${src}
22
- width=${width}
23
- height=${height}
24
- style="object-fit: contain; max-width: 100%;"
25
- onerror="this.src !== '${IMAGE_FALLBACK}' && (this.src = '${IMAGE_FALLBACK}')"
26
- />`
27
- }
@@ -1,36 +0,0 @@
1
- import JSON5 from 'json5'
2
- import { html } from 'lit'
3
-
4
- import { FieldRenderer } from '../types'
5
-
6
- function onmouseover(e: Event) {
7
- const element = e.target as HTMLPreElement
8
- var parsed
9
- try {
10
- parsed = JSON5.parse(element.textContent!)
11
- } catch {}
12
-
13
- element.setAttribute('data-tooltip', JSON5.stringify(parsed, null, 2))
14
-
15
- const rect = element.getBoundingClientRect()
16
- element.style.setProperty('--tooltip-top', `${rect.top + rect.height}px`)
17
- element.style.setProperty('--tooltip-left', `${rect.left}px`)
18
- }
19
-
20
- function onmouseout(e: Event) {
21
- const element = e.target as HTMLPreElement
22
- element.removeAttribute('data-tooltip')
23
- }
24
-
25
- export const OxGristRendererJson5: FieldRenderer = (value, column, record, rowIndex, field) => {
26
- var parsed: any = value
27
-
28
- if (typeof value === 'string') {
29
- try {
30
- parsed = JSON5.parse(value)
31
- } catch {}
32
- }
33
-
34
- const text = parsed == null ? '' : JSON5.stringify(parsed)
35
- return html`<pre @mouseover=${onmouseover} @mouseout=${onmouseout}>${text}</pre>`
36
- }
@@ -1,17 +0,0 @@
1
- import { html } from 'lit'
2
-
3
- import { FieldRenderer } from '../types'
4
-
5
- export const OxGristRendererLink: FieldRenderer = (value, column, record, rowIndex, field) => {
6
- var { href, target } = column.record.options || {}
7
-
8
- value = value == null ? '' : value
9
-
10
- if (typeof href == 'function') {
11
- href = href(value, column, record, rowIndex, field)
12
- }
13
-
14
- return target
15
- ? html` <a style="text-decoration:none;color:inherit" href=${href || value} target=${target}>${value}&nbsp;</a> `
16
- : html` <a style="text-decoration:none;color:inherit" href=${href || value}>${value}&nbsp;</a> `
17
- }
@@ -1,7 +0,0 @@
1
- import { html } from 'lit'
2
-
3
- import { FieldRenderer } from '../types'
4
-
5
- export const OxGristRendererPassword: FieldRenderer = (value, column, record, rowIndex, field) => {
6
- return html`<span>********</span>`
7
- }
@@ -1,45 +0,0 @@
1
- import { css, html } from 'lit'
2
- import { customElement, property } from 'lit/decorators.js'
3
-
4
- import { OxGristRenderer } from './ox-grist-renderer'
5
-
6
- @customElement('ox-grist-progress-renderer')
7
- export class OxGristRendererProgress extends OxGristRenderer {
8
- static styles = css`
9
- :host {
10
- display: block;
11
- position: relative;
12
-
13
- width: 100%;
14
- }
15
-
16
- #border {
17
- display: block;
18
- position: absolute;
19
-
20
- height: 100%;
21
- width: 100%;
22
- box-sizing: border-box;
23
-
24
- border: var(--grist-input-progress-border);
25
- background-color: var(--grist-input-progress-background);
26
- }
27
-
28
- #bar {
29
- background-color: var(--grist-input-progress-bar-background);
30
- text-align: left;
31
- color: var(--grist-input-progress-bar-color);
32
- }
33
- `
34
-
35
- get rendererTemplate() {
36
- var { min = 0, max = 100 } = this.column.record.options || {}
37
- var value = Number(this.value)
38
- var progress = isNaN(value) ? 0 : Math.min(100, Math.max(0, ((value - min) * 100) / (max - min)))
39
-
40
- return html`
41
- <div id="border"></div>
42
- <div id="bar" style="width:${progress}%">&nbsp;${progress}</div>
43
- `
44
- }
45
- }
@@ -1,58 +0,0 @@
1
- import { html } from 'lit'
2
- import { until } from 'lit/directives/until.js'
3
-
4
- import { FieldRenderer, SelectOption, SelectOptionObject } from '../types'
5
-
6
- function buildOptions(options: SelectOption[], value: any) {
7
- const selectOptionObjects = options.map(option => {
8
- switch (typeof option) {
9
- case 'string':
10
- return {
11
- display: option,
12
- value: option
13
- }
14
- case 'object':
15
- return {
16
- display: option.display || option.name,
17
- value: option.value
18
- }
19
- default:
20
- return option
21
- }
22
- }) as SelectOptionObject[]
23
-
24
- var res = selectOptionObjects
25
- ? selectOptionObjects.filter((option: any) => option.value == String(value == null ? '' : value))
26
- : []
27
-
28
- if (res.length) {
29
- return html`<span>${res[0].display || res[0].name || ''}</span>`
30
- }
31
- return html`<span>${value}</span>`
32
- }
33
-
34
- export const OxGristRendererSelect: FieldRenderer = (value, column, record, rowIndex, field) => {
35
- if (value == null) {
36
- return ''
37
- }
38
-
39
- var rowOptionField = column.record.rowOptionField && record[column.record.rowOptionField]
40
- var options = rowOptionField?.options ? rowOptionField.options : column.record.options
41
-
42
- if (!options) {
43
- console.error(`options value for select '${column.name}' column is mandatory.`)
44
- } else if (typeof options == 'function') {
45
- options = options.call(null, value, column, record, rowIndex, field)
46
-
47
- if (options instanceof Promise) {
48
- return html`${until(
49
- options.then(options => buildOptions(options, value)),
50
- value
51
- )}`
52
- } else {
53
- return buildOptions((options || []) as SelectOption[], value)
54
- }
55
- } else {
56
- return buildOptions((options || []) as SelectOption[], value)
57
- }
58
- }
@@ -1,16 +0,0 @@
1
- import { html } from 'lit'
2
-
3
- import { format as formatter } from '@operato/utils'
4
-
5
- import { FieldRenderer } from '../types'
6
-
7
- export const OxGristRendererText: FieldRenderer = (value, column, record, rowIndex, field) => {
8
- var { format } = column.record || {}
9
-
10
- var text = value == null ? '' : value
11
- if (format) {
12
- text = formatter(format, text)
13
- }
14
-
15
- return html`<span data-reactive-tooltip>${text}&nbsp;</span>`
16
- }
@@ -1,7 +0,0 @@
1
- import { html } from 'lit'
2
-
3
- import { FieldRenderer } from '../types'
4
-
5
- export const OxGristRendererTextarea: FieldRenderer = (value, column, record, rowIndex, field) => {
6
- return html`<span style="height:auto;white-space: pre-wrap;word-wrap:break-word;">${value}&nbsp;</span>`
7
- }