@operato/input 9.0.0-beta.4 → 9.0.0-beta.41

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 (123) hide show
  1. package/CHANGELOG.md +188 -0
  2. package/dist/src/index.d.ts +0 -3
  3. package/dist/src/index.js +0 -3
  4. package/dist/src/index.js.map +1 -1
  5. package/dist/src/ox-input-angle.js +1 -3
  6. package/dist/src/ox-input-angle.js.map +1 -1
  7. package/dist/src/ox-input-background-pattern.d.ts +35 -0
  8. package/dist/src/ox-input-background-pattern.js +111 -0
  9. package/dist/src/ox-input-background-pattern.js.map +1 -0
  10. package/dist/src/ox-input-color-gradient.d.ts +12 -10
  11. package/dist/src/ox-input-color-gradient.js +104 -222
  12. package/dist/src/ox-input-color-gradient.js.map +1 -1
  13. package/dist/src/ox-input-color-stops.d.ts +26 -22
  14. package/dist/src/ox-input-color-stops.js +122 -151
  15. package/dist/src/ox-input-color-stops.js.map +1 -1
  16. package/dist/src/ox-input-color.d.ts +13 -5
  17. package/dist/src/ox-input-color.js +169 -96
  18. package/dist/src/ox-input-color.js.map +1 -1
  19. package/dist/src/ox-input-crontab.js +1 -0
  20. package/dist/src/ox-input-crontab.js.map +1 -1
  21. package/dist/src/ox-input-direction.js +1 -0
  22. package/dist/src/ox-input-direction.js.map +1 -1
  23. package/dist/src/ox-input-duration.js +4 -0
  24. package/dist/src/ox-input-duration.js.map +1 -1
  25. package/dist/src/ox-input-fill-style.d.ts +47 -0
  26. package/dist/src/ox-input-fill-style.js +327 -0
  27. package/dist/src/ox-input-fill-style.js.map +1 -0
  28. package/dist/src/ox-input-multiple-colors.js +2 -2
  29. package/dist/src/ox-input-multiple-colors.js.map +1 -1
  30. package/dist/src/ox-input-privilege.js +1 -0
  31. package/dist/src/ox-input-privilege.js.map +1 -1
  32. package/dist/src/ox-input-range.js +2 -0
  33. package/dist/src/ox-input-range.js.map +1 -1
  34. package/dist/src/ox-input-search.js +1 -1
  35. package/dist/src/ox-input-search.js.map +1 -1
  36. package/dist/src/ox-input-select-buttons.d.ts +1 -1
  37. package/dist/src/ox-input-select-buttons.js +2 -2
  38. package/dist/src/ox-input-select-buttons.js.map +1 -1
  39. package/dist/src/ox-input-table.d.ts +20 -2
  40. package/dist/src/ox-input-table.js +67 -160
  41. package/dist/src/ox-input-table.js.map +1 -1
  42. package/dist/src/ox-select-floor.js +1 -0
  43. package/dist/src/ox-select-floor.js.map +1 -1
  44. package/dist/src/ox-select.d.ts +3 -0
  45. package/dist/src/ox-select.js +19 -9
  46. package/dist/src/ox-select.js.map +1 -1
  47. package/dist/stories/ox-buttons-radio.stories.js +1 -1
  48. package/dist/stories/ox-buttons-radio.stories.js.map +1 -1
  49. package/dist/stories/ox-checkbox.stories.js +1 -1
  50. package/dist/stories/ox-checkbox.stories.js.map +1 -1
  51. package/dist/stories/ox-input-3axis.stories.js +1 -1
  52. package/dist/stories/ox-input-3axis.stories.js.map +1 -1
  53. package/dist/stories/ox-input-3dish.stories.js +1 -1
  54. package/dist/stories/ox-input-3dish.stories.js.map +1 -1
  55. package/dist/stories/ox-input-angle.stories.js +1 -1
  56. package/dist/stories/ox-input-angle.stories.js.map +1 -1
  57. package/dist/stories/ox-input-barcode.stories.js +1 -1
  58. package/dist/stories/ox-input-barcode.stories.js.map +1 -1
  59. package/dist/stories/ox-input-code.stories.js +1 -1
  60. package/dist/stories/ox-input-code.stories.js.map +1 -1
  61. package/dist/stories/ox-input-crontab.stories.js +1 -1
  62. package/dist/stories/ox-input-crontab.stories.js.map +1 -1
  63. package/dist/stories/ox-input-data.stories.js +1 -1
  64. package/dist/stories/ox-input-data.stories.js.map +1 -1
  65. package/dist/stories/ox-input-direction.stories.js +1 -1
  66. package/dist/stories/ox-input-direction.stories.js.map +1 -1
  67. package/dist/stories/ox-input-duration.stories.js +1 -1
  68. package/dist/stories/ox-input-duration.stories.js.map +1 -1
  69. package/dist/stories/ox-input-file.stories.js +1 -1
  70. package/dist/stories/ox-input-file.stories.js.map +1 -1
  71. package/dist/stories/ox-input-hashtags.stories.js +1 -1
  72. package/dist/stories/ox-input-hashtags.stories.js.map +1 -1
  73. package/dist/stories/ox-input-i18n-label.stories.js +1 -1
  74. package/dist/stories/ox-input-i18n-label.stories.js.map +1 -1
  75. package/dist/stories/ox-input-key-values.stories.js +1 -1
  76. package/dist/stories/ox-input-key-values.stories.js.map +1 -1
  77. package/dist/stories/ox-input-mass-fraction.stories.js +1 -1
  78. package/dist/stories/ox-input-mass-fraction.stories.js.map +1 -1
  79. package/dist/stories/ox-input-multiple-colors.stories.js +1 -1
  80. package/dist/stories/ox-input-multiple-colors.stories.js.map +1 -1
  81. package/dist/stories/ox-input-options.stories.js +1 -1
  82. package/dist/stories/ox-input-options.stories.js.map +1 -1
  83. package/dist/stories/ox-input-partition-keys.stories.js +1 -1
  84. package/dist/stories/ox-input-partition-keys.stories.js.map +1 -1
  85. package/dist/stories/ox-input-privilege.stories.js +1 -1
  86. package/dist/stories/ox-input-privilege.stories.js.map +1 -1
  87. package/dist/stories/ox-input-quantifier.stories.js +1 -1
  88. package/dist/stories/ox-input-quantifier.stories.js.map +1 -1
  89. package/dist/stories/ox-input-range.stories.js +1 -1
  90. package/dist/stories/ox-input-range.stories.js.map +1 -1
  91. package/dist/stories/ox-input-search.stories.js +1 -1
  92. package/dist/stories/ox-input-search.stories.js.map +1 -1
  93. package/dist/stories/ox-input-select-buttons.stories.js +1 -1
  94. package/dist/stories/ox-input-select-buttons.stories.js.map +1 -1
  95. package/dist/stories/ox-input-signature.stories.js +1 -1
  96. package/dist/stories/ox-input-signature.stories.js.map +1 -1
  97. package/dist/stories/ox-input-switch.stories.js +1 -1
  98. package/dist/stories/ox-input-switch.stories.js.map +1 -1
  99. package/dist/stories/ox-input-table-column-config.stories.js +1 -1
  100. package/dist/stories/ox-input-table-column-config.stories.js.map +1 -1
  101. package/dist/stories/ox-input-table.stories.d.ts +21 -0
  102. package/dist/stories/ox-input-table.stories.js +84 -0
  103. package/dist/stories/ox-input-table.stories.js.map +1 -0
  104. package/dist/stories/ox-input-unit.stories.js +1 -1
  105. package/dist/stories/ox-input-unit.stories.js.map +1 -1
  106. package/dist/stories/ox-input-value-map.stories.js +1 -1
  107. package/dist/stories/ox-input-value-map.stories.js.map +1 -1
  108. package/dist/stories/ox-input-value-ranges.stories.js +1 -1
  109. package/dist/stories/ox-input-value-ranges.stories.js.map +1 -1
  110. package/dist/stories/ox-input-work-shift.stories.js +1 -1
  111. package/dist/stories/ox-input-work-shift.stories.js.map +1 -1
  112. package/dist/stories/ox-select-floor.stories.js +1 -1
  113. package/dist/stories/ox-select-floor.stories.js.map +1 -1
  114. package/dist/stories/ox-select-images.stories.d.ts +32 -0
  115. package/dist/stories/ox-select-images.stories.js +120 -0
  116. package/dist/stories/ox-select-images.stories.js.map +1 -0
  117. package/dist/stories/ox-select-set-options.stories.js +1 -1
  118. package/dist/stories/ox-select-set-options.stories.js.map +1 -1
  119. package/dist/stories/ox-select.stories.js +1 -1
  120. package/dist/stories/ox-select.stories.js.map +1 -1
  121. package/dist/tsconfig.tsbuildinfo +1 -1
  122. package/package.json +31 -25
  123. package/tsconfig.tsbuildinfo +1 -0
