@operato/app 1.0.0-alpha.9 → 1.0.0-beta.2

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 (145) hide show
  1. package/@types/global/index.d.ts +2 -0
  2. package/CHANGELOG.md +335 -17
  3. package/demo/data-grist-test.html +15 -10
  4. package/demo/index.html +1 -10
  5. package/dist/src/{grist → grist-editor}/index.d.ts +0 -0
  6. package/dist/src/grist-editor/index.js +28 -0
  7. package/dist/src/grist-editor/index.js.map +1 -0
  8. package/dist/src/grist-editor/ox-grist-editor-code.d.ts +7 -0
  9. package/dist/src/grist-editor/ox-grist-editor-code.js +53 -0
  10. package/dist/src/grist-editor/ox-grist-editor-code.js.map +1 -0
  11. package/dist/src/grist-editor/ox-grist-editor-crontab.d.ts +8 -0
  12. package/dist/src/grist-editor/ox-grist-editor-crontab.js +50 -0
  13. package/dist/src/grist-editor/ox-grist-editor-crontab.js.map +1 -0
  14. package/dist/src/grist-editor/ox-grist-editor-json.d.ts +7 -0
  15. package/dist/src/grist-editor/ox-grist-editor-json.js +54 -0
  16. package/dist/src/grist-editor/ox-grist-editor-json.js.map +1 -0
  17. package/dist/src/grist-editor/ox-grist-editor-parameters.d.ts +12 -0
  18. package/dist/src/{grist/parameters-editor.js → grist-editor/ox-grist-editor-parameters.js} +16 -37
  19. package/dist/src/grist-editor/ox-grist-editor-parameters.js.map +1 -0
  20. package/dist/src/grist-editor/ox-grist-editor-partition-keys.d.ts +11 -0
  21. package/dist/src/grist-editor/ox-grist-editor-partition-keys.js +74 -0
  22. package/dist/src/grist-editor/ox-grist-editor-partition-keys.js.map +1 -0
  23. package/dist/src/{grist/code-editor.d.ts → grist-editor/ox-grist-editor-resource-code.d.ts} +2 -2
  24. package/dist/src/{grist/code-editor.js → grist-editor/ox-grist-editor-resource-code.js} +10 -5
  25. package/dist/src/grist-editor/ox-grist-editor-resource-code.js.map +1 -0
  26. package/dist/src/grist-editor/ox-grist-editor-resource-id.d.ts +9 -0
  27. package/dist/src/grist-editor/ox-grist-editor-resource-id.js +72 -0
  28. package/dist/src/grist-editor/ox-grist-editor-resource-id.js.map +1 -0
  29. package/dist/src/grist-editor/ox-grist-editor-resource-object.d.ts +11 -0
  30. package/dist/src/{grist/object-editor.js → grist-editor/ox-grist-editor-resource-object.js} +30 -78
  31. package/dist/src/grist-editor/ox-grist-editor-resource-object.js.map +1 -0
  32. package/dist/src/grist-editor/ox-grist-editor-value-map.d.ts +11 -0
  33. package/dist/src/grist-editor/ox-grist-editor-value-map.js +74 -0
  34. package/dist/src/grist-editor/ox-grist-editor-value-map.js.map +1 -0
  35. package/dist/src/grist-editor/ox-grist-renderer-crontab.d.ts +2 -0
  36. package/dist/src/grist-editor/ox-grist-renderer-crontab.js +26 -0
  37. package/dist/src/grist-editor/ox-grist-renderer-crontab.js.map +1 -0
  38. package/dist/src/grist-editor/ox-grist-renderer-resource-id.d.ts +2 -0
  39. package/dist/src/grist-editor/ox-grist-renderer-resource-id.js +9 -0
  40. package/dist/src/grist-editor/ox-grist-renderer-resource-id.js.map +1 -0
  41. package/dist/src/grist-editor/ox-grist-renderer-resource-object.d.ts +2 -0
  42. package/dist/src/grist-editor/ox-grist-renderer-resource-object.js +22 -0
  43. package/dist/src/grist-editor/ox-grist-renderer-resource-object.js.map +1 -0
  44. package/dist/src/{grist/parameters-editor-builder.d.ts → grist-editor/ox-parameters-builder.d.ts} +1 -1
  45. package/dist/src/{grist/parameters-editor-builder.js → grist-editor/ox-parameters-builder.js} +10 -11
  46. package/dist/src/grist-editor/ox-parameters-builder.js.map +1 -0
  47. package/dist/src/grist-editor/ox-popup-code-input.d.ts +12 -0
  48. package/dist/src/grist-editor/ox-popup-code-input.js +71 -0
  49. package/dist/src/grist-editor/ox-popup-code-input.js.map +1 -0
  50. package/dist/src/grist-editor/ox-popup-crontab-input.d.ts +11 -0
  51. package/dist/src/grist-editor/ox-popup-crontab-input.js +74 -0
  52. package/dist/src/grist-editor/ox-popup-crontab-input.js.map +1 -0
  53. package/dist/src/{grist/parameters-editor-popup.d.ts → grist-editor/ox-popup-parameters-builder.d.ts} +1 -1
  54. package/dist/src/{grist/parameters-editor-popup.js → grist-editor/ox-popup-parameters-builder.js} +15 -15
  55. package/dist/src/grist-editor/ox-popup-parameters-builder.js.map +1 -0
  56. package/dist/src/grist-editor/ox-popup-partition-keys-input.d.ts +12 -0
  57. package/dist/src/grist-editor/ox-popup-partition-keys-input.js +98 -0
  58. package/dist/src/grist-editor/ox-popup-partition-keys-input.js.map +1 -0
  59. package/dist/src/grist-editor/ox-popup-value-map-input.d.ts +12 -0
  60. package/dist/src/grist-editor/ox-popup-value-map-input.js +104 -0
  61. package/dist/src/grist-editor/ox-popup-value-map-input.js.map +1 -0
  62. package/dist/src/{grist/id-selector.d.ts → grist-editor/ox-selector-resource-id.d.ts} +4 -3
  63. package/dist/src/{grist/id-selector.js → grist-editor/ox-selector-resource-id.js} +23 -18
  64. package/dist/src/grist-editor/ox-selector-resource-id.js.map +1 -0
  65. package/dist/src/{grist/object-selector.d.ts → grist-editor/ox-selector-resource-object.d.ts} +4 -3
  66. package/dist/src/{grist/object-selector.js → grist-editor/ox-selector-resource-object.js} +30 -25
  67. package/dist/src/grist-editor/ox-selector-resource-object.js.map +1 -0
  68. package/dist/src/index.d.ts +3 -1
  69. package/dist/src/index.js +3 -1
  70. package/dist/src/index.js.map +1 -1
  71. package/dist/src/input/index.d.ts +3 -0
  72. package/dist/src/input/index.js +4 -0
  73. package/dist/src/input/index.js.map +1 -0
  74. package/dist/src/input/ox-input-background-pattern.d.ts +1 -1
  75. package/dist/src/input/ox-input-background-pattern.js +6 -3
  76. package/dist/src/input/ox-input-background-pattern.js.map +1 -1
  77. package/dist/src/input/ox-input-fill-style.d.ts +2 -3
  78. package/dist/src/input/ox-input-fill-style.js +2 -2
  79. package/dist/src/input/ox-input-fill-style.js.map +1 -1
  80. package/dist/src/input/ox-input-graphql.d.ts +36 -0
  81. package/dist/src/input/ox-input-graphql.js +161 -0
  82. package/dist/src/input/ox-input-graphql.js.map +1 -0
  83. package/dist/src/property-editor/index.d.ts +24 -0
  84. package/dist/src/property-editor/index.js +58 -0
  85. package/dist/src/property-editor/index.js.map +1 -0
  86. package/dist/src/property-editor/ox-property-editor-graphql.d.ts +5 -0
  87. package/dist/src/property-editor/ox-property-editor-graphql.js +15 -0
  88. package/dist/src/property-editor/ox-property-editor-graphql.js.map +1 -0
  89. package/dist/tsconfig.tsbuildinfo +1 -1
  90. package/package.json +44 -22
  91. package/src/grist-editor/index.ts +30 -0
  92. package/src/grist-editor/ox-grist-editor-code.ts +62 -0
  93. package/src/grist-editor/ox-grist-editor-crontab.ts +62 -0
  94. package/src/grist-editor/ox-grist-editor-json.ts +62 -0
  95. package/src/{grist/parameters-editor.ts → grist-editor/ox-grist-editor-parameters.ts} +13 -26
  96. package/src/grist-editor/ox-grist-editor-partition-keys.ts +86 -0
  97. package/src/{grist/code-editor.ts → grist-editor/ox-grist-editor-resource-code.ts} +4 -5
  98. package/src/grist-editor/ox-grist-editor-resource-id.ts +85 -0
  99. package/src/{grist/object-editor.ts → grist-editor/ox-grist-editor-resource-object.ts} +28 -63
  100. package/src/grist-editor/ox-grist-editor-value-map.ts +86 -0
  101. package/src/grist-editor/ox-grist-renderer-crontab.ts +30 -0
  102. package/src/{grist/id-renderer.ts → grist-editor/ox-grist-renderer-resource-id.ts} +4 -3
  103. package/src/grist-editor/ox-grist-renderer-resource-object.ts +26 -0
  104. package/src/{grist/parameters-editor-builder.ts → grist-editor/ox-parameters-builder.ts} +4 -6
  105. package/src/grist-editor/ox-popup-code-input.ts +65 -0
  106. package/src/grist-editor/ox-popup-crontab-input.ts +74 -0
  107. package/src/{grist/parameters-editor-popup.ts → grist-editor/ox-popup-parameters-builder.ts} +5 -5
  108. package/src/grist-editor/ox-popup-partition-keys-input.ts +95 -0
  109. package/src/grist-editor/ox-popup-value-map-input.ts +101 -0
  110. package/src/{grist/id-selector.ts → grist-editor/ox-selector-resource-id.ts} +12 -6
  111. package/src/{grist/object-selector.ts → grist-editor/ox-selector-resource-object.ts} +15 -9
  112. package/src/index.ts +3 -1
  113. package/src/input/index.ts +3 -0
  114. package/src/input/ox-input-background-pattern.ts +6 -3
  115. package/src/input/ox-input-fill-style.ts +3 -4
  116. package/src/input/ox-input-graphql.ts +169 -0
  117. package/src/property-editor/index.ts +59 -0
  118. package/src/property-editor/ox-property-editor-graphql.ts +12 -0
  119. package/themes/app-theme.css +142 -0
  120. package/themes/grist-theme.css +194 -0
  121. package/themes/oops-theme.css +26 -0
  122. package/themes/report-theme.css +47 -0
  123. package/dist/src/grist/code-editor.js.map +0 -1
  124. package/dist/src/grist/id-input.d.ts +0 -19
  125. package/dist/src/grist/id-input.js +0 -119
  126. package/dist/src/grist/id-input.js.map +0 -1
  127. package/dist/src/grist/id-renderer.d.ts +0 -2
  128. package/dist/src/grist/id-renderer.js +0 -9
  129. package/dist/src/grist/id-renderer.js.map +0 -1
  130. package/dist/src/grist/id-selector.js.map +0 -1
  131. package/dist/src/grist/index.js +0 -11
  132. package/dist/src/grist/index.js.map +0 -1
  133. package/dist/src/grist/object-editor.d.ts +0 -18
  134. package/dist/src/grist/object-editor.js.map +0 -1
  135. package/dist/src/grist/object-selector.js.map +0 -1
  136. package/dist/src/grist/parameters-editor-builder.js.map +0 -1
  137. package/dist/src/grist/parameters-editor-popup.js.map +0 -1
  138. package/dist/src/grist/parameters-editor.d.ts +0 -19
  139. package/dist/src/grist/parameters-editor.js.map +0 -1
  140. package/dist/src/input/ox-input-color-gradient.d.ts +0 -25
  141. package/dist/src/input/ox-input-color-gradient.js +0 -318
  142. package/dist/src/input/ox-input-color-gradient.js.map +0 -1
  143. package/src/grist/id-input.ts +0 -135
  144. package/src/grist/index.ts +0 -13
  145. package/src/input/ox-input-color-gradient.ts +0 -341
