@operato/data-grist 1.0.0-beta.11 → 1.0.0-beta.12

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 (40) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/dist/src/filters/filter-input copy.d.ts +2 -0
  3. package/dist/src/filters/filter-input copy.js +25 -0
  4. package/dist/src/filters/filter-input copy.js.map +1 -0
  5. package/dist/src/filters/filter-mwc-checkbox.d.ts +4 -0
  6. package/dist/src/filters/filter-mwc-checkbox.js +30 -0
  7. package/dist/src/filters/filter-mwc-checkbox.js.map +1 -0
  8. package/dist/src/filters/filter-mwc-textfield.d.ts +3 -0
  9. package/dist/src/filters/filter-mwc-textfield.js +27 -0
  10. package/dist/src/filters/filter-mwc-textfield.js.map +1 -0
  11. package/dist/src/filters/grist-filter-registry.d.ts +12 -0
  12. package/dist/src/filters/grist-filter-registry.js +47 -0
  13. package/dist/src/filters/grist-filter-registry.js.map +1 -0
  14. package/dist/src/filters/ox-grist-filter-editor-checkbox.d.ts +5 -0
  15. package/dist/src/filters/ox-grist-filter-editor-checkbox.js +27 -0
  16. package/dist/src/filters/ox-grist-filter-editor-checkbox.js.map +1 -0
  17. package/dist/src/filters/ox-grist-filter-editor-input.d.ts +4 -0
  18. package/dist/src/filters/ox-grist-filter-editor-input.js +54 -0
  19. package/dist/src/filters/ox-grist-filter-editor-input.js.map +1 -0
  20. package/dist/src/filters/ox-grist-filter-editor-select.d.ts +4 -0
  21. package/dist/src/filters/ox-grist-filter-editor-select.js +46 -0
  22. package/dist/src/filters/ox-grist-filter-editor-select.js.map +1 -0
  23. package/dist/src/filters/ox-grist-filter-editor.d.ts +16 -0
  24. package/dist/src/filters/ox-grist-filter-editor.js +122 -0
  25. package/dist/src/filters/ox-grist-filter-editor.js.map +1 -0
  26. package/dist/tsconfig.tsbuildinfo +1 -1
  27. package/package.json +9 -9
  28. package/dist/src/data-grid/event-handlers/data-grid-body-beforeinput-handler.d.ts +0 -7
  29. package/dist/src/data-grid/event-handlers/data-grid-body-beforeinput-handler.js +0 -12
  30. package/dist/src/data-grid/event-handlers/data-grid-body-beforeinput-handler.js.map +0 -1
  31. package/dist/src/data-grid/event-handlers/data-grid-body-input-handler copy.d.ts +0 -7
  32. package/dist/src/data-grid/event-handlers/data-grid-body-input-handler copy.js +0 -88
  33. package/dist/src/data-grid/event-handlers/data-grid-body-input-handler copy.js.map +0 -1
  34. package/dist/src/data-grid/event-handlers/data-grid-body-input-handler.d.ts +0 -7
  35. package/dist/src/data-grid/event-handlers/data-grid-body-input-handler.js +0 -88
  36. package/dist/src/data-grid/event-handlers/data-grid-body-input-handler.js.map +0 -1
  37. package/dist/src/data-grid/event-handlers/data-grid-body-keydown-handler copy.d.ts +0 -7
  38. package/dist/src/data-grid/event-handlers/data-grid-body-keydown-handler copy.js +0 -88
  39. package/dist/src/data-grid/event-handlers/data-grid-body-keydown-handler copy.js.map +0 -1
  40. package/yarn-error.log +0 -17496
