@operato/data-grist 2.0.0-beta.1 → 2.0.0-beta.13

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 (36) hide show
  1. package/CHANGELOG.md +84 -0
  2. package/dist/src/data-card/data-card-gutter-menu.js +2 -0
  3. package/dist/src/data-card/data-card-gutter-menu.js.map +1 -1
  4. package/dist/src/data-card/record-card.js +4 -4
  5. package/dist/src/data-card/record-card.js.map +1 -1
  6. package/dist/src/data-grid/data-grid-body.js +3 -0
  7. package/dist/src/data-grid/data-grid-body.js.map +1 -1
  8. package/dist/src/data-grid/data-grid-field.d.ts +1 -0
  9. package/dist/src/data-grid/data-grid-field.js +2 -0
  10. package/dist/src/data-grid/data-grid-field.js.map +1 -1
  11. package/dist/src/data-grid/data-grid-header.d.ts +1 -0
  12. package/dist/src/data-grid/data-grid-header.js +3 -11
  13. package/dist/src/data-grid/data-grid-header.js.map +1 -1
  14. package/dist/src/data-list/record-partial.js +4 -4
  15. package/dist/src/data-list/record-partial.js.map +1 -1
  16. package/dist/src/editors/ox-grist-editor-date.js +1 -1
  17. package/dist/src/editors/ox-grist-editor-date.js.map +1 -1
  18. package/dist/src/editors/ox-grist-editor-datetime.js +1 -1
  19. package/dist/src/editors/ox-grist-editor-datetime.js.map +1 -1
  20. package/dist/src/renderers/ox-grist-renderer-json5.js +3 -0
  21. package/dist/src/renderers/ox-grist-renderer-json5.js.map +1 -1
  22. package/dist/src/renderers/ox-grist-renderer-text.js +2 -12
  23. package/dist/src/renderers/ox-grist-renderer-text.js.map +1 -1
  24. package/dist/tsconfig.tsbuildinfo +1 -1
  25. package/package.json +7 -7
  26. package/src/data-card/data-card-gutter-menu.ts +2 -0
  27. package/src/data-card/record-card.ts +4 -4
  28. package/src/data-grid/data-grid-body.ts +4 -0
  29. package/src/data-grid/data-grid-field.ts +3 -1
  30. package/src/data-grid/data-grid-header.ts +4 -12
  31. package/src/data-list/record-partial.ts +4 -4
  32. package/src/editors/ox-grist-editor-date.ts +1 -1
  33. package/src/editors/ox-grist-editor-datetime.ts +1 -1
  34. package/src/renderers/ox-grist-renderer-json5.ts +4 -0
  35. package/src/renderers/ox-grist-renderer-text.ts +2 -14
  36. package/themes/grist-theme.css +4 -0
@@ -59,7 +59,7 @@ export class RecordCard extends LitElement {
59
59
  text-indent: 1px;
60
60
  left: var(--spacing-none);
61
61
  top: var(--spacing-none);
62
- color: var(--grid-record-dirty-color);
62
+ color: var(--grid-record-dirty-color, var(--md-sys-color-error));
63
63
  }
64
64
 
