@operato/data-grist 0.3.4 → 0.3.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 (111) hide show
  1. package/CHANGELOG.md +82 -0
  2. package/custom-elements.json +984 -2383
  3. package/demo/index.html +22 -12
  4. package/dist/src/data-card/data-card.js +1 -0
  5. package/dist/src/data-card/data-card.js.map +1 -1
  6. package/dist/src/data-grid/data-grid-field.d.ts +1 -1
  7. package/dist/src/data-grid/data-grid-field.js +3 -1
  8. package/dist/src/data-grid/data-grid-field.js.map +1 -1
  9. package/dist/src/data-grid/data-grid-header.js +13 -7
  10. package/dist/src/data-grid/data-grid-header.js.map +1 -1
  11. package/dist/src/data-grist.js +1 -1
  12. package/dist/src/data-grist.js.map +1 -1
  13. package/dist/src/data-list/data-list.js +1 -0
  14. package/dist/src/data-list/data-list.js.map +1 -1
  15. package/dist/src/filters/filter-checkbox.js +1 -0
  16. package/dist/src/filters/filter-checkbox.js.map +1 -1
  17. package/dist/src/filters/filter-input.js +1 -1
  18. package/dist/src/filters/filter-input.js.map +1 -1
  19. package/dist/src/filters/filter-range-date.js +1 -1
  20. package/dist/src/filters/filter-range-date.js.map +1 -1
  21. package/dist/src/filters/filter-range-number.js +2 -1
  22. package/dist/src/filters/filter-range-number.js.map +1 -1
  23. package/dist/src/filters/filters-form.d.ts +19 -0
  24. package/dist/src/filters/filters-form.js +99 -0
  25. package/dist/src/filters/filters-form.js.map +1 -0
  26. package/dist/src/filters/index.d.ts +1 -0
  27. package/dist/src/filters/index.js +1 -0
  28. package/dist/src/filters/index.js.map +1 -1
  29. package/dist/src/filters/registry.d.ts +5 -5
  30. package/dist/src/filters/registry.js +25 -25
  31. package/dist/src/filters/registry.js.map +1 -1
  32. package/dist/src/gutters/gutter-button.js +1 -0
  33. package/dist/src/gutters/gutter-button.js.map +1 -1
  34. package/dist/src/gutters/gutter-row-selector.js +1 -0
  35. package/dist/src/gutters/gutter-row-selector.js.map +1 -1
  36. package/dist/src/index.d.ts +1 -2
  37. package/dist/src/index.js +1 -2
  38. package/dist/src/index.js.map +1 -1
  39. package/dist/src/record-view/record-view-body.d.ts +1 -1
  40. package/dist/src/record-view/record-view-body.js +5 -5
  41. package/dist/src/record-view/record-view-body.js.map +1 -1
  42. package/dist/src/record-view/record-view.d.ts +1 -1
  43. package/dist/src/record-view/record-view.js +1 -3
  44. package/dist/src/record-view/record-view.js.map +1 -1
  45. package/dist/src/types.d.ts +4 -3
  46. package/dist/src/types.js.map +1 -1
  47. package/dist/tsconfig.tsbuildinfo +1 -1
  48. package/package.json +9 -8
  49. package/src/data-card/data-card.ts +2 -0
  50. package/src/data-grid/data-grid-field.ts +4 -2
  51. package/src/data-grid/data-grid-header.ts +12 -6
  52. package/src/data-grist.ts +1 -1
  53. package/src/data-list/data-list.ts +2 -0
  54. package/src/filters/filter-checkbox.ts +1 -0
  55. package/src/filters/filter-input.ts +1 -1
  56. package/src/filters/filter-range-date.ts +1 -1
  57. package/src/filters/filter-range-number.ts +2 -1
  58. package/src/filters/filters-form.ts +132 -0
  59. package/src/filters/index.ts +2 -0
  60. package/src/filters/registry.ts +26 -26
  61. package/src/gutters/gutter-button.ts +3 -2
  62. package/src/gutters/gutter-row-selector.ts +3 -2
  63. package/src/index.ts +1 -3
  64. package/src/record-view/record-view-body.ts +7 -7
  65. package/src/record-view/record-view.ts +2 -4
  66. package/src/types.ts +34 -4
  67. package/themes/grist-theme.css +2 -22
  68. package/dist/src/interfaces/index.d.ts +0 -2
  69. package/dist/src/interfaces/index.js +0 -3
  70. package/dist/src/interfaces/index.js.map +0 -1
  71. package/dist/src/interfaces/ox-grist-search-form.d.ts +0 -6
  72. package/dist/src/interfaces/ox-grist-search-form.js +0 -2
  73. package/dist/src/interfaces/ox-grist-search-form.js.map +0 -1
  74. package/dist/src/interfaces/ox-search-field.d.ts +0 -39
  75. package/dist/src/interfaces/ox-search-field.js +0 -2
  76. package/dist/src/interfaces/ox-search-field.js.map +0 -1
  77. package/dist/src/search-form/index.d.ts +0 -7
  78. package/dist/src/search-form/index.js +0 -8
  79. package/dist/src/search-form/index.js.map +0 -1
  80. package/dist/src/search-form/ox-basic-field.d.ts +0 -18
  81. package/dist/src/search-form/ox-basic-field.js +0 -75
  82. package/dist/src/search-form/ox-basic-field.js.map +0 -1
  83. package/dist/src/search-form/ox-checkbox-field.d.ts +0 -11
  84. package/dist/src/search-form/ox-checkbox-field.js +0 -60
  85. package/dist/src/search-form/ox-checkbox-field.js.map +0 -1
  86. package/dist/src/search-form/ox-grist-search-form.d.ts +0 -11
  87. package/dist/src/search-form/ox-grist-search-form.js +0 -177
  88. package/dist/src/search-form/ox-grist-search-form.js.map +0 -1
  89. package/dist/src/search-form/ox-number-field.d.ts +0 -14
  90. package/dist/src/search-form/ox-number-field.js +0 -112
  91. package/dist/src/search-form/ox-number-field.js.map +0 -1
  92. package/dist/src/search-form/ox-search-form.d.ts +0 -15
  93. package/dist/src/search-form/ox-search-form.js +0 -53
  94. package/dist/src/search-form/ox-search-form.js.map +0 -1
  95. package/dist/src/search-form/ox-select-field.d.ts +0 -21
  96. package/dist/src/search-form/ox-select-field.js +0 -181
  97. package/dist/src/search-form/ox-select-field.js.map +0 -1
  98. package/dist/src/search-form/ox-text-field.d.ts +0 -11
  99. package/dist/src/search-form/ox-text-field.js +0 -60
  100. package/dist/src/search-form/ox-text-field.js.map +0 -1
  101. package/src/interfaces/index.ts +0 -2
  102. package/src/interfaces/ox-grist-search-form.ts +0 -7
  103. package/src/interfaces/ox-search-field.ts +0 -52
  104. package/src/search-form/index.ts +0 -7
  105. package/src/search-form/ox-basic-field.ts +0 -86
  106. package/src/search-form/ox-checkbox-field.ts +0 -57
  107. package/src/search-form/ox-grist-search-form.ts +0 -200
  108. package/src/search-form/ox-number-field.ts +0 -113
  109. package/src/search-form/ox-search-form.ts +0 -71
  110. package/src/search-form/ox-select-field.ts +0 -189
  111. package/src/search-form/ox-text-field.ts +0 -55