package/CHANGELOG.md CHANGED
@@ -3,6 +3,15 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [1.0.0-beta.12](https://github.com/hatiolab/operato/compare/v1.0.0-beta.11...v1.0.0-beta.12) (2022-05-13)
7
+
8
+
9
+ ### :rocket: New Features
10
+
11
+ * storybook started ([90c08c9](https://github.com/hatiolab/operato/commit/90c08c9a15e5fe554baaa1becca07793e8434799))
12
+
13
+
14
+
6
15
  ## [1.0.0-beta.11](https://github.com/hatiolab/operato/compare/v1.0.0-beta.10...v1.0.0-beta.11) (2022-05-01)
7
16
 
8
17
 
@@ -0,0 +1,2 @@
1
+ import { FilterSelectRenderer } from '../types';
2
+ export declare const FilterInput: FilterSelectRenderer;
@@ -0,0 +1,25 @@
1
+ import { html } from 'lit-html';
2
+ export const FilterInput = (column, value, owner) => {
3
+ const filter = column.filter;
4
+ const type = (filter === null || filter === void 0 ? void 0 : filter.type) || column.type;
5
+ return html `
6
+ <input
7
+ type=${type}
8
+ name=${column.name}
9
+ .value=${value === undefined ? '' : value}
10
+ @change=${(e) => {
11
+ const input = e.target;
12
+ input.dispatchEvent(new CustomEvent('filter-change', {
13
+ bubbles: true,
14
+ composed: true,
15
+ detail: {
16
+ name: column.name,
17
+ operator: filter.operator,
18
+ value: input.value
19
+ }
20
+ }));
21
+ }}
22
+ />
23
+ `;
24
+ };
25
+ //# sourceMappingURL=filter-input%20copy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter-input copy.js","sourceRoot":"","sources":["../../../src/filters/filter-input copy.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;AAE/B,MAAM,CAAC,MAAM,WAAW,GAAyB,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;IACxE,MAAM,MAAM,GAAG,MAAM,CAAC,MAA4B,CAAA;IAClD,MAAM,IAAI,GAAG,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,KAAI,MAAM,CAAC,IAAI,CAAA;IAExC,OAAO,IAAI,CAAA;;aAEA,IAAI;aACJ,MAAM,CAAC,IAAI;eACT,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK;gBAC/B,CAAC,CAAc,EAAE,EAAE;QAC3B,MAAM,KAAK,GAAG,CAAC,CAAC,MAA0B,CAAA;QAC1C,KAAK,CAAC,aAAa,CACjB,IAAI,WAAW,CAAC,eAAe,EAAE;YAC/B,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE;gBACN,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,KAAK,EAAE,KAAK,CAAC,KAAK;aACnB;SACF,CAAC,CACH,CAAA;IACH,CAAC;;GAEJ,CAAA;AACH,CAAC,CAAA","sourcesContent":["import { FilterConfigObject, FilterSelectRenderer } from '../types'\n\nimport { html } from 'lit-html'\n\nexport const FilterInput: FilterSelectRenderer = (column, value, owner) => {\n const filter = column.filter as FilterConfigObject\n const type = filter?.type || column.type\n\n return html`\n <input\n type=${type}\n name=${column.name}\n .value=${value === undefined ? '' : value}\n @change=${(e: CustomEvent) => {\n const input = e.target as HTMLInputElement\n input.dispatchEvent(\n new CustomEvent('filter-change', {\n bubbles: true,\n composed: true,\n detail: {\n name: column.name,\n operator: filter.operator,\n value: input.value\n }\n })\n )\n }}\n />\n `\n}\n"]}
@@ -0,0 +1,4 @@
1
+ import '@material/mwc-checkbox';
2
+ import '@material/mwc-formfield';
3
+ import { FilterSelectRenderer } from '../types';
4
+ export declare const FilterMwcCheckbox: FilterSelectRenderer;
@@ -0,0 +1,30 @@
1
+ import '@material/mwc-checkbox';
2
+ import '@material/mwc-formfield';
3
+ import { html } from 'lit-html';
4
+ export const FilterMwcCheckbox = (column, value, owner) => {
5
+ const filter = column.filter;
6
+ const options = filter === null || filter === void 0 ? void 0 : filter.options;
7
+ return html `
8
+ <mwc-formfield label=${column.name}>
9
+ <mwc-checkbox
10
+ name="${column.name}"
11
+ ?checked=${value}
12
+ ?indeterminate=${value === undefined}
13
+ @change=${(e) => {
14
+ ;
15
+ e.target.dispatchEvent(new CustomEvent('filter-change', {
16
+ bubbles: true,
17
+ composed: true,
18
+ detail: {
19
+ name: column.name,
20
+ operator: filter.operator,
21
+ value: e.target.checked
22
+ }
23
+ }));
24
+ }}
25
+ />
26
+ <mwc-formfield />
27
+ </mwc-formfield>
28
+ `;
29
+ };
30
+ //# sourceMappingURL=filter-mwc-checkbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter-mwc-checkbox.js","sourceRoot":"","sources":["../../../src/filters/filter-mwc-checkbox.ts"],"names":[],"mappings":"AAAA,OAAO,wBAAwB,CAAA;AAC/B,OAAO,yBAAyB,CAAA;AAIhC,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;AAE/B,MAAM,CAAC,MAAM,iBAAiB,GAAyB,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;IAC9E,MAAM,MAAM,GAAG,MAAM,CAAC,MAA4B,CAAA;IAClD,MAAM,OAAO,GAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,CAAA;IAE/B,OAAO,IAAI,CAAA;2BACc,MAAM,CAAC,IAAI;;gBAEtB,MAAM,CAAC,IAAI;mBACR,KAAK;yBACC,KAAK,KAAK,SAAS;kBAC1B,CAAC,CAAc,EAAE,EAAE;QAC3B,CAAC;QAAC,CAAC,CAAC,MAAsB,CAAC,aAAa,CACtC,IAAI,WAAW,CAAC,eAAe,EAAE;YAC/B,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE;gBACN,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,KAAK,EAAG,CAAC,CAAC,MAAqD,CAAC,OAAO;aACxE;SACF,CAAC,CACH,CAAA;IACH,CAAC;;;;GAIN,CAAA;AACH,CAAC,CAAA","sourcesContent":["import '@material/mwc-checkbox'\nimport '@material/mwc-formfield'\n\nimport { FilterConfigObject, FilterSelectRenderer } from '../types'\n\nimport { html } from 'lit-html'\n\nexport const FilterMwcCheckbox: FilterSelectRenderer = (column, value, owner) => {\n const filter = column.filter as FilterConfigObject\n const options = filter?.options\n\n return html`\n <mwc-formfield label=${column.name}>\n <mwc-checkbox\n name=\"${column.name}\"\n ?checked=${value}\n ?indeterminate=${value === undefined}\n @change=${(e: CustomEvent) => {\n ;(e.target as HTMLElement).dispatchEvent(\n new CustomEvent('filter-change', {\n bubbles: true,\n composed: true,\n detail: {\n name: column.name,\n operator: filter.operator,\n value: (e.target as Element & { checked: boolean | undefined }).checked\n }\n })\n )\n }}\n />\n <mwc-formfield />\n </mwc-formfield>\n `\n}\n"]}
@@ -0,0 +1,3 @@
1
+ import '@material/mwc-textfield';
2
+ import { FilterSelectRenderer } from '../types';
3
+ export declare const FilterMwcTextField: FilterSelectRenderer;
@@ -0,0 +1,27 @@
1
+ import '@material/mwc-textfield';
2
+ import { html } from 'lit-html';
3
+ export const FilterMwcTextField = (column, value, owner) => {
4
+ const filter = column.filter;
5
+ const type = (filter === null || filter === void 0 ? void 0 : filter.type) || column.type;
6
+ return html `
7
+ <mwc-textfield
8
+ type="${type}"
9
+ label="${column.name}"
10
+ name="${column.name}"
11
+ .value=${value === undefined ? '' : value}
12
+ @change=${(e) => {
13
+ const input = e.target;
14
+ input.dispatchEvent(new CustomEvent('filter-change', {
15
+ bubbles: true,
16
+ composed: true,
17
+ detail: {
18
+ name: column.name,
19
+ operator: filter.operator,
20
+ value: input.value
21
+ }
22
+ }));
23
+ }}
24
+ ></mwc-textfield>
25
+ `;
26
+ };
27
+ //# sourceMappingURL=filter-mwc-textfield.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter-mwc-textfield.js","sourceRoot":"","sources":["../../../src/filters/filter-mwc-textfield.ts"],"names":[],"mappings":"AAAA,OAAO,yBAAyB,CAAA;AAIhC,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;AAE/B,MAAM,CAAC,MAAM,kBAAkB,GAAyB,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;IAC/E,MAAM,MAAM,GAAG,MAAM,CAAC,MAA4B,CAAA;IAClD,MAAM,IAAI,GAAG,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,KAAI,MAAM,CAAC,IAAI,CAAA;IAExC,OAAO,IAAI,CAAA;;cAEC,IAAI;eACH,MAAM,CAAC,IAAI;cACZ,MAAM,CAAC,IAAI;eACV,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK;gBAC/B,CAAC,CAAc,EAAE,EAAE;QAC3B,MAAM,KAAK,GAAG,CAAC,CAAC,MAA0B,CAAA;QAC1C,KAAK,CAAC,aAAa,CACjB,IAAI,WAAW,CAAC,eAAe,EAAE;YAC/B,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE;gBACN,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,KAAK,EAAE,KAAK,CAAC,KAAK;aACnB;SACF,CAAC,CACH,CAAA;IACH,CAAC;;GAEJ,CAAA;AACH,CAAC,CAAA","sourcesContent":["import '@material/mwc-textfield'\n\nimport { FilterConfigObject, FilterSelectRenderer } from '../types'\n\nimport { html } from 'lit-html'\n\nexport const FilterMwcTextField: FilterSelectRenderer = (column, value, owner) => {\n const filter = column.filter as FilterConfigObject\n const type = filter?.type || column.type\n\n return html`\n <mwc-textfield\n type=\"${type}\"\n label=\"${column.name}\"\n name=\"${column.name}\"\n .value=${value === undefined ? '' : value}\n @change=${(e: CustomEvent) => {\n const input = e.target as HTMLInputElement\n input.dispatchEvent(\n new CustomEvent('filter-change', {\n bubbles: true,\n composed: true,\n detail: {\n name: column.name,\n operator: filter.operator,\n value: input.value\n }\n })\n )\n }}\n ></mwc-textfield>\n `\n}\n"]}
@@ -0,0 +1,12 @@
1
+ import { ColumnConfig } from '..';
2
+ import { OxGristFilterEditor } from './ox-grist-filter-editor';
3
+ export declare function registerGristFilterEditor(type: string, renderer: {
4
+ new (): OxGristFilterEditor;
5
+ }): void;
6
+ export declare function unregisterGristFilterEditor(type: string): void;
7
+ export declare function getGristFilterEditors(): {
8
+ [name: string]: {
9
+ new (): OxGristFilterEditor;
10
+ };
11
+ };
12
+ export declare function getGristFilterEditor(type: string): (column: ColumnConfig, value: any, owner: Element) => OxGristFilterEditor;
@@ -0,0 +1,47 @@
1
+ import { OxGristFilterEditorCheckbox } from './ox-grist-filter-editor-checkbox';
2
+ import { OxGristFilterEditorInput } from './ox-grist-filter-editor-input';
3
+ import { OxGristFilterEditorSelect } from './ox-grist-filter-editor-select';
4
+ var EDITORS = {
5
+ select: OxGristFilterEditorSelect,
6
+ boolean: OxGristFilterEditorCheckbox,
7
+ checkbox: OxGristFilterEditorCheckbox,
8
+ string: OxGristFilterEditorInput,
9
+ text: OxGristFilterEditorInput,
10
+ email: OxGristFilterEditorInput,
11
+ tel: OxGristFilterEditorInput,
12
+ integer: OxGristFilterEditorInput,
13
+ float: OxGristFilterEditorInput,
14
+ number: OxGristFilterEditorInput,
15
+ month: OxGristFilterEditorInput,
16
+ week: OxGristFilterEditorInput,
17
+ date: OxGristFilterEditorInput,
18
+ time: OxGristFilterEditorInput,
19
+ datetime: OxGristFilterEditorInput,
20
+ color: OxGristFilterEditorInput,
21
+ progress: OxGristFilterEditorInput
22
+ };
23
+ export function registerGristFilterEditor(type, renderer) {
24
+ EDITORS[type] = renderer;
25
+ }
26
+ export function unregisterGristFilterEditor(type) {
27
+ delete EDITORS[type];
28
+ }
29
+ export function getGristFilterEditors() {
30
+ return { ...EDITORS };
31
+ }
32
+ export function getGristFilterEditor(type) {
33
+ if (typeof type == 'function') {
34
+ return type;
35
+ }
36
+ return function (column, value, owner) {
37
+ var clazz = EDITORS[type || 'text'] || OxGristFilterEditorInput;
38
+ var element = new clazz();
39
+ const { type: columnType, name, filter } = column;
40
+ var { type = columnType, operator } = filter;
41
+ element.name = name;
42
+ element.value = value;
43
+ element.column = column;
44
+ return element;
45
+ };
46
+ }
47
+ //# sourceMappingURL=grist-filter-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grist-filter-registry.js","sourceRoot":"","sources":["../../../src/filters/grist-filter-registry.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,2BAA2B,EAAE,MAAM,mCAAmC,CAAA;AAC/E,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAA;AACzE,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAA;AAE3E,IAAI,OAAO,GAAwD;IACjE,MAAM,EAAE,yBAAyB;IACjC,OAAO,EAAE,2BAA2B;IACpC,QAAQ,EAAE,2BAA2B;IACrC,MAAM,EAAE,wBAAwB;IAChC,IAAI,EAAE,wBAAwB;IAC9B,KAAK,EAAE,wBAAwB;IAC/B,GAAG,EAAE,wBAAwB;IAC7B,OAAO,EAAE,wBAAwB;IACjC,KAAK,EAAE,wBAAwB;IAC/B,MAAM,EAAE,wBAAwB;IAChC,KAAK,EAAE,wBAAwB;IAC/B,IAAI,EAAE,wBAAwB;IAC9B,IAAI,EAAE,wBAAwB;IAC9B,IAAI,EAAE,wBAAwB;IAC9B,QAAQ,EAAE,wBAAwB;IAClC,KAAK,EAAE,wBAAwB;IAC/B,QAAQ,EAAE,wBAAwB;CACnC,CAAA;AAED,MAAM,UAAU,yBAAyB,CAAC,IAAY,EAAE,QAAyC;IAC/F,OAAO,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAA;AAC1B,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,IAAY;IACtD,OAAO,OAAO,CAAC,IAAI,CAAC,CAAA;AACtB,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO,EAAE,GAAG,OAAO,EAAE,CAAA;AACvB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,IAAI,OAAO,IAAI,IAAI,UAAU,EAAE;QAC7B,OAAO,IAAI,CAAA;KACZ;IAED,OAAO,UAAU,MAAoB,EAAE,KAAU,EAAE,KAAc;QAC/D,IAAI,KAAK,GAAG,OAAO,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,wBAAwB,CAAA;QAE/D,IAAI,OAAO,GAAG,IAAI,KAAK,EAAyB,CAAA;QAEhD,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAAA;QACjD,IAAI,EAAE,IAAI,GAAG,UAAU,EAAE,QAAQ,EAAE,GAAG,MAA4B,CAAA;QAElE,OAAO,CAAC,IAAI,GAAG,IAAI,CAAA;QACnB,OAAO,CAAC,KAAK,GAAG,KAAK,CAAA;QACrB,OAAO,CAAC,MAAM,GAAG,MAAM,CAAA;QAEvB,OAAO,OAAO,CAAA;IAChB,CAAC,CAAA;AACH,CAAC","sourcesContent":["import { ColumnConfig, FilterConfigObject } from '..'\nimport { OxGristFilterEditor } from './ox-grist-filter-editor'\nimport { OxGristFilterEditorCheckbox } from './ox-grist-filter-editor-checkbox'\nimport { OxGristFilterEditorInput } from './ox-grist-filter-editor-input'\nimport { OxGristFilterEditorSelect } from './ox-grist-filter-editor-select'\n\nvar EDITORS: { [name: string]: { new (): OxGristFilterEditor } } = {\n select: OxGristFilterEditorSelect,\n boolean: OxGristFilterEditorCheckbox,\n checkbox: OxGristFilterEditorCheckbox,\n string: OxGristFilterEditorInput,\n text: OxGristFilterEditorInput,\n email: OxGristFilterEditorInput,\n tel: OxGristFilterEditorInput,\n integer: OxGristFilterEditorInput,\n float: OxGristFilterEditorInput,\n number: OxGristFilterEditorInput,\n month: OxGristFilterEditorInput,\n week: OxGristFilterEditorInput,\n date: OxGristFilterEditorInput,\n time: OxGristFilterEditorInput,\n datetime: OxGristFilterEditorInput,\n color: OxGristFilterEditorInput,\n progress: OxGristFilterEditorInput\n}\n\nexport function registerGristFilterEditor(type: string, renderer: { new (): OxGristFilterEditor }) {\n EDITORS[type] = renderer\n}\n\nexport function unregisterGristFilterEditor(type: string): void {\n delete EDITORS[type]\n}\n\nexport function getGristFilterEditors(): { [name: string]: { new (): OxGristFilterEditor } } {\n return { ...EDITORS }\n}\n\nexport function getGristFilterEditor(type: string) {\n if (typeof type == 'function') {\n return type\n }\n\n return function (column: ColumnConfig, value: any, owner: Element) {\n var clazz = EDITORS[type || 'text'] || OxGristFilterEditorInput\n\n var element = new clazz() as OxGristFilterEditor\n\n const { type: columnType, name, filter } = column\n var { type = columnType, operator } = filter as FilterConfigObject\n\n element.name = name\n element.value = value\n element.column = column\n\n return element\n }\n}\n"]}
@@ -0,0 +1,5 @@
1
+ import { OxGristFilterEditor } from './ox-grist-filter-editor.js';
2
+ export declare class OxGristFilterEditorCheckbox extends OxGristFilterEditor {
3
+ formatFromEditor(e: Event): boolean;
4
+ get editorTemplate(): import("lit-html").TemplateResult<1>;
5
+ }
@@ -0,0 +1,27 @@
1
+ import { __decorate } from "tslib";
2
+ import { html } from 'lit';
3
+ import { customElement } from 'lit/decorators.js';
4
+ import { OxGristFilterEditor } from './ox-grist-filter-editor.js';
5
+ let OxGristFilterEditorCheckbox = class OxGristFilterEditorCheckbox extends OxGristFilterEditor {
6
+ formatFromEditor(e) {
7
+ return e.target.checked;
8
+ }
9
+ get editorTemplate() {
10
+ var _a;
11
+ const { name, filter } = this.column;
12
+ const indeterminatable = (_a = filter === null || filter === void 0 ? void 0 : filter.options) === null || _a === void 0 ? void 0 : _a.indeterminatable;
13
+ return html `
14
+ <ox-checkbox
15
+ name=${name}
16
+ ?checked=${this.value}
17
+ ?indeterminatable=${indeterminatable === false ? false : true}
18
+ ?indeterminate=${this.value === undefined}
19
+ />
20
+ `;
21
+ }
22
+ };
23
+ OxGristFilterEditorCheckbox = __decorate([
24
+ customElement('ox-grist-filter-editor-checkbox')
25
+ ], OxGristFilterEditorCheckbox);
26
+ export { OxGristFilterEditorCheckbox };
27
+ //# sourceMappingURL=ox-grist-filter-editor-checkbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ox-grist-filter-editor-checkbox.js","sourceRoot":"","sources":["../../../src/filters/ox-grist-filter-editor-checkbox.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAA;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAGjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AAGjE,IAAa,2BAA2B,GAAxC,MAAa,2BAA4B,SAAQ,mBAAmB;IAClE,gBAAgB,CAAC,CAAQ;QACvB,OAAQ,CAAC,CAAC,MAA2B,CAAC,OAAO,CAAA;IAC/C,CAAC;IAED,IAAI,cAAc;;QAChB,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAA;QACpC,MAAM,gBAAgB,GAAG,MAAC,MAA6B,aAA7B,MAAM,uBAAN,MAAM,CAAyB,OAAO,0CAAE,gBAAgB,CAAA;QAElF,OAAO,IAAI,CAAA;;eAEA,IAAI;mBACA,IAAI,CAAC,KAAK;4BACD,gBAAgB,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;yBAC5C,IAAI,CAAC,KAAK,KAAK,SAAS;;KAE5C,CAAA;IACH,CAAC;CACF,CAAA;AAlBY,2BAA2B;IADvC,aAAa,CAAC,iCAAiC,CAAC;GACpC,2BAA2B,CAkBvC;SAlBY,2BAA2B","sourcesContent":["import { html } from 'lit'\nimport { customElement } from 'lit/decorators.js'\n\nimport { FilterConfigObject } from '../types.js'\nimport { OxGristFilterEditor } from './ox-grist-filter-editor.js'\n\n@customElement('ox-grist-filter-editor-checkbox')\nexport class OxGristFilterEditorCheckbox extends OxGristFilterEditor {\n formatFromEditor(e: Event) {\n return (e.target as HTMLInputElement).checked\n }\n\n get editorTemplate() {\n const { name, filter } = this.column\n const indeterminatable = (filter as FilterConfigObject)?.options?.indeterminatable\n\n return html`\n <ox-checkbox\n name=${name}\n ?checked=${this.value}\n ?indeterminatable=${indeterminatable === false ? false : true}\n ?indeterminate=${this.value === undefined}\n />\n `\n }\n}\n"]}
@@ -0,0 +1,4 @@
1
+ import { OxGristFilterEditor } from './ox-grist-filter-editor.js';
2
+ export declare class OxGristFilterEditorInput extends OxGristFilterEditor {
3
+ get editorTemplate(): import("lit-html").TemplateResult<1>;
4
+ }
@@ -0,0 +1,54 @@
1
+ import { __decorate } from "tslib";
2
+ import { html } from 'lit';
3
+ import { customElement } from 'lit/decorators.js';
4
+ import { OxGristFilterEditor } from './ox-grist-filter-editor.js';
5
+ let OxGristFilterEditorInput = class OxGristFilterEditorInput extends OxGristFilterEditor {
6
+ get editorTemplate() {
7
+ const { type: columnType, name, filter } = this.column;
8
+ var { type = columnType, operator } = filter;
9
+ switch (type) {
10
+ case 'integer':
11
+ case 'float':
12
+ case 'number':
13
+ case 'progress':
14
+ type = 'number';
15
+ break;
16
+ case 'datetime':
17
+ type = 'datetime-local';
18
+ break;
19
+ default:
20
+ }
21
+ if (operator === 'between') {
22
+ var [from, to] = this.value instanceof Array ? this.value : [];
23
+ }
24
+ return operator === 'between'
25
+ ? html ` <input
26
+ name=${name}
27
+ type=${type}
28
+ placeholder="from"
29
+ .value=${from}
30
+ from
31
+ @change=${(e) => {
32
+ e.preventDefault();
33
+ e.stopPropagation();
34
+ }}
35
+ @keyup=${(e) => {
36
+ if (e.key !== 'Enter') {
37
+ return;
38
+ }
39
+ this.dispatchEvent(new CustomEvent('change', {
40
+ bubbles: true,
41
+ detail: this.formatFromEditor(e)
42
+ }));
43
+ }}
44
+ />
45
+ ~
46
+ <input name=${name} type=${type} placeholder="to" .value=${to} to />`
47
+ : html ` <input type=${type} name=${name} .value=${this.value} /> `;
48
+ }
49
+ };
50
+ OxGristFilterEditorInput = __decorate([
51
+ customElement('ox-grist-filter-editor-text')
52
+ ], OxGristFilterEditorInput);
53
+ export { OxGristFilterEditorInput };
54
+ //# sourceMappingURL=ox-grist-filter-editor-input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ox-grist-filter-editor-input.js","sourceRoot":"","sources":["../../../src/filters/ox-grist-filter-editor-input.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAA;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAGjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AAGjE,IAAa,wBAAwB,GAArC,MAAa,wBAAyB,SAAQ,mBAAmB;IAC/D,IAAI,cAAc;QAChB,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAA;QACtD,IAAI,EAAE,IAAI,GAAG,UAAU,EAAE,QAAQ,EAAE,GAAG,MAA4B,CAAA;QAElE,QAAQ,IAAI,EAAE;YACZ,KAAK,SAAS,CAAC;YACf,KAAK,OAAO,CAAC;YACb,KAAK,QAAQ,CAAC;YACd,KAAK,UAAU;gBACb,IAAI,GAAG,QAAQ,CAAA;gBACf,MAAK;YAEP,KAAK,UAAU;gBACb,IAAI,GAAG,gBAAgB,CAAA;gBACvB,MAAK;YAEP,QAAQ;SACT;QAED,IAAI,QAAQ,KAAK,SAAS,EAAE;YAC1B,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;SAC/D;QAED,OAAO,QAAQ,KAAK,SAAS;YAC3B,CAAC,CAAC,IAAI,CAAA;mBACO,IAAI;mBACJ,IAAI;;qBAEF,IAAI;;sBAEH,CAAC,CAAQ,EAAE,EAAE;gBACrB,CAAC,CAAC,cAAc,EAAE,CAAA;gBAClB,CAAC,CAAC,eAAe,EAAE,CAAA;YACrB,CAAC;qBACQ,CAAC,CAAgB,EAAE,EAAE;gBAC5B,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,EAAE;oBACrB,OAAM;iBACP;gBACD,IAAI,CAAC,aAAa,CAChB,IAAI,WAAW,CAAC,QAAQ,EAAE;oBACxB,OAAO,EAAE,IAAI;oBACb,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;iBACjC,CAAC,CACH,CAAA;YACH,CAAC;;;wBAGW,IAAI,SAAS,IAAI,4BAA4B,EAAE,QAAQ;YACzE,CAAC,CAAC,IAAI,CAAA,gBAAgB,IAAI,SAAS,IAAI,WAAW,IAAI,CAAC,KAAK,MAAM,CAAA;IACtE,CAAC;CACF,CAAA;AAnDY,wBAAwB;IADpC,aAAa,CAAC,6BAA6B,CAAC;GAChC,wBAAwB,CAmDpC;SAnDY,wBAAwB","sourcesContent":["import { html } from 'lit'\nimport { customElement } from 'lit/decorators.js'\n\nimport { FilterConfigObject } from '../types.js'\nimport { OxGristFilterEditor } from './ox-grist-filter-editor.js'\n\n@customElement('ox-grist-filter-editor-text')\nexport class OxGristFilterEditorInput extends OxGristFilterEditor {\n get editorTemplate() {\n const { type: columnType, name, filter } = this.column\n var { type = columnType, operator } = filter as FilterConfigObject\n\n switch (type) {\n case 'integer':\n case 'float':\n case 'number':\n case 'progress':\n type = 'number'\n break\n\n case 'datetime':\n type = 'datetime-local'\n break\n\n default:\n }\n\n if (operator === 'between') {\n var [from, to] = this.value instanceof Array ? this.value : []\n }\n\n return operator === 'between'\n ? html` <input\n name=${name}\n type=${type}\n placeholder=\"from\"\n .value=${from}\n from\n @change=${(e: Event) => {\n e.preventDefault()\n e.stopPropagation()\n }}\n @keyup=${(e: KeyboardEvent) => {\n if (e.key !== 'Enter') {\n return\n }\n this.dispatchEvent(\n new CustomEvent('change', {\n bubbles: true,\n detail: this.formatFromEditor(e)\n })\n )\n }}\n />\n ~\n <input name=${name} type=${type} placeholder=\"to\" .value=${to} to />`\n : html` <input type=${type} name=${name} .value=${this.value} /> `\n }\n}\n"]}
@@ -0,0 +1,4 @@
1
+ import { OxGristFilterEditor } from './ox-grist-filter-editor.js';
2
+ export declare class OxGristFilterEditorSelect extends OxGristFilterEditor {
3
+ get editorTemplate(): import("lit-html").TemplateResult<1>;
4
+ }
@@ -0,0 +1,46 @@
1
+ import { __decorate } from "tslib";
2
+ import { html } from 'lit';
3
+ import { customElement } from 'lit/decorators.js';
4
+ import { OxGristFilterEditor } from './ox-grist-filter-editor.js';
5
+ let OxGristFilterEditorSelect = class OxGristFilterEditorSelect extends OxGristFilterEditor {
6
+ get editorTemplate() {
7
+ /* value는 filters-form이나 grid-header에서 처리되므로 이 곳에서는 무시한다. */
8
+ const { filter, record } = this.column;
9
+ const { options: filterOptions, operator } = filter;
10
+ var options = filterOptions || record.options || [];
11
+ if (typeof options === 'function') {
12
+ if (!filterOptions) {
13
+ console.warn('ox-grist의 column.filter 속성에서는 column.record.options의 함수형 options을 사용할 수 없으므로, filter 속성에서 재지정해야한다.');
14
+ }
15
+ options = options.call(this.column, this);
16
+ }
17
+ options = options.map((option) => {
18
+ switch (typeof option) {
19
+ case 'string':
20
+ return {
21
+ display: option,
22
+ value: option
23
+ };
24
+ case 'object':
25
+ return {
26
+ display: option.display,
27
+ value: option.value
28
+ };
29
+ default:
30
+ return option;
31
+ }
32
+ });
33
+ return operator === 'in'
34
+ ? html `
35
+ ${options === null || options === void 0 ? void 0 : options.filter((option) => !!option).map((option) => html ` <ox-checkbox option value=${option.value}>${option.display}</ox-checkbox> `)}
36
+ `
37
+ : html `
38
+ ${options === null || options === void 0 ? void 0 : options.map((option) => html ` <div option value=${option.value}>${option.display}&nbsp;</div> `)}
39
+ `;
40
+ }
41
+ };
42
+ OxGristFilterEditorSelect = __decorate([
43
+ customElement('ox-grist-filter-editor-select')
44
+ ], OxGristFilterEditorSelect);
45
+ export { OxGristFilterEditorSelect };
46
+ //# sourceMappingURL=ox-grist-filter-editor-select.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ox-grist-filter-editor-select.js","sourceRoot":"","sources":["../../../src/filters/ox-grist-filter-editor-select.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAA;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAGjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AAGjE,IAAa,yBAAyB,GAAtC,MAAa,yBAA0B,SAAQ,mBAAmB;IAChE,IAAI,cAAc;QAChB,4DAA4D;QAC5D,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAA;QAEtC,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,MAA4B,CAAA;QAEzE,IAAI,OAAO,GAAG,aAAa,IAAI,MAAM,CAAC,OAAO,IAAI,EAAE,CAAA;QAEnD,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE;YACjC,IAAI,CAAC,aAAa,EAAE;gBAClB,OAAO,CAAC,IAAI,CACV,oGAAoG,CACrG,CAAA;aACF;YACD,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;SAC1C;QAED,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAW,EAAE,EAAE;YACpC,QAAQ,OAAO,MAAM,EAAE;gBACrB,KAAK,QAAQ;oBACX,OAAO;wBACL,OAAO,EAAE,MAAM;wBACf,KAAK,EAAE,MAAM;qBACd,CAAA;gBACH,KAAK,QAAQ;oBACX,OAAO;wBACL,OAAO,EAAE,MAAM,CAAC,OAAO;wBACvB,KAAK,EAAE,MAAM,CAAC,KAAK;qBACpB,CAAA;gBACH;oBACE,OAAO,MAAM,CAAA;aAChB;QACH,CAAC,CAAC,CAAA;QAEF,OAAO,QAAQ,KAAK,IAAI;YACtB,CAAC,CAAC,IAAI,CAAA;YACA,OAAO,aAAP,OAAO,uBAAP,OAAO,CACL,MAAM,CAAC,CAAC,MAAuC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAC7D,GAAG,CACF,CAAC,MAAuC,EAAE,EAAE,CAC1C,IAAI,CAAA,8BAA8B,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,OAAO,iBAAiB,CACpF;SACJ;YACH,CAAC,CAAC,IAAI,CAAA;YACA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,GAAG,CACZ,CAAC,MAAuC,EAAE,EAAE,CAC1C,IAAI,CAAA,sBAAsB,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,OAAO,eAAe,CAC1E;SACF,CAAA;IACP,CAAC;CACF,CAAA;AAnDY,yBAAyB;IADrC,aAAa,CAAC,+BAA+B,CAAC;GAClC,yBAAyB,CAmDrC;SAnDY,yBAAyB","sourcesContent":["import { html } from 'lit'\nimport { customElement } from 'lit/decorators.js'\n\nimport { FilterConfigObject } from '../types.js'\nimport { OxGristFilterEditor } from './ox-grist-filter-editor.js'\n\n@customElement('ox-grist-filter-editor-select')\nexport class OxGristFilterEditorSelect extends OxGristFilterEditor {\n get editorTemplate() {\n /* value는 filters-form이나 grid-header에서 처리되므로 이 곳에서는 무시한다. */\n const { filter, record } = this.column\n\n const { options: filterOptions, operator } = filter as FilterConfigObject\n\n var options = filterOptions || record.options || []\n\n if (typeof options === 'function') {\n if (!filterOptions) {\n console.warn(\n 'ox-grist의 column.filter 속성에서는 column.record.options의 함수형 options을 사용할 수 없으므로, filter 속성에서 재지정해야한다.'\n )\n }\n options = options.call(this.column, this)\n }\n\n options = options.map((option: any) => {\n switch (typeof option) {\n case 'string':\n return {\n display: option,\n value: option\n }\n case 'object':\n return {\n display: option.display,\n value: option.value\n }\n default:\n return option\n }\n })\n\n return operator === 'in'\n ? html`\n ${options\n ?.filter((option: { display: string; value: any }) => !!option)\n .map(\n (option: { display: string; value: any }) =>\n html` <ox-checkbox option value=${option.value}>${option.display}</ox-checkbox> `\n )}\n `\n : html`\n ${options?.map(\n (option: { display: string; value: any }) =>\n html` <div option value=${option.value}>${option.display}&nbsp;</div> `\n )}\n `\n }\n}\n"]}
@@ -0,0 +1,16 @@
1
+ import { LitElement } from 'lit';
2
+ import { ColumnConfig } from '../types';
3
+ export declare class OxGristFilterEditor extends LitElement {
4
+ static styles: import("lit").CSSResult;
5
+ name?: string;
6
+ value?: any;
7
+ column: ColumnConfig;
8
+ render(): import("lit-html").TemplateResult<1>;
9
+ get editor(): HTMLElement | null;
10
+ firstUpdated(): Promise<void>;
11
+ select(): void;
12
+ focus(): void;
13
+ _onchange(e: Event): void;
14
+ formatFromEditor(e: Event): any;
15
+ get editorTemplate(): import("lit-html").TemplateResult<1>;
16
+ }
@@ -0,0 +1,122 @@
1
+ import { __decorate } from "tslib";
2
+ import { css, html, LitElement } from 'lit';
3
+ import { customElement, property } from 'lit/decorators.js';
4
+ import { ZERO_COLUMN } from '../configure/zero-config';
5
+ const STYLE = css `
6
+ :host {
7
+ display: flex;
8
+
9
+ align-items: center;
10
+
11
+ width: 100%;
12
+ height: 100%;
13
+
14
+ border: 0;
15
+ background-color: transparent;
16
+ }
17
+
18
+ input::placeholder {
19
+ color: var(--ox-input-placeholder-color);
20
+ opacity: 0.7;
21
+ }
22
+
23
+ input {
24
+ margin: 0 10px 5px 10px;
25
+ padding: var(--ox-input-padding);
26
+ border: var(--ox-input-border);
27
+ border-radius: var(--ox-input-border-radius);
28
+ font: var(--ox-input-font);
29
+ color: var(--ox-input-color, #3a5877);
30
+ }
31
+
32
+ input[type='number'] {
33
+ padding-right: var(--padding-narrow);
34
+ max-width: 100px;
35
+ }
36
+
37
+ input[type='datetime-local'] {
38
+ padding-right: var(--padding-narrow);
39
+ max-width: 170px;
40
+ }
41
+
42
+ input[name='from'] {
43
+ margin: 0 0 5px 10px;
44
+ }
45
+
46
+ input[name='to'] {
47
+ margin: 0 10px 5px 0;
48
+ }
49
+ `;
50
+ let OxGristFilterEditor = class OxGristFilterEditor extends LitElement {
51
+ constructor() {
52
+ super(...arguments);
53
+ this.column = ZERO_COLUMN;
54
+ }
55
+ render() {
56
+ return this.editorTemplate;
57
+ }
58
+ get editor() {
59
+ return this.renderRoot.firstElementChild;
60
+ }
61
+ async firstUpdated() {
62
+ this.renderRoot.addEventListener('change', this._onchange.bind(this));
63
+ const align = this.column.record.align;
64
+ if (align) {
65
+ this.style.textAlign = align;
66
+ this.style.textAlignLast = align; /* for select */
67
+ }
68
+ this.focus();
69
+ await this.updateComplete;
70
+ this.select();
71
+ }
72
+ select() {
73
+ var _a;
74
+ if ((_a = this.editor) === null || _a === void 0 ? void 0 : _a.select) {
75
+ return this.editor.select();
76
+ }
77
+ }
78
+ focus() {
79
+ var _a;
80
+ (_a = this.editor) === null || _a === void 0 ? void 0 : _a.focus();
81
+ }
82
+ _onchange(e) {
83
+ const { name, filter } = this.column;
84
+ this.dispatchEvent(new CustomEvent('filter-change', {
85
+ bubbles: true,
86
+ composed: true,
87
+ detail: {
88
+ name,
89
+ operator: filter === null || filter === void 0 ? void 0 : filter.operator,
90
+ value: this.formatFromEditor(e)
91
+ }
92
+ }));
93
+ }
94
+ formatFromEditor(e) {
95
+ const { filter } = this.column;
96
+ var { operator } = filter;
97
+ if (operator === 'between') {
98
+ Array.from(this.renderRoot.querySelectorAll('input[from], input[to]')).map(input => input.value);
99
+ }
100
+ else {
101
+ return this.renderRoot.querySelector('input').value;
102
+ }
103
+ }
104
+ get editorTemplate() {
105
+ return html ``;
106
+ }
107
+ };
108
+ OxGristFilterEditor.styles = STYLE;
109
+ __decorate([
110
+ property({ type: String })
111
+ ], OxGristFilterEditor.prototype, "name", void 0);
112
+ __decorate([
113
+ property({ type: Object })
114
+ ], OxGristFilterEditor.prototype, "value", void 0);
115
+ __decorate([
116
+ property({ type: Object })
117
+ ], OxGristFilterEditor.prototype, "column", void 0);
118
+ OxGristFilterEditor = __decorate([
119
+ customElement('ox-grist-filter-editor')
120
+ ], OxGristFilterEditor);
121
+ export { OxGristFilterEditor };
122
+ //# sourceMappingURL=ox-grist-filter-editor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ox-grist-filter-editor.js","sourceRoot":"","sources":["../../../src/filters/ox-grist-filter-editor.ts"],"names":[],"mappings":"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","sourcesContent":["import { css, html, LitElement } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\n\nimport { FilterConfigObject } from '..'\nimport { ZERO_COLUMN } from '../configure/zero-config'\nimport { ColumnConfig } from '../types'\n\nconst STYLE = css`\n :host {\n display: flex;\n\n align-items: center;\n\n width: 100%;\n height: 100%;\n\n border: 0;\n background-color: transparent;\n }\n\n input::placeholder {\n color: var(--ox-input-placeholder-color);\n opacity: 0.7;\n }\n\n input {\n margin: 0 10px 5px 10px;\n padding: var(--ox-input-padding);\n border: var(--ox-input-border);\n border-radius: var(--ox-input-border-radius);\n font: var(--ox-input-font);\n color: var(--ox-input-color, #3a5877);\n }\n\n input[type='number'] {\n padding-right: var(--padding-narrow);\n max-width: 100px;\n }\n\n input[type='datetime-local'] {\n padding-right: var(--padding-narrow);\n max-width: 170px;\n }\n\n input[name='from'] {\n margin: 0 0 5px 10px;\n }\n\n input[name='to'] {\n margin: 0 10px 5px 0;\n }\n`\n\n@customElement('ox-grist-filter-editor')\nexport class OxGristFilterEditor extends LitElement {\n static styles = STYLE\n\n @property({ type: String }) name?: string\n @property({ type: Object }) value?: any\n @property({ type: Object }) column: ColumnConfig = ZERO_COLUMN\n\n render() {\n return this.editorTemplate\n }\n\n get editor(): HTMLElement | null {\n return this.renderRoot.firstElementChild as HTMLElement\n }\n\n async firstUpdated() {\n this.renderRoot.addEventListener('change', this._onchange.bind(this))\n\n const align = this.column.record.align\n if (align) {\n this.style.textAlign = align\n this.style.textAlignLast = align /* for select */\n }\n\n this.focus()\n await this.updateComplete\n this.select()\n }\n\n select() {\n if ((this.editor as HTMLInputElement)?.select) {\n return (this.editor as HTMLInputElement).select()\n }\n }\n\n focus() {\n this.editor?.focus()\n }\n\n _onchange(e: Event): void {\n const { name, filter } = this.column\n\n this.dispatchEvent(\n new CustomEvent('filter-change', {\n bubbles: true,\n composed: true,\n detail: {\n name,\n operator: (filter as FilterConfigObject)?.operator,\n value: this.formatFromEditor(e)\n }\n })\n )\n }\n\n formatFromEditor(e: Event): any {\n const { filter } = this.column\n var { operator } = filter as FilterConfigObject\n\n if (operator === 'between') {\n Array.from(this.renderRoot.querySelectorAll('input[from], input[to]')).map(\n input => (input as HTMLInputElement).value\n )\n } else {\n return (this.renderRoot.querySelector('input') as HTMLInputElement).value\n }\n }\n\n get editorTemplate() {\n return html``\n }\n}\n"]}