@@ -2,15 +2,16 @@
2
2
  * @license Copyright © HatioLab Inc. All rights reserved.
3
3
  */
4
4
  import { __decorate } from "tslib";
5
+ import '@material/web/icon/icon.js';
5
6
  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';
7
+ import './ox-select.js';
8
+ import './ox-input-angle.js';
9
+ import './ox-input-color-stops.js';
11
10
  import { css, html } from 'lit';
12
11
  import { customElement, property } from 'lit/decorators.js';
13
12
  import { OxFormField } from './ox-form-field.js';
13
+ import { PropertyGridStyles } from '@operato/styles/property-grid-styles.js';
14
+ import { GradientDirectionStyles } from '@operato/styles/gradient-direction-styles.js';
14
15
  let OxInputColorGradient = class OxInputColorGradient extends OxFormField {
15
16
  constructor() {
16
17
  super(...arguments);
@@ -20,152 +21,84 @@ let OxInputColorGradient = class OxInputColorGradient extends OxFormField {
20
21
  rotation: 0
21
22
  };
22
23
  }
23
- static { this.styles = css `
24
- :host {
25
- display: grid;
26
-
27
- grid-template-columns: repeat(10, 1fr);
28
- grid-gap: 5px;
29
- grid-auto-rows: minmax(24px, auto);
30
-
31
- align-items: center;
32
- }
33
-
34
- :host > * {
35
- align-self: stretch;
36
- }
37
-
38
- :host > label {
39
- grid-column: span 2;
40
- text-align: right;
41
- text-transform: capitalize;
42
- align-self: center;
43
- }
44
-
45
- :host > .icon-only-label {
46
- grid-column: span 1;
47
- }
48
-
49
- :host > input,
50
- :host > [editors] {
51
- grid-column: span 8;
52
- }
53
-
54
- :host > select {
55
- grid-column: span 4;
56
- height: 100%;
57
- border: 1px solid rgba(0, 0, 0, 0.2);
58
- }
59
-
60
- :host > ox-input-angle {
61
- grid-column: span 3;
62
- }
63
-
64
- ox-input-color-stops {
65
- grid-column: span 10;
66
- }
67
-
68
- .host > input[type='checkbox'] {
69
- grid-column: 3 / 4;
70
- }
71
-
72
- .host > input[type='checkbox'] ~ label {
73
- grid-column: span 7;
74
- text-align: left;
75
- }
76
-
77
- [editors] > :not([active-selector]) {
78
- display: none;
79
- }
80
-
81
- [gradient-direction] {
82
- overflow: hidden;
83
- max-width: 210px;
84
- }
85
-
86
- [gradient-direction] paper-item {
87
- background: url(/assets/images/icon-editor-gradient-direction.png) 50% 0 no-repeat;
88
- min-height: 32px;
89
- padding: 3px 5px;
90
- width: 30px;
91
- float: left;
92
- }
93
-
94
- [gradient-direction] [name='lefttop-to-rightbottom'] {
95
- background-position: 50% 4px;
96
- }
97
-
98
- [gradient-direction] [name='left-top'] {
99
- background-position: 50% 4px;
100
- }
101
-
102
- [gradient-direction] [name='top-to-bottom'] {
103
- background-position: 50% -46px;
104
- }
105
-
106
- [gradient-direction] [name='righttop-to-leftbottom'] {
107
- background-position: 50% -96px;
108
- }
109
-
110
- [gradient-direction] [name='right-top'] {
111
- background-position: 50% -96px;
112
- }
113
-
114
- [gradient-direction] [name='right-to-left'] {
115
- background-position: 50% -146px;
116
- }
117
-
118
- [gradient-direction] [name='rightbottom-to-lefttop'] {
119
- background-position: 50% -196px;
120
- }
121
-
122
- [gradient-direction] [name='right-bottom'] {
123
- background-position: 50% -196px;
124
- }
125
-
126
- [gradient-direction] [name='bottom-to-top'] {
127
- background-position: 50% -246px;
128
- }
129
-
130
- [gradient-direction] [name='leftbottom-to-righttop'] {
131
- background-position: 50% -296px;
132
- }
133
-
134
- [gradient-direction] [name='left-bottom'] {
135
- background-position: 50% -296px;
136
- }
137
-
138
- [gradient-direction] [name='left-to-right'] {
139
- background-position: 50% -346px;
140
- }
141
-
142
- [gradient-direction] [name='center-to-corner'] {
143
- background-position: 50% -396px;
144
- }
145
-
146
- [gradient-direction] [name='center'] {
147
- background-position: 50% -396px;
148
- }
149
-
150
- [gradient-direction] paper-item[focused] {
151
- background-color: rgba(255, 246, 143, 0.5);
152
- }
153
-
154
- .icon-only-label {
155
- top: 0 !important;
156
- width: 30px !important;
157
- height: 24px;
158
- background: url(/assets/images/icon-properties-label.png) no-repeat;
159
- }
160
-
161
- .icon-only-label.color {
162
- background-position: 70% -198px;
163
- }
164
- `; }
24
+ static { this.styles = [
25
+ PropertyGridStyles,
26
+ GradientDirectionStyles,
27
+ css `
28
+ :host {
29
+ display: flex;
30
+ }
31
+
32
+ [editors] > :not([active-selector]) {
33
+ display: none;
34
+ }
35
+ `
36
+ ]; }
165
37
  firstUpdated() {
166
- this.renderRoot.addEventListener('change', this._onChange.bind(this));
38
+ this.renderRoot.addEventListener('change', this.onChange.bind(this));
39
+ }
40
+ render() {
41
+ var selector = (this.value && this.value.type) || 'linear';
42
+ var { type = 'linear', center = 'center', rotation = 0, colorStops } = this.value || {};
43
+ var direction = type == 'linear' ? this.convertRotationToDirection(rotation) : '';
44
+ return html `
45
+ <div class="property-grid">
46
+ <label> <ox-i18n msgid="label.type">type</ox-i18n> </label>
47
+ <select value-key="type" .value=${type || 'linear'} ?disabled=${this.disabled}>
48
+ <option>linear</option>
49
+ <option>radial</option>
50
+ </select>
51
+
52
+ <label><md-icon>reset_iso</md-icon></label>
53
+ <ox-input-angle value-key="rotation" .value=${rotation || 0} ?disabled=${this.disabled}> </ox-input-angle>
54
+
55
+ <label> <ox-i18n msgid="label.direction">direction</ox-i18n> </label>
56
+ <div class="custom-editor" editors>
57
+ <ox-select ?active-selector=${selector == 'linear'} .value=${direction} value-key="direction">
58
+ <div class="gradient-direction" value=${String(direction || '')} slot="label"></div>
59
+ <ox-popup-list align-left nowrap>
60
+ <style>
61
+ ${GradientDirectionStyles.cssText}
62
+ </style>
63
+ <div class="gradient-direction" value="lefttop-to-rightbottom" option></div>
64
+ <div class="gradient-direction" value="top-to-bottom" option></div>
65
+ <div class="gradient-direction" value="righttop-to-leftbottom" option></div>
66
+ <div class="gradient-direction" value="right-to-left" option></div>
67
+ <div class="gradient-direction" value="rightbottom-to-lefttop" option></div>
68
+ <div class="gradient-direction" value="bottom-to-top" option></div>
69
+ <div class="gradient-direction" value="leftbottom-to-righttop" option></div>
70
+ <div class="gradient-direction" value="left-to-right" option></div>
71
+ <div class="gradient-direction" value="center-to-corner" option></div>
72
+ </ox-popup-list>
73
+ </ox-select>
74
+
75
+ <ox-select ?active-selector=${selector == 'radial'} .value=${center} value-key="center">
76
+ <div class="gradient-direction" value=${String(center || '')} slot="label"></div>
77
+ <ox-popup-list align-left nowrap>
78
+ <style>
79
+ ${GradientDirectionStyles.cssText}
80
+ </style>
81
+ <div class="gradient-direction" value="center" option></div>
82
+ <div class="gradient-direction" value="left-top" option></div>
83
+ <div class="gradient-direction" value="right-top" option></div>
84
+ <div class="gradient-direction" value="right-bottom" option></div>
85
+ <div class="gradient-direction" value="left-bottom" option></div>
86
+ </ox-popup-list>
87
+ </ox-select>
88
+ </div>
89
+
90
+ <ox-input-color-stops
91
+ value-key="colorStops"
92
+ type="gradient"
93
+ .value=${colorStops}
94
+ ?disabled=${this.disabled}
95
+ class="fullwidth"
96
+ >
97
+ </ox-input-color-stops>
98
+ </div>
99
+ `;
167
100
  }
168
- _onChange(e) {
101
+ onChange(e) {
169
102
  var element = e.target;
170
103
  var key = element.getAttribute('value-key');
171
104
  if (!key) {
@@ -185,12 +118,6 @@ let OxInputColorGradient = class OxInputColorGradient extends OxFormField {
185
118
  value = String(element.value);
186
119
  }
187
120
  break;
188
- case 'PAPER-BUTTON':
189
- value = element.active;
190
- break;
191
- case 'PAPER-LISTBOX':
192
- value = element.selected;
193
- break;
194
121
  default:
195
122
  value = element.value;
196
123
  break;
@@ -198,8 +125,8 @@ let OxInputColorGradient = class OxInputColorGradient extends OxFormField {
198
125
  if (key === 'rotation') {
199
126
  this.value = {
200
127
  ...this.value,
201
- rotation: value,
202
- direction: undefined
128
+ rotation: Number(value || 0),
129
+ direction: this.convertRotationToDirection(Number(value))
203
130
  };
204
131
  }
205
132
  else if (key === 'direction') {
@@ -207,7 +134,7 @@ let OxInputColorGradient = class OxInputColorGradient extends OxFormField {
207
134
  this.value = {
208
135
  ...this.value,
209
136
  direction: value,
210
- rotation: this._convertDirectionToRotation(value)
137
+ rotation: this.convertDirectionToRotation(String(value || 'left-to-right'))
211
138
  };
212
139
  }
213
140
  }
@@ -219,70 +146,7 @@ let OxInputColorGradient = class OxInputColorGradient extends OxFormField {
219
146
  }
220
147
  this.dispatchEvent(new CustomEvent('change', { bubbles: true, composed: true }));
221
148
  }
222
- render() {
223
- var selector = (this.value && this.value.type) || 'linear';
224
- var value = this.value || {};
225
- return html `
226
- <label> <ox-i18n msgid="label.type">type</ox-i18n> </label>
227
- <select value-key="type" .value=${value.type || 'linear'} ?disabled=${this.disabled}>
228
- <option>linear</option>
229
- <option>radial</option>
230
- </select>
231
-
232
- <label class="icon-only-label color"></label>
233
- <ox-input-angle value-key="rotation" .value=${value.rotation || 0} ?disabled=${this.disabled}> </ox-input-angle>
234
-
235
- <label> <ox-i18n msgid="label.direction">direction</ox-i18n> </label>
236
- <div editors>
237
- <paper-dropdown-menu no-label-float="true" ?active-selector=${selector == 'linear'} .value=${value.direction}>
238
- <paper-listbox
239
- @selected-changed=${(e) => this._onChange(e)}
240
- value-key="direction"
241
- slot="dropdown-content"
242
- gradient-direction
243
- .selected=${value.direction}
244
- attr-for-selected="name"
245
- >
246
- <paper-item name="lefttop-to-rightbottom"></paper-item>
247
- <paper-item name="top-to-bottom"></paper-item>
248
- <paper-item name="righttop-to-leftbottom"></paper-item>
249
- <paper-item name="right-to-left"></paper-item>
250
- <paper-item name="rightbottom-to-lefttop"></paper-item>
251
- <paper-item name="bottom-to-top"></paper-item>
252
- <paper-item name="leftbottom-to-righttop"></paper-item>
253
- <paper-item name="left-to-right"></paper-item>
254
- <paper-item name="center-to-corner"></paper-item>
255
- </paper-listbox>
256
- </paper-dropdown-menu>
257
-
258
- <paper-dropdown-menu no-label-float="true" ?active-selector=${selector == 'radial'} .value=${value.center}>
259
- <paper-listbox
260
- @selected-changed=${(e) => this._onChange(e)}
261
- value-key="center"
262
- slot="dropdown-content"
263
- gradient-direction
264
- .selected=${value.center || 'center'}
265
- attr-for-selected="name"
266
- >
267
- <paper-item name="center"></paper-item>
268
- <paper-item name="left-top"></paper-item>
269
- <paper-item name="right-top"></paper-item>
270
- <paper-item name="right-bottom"></paper-item>
271
- <paper-item name="left-bottom"></paper-item>
272
- </paper-listbox>
273
- </paper-dropdown-menu>
274
- </div>
275
-
276
- <ox-input-color-stops
277
- value-key="colorStops"
278
- type="gradient"
279
- .value=${value.colorStops}
280
- ?disabled=${this.disabled}
281
- >
282
- </ox-input-color-stops>
283
- `;
284
- }
285
- _convertDirectionToRotation(direction) {
149
+ convertDirectionToRotation(direction) {
286
150
  var rotation;
287
151
  switch (direction) {
288
152
  case 'lefttop-to-rightbottom':
@@ -313,6 +177,24 @@ let OxInputColorGradient = class OxInputColorGradient extends OxFormField {
313
177
  }
314
178
  return (rotation / 360) * Math.PI * 2;
315
179
  }
180
+ convertRotationToDirection(rotation) {
181
+ var degrees = (rotation / (Math.PI * 2)) * 360;
182
+ if (Math.abs(degrees - 45) <= 10)
183
+ return 'lefttop-to-rightbottom';
184
+ if (Math.abs(degrees - 90) <= 10)
185
+ return 'top-to-bottom';
186
+ if (Math.abs(degrees - 135) <= 10)
187
+ return 'righttop-to-leftbottom';
188
+ if (Math.abs(degrees - 180) <= 10)
189
+ return 'right-to-left';
190
+ if (Math.abs(degrees - 215) <= 10)
191
+ return 'rightbottom-to-lefttop';
192
+ if (Math.abs(degrees - 270) <= 10)
193
+ return 'bottom-to-top';
194
+ if (Math.abs(degrees - 315) <= 10)
195
+ return 'leftbottom-to-righttop';
196
+ return 'left-to-right';
197
+ }
316
198
  };
317
199
  __decorate([
318
200
  property({ type: Object })
@@ -1 +1 @@
1
- {"version":3,"file":"ox-input-color-gradient.js","sourceRoot":"","sources":["../../src/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 { css, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\n\nimport { ColorStop } from './ox-input-color-stops.js'\nimport { OxFormField } from './ox-form-field.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'} ?disabled=${this.disabled}>\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} ?disabled=${this.disabled}> </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\n value-key=\"colorStops\"\n type=\"gradient\"\n .value=${value.colorStops}\n ?disabled=${this.disabled}\n >\n </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
+ {"version":3,"file":"ox-input-color-gradient.js","sourceRoot":"","sources":["../../src/ox-input-color-gradient.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-select.js'\nimport './ox-input-angle.js'\nimport './ox-input-color-stops.js'\n\nimport { css, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\n\nimport { OxFormField } from './ox-form-field.js'\nimport { PropertyGridStyles } from '@operato/styles/property-grid-styles.js'\nimport { GradientDirectionStyles } from '@operato/styles/gradient-direction-styles.js'\n\nimport { ColorStop } from './ox-input-color-stops.js'\n\ntype GradientDirection =\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\nexport type GradientOption = {\n type: 'linear' | 'radial'\n rotation: number\n direction?: GradientDirection\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 = [\n PropertyGridStyles,\n GradientDirectionStyles,\n css`\n :host {\n display: flex;\n }\n\n [editors] > :not([active-selector]) {\n display: none;\n }\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 render() {\n var selector = (this.value && this.value.type) || 'linear'\n var { type = 'linear', center = 'center', rotation = 0, colorStops } = this.value || {}\n var direction = type == 'linear' ? this.convertRotationToDirection(rotation) : ''\n\n return html`\n <div class=\"property-grid\">\n <label> <ox-i18n msgid=\"label.type\">type</ox-i18n> </label>\n <select value-key=\"type\" .value=${type || 'linear'} ?disabled=${this.disabled}>\n <option>linear</option>\n <option>radial</option>\n </select>\n\n <label><md-icon>reset_iso</md-icon></label>\n <ox-input-angle value-key=\"rotation\" .value=${rotation || 0} ?disabled=${this.disabled}> </ox-input-angle>\n\n <label> <ox-i18n msgid=\"label.direction\">direction</ox-i18n> </label>\n <div class=\"custom-editor\" editors>\n <ox-select ?active-selector=${selector == 'linear'} .value=${direction} value-key=\"direction\">\n <div class=\"gradient-direction\" value=${String(direction || '')} slot=\"label\"></div>\n <ox-popup-list align-left nowrap>\n <style>\n ${GradientDirectionStyles.cssText}\n </style>\n <div class=\"gradient-direction\" value=\"lefttop-to-rightbottom\" option></div>\n <div class=\"gradient-direction\" value=\"top-to-bottom\" option></div>\n <div class=\"gradient-direction\" value=\"righttop-to-leftbottom\" option></div>\n <div class=\"gradient-direction\" value=\"right-to-left\" option></div>\n <div class=\"gradient-direction\" value=\"rightbottom-to-lefttop\" option></div>\n <div class=\"gradient-direction\" value=\"bottom-to-top\" option></div>\n <div class=\"gradient-direction\" value=\"leftbottom-to-righttop\" option></div>\n <div class=\"gradient-direction\" value=\"left-to-right\" option></div>\n <div class=\"gradient-direction\" value=\"center-to-corner\" option></div>\n </ox-popup-list>\n </ox-select>\n\n <ox-select ?active-selector=${selector == 'radial'} .value=${center} value-key=\"center\">\n <div class=\"gradient-direction\" value=${String(center || '')} slot=\"label\"></div>\n <ox-popup-list align-left nowrap>\n <style>\n ${GradientDirectionStyles.cssText}\n </style>\n <div class=\"gradient-direction\" value=\"center\" option></div>\n <div class=\"gradient-direction\" value=\"left-top\" option></div>\n <div class=\"gradient-direction\" value=\"right-top\" option></div>\n <div class=\"gradient-direction\" value=\"right-bottom\" option></div>\n <div class=\"gradient-direction\" value=\"left-bottom\" option></div>\n </ox-popup-list>\n </ox-select>\n </div>\n\n <ox-input-color-stops\n value-key=\"colorStops\"\n type=\"gradient\"\n .value=${colorStops}\n ?disabled=${this.disabled}\n class=\"fullwidth\"\n >\n </ox-input-color-stops>\n </div>\n `\n }\n\n private 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 default:\n value = (element as HTMLInputElement).value\n break\n }\n\n if (key === 'rotation') {\n this.value = {\n ...this.value,\n rotation: Number(value || 0),\n direction: this.convertRotationToDirection(Number(value))\n }\n } else if (key === 'direction') {\n if (value) {\n this.value = {\n ...this.value,\n direction: value as any,\n rotation: this.convertDirectionToRotation(String(value || 'left-to-right'))\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 private 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 private convertRotationToDirection(rotation: number): GradientDirection {\n var degrees = (rotation / (Math.PI * 2)) * 360\n if (Math.abs(degrees - 45) <= 10) return 'lefttop-to-rightbottom'\n if (Math.abs(degrees - 90) <= 10) return 'top-to-bottom'\n if (Math.abs(degrees - 135) <= 10) return 'righttop-to-leftbottom'\n if (Math.abs(degrees - 180) <= 10) return 'right-to-left'\n if (Math.abs(degrees - 215) <= 10) return 'rightbottom-to-lefttop'\n if (Math.abs(degrees - 270) <= 10) return 'bottom-to-top'\n if (Math.abs(degrees - 315) <= 10) return 'leftbottom-to-righttop'\n return 'left-to-right'\n }\n}\n"]}
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * @license Copyright © HatioLab Inc. All rights reserved.
3
3
  */
4
+ import '@material/web/icon/icon.js';
4
5
  import './ox-input-color.js';
5
6
  import { PropertyValues } from 'lit';
6
7
  import { OxFormField } from './ox-form-field.js';
@@ -10,41 +11,44 @@ export type ColorStop = {
10
11
  position: number;
11
12
  };
12
13
  /**
13
- 범위내에서 여러 컬러셋(포지션과 색깔) 배열을 편집하는 컴포넌트이다.
14
-
15
- 미리보기 Bar에서는 gradient나, solid 형태의 컬러셋을 보여준다.
16
-
17
- 새로운 컬러셋을 추가고자 때는 미리보기 Bar를 더블클릭한다.
18
- 컬러셋을 제거하고자 때는 컬러셋 마커를 아래방향으로 드래깅한다.
19
- 컬러셋의 위치를 옮기고자 때는, 컬러셋 마커를 좌우로 드래깅하여 이동시키거나,
20
- 옮기고자하는 컬러셋 마커를 마우스로 선택하고, 포지션 입력 에디터에서 직접 수정한다.
21
- 컬러셋의 색상을 바꾸고자 할 때는, 컬러셋 마커를 더블클릭하여 컬러파레트를 팝업시켜서 색상을 선택하거나, 색상 입력 에디터에서 직접 색상을 수정할 수 있다.
22
-
23
- Example:
24
-
25
- <ox-input-color-stops type="gradient" .value=${gradient.colorStops}>
26
- </ox-input-color-stops>
27
- */
14
+ * This component allows editing an array of color sets (position and color) within a range.
15
+ *
16
+ * The preview bar shows the color sets in gradient or solid form.
17
+ *
18
+ * To add a new color set, double-click the preview bar.
19
+ * To remove a color set, drag the color set marker downward.
20
+ * To move the position of a color set, drag the color set marker left or right, or select the color set marker with the mouse and directly edit the position in the position input editor.
21
+ * To change the color of a color set, double-click the color set marker to pop up the color palette and select a color, or directly edit the color in the color input editor.
22
+ *
23
+ * Example:
24
+ *
25
+ * <ox-input-color-stops type="gradient" .value=${gradient.colorStops}>
26
+ * </ox-input-color-stops>
27
+ */
28
28
  export declare class OxInputColorStops extends OxFormField {
29
- static styles: import("lit").CSSResult;
29
+ static styles: import("lit").CSSResult[];
30
30
  /**
31
- * `type`은 color-stop bar 표시 방법을 의미한다.
32
- * - 'solid' : 컬러스톱위치에서 다음 컬러스톱까지 solid color 채운다.
33
- * - 'gradient' : 컬러스톱위치에서 다음 컬러스톱까지 gradient color 채운다.
31
+ * `type` indicates how the color-stop bar is displayed.
32
+ * - 'solid': Fills with solid color from one color stop to the next.
33
+ * - 'gradient': Fills with gradient color from one color stop to the next.
34
34
  */
35
35
  type: 'solid' | 'gradient';
36
36
  /**
37
- * `min`은 color-stop bar 위치값 범위의 최소값을 의미한다.
37
+ * `min` indicates the minimum value of the color-stop bar's position range.
38
38
  */
39
39
  min: number;
40
40
  /**
41
- * `max`은 color-stop bar 위치값 범위의 최대값을 의미한다.
41
+ * `max` indicates the maximum value of the color-stop bar's position range.
42
42
  */
43
43
  max: number;
44
44
  /**
45
- * `value`은 color-stops 의해 만들어진 color-stop 배열을 유지한다.
45
+ * `value` maintains the array of color stops created by the color-stops.
46
46
  */
47
47
  value?: ColorStop[];
48
+ /**
49
+ * Represents the focused state of the input component.
50
+ * This property can be of any type.
51
+ */
48
52
  focused: any;
49
53
  colorbar: HTMLElement;
50
54
  colorEditor: OxInputColor;