@operato/input 9.0.0-beta.11 → 9.0.0-beta.14

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.
@@ -0,0 +1,327 @@
1
+ /**
2
+ * @license Copyright © HatioLab Inc. All rights reserved.
3
+ */
4
+ import { __decorate } from "tslib";
5
+ import '@material/web/icon/icon.js';
6
+ import '@operato/i18n/ox-i18n.js';
7
+ import './ox-input-color.js';
8
+ import './ox-input-color-stops.js';
9
+ import './ox-input-color-gradient.js';
10
+ import './ox-input-background-pattern.js';
11
+ import { css, html } from 'lit';
12
+ import { customElement, property } from 'lit/decorators.js';
13
+ import { PropertyGridStyles } from '@operato/styles/property-grid-styles.js';
14
+ import { OxFormField } from './ox-form-field.js';
15
+ let OxInputColorStyle = class OxInputColorStyle extends OxFormField {
16
+ constructor() {
17
+ super(...arguments);
18
+ this.value = undefined;
19
+ this.colorOnly = false;
20
+ this._block_reset = false;
21
+ }
22
+ static { this.styles = [
23
+ PropertyGridStyles,
24
+ css `
25
+ :host {
26
+ display: flex;
27
+ flex-direction: column;
28
+ }
29
+
30
+ [fill-type] {
31
+ display: flex;
32
+ margin: 0 0 14px 0;
33
+ }
34
+
35
+ [fill-type] * {
36
+ flex: auto;
37
+ margin: 0;
38
+ text-align: left;
39
+ align-self: center;
40
+ }
41
+
42
+ [editors] > :not([active]) {
43
+ display: none;
44
+ }
45
+ `
46
+ ]; }
47
+ updated(changes) {
48
+ changes.has('value') && this._onChangedValue(this.value || {});
49
+ }
50
+ render() {
51
+ return html `
52
+ <div @change=${(e) => this._onChangedFillType(e)} fill-type>
53
+ <input
54
+ type="radio"
55
+ id="fill-type-no"
56
+ name="fill-type"
57
+ value="no"
58
+ .checked=${!this.fillType || this.fillType == 'no'}
59
+ />
60
+ <label for="fill-type-no"><ox-i18n msgid="label.no-fill">no fill</ox-i18n></label>
61
+ <input type="radio" id="fill-type-solid" name="fill-type" value="solid" .checked=${this.fillType == 'solid'} />
62
+ <label for="fill-type-solid"><ox-i18n msgid="label.solid">solid</ox-i18n></label>
63
+ <input
64
+ type="radio"
65
+ id="fill-type-gradient"
66
+ name="fill-type"
67
+ value="gradient"
68
+ .checked=${this.fillType == 'gradient'}
69
+ />
70
+
71
+ <label for="fill-type-gradient"><ox-i18n msgid="label.gradient">gradient</ox-i18n></label>
72
+
73
+ ${this.colorOnly
74
+ ? html ``
75
+ : html `
76
+ <input
77
+ type="radio"
78
+ id="fill-type-pattern"
79
+ name="fill-type"
80
+ value="pattern"
81
+ .checked=${this.fillType == 'pattern'}
82
+ />
83
+ <label for="fill-type-pattern"><ox-i18n msgid="label.pattern">pattern</ox-i18n></label>
84
+ `}
85
+ </div>
86
+
87
+ <div editors>
88
+ <div ?active=${this.fillType == 'no'}></div>
89
+
90
+ <div class="property-grid" ?active=${this.fillType == 'solid'}>
91
+ <label><md-icon>format_color_fill</md-icon></label>
92
+ <ox-input-color class="custom-editor" @change=${(e) => this._onChangedSolid(e)} .value=${this.solid}>
93
+ </ox-input-color>
94
+ </div>
95
+
96
+ <ox-input-color-gradient
97
+ ?active=${this.fillType == 'gradient'}
98
+ @change=${(e) => this._onChandedGradient(e)}
99
+ .value=${this.gradient}
100
+ >
101
+ </ox-input-color-gradient>
102
+
103
+ <ox-input-background-pattern
104
+ ?active=${this.fillType == 'pattern'}
105
+ @change=${(e) => this._onChangedPattern(e)}
106
+ .value=${this.pattern}
107
+ >
108
+ </ox-input-background-pattern>
109
+ </div>
110
+ `;
111
+ }
112
+ async _onChangedValue(value) {
113
+ /*
114
+ * this._block_reset의 역할은 내부 사용자 인터렉션에 의한 value의 변경시에는 각 type별 이전값을 유지하기 위함이다.
115
+ */
116
+ await this.requestUpdate();
117
+ /* 설정 값에 따라서, 멤버 속성을 설정한다. */
118
+ if (!value) {
119
+ this.fillType = 'no';
120
+ if (!this._block_reset) {
121
+ this.solid = undefined;
122
+ this.gradient = undefined;
123
+ this.pattern = undefined;
124
+ }
125
+ this._block_reset = false;
126
+ return;
127
+ }
128
+ switch (typeof value) {
129
+ case 'string':
130
+ this.fillType = 'solid';
131
+ this.solid = value;
132
+ if (!this._block_reset) {
133
+ this.gradient = undefined;
134
+ this.pattern = undefined;
135
+ }
136
+ break;
137
+ case 'object':
138
+ this.fillType = value.type;
139
+ if (value.type === 'gradient') {
140
+ this.gradient = {
141
+ type: value.gradientType || 'linear',
142
+ colorStops: value.colorStops || [
143
+ {
144
+ position: 0,
145
+ color: this.solid || '#000000'
146
+ },
147
+ {
148
+ position: 1,
149
+ color: this.solid || '#FFFFFF'
150
+ }
151
+ ],
152
+ rotation: Number(value.rotation) || 0,
153
+ center: value.center
154
+ };
155
+ if (!this._block_reset) {
156
+ this.pattern = undefined;
157
+ this.solid = undefined;
158
+ }
159
+ }
160
+ else if (value.type === 'pattern') {
161
+ this.pattern = {
162
+ image: value.image,
163
+ offsetX: Number(value.offsetX) || 0,
164
+ offsetY: Number(value.offsetY) || 0,
165
+ width: Number(value.width),
166
+ height: Number(value.height),
167
+ align: value.align,
168
+ fitPattern: value.fitPattern,
169
+ noRepeat: value.noRepeat,
170
+ color: value.color
171
+ };
172
+ if (!this._block_reset) {
173
+ this.gradient = undefined;
174
+ this.solid = undefined;
175
+ }
176
+ }
177
+ break;
178
+ default:
179
+ }
180
+ this._block_reset = false;
181
+ }
182
+ _onChangedFillType(e) {
183
+ const element = e.target;
184
+ this.fillType = element.value;
185
+ switch (this.fillType) {
186
+ case 'gradient':
187
+ if (!this.gradient) {
188
+ this.gradient = {
189
+ type: 'linear',
190
+ colorStops: [
191
+ {
192
+ position: 0,
193
+ color: this.solid || '#000000'
194
+ },
195
+ {
196
+ position: 1,
197
+ color: this.solid || '#FFFFFF'
198
+ }
199
+ ],
200
+ rotation: 0,
201
+ center: 'center'
202
+ };
203
+ }
204
+ this.value = {
205
+ type: 'gradient',
206
+ gradientType: this.gradient.type || 'linear',
207
+ colorStops: this.gradient.colorStops || [
208
+ {
209
+ position: 0,
210
+ color: this.solid || '#000000'
211
+ },
212
+ {
213
+ position: 1,
214
+ color: this.solid || '#FFFFFF'
215
+ }
216
+ ],
217
+ rotation: Number(this.gradient.rotation) || 0,
218
+ center: this.gradient.center
219
+ };
220
+ break;
221
+ case 'pattern':
222
+ if (!this.pattern)
223
+ this.pattern = {};
224
+ this.value = {
225
+ type: 'pattern',
226
+ image: this.pattern.image,
227
+ offsetX: Number(this.pattern.offsetX) || 0,
228
+ offsetY: Number(this.pattern.offsetY) || 0,
229
+ width: Number(this.pattern.width),
230
+ height: Number(this.pattern.height),
231
+ align: this.pattern.align,
232
+ fitPattern: this.pattern.fitPattern,
233
+ noRepeat: this.pattern.noRepeat,
234
+ color: this.pattern.color
235
+ };
236
+ break;
237
+ case 'solid':
238
+ if (!this.solid)
239
+ this.solid = '#fff';
240
+ this.value = this.solid;
241
+ break;
242
+ case 'no':
243
+ this.value = '';
244
+ break;
245
+ }
246
+ this._block_reset = true;
247
+ this.dispatchEvent(new CustomEvent('change', { bubbles: true, composed: true }));
248
+ }
249
+ _onChangedSolid(e) {
250
+ if (this.fillType !== 'solid')
251
+ return;
252
+ this.solid = e.target.value;
253
+ this.value = this.solid;
254
+ this._block_reset = true;
255
+ this.dispatchEvent(new CustomEvent('change', { bubbles: true, composed: true }));
256
+ }
257
+ _onChandedGradient(e) {
258
+ /*
259
+ * TODO Gradient의 rotation은 symmetry 기능 등으로 외부에서 변경될 수도 있다.
260
+ * 이 점을 감안해서, 외부 변경에 대한 대응을 해야 한다.
261
+ */
262
+ if (this.fillType !== 'gradient') {
263
+ return;
264
+ }
265
+ this.gradient = e.target.value;
266
+ this.value = {
267
+ type: 'gradient',
268
+ gradientType: this.gradient.type || 'linear',
269
+ colorStops: this.gradient.colorStops || [
270
+ {
271
+ position: 0,
272
+ color: this.solid || '#000000'
273
+ },
274
+ {
275
+ position: 1,
276
+ color: this.solid || '#FFFFFF'
277
+ }
278
+ ],
279
+ rotation: Number(this.gradient.rotation) || 0,
280
+ center: this.gradient.center
281
+ };
282
+ this._block_reset = true;
283
+ this.dispatchEvent(new CustomEvent('change', { bubbles: true, composed: true }));
284
+ }
285
+ _onChangedPattern(e) {
286
+ if (this.fillType !== 'pattern')
287
+ return;
288
+ this.pattern = e.target.value;
289
+ this.value = {
290
+ type: 'pattern',
291
+ image: this.pattern?.image,
292
+ offsetX: Number(this.pattern?.offsetX) || 0,
293
+ offsetY: Number(this.pattern?.offsetY) || 0,
294
+ width: Number(this.pattern?.width),
295
+ height: Number(this.pattern?.height),
296
+ align: this.pattern?.align,
297
+ fitPattern: this.pattern?.fitPattern,
298
+ noRepeat: this.pattern?.noRepeat,
299
+ color: this.pattern?.color
300
+ };
301
+ this._block_reset = true;
302
+ this.dispatchEvent(new CustomEvent('change', { bubbles: true, composed: true }));
303
+ }
304
+ };
305
+ __decorate([
306
+ property({ type: Object })
307
+ ], OxInputColorStyle.prototype, "value", void 0);
308
+ __decorate([
309
+ property({ type: String })
310
+ ], OxInputColorStyle.prototype, "fillType", void 0);
311
+ __decorate([
312
+ property({ type: String })
313
+ ], OxInputColorStyle.prototype, "solid", void 0);
314
+ __decorate([
315
+ property({ type: Object })
316
+ ], OxInputColorStyle.prototype, "gradient", void 0);
317
+ __decorate([
318
+ property({ type: Object })
319
+ ], OxInputColorStyle.prototype, "pattern", void 0);
320
+ __decorate([
321
+ property({ type: Boolean, attribute: 'color-only' })
322
+ ], OxInputColorStyle.prototype, "colorOnly", void 0);
323
+ OxInputColorStyle = __decorate([
324
+ customElement('ox-input-fill-style')
325
+ ], OxInputColorStyle);
326
+ export { OxInputColorStyle };
327
+ //# sourceMappingURL=ox-input-fill-style.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ox-input-fill-style.js","sourceRoot":"","sources":["../../src/ox-input-fill-style.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport '@material/web/icon/icon.js'\nimport '@operato/i18n/ox-i18n.js'\nimport './ox-input-color.js'\nimport './ox-input-color-stops.js'\nimport './ox-input-color-gradient.js'\nimport './ox-input-background-pattern.js'\n\nimport { css, html, PropertyValues } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\n\nimport { PropertyGridStyles } from '@operato/styles/property-grid-styles.js'\n\nimport { OxFormField } from './ox-form-field.js'\nimport { ColorStop } from './ox-input-color-stops.js'\nimport { GradientOption, OxInputColorGradient } from './ox-input-color-gradient.js'\nimport { BackgroundPatternOption, OxInputBackgroundPattern } from './ox-input-background-pattern.js'\n\nexport type FillStyle =\n | {\n type?: 'no' | 'solid' | 'gradient' | 'pattern'\n gradientType?: 'linear' | 'radial'\n colorStops?: ColorStop[]\n rotation?: number\n center?: 'center' | 'left-top' | 'right-top' | 'right-bottom' | 'left-bottom'\n image?: HTMLImageElement | string\n offsetX?: number\n offsetY?: number\n width?: number\n height?: number\n align?: 'left-top' | 'top' | 'right-top' | 'left' | 'center' | 'right' | 'left-bottom' | 'bottom' | 'right-bottom'\n fitPattern?: boolean\n noRepeat?: boolean\n color?: string\n }\n | 'no'\n | string\n\n@customElement('ox-input-fill-style')\nexport class OxInputColorStyle extends OxFormField {\n static styles = [\n PropertyGridStyles,\n css`\n :host {\n display: flex;\n flex-direction: column;\n }\n\n [fill-type] {\n display: flex;\n margin: 0 0 14px 0;\n }\n\n [fill-type] * {\n flex: auto;\n margin: 0;\n text-align: left;\n align-self: center;\n }\n\n [editors] > :not([active]) {\n display: none;\n }\n `\n ]\n\n @property({ type: Object }) value?: FillStyle = undefined\n @property({ type: String }) fillType?: string\n @property({ type: String }) solid?: string\n @property({ type: Object }) gradient?: GradientOption\n @property({ type: Object }) pattern?: BackgroundPatternOption\n\n @property({ type: Boolean, attribute: 'color-only' }) colorOnly: boolean = false\n\n private _block_reset: boolean = false\n\n updated(changes: PropertyValues<this>) {\n changes.has('value') && this._onChangedValue(this.value || {})\n }\n\n render() {\n return html`\n <div @change=${(e: Event) => this._onChangedFillType(e)} fill-type>\n <input\n type=\"radio\"\n id=\"fill-type-no\"\n name=\"fill-type\"\n value=\"no\"\n .checked=${!this.fillType || this.fillType == 'no'}\n />\n <label for=\"fill-type-no\"><ox-i18n msgid=\"label.no-fill\">no fill</ox-i18n></label>\n <input type=\"radio\" id=\"fill-type-solid\" name=\"fill-type\" value=\"solid\" .checked=${this.fillType == 'solid'} />\n <label for=\"fill-type-solid\"><ox-i18n msgid=\"label.solid\">solid</ox-i18n></label>\n <input\n type=\"radio\"\n id=\"fill-type-gradient\"\n name=\"fill-type\"\n value=\"gradient\"\n .checked=${this.fillType == 'gradient'}\n />\n\n <label for=\"fill-type-gradient\"><ox-i18n msgid=\"label.gradient\">gradient</ox-i18n></label>\n\n ${this.colorOnly\n ? html``\n : html`\n <input\n type=\"radio\"\n id=\"fill-type-pattern\"\n name=\"fill-type\"\n value=\"pattern\"\n .checked=${this.fillType == 'pattern'}\n />\n <label for=\"fill-type-pattern\"><ox-i18n msgid=\"label.pattern\">pattern</ox-i18n></label>\n `}\n </div>\n\n <div editors>\n <div ?active=${this.fillType == 'no'}></div>\n\n <div class=\"property-grid\" ?active=${this.fillType == 'solid'}>\n <label><md-icon>format_color_fill</md-icon></label>\n <ox-input-color class=\"custom-editor\" @change=${(e: Event) => this._onChangedSolid(e)} .value=${this.solid}>\n </ox-input-color>\n </div>\n\n <ox-input-color-gradient\n ?active=${this.fillType == 'gradient'}\n @change=${(e: Event) => this._onChandedGradient(e)}\n .value=${this.gradient}\n >\n </ox-input-color-gradient>\n\n <ox-input-background-pattern\n ?active=${this.fillType == 'pattern'}\n @change=${(e: Event) => this._onChangedPattern(e)}\n .value=${this.pattern}\n >\n </ox-input-background-pattern>\n </div>\n `\n }\n\n async _onChangedValue(value: FillStyle) {\n /*\n * this._block_reset의 역할은 내부 사용자 인터렉션에 의한 value의 변경시에는 각 type별 이전값을 유지하기 위함이다.\n */\n await this.requestUpdate()\n\n /* 설정 값에 따라서, 멤버 속성을 설정한다. */\n if (!value) {\n this.fillType = 'no'\n\n if (!this._block_reset) {\n this.solid = undefined\n this.gradient = undefined\n this.pattern = undefined\n }\n\n this._block_reset = false\n return\n }\n\n switch (typeof value) {\n case 'string':\n this.fillType = 'solid'\n this.solid = value\n\n if (!this._block_reset) {\n this.gradient = undefined\n this.pattern = undefined\n }\n break\n case 'object':\n this.fillType = value.type\n\n if (value.type === 'gradient') {\n this.gradient = {\n type: value.gradientType || 'linear',\n colorStops: value.colorStops || [\n {\n position: 0,\n color: this.solid || '#000000'\n },\n {\n position: 1,\n color: this.solid || '#FFFFFF'\n }\n ],\n rotation: Number(value.rotation) || 0,\n center: value.center\n }\n\n if (!this._block_reset) {\n this.pattern = undefined\n this.solid = undefined\n }\n } else if (value.type === 'pattern') {\n this.pattern = {\n image: value.image,\n offsetX: Number(value.offsetX) || 0,\n offsetY: Number(value.offsetY) || 0,\n width: Number(value.width),\n height: Number(value.height),\n align: value.align,\n fitPattern: value.fitPattern,\n noRepeat: value.noRepeat,\n color: value.color\n }\n\n if (!this._block_reset) {\n this.gradient = undefined\n this.solid = undefined\n }\n }\n\n break\n default:\n }\n\n this._block_reset = false\n }\n\n _onChangedFillType(e: Event) {\n const element = e.target as HTMLInputElement\n this.fillType = element.value\n\n switch (this.fillType) {\n case 'gradient':\n if (!this.gradient) {\n this.gradient = {\n type: 'linear',\n colorStops: [\n {\n position: 0,\n color: this.solid || '#000000'\n },\n {\n position: 1,\n color: this.solid || '#FFFFFF'\n }\n ],\n rotation: 0,\n center: 'center'\n }\n }\n\n this.value = {\n type: 'gradient',\n gradientType: this.gradient.type || 'linear',\n colorStops: this.gradient.colorStops || [\n {\n position: 0,\n color: this.solid || '#000000'\n },\n {\n position: 1,\n color: this.solid || '#FFFFFF'\n }\n ],\n rotation: Number(this.gradient.rotation) || 0,\n center: this.gradient.center\n }\n break\n\n case 'pattern':\n if (!this.pattern) this.pattern = {}\n\n this.value = {\n type: 'pattern',\n image: this.pattern.image,\n offsetX: Number(this.pattern.offsetX) || 0,\n offsetY: Number(this.pattern.offsetY) || 0,\n width: Number(this.pattern.width),\n height: Number(this.pattern.height),\n align: this.pattern.align,\n fitPattern: this.pattern.fitPattern,\n noRepeat: this.pattern.noRepeat,\n color: this.pattern.color\n }\n break\n\n case 'solid':\n if (!this.solid) this.solid = '#fff'\n this.value = this.solid\n break\n\n case 'no':\n this.value = ''\n break\n }\n\n this._block_reset = true\n this.dispatchEvent(new CustomEvent('change', { bubbles: true, composed: true }))\n }\n\n _onChangedSolid(e: Event) {\n if (this.fillType !== 'solid') return\n\n this.solid = (e.target as HTMLInputElement).value\n\n this.value = this.solid\n\n this._block_reset = true\n this.dispatchEvent(new CustomEvent('change', { bubbles: true, composed: true }))\n }\n\n _onChandedGradient(e: Event) {\n /*\n * TODO Gradient의 rotation은 symmetry 기능 등으로 외부에서 변경될 수도 있다.\n * 이 점을 감안해서, 외부 변경에 대한 대응을 해야 한다.\n */\n\n if (this.fillType !== 'gradient') {\n return\n }\n\n this.gradient = (e.target as OxInputColorGradient).value\n\n this.value = {\n type: 'gradient',\n gradientType: this.gradient.type || 'linear',\n colorStops: this.gradient.colorStops || [\n {\n position: 0,\n color: this.solid || '#000000'\n },\n {\n position: 1,\n color: this.solid || '#FFFFFF'\n }\n ],\n rotation: Number(this.gradient.rotation) || 0,\n center: this.gradient.center\n }\n\n this._block_reset = true\n this.dispatchEvent(new CustomEvent('change', { bubbles: true, composed: true }))\n }\n\n _onChangedPattern(e: Event) {\n if (this.fillType !== 'pattern') return\n\n this.pattern = (e.target as OxInputBackgroundPattern).value\n\n this.value = {\n type: 'pattern',\n image: this.pattern?.image,\n offsetX: Number(this.pattern?.offsetX) || 0,\n offsetY: Number(this.pattern?.offsetY) || 0,\n width: Number(this.pattern?.width),\n height: Number(this.pattern?.height),\n align: this.pattern?.align,\n fitPattern: this.pattern?.fitPattern,\n noRepeat: this.pattern?.noRepeat,\n color: this.pattern?.color\n }\n\n this._block_reset = true\n this.dispatchEvent(new CustomEvent('change', { bubbles: true, composed: true }))\n }\n}\n"]}
@@ -6,3 +6,24 @@ import '@polymer/paper-dropdown-menu/paper-dropdown-menu.js';
6
6
  import '@polymer/paper-item/paper-item.js';
7
7
  import '@operato/i18n/ox-i18n.js';
8
8
  import './ox-input-color.js';
9
+ import { OxFormField } from './ox-form-field.js';
10
+ type BorderStyle = 'solid' | 'round-dot' | 'square-dot' | 'dash' | 'dash-dot' | 'long-dash' | 'long-dash-dot' | 'long-dash-dot-dot';
11
+ /**
12
+ * 테이블 셀의 좌,우,상,하 경계선의 스타일을 편집하는 컴포넌트이다.
13
+ * Example:
14
+ * <ox-input-table value=${border}>
15
+ * </ox-input-table>
16
+ */
17
+ export declare class OxInputTable extends OxFormField {
18
+ static get styles(): import("lit").CSSResult[];
19
+ borderWidth: number;
20
+ borderColor: string;
21
+ borderStyle: BorderStyle;
22
+ value: any;
23
+ borderFieldSet: HTMLElement;
24
+ firstUpdated(): void;
25
+ render(): import("lit-html").TemplateResult<1>;
26
+ _onClickCell(e: Event): void;
27
+ _onClickType(e: Event): void;
28
+ }
29
+ export {};