@operato/app 9.0.0-beta.0 → 9.0.0-beta.10

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 (48) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/dist/src/filter-renderer/filter-resource-select.d.ts +1 -1
  3. package/dist/src/filter-renderer/filter-resource-select.js +1 -1
  4. package/dist/src/filter-renderer/filter-resource-select.js.map +1 -1
  5. package/dist/src/filters-form/filter-resource-select.d.ts +1 -1
  6. package/dist/src/filters-form/filter-resource-select.js +1 -1
  7. package/dist/src/filters-form/filter-resource-select.js.map +1 -1
  8. package/dist/src/filters-form/ox-filter-resource-code.js +28 -2
  9. package/dist/src/filters-form/ox-filter-resource-code.js.map +1 -1
  10. package/dist/src/filters-form/ox-filter-resource-object.js +35 -3
  11. package/dist/src/filters-form/ox-filter-resource-object.js.map +1 -1
  12. package/dist/src/grist-editor/index.js +1 -1
  13. package/dist/src/grist-editor/index.js.map +1 -1
  14. package/dist/src/grist-editor/ox-grist-editor-resource-id.js +9 -0
  15. package/dist/src/grist-editor/ox-grist-editor-resource-id.js.map +1 -1
  16. package/dist/src/grist-editor/ox-grist-editor-resource-object-legacy.js +15 -0
  17. package/dist/src/grist-editor/ox-grist-editor-resource-object-legacy.js.map +1 -1
  18. package/dist/src/grist-editor/ox-grist-editor-resource-object.js +15 -0
  19. package/dist/src/grist-editor/ox-grist-editor-resource-object.js.map +1 -1
  20. package/dist/src/grist-editor/ox-grist-renderer-crontab.js +1 -1
  21. package/dist/src/grist-editor/ox-grist-renderer-crontab.js.map +1 -1
  22. package/dist/src/grist-editor/ox-grist-renderer-resource-code.js +7 -2
  23. package/dist/src/grist-editor/ox-grist-renderer-resource-code.js.map +1 -1
  24. package/dist/src/grist-editor/ox-popup-code-input.js +34 -7
  25. package/dist/src/grist-editor/ox-popup-code-input.js.map +1 -1
  26. package/dist/src/grist-editor/ox-popup-privilege-input.js +28 -6
  27. package/dist/src/grist-editor/ox-popup-privilege-input.js.map +1 -1
  28. package/dist/src/input/ox-input-background-pattern.js +16 -2
  29. package/dist/src/input/ox-input-background-pattern.js.map +1 -1
  30. package/dist/src/input/ox-input-fill-style.js +49 -4
  31. package/dist/src/input/ox-input-fill-style.js.map +1 -1
  32. package/dist/src/input/ox-input-graphql.js +47 -6
  33. package/dist/src/input/ox-input-graphql.js.map +1 -1
  34. package/dist/src/property-editor/ox-property-editor-graphql.js +9 -4
  35. package/dist/src/property-editor/ox-property-editor-graphql.js.map +1 -1
  36. package/dist/src/property-editor/ox-property-editor-resource-object.js +9 -0
  37. package/dist/src/property-editor/ox-property-editor-resource-object.js.map +1 -1
  38. package/dist/src/selector/ox-selector-resource-id.js +63 -7
  39. package/dist/src/selector/ox-selector-resource-id.js.map +1 -1
  40. package/dist/src/selector/ox-selector-resource-object-legacy.js +129 -40
  41. package/dist/src/selector/ox-selector-resource-object-legacy.js.map +1 -1
  42. package/dist/src/selector/ox-selector-resource-object.js +139 -50
  43. package/dist/src/selector/ox-selector-resource-object.js.map +1 -1
  44. package/dist/stories/ox-selector-resource-object.stories.d.ts +1 -1
  45. package/dist/stories/ox-selector-resource-object.stories.js +1 -1
  46. package/dist/stories/ox-selector-resource-object.stories.js.map +1 -1
  47. package/dist/tsconfig.tsbuildinfo +1 -1
  48. package/package.json +15 -14