@@ -6,46 +6,46 @@ import { FilterRangeNumber } from './filter-range-number'
6
6
  import { FilterSelect } from './filter-select'
7
7
 
8
8
  var RENDERERS: {
9
- [name: string]: FilterSelectRenderer
9
+ [name: string]: FilterSelectRenderer[]
10
10
  } = {
11
- string: FilterInput,
12
- text: FilterInput,
13
- email: FilterInput,
14
- tel: FilterInput,
15
- integer: FilterRangeNumber,
16
- float: FilterRangeNumber,
17
- number: FilterRangeNumber,
18
- select: FilterSelect,
19
- boolean: FilterCheckbox,
20
- checkbox: FilterCheckbox,
21
- month: FilterRangeDate,
22
- week: FilterRangeDate,
23
- date: FilterRangeDate,
24
- time: FilterRangeDate,
25
- datetime: FilterRangeDate,
26
- color: FilterInput,
27
- progress: FilterRangeNumber,
28
- link: FilterInput,
29
- image: FilterInput,
30
- json5: FilterInput
11
+ string: [FilterInput],
12
+ text: [FilterInput],
13
+ email: [FilterInput],
14
+ tel: [FilterInput],
15
+ integer: [FilterInput, FilterRangeNumber],
16
+ float: [FilterInput, FilterRangeNumber],
17
+ number: [FilterInput, FilterRangeNumber],
18
+ select: [FilterSelect],
19
+ boolean: [FilterCheckbox],
20
+ checkbox: [FilterCheckbox],
21
+ month: [FilterInput, FilterRangeDate],
22
+ week: [FilterInput, FilterRangeDate],
23
+ date: [FilterInput, FilterRangeDate],
24
+ time: [FilterInput, FilterRangeDate],
25
+ datetime: [FilterInput, FilterRangeDate],
26
+ color: [FilterInput],
27
+ progress: [FilterInput, FilterRangeNumber],
28
+ link: [FilterInput],
29
+ image: [FilterInput],
30
+ json5: [FilterInput]
31
31
  }
32
32
 