65
65
  [thumbnail] {
@@ -102,17 +102,17 @@ export class RecordCard extends LitElement {
102
102
 
103
103
  ox-card-field {
104
104
  font: var(--data-card-item-etc-font);
105
- color: var(--data-card-item-etc-color);
105
+ color: var(--data-card-item-etc-color, var(--md-sys-color-on-surface));
106
106
  }
107
107
 
108
108
  ox-card-field[name] {
109
109
  font: var(--data-card-item-name-font);
110
- color: var(--data-card-item-name-color);
110
+ color: var(--data-card-item-name-color, var(--md-sys-color-secondary));
111
111
  }
112
112
 
113
113
  ox-card-field[desc] {
114
114
  font: var(--data-card-item-disc-font);
115
- color: var(--data-card-item-disc-color);
115
+ color: var(--data-card-item-disc-color, var(--md-sys-color-tertiary));
116
116
  }
117
117
  `
118
118
  ]
@@ -545,6 +545,10 @@ export class DataGridBody extends LitElement {
545
545
  const opacity = selectBlock.style.opacity
546
546
 
547
547
  selectBlock.setAttribute('data-tooltip', 'copied to clipboard!')
548
+ const rect = selectBlock.getBoundingClientRect()
549
+ selectBlock.style.setProperty('--tooltip-top', `${rect.top}px`)
550
+ selectBlock.style.setProperty('--tooltip-left', `${rect.left}px`)
551
+
548
552
  selectBlock.style.backgroundColor = 'red'
549
553
  selectBlock.style.opacity = '0.5'
550
554
  await sleep(500)
@@ -3,10 +3,10 @@ import { css, html, LitElement, PropertyValues, TemplateResult } from 'lit'
3
3
  import { customElement, property } from 'lit/decorators.js'
4
4
 
5
5
  import { TooltipStyles } from '@operato/styles'
6
+ import { TooltipReactiveController } from '@operato/utils'
6
7
 
7
8
  import { ZERO_COLUMN } from '../configure/zero-config'
8
9
  import { ColumnConfig, GristRecord } from '../types'
9
- import { getRenderer } from '../renderers'
10
10
 
11
11
  const DEFAULT_TEXT_ALIGN = 'left'
12
12
 
@@ -103,6 +103,8 @@ export class DataGridField extends LitElement {
103
103
  private _onFieldChange: (e: Event) => void = e => {}
104
104
  private _onKeydownInEditingMode: (e: KeyboardEvent) => void = e => {}
105
105
 
106
+ private tooltipController?: TooltipReactiveController = new TooltipReactiveController(this)
107
+
106
108
  render(): TemplateResult {
107
109
  if (!this.column) {
108
110
  return html``
@@ -8,7 +8,7 @@ import throttle from 'lodash-es/throttle'
8
8
 
9
9
  import { OxPopup } from '@operato/popup'
10
10
  import { TooltipStyles } from '@operato/styles'
11
- import { closestElement, detectOverflow } from '@operato/utils'
11
+ import { TooltipReactiveController, closestElement } from '@operato/utils'
12
12
 
13
13
  import { ZERO_COLUMNS, ZERO_DATA } from '../configure/zero-config'
14
14
  import { FilterStyles } from '../filters/filter-styles'
@@ -163,6 +163,8 @@ export class DataGridHeader extends LitElement {
163
163
  private _lastAccVal?: number
164
164
  private _throttledNotifier?: any
165
165
 
166
+ private tooltipController?: TooltipReactiveController = new TooltipReactiveController(this)
167
+
166
168
  connectedCallback() {
167
169
  super.connectedCallback()
168
170
 
@@ -232,19 +234,9 @@ export class DataGridHeader extends LitElement {
232
234
  >
233
235
  <span
234
236
  for-title
237
+ data-reactive-tooltip
235
238
  style="text-align:${align || column.record.align || 'left'};"
236
239
  @click=${(e: MouseEvent) => this._changeSort(column)}
237
- @mouseover=${(e: MouseEvent) => {
238
- const element = e.target as HTMLSpanElement
239
-
240
- if (detectOverflow(element)) {
241
- element.setAttribute('data-tooltip', element.textContent!.trim())
242
- }
243
- }}
244
- @mouseout=${(e: MouseEvent) => {
245
- const element = e.target as HTMLSpanElement
246
- element.removeAttribute('data-tooltip')
247
- }}
248
240
  >${this._renderHeader(column)}
249
241
  </span>
250
242
 
@@ -62,7 +62,7 @@ export class RecordPartial extends LitElement {
62
62
  text-indent: 1px;
63
63
  left: var(--spacing-none);
64
64
  top: var(--spacing-none);
65
- color: var(--grid-record-dirty-color);
65
+ color: var(--grid-record-dirty-color, var(--md-sys-color-error));
66
66
  }
67
67
 
68
68
  [content] {
@@ -88,17 +88,17 @@ export class RecordPartial extends LitElement {
88
88
 
89
89
  ox-list-field {
90
90
  font: var(--data-list-item-etc-font);
91
- color: var(--data-list-item-etc-color);
91
+ color: var(--data-list-item-etc-color, var(--md-sys-color-on-surface));
92
92
  }
93
93
 
94
94
  ox-list-field[name] {
95
95
  font: var(--data-list-item-name-font);
96
- color: var(--data-list-item-name-color);
96
+ color: var(--data-list-item-name-color, var(--md-sys-color-secondary));
97
97
  }
98
98
 
99
99
  ox-list-field[desc] {
100
100
  font: var(--data-list-item-disc-font);
101
- color: var(--data-list-item-disc-color);
101
+ color: var(--data-list-item-disc-color, var(--md-sys-color-tertiary));
102
102
  }
103
103
  `
104
104
  ]
@@ -5,6 +5,6 @@ import { html } from 'lit'
5
5
  @customElement('ox-grist-editor-date')
6
6
  export class OxGristEditorDate extends OxGristEditor {
7
7
  get editorTemplate() {
8
- return html` <input type="date" .value=${this.value} /> `
8
+ return html` <input type="date" .value=${this.value} max="9999-12-31" /> `
9
9
  }
10
10
  }
@@ -22,6 +22,6 @@ export class OxGristEditorDateTime extends OxGristEditor {
22
22
  }
23
23
 
24
24
  get editorTemplate() {
25
- return html` <input type="datetime-local" .value=${this.value} /> `
25
+ return html` <input type="datetime-local" .value=${this.value} max="9999-12-31T23:59" /> `
26
26
  }
27
27
  }
@@ -11,6 +11,10 @@ function onmouseover(e: Event) {
11
11
  } catch {}
12
12
 
13
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`)
14
18
  }
15
19
 
16
20
  function onmouseout(e: Event) {
@@ -1,21 +1,9 @@
1
1
  import { html } from 'lit'
2
2
 
3
- import { detectOverflow, format as formatter } from '@operato/utils'
3
+ import { format as formatter } from '@operato/utils'
4
4
 
5
5
  import { FieldRenderer } from '../types'
6
6
 
7
- function onmouseover(e: Event) {
8
- const element = e.target as HTMLSpanElement
9
- if (detectOverflow(element)) {
10
- element.setAttribute('data-tooltip', element.textContent!)
11
- }
12
- }
13
-
14
- function onmouseout(e: Event) {
15
- const element = e.target as HTMLSpanElement
16
- element.removeAttribute('data-tooltip')
17
- }
18
-
19
7
  export const OxGristRendererText: FieldRenderer = (value, column, record, rowIndex, field) => {
20
8
  var { format } = column.record || {}
21
9
 
@@ -24,5 +12,5 @@ export const OxGristRendererText: FieldRenderer = (value, column, record, rowInd
24
12
  text = formatter(format, text)
25
13
  }
26
14
 
27
- return html`<span @mouseover=${onmouseover} @mouseout=${onmouseout}>${text}&nbsp;</span>`
15
+ return html`<span data-reactive-tooltip>${text}&nbsp;</span>`
28
16
  }
@@ -171,3 +171,7 @@ body {
171
171
  --data-card-create-form-padding: 7px;
172
172
  }
173
173
  }
174
+
175
+ body.dark {
176
+ --grid-container-border-color: 1px solid rgba(255, 255, 255, 0.09);
177
+ }