package/CHANGELOG.md CHANGED
@@ -3,6 +3,50 @@
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
+ ## [9.0.0-beta.10](https://github.com/hatiolab/operato/compare/v9.0.0-beta.9...v9.0.0-beta.10) (2025-01-25)
7
+
8
+
9
+ ### :bug: Bug Fix
10
+
11
+ * tweak tsconfig.json ([3c424b1](https://github.com/hatiolab/operato/commit/3c424b18d046f95d5619076d113d49a4b4dc9bbb))
12
+
13
+
14
+
15
+ ## [9.0.0-beta.7](https://github.com/hatiolab/operato/compare/v9.0.0-beta.6...v9.0.0-beta.7) (2025-01-20)
16
+
17
+ **Note:** Version bump only for package @operato/app
18
+
19
+
20
+
21
+
22
+
23
+ ## [9.0.0-beta.6](https://github.com/hatiolab/operato/compare/v9.0.0-beta.5...v9.0.0-beta.6) (2025-01-20)
24
+
25
+
26
+ ### :bug: Bug Fix
27
+
28
+ * esm module ([9642b97](https://github.com/hatiolab/operato/commit/9642b97650623d9ce71f6db0fd1995a2379205b5))
29
+
30
+
31
+
32
+ ## [9.0.0-beta.5](https://github.com/hatiolab/operato/compare/v9.0.0-beta.4...v9.0.0-beta.5) (2025-01-20)
33
+
34
+
35
+ ### :bug: Bug Fix
36
+
37
+ * esm module ([1319b00](https://github.com/hatiolab/operato/commit/1319b00d6955a514f63b3469fb514a28f84168a2))
38
+
39
+
40
+
41
+ ## [9.0.0-beta.4](https://github.com/hatiolab/operato/compare/v9.0.0-beta.3...v9.0.0-beta.4) (2025-01-20)
42
+
43
+
44
+ ### :bug: Bug Fix
45
+
46
+ * esm module ([0402232](https://github.com/hatiolab/operato/commit/04022327fa47eac64eaf3c56eeec55b9ace13e0e))
47
+
48
+
49
+
6
50
  ## [9.0.0-beta.0](https://github.com/hatiolab/operato/compare/v8.0.0-beta.11...v9.0.0-beta.0) (2025-01-13)
7
51
 
8
52
  **Note:** Version bump only for package @operato/app
@@ -1,4 +1,4 @@
1
1
  import '@operato/input/ox-checkbox.js';
2
- import '../selector/ox-selector-resource-id';
2
+ import '../selector/ox-selector-resource-id.js';
3
3
  import { FilterSelectRenderer } from '@operato/data-grist';
4
4
  export declare const FilterResourceSelect: FilterSelectRenderer;
@@ -1,5 +1,5 @@
1
1
  import '@operato/input/ox-checkbox.js';
2
- import '../selector/ox-selector-resource-id';
2
+ import '../selector/ox-selector-resource-id.js';
3
3
  import { html } from 'lit-html';
4
4
  import { i18next } from '@operato/i18n';
5
5
  import { openPopup } from '@operato/layout';
@@ -1 +1 @@
1
- {"version":3,"file":"filter-resource-select.js","sourceRoot":"","sources":["../../../src/filter-renderer/filter-resource-select.ts"],"names":[],"mappings":"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","sourcesContent":["import '@operato/input/ox-checkbox.js'\nimport '../selector/ox-selector-resource-id'\n\nimport { html } from 'lit-html'\n\nimport { ColumnConfig, FilterConfigObject, FilterSelectRenderer } from '@operato/data-grist'\nimport { i18next } from '@operato/i18n'\nimport { openPopup } from '@operato/layout'\n\ntype SelectedCallback = (value: { id: string; name: string; description: string }) => void\n\nfunction openResourceSelector(column: ColumnConfig, value: any, confirmCallback: SelectedCallback) {\n const { queryName, select, list, basicArgs, valueField = 'id', title } = column.record.options\n\n var actualValue\n if (typeof valueField === 'function') {\n actualValue = valueField(value)\n } else {\n actualValue = value?.[valueField]\n }\n\n var template = html`\n <ox-selector-resource-object\n .value=${actualValue}\n .confirmCallback=${confirmCallback}\n .queryName=${queryName}\n .columns=${select}\n .list=${list}\n .basicArgs=${basicArgs}\n .valueField=${valueField}\n ></ox-selector-resource-object>\n `\n\n const popup = openPopup(template, {\n backdrop: true,\n size: 'large',\n search: {\n autofocus: true,\n placeholder: title || i18next.t('title.select_item'),\n handler: (instance: any, value: any) => {\n /* instance: template instance */\n instance.searchText(value)\n }\n },\n filter: {\n handler: (instance: any) => {\n /* instance: template instance */\n instance.toggleFilter()\n }\n }\n })\n}\n\nexport const FilterResourceSelect: FilterSelectRenderer = (column, value, owner: any) => {\n const filter = column.filter as FilterConfigObject\n const { operator = 'like' } = filter\n var { idField = 'id', nameField = 'name', descriptionField = 'description' } = column.record.options || {}\n const hideValue = value ? value[idField] : ''\n const text = value ? value[nameField] : ''\n\n return operator === 'like'\n ? html` <input\n type=\"text\"\n name=${column.name}\n .value=${text}\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,\n value: input.value\n }\n })\n )\n }}\n />`\n : operator == 'in'\n ? html``\n : operator === 'eq'\n ? html`\n <input name=\"${column.name}\" .value=${hideValue} type=\"text\" hidden />\n <input\n type=\"text\"\n name=\"${column.name}_disp\"\n .value=${text}\n readonly\n @click=${(e: Event) => {\n e.stopPropagation()\n\n const input = e.target as HTMLInputElement\n\n const confirmCallback = (selected?: { [field: string]: any }) => {\n let disp = selected ? selected[idField] : ''\n\n if (selected && nameField) {\n disp = selected[nameField]\n }\n\n input.value = disp\n\n let codeInput =\n owner.tagName.toLowerCase() == 'ox-grid-header'\n ? owner.renderRoot.querySelector(`[name=\"${column.name}\"]`)\n : owner.renderRoot.querySelector(`form [name=\"${column.name}\"]`)\n\n const objectValue = selected ? selected[idField] : ''\n codeInput.value = objectValue\n\n input.dispatchEvent(new Event('change', { bubbles: true }))\n\n owner.dispatchEvent(\n new CustomEvent('filter-change', {\n bubbles: true,\n composed: true,\n detail: {\n name: column.name,\n operator,\n value: objectValue\n }\n })\n )\n }\n\n openResourceSelector(column, value, confirmCallback)\n }}\n />\n `\n : html``\n}\n"]}
1
+ {"version":3,"file":"filter-resource-select.js","sourceRoot":"","sources":["../../../src/filter-renderer/filter-resource-select.ts"],"names":[],"mappings":"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","sourcesContent":["import '@operato/input/ox-checkbox.js'\nimport '../selector/ox-selector-resource-id.js'\n\nimport { html } from 'lit-html'\n\nimport { ColumnConfig, FilterConfigObject, FilterSelectRenderer } from '@operato/data-grist'\nimport { i18next } from '@operato/i18n'\nimport { openPopup } from '@operato/layout'\n\ntype SelectedCallback = (value: { id: string; name: string; description: string }) => void\n\nfunction openResourceSelector(column: ColumnConfig, value: any, confirmCallback: SelectedCallback) {\n const { queryName, select, list, basicArgs, valueField = 'id', title } = column.record.options\n\n var actualValue\n if (typeof valueField === 'function') {\n actualValue = valueField(value)\n } else {\n actualValue = value?.[valueField]\n }\n\n var template = html`\n <ox-selector-resource-object\n .value=${actualValue}\n .confirmCallback=${confirmCallback}\n .queryName=${queryName}\n .columns=${select}\n .list=${list}\n .basicArgs=${basicArgs}\n .valueField=${valueField}\n ></ox-selector-resource-object>\n `\n\n const popup = openPopup(template, {\n backdrop: true,\n size: 'large',\n search: {\n autofocus: true,\n placeholder: title || i18next.t('title.select_item'),\n handler: (instance: any, value: any) => {\n /* instance: template instance */\n instance.searchText(value)\n }\n },\n filter: {\n handler: (instance: any) => {\n /* instance: template instance */\n instance.toggleFilter()\n }\n }\n })\n}\n\nexport const FilterResourceSelect: FilterSelectRenderer = (column, value, owner: any) => {\n const filter = column.filter as FilterConfigObject\n const { operator = 'like' } = filter\n var { idField = 'id', nameField = 'name', descriptionField = 'description' } = column.record.options || {}\n const hideValue = value ? value[idField] : ''\n const text = value ? value[nameField] : ''\n\n return operator === 'like'\n ? html` <input\n type=\"text\"\n name=${column.name}\n .value=${text}\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,\n value: input.value\n }\n })\n )\n }}\n />`\n : operator == 'in'\n ? html``\n : operator === 'eq'\n ? html`\n <input name=\"${column.name}\" .value=${hideValue} type=\"text\" hidden />\n <input\n type=\"text\"\n name=\"${column.name}_disp\"\n .value=${text}\n readonly\n @click=${(e: Event) => {\n e.stopPropagation()\n\n const input = e.target as HTMLInputElement\n\n const confirmCallback = (selected?: { [field: string]: any }) => {\n let disp = selected ? selected[idField] : ''\n\n if (selected && nameField) {\n disp = selected[nameField]\n }\n\n input.value = disp\n\n let codeInput =\n owner.tagName.toLowerCase() == 'ox-grid-header'\n ? owner.renderRoot.querySelector(`[name=\"${column.name}\"]`)\n : owner.renderRoot.querySelector(`form [name=\"${column.name}\"]`)\n\n const objectValue = selected ? selected[idField] : ''\n codeInput.value = objectValue\n\n input.dispatchEvent(new Event('change', { bubbles: true }))\n\n owner.dispatchEvent(\n new CustomEvent('filter-change', {\n bubbles: true,\n composed: true,\n detail: {\n name: column.name,\n operator,\n value: objectValue\n }\n })\n )\n }\n\n openResourceSelector(column, value, confirmCallback)\n }}\n />\n `\n : html``\n}\n"]}
@@ -1,4 +1,4 @@
1
1
  import '@operato/input/ox-checkbox.js';
2
- import '../selector/ox-selector-resource-object';
2
+ import '../selector/ox-selector-resource-object.js';
3
3
  import { FilterSelectRenderer } from '@operato/form';
4
4
  export declare const FilterResourceSelect: FilterSelectRenderer;
@@ -1,5 +1,5 @@
1
1
  import '@operato/input/ox-checkbox.js';
2
- import '../selector/ox-selector-resource-object';
2
+ import '../selector/ox-selector-resource-object.js';
3
3
  import { html } from 'lit-html';
4
4
  import { i18next } from '@operato/i18n';
5
5
  import { openPopup } from '@operato/layout';
@@ -1 +1 @@
1
- {"version":3,"file":"filter-resource-select.js","sourceRoot":"","sources":["../../../src/filters-form/filter-resource-select.ts"],"names":[],"mappings":"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","sourcesContent":["import '@operato/input/ox-checkbox.js'\nimport '../selector/ox-selector-resource-object'\n\nimport { html } from 'lit-html'\n\nimport { FilterConfig, FilterSelectRenderer } from '@operato/form'\nimport { i18next } from '@operato/i18n'\nimport { openPopup } from '@operato/layout'\nimport { GristRecord } from '@operato/data-grist'\n\ntype SelectedCallback = (value?: Partial<GristRecord>) => void\n\nfunction openResourceSelector(filter: FilterConfig, value: any, confirmCallback: SelectedCallback) {\n const { queryName, select, list, basicArgs, valueField = 'id', title } = filter.options || ({} as any)\n\n var template = html`\n <ox-selector-resource-object\n .value=${value}\n .confirmCallback=${confirmCallback}\n .queryName=${queryName}\n .columns=${select}\n .list=${list}\n .basicArgs=${basicArgs}\n .valueField=${valueField}\n ></ox-selector-resource-object>\n `\n\n const popup = openPopup(template, {\n backdrop: true,\n size: 'large',\n search: {\n autofocus: true,\n placeholder: title || i18next.t('title.select_item'),\n handler: (instance: any, value: any) => {\n /* instance: template instance */\n instance.searchText(value)\n }\n },\n filter: {\n handler: (instance: any) => {\n /* instance: template instance */\n instance.toggleFilter()\n }\n }\n })\n}\n\nexport const FilterResourceSelect: FilterSelectRenderer = (filter, value, owner: any) => {\n const { name, operator = 'like' } = filter\n var { idField = 'id', nameField = 'name', descriptionField = 'description' } = filter.options || ({} as any)\n const hideValue = value ? value[idField] : ''\n const text = value ? value[nameField] : ''\n\n return operator === 'like'\n ? html` <input\n type=\"text\"\n name=${name}\n .value=${text}\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,\n operator,\n value: input.value\n }\n })\n )\n }}\n />`\n : operator == 'in'\n ? html``\n : operator === 'eq'\n ? html`\n <input name=\"${name}\" .value=${hideValue} type=\"text\" hidden />\n <input\n type=\"text\"\n name=\"${name}_disp\"\n .value=${text}\n readonly\n @change=${() => false}\n @click=${(e: Event) => {\n e.stopPropagation()\n\n const input = e.target as HTMLInputElement\n const codeInput =\n owner.tagName.toLowerCase() == 'ox-grid-header'\n ? owner.renderRoot.querySelector(`[name=\"${name}\"]`)\n : owner.renderRoot.querySelector(`form [name=\"${name}\"]`)\n\n const confirmCallback = (selected?: { [field: string]: any }) => {\n let disp = selected ? selected[idField] : ''\n\n if (selected && nameField) {\n disp = selected[nameField]\n }\n input.value = disp\n\n const value = selected ? selected[idField] : ''\n codeInput.value = value\n\n codeInput.dispatchEvent(\n new Event('change', {\n bubbles: true,\n composed: true\n })\n )\n\n owner.dispatchEvent(\n new CustomEvent('filter-change', {\n bubbles: true,\n composed: true,\n detail: {\n name: name,\n operator,\n value\n }\n })\n )\n }\n\n openResourceSelector(filter, codeInput.value, confirmCallback)\n }}\n />\n `\n : html``\n}\n"]}
1
+ {"version":3,"file":"filter-resource-select.js","sourceRoot":"","sources":["../../../src/filters-form/filter-resource-select.ts"],"names":[],"mappings":"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","sourcesContent":["import '@operato/input/ox-checkbox.js'\nimport '../selector/ox-selector-resource-object.js'\n\nimport { html } from 'lit-html'\n\nimport { FilterConfig, FilterSelectRenderer } from '@operato/form'\nimport { i18next } from '@operato/i18n'\nimport { openPopup } from '@operato/layout'\nimport { GristRecord } from '@operato/data-grist'\n\ntype SelectedCallback = (value?: Partial<GristRecord>) => void\n\nfunction openResourceSelector(filter: FilterConfig, value: any, confirmCallback: SelectedCallback) {\n const { queryName, select, list, basicArgs, valueField = 'id', title } = filter.options || ({} as any)\n\n var template = html`\n <ox-selector-resource-object\n .value=${value}\n .confirmCallback=${confirmCallback}\n .queryName=${queryName}\n .columns=${select}\n .list=${list}\n .basicArgs=${basicArgs}\n .valueField=${valueField}\n ></ox-selector-resource-object>\n `\n\n const popup = openPopup(template, {\n backdrop: true,\n size: 'large',\n search: {\n autofocus: true,\n placeholder: title || i18next.t('title.select_item'),\n handler: (instance: any, value: any) => {\n /* instance: template instance */\n instance.searchText(value)\n }\n },\n filter: {\n handler: (instance: any) => {\n /* instance: template instance */\n instance.toggleFilter()\n }\n }\n })\n}\n\nexport const FilterResourceSelect: FilterSelectRenderer = (filter, value, owner: any) => {\n const { name, operator = 'like' } = filter\n var { idField = 'id', nameField = 'name', descriptionField = 'description' } = filter.options || ({} as any)\n const hideValue = value ? value[idField] : ''\n const text = value ? value[nameField] : ''\n\n return operator === 'like'\n ? html` <input\n type=\"text\"\n name=${name}\n .value=${text}\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,\n operator,\n value: input.value\n }\n })\n )\n }}\n />`\n : operator == 'in'\n ? html``\n : operator === 'eq'\n ? html`\n <input name=\"${name}\" .value=${hideValue} type=\"text\" hidden />\n <input\n type=\"text\"\n name=\"${name}_disp\"\n .value=${text}\n readonly\n @change=${() => false}\n @click=${(e: Event) => {\n e.stopPropagation()\n\n const input = e.target as HTMLInputElement\n const codeInput =\n owner.tagName.toLowerCase() == 'ox-grid-header'\n ? owner.renderRoot.querySelector(`[name=\"${name}\"]`)\n : owner.renderRoot.querySelector(`form [name=\"${name}\"]`)\n\n const confirmCallback = (selected?: { [field: string]: any }) => {\n let disp = selected ? selected[idField] : ''\n\n if (selected && nameField) {\n disp = selected[nameField]\n }\n input.value = disp\n\n const value = selected ? selected[idField] : ''\n codeInput.value = value\n\n codeInput.dispatchEvent(\n new Event('change', {\n bubbles: true,\n composed: true\n })\n )\n\n owner.dispatchEvent(\n new CustomEvent('filter-change', {\n bubbles: true,\n composed: true,\n detail: {\n name: name,\n operator,\n value\n }\n })\n )\n }\n\n openResourceSelector(filter, codeInput.value, confirmCallback)\n }}\n />\n `\n : html``\n}\n"]}
@@ -18,6 +18,27 @@ const FETCH_COMMON_CODE_GQL = (codeName) => gql `
18
18
  }
19
19
  `;
20
20
  let OxFilterResourceCode = class OxFilterResourceCode extends OxFormField {
21
+ constructor() {
22
+ super(...arguments);
23
+ Object.defineProperty(this, "column", {
24
+ enumerable: true,
25
+ configurable: true,
26
+ writable: true,
27
+ value: void 0
28
+ });
29
+ Object.defineProperty(this, "value", {
30
+ enumerable: true,
31
+ configurable: true,
32
+ writable: true,
33
+ value: undefined
34
+ });
35
+ Object.defineProperty(this, "codes", {
36
+ enumerable: true,
37
+ configurable: true,
38
+ writable: true,
39
+ value: void 0
40
+ });
41
+ }
21
42
  render() {
22
43
  var _a, _b;
23
44
  const { name, filter } = this.column;
@@ -112,11 +133,16 @@ let OxFilterResourceCode = class OxFilterResourceCode extends OxFormField {
112
133
  this.fetchCodes();
113
134
  }
114
135
  };
115
- OxFilterResourceCode.styles = css `
136
+ Object.defineProperty(OxFilterResourceCode, "styles", {
137
+ enumerable: true,
138
+ configurable: true,
139
+ writable: true,
140
+ value: css `
116
141
  :host {
117
142
  min-width: 100px;
118
143
  }
119
- `;
144
+ `
145
+ });
120
146
  __decorate([
121
147
  property({ type: Object })
122
148
  ], OxFilterResourceCode.prototype, "column", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"ox-filter-resource-code.js","sourceRoot":"","sources":["../../../src/filters-form/ox-filter-resource-code.ts"],"names":[],"mappings":"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","sourcesContent":["import '@operato/input/ox-select.js'\n\nimport gql from 'graphql-tag'\nimport { css, html } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\n\nimport { i18next } from '@operato/i18n'\nimport { FilterConfigObject } from '@operato/data-grist'\nimport { client, gqlContext } from '@operato/graphql'\nimport { OxFormField } from '@operato/input'\n\ntype CommonCodeDetail = {\n name: string\n description: string\n rank: number\n}\n\nconst FETCH_COMMON_CODE_GQL = (codeName: string) => gql`\n{\n commonCode(name: \"${codeName}\") {\n details {\n name\n description\n rank\n }\n }\n}\n`\n\n@customElement('ox-filter-resource-code')\nexport class OxFilterResourceCode extends OxFormField {\n static styles = css`\n :host {\n min-width: 100px;\n }\n `\n\n @property({ type: Object }) column: any\n @property({ type: String }) value?: string\n\n @state() codes?: CommonCodeDetail[]\n\n render() {\n const { name, filter } = this.column\n const operator = (filter as FilterConfigObject).operator\n const { selectDispOpt = 'code-name' } = this.column.record || {}\n\n if (!this.codes) {\n return html`<p>Loading...</p>`\n }\n\n return operator === 'in'\n ? html`\n <ox-select\n .value=${this.value}\n @change=${(e: CustomEvent) => {\n let val = e.detail\n this.value = val?.length > 0 ? val : undefined\n\n this?.dispatchEvent(\n new CustomEvent('change', {\n detail: {\n name,\n operator,\n value: this.value\n }\n })\n )\n }}\n >\n <ox-popup-list multiple attr-selected=\"checked\" with-search align-left>\n <ox-checkbox\n checkAll\n @click=${(e: any) => {\n const checked = e.target.checked\n const val = checked ? this.codes!.map((code: CommonCodeDetail) => code.name) : []\n\n e.target?.dispatchEvent(new CustomEvent('select', { bubbles: true, detail: val }))\n }}\n >${i18next.t('label.all')}</ox-checkbox\n >\n ${this.codes\n ?.filter((code: CommonCodeDetail) => !!code.name)\n .map(\n (code: CommonCodeDetail) => html`\n <ox-checkbox\n option\n value=${code.name}\n @change=${(e: any) => {\n const parent = e.target.parentElement\n const checkCnt = e.target.checked ? 1 : -1\n const checkedLen = parent.querySelectorAll('ox-checkbox[option][checked]').length + checkCnt\n\n parent.querySelector('ox-checkbox[checkAll]').checked =\n this.codes!.filter((code: CommonCodeDetail) => !!code.name).length === checkedLen\n }}\n >${selectDispOpt.replace('name', code.description).replace('code', code.name)}</ox-checkbox\n >\n `\n )}\n </ox-popup-list>\n </ox-select>\n `\n : html`\n <ox-select\n .value=${this.value}\n @change=${(e: CustomEvent) => {\n this.value = e.detail\n this.dispatchEvent(\n new CustomEvent('change', {\n detail: {\n name,\n operator,\n value: this.value\n }\n })\n )\n }}\n >\n <ox-popup-list with-search>\n <div option value=\"\">&nbsp;</div>\n ${this.codes?.map(\n (code: CommonCodeDetail) => html`\n <div option value=${code.name}>\n ${selectDispOpt.replace('name', code.description).replace('code', code.name)}\n </div>\n `\n )}\n </ox-popup-list>\n </ox-select>\n `\n }\n\n async fetchCodes() {\n const { codeName } = this.column.record || {}\n\n if (codeName) {\n const response = await client.query({\n query: FETCH_COMMON_CODE_GQL(codeName),\n context: gqlContext()\n })\n\n this.codes = response?.data?.commonCode?.details || []\n\n this.requestUpdate()\n }\n }\n\n connectedCallback() {\n super.connectedCallback()\n\n this.fetchCodes()\n }\n}\n"]}
1
+ {"version":3,"file":"ox-filter-resource-code.js","sourceRoot":"","sources":["../../../src/filters-form/ox-filter-resource-code.ts"],"names":[],"mappings":"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","sourcesContent":["import '@operato/input/ox-select.js'\n\nimport gql from 'graphql-tag'\nimport { css, html } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\n\nimport { i18next } from '@operato/i18n'\nimport { FilterConfigObject } from '@operato/data-grist'\nimport { client, gqlContext } from '@operato/graphql'\nimport { OxFormField } from '@operato/input'\n\ntype CommonCodeDetail = {\n name: string\n description: string\n rank: number\n}\n\nconst FETCH_COMMON_CODE_GQL = (codeName: string) => gql`\n{\n commonCode(name: \"${codeName}\") {\n details {\n name\n description\n rank\n }\n }\n}\n`\n\n@customElement('ox-filter-resource-code')\nexport class OxFilterResourceCode extends OxFormField {\n static styles = css`\n :host {\n min-width: 100px;\n }\n `\n\n @property({ type: Object }) column: any\n @property({ type: String }) value?: string = undefined\n\n @state() codes?: CommonCodeDetail[]\n\n render() {\n const { name, filter } = this.column\n const operator = (filter as FilterConfigObject).operator\n const { selectDispOpt = 'code-name' } = this.column.record || {}\n\n if (!this.codes) {\n return html`<p>Loading...</p>`\n }\n\n return operator === 'in'\n ? html`\n <ox-select\n .value=${this.value}\n @change=${(e: CustomEvent) => {\n let val = e.detail\n this.value = val?.length > 0 ? val : undefined\n\n this?.dispatchEvent(\n new CustomEvent('change', {\n detail: {\n name,\n operator,\n value: this.value\n }\n })\n )\n }}\n >\n <ox-popup-list multiple attr-selected=\"checked\" with-search align-left>\n <ox-checkbox\n checkAll\n @click=${(e: any) => {\n const checked = e.target.checked\n const val = checked ? this.codes!.map((code: CommonCodeDetail) => code.name) : []\n\n e.target?.dispatchEvent(new CustomEvent('select', { bubbles: true, detail: val }))\n }}\n >${i18next.t('label.all')}</ox-checkbox\n >\n ${this.codes\n ?.filter((code: CommonCodeDetail) => !!code.name)\n .map(\n (code: CommonCodeDetail) => html`\n <ox-checkbox\n option\n value=${code.name}\n @change=${(e: any) => {\n const parent = e.target.parentElement\n const checkCnt = e.target.checked ? 1 : -1\n const checkedLen = parent.querySelectorAll('ox-checkbox[option][checked]').length + checkCnt\n\n parent.querySelector('ox-checkbox[checkAll]').checked =\n this.codes!.filter((code: CommonCodeDetail) => !!code.name).length === checkedLen\n }}\n >${selectDispOpt.replace('name', code.description).replace('code', code.name)}</ox-checkbox\n >\n `\n )}\n </ox-popup-list>\n </ox-select>\n `\n : html`\n <ox-select\n .value=${this.value}\n @change=${(e: CustomEvent) => {\n this.value = e.detail\n this.dispatchEvent(\n new CustomEvent('change', {\n detail: {\n name,\n operator,\n value: this.value\n }\n })\n )\n }}\n >\n <ox-popup-list with-search>\n <div option value=\"\">&nbsp;</div>\n ${this.codes?.map(\n (code: CommonCodeDetail) => html`\n <div option value=${code.name}>\n ${selectDispOpt.replace('name', code.description).replace('code', code.name)}\n </div>\n `\n )}\n </ox-popup-list>\n </ox-select>\n `\n }\n\n async fetchCodes() {\n const { codeName } = this.column.record || {}\n\n if (codeName) {\n const response = await client.query({\n query: FETCH_COMMON_CODE_GQL(codeName),\n context: gqlContext()\n })\n\n this.codes = response?.data?.commonCode?.details || []\n\n this.requestUpdate()\n }\n }\n\n connectedCallback() {\n super.connectedCallback()\n\n this.fetchCodes()\n }\n}\n"]}
@@ -6,6 +6,33 @@ import { i18next } from '@operato/i18n';
6
6
  import { openPopup } from '@operato/layout';
7
7
  import { OxFormField } from '@operato/input';
8
8
  let OxFilterResourceObject = class OxFilterResourceObject extends OxFormField {
9
+ constructor() {
10
+ super(...arguments);
11
+ Object.defineProperty(this, "column", {
12
+ enumerable: true,
13
+ configurable: true,
14
+ writable: true,
15
+ value: void 0
16
+ });
17
+ Object.defineProperty(this, "value", {
18
+ enumerable: true,
19
+ configurable: true,
20
+ writable: true,
21
+ value: undefined
22
+ });
23
+ Object.defineProperty(this, "resourceObject", {
24
+ enumerable: true,
25
+ configurable: true,
26
+ writable: true,
27
+ value: void 0
28
+ });
29
+ Object.defineProperty(this, "popup", {
30
+ enumerable: true,
31
+ configurable: true,
32
+ writable: true,
33
+ value: void 0
34
+ });
35
+ }
9
36
  render() {
10
37
  var { nameField = 'name', descriptionField = 'description' } = this.column.record.options || {};
11
38
  var value = this.resourceObject || {};
@@ -129,8 +156,12 @@ let OxFilterResourceObject = class OxFilterResourceObject extends OxFormField {
129
156
  });
130
157
  }
131
158
  };
132
- OxFilterResourceObject.styles = [
133
- css `
159
+ Object.defineProperty(OxFilterResourceObject, "styles", {
160
+ enumerable: true,
161
+ configurable: true,
162
+ writable: true,
163
+ value: [
164
+ css `
134
165
  :host {
135
166
  display: block;
136
167
  position: relative;
@@ -178,7 +209,8 @@ OxFilterResourceObject.styles = [
178
209
  color: var(--md-sys-color-on-primary-container);
179
210
  }
180
211
  `
181
- ];
212
+ ]
213
+ });
182
214
  __decorate([
183
215
  property({ type: Object })
184
216
  ], OxFilterResourceObject.prototype, "column", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"ox-filter-resource-object.js","sourceRoot":"","sources":["../../../src/filters-form/ox-filter-resource-object.ts"],"names":[],"mappings":"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","sourcesContent":["import '../selector/ox-selector-resource-object.js'\n\nimport { css, html } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\n\nimport { i18next } from '@operato/i18n'\nimport { openPopup, PopupHandle } from '@operato/layout'\nimport { OxFormField } from '@operato/input'\n\n@customElement('ox-filter-resource-object')\nexport class OxFilterResourceObject extends OxFormField {\n static styles = [\n css`\n :host {\n display: block;\n position: relative;\n border-bottom: 1px solid rgba(0, 0, 0, 0.15);\n min-width: 100px;\n\n --ox-select-padding: var(--spacing-tiny);\n --ox-select-font: var(--input-font);\n --ox-select-color: var(--input-color, var(--md-sys-color-on-surface-variant));\n --ox-select-icon-color: var(--theme-primary-text-color, var(--md-sys-color-on-surface-variant));\n --ox-select-icon-hover-color: var(--md-sys-color-on-primary-container, #3c3938);\n }\n\n div {\n width: 100%;\n box-sizing: border-box;\n\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n padding: var(--ox-select-padding);\n font: var(--ox-select-font);\n color: var(--ox-select-color);\n }\n\n span {\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n gap: 4px;\n }\n\n md-icon {\n --md-icon-size: 16px;\n display: block;\n text-align: right;\n color: var(--ox-select-icon-color);\n opacity: 0.7;\n }\n\n div:hover md-icon {\n color: var(--md-sys-color-on-primary-container);\n }\n `\n ]\n\n @property({ type: Object }) column: any\n @property({ type: String }) value?: string\n\n @state() resourceObject?: any\n\n private popup?: PopupHandle\n\n render() {\n var { nameField = 'name', descriptionField = 'description' } = this.column.record.options || {}\n\n var value = this.resourceObject || {}\n var name, description\n\n if (typeof nameField === 'function') {\n name = nameField(value)\n } else {\n name = value[nameField]\n }\n\n if (typeof descriptionField === 'function') {\n description = descriptionField(value)\n } else {\n description = value[descriptionField] && `(${value[descriptionField]})`\n }\n\n return html`\n <div @click=${this._onclick} @keydown=${this._onkeydown}>\n <span tabindex=\"0\" style=\"flex:1\">${name || ''}${(description && `(${description})`) || ''}</span>\n <md-icon>search</md-icon>\n </div>\n `\n }\n\n _onclick(e: Event): void {\n e.stopPropagation()\n this.openSelector()\n }\n\n _onkeydown(e: KeyboardEvent): void {\n const key = e.key\n if (key == 'Enter') {\n e.stopPropagation()\n this.openSelector()\n }\n }\n\n openSelector() {\n if (this.popup) {\n delete this.popup\n }\n\n var {\n title = '',\n idField = 'id',\n nameField = 'name',\n descriptionField = 'description',\n valueField = 'id',\n queryName,\n basicArgs,\n select,\n columns,\n pagination,\n list\n } = this.column.record.options || {}\n\n if (!queryName) {\n console.warn('queryName is empty')\n return\n }\n\n /* select options is only for compatability, it might be able to be deprecated. */\n columns = columns || select\n\n const confirmCallback = (selected?: { [field: string]: any }) => {\n // this.department = selected\n // ? {\n // id: selected.id,\n // controlNo: selected.controlNo,\n // name: selected.name,\n // description: selected.description\n // }\n // : null\n\n // this.value = this.department?.name\n\n // this.dispatchEvent(\n // new CustomEvent('change', {\n // bubbles: true,\n // composed: true,\n // detail: this.value\n // })\n // )\n\n this.resourceObject = selected\n ? {\n ...(columns || [])\n .map((field: any) => field.name)\n .reduce(\n (obj: { [field: string]: any }, fieldName: string) => {\n return (obj = {\n ...obj,\n [fieldName]: selected[fieldName]\n })\n },\n {} as { [field: string]: any }\n ),\n [idField]: selected[idField],\n [nameField]: selected[nameField],\n [descriptionField]: selected[descriptionField]\n }\n : null\n\n this.value = this.resourceObject?.[nameField]\n\n this.dispatchEvent(\n new CustomEvent('change', {\n detail: this.value\n })\n )\n }\n\n var value = this.resourceObject || {}\n var actualValue\n if (typeof valueField === 'function') {\n actualValue = valueField(value)\n } else {\n actualValue = value[valueField]\n }\n\n var template = html`\n <ox-selector-resource-object\n .value=${actualValue}\n .confirmCallback=${confirmCallback.bind(this)}\n .queryName=${queryName}\n .columns=${columns}\n .pagination=${pagination}\n .list=${list}\n .basicArgs=${basicArgs}\n .valueField=${valueField}\n ></ox-selector-resource-object>\n `\n\n this.popup = openPopup(template, {\n backdrop: true,\n size: 'large',\n search: {\n autofocus: true,\n placeholder: title || i18next.t('title.select_item'),\n handler: (instance: any, value: any) => {\n /* instance: template instance */\n instance.searchText(value)\n }\n },\n filter: {\n handler: (instance: any) => {\n /* instance: template instance */\n instance.toggleFilter()\n }\n }\n })\n }\n}\n"]}
1
+ {"version":3,"file":"ox-filter-resource-object.js","sourceRoot":"","sources":["../../../src/filters-form/ox-filter-resource-object.ts"],"names":[],"mappings":"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","sourcesContent":["import '../selector/ox-selector-resource-object.js'\n\nimport { css, html } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\n\nimport { i18next } from '@operato/i18n'\nimport { openPopup, PopupHandle } from '@operato/layout'\nimport { OxFormField } from '@operato/input'\n\n@customElement('ox-filter-resource-object')\nexport class OxFilterResourceObject extends OxFormField {\n static styles = [\n css`\n :host {\n display: block;\n position: relative;\n border-bottom: 1px solid rgba(0, 0, 0, 0.15);\n min-width: 100px;\n\n --ox-select-padding: var(--spacing-tiny);\n --ox-select-font: var(--input-font);\n --ox-select-color: var(--input-color, var(--md-sys-color-on-surface-variant));\n --ox-select-icon-color: var(--theme-primary-text-color, var(--md-sys-color-on-surface-variant));\n --ox-select-icon-hover-color: var(--md-sys-color-on-primary-container, #3c3938);\n }\n\n div {\n width: 100%;\n box-sizing: border-box;\n\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n padding: var(--ox-select-padding);\n font: var(--ox-select-font);\n color: var(--ox-select-color);\n }\n\n span {\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n gap: 4px;\n }\n\n md-icon {\n --md-icon-size: 16px;\n display: block;\n text-align: right;\n color: var(--ox-select-icon-color);\n opacity: 0.7;\n }\n\n div:hover md-icon {\n color: var(--md-sys-color-on-primary-container);\n }\n `\n ]\n\n @property({ type: Object }) column: any\n @property({ type: String }) value?: string = undefined\n\n @state() resourceObject?: any\n\n private popup?: PopupHandle\n\n render() {\n var { nameField = 'name', descriptionField = 'description' } = this.column.record.options || {}\n\n var value = this.resourceObject || {}\n var name, description\n\n if (typeof nameField === 'function') {\n name = nameField(value)\n } else {\n name = value[nameField]\n }\n\n if (typeof descriptionField === 'function') {\n description = descriptionField(value)\n } else {\n description = value[descriptionField] && `(${value[descriptionField]})`\n }\n\n return html`\n <div @click=${this._onclick} @keydown=${this._onkeydown}>\n <span tabindex=\"0\" style=\"flex:1\">${name || ''}${(description && `(${description})`) || ''}</span>\n <md-icon>search</md-icon>\n </div>\n `\n }\n\n _onclick(e: Event): void {\n e.stopPropagation()\n this.openSelector()\n }\n\n _onkeydown(e: KeyboardEvent): void {\n const key = e.key\n if (key == 'Enter') {\n e.stopPropagation()\n this.openSelector()\n }\n }\n\n openSelector() {\n if (this.popup) {\n delete this.popup\n }\n\n var {\n title = '',\n idField = 'id',\n nameField = 'name',\n descriptionField = 'description',\n valueField = 'id',\n queryName,\n basicArgs,\n select,\n columns,\n pagination,\n list\n } = this.column.record.options || {}\n\n if (!queryName) {\n console.warn('queryName is empty')\n return\n }\n\n /* select options is only for compatability, it might be able to be deprecated. */\n columns = columns || select\n\n const confirmCallback = (selected?: { [field: string]: any }) => {\n // this.department = selected\n // ? {\n // id: selected.id,\n // controlNo: selected.controlNo,\n // name: selected.name,\n // description: selected.description\n // }\n // : null\n\n // this.value = this.department?.name\n\n // this.dispatchEvent(\n // new CustomEvent('change', {\n // bubbles: true,\n // composed: true,\n // detail: this.value\n // })\n // )\n\n this.resourceObject = selected\n ? {\n ...(columns || [])\n .map((field: any) => field.name)\n .reduce(\n (obj: { [field: string]: any }, fieldName: string) => {\n return (obj = {\n ...obj,\n [fieldName]: selected[fieldName]\n })\n },\n {} as { [field: string]: any }\n ),\n [idField]: selected[idField],\n [nameField]: selected[nameField],\n [descriptionField]: selected[descriptionField]\n }\n : null\n\n this.value = this.resourceObject?.[nameField]\n\n this.dispatchEvent(\n new CustomEvent('change', {\n detail: this.value\n })\n )\n }\n\n var value = this.resourceObject || {}\n var actualValue\n if (typeof valueField === 'function') {\n actualValue = valueField(value)\n } else {\n actualValue = value[valueField]\n }\n\n var template = html`\n <ox-selector-resource-object\n .value=${actualValue}\n .confirmCallback=${confirmCallback.bind(this)}\n .queryName=${queryName}\n .columns=${columns}\n .pagination=${pagination}\n .list=${list}\n .basicArgs=${basicArgs}\n .valueField=${valueField}\n ></ox-selector-resource-object>\n `\n\n this.popup = openPopup(template, {\n backdrop: true,\n size: 'large',\n search: {\n autofocus: true,\n placeholder: title || i18next.t('title.select_item'),\n handler: (instance: any, value: any) => {\n /* instance: template instance */\n instance.searchText(value)\n }\n },\n filter: {\n handler: (instance: any) => {\n /* instance: template instance */\n instance.toggleFilter()\n }\n }\n })\n }\n}\n"]}
@@ -4,7 +4,7 @@ import { OxGristEditorCode } from './ox-grist-editor-code.js';
4
4
  import { OxGristEditorResourceCode } from './ox-grist-editor-resource-code.js';
5
5
  import { OxGristEditorResourceId } from './ox-grist-editor-resource-id.js';
6
6
  import { OxGristEditorResourceObject } from './ox-grist-editor-resource-object.js';
7
- import { OxGristRendererCrontab } from './ox-grist-renderer-crontab';
7
+ import { OxGristRendererCrontab } from './ox-grist-renderer-crontab.js';
8
8
  import { OxGristRendererResourceId } from './ox-grist-renderer-resource-id.js';
9
9
  import { OxGristRendererResourceObject } from './ox-grist-renderer-resource-object.js';
10
10
  /* register grist renderer/editor for id */
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/grist-editor/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAE5F,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAA;AAC9E,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAA;AAC1E,OAAO,EAAE,2BAA2B,EAAE,MAAM,sCAAsC,CAAA;AAClF,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AACpE,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAA;AAE9E,OAAO,EAAE,6BAA6B,EAAE,MAAM,wCAAwC,CAAA;AAEtF,2CAA2C;AAC3C,cAAc,CAAC,aAAa,EAAE,uBAAuB,CAAC,CAAA;AACtD,cAAc,CAAC,eAAe,EAAE,yBAAyB,CAAC,CAAA;AAC1D,cAAc,CAAC,iBAAiB,EAAE,2BAA2B,CAAC,CAAA;AAC9D,cAAc,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAA;AACzC,cAAc,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAA;AAE7C,gBAAgB,CAAC,aAAa,EAAE,yBAAyB,CAAC,CAAA;AAC1D,gBAAgB,CAAC,eAAe,EAAE,yBAAyB,CAAC,CAAA;AAC5D,gBAAgB,CAAC,iBAAiB,EAAE,6BAA6B,CAAC,CAAA;AAClE,gBAAgB,CAAC,YAAY,EAAE,oBAAoB,CAAC,CAAA;AACpD,gBAAgB,CAAC,WAAW,EAAE,oBAAoB,CAAC,CAAA;AACnD,gBAAgB,CAAC,gBAAgB,EAAE,oBAAoB,CAAC,CAAA;AACxD,gBAAgB,CAAC,SAAS,EAAE,sBAAsB,CAAC,CAAA","sourcesContent":["import { OxGristRendererJson5, registerEditor, registerRenderer } from '@operato/data-grist'\n\nimport { OxGristEditorJson } from './ox-grist-editor-json.js'\nimport { OxGristEditorCode } from './ox-grist-editor-code.js'\nimport { OxGristEditorResourceCode } from './ox-grist-editor-resource-code.js'\nimport { OxGristEditorResourceId } from './ox-grist-editor-resource-id.js'\nimport { OxGristEditorResourceObject } from './ox-grist-editor-resource-object.js'\nimport { OxGristRendererCrontab } from './ox-grist-renderer-crontab'\nimport { OxGristRendererResourceId } from './ox-grist-renderer-resource-id.js'\nimport { OxGristRendererResourceCode } from './ox-grist-renderer-resource-code.js'\nimport { OxGristRendererResourceObject } from './ox-grist-renderer-resource-object.js'\n\n/* register grist renderer/editor for id */\nregisterEditor('resource-id', OxGristEditorResourceId)\nregisterEditor('resource-code', OxGristEditorResourceCode)\nregisterEditor('resource-object', OxGristEditorResourceObject)\nregisterEditor('json', OxGristEditorJson)\nregisterEditor('template', OxGristEditorCode)\n\nregisterRenderer('resource-id', OxGristRendererResourceId)\nregisterRenderer('resource-code', OxGristRendererResourceId)\nregisterRenderer('resource-object', OxGristRendererResourceObject)\nregisterRenderer('parameters', OxGristRendererJson5)\nregisterRenderer('value-map', OxGristRendererJson5)\nregisterRenderer('partition-keys', OxGristRendererJson5)\nregisterRenderer('crontab', OxGristRendererCrontab)\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/grist-editor/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAE5F,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAA;AAC9E,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAA;AAC1E,OAAO,EAAE,2BAA2B,EAAE,MAAM,sCAAsC,CAAA;AAClF,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAA;AACvE,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAA;AAE9E,OAAO,EAAE,6BAA6B,EAAE,MAAM,wCAAwC,CAAA;AAEtF,2CAA2C;AAC3C,cAAc,CAAC,aAAa,EAAE,uBAAuB,CAAC,CAAA;AACtD,cAAc,CAAC,eAAe,EAAE,yBAAyB,CAAC,CAAA;AAC1D,cAAc,CAAC,iBAAiB,EAAE,2BAA2B,CAAC,CAAA;AAC9D,cAAc,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAA;AACzC,cAAc,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAA;AAE7C,gBAAgB,CAAC,aAAa,EAAE,yBAAyB,CAAC,CAAA;AAC1D,gBAAgB,CAAC,eAAe,EAAE,yBAAyB,CAAC,CAAA;AAC5D,gBAAgB,CAAC,iBAAiB,EAAE,6BAA6B,CAAC,CAAA;AAClE,gBAAgB,CAAC,YAAY,EAAE,oBAAoB,CAAC,CAAA;AACpD,gBAAgB,CAAC,WAAW,EAAE,oBAAoB,CAAC,CAAA;AACnD,gBAAgB,CAAC,gBAAgB,EAAE,oBAAoB,CAAC,CAAA;AACxD,gBAAgB,CAAC,SAAS,EAAE,sBAAsB,CAAC,CAAA","sourcesContent":["import { OxGristRendererJson5, registerEditor, registerRenderer } from '@operato/data-grist'\n\nimport { OxGristEditorJson } from './ox-grist-editor-json.js'\nimport { OxGristEditorCode } from './ox-grist-editor-code.js'\nimport { OxGristEditorResourceCode } from './ox-grist-editor-resource-code.js'\nimport { OxGristEditorResourceId } from './ox-grist-editor-resource-id.js'\nimport { OxGristEditorResourceObject } from './ox-grist-editor-resource-object.js'\nimport { OxGristRendererCrontab } from './ox-grist-renderer-crontab.js'\nimport { OxGristRendererResourceId } from './ox-grist-renderer-resource-id.js'\nimport { OxGristRendererResourceCode } from './ox-grist-renderer-resource-code.js'\nimport { OxGristRendererResourceObject } from './ox-grist-renderer-resource-object.js'\n\n/* register grist renderer/editor for id */\nregisterEditor('resource-id', OxGristEditorResourceId)\nregisterEditor('resource-code', OxGristEditorResourceCode)\nregisterEditor('resource-object', OxGristEditorResourceObject)\nregisterEditor('json', OxGristEditorJson)\nregisterEditor('template', OxGristEditorCode)\n\nregisterRenderer('resource-id', OxGristRendererResourceId)\nregisterRenderer('resource-code', OxGristRendererResourceId)\nregisterRenderer('resource-object', OxGristRendererResourceObject)\nregisterRenderer('parameters', OxGristRendererJson5)\nregisterRenderer('value-map', OxGristRendererJson5)\nregisterRenderer('partition-keys', OxGristRendererJson5)\nregisterRenderer('crontab', OxGristRendererCrontab)\n"]}
@@ -6,6 +6,15 @@ import { customElement } from 'lit/decorators.js';
6
6
  import { OxGristEditor } from '@operato/data-grist';
7
7
  import { openPopup } from '@operato/layout';
8
8
  let OxGristEditorResourceId = class OxGristEditorResourceId extends OxGristEditor {
9
+ constructor() {
10
+ super(...arguments);
11
+ Object.defineProperty(this, "popup", {
12
+ enumerable: true,
13
+ configurable: true,
14
+ writable: true,
15
+ value: void 0
16
+ });
17
+ }
9
18
  render() {
10
19
  var { nameField = 'name', descriptionField = 'description' } = this.column.record.options || {};
11
20
  var value = this.value;
@@ -1 +1 @@
1
- {"version":3,"file":"ox-grist-editor-resource-id.js","sourceRoot":"","sources":["../../../src/grist-editor/ox-grist-editor-resource-id.ts"],"names":[],"mappings":"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","sourcesContent":["import '@material/web/icon/icon.js'\nimport '../selector/ox-selector-resource-id.js'\n\nimport { html } from 'lit'\nimport { customElement } from 'lit/decorators.js'\n\nimport { GristRecord, OxGristEditor } from '@operato/data-grist'\nimport { openPopup, PopupHandle } from '@operato/layout'\n\n@customElement('ox-grist-editor-resource-id')\nexport class OxGristEditorResourceId extends OxGristEditor {\n private popup?: PopupHandle\n\n render() {\n var { nameField = 'name', descriptionField = 'description' } = this.column.record.options || {}\n var value = this.value\n\n return html`\n ${!value\n ? html`<span tabindex=\"0\"></span>`\n : html` <span tabindex=\"0\">${value[nameField]} (${value[descriptionField]})</span> `}\n <md-icon>arrow_drop_down</md-icon>\n `\n }\n\n _onclick(e: Event): void {\n e.stopPropagation()\n this.openSelector()\n }\n\n _onkeydown(e: KeyboardEvent): void {\n const key = e.key\n if (key == 'Enter') {\n e.stopPropagation()\n this.openSelector()\n }\n }\n\n openSelector() {\n if (this.popup) {\n delete this.popup\n }\n\n const confirmCallback: (record?: GristRecord) => void = selected => {\n if (!selected) {\n return\n }\n\n var { idField = 'id', nameField = 'name', descriptionField = 'description' } = this.column.record.options || {}\n\n this.dispatchEvent(\n new CustomEvent('field-change', {\n bubbles: true,\n composed: true,\n detail: {\n before: this.value,\n after: selected\n ? {\n [idField]: selected[idField],\n [nameField]: selected[nameField],\n [descriptionField]: selected[descriptionField]\n }\n : null,\n record: this.record,\n column: this.column,\n row: this.row\n }\n })\n )\n }\n\n var value = this.value || {}\n var template = html`\n <ox-selector-resource-id\n .value=${value.id}\n .confirmCallback=${confirmCallback.bind(this)}\n .queryName=${this.column.record.options.queryName}\n .basicArgs=${this.column.record.options.basicArgs}\n ></ox-selector-resource-id>\n `\n\n this.popup = openPopup(template, {\n backdrop: true,\n size: 'large',\n title: 'select item'\n })\n }\n}\n"]}
1
+ {"version":3,"file":"ox-grist-editor-resource-id.js","sourceRoot":"","sources":["../../../src/grist-editor/ox-grist-editor-resource-id.ts"],"names":[],"mappings":"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","sourcesContent":["import '@material/web/icon/icon.js'\nimport '../selector/ox-selector-resource-id.js'\n\nimport { html } from 'lit'\nimport { customElement } from 'lit/decorators.js'\n\nimport { GristRecord, OxGristEditor } from '@operato/data-grist'\nimport { openPopup, PopupHandle } from '@operato/layout'\n\n@customElement('ox-grist-editor-resource-id')\nexport class OxGristEditorResourceId extends OxGristEditor {\n private popup?: PopupHandle\n\n render() {\n var { nameField = 'name', descriptionField = 'description' } = this.column.record.options || {}\n var value = this.value\n\n return html`\n ${!value\n ? html`<span tabindex=\"0\"></span>`\n : html` <span tabindex=\"0\">${value[nameField]} (${value[descriptionField]})</span> `}\n <md-icon>arrow_drop_down</md-icon>\n `\n }\n\n _onclick(e: Event): void {\n e.stopPropagation()\n this.openSelector()\n }\n\n _onkeydown(e: KeyboardEvent): void {\n const key = e.key\n if (key == 'Enter') {\n e.stopPropagation()\n this.openSelector()\n }\n }\n\n openSelector() {\n if (this.popup) {\n delete this.popup\n }\n\n const confirmCallback: (record?: GristRecord) => void = selected => {\n if (!selected) {\n return\n }\n\n var { idField = 'id', nameField = 'name', descriptionField = 'description' } = this.column.record.options || {}\n\n this.dispatchEvent(\n new CustomEvent('field-change', {\n bubbles: true,\n composed: true,\n detail: {\n before: this.value,\n after: selected\n ? {\n [idField]: selected[idField],\n [nameField]: selected[nameField],\n [descriptionField]: selected[descriptionField]\n }\n : null,\n record: this.record,\n column: this.column,\n row: this.row\n }\n })\n )\n }\n\n var value = this.value || {}\n var template = html`\n <ox-selector-resource-id\n .value=${value.id}\n .confirmCallback=${confirmCallback.bind(this)}\n .queryName=${this.column.record.options.queryName}\n .basicArgs=${this.column.record.options.basicArgs}\n ></ox-selector-resource-id>\n `\n\n this.popup = openPopup(template, {\n backdrop: true,\n size: 'large',\n title: 'select item'\n })\n }\n}\n"]}
@@ -6,6 +6,21 @@ import { OxGristEditor } from '@operato/data-grist';
6
6
  import { i18next } from '@operato/i18n';
7
7
  import { openPopup } from '@operato/layout';
8
8
  let OxGristEditorResourceObjectLegacy = class OxGristEditorResourceObjectLegacy extends OxGristEditor {
9
+ constructor() {
10
+ super(...arguments);
11
+ Object.defineProperty(this, "popup", {
12
+ enumerable: true,
13
+ configurable: true,
14
+ writable: true,
15
+ value: void 0
16
+ });
17
+ Object.defineProperty(this, "template", {
18
+ enumerable: true,
19
+ configurable: true,
20
+ writable: true,
21
+ value: void 0
22
+ });
23
+ }
9
24
  get editorTemplate() {
10
25
  var value = this.value || {};
11
26
  var { nameField = 'name', descriptionField = 'description' } = this.column.record.options || {};
@@ -1 +1 @@
1
- {"version":3,"file":"ox-grist-editor-resource-object-legacy.js","sourceRoot":"","sources":["../../../src/grist-editor/ox-grist-editor-resource-object-legacy.ts"],"names":[],"mappings":"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","sourcesContent":["import '../selector/ox-selector-resource-object-legacy.js'\n\nimport { html, TemplateResult } from 'lit'\nimport { customElement } from 'lit/decorators.js'\n\nimport { OxGristEditor } from '@operato/data-grist'\nimport { i18next } from '@operato/i18n'\nimport { openPopup, PopupHandle } from '@operato/layout'\n\n@customElement('ox-grist-editor-resource-object-legacy')\nexport class OxGristEditorResourceObjectLegacy extends OxGristEditor {\n private popup?: PopupHandle\n private template?: TemplateResult\n\n get editorTemplate() {\n var value = this.value || {}\n\n var { nameField = 'name', descriptionField = 'description' } = this.column.record.options || {}\n var name, description\n if (typeof nameField === 'function') {\n name = nameField(value)\n } else {\n name = value[nameField]\n }\n\n if (typeof descriptionField === 'function') {\n description = descriptionField(value)\n } else {\n description = value[descriptionField] && `(${value[descriptionField]})`\n }\n\n return html`\n ${!value\n ? html`<span tabindex=\"0\"></span>`\n : html` <span tabindex=\"0\" style=\"flex:1\">${name || ''}${description || ''}</span> `}\n `\n }\n\n async firstUpdated() {\n super.firstUpdated()\n this.template = ((this.column.record || {}).options || {}).template\n }\n\n _onclick(e: Event): void {\n e.stopPropagation()\n this.openSelector()\n }\n\n _onkeydown(e: KeyboardEvent): void {\n const key = e.key\n if (key == 'Enter') {\n e.stopPropagation()\n this.openSelector()\n }\n }\n\n openSelector() {\n if (this.popup) {\n delete this.popup\n }\n\n var {\n idField = 'id',\n nameField = 'name',\n descriptionField = 'description',\n valueField = 'id',\n queryName,\n basicArgs,\n select,\n list\n } = this.column.record.options || {}\n\n const confirmCallback = (selected?: { [field: string]: any }) => {\n this.dispatchEvent(\n new CustomEvent('field-change', {\n bubbles: true,\n composed: true,\n detail: {\n before: this.value,\n after: selected\n ? {\n ...(this.column.record.options.select || [])\n .map((field: any) => field.name)\n .reduce((obj: { [field: string]: any }, fieldName: string) => {\n return (obj = {\n ...obj,\n [fieldName]: selected[fieldName]\n })\n }, {} as { [field: string]: any }),\n [idField]: selected[idField],\n [nameField]: selected[nameField],\n [descriptionField]: selected[descriptionField]\n }\n : null,\n record: this.record,\n column: this.column,\n row: this.row\n }\n })\n )\n }\n\n var value = this.value || {}\n var actualValue\n if (typeof valueField === 'function') {\n actualValue = valueField(value)\n } else {\n actualValue = value[valueField]\n }\n\n var template =\n this.template ||\n html`\n <ox-selector-resource-object-legacy\n .value=${actualValue}\n .confirmCallback=${confirmCallback.bind(this)}\n .queryName=${queryName}\n .select=${select}\n .list=${list}\n .basicArgs=${basicArgs}\n .valueField=${valueField}\n ></ox-selector-resource-object-legacy>\n `\n\n this.popup = openPopup(template, {\n backdrop: true,\n size: 'large',\n title: i18next.t('title.select_item')\n })\n }\n}\n"]}
1
+ {"version":3,"file":"ox-grist-editor-resource-object-legacy.js","sourceRoot":"","sources":["../../../src/grist-editor/ox-grist-editor-resource-object-legacy.ts"],"names":[],"mappings":"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","sourcesContent":["import '../selector/ox-selector-resource-object-legacy.js'\n\nimport { html, TemplateResult } from 'lit'\nimport { customElement } from 'lit/decorators.js'\n\nimport { OxGristEditor } from '@operato/data-grist'\nimport { i18next } from '@operato/i18n'\nimport { openPopup, PopupHandle } from '@operato/layout'\n\n@customElement('ox-grist-editor-resource-object-legacy')\nexport class OxGristEditorResourceObjectLegacy extends OxGristEditor {\n private popup?: PopupHandle\n private template?: TemplateResult\n\n get editorTemplate() {\n var value = this.value || {}\n\n var { nameField = 'name', descriptionField = 'description' } = this.column.record.options || {}\n var name, description\n if (typeof nameField === 'function') {\n name = nameField(value)\n } else {\n name = value[nameField]\n }\n\n if (typeof descriptionField === 'function') {\n description = descriptionField(value)\n } else {\n description = value[descriptionField] && `(${value[descriptionField]})`\n }\n\n return html`\n ${!value\n ? html`<span tabindex=\"0\"></span>`\n : html` <span tabindex=\"0\" style=\"flex:1\">${name || ''}${description || ''}</span> `}\n `\n }\n\n async firstUpdated() {\n super.firstUpdated()\n this.template = ((this.column.record || {}).options || {}).template\n }\n\n _onclick(e: Event): void {\n e.stopPropagation()\n this.openSelector()\n }\n\n _onkeydown(e: KeyboardEvent): void {\n const key = e.key\n if (key == 'Enter') {\n e.stopPropagation()\n this.openSelector()\n }\n }\n\n openSelector() {\n if (this.popup) {\n delete this.popup\n }\n\n var {\n idField = 'id',\n nameField = 'name',\n descriptionField = 'description',\n valueField = 'id',\n queryName,\n basicArgs,\n select,\n list\n } = this.column.record.options || {}\n\n const confirmCallback = (selected?: { [field: string]: any }) => {\n this.dispatchEvent(\n new CustomEvent('field-change', {\n bubbles: true,\n composed: true,\n detail: {\n before: this.value,\n after: selected\n ? {\n ...(this.column.record.options.select || [])\n .map((field: any) => field.name)\n .reduce((obj: { [field: string]: any }, fieldName: string) => {\n return (obj = {\n ...obj,\n [fieldName]: selected[fieldName]\n })\n }, {} as { [field: string]: any }),\n [idField]: selected[idField],\n [nameField]: selected[nameField],\n [descriptionField]: selected[descriptionField]\n }\n : null,\n record: this.record,\n column: this.column,\n row: this.row\n }\n })\n )\n }\n\n var value = this.value || {}\n var actualValue\n if (typeof valueField === 'function') {\n actualValue = valueField(value)\n } else {\n actualValue = value[valueField]\n }\n\n var template =\n this.template ||\n html`\n <ox-selector-resource-object-legacy\n .value=${actualValue}\n .confirmCallback=${confirmCallback.bind(this)}\n .queryName=${queryName}\n .select=${select}\n .list=${list}\n .basicArgs=${basicArgs}\n .valueField=${valueField}\n ></ox-selector-resource-object-legacy>\n `\n\n this.popup = openPopup(template, {\n backdrop: true,\n size: 'large',\n title: i18next.t('title.select_item')\n })\n }\n}\n"]}
@@ -6,6 +6,21 @@ import { OxGristEditor } from '@operato/data-grist';
6
6
  import { i18next } from '@operato/i18n';
7
7
  import { openPopup } from '@operato/layout';
8
8
  let OxGristEditorResourceObject = class OxGristEditorResourceObject extends OxGristEditor {
9
+ constructor() {
10
+ super(...arguments);
11
+ Object.defineProperty(this, "popup", {
12
+ enumerable: true,
13
+ configurable: true,
14
+ writable: true,
15
+ value: void 0
16
+ });
17
+ Object.defineProperty(this, "template", {
18
+ enumerable: true,
19
+ configurable: true,
20
+ writable: true,
21
+ value: void 0
22
+ });
23
+ }
9
24
  get editorTemplate() {
10
25
  var value = this.value || {};
11
26
  var { nameField = 'name', descriptionField = 'description' } = this.column.record.options || {};
@@ -1 +1 @@
1
- {"version":3,"file":"ox-grist-editor-resource-object.js","sourceRoot":"","sources":["../../../src/grist-editor/ox-grist-editor-resource-object.ts"],"names":[],"mappings":"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","sourcesContent":["import '../selector/ox-selector-resource-object.js'\n\nimport { html, TemplateResult } from 'lit'\nimport { customElement } from 'lit/decorators.js'\n\nimport { OxGristEditor } from '@operato/data-grist'\nimport { i18next } from '@operato/i18n'\nimport { openPopup, PopupHandle } from '@operato/layout'\n\n@customElement('ox-grist-editor-resource-object')\nexport class OxGristEditorResourceObject extends OxGristEditor {\n private popup?: PopupHandle\n private template?: TemplateResult\n\n get editorTemplate() {\n var value = this.value || {}\n\n var { nameField = 'name', descriptionField = 'description' } = this.column.record.options || {}\n var name, description\n if (typeof nameField === 'function') {\n name = nameField(value)\n } else {\n name = value[nameField]\n }\n\n if (typeof descriptionField === 'function') {\n description = descriptionField(value)\n } else {\n description = value[descriptionField] && `(${value[descriptionField]})`\n }\n\n return html`\n ${!value\n ? html`<span tabindex=\"0\"></span>`\n : html` <span tabindex=\"0\" style=\"flex:1\">${name || ''}${description || ''}</span> `}\n `\n }\n\n async firstUpdated() {\n super.firstUpdated()\n this.template = ((this.column.record || {}).options || {}).template\n }\n\n _onclick(e: Event): void {\n e.stopPropagation()\n this.openSelector()\n }\n\n _onkeydown(e: KeyboardEvent): void {\n const key = e.key\n if (key == 'Enter') {\n e.stopPropagation()\n this.openSelector()\n }\n }\n\n openSelector() {\n if (this.popup) {\n delete this.popup\n }\n\n var {\n title = '',\n idField = 'id',\n nameField = 'name',\n descriptionField = 'description',\n valueField = 'id',\n queryName,\n basicArgs,\n select,\n columns,\n pagination,\n list\n } = this.column.record.options || {}\n\n if (!queryName) {\n console.warn('queryName is empty')\n return\n }\n\n /* select options is only for compatability, it might be able to be deprecated. */\n columns = columns || select\n\n const confirmCallback = (selected?: { [field: string]: any }) => {\n this.dispatchEvent(\n new CustomEvent('field-change', {\n bubbles: true,\n composed: true,\n detail: {\n before: this.value,\n after: selected\n ? {\n ...(columns || [])\n .map((field: any) => field.name)\n .reduce((obj: { [field: string]: any }, fieldName: string) => {\n return (obj = {\n ...obj,\n [fieldName]: selected[fieldName]\n })\n }, {} as { [field: string]: any }),\n [idField]: selected[idField],\n [nameField]: selected[nameField],\n [descriptionField]: selected[descriptionField]\n }\n : null,\n record: this.record,\n column: this.column,\n row: this.row\n }\n })\n )\n }\n\n var value = this.value || {}\n var actualValue\n if (typeof valueField === 'function') {\n actualValue = valueField(value)\n } else {\n actualValue = value[valueField]\n }\n\n var template =\n this.template ||\n html`\n <ox-selector-resource-object\n .value=${actualValue}\n .confirmCallback=${confirmCallback.bind(this)}\n .queryName=${queryName}\n .columns=${columns}\n .pagination=${pagination}\n .list=${list}\n .basicArgs=${basicArgs}\n .valueField=${valueField}\n ></ox-selector-resource-object>\n `\n\n this.popup = openPopup(template, {\n backdrop: true,\n size: 'large',\n search: {\n autofocus: true,\n placeholder: title || i18next.t('title.select_item'),\n handler: (instance: any, value: any) => {\n /* instance: template instance */\n instance.searchText(value)\n }\n },\n filter: {\n handler: (instance: any) => {\n /* instance: template instance */\n instance.toggleFilter()\n }\n }\n })\n }\n}\n"]}
1
+ {"version":3,"file":"ox-grist-editor-resource-object.js","sourceRoot":"","sources":["../../../src/grist-editor/ox-grist-editor-resource-object.ts"],"names":[],"mappings":"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","sourcesContent":["import '../selector/ox-selector-resource-object.js'\n\nimport { html, TemplateResult } from 'lit'\nimport { customElement } from 'lit/decorators.js'\n\nimport { OxGristEditor } from '@operato/data-grist'\nimport { i18next } from '@operato/i18n'\nimport { openPopup, PopupHandle } from '@operato/layout'\n\n@customElement('ox-grist-editor-resource-object')\nexport class OxGristEditorResourceObject extends OxGristEditor {\n private popup?: PopupHandle\n private template?: TemplateResult\n\n get editorTemplate() {\n var value = this.value || {}\n\n var { nameField = 'name', descriptionField = 'description' } = this.column.record.options || {}\n var name, description\n if (typeof nameField === 'function') {\n name = nameField(value)\n } else {\n name = value[nameField]\n }\n\n if (typeof descriptionField === 'function') {\n description = descriptionField(value)\n } else {\n description = value[descriptionField] && `(${value[descriptionField]})`\n }\n\n return html`\n ${!value\n ? html`<span tabindex=\"0\"></span>`\n : html` <span tabindex=\"0\" style=\"flex:1\">${name || ''}${description || ''}</span> `}\n `\n }\n\n async firstUpdated() {\n super.firstUpdated()\n this.template = ((this.column.record || {}).options || {}).template\n }\n\n _onclick(e: Event): void {\n e.stopPropagation()\n this.openSelector()\n }\n\n _onkeydown(e: KeyboardEvent): void {\n const key = e.key\n if (key == 'Enter') {\n e.stopPropagation()\n this.openSelector()\n }\n }\n\n openSelector() {\n if (this.popup) {\n delete this.popup\n }\n\n var {\n title = '',\n idField = 'id',\n nameField = 'name',\n descriptionField = 'description',\n valueField = 'id',\n queryName,\n basicArgs,\n select,\n columns,\n pagination,\n list\n } = this.column.record.options || {}\n\n if (!queryName) {\n console.warn('queryName is empty')\n return\n }\n\n /* select options is only for compatability, it might be able to be deprecated. */\n columns = columns || select\n\n const confirmCallback = (selected?: { [field: string]: any }) => {\n this.dispatchEvent(\n new CustomEvent('field-change', {\n bubbles: true,\n composed: true,\n detail: {\n before: this.value,\n after: selected\n ? {\n ...(columns || [])\n .map((field: any) => field.name)\n .reduce((obj: { [field: string]: any }, fieldName: string) => {\n return (obj = {\n ...obj,\n [fieldName]: selected[fieldName]\n })\n }, {} as { [field: string]: any }),\n [idField]: selected[idField],\n [nameField]: selected[nameField],\n [descriptionField]: selected[descriptionField]\n }\n : null,\n record: this.record,\n column: this.column,\n row: this.row\n }\n })\n )\n }\n\n var value = this.value || {}\n var actualValue\n if (typeof valueField === 'function') {\n actualValue = valueField(value)\n } else {\n actualValue = value[valueField]\n }\n\n var template =\n this.template ||\n html`\n <ox-selector-resource-object\n .value=${actualValue}\n .confirmCallback=${confirmCallback.bind(this)}\n .queryName=${queryName}\n .columns=${columns}\n .pagination=${pagination}\n .list=${list}\n .basicArgs=${basicArgs}\n .valueField=${valueField}\n ></ox-selector-resource-object>\n `\n\n this.popup = openPopup(template, {\n backdrop: true,\n size: 'large',\n search: {\n autofocus: true,\n placeholder: title || i18next.t('title.select_item'),\n handler: (instance: any, value: any) => {\n /* instance: template instance */\n instance.searchText(value)\n }\n },\n filter: {\n handler: (instance: any) => {\n /* instance: template instance */\n instance.toggleFilter()\n }\n }\n })\n }\n}\n"]}
@@ -1,4 +1,4 @@
1
- import cronstrue from 'cronstrue/i18n';
1
+ import cronstrue from 'cronstrue/i18n.js';
2
2
  import i18next from 'i18next';
3
3
  import { html } from 'lit';
4
4
  export const OxGristRendererCrontab = (value, column, record, rowIndex, field) => {
@@ -1 +1 @@
1
- {"version":3,"file":"ox-grist-renderer-crontab.js","sourceRoot":"","sources":["../../../src/grist-editor/ox-grist-renderer-crontab.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,gBAAgB,CAAA;AACtC,OAAO,OAAO,MAAM,SAAS,CAAA;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAA;AAI1B,MAAM,CAAC,MAAM,sBAAsB,GAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE;IAC9F,IAAI,IAAI,GAAG,EAAE,CAAA;IAEb,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QAC3D,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,IAAI,IAAI,EAAE,CAAC,CAAA;IAC9E,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAClB,CAAC;IAED,OAAO,IAAI,CAAA,+BAA+B,IAAI,SAAS,CAAA;AACzD,CAAC,CAAA","sourcesContent":["import cronstrue from 'cronstrue/i18n'\nimport i18next from 'i18next'\nimport { html } from 'lit'\n\nimport { FieldRenderer } from '@operato/data-grist'\n\nexport const OxGristRendererCrontab: FieldRenderer = (value, column, record, rowIndex, field) => {\n let text = ''\n\n try {\n const language = (i18next.language || 'en').substring(0, 2)\n text = !value ? '' : cronstrue.toString(value, { locale: language || 'en' })\n } catch (e) {\n console.error(e)\n }\n\n return html`<span data-reactive-tooltip>${text}</span>`\n}\n"]}
1
+ {"version":3,"file":"ox-grist-renderer-crontab.js","sourceRoot":"","sources":["../../../src/grist-editor/ox-grist-renderer-crontab.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,mBAAmB,CAAA;AACzC,OAAO,OAAO,MAAM,SAAS,CAAA;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAA;AAI1B,MAAM,CAAC,MAAM,sBAAsB,GAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE;IAC9F,IAAI,IAAI,GAAG,EAAE,CAAA;IAEb,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QAC3D,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,IAAI,IAAI,EAAE,CAAC,CAAA;IAC9E,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAClB,CAAC;IAED,OAAO,IAAI,CAAA,+BAA+B,IAAI,SAAS,CAAA;AACzD,CAAC,CAAA","sourcesContent":["import cronstrue from 'cronstrue/i18n.js'\nimport i18next from 'i18next'\nimport { html } from 'lit'\n\nimport { FieldRenderer } from '@operato/data-grist'\n\nexport const OxGristRendererCrontab: FieldRenderer = (value, column, record, rowIndex, field) => {\n let text = ''\n\n try {\n const language = (i18next.language || 'en').substring(0, 2)\n text = !value ? '' : cronstrue.toString(value, { locale: language || 'en' })\n } catch (e) {\n console.error(e)\n }\n\n return html`<span data-reactive-tooltip>${text}</span>`\n}\n"]}
@@ -50,7 +50,11 @@ let OxGristRendererResourceCode = class OxGristRendererResourceCode extends OxGr
50
50
  return html `<span data-reactive-tooltip>${this.value}</span> `;
51
51
  }
52
52
  };
53
- OxGristRendererResourceCode.styles = css `
53
+ Object.defineProperty(OxGristRendererResourceCode, "styles", {
54
+ enumerable: true,
55
+ configurable: true,
56
+ writable: true,
57
+ value: css `
54
58
  :host {
55
59
  display: block;
56
60
  position: relative;
@@ -63,7 +67,8 @@ OxGristRendererResourceCode.styles = css `
63
67
  display: block;
64
68
  overflow: hidden;
65
69
  }
66
- `;
70
+ `
71
+ });
67
72
  OxGristRendererResourceCode = __decorate([
68
73
  customElement('ox-grist-renderer-resource-code')
69
74
  ], OxGristRendererResourceCode);