33
- export function registerRenderer(type: string, renderer: FilterSelectRenderer) {
33
+ export function registerFilterRenderer(type: string, renderer: FilterSelectRenderer[]) {
34
34
  RENDERERS[type] = renderer
35
35
  }
36
36
 
37
- export function unregisterRenderer(type: string): void {
37
+ export function unregisterFilterRenderer(type: string): void {
38
38
  delete RENDERERS[type]
39
39
  }
40
40
 
41
- export function getRenderers(): { [name: string]: FilterSelectRenderer } {
41
+ export function getFilterRenderers(): { [name: string]: FilterSelectRenderer[] } {
42
42
  return { ...RENDERERS }
43
43
  }
44
44
 
45
- export function getRenderer(type: string | FilterSelectRenderer): FilterSelectRenderer {
45
+ export function getFilterRenderer(type: string): FilterSelectRenderer[] {
46
46
  if (typeof type == 'function') {
47
47
  return type
48
48
  }
49
49
 
50
- return RENDERERS[type || 'text'] || FilterSelect
50
+ return RENDERERS[type || 'text'] || [FilterInput]
51
51
  }
@@ -1,9 +1,9 @@
1
1
  import '@material/mwc-icon'
2
2
 
3
- import { FieldRenderer, HeaderRenderer } from '../types'
4
-
5
3
  import { html } from 'lit'
6
4
 
5
+ import { FieldRenderer, HeaderRenderer } from '../types'
6
+
7
7
  export class GutterButton {
8
8
  static instance(config: any = {}) {
9
9
  var { icon = 'edit' } = config
@@ -27,6 +27,7 @@ export class GutterButton {
27
27
  } as HeaderRenderer
28
28
  },
29
29
  record: {
30
+ align: 'center',
30
31
  renderer: function (value, column, record, rowIndex, field) {
31
32
  return html` <mwc-icon style=${inlineRecordStyle}>${iconFn(record)}</mwc-icon> `
32
33
  } as FieldRenderer
@@ -1,9 +1,9 @@
1
- import { FieldRenderer, HeaderRenderer } from '../types'
1
+ import { html } from 'lit'
2
2
 
3
3
  import { DataCard } from '../data-card/data-card'
4
4
  import { DataGrid } from '../data-grid/data-grid'
5
5
  import { DataList } from '../data-list/data-list'
6
- import { html } from 'lit'
6
+ import { FieldRenderer, HeaderRenderer } from '../types'
7
7
 
8
8
  export class GutterRowSelector {
9
9
  static instance(config = {} as any) {
@@ -44,6 +44,7 @@ export class GutterRowSelector {
44
44
  } as HeaderRenderer
45
45
  },
46
46
  record: {
47
+ align: 'center',
47
48
  renderer: function (value, column, record, rowIndex, field) {
48
49
  return html`
49
50
  <input
package/src/index.ts CHANGED
@@ -9,6 +9,4 @@ export * from './renderers'
9
9
  export * from './handlers'
10
10
  export * from './formatters'
11
11
  export * from './gutters'
12
-
13
- export * from './interfaces'
14
- export * from './search-form'
12
+ export * from './filters'
@@ -1,12 +1,12 @@
1
1
  import '@material/mwc-icon'
2
2
  import '../data-grid/data-grid-field'
3
3
 
4
- import { ColumnConfig, GristRecord } from '../types'
5
- import { LitElement, css, html } from 'lit'
4
+ import { css, html, LitElement } from 'lit'
6
5
  import { customElement, property } from 'lit/decorators.js'
7
6
 
8
- import { DataGridField } from '../data-grid/data-grid-field'
9
7
  import { ZERO_RECORD } from '../configure/zero-config'
8
+ import { DataGridField } from '../data-grid/data-grid-field'
9
+ import { ColumnConfig, GristRecord } from '../types'
10
10
 
11
11
  const KEY_ENTER = 13
12
12
  const KEY_ESC = 27
@@ -27,6 +27,8 @@ export class RecordViewBody extends LitElement {
27
27
  }
28
28
 
29
29
  label {
30
+ display: flex;
31
+ align-items: center;
30
32
  position: relative;
31
33
  text-transform: capitalize;
32
34
 
@@ -47,7 +49,6 @@ export class RecordViewBody extends LitElement {
47
49
  }
48
50
 
49
51
  ox-grid-field {
50
- padding: 0 0 5px 0;
51
52
  border-bottom: var(--record-view-border-bottom);
52
53
  font: var(--record-view-font);
53
54
  color: var(--record-view-color);
@@ -84,7 +85,7 @@ export class RecordViewBody extends LitElement {
84
85
  let dirtyFields = record['__dirtyfields__'] || {}
85
86
 
86
87
  return html`
87
- <label ?editable=${editable}>${this._renderLabel(column)} <mwc-icon>edit</mwc-icon></label>
88
+ <label ?editable=${editable}><span>${this._renderLabel(column)}</span> <mwc-icon>edit</mwc-icon></label>
88
89
  <ox-grid-field
89
90
  .rowIndex=${rowIndex}
90
91
  .column=${column}
@@ -127,10 +128,9 @@ export class RecordViewBody extends LitElement {
127
128
  this.editTarget.removeAttribute('editing')
128
129
  this.editTarget = null
129
130
  }
130
- return
131
+ break
131
132
 
132
133
  default:
133
- return
134
134
  }
135
135
  }
136
136
  window.addEventListener('keydown', this._focusedListener)
@@ -1,11 +1,11 @@
1
1
  import '@material/mwc-icon'
2
2
  import './record-view-body'
3
3
 
4
- import { ColumnConfig, GristRecord } from '../types'
5
- import { LitElement, css, html } from 'lit'
4
+ import { css, html, LitElement } from 'lit'
6
5
  import { customElement, property } from 'lit/decorators.js'
7
6
 
8
7
  import { ZERO_RECORD } from '../configure/zero-config'
8
+ import { ColumnConfig, GristRecord } from '../types'
9
9
 
10
10
  @customElement('ox-record-view')
11
11
  export class RecordView extends LitElement {
@@ -24,7 +24,6 @@ export class RecordView extends LitElement {
24
24
  text-align: right;
25
25
  background-color: var(--record-view-footer-background);
26
26
  box-shadow: var(--context-toolbar-shadow-line);
27
- height: var(--record-view-footer-height);
28
27
  }
29
28
 
30
29
  [footer] button {
@@ -32,7 +31,6 @@ export class RecordView extends LitElement {
32
31
  background-color: transparent;
33
32
  border: var(--record-view-footer-button-border);
34
33
  border-width: var(--record-view-footer-button-border-width);
35
- height: var(--record-view-footer-button-height);
36
34
  color: var(--record-view-footer-button-color);
37
35
  font-size: var(--record-view-footer-button-font);
38
36
  line-height: 3;
package/src/types.ts CHANGED
@@ -1,12 +1,13 @@
1
+ import { TemplateResult } from 'lit-html'
2
+
1
3
  import { DataCardField } from './data-card/data-card-field'
2
4
  import { DataCardGutter } from './data-card/data-card-gutter'
5
+ import { RecordCard } from './data-card/record-card'
3
6
  import { DataGridField } from './data-grid/data-grid-field'
4
7
  import { DataListField } from './data-list/data-list-field'
5
8
  import { DataListGutter } from './data-list/data-list-gutter'
6
- import { DataReportField } from './data-report/data-report-field'
7
- import { RecordCard } from './data-card/record-card'
8
9
  import { RecordPartial } from './data-list/record-partial'
9
- import { TemplateResult } from 'lit-html'
10
+ import { DataReportField } from './data-report/data-report-field'
10
11
 
11
12
  export type GristConfig = {
12
13
  columns: ColumnConfig[]
@@ -18,7 +19,36 @@ export type GristConfig = {
18
19
 
19
20
  export type SorterConfig = { name: string; desc?: boolean }
20
21
  export type SortersConfig = SorterConfig[]
21
- export type FilterConfig = { type: string; options?: { [key: string]: any } } | boolean
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
52
 
23
53
  export type PaginationConfig = {
24
54
  page?: number
@@ -3,7 +3,6 @@ body {
3
3
  --grid-container-border-width: 1px 0;
4
4
 
5
5
  --grist-background-color: var(--main-section-background-color);
6
- --grist-padding: var(--padding-wide);
7
6
  --grist-title-margin: 0 0 0 10px;
8
7
  --grist-title-border: none;
9
8
  --grist-title-font: bold 16px var(--theme-font);
@@ -137,38 +136,19 @@ body {
137
136
  --record-view-edit-border-bottom: 2px solid var(--primary-color);
138
137
  --record-view-item-padding: var(--padding-default);
139
138
 
140
- --record-view-footer-height: 36px;
141
139
  --record-view-footer-background: #586272;
142
140
  --record-view-footer-button-border: 1px solid rgba(0, 0, 0, 0.3);
143
141
  --record-view-footer-button-border-width: 0 0 0 1px;
144
- --record-view-footer-button-height: 36px;
145
142
  --record-view-footer-button-font: 17px;
146
143
  --record-view-footer-button-color: var(--theme-white-color);
147
- --record-view-footer-iconbutton-size: var(--fontsize-large);
144
+ --record-view-footer-iconbutton-size: 35px;
148
145
  --record-view-footer-focus-background: var(--primary-color);
149
146
  }
150
147
 
151
148
  @media only screen and (max-width: 460px) {
152
149
  body {
153
- --grist-padding: 0;
150
+ --record-view-label-font: bold 15px/32px var(--theme-font);
154
151
  --record-view-font: normal 15px/32px var(--theme-font);
155
- --record-view-footer-height: 50px;
156
- --record-view-footer-button-height: var(--record-view-footer-height);
157
- --record-view-footer-iconbutton-size: 35px;
158
- --record-view-footer-iconbutton-margin: -2px;
159
- --record-view-footer-iconbutton-display: block;
160
- }
161
- }
162
-
163
- @media (min-width: 461px) and (max-width: 1024px) {
164
- body {
165
- --grist-padding: 0;
166
-
167
- --record-view-footer-height: 50px;
168
- --record-view-footer-button-height: var(--record-view-footer-height);
169
- --record-view-footer-iconbutton-size: 35px;
170
- --record-view-footer-iconbutton-margin: -2px;
171
- --record-view-footer-iconbutton-display: block;
172
152
  }
173
153
  }
174
154
 
@@ -1,2 +0,0 @@
1
- export * from './ox-search-field';
2
- export * from './ox-grist-search-form';
@@ -1,3 +0,0 @@
1
- export * from './ox-search-field';
2
- export * from './ox-grist-search-form';
3
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/interfaces/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA;AACjC,cAAc,wBAAwB,CAAA","sourcesContent":["export * from './ox-search-field'\nexport * from './ox-grist-search-form'\n"]}
@@ -1,6 +0,0 @@
1
- export declare type QueryFilterRangeValue = [from: number, to: number];
2
- export declare type QueryFilter = {
3
- name: string;
4
- operator?: string;
5
- value: any;
6
- };
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=ox-grist-search-form.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ox-grist-search-form.js","sourceRoot":"","sources":["../../../src/interfaces/ox-grist-search-form.ts"],"names":[],"mappings":"","sourcesContent":["export type QueryFilterRangeValue = [from: number, to: number]\n\nexport type QueryFilter = {\n name: string\n operator?: string\n value: any\n}\n"]}
@@ -1,39 +0,0 @@
1
- export declare type OXSearchFieldType = 'select' | 'checkbox' | 'text' | 'number';
2
- export interface OXFieldOptionProps {
3
- name?: string;
4
- value: string;
5
- }
6
- export interface OXBasicFieldProps {
7
- name: string;
8
- type?: OXSearchFieldType;
9
- hidden?: boolean;
10
- id?: string;
11
- placeholder?: string;
12
- handlers?: Record<string, (event: Event) => void>;
13
- defaultValue?: any;
14
- operator?: string;
15
- }
16
- export interface OXTextFieldProps extends OXBasicFieldProps {
17
- defaultValue?: string;
18
- }
19
- export interface OXNumberFieldProps extends OXBasicFieldProps {
20
- min?: number;
21
- max?: number;
22
- step: number;
23
- defaultValue?: number;
24
- }
25
- export interface OXObjectFieldProps extends OXBasicFieldProps {
26
- field: string;
27
- queryName: string;
28
- defaultValue?: Record<string, any>;
29
- }
30
- export interface OXSelectFieldProps extends OXBasicFieldProps {
31
- searchEnable?: boolean;
32
- options: OXFieldOptionProps[];
33
- defaultValue?: any;
34
- }
35
- export interface OXCheckboxFieldProps extends OXBasicFieldProps {
36
- indeterminate?: boolean;
37
- defaultValue?: boolean;
38
- }
39
- export declare type OXSearchFieldProps = OXTextFieldProps | OXNumberFieldProps | OXObjectFieldProps | OXSelectFieldProps | OXCheckboxFieldProps;
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=ox-search-field.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ox-search-field.js","sourceRoot":"","sources":["../../../src/interfaces/ox-search-field.ts"],"names":[],"mappings":"","sourcesContent":["export type OXSearchFieldType = 'select' | 'checkbox' | 'text' | 'number'\n\nexport interface OXFieldOptionProps {\n name?: string\n value: string\n}\n\nexport interface OXBasicFieldProps {\n name: string\n type?: OXSearchFieldType\n hidden?: boolean\n id?: string\n placeholder?: string\n handlers?: Record<string, (event: Event) => void>\n defaultValue?: any\n operator?: string\n}\n\nexport interface OXTextFieldProps extends OXBasicFieldProps {\n defaultValue?: string\n}\n\nexport interface OXNumberFieldProps extends OXBasicFieldProps {\n min?: number\n max?: number\n step: number\n defaultValue?: number\n}\n\nexport interface OXObjectFieldProps extends OXBasicFieldProps {\n field: string\n queryName: string\n defaultValue?: Record<string, any>\n}\n\nexport interface OXSelectFieldProps extends OXBasicFieldProps {\n searchEnable?: boolean\n options: OXFieldOptionProps[]\n defaultValue?: any\n}\n\nexport interface OXCheckboxFieldProps extends OXBasicFieldProps {\n indeterminate?: boolean\n defaultValue?: boolean\n}\n\nexport type OXSearchFieldProps =\n | OXTextFieldProps\n | OXNumberFieldProps\n | OXObjectFieldProps\n | OXSelectFieldProps\n | OXCheckboxFieldProps\n"]}
@@ -1,7 +0,0 @@
1
- export * from './ox-search-form';
2
- export * from './ox-grist-search-form';
3
- export * from './ox-basic-field';
4
- export * from './ox-checkbox-field';
5
- export * from './ox-number-field';
6
- export * from './ox-select-field';
7
- export * from './ox-text-field';
@@ -1,8 +0,0 @@
1
- export * from './ox-search-form';
2
- export * from './ox-grist-search-form';
3
- export * from './ox-basic-field';
4
- export * from './ox-checkbox-field';
5
- export * from './ox-number-field';
6
- export * from './ox-select-field';
7
- export * from './ox-text-field';
8
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/search-form/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA;AAChC,cAAc,wBAAwB,CAAA;AACtC,cAAc,kBAAkB,CAAA;AAChC,cAAc,qBAAqB,CAAA;AACnC,cAAc,mBAAmB,CAAA;AACjC,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA","sourcesContent":["export * from './ox-search-form'\nexport * from './ox-grist-search-form'\nexport * from './ox-basic-field'\nexport * from './ox-checkbox-field'\nexport * from './ox-number-field'\nexport * from './ox-select-field'\nexport * from './ox-text-field'\n"]}
@@ -1,18 +0,0 @@
1
- import { LitElement } from 'lit-element';
2
- import { OXBasicFieldProps } from '../interfaces/ox-search-field';
3
- export declare abstract class OXBasicField extends LitElement {
4
- static styles: import("lit-element").CSSResult[];
5
- field: OXBasicFieldProps;
6
- private form;
7
- value?: any;
8
- abstract setDefaultValue(defaultValue: unknown): void;
9
- get input(): HTMLInputElement | HTMLSelectElement;
10
- connectedCallback(): void;
11
- disconnectedCallback(): void;
12
- firstUpdated(): void;
13
- private findFormElement;
14
- private registerCustomEventHandlers;
15
- private registerBasicEventHandlers;
16
- private appendFormData;
17
- private submit;
18
- }
@@ -1,75 +0,0 @@
1
- import { css, LitElement } from 'lit-element';
2
- export class OXBasicField extends LitElement {
3
- constructor() {
4
- super(...arguments);
5
- this.form = null;
6
- }
7
- get input() {
8
- if (!this.field.name)
9
- throw new Error('No name property provided');
10
- const input = this.renderRoot.querySelector(`input[name=${this.field.name}],select[name=${this.field.name}]`);
11
- if (!input)
12
- throw new Error('Failed to find input element');
13
- return input;
14
- }
15
- connectedCallback() {
16
- var _a;
17
- super.connectedCallback();
18
- this.form = this.findFormElement();
19
- (_a = this.form) === null || _a === void 0 ? void 0 : _a.addEventListener('formdata', this.appendFormData.bind(this));
20
- }
21
- disconnectedCallback() {
22
- var _a;
23
- super.disconnectedCallback();
24
- (_a = this.form) === null || _a === void 0 ? void 0 : _a.removeEventListener('formdata', this.appendFormData.bind(this));
25
- this.form = null;
26
- }
27
- firstUpdated() {
28
- const { handlers } = this.field || {};
29
- this.registerBasicEventHandlers();
30
- if (handlers)
31
- this.registerCustomEventHandlers(handlers);
32
- if (this.field.defaultValue !== undefined)
33
- this.setDefaultValue(this.field.defaultValue);
34
- }
35
- findFormElement() {
36
- const rootNode = this.getRootNode();
37
- const forms = Array.from(rootNode.querySelectorAll('form'));
38
- return forms.find((form) => form.contains(this)) || null;
39
- }
40
- registerCustomEventHandlers(handlers) {
41
- const eventNames = Object.keys(handlers);
42
- if (!eventNames.length)
43
- return;
44
- eventNames.forEach((eventName) => this.input.addEventListener(eventName, handlers[eventName]));
45
- }
46
- registerBasicEventHandlers() {
47
- this.input.onkeydown = (event) => {
48
- if (event.key === 'Enter')
49
- this.submit();
50
- };
51
- }
52
- appendFormData({ formData }) {
53
- formData.append(this.field.name, this.value);
54
- }
55
- submit() {
56
- if (this.form)
57
- this.dispatchEvent(new CustomEvent('submit-field', { composed: true, bubbles: true }));
58
- }
59
- }
60
- OXBasicField.styles = [
61
- css `
62
- input,
63
- select {
64
- background-color: transparent;
65
- border: none;
66
- box-sizing: border-box;
67
- outline: none;
68
- padding: 4px 9px;
69
- font-size: var(--fontsize-default, 14px);
70
- color: var(--primary-text-color, #476172);
71
- font-weight: bold;
72
- }
73
- `
74
- ];
75
- //# sourceMappingURL=ox-basic-field.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ox-basic-field.js","sourceRoot":"","sources":["../../../src/search-form/ox-basic-field.ts"],"names":[],"mappings":"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","sourcesContent":["import { css, LitElement } from 'lit-element'\n\nimport { OXBasicFieldProps } from '../interfaces/ox-search-field'\n\nexport abstract class OXBasicField extends LitElement {\n static styles = [\n css`\n input,\n select {\n background-color: transparent;\n border: none;\n box-sizing: border-box;\n outline: none;\n padding: 4px 9px;\n font-size: var(--fontsize-default, 14px);\n color: var(--primary-text-color, #476172);\n font-weight: bold;\n }\n `\n ]\n\n field!: OXBasicFieldProps\n\n private form: HTMLFormElement | null = null\n value?: any\n\n abstract setDefaultValue(defaultValue: unknown): void\n\n get input(): HTMLInputElement | HTMLSelectElement {\n if (!this.field.name) throw new Error('No name property provided')\n const input: HTMLInputElement | null = this.renderRoot.querySelector(\n `input[name=${this.field.name}],select[name=${this.field.name}]`\n )\n if (!input) throw new Error('Failed to find input element')\n\n return input\n }\n\n override connectedCallback(): void {\n super.connectedCallback()\n this.form = this.findFormElement()\n this.form?.addEventListener('formdata', this.appendFormData.bind(this))\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback()\n this.form?.removeEventListener('formdata', this.appendFormData.bind(this))\n this.form = null\n }\n\n override firstUpdated(): void {\n const { handlers } = this.field || {}\n\n this.registerBasicEventHandlers()\n if (handlers) this.registerCustomEventHandlers(handlers)\n if (this.field.defaultValue !== undefined) this.setDefaultValue(this.field.defaultValue)\n }\n\n private findFormElement(): HTMLFormElement | null {\n const rootNode: HTMLElement = this.getRootNode() as HTMLElement\n const forms: HTMLFormElement[] = Array.from(rootNode.querySelectorAll('form'))\n\n return forms.find((form: HTMLFormElement) => form.contains(this)) || null\n }\n\n private registerCustomEventHandlers(handlers: Record<string, (event: Event) => void>): void {\n const eventNames: string[] = Object.keys(handlers)\n if (!eventNames.length) return\n\n eventNames.forEach((eventName: string) => this.input.addEventListener(eventName, handlers[eventName]))\n }\n\n private registerBasicEventHandlers(): void {\n this.input.onkeydown = (event: KeyboardEvent) => {\n if (event.key === 'Enter') this.submit()\n }\n }\n\n private appendFormData({ formData }: FormDataEvent): void {\n formData.append(this.field.name, this.value)\n }\n\n private submit(): void {\n if (this.form) this.dispatchEvent(new CustomEvent('submit-field', { composed: true, bubbles: true }))\n }\n}\n"]}
@@ -1,11 +0,0 @@
1
- import { TemplateResult } from 'lit';
2
- import { OXCheckboxFieldProps } from '..';
3
- import { OXBasicField } from './ox-basic-field';
4
- export declare class OXCheckboxField extends OXBasicField {
5
- field: OXCheckboxFieldProps;
6
- value?: boolean;
7
- static styles: import("lit").CSSResult[];
8
- setDefaultValue(defaultValue: boolean): void;
9
- render(): TemplateResult;
10
- private onClickHandler;
11
- }
@@ -1,60 +0,0 @@
1
- import { __decorate } from "tslib";
2
- import { css, html } from 'lit';
3
- import { ifDefined } from 'lit-html/directives/if-defined.js';
4
- import { customElement, property } from 'lit/decorators.js';
5
- import { OXBasicField } from './ox-basic-field';
6
- let OXCheckboxField = class OXCheckboxField extends OXBasicField {
7
- setDefaultValue(defaultValue) {
8
- this.value = defaultValue;
9
- }
10
- render() {
11
- const { name, hidden, placeholder, id } = this.field;
12
- return html `<label ?hidden=${hidden}>
13
- <input
14
- id=${ifDefined(id)}
15
- type="checkbox"
16
- name=${name}
17
- .checked=${Boolean(this.value)}
18
- @click=${this.onClickHandler.bind(this)}
19
- />
20
- ${placeholder || name}
21
- </label>`;
22
- }
23
- onClickHandler() {
24
- const checkbox = this.input;
25
- if (!this.field.indeterminate) {
26
- this.value = !this.value;
27
- }
28
- else {
29
- if (this.value === false) {
30
- this.value = undefined;
31
- checkbox.indeterminate = true;
32
- }
33
- else if (this.value === undefined) {
34
- this.value = true;
35
- }
36
- else {
37
- this.value = false;
38
- }
39
- }
40
- }
41
- };
42
- OXCheckboxField.styles = [
43
- css `
44
- label {
45
- font-size: var(--fontsize-default, 14px);
46
- color: var(--primary-text-color, #476172);
47
- }
48
- `
49
- ];
50
- __decorate([
51
- property({ type: Object })
52
- ], OXCheckboxField.prototype, "field", void 0);
53
- __decorate([
54
- property({ type: Boolean })
55
- ], OXCheckboxField.prototype, "value", void 0);
56
- OXCheckboxField = __decorate([
57
- customElement('ox-checkbox-field')
58
- ], OXCheckboxField);
59
- export { OXCheckboxField };
60
- //# sourceMappingURL=ox-checkbox-field.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ox-checkbox-field.js","sourceRoot":"","sources":["../../../src/search-form/ox-checkbox-field.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAkB,MAAM,KAAK,CAAA;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAA;AAC7D,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAG3D,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAG/C,IAAa,eAAe,GAA5B,MAAa,eAAgB,SAAQ,YAAY;IAa/C,eAAe,CAAC,YAAqB;QACnC,IAAI,CAAC,KAAK,GAAG,YAAY,CAAA;IAC3B,CAAC;IAED,MAAM;QACJ,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,CAAA;QAEpD,OAAO,IAAI,CAAA,kBAAkB,MAAM;;aAE1B,SAAS,CAAC,EAAE,CAAC;;eAEX,IAAI;mBACA,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;iBACrB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;;QAEvC,WAAW,IAAI,IAAI;aACd,CAAA;IACX,CAAC;IAEO,cAAc;QACpB,MAAM,QAAQ,GAAqB,IAAI,CAAC,KAAyB,CAAA;QAEjE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;YAC7B,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,CAAA;SACzB;aAAM;YACL,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,EAAE;gBACxB,IAAI,CAAC,KAAK,GAAG,SAAS,CAAA;gBACtB,QAAQ,CAAC,aAAa,GAAG,IAAI,CAAA;aAC9B;iBAAM,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE;gBACnC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;aAClB;iBAAM;gBACL,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;aACnB;SACF;IACH,CAAC;CACF,CAAA;AA5CQ,sBAAM,GAAG;IACd,GAAG,CAAA;;;;;KAKF;CACF,CAAA;AAV2B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;8CAA6B;AAC3B;IAA5B,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;8CAAgB;AAFjC,eAAe;IAD3B,aAAa,CAAC,mBAAmB,CAAC;GACtB,eAAe,CAgD3B;SAhDY,eAAe","sourcesContent":["import { css, html, TemplateResult } from 'lit'\nimport { ifDefined } from 'lit-html/directives/if-defined.js'\nimport { customElement, property } from 'lit/decorators.js'\n\nimport { OXCheckboxFieldProps } from '..'\nimport { OXBasicField } from './ox-basic-field'\n\n@customElement('ox-checkbox-field')\nexport class OXCheckboxField extends OXBasicField {\n @property({ type: Object }) field!: OXCheckboxFieldProps\n @property({ type: Boolean }) value?: boolean\n\n static styles = [\n css`\n label {\n font-size: var(--fontsize-default, 14px);\n color: var(--primary-text-color, #476172);\n }\n `\n ]\n\n setDefaultValue(defaultValue: boolean): void {\n this.value = defaultValue\n }\n\n render(): TemplateResult {\n const { name, hidden, placeholder, id } = this.field\n\n return html`<label ?hidden=${hidden}>\n <input\n id=${ifDefined(id)}\n type=\"checkbox\"\n name=${name}\n .checked=${Boolean(this.value)}\n @click=${this.onClickHandler.bind(this)}\n />\n ${placeholder || name}\n </label>`\n }\n\n private onClickHandler(): void {\n const checkbox: HTMLInputElement = this.input as HTMLInputElement\n\n if (!this.field.indeterminate) {\n this.value = !this.value\n } else {\n if (this.value === false) {\n this.value = undefined\n checkbox.indeterminate = true\n } else if (this.value === undefined) {\n this.value = true\n } else {\n this.value = false\n }\n }\n }\n}\n"]}
@@ -1,11 +0,0 @@
1
- import { GristConfig } from '../types';
2
- import { LitElement, TemplateResult } from 'lit';
3
- import { QueryFilter } from '..';
4
- export declare class OXGristSearchForm extends LitElement {
5
- config: GristConfig;
6
- defaultOperator: string;
7
- private timeout?;
8
- render(): TemplateResult;
9
- private convertToSearchFields;
10
- get queryFilters(): QueryFilter[];
11
- }