@operato/input 2.0.0-alpha.8 → 2.0.0-alpha.80

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 (192) hide show
  1. package/CHANGELOG.md +203 -0
  2. package/demo/index-multiple-colors.html +14 -2
  3. package/demo/index-partition-keys.html +13 -2
  4. package/demo/index-select.html +20 -9
  5. package/demo/index-table.html +13 -2
  6. package/demo/index.html +13 -2
  7. package/dist/src/locale/locale-picker.d.ts +1 -1
  8. package/dist/src/ox-buttons-radio.d.ts +1 -1
  9. package/dist/src/ox-checkbox.d.ts +4 -4
  10. package/dist/src/ox-input-3axis.d.ts +1 -1
  11. package/dist/src/ox-input-3dish.d.ts +1 -1
  12. package/dist/src/ox-input-angle.d.ts +1 -1
  13. package/dist/src/ox-input-barcode.d.ts +3 -4
  14. package/dist/src/ox-input-barcode.js +28 -42
  15. package/dist/src/ox-input-barcode.js.map +1 -1
  16. package/dist/src/ox-input-code.d.ts +2 -3
  17. package/dist/src/ox-input-code.js +8 -15
  18. package/dist/src/ox-input-code.js.map +1 -1
  19. package/dist/src/ox-input-color-gradient.d.ts +1 -1
  20. package/dist/src/ox-input-color-stops.d.ts +1 -1
  21. package/dist/src/ox-input-color.d.ts +1 -1
  22. package/dist/src/ox-input-container.d.ts +2 -2
  23. package/dist/src/ox-input-container.js +2 -2
  24. package/dist/src/ox-input-container.js.map +1 -1
  25. package/dist/src/ox-input-crontab.d.ts +1 -2
  26. package/dist/src/ox-input-crontab.js +4 -7
  27. package/dist/src/ox-input-crontab.js.map +1 -1
  28. package/dist/src/ox-input-data.d.ts +4 -5
  29. package/dist/src/ox-input-data.js +88 -36
  30. package/dist/src/ox-input-data.js.map +1 -1
  31. package/dist/src/ox-input-duration.d.ts +1 -2
  32. package/dist/src/ox-input-duration.js +13 -9
  33. package/dist/src/ox-input-duration.js.map +1 -1
  34. package/dist/src/ox-input-file.d.ts +2 -2
  35. package/dist/src/ox-input-file.js +10 -9
  36. package/dist/src/ox-input-file.js.map +1 -1
  37. package/dist/src/ox-input-hashtags.d.ts +1 -1
  38. package/dist/src/ox-input-i18n-label.d.ts +33 -0
  39. package/dist/src/ox-input-i18n-label.js +129 -0
  40. package/dist/src/ox-input-i18n-label.js.map +1 -0
  41. package/dist/src/ox-input-image.d.ts +2 -2
  42. package/dist/src/ox-input-image.js +4 -4
  43. package/dist/src/ox-input-image.js.map +1 -1
  44. package/dist/src/ox-input-key-values.d.ts +2 -2
  45. package/dist/src/ox-input-key-values.js +9 -10
  46. package/dist/src/ox-input-key-values.js.map +1 -1
  47. package/dist/src/ox-input-mass-fraction.d.ts +2 -2
  48. package/dist/src/ox-input-mass-fraction.js +46 -29
  49. package/dist/src/ox-input-mass-fraction.js.map +1 -1
  50. package/dist/src/ox-input-multiple-colors.d.ts +2 -2
  51. package/dist/src/ox-input-multiple-colors.js +7 -7
  52. package/dist/src/ox-input-multiple-colors.js.map +1 -1
  53. package/dist/src/ox-input-options.d.ts +2 -2
  54. package/dist/src/ox-input-options.js +5 -7
  55. package/dist/src/ox-input-options.js.map +1 -1
  56. package/dist/src/ox-input-partition-keys.d.ts +2 -2
  57. package/dist/src/ox-input-partition-keys.js +10 -10
  58. package/dist/src/ox-input-partition-keys.js.map +1 -1
  59. package/dist/src/ox-input-privilege.d.ts +1 -2
  60. package/dist/src/ox-input-privilege.js +15 -31
  61. package/dist/src/ox-input-privilege.js.map +1 -1
  62. package/dist/src/ox-input-quantifier.d.ts +1 -1
  63. package/dist/src/ox-input-scene-component-id.d.ts +1 -1
  64. package/dist/src/ox-input-search.d.ts +2 -2
  65. package/dist/src/ox-input-search.js +4 -4
  66. package/dist/src/ox-input-search.js.map +1 -1
  67. package/dist/src/ox-input-select-buttons.d.ts +1 -1
  68. package/dist/src/ox-input-stack.d.ts +1 -1
  69. package/dist/src/ox-input-table.d.ts +1 -1
  70. package/dist/src/ox-input-table.js +12 -12
  71. package/dist/src/ox-input-table.js.map +1 -1
  72. package/dist/src/ox-input-textarea.d.ts +1 -1
  73. package/dist/src/ox-input-unit-number.d.ts +2 -2
  74. package/dist/src/ox-input-unit-number.js +5 -4
  75. package/dist/src/ox-input-unit-number.js.map +1 -1
  76. package/dist/src/ox-input-value-map.d.ts +2 -2
  77. package/dist/src/ox-input-value-map.js +15 -15
  78. package/dist/src/ox-input-value-map.js.map +1 -1
  79. package/dist/src/ox-input-value-ranges.d.ts +2 -2
  80. package/dist/src/ox-input-value-ranges.js +15 -15
  81. package/dist/src/ox-input-value-ranges.js.map +1 -1
  82. package/dist/src/ox-input-work-shift.d.ts +1 -1
  83. package/dist/src/ox-input-work-shift.js +4 -5
  84. package/dist/src/ox-input-work-shift.js.map +1 -1
  85. package/dist/src/ox-select.d.ts +2 -2
  86. package/dist/src/ox-select.js +4 -4
  87. package/dist/src/ox-select.js.map +1 -1
  88. package/dist/stories/ox-input-3axis.stories.js +14 -1
  89. package/dist/stories/ox-input-3axis.stories.js.map +1 -1
  90. package/dist/stories/ox-input-3dish.stories.js +14 -1
  91. package/dist/stories/ox-input-3dish.stories.js.map +1 -1
  92. package/dist/stories/ox-input-angle.stories.js +13 -1
  93. package/dist/stories/ox-input-angle.stories.js.map +1 -1
  94. package/dist/stories/ox-input-barcode.stories.js +13 -1
  95. package/dist/stories/ox-input-barcode.stories.js.map +1 -1
  96. package/dist/stories/ox-input-code.stories.d.ts +4 -0
  97. package/dist/stories/ox-input-code.stories.js +18 -3
  98. package/dist/stories/ox-input-code.stories.js.map +1 -1
  99. package/dist/stories/ox-input-crontab.stories.js +13 -1
  100. package/dist/stories/ox-input-crontab.stories.js.map +1 -1
  101. package/dist/stories/ox-input-data.stories.d.ts +29 -0
  102. package/dist/stories/ox-input-data.stories.js +50 -0
  103. package/dist/stories/ox-input-data.stories.js.map +1 -0
  104. package/dist/stories/ox-input-duration.stories.js +13 -1
  105. package/dist/stories/ox-input-duration.stories.js.map +1 -1
  106. package/dist/stories/ox-input-file.stories.js +13 -1
  107. package/dist/stories/ox-input-file.stories.js.map +1 -1
  108. package/dist/stories/ox-input-hashtags.stories.js +13 -1
  109. package/dist/stories/ox-input-hashtags.stories.js.map +1 -1
  110. package/dist/stories/ox-input-i18n-label.stories.d.ts +29 -0
  111. package/dist/stories/ox-input-i18n-label.stories.js +70 -0
  112. package/dist/stories/ox-input-i18n-label.stories.js.map +1 -0
  113. package/dist/stories/ox-input-key-values.stories.js +13 -1
  114. package/dist/stories/ox-input-key-values.stories.js.map +1 -1
  115. package/dist/stories/ox-input-mass-fraction.stories.js +13 -1
  116. package/dist/stories/ox-input-mass-fraction.stories.js.map +1 -1
  117. package/dist/stories/ox-input-multiple-colors.stories.js +21 -10
  118. package/dist/stories/ox-input-multiple-colors.stories.js.map +1 -1
  119. package/dist/stories/ox-input-options.stories.js +13 -1
  120. package/dist/stories/ox-input-options.stories.js.map +1 -1
  121. package/dist/stories/ox-input-partition-keys.stories.js +13 -1
  122. package/dist/stories/ox-input-partition-keys.stories.js.map +1 -1
  123. package/dist/stories/ox-input-privilege.stories.js +13 -1
  124. package/dist/stories/ox-input-privilege.stories.js.map +1 -1
  125. package/dist/stories/ox-input-quantifier.stories.js +13 -1
  126. package/dist/stories/ox-input-quantifier.stories.js.map +1 -1
  127. package/dist/stories/ox-input-range.stories.js +13 -1
  128. package/dist/stories/ox-input-range.stories.js.map +1 -1
  129. package/dist/stories/ox-input-search.stories.js +13 -1
  130. package/dist/stories/ox-input-search.stories.js.map +1 -1
  131. package/dist/stories/ox-input-select-buttons.stories.js +13 -1
  132. package/dist/stories/ox-input-select-buttons.stories.js.map +1 -1
  133. package/dist/stories/ox-input-unit.stories.js +14 -1
  134. package/dist/stories/ox-input-unit.stories.js.map +1 -1
  135. package/dist/stories/ox-input-value-map.stories.js +13 -1
  136. package/dist/stories/ox-input-value-map.stories.js.map +1 -1
  137. package/dist/stories/ox-input-value-ranges.stories.js +13 -1
  138. package/dist/stories/ox-input-value-ranges.stories.js.map +1 -1
  139. package/dist/stories/ox-input-work-shift.stories.js +13 -1
  140. package/dist/stories/ox-input-work-shift.stories.js.map +1 -1
  141. package/dist/stories/ox-select.stories.js +13 -1
  142. package/dist/stories/ox-select.stories.js.map +1 -1
  143. package/dist/tsconfig.tsbuildinfo +1 -1
  144. package/package.json +25 -21
  145. package/src/ox-input-barcode.ts +31 -41
  146. package/src/ox-input-code.ts +6 -13
  147. package/src/ox-input-container.ts +2 -2
  148. package/src/ox-input-crontab.ts +4 -8
  149. package/src/ox-input-data.ts +97 -38
  150. package/src/ox-input-duration.ts +13 -10
  151. package/src/ox-input-file.ts +10 -9
  152. package/src/ox-input-i18n-label.ts +139 -0
  153. package/src/ox-input-image.ts +4 -4
  154. package/src/ox-input-key-values.ts +27 -22
  155. package/src/ox-input-mass-fraction.ts +46 -29
  156. package/src/ox-input-multiple-colors.ts +7 -7
  157. package/src/ox-input-options.ts +5 -7
  158. package/src/ox-input-partition-keys.ts +28 -22
  159. package/src/ox-input-privilege.ts +15 -32
  160. package/src/ox-input-search.ts +4 -4
  161. package/src/ox-input-table.ts +12 -12
  162. package/src/ox-input-unit-number.ts +5 -4
  163. package/src/ox-input-value-map.ts +17 -17
  164. package/src/ox-input-value-ranges.ts +17 -17
  165. package/src/ox-input-work-shift.ts +4 -5
  166. package/src/ox-select.ts +4 -4
  167. package/stories/ox-input-3axis.stories.ts +14 -1
  168. package/stories/ox-input-3dish.stories.ts +14 -1
  169. package/stories/ox-input-angle.stories.ts +13 -1
  170. package/stories/ox-input-barcode.stories.ts +13 -1
  171. package/stories/ox-input-code.stories.ts +25 -3
  172. package/stories/ox-input-crontab.stories.ts +13 -1
  173. package/stories/ox-input-data.stories.ts +65 -0
  174. package/stories/ox-input-duration.stories.ts +13 -1
  175. package/stories/ox-input-file.stories.ts +13 -1
  176. package/stories/ox-input-hashtags.stories.ts +13 -1
  177. package/stories/ox-input-i18n-label.stories.ts +85 -0
  178. package/stories/ox-input-key-values.stories.ts +13 -1
  179. package/stories/ox-input-mass-fraction.stories.ts +13 -1
  180. package/stories/ox-input-multiple-colors.stories.ts +21 -10
  181. package/stories/ox-input-options.stories.ts +13 -1
  182. package/stories/ox-input-partition-keys.stories.ts +13 -1
  183. package/stories/ox-input-privilege.stories.ts +13 -1
  184. package/stories/ox-input-quantifier.stories.ts +13 -1
  185. package/stories/ox-input-range.stories.ts +13 -1
  186. package/stories/ox-input-search.stories.ts +13 -1
  187. package/stories/ox-input-select-buttons.stories.ts +13 -1
  188. package/stories/ox-input-unit.stories.ts +14 -1
  189. package/stories/ox-input-value-map.stories.ts +13 -1
  190. package/stories/ox-input-value-ranges.stories.ts +13 -1
  191. package/stories/ox-input-work-shift.stories.ts +13 -1
  192. package/stories/ox-select.stories.ts +13 -1