@@ -1 +0,0 @@
1
- {"version":3,"file":"parameters-editor.js","sourceRoot":"","sources":["../../../src/grist/parameters-editor.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport './parameters-editor-builder.js'\nimport './parameters-editor-popup.js'\n\nimport { ColumnConfig, GristRecord } from '@operato/data-grist'\nimport { LitElement, css, html } from 'lit'\nimport { PopupHandle, openPopup } from '@operato/layout'\nimport { customElement, property } from 'lit/decorators.js'\n\nimport { i18next } from '@operato/i18n'\n\n@customElement('ox-parameters-editor')\nexport class ParametersEditor extends LitElement {\n static styles = css`\n :host {\n color: black;\n\n overflow: hidden;\n text-overflow: ellipsis;\n }\n `\n\n @property({ type: Object }) value: any\n @property({ type: Object }) column!: ColumnConfig\n @property({ type: Object }) record!: GristRecord\n @property({ type: Number }) row!: number\n @property({ type: Object }) field!: any\n\n private popup?: PopupHandle\n\n render() {\n const value = typeof this.value === 'object' ? JSON.stringify(this.value) : this.value\n return html` ${value || ''} `\n }\n\n async firstUpdated() {\n await this.updateComplete\n\n this.renderRoot.addEventListener('click', e => {\n e.stopPropagation()\n\n this.openSelector()\n })\n\n this.openSelector()\n }\n\n async openSelector() {\n if (this.popup) {\n delete this.popup\n }\n\n var { options } = this.column.record\n\n if (typeof options === 'function') {\n options = await options.call(this, this.value, this.column, this.record, this.row, this.field)\n }\n\n const { name, help, spec, context, objectified = false } = options\n\n const confirmCallback = (newval: any) => {\n this.dispatchEvent(\n new CustomEvent('field-change', {\n bubbles: true,\n composed: true,\n detail: {\n before: this.value,\n after: !objectified ? JSON.stringify(newval) : newval,\n record: this.record,\n column: this.column,\n row: this.row\n }\n })\n )\n }\n\n try {\n var value: any = !objectified && typeof this.value === 'string' ? JSON.parse(this.value) : this.value\n } catch (e) {\n var value: any = {}\n }\n\n /* \n 주의 : 이 팝업 템플릿은 layout 모듈에 의해서 render 되므로, \n layout의 구성에 변화가 발생하면, 다시 render된다.\n 이 팝업이 떠 있는 상태에서, 또 다른 팝업이 뜨는 경우도 layout 구성의 변화를 야기한다. (overlay의 갯수의 증가)\n 이 경우 value, options, confirmCallback 등 클로져를 사용한 것들이 초기 바인딩된 값으로 다시 바인딩되게 되는데,\n 만약, 템플릿 내부에서 이들 속성의 레퍼런스가 변화했다면, 원래 상태로 되돌아가는 현상이 발생하게 된다.\n 따라서, 가급적 이들 속성의 레퍼런스를 변화시키지 않는 것이 좋다.\n */\n var template = html`\n <ox-parameters-editor-popup\n .value=${value}\n .props=${spec}\n .host=${this.record}\n .context=${context}\n .confirmCallback=${confirmCallback}\n >\n </ox-parameters-editor-popup>\n `\n\n this.popup = openPopup(template, {\n backdrop: true,\n size: 'large',\n title: `${name?.toUpperCase() || ''} ${i18next.t('field.params')}`,\n help\n })\n }\n}\n"]}
@@ -1,25 +0,0 @@
1
- /**
2
- * @license Copyright © HatioLab Inc. All rights reserved.
3
- */
4
- import '@operato/i18n/ox-i18n.js';
5
- import '@polymer/paper-dropdown-menu/paper-dropdown-menu';
6
- import '@polymer/paper-listbox/paper-listbox';
7
- import '@polymer/paper-item/paper-item';
8
- import '@operato/input/ox-input-angle.js';
9
- import '@operato/input/ox-input-color-stops.js';
10
- import { ColorStop, OxFormField } from '@operato/input';
11
- export declare type GradientOption = {
12
- type: 'linear' | 'radial';
13
- rotation: number;
14
- direction?: 'left-to-right' | 'lefttop-to-rightbottom' | 'top-to-bottom' | 'righttop-to-leftbottom' | 'right-to-left' | 'rightbottom-to-lefttop' | 'bottom-to-top' | 'leftbottom-to-righttop' | 'left-to-right' | 'center-to-corner';
15
- center?: 'center' | 'left-top' | 'right-top' | 'right-bottom' | 'left-bottom';
16
- colorStops?: ColorStop[];
17
- };
18
- export declare class OxInputColorGradient extends OxFormField {
19
- static styles: import("lit").CSSResult;
20
- value: GradientOption;
21
- firstUpdated(): void;
22
- _onChange(e: Event): void;
23
- render(): import("lit-html").TemplateResult<1>;
24
- _convertDirectionToRotation(direction: string): number;
25
- }
@@ -1,318 +0,0 @@
1
- /**
2
- * @license Copyright © HatioLab Inc. All rights reserved.
3
- */
4
- import { __decorate } from "tslib";
5
- import '@operato/i18n/ox-i18n.js';
6
- import '@polymer/paper-dropdown-menu/paper-dropdown-menu';
7
- import '@polymer/paper-listbox/paper-listbox';
8
- import '@polymer/paper-item/paper-item';
9
- import '@operato/input/ox-input-angle.js';
10
- import '@operato/input/ox-input-color-stops.js';
11
- import { OxFormField } from '@operato/input';
12
- import { css, html } from 'lit';
13
- import { customElement, property } from 'lit/decorators.js';
14
- let OxInputColorGradient = class OxInputColorGradient extends OxFormField {
15
- constructor() {
16
- super(...arguments);
17
- this.value = {
18
- type: 'linear',
19
- direction: 'left-to-right',
20
- rotation: 0
21
- };
22
- }
23
- firstUpdated() {
24
- this.renderRoot.addEventListener('change', this._onChange.bind(this));
25
- }
26
- _onChange(e) {
27
- var element = e.target;
28
- var key = element.getAttribute('value-key');
29
- if (!key) {
30
- return;
31
- }
32
- var value;
33
- switch (element.tagName) {
34
- case 'INPUT':
35
- switch (element.type) {
36
- case 'checkbox':
37
- value = element.checked;
38
- break;
39
- case 'number':
40
- value = Number(element.value) || 0;
41
- break;
42
- case 'text':
43
- value = String(element.value);
44
- }
45
- break;
46
- case 'PAPER-BUTTON':
47
- value = element.active;
48
- break;
49
- case 'PAPER-LISTBOX':
50
- value = element.selected;
51
- break;
52
- default:
53
- value = element.value;
54
- break;
55
- }
56
- if (key === 'rotation') {
57
- this.value = {
58
- ...this.value,
59
- rotation: value,
60
- direction: undefined
61
- };
62
- }
63
- else if (key === 'direction') {
64
- if (value) {
65
- this.value = {
66
- ...this.value,
67
- direction: value,
68
- rotation: this._convertDirectionToRotation(value)
69
- };
70
- }
71
- }
72
- else {
73
- this.value = {
74
- ...this.value,
75
- [key]: value
76
- };
77
- }
78
- this.dispatchEvent(new CustomEvent('change', { bubbles: true, composed: true }));
79
- }
80
- render() {
81
- var selector = (this.value && this.value.type) || 'linear';
82
- var value = this.value || {};
83
- return html `
84
- <label> <ox-i18n msgid="label.type">type</ox-i18n> </label>
85
- <select value-key="type" .value=${value.type || 'linear'}>
86
- <option>linear</option>
87
- <option>radial</option>
88
- </select>
89
-
90
- <label class="icon-only-label color"></label>
91
- <ox-input-angle value-key="rotation" .value=${value.rotation || 0}> </ox-input-angle>
92
-
93
- <label> <ox-i18n msgid="label.direction">direction</ox-i18n> </label>
94
- <div editors>
95
- <paper-dropdown-menu no-label-float="true" ?active-selector=${selector == 'linear'} .value=${value.direction}>
96
- <paper-listbox
97
- @selected-changed=${(e) => this._onChange(e)}
98
- value-key="direction"
99
- slot="dropdown-content"
100
- gradient-direction
101
- .selected=${value.direction}
102
- attr-for-selected="name"
103
- >
104
- <paper-item name="lefttop-to-rightbottom"></paper-item>
105
- <paper-item name="top-to-bottom"></paper-item>
106
- <paper-item name="righttop-to-leftbottom"></paper-item>
107
- <paper-item name="right-to-left"></paper-item>
108
- <paper-item name="rightbottom-to-lefttop"></paper-item>
109
- <paper-item name="bottom-to-top"></paper-item>
110
- <paper-item name="leftbottom-to-righttop"></paper-item>
111
- <paper-item name="left-to-right"></paper-item>
112
- <paper-item name="center-to-corner"></paper-item>
113
- </paper-listbox>
114
- </paper-dropdown-menu>
115
-
116
- <paper-dropdown-menu no-label-float="true" ?active-selector=${selector == 'radial'} .value=${value.center}>
117
- <paper-listbox
118
- @selected-changed=${(e) => this._onChange(e)}
119
- value-key="center"
120
- slot="dropdown-content"
121
- gradient-direction
122
- .selected=${value.center || 'center'}
123
- attr-for-selected="name"
124
- >
125
- <paper-item name="center"></paper-item>
126
- <paper-item name="left-top"></paper-item>
127
- <paper-item name="right-top"></paper-item>
128
- <paper-item name="right-bottom"></paper-item>
129
- <paper-item name="left-bottom"></paper-item>
130
- </paper-listbox>
131
- </paper-dropdown-menu>
132
- </div>
133
-
134
- <ox-input-color-stops value-key="colorStops" type="gradient" .value=${value.colorStops}> </ox-input-color-stops>
135
- `;
136
- }
137
- _convertDirectionToRotation(direction) {
138
- var rotation;
139
- switch (direction) {
140
- case 'lefttop-to-rightbottom':
141
- rotation = 45;
142
- break;
143
- case 'top-to-bottom':
144
- rotation = 90;
145
- break;
146
- case 'righttop-to-leftbottom':
147
- rotation = 135;
148
- break;
149
- case 'right-to-left':
150
- rotation = 180;
151
- break;
152
- case 'rightbottom-to-lefttop':
153
- rotation = 215;
154
- break;
155
- case 'bottom-to-top':
156
- rotation = 270;
157
- break;
158
- case 'leftbottom-to-righttop':
159
- rotation = 315;
160
- break;
161
- case 'left-to-right':
162
- default:
163
- rotation = 0;
164
- break;
165
- }
166
- return (rotation / 360) * Math.PI * 2;
167
- }
168
- };
169
- OxInputColorGradient.styles = css `
170
- :host {
171
- display: grid;
172
-
173
- grid-template-columns: repeat(10, 1fr);
174
- grid-gap: 5px;
175
- grid-auto-rows: minmax(24px, auto);
176
-
177
- align-items: center;
178
- }
179
-
180
- :host > * {
181
- align-self: stretch;
182
- }
183
-
184
- :host > label {
185
- grid-column: span 2;
186
- text-align: right;
187
- text-transform: capitalize;
188
- align-self: center;
189
- }
190
-
191
- :host > .icon-only-label {
192
- grid-column: span 1;
193
- }
194
-
195
- :host > input,
196
- :host > [editors] {
197
- grid-column: span 8;
198
- }
199
-
200
- :host > select {
201
- grid-column: span 4;
202
- height: 100%;
203
- border: 1px solid rgba(0, 0, 0, 0.2);
204
- }
205
-
206
- :host > ox-input-angle {
207
- grid-column: span 3;
208
- }
209
-
210
- ox-input-color-stops {
211
- grid-column: span 10;
212
- }
213
-
214
- .host > input[type='checkbox'] {
215
- grid-column: 3 / 4;
216
- }
217
-
218
- .host > input[type='checkbox'] ~ label {
219
- grid-column: span 7;
220
- text-align: left;
221
- }
222
-
223
- [editors] > :not([active-selector]) {
224
- display: none;
225
- }
226
-
227
- [gradient-direction] {
228
- overflow: hidden;
229
- max-width: 210px;
230
- }
231
-
232
- [gradient-direction] paper-item {
233
- background: url(/assets/images/icon-editor-gradient-direction.png) 50% 0 no-repeat;
234
- min-height: 32px;
235
- padding: 3px 5px;
236
- width: 30px;
237
- float: left;
238
- }
239
-
240
- [gradient-direction] [name='lefttop-to-rightbottom'] {
241
- background-position: 50% 4px;
242
- }
243
-
244
- [gradient-direction] [name='left-top'] {
245
- background-position: 50% 4px;
246
- }
247
-
248
- [gradient-direction] [name='top-to-bottom'] {
249
- background-position: 50% -46px;
250
- }
251
-
252
- [gradient-direction] [name='righttop-to-leftbottom'] {
253
- background-position: 50% -96px;
254
- }
255
-
256
- [gradient-direction] [name='right-top'] {
257
- background-position: 50% -96px;
258
- }
259
-
260
- [gradient-direction] [name='right-to-left'] {
261
- background-position: 50% -146px;
262
- }
263
-
264
- [gradient-direction] [name='rightbottom-to-lefttop'] {
265
- background-position: 50% -196px;
266
- }
267
-
268
- [gradient-direction] [name='right-bottom'] {
269
- background-position: 50% -196px;
270
- }
271
-
272
- [gradient-direction] [name='bottom-to-top'] {
273
- background-position: 50% -246px;
274
- }
275
-
276
- [gradient-direction] [name='leftbottom-to-righttop'] {
277
- background-position: 50% -296px;
278
- }
279
-
280
- [gradient-direction] [name='left-bottom'] {
281
- background-position: 50% -296px;
282
- }
283
-
284
- [gradient-direction] [name='left-to-right'] {
285
- background-position: 50% -346px;
286
- }
287
-
288
- [gradient-direction] [name='center-to-corner'] {
289
- background-position: 50% -396px;
290
- }
291
-
292
- [gradient-direction] [name='center'] {
293
- background-position: 50% -396px;
294
- }
295
-
296
- [gradient-direction] paper-item[focused] {
297
- background-color: rgba(255, 246, 143, 0.5);
298
- }
299
-
300
- .icon-only-label {
301
- top: 0 !important;
302
- width: 30px !important;
303
- height: 24px;
304
- background: url(/assets/images/icon-properties-label.png) no-repeat;
305
- }
306
-
307
- .icon-only-label.color {
308
- background-position: 70% -198px;
309
- }
310
- `;
311
- __decorate([
312
- property({ type: Object })
313
- ], OxInputColorGradient.prototype, "value", void 0);
314
- OxInputColorGradient = __decorate([
315
- customElement('ox-input-color-gradient')
316
- ], OxInputColorGradient);
317
- export { OxInputColorGradient };
318
- //# sourceMappingURL=ox-input-color-gradient.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ox-input-color-gradient.js","sourceRoot":"","sources":["../../../src/input/ox-input-color-gradient.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport '@operato/i18n/ox-i18n.js'\nimport '@polymer/paper-dropdown-menu/paper-dropdown-menu'\nimport '@polymer/paper-listbox/paper-listbox'\nimport '@polymer/paper-item/paper-item'\nimport '@operato/input/ox-input-angle.js'\nimport '@operato/input/ox-input-color-stops.js'\n\nimport { ColorStop, OxFormField } from '@operato/input'\nimport { css, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\n\nexport type GradientOption = {\n type: 'linear' | 'radial'\n rotation: number\n direction?:\n | 'left-to-right'\n | 'lefttop-to-rightbottom'\n | 'top-to-bottom'\n | 'righttop-to-leftbottom'\n | 'right-to-left'\n | 'rightbottom-to-lefttop'\n | 'bottom-to-top'\n | 'leftbottom-to-righttop'\n | 'left-to-right'\n | 'center-to-corner'\n center?: 'center' | 'left-top' | 'right-top' | 'right-bottom' | 'left-bottom'\n colorStops?: ColorStop[]\n}\n\n@customElement('ox-input-color-gradient')\nexport class OxInputColorGradient extends OxFormField {\n static styles = css`\n :host {\n display: grid;\n\n grid-template-columns: repeat(10, 1fr);\n grid-gap: 5px;\n grid-auto-rows: minmax(24px, auto);\n\n align-items: center;\n }\n\n :host > * {\n align-self: stretch;\n }\n\n :host > label {\n grid-column: span 2;\n text-align: right;\n text-transform: capitalize;\n align-self: center;\n }\n\n :host > .icon-only-label {\n grid-column: span 1;\n }\n\n :host > input,\n :host > [editors] {\n grid-column: span 8;\n }\n\n :host > select {\n grid-column: span 4;\n height: 100%;\n border: 1px solid rgba(0, 0, 0, 0.2);\n }\n\n :host > ox-input-angle {\n grid-column: span 3;\n }\n\n ox-input-color-stops {\n grid-column: span 10;\n }\n\n .host > input[type='checkbox'] {\n grid-column: 3 / 4;\n }\n\n .host > input[type='checkbox'] ~ label {\n grid-column: span 7;\n text-align: left;\n }\n\n [editors] > :not([active-selector]) {\n display: none;\n }\n\n [gradient-direction] {\n overflow: hidden;\n max-width: 210px;\n }\n\n [gradient-direction] paper-item {\n background: url(/assets/images/icon-editor-gradient-direction.png) 50% 0 no-repeat;\n min-height: 32px;\n padding: 3px 5px;\n width: 30px;\n float: left;\n }\n\n [gradient-direction] [name='lefttop-to-rightbottom'] {\n background-position: 50% 4px;\n }\n\n [gradient-direction] [name='left-top'] {\n background-position: 50% 4px;\n }\n\n [gradient-direction] [name='top-to-bottom'] {\n background-position: 50% -46px;\n }\n\n [gradient-direction] [name='righttop-to-leftbottom'] {\n background-position: 50% -96px;\n }\n\n [gradient-direction] [name='right-top'] {\n background-position: 50% -96px;\n }\n\n [gradient-direction] [name='right-to-left'] {\n background-position: 50% -146px;\n }\n\n [gradient-direction] [name='rightbottom-to-lefttop'] {\n background-position: 50% -196px;\n }\n\n [gradient-direction] [name='right-bottom'] {\n background-position: 50% -196px;\n }\n\n [gradient-direction] [name='bottom-to-top'] {\n background-position: 50% -246px;\n }\n\n [gradient-direction] [name='leftbottom-to-righttop'] {\n background-position: 50% -296px;\n }\n\n [gradient-direction] [name='left-bottom'] {\n background-position: 50% -296px;\n }\n\n [gradient-direction] [name='left-to-right'] {\n background-position: 50% -346px;\n }\n\n [gradient-direction] [name='center-to-corner'] {\n background-position: 50% -396px;\n }\n\n [gradient-direction] [name='center'] {\n background-position: 50% -396px;\n }\n\n [gradient-direction] paper-item[focused] {\n background-color: rgba(255, 246, 143, 0.5);\n }\n\n .icon-only-label {\n top: 0 !important;\n width: 30px !important;\n height: 24px;\n background: url(/assets/images/icon-properties-label.png) no-repeat;\n }\n\n .icon-only-label.color {\n background-position: 70% -198px;\n }\n `\n\n @property({ type: Object }) value: GradientOption = {\n type: 'linear',\n direction: 'left-to-right',\n rotation: 0\n }\n\n firstUpdated() {\n this.renderRoot.addEventListener('change', this._onChange.bind(this))\n }\n\n _onChange(e: Event) {\n var element = e.target as HTMLElement & { type: string }\n var key = element.getAttribute('value-key')\n\n if (!key) {\n return\n }\n\n var value\n\n switch (element.tagName) {\n case 'INPUT':\n switch (element.type) {\n case 'checkbox':\n value = (element as HTMLInputElement).checked\n break\n case 'number':\n value = Number((element as HTMLInputElement).value) || 0\n break\n case 'text':\n value = String((element as HTMLInputElement).value)\n }\n break\n\n case 'PAPER-BUTTON':\n value = (element as any).active\n break\n\n case 'PAPER-LISTBOX':\n value = (element as any).selected\n break\n\n default:\n value = (element as HTMLInputElement).value\n break\n }\n\n if (key === 'rotation') {\n this.value = {\n ...this.value,\n rotation: value,\n direction: undefined\n }\n } else if (key === 'direction') {\n if (value) {\n this.value = {\n ...this.value,\n direction: value,\n rotation: this._convertDirectionToRotation(value)\n }\n }\n } else {\n this.value = {\n ...this.value,\n [key]: value\n }\n }\n\n this.dispatchEvent(new CustomEvent('change', { bubbles: true, composed: true }))\n }\n\n render() {\n var selector = (this.value && this.value.type) || 'linear'\n var value = this.value || {}\n\n return html`\n <label> <ox-i18n msgid=\"label.type\">type</ox-i18n> </label>\n <select value-key=\"type\" .value=${value.type || 'linear'}>\n <option>linear</option>\n <option>radial</option>\n </select>\n\n <label class=\"icon-only-label color\"></label>\n <ox-input-angle value-key=\"rotation\" .value=${value.rotation || 0}> </ox-input-angle>\n\n <label> <ox-i18n msgid=\"label.direction\">direction</ox-i18n> </label>\n <div editors>\n <paper-dropdown-menu no-label-float=\"true\" ?active-selector=${selector == 'linear'} .value=${value.direction}>\n <paper-listbox\n @selected-changed=${(e: Event) => this._onChange(e)}\n value-key=\"direction\"\n slot=\"dropdown-content\"\n gradient-direction\n .selected=${value.direction}\n attr-for-selected=\"name\"\n >\n <paper-item name=\"lefttop-to-rightbottom\"></paper-item>\n <paper-item name=\"top-to-bottom\"></paper-item>\n <paper-item name=\"righttop-to-leftbottom\"></paper-item>\n <paper-item name=\"right-to-left\"></paper-item>\n <paper-item name=\"rightbottom-to-lefttop\"></paper-item>\n <paper-item name=\"bottom-to-top\"></paper-item>\n <paper-item name=\"leftbottom-to-righttop\"></paper-item>\n <paper-item name=\"left-to-right\"></paper-item>\n <paper-item name=\"center-to-corner\"></paper-item>\n </paper-listbox>\n </paper-dropdown-menu>\n\n <paper-dropdown-menu no-label-float=\"true\" ?active-selector=${selector == 'radial'} .value=${value.center}>\n <paper-listbox\n @selected-changed=${(e: Event) => this._onChange(e)}\n value-key=\"center\"\n slot=\"dropdown-content\"\n gradient-direction\n .selected=${value.center || 'center'}\n attr-for-selected=\"name\"\n >\n <paper-item name=\"center\"></paper-item>\n <paper-item name=\"left-top\"></paper-item>\n <paper-item name=\"right-top\"></paper-item>\n <paper-item name=\"right-bottom\"></paper-item>\n <paper-item name=\"left-bottom\"></paper-item>\n </paper-listbox>\n </paper-dropdown-menu>\n </div>\n\n <ox-input-color-stops value-key=\"colorStops\" type=\"gradient\" .value=${value.colorStops}> </ox-input-color-stops>\n `\n }\n\n _convertDirectionToRotation(direction: string): number {\n var rotation\n switch (direction) {\n case 'lefttop-to-rightbottom':\n rotation = 45\n break\n case 'top-to-bottom':\n rotation = 90\n break\n case 'righttop-to-leftbottom':\n rotation = 135\n break\n case 'right-to-left':\n rotation = 180\n break\n case 'rightbottom-to-lefttop':\n rotation = 215\n break\n case 'bottom-to-top':\n rotation = 270\n break\n case 'leftbottom-to-righttop':\n rotation = 315\n break\n case 'left-to-right':\n default:\n rotation = 0\n break\n }\n\n return (rotation / 360) * Math.PI * 2\n }\n}\n"]}
@@ -1,135 +0,0 @@
1
- import '@material/mwc-icon'
2
- import './id-selector.js'
3
-
4
- import { ColumnConfig, GristRecord, InputEditor } from '@operato/data-grist'
5
- import { TemplateResult, css, html } from 'lit'
6
- import { customElement, property } from 'lit/decorators.js'
7
-
8
- import { openPopup } from '@operato/layout'
9
-
10
- @customElement('ox-id-input')
11
- export class IdInput extends InputEditor {
12
- static styles = css`
13
- :host {
14
- display: flex;
15
- flex-flow: row nowrap;
16
- align-items: center;
17
-
18
- padding: 7px 0px;
19
- box-sizing: border-box;
20
-
21
- width: 100%;
22
- height: 100%;
23
-
24
- border: 0;
25
- background-color: transparent;
26
-
27
- font: var(--grist-object-editor-font);
28
- color: var(--grist-object-editor-color);
29
-
30
- justify-content: inherit;
31
- }
32
-
33
- span {
34
- display: flex;
35
- flex: auto;
36
-
37
- justify-content: inherit;
38
- }
39
-
40
- mwc-icon {
41
- width: 20px;
42
- font-size: 1.5em;
43
- margin-left: auto;
44
- }
45
- `
46
-
47
- @property({ type: Object }) value?: { id?: string; [propany: string]: any }
48
- @property({ type: Object }) column!: ColumnConfig
49
- @property({ type: Object }) record!: GristRecord
50
- @property({ type: Number }) row!: number
51
-
52
- private popup?: {
53
- name: string
54
- close: () => void
55
- closed: boolean
56
- onclosed?: (() => void) | undefined
57
- }
58
-
59
- private template?: TemplateResult
60
-
61
- render() {
62
- var { nameField = 'name', descriptionField = 'description' } = this.column.record.options || {}
63
- var value = this.value
64
-
65
- return html`
66
- ${!value ? html`` : html` <span>${value[nameField]} (${value[descriptionField]})</span> `}
67
- <mwc-icon>arrow_drop_down</mwc-icon>
68
- `
69
- }
70
-
71
- async firstUpdated() {
72
- this.value = this.record[this.column.name]
73
- this.template = ((this.column.record || {}).options || {}).template
74
-
75
- await this.updateComplete
76
-
77
- this.renderRoot.addEventListener('click', e => {
78
- e.stopPropagation()
79
-
80
- this.openSelector()
81
- })
82
-
83
- this.openSelector()
84
- }
85
-
86
- openSelector() {
87
- if (this.popup) {
88
- delete this.popup
89
- }
90
-
91
- const confirmCallback: (record: GristRecord | undefined) => void = selected => {
92
- if (!selected) {
93
- return
94
- }
95
-
96
- var { idField = 'id', nameField = 'name', descriptionField = 'description' } = this.column.record.options || {}
97
-
98
- this.dispatchEvent(
99
- new CustomEvent('field-change', {
100
- bubbles: true,
101
- composed: true,
102
- detail: {
103
- before: this.value,
104
- after: {
105
- [idField]: selected[idField],
106
- [nameField]: selected[nameField],
107
- [descriptionField]: selected[descriptionField]
108
- },
109
- record: this.record,
110
- column: this.column,
111
- row: this.row
112
- }
113
- })
114
- )
115
- }
116
-
117
- var value = this.value || {}
118
- var template =
119
- this.template ||
120
- html`
121
- <ox-id-selector
122
- .value=${value.id}
123
- .confirmCallback=${confirmCallback.bind(this)}
124
- .queryName=${this.column.record.options.queryName}
125
- .basicArgs=${this.column.record.options.basicArgs}
126
- ></ox-id-selector>
127
- `
128
-
129
- this.popup = openPopup(template, {
130
- backdrop: true,
131
- size: 'large',
132
- title: 'select item'
133
- })
134
- }
135
- }
@@ -1,13 +0,0 @@
1
- import { registerEditor, registerRenderer } from '@operato/data-grist'
2
-
3
- import { CodeEditor } from './code-editor'
4
- import { IdInput } from './id-input.js'
5
- import { IdRenderer } from './id-renderer.js'
6
- import { ObjectEditor } from './object-editor'
7
-
8
- /* register grist renderer/editor for id */
9
- registerEditor('id', IdInput)
10
- registerEditor('object', ObjectEditor as any)
11
- registerEditor('code', CodeEditor)
12
-
13
- registerRenderer('id', IdRenderer)