@@ -7,7 +7,7 @@ export declare class OxInputTextarea extends OxFormField {
7
7
  static styles: import("lit").CSSResult[];
8
8
  value: string;
9
9
  textarea: HTMLInputElement;
10
- render(): import("lit").TemplateResult<1>;
10
+ render(): import("lit-html").TemplateResult<1>;
11
11
  connectedCallback(): void;
12
12
  updated(changes: PropertyValues<this>): void;
13
13
  onInput(e: Event): void;
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license Copyright © HatioLab Inc. All rights reserved.
3
3
  */
4
- import '@material/mwc-icon';
4
+ import '@material/web/icon/icon.js';
5
5
  import { PropertyValues } from 'lit';
6
6
  import { OxPopupList } from '@operato/popup';
7
7
  import { OxFormField } from './ox-form-field';
@@ -12,7 +12,7 @@ export declare class OxInputUnitNumber extends OxFormField {
12
12
  userUnit?: string;
13
13
  input: HTMLInputElement;
14
14
  popup: OxPopupList;
15
- render(): import("lit").TemplateResult<1>;
15
+ render(): import("lit-html").TemplateResult<1>;
16
16
  updated(changes: PropertyValues<this>): void;
17
17
  _onChangeValue(e: Event): void;
18
18
  _toUserUnit(stdValue: string | number | undefined): number | undefined;
@@ -2,7 +2,7 @@
2
2
  * @license Copyright © HatioLab Inc. All rights reserved.
3
3
  */
4
4
  import { __decorate } from "tslib";
5
- import '@material/mwc-icon';
5
+ import '@material/web/icon/icon.js';
6
6
  import { css, html } from 'lit';
7
7
  import { customElement, property, query } from 'lit/decorators.js';
8
8
  import { ifDefined } from 'lit/directives/if-defined.js';
@@ -171,6 +171,8 @@ let OxInputUnitNumber = class OxInputUnitNumber extends OxFormField {
171
171
  display: flex;
172
172
  flex-direction: row;
173
173
  align-items: center;
174
+
175
+ --md-icon-size: var(--fontsize-default, 14px);
174
176
  }
175
177
 
176
178
  input {
@@ -210,8 +212,7 @@ let OxInputUnitNumber = class OxInputUnitNumber extends OxFormField {
210
212
  min-width: 24px;
211
213
  }
212
214
 
213
- mwc-icon {
214
- font-size: 18px;
215
+ md-icon {
215
216
  color: var(--primary-color, #3c3938);
216
217
  margin-left: auto;
217
218
  }
@@ -255,7 +256,7 @@ let OxInputUnitNumber = class OxInputUnitNumber extends OxFormField {
255
256
  <div option value=${this.stdUnit}>${this.stdUnit}</div>
256
257
  ${units.map(unit => html `<div option value=${unit}>${unit}</div>`)}
257
258
  </ox-popup-list>
258
- <mwc-icon>expand_more</mwc-icon>
259
+ <md-icon>expand_more</md-icon>
259
260
  </div>
260
261
  `;
261
262
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ox-input-unit-number.js","sourceRoot":"","sources":["../../src/ox-input-unit-number.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport '@material/mwc-icon'\n\nimport { css, html, PropertyValues } from 'lit'\nimport { customElement, property, query } from 'lit/decorators.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { OxPopupList } from '@operato/popup'\n\nimport { OxFormField } from './ox-form-field'\n\nconst UNIT_SYSTEMS: { [unit: string]: { [unit: string]: number | ((v: number) => number)[] } } = {\n kg: {\n mg: 1000000,\n g: 1000,\n ton: 0.001\n },\n rad: {\n degree: 180 / Math.PI\n },\n sec: {\n msec: 1000,\n min: 1 / 60,\n hr: 1 / 3600,\n day: 1 / (3600 * 24),\n year: 1 / (3600 * 24 * 365)\n },\n m: {\n mm: 1000,\n cm: 100,\n inch: 39.37008\n },\n 'g/mol': {\n 'kg/kmol': 1,\n 'g/kmol': 1000\n },\n m2: {\n mm2: 1000000,\n cm2: 1000\n },\n m3: {\n cm3: 1000000,\n L: 1000,\n mL: 1000000\n },\n 'kg/m3': {\n 'g/m3': 1000,\n 'g/L': 1,\n 'g/cm3': 0.001,\n 'kg/L': 0.001,\n 'g/mL': 0.001\n },\n 'm/sec': {\n 'm/min': 60,\n 'm/hr': 3600,\n 'cm/sec': 100,\n 'cm/min': 6000,\n 'cm/hr': 360000\n },\n N: {\n kN: 0.001,\n kgf: 0.101971621\n },\n Pa: {\n atm: 1 / 101325,\n bar: 1 / 100000,\n 'kgf/cm2': 1 / 9.80665 / 10000,\n MPa: 1 / 1000000,\n kPa: 1 / 1000,\n psi: 1 / 6894.76,\n mmH2O: 1 / 9.80665,\n mmHg: 1 / 133.32\n },\n 'kg/sec': {\n 'kg/min': 60,\n 'kg/hr': 3600,\n 'ton/hr': 3.6,\n 'ton/year': (60 * 60 * 24 * 365) / 1000\n },\n 'kg/m2/sec': {\n 'kg/m2/min': 60,\n 'kg/m2/hr': 3600\n },\n 'mol/sec': {\n 'kmol/sec': 1 / 1000\n },\n 'mol/m2/sec': {\n 'kmol/m2/sec': 1 / 1000\n },\n 'Sm3/sec': {\n 'Sm3/hr': 3600,\n 'Sm3/min': 60,\n 'SL/min': 60000,\n 'SL/sec': 1000,\n 'Scm3/min': 60000000,\n 'Scm3/sec': 1000000\n },\n 'Nm3/sec': {\n 'Nm3/hr': 3600,\n 'Nm3/min': 60,\n 'NL/min': 60000,\n 'NL/sec': 1000,\n 'Ncm3/min': 60000000,\n 'Ncm3/sec': 1000000\n },\n 'Am3/sec': {\n 'Am3/hr': 3600,\n 'Am3/min': 60,\n 'AL/min': 60000,\n 'AL/sec': 1000,\n 'Acm3/min': 60000000,\n 'Acm3/sec': 1000000\n },\n J: {\n kJ: 1 / 1000,\n MJ: 1 / 1000000,\n cal: 1 / 4.184,\n kcal: 1 / 4.184 / 1000\n },\n W: {\n kW: 1 / 1000,\n MW: 1 / 1000000,\n 'kcal/hr': 859.85 / 1000,\n hp: 1 / 745.7\n },\n 'W/m2': {\n 'kW/m2': 1 / 1000,\n 'W/cm2': 1 / 10000,\n 'kW/cm2': 1 / 10000000\n },\n 'J/kg': {\n 'kJ/kg': 1 / 1000,\n 'cal/g': 1 / 4.184 / 1000,\n 'cal/kg': 1 / 4.184,\n 'kcal/kg': 1 / 4.184 / 1000\n },\n 'J/kg/K': {\n 'kJ/kg/K': 1 / 1000,\n 'cal/kg/K': 1 / 4.184,\n 'kcal/kg/K': 1 / 4.184 / 1000,\n 'cal/g/K': 1 / 4.184 / 1000\n },\n 'W/m/K': {\n 'kW/m/K': 1 / 1000,\n 'W/cm/K': 1 / 100,\n 'kW/cm/K': 1 / 100 / 1000\n },\n 'W/m2/K': {\n 'kW/m2/K': 1 / 1000,\n 'kcal/hr/m2/oC': 1 / 1.163\n },\n 'N sec/m2': {\n 'Pa sec': 1,\n 'mPa sec': 1000,\n 'kg/m/sec': 1,\n 'g/cm/sec': 10,\n P: 10,\n cP: 1000\n },\n 'm2 oC/W': {\n 'm2 oC/kW': 1000\n },\n '%': {},\n ppm: {},\n K: {\n '°C': [(v: number) => v - 273.15, (v: number) => v + 273.15]\n }\n}\n\n@customElement('ox-input-unit-number')\nexport class OxInputUnitNumber extends OxFormField {\n static styles = [\n css`\n :host {\n display: flex;\n flex-direction: row;\n align-items: center;\n }\n\n input {\n flex: 1;\n border: 0;\n border-bottom: var(--border-dark-color);\n padding: var(--input-padding);\n font: var(--input-font);\n color: var(--primary-text-color);\n min-width: 40px;\n }\n\n input:focus {\n outline: none;\n border-bottom: 1px solid var(--primary-color);\n }\n\n input::-webkit-outer-spin-button,\n input::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n }\n\n input[type='number'] {\n text-align: right;\n -moz-appearance: textfield;\n }\n\n #unit {\n flex: 1;\n display: flex;\n align-items: center;\n position: relative;\n margin-left: var(--margin-narrow);\n font: var(--label-font);\n color: var(--label-color);\n min-width: 24px;\n }\n\n mwc-icon {\n font-size: 18px;\n color: var(--primary-color, #3c3938);\n margin-left: auto;\n }\n\n ox-popup-list {\n right: 0;\n }\n `\n ]\n\n @property({ type: String }) placeholder?: string\n @property({ type: String, attribute: 'std-unit' }) stdUnit!: string\n @property({ type: String, attribute: 'user-unit' }) userUnit?: string\n\n @query('input') input!: HTMLInputElement\n @query('ox-popup-list') popup!: OxPopupList\n\n render() {\n const userUnit = this.userUnit || this.stdUnit\n const units = (UNIT_SYSTEMS[this.stdUnit] && Object.keys(UNIT_SYSTEMS[this.stdUnit])) || []\n\n return html`\n <input\n type=\"number\"\n .value=${this._toUserUnit(this.value)}\n placeholder=${ifDefined(this.placeholder)}\n @change=${(e: Event) => this._onChangeValue(e)}\n ?disabled=${this.disabled}\n />\n <div\n id=\"unit\"\n @click=${(e: Event) => {\n if (this.disabled) {\n return\n }\n\n const target = e.currentTarget as HTMLElement\n this.popup.open({\n right: 0,\n top: target.clientTop + target.offsetHeight\n })\n }}\n >\n ${userUnit}\n <ox-popup-list\n .value=${userUnit}\n @select=${(e: CustomEvent) => {\n this.userUnit = e.detail\n }}\n >\n <div option value=${this.stdUnit}>${this.stdUnit}</div>\n ${units.map(unit => html`<div option value=${unit}>${unit}</div>`)}\n </ox-popup-list>\n <mwc-icon>expand_more</mwc-icon>\n </div>\n `\n }\n\n updated(changes: PropertyValues<this>) {\n // if (changes.has('stdUnit')) {\n // this.userUnit = this.userUnit || this.stdUnit\n // }\n }\n\n _onChangeValue(e: Event) {\n this.value = this._toStdUnit(this.input.value)\n\n this.dispatchEvent(\n new CustomEvent('change', {\n bubbles: true,\n composed: true,\n detail: this.value\n })\n )\n }\n\n _toUserUnit(stdValue: string | number | undefined) {\n if (!this.userUnit) {\n return\n }\n\n if (this.userUnit === this.stdUnit) {\n return Number(stdValue)\n }\n\n const converterValue = UNIT_SYSTEMS[this.stdUnit][this.userUnit]\n\n if (!converterValue) {\n delete this.userUnit\n return\n }\n\n if (typeof converterValue === 'number') {\n return this._toUserUnitByRate(stdValue, converterValue || 1)\n } /* should be converter function array */ else {\n return this._toUserUnitByFunction(stdValue, converterValue as ((v: number) => number)[])\n }\n }\n\n _toUserUnitByRate(stdValue: string | number | undefined, converterRate: number) {\n return Number(stdValue) * converterRate\n }\n\n _toUserUnitByFunction(stdValue: string | number | undefined, converterFunctions: ((v: number) => number)[]) {\n return converterFunctions[0](Number(stdValue))\n }\n\n _toStdUnit(userValue: string | number | undefined) {\n if (!this.userUnit) {\n return\n }\n\n if (this.userUnit === this.stdUnit) {\n return Number(userValue)\n }\n\n const converterValue = UNIT_SYSTEMS[this.stdUnit][this.userUnit]\n\n if (typeof converterValue === 'number') {\n return this._toStdUnitByRate(userValue, converterValue || 1)\n } /* should be converter function array */ else {\n return this._toStdUnitByFunction(userValue, converterValue as ((v: number) => number)[])\n }\n }\n\n _toStdUnitByRate(userValue: string | number | undefined, converterRate: number) {\n return isNaN(Number(userValue)) ? undefined : Number(userValue) / converterRate\n }\n\n _toStdUnitByFunction(userValue: string | number | undefined, converterFunctions: ((v: number) => number)[]) {\n return converterFunctions[1](Number(userValue))\n }\n}\n"]}
1
+ {"version":3,"file":"ox-input-unit-number.js","sourceRoot":"","sources":["../../src/ox-input-unit-number.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport '@material/web/icon/icon.js'\n\nimport { css, html, PropertyValues } from 'lit'\nimport { customElement, property, query } from 'lit/decorators.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { OxPopupList } from '@operato/popup'\n\nimport { OxFormField } from './ox-form-field'\n\nconst UNIT_SYSTEMS: { [unit: string]: { [unit: string]: number | ((v: number) => number)[] } } = {\n kg: {\n mg: 1000000,\n g: 1000,\n ton: 0.001\n },\n rad: {\n degree: 180 / Math.PI\n },\n sec: {\n msec: 1000,\n min: 1 / 60,\n hr: 1 / 3600,\n day: 1 / (3600 * 24),\n year: 1 / (3600 * 24 * 365)\n },\n m: {\n mm: 1000,\n cm: 100,\n inch: 39.37008\n },\n 'g/mol': {\n 'kg/kmol': 1,\n 'g/kmol': 1000\n },\n m2: {\n mm2: 1000000,\n cm2: 1000\n },\n m3: {\n cm3: 1000000,\n L: 1000,\n mL: 1000000\n },\n 'kg/m3': {\n 'g/m3': 1000,\n 'g/L': 1,\n 'g/cm3': 0.001,\n 'kg/L': 0.001,\n 'g/mL': 0.001\n },\n 'm/sec': {\n 'm/min': 60,\n 'm/hr': 3600,\n 'cm/sec': 100,\n 'cm/min': 6000,\n 'cm/hr': 360000\n },\n N: {\n kN: 0.001,\n kgf: 0.101971621\n },\n Pa: {\n atm: 1 / 101325,\n bar: 1 / 100000,\n 'kgf/cm2': 1 / 9.80665 / 10000,\n MPa: 1 / 1000000,\n kPa: 1 / 1000,\n psi: 1 / 6894.76,\n mmH2O: 1 / 9.80665,\n mmHg: 1 / 133.32\n },\n 'kg/sec': {\n 'kg/min': 60,\n 'kg/hr': 3600,\n 'ton/hr': 3.6,\n 'ton/year': (60 * 60 * 24 * 365) / 1000\n },\n 'kg/m2/sec': {\n 'kg/m2/min': 60,\n 'kg/m2/hr': 3600\n },\n 'mol/sec': {\n 'kmol/sec': 1 / 1000\n },\n 'mol/m2/sec': {\n 'kmol/m2/sec': 1 / 1000\n },\n 'Sm3/sec': {\n 'Sm3/hr': 3600,\n 'Sm3/min': 60,\n 'SL/min': 60000,\n 'SL/sec': 1000,\n 'Scm3/min': 60000000,\n 'Scm3/sec': 1000000\n },\n 'Nm3/sec': {\n 'Nm3/hr': 3600,\n 'Nm3/min': 60,\n 'NL/min': 60000,\n 'NL/sec': 1000,\n 'Ncm3/min': 60000000,\n 'Ncm3/sec': 1000000\n },\n 'Am3/sec': {\n 'Am3/hr': 3600,\n 'Am3/min': 60,\n 'AL/min': 60000,\n 'AL/sec': 1000,\n 'Acm3/min': 60000000,\n 'Acm3/sec': 1000000\n },\n J: {\n kJ: 1 / 1000,\n MJ: 1 / 1000000,\n cal: 1 / 4.184,\n kcal: 1 / 4.184 / 1000\n },\n W: {\n kW: 1 / 1000,\n MW: 1 / 1000000,\n 'kcal/hr': 859.85 / 1000,\n hp: 1 / 745.7\n },\n 'W/m2': {\n 'kW/m2': 1 / 1000,\n 'W/cm2': 1 / 10000,\n 'kW/cm2': 1 / 10000000\n },\n 'J/kg': {\n 'kJ/kg': 1 / 1000,\n 'cal/g': 1 / 4.184 / 1000,\n 'cal/kg': 1 / 4.184,\n 'kcal/kg': 1 / 4.184 / 1000\n },\n 'J/kg/K': {\n 'kJ/kg/K': 1 / 1000,\n 'cal/kg/K': 1 / 4.184,\n 'kcal/kg/K': 1 / 4.184 / 1000,\n 'cal/g/K': 1 / 4.184 / 1000\n },\n 'W/m/K': {\n 'kW/m/K': 1 / 1000,\n 'W/cm/K': 1 / 100,\n 'kW/cm/K': 1 / 100 / 1000\n },\n 'W/m2/K': {\n 'kW/m2/K': 1 / 1000,\n 'kcal/hr/m2/oC': 1 / 1.163\n },\n 'N sec/m2': {\n 'Pa sec': 1,\n 'mPa sec': 1000,\n 'kg/m/sec': 1,\n 'g/cm/sec': 10,\n P: 10,\n cP: 1000\n },\n 'm2 oC/W': {\n 'm2 oC/kW': 1000\n },\n '%': {},\n ppm: {},\n K: {\n '°C': [(v: number) => v - 273.15, (v: number) => v + 273.15]\n }\n}\n\n@customElement('ox-input-unit-number')\nexport class OxInputUnitNumber extends OxFormField {\n static styles = [\n css`\n :host {\n display: flex;\n flex-direction: row;\n align-items: center;\n\n --md-icon-size: var(--fontsize-default, 14px);\n }\n\n input {\n flex: 1;\n border: 0;\n border-bottom: var(--border-dark-color);\n padding: var(--input-padding);\n font: var(--input-font);\n color: var(--primary-text-color);\n min-width: 40px;\n }\n\n input:focus {\n outline: none;\n border-bottom: 1px solid var(--primary-color);\n }\n\n input::-webkit-outer-spin-button,\n input::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n }\n\n input[type='number'] {\n text-align: right;\n -moz-appearance: textfield;\n }\n\n #unit {\n flex: 1;\n display: flex;\n align-items: center;\n position: relative;\n margin-left: var(--margin-narrow);\n font: var(--label-font);\n color: var(--label-color);\n min-width: 24px;\n }\n\n md-icon {\n color: var(--primary-color, #3c3938);\n margin-left: auto;\n }\n\n ox-popup-list {\n right: 0;\n }\n `\n ]\n\n @property({ type: String }) placeholder?: string\n @property({ type: String, attribute: 'std-unit' }) stdUnit!: string\n @property({ type: String, attribute: 'user-unit' }) userUnit?: string\n\n @query('input') input!: HTMLInputElement\n @query('ox-popup-list') popup!: OxPopupList\n\n render() {\n const userUnit = this.userUnit || this.stdUnit\n const units = (UNIT_SYSTEMS[this.stdUnit] && Object.keys(UNIT_SYSTEMS[this.stdUnit])) || []\n\n return html`\n <input\n type=\"number\"\n .value=${this._toUserUnit(this.value)}\n placeholder=${ifDefined(this.placeholder)}\n @change=${(e: Event) => this._onChangeValue(e)}\n ?disabled=${this.disabled}\n />\n <div\n id=\"unit\"\n @click=${(e: Event) => {\n if (this.disabled) {\n return\n }\n\n const target = e.currentTarget as HTMLElement\n this.popup.open({\n right: 0,\n top: target.clientTop + target.offsetHeight\n })\n }}\n >\n ${userUnit}\n <ox-popup-list\n .value=${userUnit}\n @select=${(e: CustomEvent) => {\n this.userUnit = e.detail\n }}\n >\n <div option value=${this.stdUnit}>${this.stdUnit}</div>\n ${units.map(unit => html`<div option value=${unit}>${unit}</div>`)}\n </ox-popup-list>\n <md-icon>expand_more</md-icon>\n </div>\n `\n }\n\n updated(changes: PropertyValues<this>) {\n // if (changes.has('stdUnit')) {\n // this.userUnit = this.userUnit || this.stdUnit\n // }\n }\n\n _onChangeValue(e: Event) {\n this.value = this._toStdUnit(this.input.value)\n\n this.dispatchEvent(\n new CustomEvent('change', {\n bubbles: true,\n composed: true,\n detail: this.value\n })\n )\n }\n\n _toUserUnit(stdValue: string | number | undefined) {\n if (!this.userUnit) {\n return\n }\n\n if (this.userUnit === this.stdUnit) {\n return Number(stdValue)\n }\n\n const converterValue = UNIT_SYSTEMS[this.stdUnit][this.userUnit]\n\n if (!converterValue) {\n delete this.userUnit\n return\n }\n\n if (typeof converterValue === 'number') {\n return this._toUserUnitByRate(stdValue, converterValue || 1)\n } /* should be converter function array */ else {\n return this._toUserUnitByFunction(stdValue, converterValue as ((v: number) => number)[])\n }\n }\n\n _toUserUnitByRate(stdValue: string | number | undefined, converterRate: number) {\n return Number(stdValue) * converterRate\n }\n\n _toUserUnitByFunction(stdValue: string | number | undefined, converterFunctions: ((v: number) => number)[]) {\n return converterFunctions[0](Number(stdValue))\n }\n\n _toStdUnit(userValue: string | number | undefined) {\n if (!this.userUnit) {\n return\n }\n\n if (this.userUnit === this.stdUnit) {\n return Number(userValue)\n }\n\n const converterValue = UNIT_SYSTEMS[this.stdUnit][this.userUnit]\n\n if (typeof converterValue === 'number') {\n return this._toStdUnitByRate(userValue, converterValue || 1)\n } /* should be converter function array */ else {\n return this._toStdUnitByFunction(userValue, converterValue as ((v: number) => number)[])\n }\n }\n\n _toStdUnitByRate(userValue: string | number | undefined, converterRate: number) {\n return isNaN(Number(userValue)) ? undefined : Number(userValue) / converterRate\n }\n\n _toStdUnitByFunction(userValue: string | number | undefined, converterFunctions: ((v: number) => number)[]) {\n return converterFunctions[1](Number(userValue))\n }\n}\n"]}
@@ -31,8 +31,8 @@ export declare class OxInputValueMap extends OxFormField {
31
31
  private _changingNow;
32
32
  firstUpdated(): void;
33
33
  updated(): void;
34
- valueInputTemplate(value?: any): import("lit").TemplateResult<1>;
35
- render(): import("lit").TemplateResult<1>;
34
+ valueInputTemplate(value?: any): import("lit-html").TemplateResult<1>;
35
+ render(): import("lit-html").TemplateResult<1>;
36
36
  _defaultValue(type?: 'color' | 'boolean' | 'checkbox' | string): string | boolean;
37
37
  _onChange(e: Event): void;
38
38
  _build(includeNewRecord?: boolean): void;
@@ -33,6 +33,8 @@ let OxInputValueMap = class OxInputValueMap extends OxFormField {
33
33
  flex-direction: column;
34
34
  border: var(--border-dark-color);
35
35
  padding: var(--padding-narrow) var(--padding-narrow) 0 var(--padding-narrow);
36
+
37
+ --md-icon-size: var(--fontsize-default, 14px);
36
38
  }
37
39
 
38
40
  div {
@@ -63,9 +65,7 @@ let OxInputValueMap = class OxInputValueMap extends OxFormField {
63
65
  button + button {
64
66
  margin-left: -5px;
65
67
  }
66
- button mwc-icon {
67
- font-size: var(--fontsize-default);
68
- }
68
+
69
69
  button:focus,
70
70
  button:hover,
71
71
  button:active {
@@ -133,15 +133,15 @@ let OxInputValueMap = class OxInputValueMap extends OxFormField {
133
133
  : this.valuetype == 'color'
134
134
  ? html ` <ox-input-color data-value value=${ifDefined(value)} ?disabled=${this.disabled}> </ox-input-color> `
135
135
  : html `
136
- <input
137
- type="text"
138
- data-value
139
- placeholder="value"
140
- value=${ifDefined(value)}
141
- data-value-type=${this.valuetype}
142
- ?disabled=${this.disabled}
143
- />
144
- `;
136
+ <input
137
+ type="text"
138
+ data-value
139
+ placeholder="value"
140
+ value=${ifDefined(value)}
141
+ data-value-type=${this.valuetype}
142
+ ?disabled=${this.disabled}
143
+ />
144
+ `;
145
145
  }
146
146
  render() {
147
147
  return html `
@@ -155,7 +155,7 @@ let OxInputValueMap = class OxInputValueMap extends OxFormField {
155
155
  tabindex="-1"
156
156
  ?disabled=${this.disabled}
157
157
  >
158
- <mwc-icon>remove</mwc-icon>
158
+ <md-icon>remove</md-icon>
159
159
  </button>
160
160
  </div>
161
161
  `)}
@@ -167,7 +167,7 @@ let OxInputValueMap = class OxInputValueMap extends OxFormField {
167
167
 
168
168
  ${this.valueInputTemplate()}
169
169
  <button class="record-action" @click=${(e) => this._add()} tabindex="-1">
170
- <mwc-icon>add</mwc-icon>
170
+ <md-icon>add</md-icon>
171
171
  </button>
172
172
  </div>
173
173
  `)}
@@ -177,7 +177,7 @@ let OxInputValueMap = class OxInputValueMap extends OxFormField {
177
177
 
178
178
  ${this.valueInputTemplate((this.value && this.value.default) || this._defaultValue())}
179
179
  <button class="record-action" @click=${() => this._sort()} tabindex="-1">
180
- <mwc-icon>chevron_right</mwc-icon>
180
+ <md-icon>chevron_right</md-icon>
181
181
  </button>
182
182
  </div>
183
183
  `;
@@ -1 +1 @@
1
- {"version":3,"file":"ox-input-value-map.js","sourceRoot":"","sources":["../../src/ox-input-value-map.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport './ox-input-color'\n\nimport { css, html, nothing } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport { keyed } from 'lit/directives/keyed.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { OxFormField } from './ox-form-field'\n\ntype ValueMap = { default?: any; [key: string]: any }\ntype ArrayedValueMap = { key: string; value: any }\n\n/**\nkey-value map editor element\n\nExample:\n\n <ox-input-value-map \n value=${map}\n keytype=${keytype}\n valuetype=${valuetype}>\n </ox-input-value-map>\n*/\n@customElement('ox-input-value-map')\nexport class OxInputValueMap extends OxFormField {\n static styles = css`\n :host {\n display: flex;\n flex-direction: column;\n border: var(--border-dark-color);\n padding: var(--padding-narrow) var(--padding-narrow) 0 var(--padding-narrow);\n }\n\n div {\n display: flex;\n flex-flow: row nowrap;\n gap: var(--padding-default);\n }\n\n div:last-child {\n margin-bottom: var(--margin-narrow);\n }\n\n div > * {\n min-width: 0px;\n margin: 2px;\n padding: 0;\n }\n\n button {\n border: var(--button-border);\n border-radius: var(--border-radius);\n background-color: var(--button-background-color);\n padding: var(--padding-narrow) var(--padding-default);\n line-height: 0.8;\n color: var(--button-color);\n cursor: pointer;\n }\n button + button {\n margin-left: -5px;\n }\n button mwc-icon {\n font-size: var(--fontsize-default);\n }\n button:focus,\n button:hover,\n button:active {\n border: var(--button-activ-border);\n background-color: var(--button-background-focus-color);\n color: var(--theme-white-color);\n }\n\n [data-key],\n [data-value] {\n flex: 1;\n }\n\n input {\n border: 0;\n border-bottom: var(--border-dark-color);\n padding: var(--input-padding);\n font: var(--input-font);\n color: var(--primary-text-color);\n }\n\n input:focus {\n outline: none;\n border-bottom: 1px solid var(--primary-color);\n }\n\n button.hidden {\n opacity: 0;\n cursor: default;\n }\n\n ox-input-color {\n --ox-input-color-input-color: {\n margin: 1px;\n }\n --ox-input-color-input-span: {\n width: 10px;\n height: 10px;\n }\n }\n\n input[type='checkbox'] {\n flex: none;\n width: initial;\n }\n `\n\n @property({ type: Object }) value: ValueMap = {}\n @property({ type: String }) valuetype: 'string' | 'boolean' | 'color' | 'number' | 'date' | string = 'string'\n @property({ type: String }) keytype: 'string' | 'number' = 'number'\n @property({ type: String, attribute: 'default-value' }) defaultValue?: string\n\n private _changingNow: boolean = false\n\n firstUpdated() {\n this.renderRoot.addEventListener('change', this._onChange.bind(this))\n }\n\n updated() {\n const inputs = this.renderRoot.querySelectorAll('[data-record-new] > :not([style*=\"display: none\"])') as NodeListOf<\n HTMLInputElement & { value: any }\n >\n\n inputs[0].focus()\n }\n\n valueInputTemplate(value?: any) {\n return this.valuetype == 'boolean'\n ? html`\n <input\n type=\"checkbox\"\n data-value\n .checked=${!!value}\n data-value-type=${this.valuetype}\n ?disabled=${this.disabled}\n />\n `\n : this.valuetype == 'color'\n ? html` <ox-input-color data-value value=${ifDefined(value)} ?disabled=${this.disabled}> </ox-input-color> `\n : html`\n <input\n type=\"text\"\n data-value\n placeholder=\"value\"\n value=${ifDefined(value)}\n data-value-type=${this.valuetype}\n ?disabled=${this.disabled}\n />\n `\n }\n\n render() {\n return html`\n ${this._toArray(this.value).map(\n item => html`\n <div data-record>\n <input type=\"text\" data-key placeholder=\"key\" .value=${item.key} ?disabled=${this.disabled} />\n ${this.valueInputTemplate(item.value)}\n <button\n class=\"record-action\"\n @click=${(e: MouseEvent) => this._delete(e)}\n tabindex=\"-1\"\n ?disabled=${this.disabled}\n >\n <mwc-icon>remove</mwc-icon>\n </button>\n </div>\n `\n )}\n ${this.disabled\n ? nothing\n : keyed(\n Date.now(),\n html`\n <div data-record-new>\n <input type=\"text\" data-key placeholder=\"key\" value=\"\" />\n\n ${this.valueInputTemplate()}\n <button class=\"record-action\" @click=${(e: MouseEvent) => this._add()} tabindex=\"-1\">\n <mwc-icon>add</mwc-icon>\n </button>\n </div>\n `\n )}\n\n <div data-record>\n <input type=\"text\" data-key data-default=\"\" value=\"default\" disabled />\n\n ${this.valueInputTemplate((this.value && this.value.default) || this._defaultValue())}\n <button class=\"record-action\" @click=${() => this._sort()} tabindex=\"-1\">\n <mwc-icon>chevron_right</mwc-icon>\n </button>\n </div>\n `\n }\n\n _defaultValue(type?: 'color' | 'boolean' | 'checkbox' | string) {\n switch (type || this.valuetype) {\n case 'color':\n return this.defaultValue || '#000000'\n case 'boolean':\n case 'checkbox':\n return this.defaultValue ? this.defaultValue === 'true' : false\n default:\n return this.defaultValue || ''\n }\n }\n\n _onChange(e: Event) {\n e.stopPropagation()\n\n if (this._changingNow) {\n return\n }\n\n this._changingNow = true\n\n const input = e.target as HTMLInputElement\n var value\n\n if (input.type == 'checkbox') {\n value = Boolean(input.checked)\n } else {\n value = input.value\n }\n\n const div = input.parentElement as HTMLDivElement\n\n if (div.hasAttribute('data-record') && input.hasAttribute('data-value')) {\n var dataList = div.querySelectorAll('[data-value]:not([hidden])') as NodeListOf<HTMLElement & { value: any }>\n\n for (var i = 0; i < dataList.length; i++) {\n if (dataList[i] !== input) {\n dataList[i].value = value || this._defaultValue()\n }\n }\n }\n\n if (div.hasAttribute('data-record')) {\n this._build()\n } else if (div.hasAttribute('data-record-new') && input.hasAttribute('data-value')) {\n this._add()\n }\n\n this._changingNow = false\n }\n\n _build(includeNewRecord?: boolean) {\n if (includeNewRecord) {\n var records = this.renderRoot.querySelectorAll('[data-record],[data-record-new]') as NodeListOf<HTMLElement>\n } else {\n var records = this.renderRoot.querySelectorAll('[data-record]') as NodeListOf<HTMLElement>\n }\n\n var newmap: ValueMap = {}\n\n for (var i = 0; i < records.length; i++) {\n var record = records[i]\n\n const key = (record.querySelector('[data-key]') as HTMLInputElement).value\n const inputs = record.querySelectorAll('[data-value]:not([style*=\"display: none\"])') as NodeListOf<\n HTMLInputElement & { value: any }\n >\n\n if (!inputs || inputs.length == 0) {\n continue\n }\n\n var input = inputs[inputs.length - 1]\n\n var value\n\n if (input.type == 'checkbox') {\n value = Boolean(input.checked)\n } else {\n value = input.value\n }\n\n if (key) {\n newmap[key] = value || this._defaultValue()\n }\n }\n\n this.value = newmap\n\n this.dispatchEvent(new CustomEvent('change', { bubbles: true, composed: true, detail: this.value }))\n }\n\n /* default를 제외한 map아이템들을 template(dom-repeat)용 배열로 변환하는 함수 */\n _toArray(map: ValueMap) {\n var array: ArrayedValueMap[] = []\n\n for (var key in map) {\n if (key == 'default') continue\n array.push({\n key: key,\n value: map[key]\n })\n }\n\n return array\n }\n\n _sort() {\n const sorter =\n this.keytype === 'number'\n ? function (a: ArrayedValueMap, b: ArrayedValueMap) {\n return parseFloat(b.key) < parseFloat(a.key) ? 1 : -1\n }\n : function (a: ArrayedValueMap, b: ArrayedValueMap) {\n return b.key < a.key ? 1 : -1\n }\n\n var map = this._toArray(this.value)\n .sort(sorter)\n .reduce(function (sum, i) {\n sum[i.key] = i.value\n return sum\n }, {} as ValueMap)\n\n map.default = this.value.default\n\n this.value = map\n this.dispatchEvent(new CustomEvent('change', { bubbles: true, composed: true, detail: this.value }))\n }\n\n _add() {\n this._build(true)\n }\n\n _delete(e: MouseEvent) {\n const record = (e.target as HTMLElement).parentElement\n\n ;(record!.querySelector('[data-key]') as HTMLInputElement)!.value = ''\n\n this._build()\n }\n}\n"]}
1
+ {"version":3,"file":"ox-input-value-map.js","sourceRoot":"","sources":["../../src/ox-input-value-map.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport './ox-input-color'\n\nimport { css, html, nothing } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport { keyed } from 'lit/directives/keyed.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { OxFormField } from './ox-form-field'\n\ntype ValueMap = { default?: any; [key: string]: any }\ntype ArrayedValueMap = { key: string; value: any }\n\n/**\nkey-value map editor element\n\nExample:\n\n <ox-input-value-map \n value=${map}\n keytype=${keytype}\n valuetype=${valuetype}>\n </ox-input-value-map>\n*/\n@customElement('ox-input-value-map')\nexport class OxInputValueMap extends OxFormField {\n static styles = css`\n :host {\n display: flex;\n flex-direction: column;\n border: var(--border-dark-color);\n padding: var(--padding-narrow) var(--padding-narrow) 0 var(--padding-narrow);\n\n --md-icon-size: var(--fontsize-default, 14px);\n }\n\n div {\n display: flex;\n flex-flow: row nowrap;\n gap: var(--padding-default);\n }\n\n div:last-child {\n margin-bottom: var(--margin-narrow);\n }\n\n div > * {\n min-width: 0px;\n margin: 2px;\n padding: 0;\n }\n\n button {\n border: var(--button-border);\n border-radius: var(--border-radius);\n background-color: var(--button-background-color);\n padding: var(--padding-narrow) var(--padding-default);\n line-height: 0.8;\n color: var(--button-color);\n cursor: pointer;\n }\n button + button {\n margin-left: -5px;\n }\n\n button:focus,\n button:hover,\n button:active {\n border: var(--button-activ-border);\n background-color: var(--button-background-focus-color);\n color: var(--theme-white-color);\n }\n\n [data-key],\n [data-value] {\n flex: 1;\n }\n\n input {\n border: 0;\n border-bottom: var(--border-dark-color);\n padding: var(--input-padding);\n font: var(--input-font);\n color: var(--primary-text-color);\n }\n\n input:focus {\n outline: none;\n border-bottom: 1px solid var(--primary-color);\n }\n\n button.hidden {\n opacity: 0;\n cursor: default;\n }\n\n ox-input-color {\n --ox-input-color-input-color: {\n margin: 1px;\n }\n --ox-input-color-input-span: {\n width: 10px;\n height: 10px;\n }\n }\n\n input[type='checkbox'] {\n flex: none;\n width: initial;\n }\n `\n\n @property({ type: Object }) value: ValueMap = {}\n @property({ type: String }) valuetype: 'string' | 'boolean' | 'color' | 'number' | 'date' | string = 'string'\n @property({ type: String }) keytype: 'string' | 'number' = 'number'\n @property({ type: String, attribute: 'default-value' }) defaultValue?: string\n\n private _changingNow: boolean = false\n\n firstUpdated() {\n this.renderRoot.addEventListener('change', this._onChange.bind(this))\n }\n\n updated() {\n const inputs = this.renderRoot.querySelectorAll('[data-record-new] > :not([style*=\"display: none\"])') as NodeListOf<\n HTMLInputElement & { value: any }\n >\n\n inputs[0].focus()\n }\n\n valueInputTemplate(value?: any) {\n return this.valuetype == 'boolean'\n ? html`\n <input\n type=\"checkbox\"\n data-value\n .checked=${!!value}\n data-value-type=${this.valuetype}\n ?disabled=${this.disabled}\n />\n `\n : this.valuetype == 'color'\n ? html` <ox-input-color data-value value=${ifDefined(value)} ?disabled=${this.disabled}> </ox-input-color> `\n : html`\n <input\n type=\"text\"\n data-value\n placeholder=\"value\"\n value=${ifDefined(value)}\n data-value-type=${this.valuetype}\n ?disabled=${this.disabled}\n />\n `\n }\n\n render() {\n return html`\n ${this._toArray(this.value).map(\n item => html`\n <div data-record>\n <input type=\"text\" data-key placeholder=\"key\" .value=${item.key} ?disabled=${this.disabled} />\n ${this.valueInputTemplate(item.value)}\n <button\n class=\"record-action\"\n @click=${(e: MouseEvent) => this._delete(e)}\n tabindex=\"-1\"\n ?disabled=${this.disabled}\n >\n <md-icon>remove</md-icon>\n </button>\n </div>\n `\n )}\n ${this.disabled\n ? nothing\n : keyed(\n Date.now(),\n html`\n <div data-record-new>\n <input type=\"text\" data-key placeholder=\"key\" value=\"\" />\n\n ${this.valueInputTemplate()}\n <button class=\"record-action\" @click=${(e: MouseEvent) => this._add()} tabindex=\"-1\">\n <md-icon>add</md-icon>\n </button>\n </div>\n `\n )}\n\n <div data-record>\n <input type=\"text\" data-key data-default=\"\" value=\"default\" disabled />\n\n ${this.valueInputTemplate((this.value && this.value.default) || this._defaultValue())}\n <button class=\"record-action\" @click=${() => this._sort()} tabindex=\"-1\">\n <md-icon>chevron_right</md-icon>\n </button>\n </div>\n `\n }\n\n _defaultValue(type?: 'color' | 'boolean' | 'checkbox' | string) {\n switch (type || this.valuetype) {\n case 'color':\n return this.defaultValue || '#000000'\n case 'boolean':\n case 'checkbox':\n return this.defaultValue ? this.defaultValue === 'true' : false\n default:\n return this.defaultValue || ''\n }\n }\n\n _onChange(e: Event) {\n e.stopPropagation()\n\n if (this._changingNow) {\n return\n }\n\n this._changingNow = true\n\n const input = e.target as HTMLInputElement\n var value\n\n if (input.type == 'checkbox') {\n value = Boolean(input.checked)\n } else {\n value = input.value\n }\n\n const div = input.parentElement as HTMLDivElement\n\n if (div.hasAttribute('data-record') && input.hasAttribute('data-value')) {\n var dataList = div.querySelectorAll('[data-value]:not([hidden])') as NodeListOf<HTMLElement & { value: any }>\n\n for (var i = 0; i < dataList.length; i++) {\n if (dataList[i] !== input) {\n dataList[i].value = value || this._defaultValue()\n }\n }\n }\n\n if (div.hasAttribute('data-record')) {\n this._build()\n } else if (div.hasAttribute('data-record-new') && input.hasAttribute('data-value')) {\n this._add()\n }\n\n this._changingNow = false\n }\n\n _build(includeNewRecord?: boolean) {\n if (includeNewRecord) {\n var records = this.renderRoot.querySelectorAll('[data-record],[data-record-new]') as NodeListOf<HTMLElement>\n } else {\n var records = this.renderRoot.querySelectorAll('[data-record]') as NodeListOf<HTMLElement>\n }\n\n var newmap: ValueMap = {}\n\n for (var i = 0; i < records.length; i++) {\n var record = records[i]\n\n const key = (record.querySelector('[data-key]') as HTMLInputElement).value\n const inputs = record.querySelectorAll('[data-value]:not([style*=\"display: none\"])') as NodeListOf<\n HTMLInputElement & { value: any }\n >\n\n if (!inputs || inputs.length == 0) {\n continue\n }\n\n var input = inputs[inputs.length - 1]\n\n var value\n\n if (input.type == 'checkbox') {\n value = Boolean(input.checked)\n } else {\n value = input.value\n }\n\n if (key) {\n newmap[key] = value || this._defaultValue()\n }\n }\n\n this.value = newmap\n\n this.dispatchEvent(new CustomEvent('change', { bubbles: true, composed: true, detail: this.value }))\n }\n\n /* default를 제외한 map아이템들을 template(dom-repeat)용 배열로 변환하는 함수 */\n _toArray(map: ValueMap) {\n var array: ArrayedValueMap[] = []\n\n for (var key in map) {\n if (key == 'default') continue\n array.push({\n key: key,\n value: map[key]\n })\n }\n\n return array\n }\n\n _sort() {\n const sorter =\n this.keytype === 'number'\n ? function (a: ArrayedValueMap, b: ArrayedValueMap) {\n return parseFloat(b.key) < parseFloat(a.key) ? 1 : -1\n }\n : function (a: ArrayedValueMap, b: ArrayedValueMap) {\n return b.key < a.key ? 1 : -1\n }\n\n var map = this._toArray(this.value)\n .sort(sorter)\n .reduce(function (sum, i) {\n sum[i.key] = i.value\n return sum\n }, {} as ValueMap)\n\n map.default = this.value.default\n\n this.value = map\n this.dispatchEvent(new CustomEvent('change', { bubbles: true, composed: true, detail: this.value }))\n }\n\n _add() {\n this._build(true)\n }\n\n _delete(e: MouseEvent) {\n const record = (e.target as HTMLElement).parentElement\n\n ;(record!.querySelector('[data-key]') as HTMLInputElement)!.value = ''\n\n this._build()\n }\n}\n"]}
@@ -31,8 +31,8 @@ export declare class OxInputValueRange extends OxFormField {
31
31
  private _changingNow;
32
32
  firstUpdated(): void;
33
33
  updated(): void;
34
- valueInputTemplate(value?: any): import("lit").TemplateResult<1>;
35
- render(): import("lit").TemplateResult<1>;
34
+ valueInputTemplate(value?: any): import("lit-html").TemplateResult<1>;
35
+ render(): import("lit-html").TemplateResult<1>;
36
36
  _defaultValue(type?: 'color' | 'boolean' | 'checkbox' | string): string | boolean;
37
37
  _onChange(e: Event): void;
38
38
  _build(includeNewRecord?: boolean): void;
@@ -32,6 +32,8 @@ let OxInputValueRange = class OxInputValueRange extends OxFormField {
32
32
  flex-direction: column;
33
33
  border: var(--border-dark-color);
34
34
  padding: var(--padding-narrow) var(--padding-narrow) 0 var(--padding-narrow);
35
+
36
+ --md-icon-size: var(--fontsize-default, 14px);
35
37
  }
36
38
 
37
39
  div {
@@ -62,9 +64,7 @@ let OxInputValueRange = class OxInputValueRange extends OxFormField {
62
64
  button + button {
63
65
  margin-left: -5px;
64
66
  }
65
- button mwc-icon {
66
- font-size: var(--fontsize-default);
67
- }
67
+
68
68
  button:focus,
69
69
  button:hover,
70
70
  button:active {
@@ -141,15 +141,15 @@ let OxInputValueRange = class OxInputValueRange extends OxFormField {
141
141
  : this.valuetype == 'color'
142
142
  ? html ` <ox-input-color data-value value=${ifDefined(value)} ?disabled=${this.disabled}> </ox-input-color> `
143
143
  : html `
144
- <input
145
- type="text"
146
- data-value
147
- placeholder="value"
148
- value=${ifDefined(value)}
149
- data-value-type=${this.valuetype}
150
- ?disabled=${this.disabled}
151
- />
152
- `;
144
+ <input
145
+ type="text"
146
+ data-value
147
+ placeholder="value"
148
+ value=${ifDefined(value)}
149
+ data-value-type=${this.valuetype}
150
+ ?disabled=${this.disabled}
151
+ />
152
+ `;
153
153
  }
154
154
  render() {
155
155
  return html `
@@ -165,7 +165,7 @@ let OxInputValueRange = class OxInputValueRange extends OxFormField {
165
165
  tabindex="-1"
166
166
  ?disabled=${this.disabled}
167
167
  >
168
- <mwc-icon>remove</mwc-icon>
168
+ <md-icon>remove</md-icon>
169
169
  </button>
170
170
  </div>
171
171
  `)}
@@ -178,7 +178,7 @@ let OxInputValueRange = class OxInputValueRange extends OxFormField {
178
178
 
179
179
  ${this.valueInputTemplate()}
180
180
  <button class="record-action" @click=${(e) => this._add()} tabindex="-1">
181
- <mwc-icon>add</mwc-icon>
181
+ <md-icon>add</md-icon>
182
182
  </button>
183
183
  </div>
184
184
  `)}
@@ -189,7 +189,7 @@ let OxInputValueRange = class OxInputValueRange extends OxFormField {
189
189
 
190
190
  ${this.valueInputTemplate((this.value && this.value.default) || this._defaultValue())}
191
191
  <button class="record-action" @click=${(e) => this._sort()} ?disabled=${this.disabled}>
192
- <mwc-icon>chevron_right</mwc-icon>
192
+ <md-icon>chevron_right</md-icon>
193
193
  </button>
194
194
  </div>
195
195
  `;
@@ -1 +1 @@
1
- {"version":3,"file":"ox-input-value-ranges.js","sourceRoot":"","sources":["../../src/ox-input-value-ranges.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport './ox-input-color'\n\nimport { css, html, nothing } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport { keyed } from 'lit/directives/keyed.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { OxFormField } from './ox-form-field.js'\n\ntype ValueRange = { default?: any; [fromto: string]: any }\ntype ArrayedRange = { from: any; to: any; value: any }\n\n/**\nrange value editor element\n\nExample:\n\n <ox-input-value-ranges\n .value=${range}\n valuetype=${type}\n </ox-input-value-ranges>\n*/\n\n@customElement('ox-input-value-ranges')\nexport class OxInputValueRange extends OxFormField {\n static styles = css`\n :host {\n display: flex;\n flex-direction: column;\n border: var(--border-dark-color);\n padding: var(--padding-narrow) var(--padding-narrow) 0 var(--padding-narrow);\n }\n\n div {\n display: flex;\n flex-flow: row nowrap;\n gap: var(--padding-default);\n }\n\n div:last-child {\n margin-bottom: var(--margin-narrow);\n }\n\n div > * {\n min-width: 0px;\n margin: 2px;\n padding: 0;\n }\n\n button {\n border: var(--button-border);\n border-radius: var(--border-radius);\n background-color: var(--button-background-color);\n padding: var(--padding-narrow) var(--padding-default);\n line-height: 0.8;\n color: var(--button-color);\n cursor: pointer;\n }\n button + button {\n margin-left: -5px;\n }\n button mwc-icon {\n font-size: var(--fontsize-default);\n }\n button:focus,\n button:hover,\n button:active {\n border: var(--button-activ-border);\n background-color: var(--button-background-focus-color);\n color: var(--theme-white-color);\n }\n\n [data-from],\n [data-to] {\n flex: 1;\n }\n\n [data-value] {\n flex: 2;\n }\n\n input {\n border: 0;\n border-bottom: var(--border-dark-color);\n padding: var(--input-padding);\n font: var(--input-font);\n color: var(--primary-text-color);\n }\n\n input:focus {\n outline: none;\n border-bottom: 1px solid var(--primary-color);\n }\n\n button.hidden {\n opacity: 0;\n cursor: default;\n }\n\n ox-input-color {\n --things-editor-color-input-color: {\n margin: 2px;\n }\n --things-editor-color-input-span: {\n width: 12px;\n height: 12px;\n }\n }\n\n [placeholder='value'],\n [value='default'] {\n flex: 2;\n }\n\n input[type='checkbox'] {\n flex: none;\n width: initial;\n }\n `\n\n @property({ type: Object }) value: ValueRange = {}\n @property({ type: String }) valuetype: 'string' | 'boolean' | 'color' | 'number' | 'date' | string = 'string'\n @property({ type: String }) rangetype: 'string' | 'number' = 'number'\n @property({ type: String, attribute: 'default-value' }) defaultValue?: string\n\n private _changingNow: boolean = false\n\n firstUpdated() {\n this.renderRoot.addEventListener('change', this._onChange.bind(this))\n }\n\n updated() {\n const inputs = this.renderRoot.querySelectorAll('[data-record-new] > :not([style*=\"display: none\"])') as NodeListOf<\n HTMLInputElement & { value: any }\n >\n\n inputs[0]?.focus()\n }\n\n valueInputTemplate(value?: any) {\n return this.valuetype == 'boolean'\n ? html`\n <input\n type=\"checkbox\"\n data-value\n .checked=${!!value}\n data-value-type=${this.valuetype}\n ?disabled=${this.disabled}\n />\n `\n : this.valuetype == 'color'\n ? html` <ox-input-color data-value value=${ifDefined(value)} ?disabled=${this.disabled}> </ox-input-color> `\n : html`\n <input\n type=\"text\"\n data-value\n placeholder=\"value\"\n value=${ifDefined(value)}\n data-value-type=${this.valuetype}\n ?disabled=${this.disabled}\n />\n `\n }\n\n render() {\n return html`\n ${this._toArray(this.value).map(\n item => html`\n <div data-record>\n <input type=\"text\" data-from placeholder=\"<=\" .value=${item.from} ?disabled=${this.disabled} />\n <input type=\"text\" data-to placeholder=\"&gt;\" .value=${item.to} ?disabled=${this.disabled} />\n\n ${this.valueInputTemplate(item.value)}\n <button\n class=\"record-action\"\n @click=${(e: Event) => this._delete(e)}\n tabindex=\"-1\"\n ?disabled=${this.disabled}\n >\n <mwc-icon>remove</mwc-icon>\n </button>\n </div>\n `\n )}\n ${this.disabled\n ? nothing\n : keyed(\n Date.now(),\n html`\n <div data-record-new>\n <input type=\"text\" data-from placeholder=\"<=\" value=\"\" />\n <input type=\"text\" data-to placeholder=\"&gt;\" value=\"\" />\n\n ${this.valueInputTemplate()}\n <button class=\"record-action\" @click=${(e: Event) => this._add()} tabindex=\"-1\">\n <mwc-icon>add</mwc-icon>\n </button>\n </div>\n `\n )}\n\n <div data-record>\n <input type=\"text\" data-from data-default=\"\" disabled value=\"default\" />\n <input type=\"text\" data-to placeholder=\"&gt;\" value=\"\" hidden ?disabled=${this.disabled} />\n\n ${this.valueInputTemplate((this.value && this.value.default) || this._defaultValue())}\n <button class=\"record-action\" @click=${(e: Event) => this._sort()} ?disabled=${this.disabled}>\n <mwc-icon>chevron_right</mwc-icon>\n </button>\n </div>\n `\n }\n\n _defaultValue(type?: 'color' | 'boolean' | 'checkbox' | string) {\n switch (type || this.valuetype) {\n case 'color':\n return this.defaultValue || '#000000'\n case 'boolean':\n case 'checkbox':\n return this.defaultValue ? this.defaultValue === 'true' : false\n default:\n return this.defaultValue || ''\n }\n }\n\n _onChange(e: Event) {\n e.stopPropagation()\n\n if (this._changingNow) {\n return\n }\n\n this._changingNow = true\n\n const input = e.target as HTMLInputElement\n var value = input.type === 'checkbox' ? Boolean(input.checked) : input.value\n\n const div = input.parentElement as HTMLDivElement\n if (input.hasAttribute('data-value') && input.hasAttribute('data-value')) {\n const dataList = div.querySelectorAll('[data-value]:not([hidden])') as NodeListOf<HTMLElement & { value: any }>\n\n for (var i = 0; i < dataList.length; i++) {\n if (dataList[i] !== input) {\n dataList[i].value = value || this._defaultValue()\n }\n }\n }\n\n if (div.hasAttribute('data-record')) {\n this._build()\n } else if (div.hasAttribute('data-record-new') && input.hasAttribute('data-value')) {\n this._add()\n }\n\n this._changingNow = false\n }\n\n _build(includeNewRecord?: boolean) {\n if (includeNewRecord) {\n var records = this.renderRoot.querySelectorAll('[data-record],[data-record-new]')\n } else {\n var records = this.renderRoot.querySelectorAll('[data-record]')\n }\n\n var newrange: ValueRange = {}\n for (var i = 0; i < records.length; i++) {\n const record = records[i]\n const from = (record.querySelector('[data-from]') as HTMLInputElement).value\n const to = (record.querySelector('[data-to]') as HTMLInputElement).value\n const inputs = record.querySelectorAll(\n '[data-value]:not([style*=\"display: none\"])'\n ) as NodeListOf<HTMLInputElement>\n\n if (!inputs || inputs.length == 0) {\n continue\n }\n\n var input = inputs[inputs.length - 1]\n\n var value\n\n if (input.type == 'checkbox') {\n value = Boolean(input.checked)\n } else {\n value = input.value\n }\n\n if (from) {\n if (from === 'default') newrange['default'] = value || (this.valuetype == 'color' ? '#000000' : '')\n else newrange[`${from}~${to}`] = value\n }\n }\n\n this.value = newrange\n\n this.dispatchEvent(new CustomEvent('change', { bubbles: true, composed: true, detail: this.value }))\n }\n\n /* default를 제외한 range아이템들을 template(dom-repeat)용 배열로 변환하는 함수 */\n _toArray(range: ValueRange) {\n var array: ArrayedRange[] = []\n\n for (var key in range) {\n if (key == 'default') {\n continue\n }\n\n const fromto = key.split('~')\n\n array.push({\n from: fromto[0],\n to: fromto[1],\n value: range[key]\n })\n }\n return array\n }\n\n _sort() {\n const sorter =\n this.rangetype === 'number'\n ? function (a: ArrayedRange, b: ArrayedRange) {\n return parseFloat(b.from) < parseFloat(a.from) ? 1 : -1\n }\n : function (a: ArrayedRange, b: ArrayedRange) {\n return b.from < a.from ? 1 : -1\n }\n\n var range: ValueRange = this._toArray(this.value)\n .sort(sorter)\n .reduce(function (sum, i) {\n sum[`${i.from}~${i.to}`] = i.value\n return sum\n }, {} as ValueRange)\n range.default = this.value.default || this._defaultValue()\n\n this.value = range\n\n this.dispatchEvent(new CustomEvent('change', { bubbles: true, composed: true, detail: this.value }))\n }\n\n _add() {\n this._build(true)\n }\n\n _delete(e: Event) {\n const record = (e.target as Element).parentElement\n\n const dataFrom = record!.querySelector('[data-from]') as HTMLInputElement\n dataFrom.value = ''\n\n this._build()\n }\n}\n"]}
1
+ {"version":3,"file":"ox-input-value-ranges.js","sourceRoot":"","sources":["../../src/ox-input-value-ranges.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport './ox-input-color'\n\nimport { css, html, nothing } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport { keyed } from 'lit/directives/keyed.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\nimport { OxFormField } from './ox-form-field.js'\n\ntype ValueRange = { default?: any; [fromto: string]: any }\ntype ArrayedRange = { from: any; to: any; value: any }\n\n/**\nrange value editor element\n\nExample:\n\n <ox-input-value-ranges\n .value=${range}\n valuetype=${type}\n </ox-input-value-ranges>\n*/\n\n@customElement('ox-input-value-ranges')\nexport class OxInputValueRange extends OxFormField {\n static styles = css`\n :host {\n display: flex;\n flex-direction: column;\n border: var(--border-dark-color);\n padding: var(--padding-narrow) var(--padding-narrow) 0 var(--padding-narrow);\n\n --md-icon-size: var(--fontsize-default, 14px);\n }\n\n div {\n display: flex;\n flex-flow: row nowrap;\n gap: var(--padding-default);\n }\n\n div:last-child {\n margin-bottom: var(--margin-narrow);\n }\n\n div > * {\n min-width: 0px;\n margin: 2px;\n padding: 0;\n }\n\n button {\n border: var(--button-border);\n border-radius: var(--border-radius);\n background-color: var(--button-background-color);\n padding: var(--padding-narrow) var(--padding-default);\n line-height: 0.8;\n color: var(--button-color);\n cursor: pointer;\n }\n button + button {\n margin-left: -5px;\n }\n\n button:focus,\n button:hover,\n button:active {\n border: var(--button-activ-border);\n background-color: var(--button-background-focus-color);\n color: var(--theme-white-color);\n }\n\n [data-from],\n [data-to] {\n flex: 1;\n }\n\n [data-value] {\n flex: 2;\n }\n\n input {\n border: 0;\n border-bottom: var(--border-dark-color);\n padding: var(--input-padding);\n font: var(--input-font);\n color: var(--primary-text-color);\n }\n\n input:focus {\n outline: none;\n border-bottom: 1px solid var(--primary-color);\n }\n\n button.hidden {\n opacity: 0;\n cursor: default;\n }\n\n ox-input-color {\n --things-editor-color-input-color: {\n margin: 2px;\n }\n --things-editor-color-input-span: {\n width: 12px;\n height: 12px;\n }\n }\n\n [placeholder='value'],\n [value='default'] {\n flex: 2;\n }\n\n input[type='checkbox'] {\n flex: none;\n width: initial;\n }\n `\n\n @property({ type: Object }) value: ValueRange = {}\n @property({ type: String }) valuetype: 'string' | 'boolean' | 'color' | 'number' | 'date' | string = 'string'\n @property({ type: String }) rangetype: 'string' | 'number' = 'number'\n @property({ type: String, attribute: 'default-value' }) defaultValue?: string\n\n private _changingNow: boolean = false\n\n firstUpdated() {\n this.renderRoot.addEventListener('change', this._onChange.bind(this))\n }\n\n updated() {\n const inputs = this.renderRoot.querySelectorAll('[data-record-new] > :not([style*=\"display: none\"])') as NodeListOf<\n HTMLInputElement & { value: any }\n >\n\n inputs[0]?.focus()\n }\n\n valueInputTemplate(value?: any) {\n return this.valuetype == 'boolean'\n ? html`\n <input\n type=\"checkbox\"\n data-value\n .checked=${!!value}\n data-value-type=${this.valuetype}\n ?disabled=${this.disabled}\n />\n `\n : this.valuetype == 'color'\n ? html` <ox-input-color data-value value=${ifDefined(value)} ?disabled=${this.disabled}> </ox-input-color> `\n : html`\n <input\n type=\"text\"\n data-value\n placeholder=\"value\"\n value=${ifDefined(value)}\n data-value-type=${this.valuetype}\n ?disabled=${this.disabled}\n />\n `\n }\n\n render() {\n return html`\n ${this._toArray(this.value).map(\n item => html`\n <div data-record>\n <input type=\"text\" data-from placeholder=\"<=\" .value=${item.from} ?disabled=${this.disabled} />\n <input type=\"text\" data-to placeholder=\"&gt;\" .value=${item.to} ?disabled=${this.disabled} />\n\n ${this.valueInputTemplate(item.value)}\n <button\n class=\"record-action\"\n @click=${(e: Event) => this._delete(e)}\n tabindex=\"-1\"\n ?disabled=${this.disabled}\n >\n <md-icon>remove</md-icon>\n </button>\n </div>\n `\n )}\n ${this.disabled\n ? nothing\n : keyed(\n Date.now(),\n html`\n <div data-record-new>\n <input type=\"text\" data-from placeholder=\"<=\" value=\"\" />\n <input type=\"text\" data-to placeholder=\"&gt;\" value=\"\" />\n\n ${this.valueInputTemplate()}\n <button class=\"record-action\" @click=${(e: Event) => this._add()} tabindex=\"-1\">\n <md-icon>add</md-icon>\n </button>\n </div>\n `\n )}\n\n <div data-record>\n <input type=\"text\" data-from data-default=\"\" disabled value=\"default\" />\n <input type=\"text\" data-to placeholder=\"&gt;\" value=\"\" hidden ?disabled=${this.disabled} />\n\n ${this.valueInputTemplate((this.value && this.value.default) || this._defaultValue())}\n <button class=\"record-action\" @click=${(e: Event) => this._sort()} ?disabled=${this.disabled}>\n <md-icon>chevron_right</md-icon>\n </button>\n </div>\n `\n }\n\n _defaultValue(type?: 'color' | 'boolean' | 'checkbox' | string) {\n switch (type || this.valuetype) {\n case 'color':\n return this.defaultValue || '#000000'\n case 'boolean':\n case 'checkbox':\n return this.defaultValue ? this.defaultValue === 'true' : false\n default:\n return this.defaultValue || ''\n }\n }\n\n _onChange(e: Event) {\n e.stopPropagation()\n\n if (this._changingNow) {\n return\n }\n\n this._changingNow = true\n\n const input = e.target as HTMLInputElement\n var value = input.type === 'checkbox' ? Boolean(input.checked) : input.value\n\n const div = input.parentElement as HTMLDivElement\n if (input.hasAttribute('data-value') && input.hasAttribute('data-value')) {\n const dataList = div.querySelectorAll('[data-value]:not([hidden])') as NodeListOf<HTMLElement & { value: any }>\n\n for (var i = 0; i < dataList.length; i++) {\n if (dataList[i] !== input) {\n dataList[i].value = value || this._defaultValue()\n }\n }\n }\n\n if (div.hasAttribute('data-record')) {\n this._build()\n } else if (div.hasAttribute('data-record-new') && input.hasAttribute('data-value')) {\n this._add()\n }\n\n this._changingNow = false\n }\n\n _build(includeNewRecord?: boolean) {\n if (includeNewRecord) {\n var records = this.renderRoot.querySelectorAll('[data-record],[data-record-new]')\n } else {\n var records = this.renderRoot.querySelectorAll('[data-record]')\n }\n\n var newrange: ValueRange = {}\n for (var i = 0; i < records.length; i++) {\n const record = records[i]\n const from = (record.querySelector('[data-from]') as HTMLInputElement).value\n const to = (record.querySelector('[data-to]') as HTMLInputElement).value\n const inputs = record.querySelectorAll(\n '[data-value]:not([style*=\"display: none\"])'\n ) as NodeListOf<HTMLInputElement>\n\n if (!inputs || inputs.length == 0) {\n continue\n }\n\n var input = inputs[inputs.length - 1]\n\n var value\n\n if (input.type == 'checkbox') {\n value = Boolean(input.checked)\n } else {\n value = input.value\n }\n\n if (from) {\n if (from === 'default') newrange['default'] = value || (this.valuetype == 'color' ? '#000000' : '')\n else newrange[`${from}~${to}`] = value\n }\n }\n\n this.value = newrange\n\n this.dispatchEvent(new CustomEvent('change', { bubbles: true, composed: true, detail: this.value }))\n }\n\n /* default를 제외한 range아이템들을 template(dom-repeat)용 배열로 변환하는 함수 */\n _toArray(range: ValueRange) {\n var array: ArrayedRange[] = []\n\n for (var key in range) {\n if (key == 'default') {\n continue\n }\n\n const fromto = key.split('~')\n\n array.push({\n from: fromto[0],\n to: fromto[1],\n value: range[key]\n })\n }\n return array\n }\n\n _sort() {\n const sorter =\n this.rangetype === 'number'\n ? function (a: ArrayedRange, b: ArrayedRange) {\n return parseFloat(b.from) < parseFloat(a.from) ? 1 : -1\n }\n : function (a: ArrayedRange, b: ArrayedRange) {\n return b.from < a.from ? 1 : -1\n }\n\n var range: ValueRange = this._toArray(this.value)\n .sort(sorter)\n .reduce(function (sum, i) {\n sum[`${i.from}~${i.to}`] = i.value\n return sum\n }, {} as ValueRange)\n range.default = this.value.default || this._defaultValue()\n\n this.value = range\n\n this.dispatchEvent(new CustomEvent('change', { bubbles: true, composed: true, detail: this.value }))\n }\n\n _add() {\n this._build(true)\n }\n\n _delete(e: Event) {\n const record = (e.target as Element).parentElement\n\n const dataFrom = record!.querySelector('[data-from]') as HTMLInputElement\n dataFrom.value = ''\n\n this._build()\n }\n}\n"]}
@@ -23,7 +23,7 @@ export declare class OxInputWorkShift extends OxFormField {
23
23
  value: WorkShift[];
24
24
  private _changingNow;
25
25
  firstUpdated(): void;
26
- render(): import("lit").TemplateResult<1>;
26
+ render(): import("lit-html").TemplateResult<1>;
27
27
  _onChange(e: Event): void;
28
28
  _build(includeNewRecord?: boolean): void;
29
29
  _add(): void;
@@ -28,6 +28,8 @@ let OxInputWorkShift = class OxInputWorkShift extends OxFormField {
28
28
 
29
29
  width: 100%;
30
30
  overflow: hidden;
31
+
32
+ --md-icon-size: var(--fontsize-default, 14px);
31
33
  }
32
34
 
33
35
  div {
@@ -91,9 +93,6 @@ let OxInputWorkShift = class OxInputWorkShift extends OxFormField {
91
93
  color: var(--button-color);
92
94
  cursor: pointer;
93
95
  }
94
- button mwc-icon {
95
- font-size: var(--fontsize-default);
96
- }
97
96
  button:focus,
98
97
  button:hover,
99
98
  button:active {
@@ -145,7 +144,7 @@ let OxInputWorkShift = class OxInputWorkShift extends OxFormField {
145
144
  tabindex="-1"
146
145
  ?disabled=${this.disabled}
147
146
  >
148
- <mwc-icon>remove</mwc-icon>
147
+ <md-icon>remove</md-icon>
149
148
  </button>
150
149
  </div>
151
150
  `)}
@@ -170,7 +169,7 @@ let OxInputWorkShift = class OxInputWorkShift extends OxFormField {
170
169
  <input type="time" data-to-time step="1800" />
171
170
 
172
171
  <button class="record-action" @click=${(e) => this._add()} tabindex="-1">
173
- <mwc-icon>add</mwc-icon>
172
+ <md-icon>add</md-icon>
174
173
  </button>
175
174
  </div>
176
175
  `}
@@ -1 +1 @@
1
- {"version":3,"file":"ox-input-work-shift.js","sourceRoot":"","sources":["../../src/ox-input-work-shift.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport { css, html, nothing } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\n\nimport { localized, msg } from '@lit/localize'\n\nimport { OxFormField } from './ox-form-field.js'\n\ntype WorkShift = { name: string; fromDate: number; fromTime: string; toDate: number; toTime: string }\n\n/**\nwork-shift array value editor element\n\nExample:\n\n <ox-input-work-shift\n .value=${value}\n </ox-input-work-shift>\n*/\n\n@localized()\n@customElement('ox-input-work-shift')\nexport class OxInputWorkShift extends OxFormField {\n static styles = css`\n :host {\n display: flex;\n flex-direction: column;\n\n width: 100%;\n overflow: hidden;\n }\n\n div {\n display: flex;\n flex-flow: row nowrap;\n gap: var(--margin-default);\n }\n\n empty-element {\n width: 34px;\n text-align: center;\n }\n\n input,\n select,\n span {\n flex: 1;\n }\n [data-header] {\n background-color: rgba(var(--primary-color-rgb), 0.05);\n padding: var(--padding-narrow);\n }\n [data-header] span {\n font: var(--label-font);\n color: var(--label-color);\n text-transform: var(--label-text-transform);\n text-align: center;\n }\n [data-record] {\n margin-bottom: var(--margin-narrow);\n }\n input,\n select {\n border: 0;\n border-bottom: var(--border-dark-color);\n padding: var(--input-padding);\n font: var(--input-font);\n color: var(--primary-text-color);\n\n max-height: 35px;\n }\n input:focus,\n select:focus {\n outline: none;\n border-bottom: 1px solid var(--primary-color);\n }\n\n input:required:invalid {\n border: 1px dashed red;\n }\n input[type='time'] {\n padding: 2px var(--padding-default);\n }\n\n button {\n border: var(--button-border);\n border-radius: var(--border-radius);\n background-color: var(--button-background-color);\n padding: var(--padding-narrow) var(--padding-default);\n line-height: 0.8;\n color: var(--button-color);\n cursor: pointer;\n }\n button mwc-icon {\n font-size: var(--fontsize-default);\n }\n button:focus,\n button:hover,\n button:active {\n border: var(--button-activ-border);\n background-color: var(--button-background-focus-color);\n color: var(--theme-white-color);\n }\n\n [placeholder='value'] {\n flex: 2;\n }\n `\n\n @property({ type: Array }) value: WorkShift[] = []\n\n private _changingNow: boolean = false\n\n firstUpdated() {\n this.renderRoot.addEventListener('change', this._onChange.bind(this))\n }\n\n render() {\n const workshifts = this.value || []\n\n return html`\n <div data-header>\n <span>${msg('name')}</span>\n <span>${msg('from date')}</span>\n <span>${msg('from time')}</span>\n <span>${msg('to date')}</span>\n <span>${msg('to time')}</span>\n <empty-element></empty-element>\n </div>\n\n ${workshifts.map(\n item => html`\n <div data-record>\n <input type=\"text\" data-name .value=${item.name} required ?disabled=${this.disabled} />\n\n <select data-from-date .value=${String(item.fromDate || 0)} ?disabled=${this.disabled}>\n <option value=\"-1\">${msg('The day before')}</option>\n <option value=\"0\">${msg('The day')}</option>\n <option value=\"1\">${msg('The day after')}</option>\n </select>\n <input type=\"time\" data-from-time .value=${item.fromTime} step=\"1800\" required ?disabled=${this.disabled} />\n\n <select data-to-date .value=${String(item.toDate || 0)} ?disabled=${this.disabled}>\n <option value=\"-1\">${msg('The day before')}</option>\n <option value=\"0\">${msg('The day')}</option>\n <option value=\"1\">${msg('The day after')}</option>\n </select>\n <input type=\"time\" data-to-time .value=${item.toTime} step=\"1800\" required ?disabled=${this.disabled} />\n\n <button\n class=\"record-action\"\n @click=${(e: Event) => this._delete(e)}\n tabindex=\"-1\"\n ?disabled=${this.disabled}\n >\n <mwc-icon>remove</mwc-icon>\n </button>\n </div>\n `\n )}\n ${this.disabled\n ? nothing\n : html`\n <div data-record-new>\n <input type=\"text\" data-name />\n\n <select data-from-date>\n <option value=\"-1\">${msg('The day before')}</option>\n <option value=\"0\" selected>${msg('The day')}</option>\n <option value=\"+1\">${msg('The day after')}</option>\n </select>\n <input type=\"time\" data-from-time step=\"1800\" />\n\n <select data-to-date>\n <option value=\"-1\">${msg('The day before')}</option>\n <option value=\"0\" selected>${msg('The day')}</option>\n <option value=\"+1\">${msg('The day after')}</option>\n </select>\n <input type=\"time\" data-to-time step=\"1800\" />\n\n <button class=\"record-action\" @click=${(e: Event) => this._add()} tabindex=\"-1\">\n <mwc-icon>add</mwc-icon>\n </button>\n </div>\n `}\n `\n }\n\n _onChange(e: Event) {\n if (this._changingNow) {\n return\n }\n\n this._changingNow = true\n\n const input = e.target as HTMLInputElement\n\n const div = input.parentElement as HTMLDivElement\n\n if (div.hasAttribute('data-record')) {\n this._build()\n } else if (div.hasAttribute('data-record-new') && input.hasAttribute('data-value')) {\n this._add()\n }\n\n this._changingNow = false\n }\n\n _build(includeNewRecord?: boolean) {\n if (includeNewRecord) {\n var records = this.renderRoot.querySelectorAll('[data-record],[data-record-new]')\n } else {\n var records = this.renderRoot.querySelectorAll('[data-record]')\n }\n\n var value: WorkShift[] = []\n for (var i = 0; i < records.length; i++) {\n const record = records[i]\n\n const name = (record.querySelector('[data-name]') as HTMLInputElement).value\n\n const fromDate = (record.querySelector('[data-from-date]') as HTMLSelectElement).value\n const fromTime = (record.querySelector('[data-from-time]') as HTMLInputElement).value\n const toDate = (record.querySelector('[data-to-date]') as HTMLSelectElement).value\n const toTime = (record.querySelector('[data-to-time]') as HTMLInputElement).value\n\n if (!name) {\n ;(record.querySelector('[data-name]') as HTMLInputElement).focus()\n return\n }\n\n if (!fromDate) {\n ;(record.querySelector('[data-from-date]') as HTMLInputElement).focus()\n return\n }\n\n if (!fromTime) {\n ;(record.querySelector('[data-from-time]') as HTMLInputElement).focus()\n return\n }\n\n if (!toDate) {\n ;(record.querySelector('[data-to-date]') as HTMLInputElement).focus()\n return\n }\n\n if (!toTime) {\n ;(record.querySelector('[data-to-time]') as HTMLInputElement).focus()\n return\n }\n\n if (name) {\n value.push({\n name,\n fromDate: Number(fromDate),\n fromTime,\n toDate: Number(toDate),\n toTime\n })\n }\n }\n\n this.value = value\n\n this.dispatchEvent(new CustomEvent('change', { bubbles: true, composed: true, detail: this.value }))\n }\n\n _add() {\n this._build(true)\n\n const inputs = this.renderRoot.querySelectorAll(\n '[data-record-new] input:not([style*=\"display: none\"])'\n ) as NodeListOf<HTMLInputElement & { value: any; type: string }>\n\n for (var i = 0; i < inputs.length; i++) {\n let input = inputs[i]\n input.value = ''\n }\n\n inputs[0].focus()\n }\n\n _delete(e: Event) {\n const record = (e.target as Element).parentElement\n\n const dataName = record!.querySelector('[data-name]') as HTMLInputElement\n dataName.name = ''\n\n this._build()\n }\n}\n"]}
1
+ {"version":3,"file":"ox-input-work-shift.js","sourceRoot":"","sources":["../../src/ox-input-work-shift.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport { css, html, nothing } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\n\nimport { localized, msg } from '@lit/localize'\n\nimport { OxFormField } from './ox-form-field.js'\n\ntype WorkShift = { name: string; fromDate: number; fromTime: string; toDate: number; toTime: string }\n\n/**\nwork-shift array value editor element\n\nExample:\n\n <ox-input-work-shift\n .value=${value}\n </ox-input-work-shift>\n*/\n\n@localized()\n@customElement('ox-input-work-shift')\nexport class OxInputWorkShift extends OxFormField {\n static styles = css`\n :host {\n display: flex;\n flex-direction: column;\n\n width: 100%;\n overflow: hidden;\n\n --md-icon-size: var(--fontsize-default, 14px);\n }\n\n div {\n display: flex;\n flex-flow: row nowrap;\n gap: var(--margin-default);\n }\n\n empty-element {\n width: 34px;\n text-align: center;\n }\n\n input,\n select,\n span {\n flex: 1;\n }\n [data-header] {\n background-color: rgba(var(--primary-color-rgb), 0.05);\n padding: var(--padding-narrow);\n }\n [data-header] span {\n font: var(--label-font);\n color: var(--label-color);\n text-transform: var(--label-text-transform);\n text-align: center;\n }\n [data-record] {\n margin-bottom: var(--margin-narrow);\n }\n input,\n select {\n border: 0;\n border-bottom: var(--border-dark-color);\n padding: var(--input-padding);\n font: var(--input-font);\n color: var(--primary-text-color);\n\n max-height: 35px;\n }\n input:focus,\n select:focus {\n outline: none;\n border-bottom: 1px solid var(--primary-color);\n }\n\n input:required:invalid {\n border: 1px dashed red;\n }\n input[type='time'] {\n padding: 2px var(--padding-default);\n }\n\n button {\n border: var(--button-border);\n border-radius: var(--border-radius);\n background-color: var(--button-background-color);\n padding: var(--padding-narrow) var(--padding-default);\n line-height: 0.8;\n color: var(--button-color);\n cursor: pointer;\n }\n button:focus,\n button:hover,\n button:active {\n border: var(--button-activ-border);\n background-color: var(--button-background-focus-color);\n color: var(--theme-white-color);\n }\n\n [placeholder='value'] {\n flex: 2;\n }\n `\n\n @property({ type: Array }) value: WorkShift[] = []\n\n private _changingNow: boolean = false\n\n firstUpdated() {\n this.renderRoot.addEventListener('change', this._onChange.bind(this))\n }\n\n render() {\n const workshifts = this.value || []\n\n return html`\n <div data-header>\n <span>${msg('name')}</span>\n <span>${msg('from date')}</span>\n <span>${msg('from time')}</span>\n <span>${msg('to date')}</span>\n <span>${msg('to time')}</span>\n <empty-element></empty-element>\n </div>\n\n ${workshifts.map(\n item => html`\n <div data-record>\n <input type=\"text\" data-name .value=${item.name} required ?disabled=${this.disabled} />\n\n <select data-from-date .value=${String(item.fromDate || 0)} ?disabled=${this.disabled}>\n <option value=\"-1\">${msg('The day before')}</option>\n <option value=\"0\">${msg('The day')}</option>\n <option value=\"1\">${msg('The day after')}</option>\n </select>\n <input type=\"time\" data-from-time .value=${item.fromTime} step=\"1800\" required ?disabled=${this.disabled} />\n\n <select data-to-date .value=${String(item.toDate || 0)} ?disabled=${this.disabled}>\n <option value=\"-1\">${msg('The day before')}</option>\n <option value=\"0\">${msg('The day')}</option>\n <option value=\"1\">${msg('The day after')}</option>\n </select>\n <input type=\"time\" data-to-time .value=${item.toTime} step=\"1800\" required ?disabled=${this.disabled} />\n\n <button\n class=\"record-action\"\n @click=${(e: Event) => this._delete(e)}\n tabindex=\"-1\"\n ?disabled=${this.disabled}\n >\n <md-icon>remove</md-icon>\n </button>\n </div>\n `\n )}\n ${this.disabled\n ? nothing\n : html`\n <div data-record-new>\n <input type=\"text\" data-name />\n\n <select data-from-date>\n <option value=\"-1\">${msg('The day before')}</option>\n <option value=\"0\" selected>${msg('The day')}</option>\n <option value=\"+1\">${msg('The day after')}</option>\n </select>\n <input type=\"time\" data-from-time step=\"1800\" />\n\n <select data-to-date>\n <option value=\"-1\">${msg('The day before')}</option>\n <option value=\"0\" selected>${msg('The day')}</option>\n <option value=\"+1\">${msg('The day after')}</option>\n </select>\n <input type=\"time\" data-to-time step=\"1800\" />\n\n <button class=\"record-action\" @click=${(e: Event) => this._add()} tabindex=\"-1\">\n <md-icon>add</md-icon>\n </button>\n </div>\n `}\n `\n }\n\n _onChange(e: Event) {\n if (this._changingNow) {\n return\n }\n\n this._changingNow = true\n\n const input = e.target as HTMLInputElement\n\n const div = input.parentElement as HTMLDivElement\n\n if (div.hasAttribute('data-record')) {\n this._build()\n } else if (div.hasAttribute('data-record-new') && input.hasAttribute('data-value')) {\n this._add()\n }\n\n this._changingNow = false\n }\n\n _build(includeNewRecord?: boolean) {\n if (includeNewRecord) {\n var records = this.renderRoot.querySelectorAll('[data-record],[data-record-new]')\n } else {\n var records = this.renderRoot.querySelectorAll('[data-record]')\n }\n\n var value: WorkShift[] = []\n for (var i = 0; i < records.length; i++) {\n const record = records[i]\n\n const name = (record.querySelector('[data-name]') as HTMLInputElement).value\n\n const fromDate = (record.querySelector('[data-from-date]') as HTMLSelectElement).value\n const fromTime = (record.querySelector('[data-from-time]') as HTMLInputElement).value\n const toDate = (record.querySelector('[data-to-date]') as HTMLSelectElement).value\n const toTime = (record.querySelector('[data-to-time]') as HTMLInputElement).value\n\n if (!name) {\n ;(record.querySelector('[data-name]') as HTMLInputElement).focus()\n return\n }\n\n if (!fromDate) {\n ;(record.querySelector('[data-from-date]') as HTMLInputElement).focus()\n return\n }\n\n if (!fromTime) {\n ;(record.querySelector('[data-from-time]') as HTMLInputElement).focus()\n return\n }\n\n if (!toDate) {\n ;(record.querySelector('[data-to-date]') as HTMLInputElement).focus()\n return\n }\n\n if (!toTime) {\n ;(record.querySelector('[data-to-time]') as HTMLInputElement).focus()\n return\n }\n\n if (name) {\n value.push({\n name,\n fromDate: Number(fromDate),\n fromTime,\n toDate: Number(toDate),\n toTime\n })\n }\n }\n\n this.value = value\n\n this.dispatchEvent(new CustomEvent('change', { bubbles: true, composed: true, detail: this.value }))\n }\n\n _add() {\n this._build(true)\n\n const inputs = this.renderRoot.querySelectorAll(\n '[data-record-new] input:not([style*=\"display: none\"])'\n ) as NodeListOf<HTMLInputElement & { value: any; type: string }>\n\n for (var i = 0; i < inputs.length; i++) {\n let input = inputs[i]\n input.value = ''\n }\n\n inputs[0].focus()\n }\n\n _delete(e: Event) {\n const record = (e.target as Element).parentElement\n\n const dataName = record!.querySelector('[data-name]') as HTMLInputElement\n dataName.name = ''\n\n this._build()\n }\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license Copyright © HatioLab Inc. All rights reserved.
3
3
  */
4
- import '@material/mwc-icon';
4
+ import '@material/web/icon/icon.js';
5
5
  import '@operato/popup/ox-popup-list.js';
6
6
  import { PropertyValues } from 'lit';
7
7
  import { OxFormField } from './ox-form-field.js';
@@ -10,7 +10,7 @@ export declare class Select extends OxFormField {
10
10
  name: string;
11
11
  placeholder: string;
12
12
  label: string | string[];
13
- render(): import("lit").TemplateResult<1>;
13
+ render(): import("lit-html").TemplateResult<1>;
14
14
  connectedCallback(): void;
15
15
  updated(changes: PropertyValues<this>): Promise<void>;
16
16
  expand(): void;