q2-tecton-elements 1.15.1 → 1.16.0

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 (190) hide show
  1. package/dist/cjs/{index-0fec9f3b.js → index-afc50fbb.js} +18 -0
  2. package/dist/cjs/loader.cjs.js +1 -1
  3. package/dist/cjs/q2-avatar.cjs.entry.js +1 -1
  4. package/dist/cjs/{q2-input.cjs.entry.js → q2-badge_2.cjs.entry.js} +77 -18
  5. package/dist/cjs/q2-btn_2.cjs.entry.js +7 -6
  6. package/dist/cjs/q2-calendar.cjs.entry.js +2 -2
  7. package/dist/cjs/q2-card.cjs.entry.js +15 -8
  8. package/dist/cjs/q2-carousel-pane.cjs.entry.js +2 -2
  9. package/dist/cjs/q2-carousel.cjs.entry.js +2 -2
  10. package/dist/cjs/q2-chart-donut.cjs.entry.js +2 -2
  11. package/dist/cjs/q2-checkbox-group.cjs.entry.js +2 -2
  12. package/dist/cjs/q2-checkbox.cjs.entry.js +3 -3
  13. package/dist/cjs/q2-dropdown-item.cjs.entry.js +2 -2
  14. package/dist/cjs/q2-dropdown.cjs.entry.js +2 -2
  15. package/dist/cjs/q2-editable-field.cjs.entry.js +2 -2
  16. package/dist/cjs/q2-icon.cjs.entry.js +2 -2
  17. package/dist/cjs/q2-loc.cjs.entry.js +2 -2
  18. package/dist/cjs/q2-message.cjs.entry.js +2 -2
  19. package/dist/cjs/q2-optgroup.cjs.entry.js +2 -2
  20. package/dist/cjs/q2-option-list.cjs.entry.js +2 -2
  21. package/dist/cjs/q2-option.cjs.entry.js +12 -1
  22. package/dist/cjs/q2-pagination.cjs.entry.js +2 -2
  23. package/dist/cjs/q2-pill.cjs.entry.js +2 -2
  24. package/dist/cjs/q2-radio-group.cjs.entry.js +2 -2
  25. package/dist/cjs/q2-radio.cjs.entry.js +2 -2
  26. package/dist/cjs/q2-section.cjs.entry.js +2 -2
  27. package/dist/cjs/q2-select.cjs.entry.js +298 -199
  28. package/dist/cjs/q2-stepper-pane.cjs.entry.js +2 -2
  29. package/dist/cjs/q2-stepper-vertical.cjs.entry.js +3 -2
  30. package/dist/cjs/q2-stepper.cjs.entry.js +2 -2
  31. package/dist/cjs/q2-tab-container.cjs.entry.js +2 -2
  32. package/dist/cjs/q2-tab-pane.cjs.entry.js +1 -1
  33. package/dist/cjs/q2-tag.cjs.entry.js +2 -2
  34. package/dist/cjs/q2-tecton-elements.cjs.js +1 -1
  35. package/dist/cjs/q2-textarea.cjs.entry.js +2 -2
  36. package/dist/cjs/q2-tooltip.cjs.entry.js +33 -0
  37. package/dist/cjs/tecton-tab-pane.cjs.entry.js +1 -1
  38. package/dist/collection/collection-manifest.json +1 -0
  39. package/dist/collection/components/q2-avatar/styles.css +1 -1
  40. package/dist/collection/components/q2-badge/index.js +4 -7
  41. package/dist/collection/components/q2-badge/styles.css +19 -12
  42. package/dist/collection/components/q2-btn/index.js +7 -6
  43. package/dist/collection/components/q2-btn/styles.css +10 -12
  44. package/dist/collection/components/q2-calendar/styles.css +7 -7
  45. package/dist/collection/components/q2-card/index.js +33 -8
  46. package/dist/collection/components/q2-card/styles.css +33 -36
  47. package/dist/collection/components/q2-carousel/styles.css +1 -1
  48. package/dist/collection/components/q2-carousel-pane/styles.css +1 -1
  49. package/dist/collection/components/q2-chart-donut/styles.css +3 -2
  50. package/dist/collection/components/q2-checkbox/index.js +1 -1
  51. package/dist/collection/components/q2-checkbox/styles.css +2 -2
  52. package/dist/collection/components/q2-checkbox-group/styles.css +3 -3
  53. package/dist/collection/components/q2-dropdown/styles.css +6 -6
  54. package/dist/collection/components/q2-dropdown-item/styles.css +3 -3
  55. package/dist/collection/components/q2-editable-field/styles.css +4 -4
  56. package/dist/collection/components/q2-icon/styles.css +1 -1
  57. package/dist/collection/components/q2-input/index.js +90 -23
  58. package/dist/collection/components/q2-input/styles.css +33 -26
  59. package/dist/collection/components/q2-loading/styles.css +4 -4
  60. package/dist/collection/components/q2-loc/styles.css +1 -1
  61. package/dist/collection/components/q2-message/styles.css +19 -17
  62. package/dist/collection/components/q2-optgroup/styles.css +7 -11
  63. package/dist/collection/components/q2-option/index.js +15 -3
  64. package/dist/collection/components/q2-option/styles.css +12 -5
  65. package/dist/collection/components/q2-option-list/styles.css +5 -5
  66. package/dist/collection/components/q2-pagination/styles.css +1 -1
  67. package/dist/collection/components/q2-pill/styles.css +18 -17
  68. package/dist/collection/components/q2-radio/styles.css +2 -2
  69. package/dist/collection/components/q2-radio-group/styles.css +3 -3
  70. package/dist/collection/components/q2-section/styles.css +6 -6
  71. package/dist/collection/components/q2-select/index.js +314 -206
  72. package/dist/collection/components/q2-select/styles.css +24 -13
  73. package/dist/collection/components/q2-stepper/styles.css +19 -13
  74. package/dist/collection/components/q2-stepper-pane/styles.css +1 -1
  75. package/dist/collection/components/q2-stepper-vertical/index.js +1 -0
  76. package/dist/collection/components/q2-stepper-vertical/styles.css +14 -14
  77. package/dist/collection/components/q2-tab-container/styles.css +7 -7
  78. package/dist/collection/components/q2-tab-pane/styles.css +1 -1
  79. package/dist/collection/components/q2-tag/styles.css +4 -6
  80. package/dist/collection/components/q2-textarea/styles.css +2 -2
  81. package/dist/collection/components/q2-tooltip/index.js +120 -0
  82. package/dist/collection/components/q2-tooltip/styles.css +276 -0
  83. package/dist/collection/components/tecton-tab-pane/styles.css +1 -1
  84. package/dist/collection/utils/index.js +18 -2
  85. package/dist/esm/{index-14e81efa.js → index-2ca8c93c.js} +18 -2
  86. package/dist/esm/loader.js +1 -1
  87. package/dist/esm/q2-avatar.entry.js +1 -1
  88. package/dist/esm/{q2-input.entry.js → q2-badge_2.entry.js} +78 -20
  89. package/dist/esm/q2-btn_2.entry.js +7 -6
  90. package/dist/esm/q2-calendar.entry.js +2 -2
  91. package/dist/esm/q2-card.entry.js +15 -8
  92. package/dist/esm/q2-carousel-pane.entry.js +2 -2
  93. package/dist/esm/q2-carousel.entry.js +2 -2
  94. package/dist/esm/q2-chart-donut.entry.js +2 -2
  95. package/dist/esm/q2-checkbox-group.entry.js +2 -2
  96. package/dist/esm/q2-checkbox.entry.js +3 -3
  97. package/dist/esm/q2-dropdown-item.entry.js +2 -2
  98. package/dist/esm/q2-dropdown.entry.js +2 -2
  99. package/dist/esm/q2-editable-field.entry.js +2 -2
  100. package/dist/esm/q2-icon.entry.js +2 -2
  101. package/dist/esm/q2-loc.entry.js +2 -2
  102. package/dist/esm/q2-message.entry.js +2 -2
  103. package/dist/esm/q2-optgroup.entry.js +2 -2
  104. package/dist/esm/q2-option-list.entry.js +2 -2
  105. package/dist/esm/q2-option.entry.js +12 -1
  106. package/dist/esm/q2-pagination.entry.js +2 -2
  107. package/dist/esm/q2-pill.entry.js +2 -2
  108. package/dist/esm/q2-radio-group.entry.js +2 -2
  109. package/dist/esm/q2-radio.entry.js +2 -2
  110. package/dist/esm/q2-section.entry.js +2 -2
  111. package/dist/esm/q2-select.entry.js +298 -199
  112. package/dist/esm/q2-stepper-pane.entry.js +2 -2
  113. package/dist/esm/q2-stepper-vertical.entry.js +3 -2
  114. package/dist/esm/q2-stepper.entry.js +2 -2
  115. package/dist/esm/q2-tab-container.entry.js +2 -2
  116. package/dist/esm/q2-tab-pane.entry.js +1 -1
  117. package/dist/esm/q2-tag.entry.js +2 -2
  118. package/dist/esm/q2-tecton-elements.js +1 -1
  119. package/dist/esm/q2-textarea.entry.js +2 -2
  120. package/dist/esm/q2-tooltip.entry.js +29 -0
  121. package/dist/esm/tecton-tab-pane.entry.js +1 -1
  122. package/dist/q2-tecton-elements/{p-77263ed4.entry.js → p-0a8b8d14.entry.js} +1 -1
  123. package/dist/q2-tecton-elements/p-0b5fbbe8.entry.js +1 -0
  124. package/dist/q2-tecton-elements/p-0d00030f.entry.js +1 -0
  125. package/dist/q2-tecton-elements/{p-85cff6ec.entry.js → p-0e9c7220.entry.js} +1 -1
  126. package/dist/q2-tecton-elements/p-1b0f826e.entry.js +1 -0
  127. package/dist/q2-tecton-elements/p-1c430c2a.entry.js +1 -0
  128. package/dist/q2-tecton-elements/p-2d2008fd.entry.js +1 -0
  129. package/dist/q2-tecton-elements/p-34f99830.entry.js +1 -0
  130. package/dist/q2-tecton-elements/{p-ead64414.entry.js → p-35bde69c.entry.js} +1 -1
  131. package/dist/q2-tecton-elements/{p-d46efe36.entry.js → p-376988ef.entry.js} +1 -1
  132. package/dist/q2-tecton-elements/p-41fcf343.js +1 -0
  133. package/dist/q2-tecton-elements/p-49612230.entry.js +1 -0
  134. package/dist/q2-tecton-elements/{p-e3406026.entry.js → p-4b48fde6.entry.js} +1 -1
  135. package/dist/q2-tecton-elements/p-4ec2cb69.entry.js +1 -0
  136. package/dist/q2-tecton-elements/{p-ea2a290e.entry.js → p-5270b0ff.entry.js} +1 -1
  137. package/dist/q2-tecton-elements/{p-dc1ef3fa.entry.js → p-5e990654.entry.js} +1 -1
  138. package/dist/q2-tecton-elements/{p-60400f59.entry.js → p-60a7a11e.entry.js} +1 -1
  139. package/dist/q2-tecton-elements/p-677faf2c.entry.js +1 -0
  140. package/dist/q2-tecton-elements/p-6e10db80.entry.js +1 -0
  141. package/dist/q2-tecton-elements/p-6f884c60.entry.js +1 -0
  142. package/dist/q2-tecton-elements/{p-991d7d22.entry.js → p-822d3d6c.entry.js} +1 -1
  143. package/dist/q2-tecton-elements/p-8584c6bc.entry.js +1 -0
  144. package/dist/q2-tecton-elements/p-87766054.entry.js +1 -0
  145. package/dist/q2-tecton-elements/{p-b0dc920c.entry.js → p-879aa7ac.entry.js} +2 -2
  146. package/dist/q2-tecton-elements/p-92e9f290.entry.js +1 -0
  147. package/dist/q2-tecton-elements/{p-627df469.entry.js → p-b6c45ef6.entry.js} +1 -1
  148. package/dist/q2-tecton-elements/{p-cf9e8120.entry.js → p-b7dc4e93.entry.js} +1 -1
  149. package/dist/q2-tecton-elements/p-c59d601e.entry.js +1 -0
  150. package/dist/q2-tecton-elements/p-d040bf99.entry.js +1 -0
  151. package/dist/q2-tecton-elements/p-d79386c6.entry.js +1 -0
  152. package/dist/q2-tecton-elements/{p-fbfb3615.entry.js → p-dd3f64a7.entry.js} +1 -1
  153. package/dist/q2-tecton-elements/{p-58e42fc5.entry.js → p-dd792081.entry.js} +1 -1
  154. package/dist/q2-tecton-elements/p-ef2f68b2.entry.js +1 -0
  155. package/dist/q2-tecton-elements/{p-9b2bc894.entry.js → p-f617c54a.entry.js} +1 -1
  156. package/dist/q2-tecton-elements/p-f66adef0.entry.js +1 -0
  157. package/dist/q2-tecton-elements/q2-tecton-elements.esm.js +1 -1
  158. package/dist/types/components/q2-badge/index.d.ts +0 -1
  159. package/dist/types/components/q2-card/index.d.ts +1 -0
  160. package/dist/types/components/q2-input/index.d.ts +6 -2
  161. package/dist/types/components/q2-option/index.d.ts +2 -0
  162. package/dist/types/components/q2-select/index.d.ts +37 -24
  163. package/dist/types/components/q2-tooltip/index.d.ts +10 -0
  164. package/dist/types/components.d.ts +29 -0
  165. package/dist/types/utils/index.d.ts +3 -1
  166. package/dist/types/workspace/workspace/{tecton-production_release_1.15.x → Tecton_tecton-production_master}/packages/q2-tecton-elements/.stencil/test/elements/q2-tag-test.d.ts +0 -0
  167. package/dist/types/workspace/workspace/{tecton-production_release_1.15.x → Tecton_tecton-production_master}/packages/q2-tecton-elements/.stencil/test/helpers.d.ts +0 -0
  168. package/package.json +2 -2
  169. package/dist/cjs/q2-badge.cjs.entry.js +0 -41
  170. package/dist/esm/q2-badge.entry.js +0 -37
  171. package/dist/q2-tecton-elements/p-0e13d5ba.entry.js +0 -1
  172. package/dist/q2-tecton-elements/p-1b3c4cb2.entry.js +0 -1
  173. package/dist/q2-tecton-elements/p-2f13d873.entry.js +0 -1
  174. package/dist/q2-tecton-elements/p-37f1984c.entry.js +0 -1
  175. package/dist/q2-tecton-elements/p-3cfc0cb4.entry.js +0 -1
  176. package/dist/q2-tecton-elements/p-431bf43e.js +0 -1
  177. package/dist/q2-tecton-elements/p-50615a56.entry.js +0 -1
  178. package/dist/q2-tecton-elements/p-663cb6e8.entry.js +0 -1
  179. package/dist/q2-tecton-elements/p-6ced7858.entry.js +0 -1
  180. package/dist/q2-tecton-elements/p-704d7f41.entry.js +0 -1
  181. package/dist/q2-tecton-elements/p-7249de38.entry.js +0 -1
  182. package/dist/q2-tecton-elements/p-8a8c6374.entry.js +0 -1
  183. package/dist/q2-tecton-elements/p-8f815678.entry.js +0 -1
  184. package/dist/q2-tecton-elements/p-9af46ffc.entry.js +0 -1
  185. package/dist/q2-tecton-elements/p-9d8a963b.entry.js +0 -1
  186. package/dist/q2-tecton-elements/p-bd6c6239.entry.js +0 -1
  187. package/dist/q2-tecton-elements/p-c4eff511.entry.js +0 -1
  188. package/dist/q2-tecton-elements/p-d5ecb3ba.entry.js +0 -1
  189. package/dist/q2-tecton-elements/p-e0ddf788.entry.js +0 -1
  190. package/dist/q2-tecton-elements/p-e435159b.entry.js +0 -1
@@ -1,4 +1,4 @@
1
- import { Component, Prop, Element, State, Event, h, Watch, Listen } from '@stencil/core';
1
+ import { Component, Prop, Element, State, Event, h, Watch, Listen, Fragment } from '@stencil/core';
2
2
  import { createGuid, labelDOM, loc, messagesDOM, setMessageHeight, handleAriaLabel, overrideFocus, isEventFromElement, } from 'src/utils';
3
3
  import formatCurrency from './formatting/currency';
4
4
  import formatPhoneNumber from './formatting/phone';
@@ -150,17 +150,32 @@ export class Q2Input {
150
150
  return maskedTypes.includes(this.type);
151
151
  }
152
152
  get wrapperClasses() {
153
- const errorClass = this.hasError ? ' has-error' : '';
154
- const valueClass = !!this.value ? ' has-value' : '';
155
- const clearClass = this.clearable && !!this.value ? ' has-clear' : '';
156
- const focusClass = this.hasFocus ? ' has-focus' : '';
157
- const prefixClass = this.formattedValueObject.prefix ? ' has-prefix' : '';
158
- const iconLeftClass = this.computedIconLeft ? ' has-icon-left' : '';
159
- const iconSeparatorClass = this.showIconSeperator ? ' has-icon-separator' : '';
160
- const suffixClass = this.formattedValueObject.suffix ? ' has-suffix' : '';
161
- const iconRightClass = !this.formattedValueObject.suffix && this.iconRight ? ' has-icon-right' : '';
162
- const alignmentClass = this.type === 'currency' ? ' right-aligned' : ' left-aligned';
163
- return `field-container${errorClass}${valueClass}${clearClass}${focusClass}${prefixClass}${iconLeftClass}${iconSeparatorClass}${suffixClass}${iconRightClass}${alignmentClass}`;
153
+ const classNames = ['field-container'];
154
+ if (this.hasError)
155
+ classNames.push('has-error');
156
+ if (!!this.value)
157
+ classNames.push('has-value');
158
+ if (this.clearable && !!this.value)
159
+ classNames.push('has-clear');
160
+ if (this.hasFocus)
161
+ classNames.push('has-focus');
162
+ if (this.formattedValueObject.prefix)
163
+ classNames.push('has-prefix');
164
+ if (this.computedIconLeft)
165
+ classNames.push('has-icon-left');
166
+ if (this.showIconSeparator)
167
+ classNames.push('has-icon-separator');
168
+ if (this.formattedValueObject.suffix)
169
+ classNames.push('has-suffix');
170
+ if (!this.formattedValueObject.suffix && this.iconRight)
171
+ classNames.push('has-icon-right');
172
+ if (this.type === 'currency')
173
+ classNames.push('right-aligned');
174
+ else
175
+ classNames.push('left-aligned');
176
+ if (this.hasCustomDisplaySlot)
177
+ classNames.push('has-custom-display');
178
+ return classNames.join(' ');
164
179
  }
165
180
  get computedType() {
166
181
  const inputTypeMap = {
@@ -201,7 +216,7 @@ export class Q2Input {
201
216
  }
202
217
  return this.iconLeft;
203
218
  }
204
- get showIconSeperator() {
219
+ get showIconSeparator() {
205
220
  return this.type === 'credit-card' || !!this.formattedValueObject.prefix;
206
221
  }
207
222
  get computedClassForIconLeft() {
@@ -277,27 +292,43 @@ export class Q2Input {
277
292
  render() {
278
293
  return (h("div", { class: this.wrapperClasses },
279
294
  labelDOM(this),
280
- this.inputDOM(),
295
+ this.inputContainerDOM(),
281
296
  messagesDOM(this)));
282
297
  }
298
+ get hasCustomDisplaySlot() {
299
+ return !!this.hostElement.querySelector('[slot=custom-display]');
300
+ }
283
301
  /* tslint:disable:cyclomatic-complexity */
284
- inputDOM() {
302
+ inputContainerDOM() {
285
303
  return (h("div", { class: "input-container" },
286
304
  h("div", { class: "input-icons-container-left" },
287
305
  this.formattedValueObject.prefix && (h("span", { class: "input-prefix" }, this.formattedValueObject.prefix)),
288
306
  this.computedIconLeft && (h("q2-icon", { type: this.computedIconLeft, class: this.computedClassForIconLeft })),
289
- this.showIconSeperator && h("div", { class: "vertical-separator" }),
307
+ this.showIconSeparator && h("div", { class: "vertical-separator" }),
290
308
  this.hasError && this.type === 'currency' && (h("q2-icon", { type: "error", class: "icon-error" }))),
291
- this.pseudo ? (this.pseudoInputDOM()) : (h("input", { class: "input-field", id: this.inputId, type: this.computedType, size: this.formattedValueObject.prefix ? 10 : undefined, max: this.max, min: this.min, step: this.step, "aria-current": this.current || undefined, "aria-describedby": this.inputDescribedBy, "aria-required": `${!this.optional}`, "aria-invalid": `${this.hasError}`, "aria-controls": (this.ariaControls && `${this.ariaControls}`) || undefined, "aria-owns": (this.ariaOwns && `${this.ariaOwns}`) || undefined, "aria-haspopup": (this.ariaHaspopup && `${this.ariaHaspopup}`) || undefined, "aria-expanded": (!!this.ariaExpanded && `${!!this.ariaExpanded}`) || undefined, "aria-activedescendant": this.ariaActivedescendant && `${this.ariaActivedescendant}`, "aria-label": this.hideLabel && this.label ? loc(this.label) : undefined, autocomplete: this.autocomplete ? this.autocomplete : 'off', autocapitalize: this.autocapitalize === 'on' ? 'on' : 'off', autocorrect: this.autocorrect === 'on' ? 'on' : 'off', placeholder: (this.placeholder && loc(this.placeholder)) || undefined, role: (this.role && `${this.role}`) || undefined, "test-id": "inputField", readonly: !!this.readonly, disabled: !!this.disabled, onFocus: this.onInputFocus, onBlur: this.onInputBlur, onKeyDown: this.onInputKeydown, onInput: this.onInputInput, onPaste: this.onInputPaste })),
309
+ this.pseudo ? this.pseudoInputDOM() : this.standardInputDOM(),
292
310
  h("div", { class: "input-icons-container-right" },
293
311
  this.canClear && (h("q2-btn", { class: "btn-clear", ariaLabel: loc('tecton.element.input.clear', [this.label]), "test-id": "clearButton", onClick: this.onClearInput },
294
312
  h("q2-icon", { type: "close", class: "icon-clear" }))),
295
313
  ['password', 'text'].includes(this.type) && this.showVisibilityToggle && (h("q2-btn", { class: "btn-visibility-toggle", "test-id": "toggleVisibilityButton", onClick: this.onToggleVisibility }, this.visibilityToggleText)),
296
314
  this.formattedValueObject.suffix && (h("span", { class: "input-suffix" }, this.formattedValueObject.suffix)),
315
+ this.badgeValue && (h("q2-badge", { size: "large", theme: this.badgeTheme }, this.badgeValue)),
297
316
  this.iconRight && !this.formattedValueObject.suffix && (h("q2-icon", { type: this.iconRight, class: "icon-right" })),
298
317
  this.hasError && this.type !== 'currency' && (h("q2-icon", { type: "error", class: "icon-error" })))));
299
318
  }
300
319
  /* tslint:enable:cyclomatic-complexity */
320
+ /* tslint:disable:cyclomatic-complexity */
321
+ standardInputDOM() {
322
+ const { hasCustomDisplaySlot } = this;
323
+ const inputClasses = ['input-field'];
324
+ if (hasCustomDisplaySlot)
325
+ inputClasses.push('sr');
326
+ return (h(Fragment, null,
327
+ hasCustomDisplaySlot && (h("div", { class: "custom-display-container" },
328
+ h("slot", { name: "custom-display" }))),
329
+ h("input", { class: inputClasses.join(' '), id: this.inputId, type: this.computedType, size: this.formattedValueObject.prefix ? 10 : undefined, max: this.max, min: this.min, step: this.step, "aria-current": this.current || undefined, "aria-describedby": this.inputDescribedBy, "aria-required": `${!this.optional}`, "aria-invalid": `${this.hasError}`, "aria-controls": (this.ariaControls && `${this.ariaControls}`) || undefined, "aria-owns": (this.ariaOwns && `${this.ariaOwns}`) || undefined, "aria-haspopup": (this.ariaHaspopup && `${this.ariaHaspopup}`) || undefined, "aria-expanded": (!!this.ariaExpanded && `${!!this.ariaExpanded}`) || undefined, "aria-activedescendant": this.ariaActivedescendant && `${this.ariaActivedescendant}`, "aria-label": this.hideLabel && this.label ? loc(this.label) : undefined, autocomplete: this.autocomplete ? this.autocomplete : 'off', autocapitalize: this.autocapitalize === 'on' ? 'on' : 'off', autocorrect: this.autocorrect === 'on' ? 'on' : 'off', placeholder: (this.placeholder && loc(this.placeholder)) || undefined, role: (this.role && `${this.role}`) || undefined, "test-id": "inputField", readonly: !!this.readonly, disabled: !!this.disabled, onFocus: this.onInputFocus, onBlur: this.onInputBlur, onKeyDown: this.onInputKeydown, onInput: this.onInputInput, onPaste: this.onInputPaste })));
330
+ }
331
+ /* tslint:enable:cyclomatic-complexity */
301
332
  pseudoInputDOM() {
302
333
  const showPlaceholder = !this.value && !!this.placeholder;
303
334
  let ariaLabelSuffix = '';
@@ -307,9 +338,11 @@ export class Q2Input {
307
338
  if (this.readonly) {
308
339
  ariaLabelSuffix = loc('tecton.element.input.readonly');
309
340
  }
310
- return (h("div", { class: "pseudo-input" },
311
- h("button", { class: "input-field", type: "button", id: this.inputId, "aria-describedby": this.inputDescribedBy, "aria-required": `${!this.optional}`, "aria-invalid": `${this.hasError}`, "aria-controls": (this.ariaControls && `${this.ariaControls}`) || undefined, "aria-owns": (this.ariaOwns && `${this.ariaOwns}`) || undefined, "aria-haspopup": (this.ariaHaspopup && `${this.ariaHaspopup}`) || undefined, "aria-expanded": (!!this.ariaExpanded && `${!!this.ariaExpanded}`) || undefined, "aria-activedescendant": this.ariaActivedescendant && `${this.ariaActivedescendant}`, "aria-label": `${this.value}, ${(this.label && loc(this.label)) || ''}${ariaLabelSuffix}`, role: (this.role && `${this.role}`) || undefined, disabled: !!this.disabled, "test-id": "q2InputInnerClearButton" },
312
- h("span", { class: showPlaceholder ? 'placeholder-text' : '' }, showPlaceholder ? this.placeholder : this.value))));
341
+ return (h("div", { class: "pseudo-input-container" },
342
+ h("button", { class: "input-field", type: "button", id: this.inputId, "aria-describedby": this.inputDescribedBy, "aria-required": `${!this.optional}`, "aria-invalid": `${this.hasError}`, "aria-controls": (this.ariaControls && `${this.ariaControls}`) || undefined, "aria-owns": (this.ariaOwns && `${this.ariaOwns}`) || undefined, "aria-haspopup": (this.ariaHaspopup && `${this.ariaHaspopup}`) || undefined, "aria-expanded": this.ariaExpanded === 'true' ? 'true' : undefined, "aria-activedescendant": this.ariaActivedescendant && `${this.ariaActivedescendant}`, "aria-label": `${this.value}, ${(this.label && loc(this.label)) || ''}${ariaLabelSuffix}`, role: (this.role && `${this.role}`) || undefined, disabled: !!this.disabled, "test-id": "q2InputInnerClearButton" },
343
+ h("div", { class: "custom-display-container" },
344
+ h("slot", { name: "custom-display" },
345
+ h("span", { class: showPlaceholder ? 'placeholder-text' : '' }, showPlaceholder ? this.placeholder : this.value))))));
313
346
  }
314
347
  calculateCursorPositionOnInput() {
315
348
  const input = this.inputField;
@@ -377,7 +410,7 @@ export class Q2Input {
377
410
  },
378
411
  "label": {
379
412
  "type": "string",
380
- "mutable": false,
413
+ "mutable": true,
381
414
  "complexType": {
382
415
  "original": "string",
383
416
  "resolved": "string",
@@ -394,7 +427,7 @@ export class Q2Input {
394
427
  },
395
428
  "hideLabel": {
396
429
  "type": "boolean",
397
- "mutable": false,
430
+ "mutable": true,
398
431
  "complexType": {
399
432
  "original": "boolean",
400
433
  "resolved": "boolean",
@@ -752,6 +785,40 @@ export class Q2Input {
752
785
  "attribute": "text-hidden",
753
786
  "reflect": true
754
787
  },
788
+ "badgeValue": {
789
+ "type": "string",
790
+ "mutable": false,
791
+ "complexType": {
792
+ "original": "string",
793
+ "resolved": "string",
794
+ "references": {}
795
+ },
796
+ "required": false,
797
+ "optional": false,
798
+ "docs": {
799
+ "tags": [],
800
+ "text": ""
801
+ },
802
+ "attribute": "badge-value",
803
+ "reflect": true
804
+ },
805
+ "badgeTheme": {
806
+ "type": "string",
807
+ "mutable": false,
808
+ "complexType": {
809
+ "original": "'primary' | 'secondary' | 'tertiary'",
810
+ "resolved": "\"primary\" | \"secondary\" | \"tertiary\"",
811
+ "references": {}
812
+ },
813
+ "required": false,
814
+ "optional": false,
815
+ "docs": {
816
+ "tags": [],
817
+ "text": ""
818
+ },
819
+ "attribute": "badge-theme",
820
+ "reflect": true
821
+ },
755
822
  "ariaControls": {
756
823
  "type": "string",
757
824
  "mutable": false,
@@ -805,7 +872,7 @@ export class Q2Input {
805
872
  },
806
873
  "ariaLabel": {
807
874
  "type": "string",
808
- "mutable": false,
875
+ "mutable": true,
809
876
  "complexType": {
810
877
  "original": "string",
811
878
  "resolved": "string",
@@ -8,7 +8,7 @@
8
8
 
9
9
  *:focus {
10
10
  outline: none;
11
- box-shadow: var(--const-global-focus);
11
+ box-shadow: var(--const-global-focus, 0 0 0 2px #33b4ff);
12
12
  }
13
13
 
14
14
  :host {
@@ -89,7 +89,7 @@ label {
89
89
  padding-left: var(--tct-input-label-padding-left, var(--t-input-label-padding-left, 0));
90
90
  padding-right: var(--tct-input-label-padding-right, var(--t-input-label-padding-right, 0));
91
91
  margin-top: var(--tct-input-label-margin-top, var(--t-input-label-margin-top, 0));
92
- margin-bottom: var(--tct-input-label-margin-bottom, var(--t-input-label-margin-bottom, var(--tct-scale-1, var(--app-scale-1, 5px))));
92
+ margin-bottom: var(--tct-input-label-margin-bottom, var(--t-input-label-margin-bottom, var(--tct-scale-1, var(--app-scale-1x, 5px))));
93
93
  color: var(--tct-input-label-font-color, var(--t-input-label-font-color, inherit));
94
94
  font-size: var(--tct-input-label-font-size, var(--t-input-label-font-size, inherit));
95
95
  font-weight: var(--tct-input-label-font-weight, var(--t-input-label-font-weight, 600));
@@ -99,14 +99,14 @@ label {
99
99
  }
100
100
 
101
101
  .optional-tag {
102
- margin-left: var(--tct-input-label-optional-margin-left, var(--t-input-label-optional-margin-left, var(--tct-scale-1, var(--app-scale-1, 5px))));
102
+ margin-left: var(--tct-input-label-optional-margin-left, var(--t-input-label-optional-margin-left, var(--tct-scale-1, var(--app-scale-1x, 5px))));
103
103
  color: var(--tct-input-label-optional-font-color, var(--t-input-label-optional-font-color, var(--t-textA, var(--t-a11y-gray-color, rgba(77, 77, 77, 0.77)))));
104
104
  font-size: var(--tct-input-label-optional-font-size, var(--t-input-label-optional-font-size, 12px));
105
105
  font-weight: var(--tct-input-label-optional-font-weight, var(--t-input-label-optional-font-weight, 400));
106
106
  }
107
107
 
108
108
  .input-container {
109
- background-color: var(--tct-input-bg, var(--t-input-bg, var(--tct-gray-14, var(--t-gray-14, #f2f2f2))));
109
+ background-color: var(--tct-input-bg, var(--t-input-bg, var(--t-gray-14, #fcfcfd)));
110
110
  display: flex;
111
111
  align-items: center;
112
112
  --comp-input-horizontal-gap: var(--tct-input-horizontal-gap, var(--t-input-horizontal-gap, 8px));
@@ -114,21 +114,17 @@ label {
114
114
  --comp-input-border-top-right-radius: var(--tct-input-border-top-right-radius, var(--t-input-border-top-right-radius, var(--tct-border-radius-1, var(--app-border-radius-1, 3px))));
115
115
  --comp-input-border-bottom-right-radius: var(--tct-input-border-bottom-right-radius, var(--t-input-border-bottom-right-radius, var(--tct-border-radius-1, var(--app-border-radius-1, 3px))));
116
116
  --comp-input-border-bottom-left-radius: var(--tct-input-border-bottom-left-radius, var(--t-input-border-bottom-left-radius, var(--tct-border-radius-1, var(--app-border-radius-1, 3px))));
117
- --comp-input-border-radius: var(--comp-input-border-top-left-radius)
118
- var(--comp-input-border-top-right-radius) var(--comp-input-border-bottom-right-radius)
119
- var(--comp-input-border-bottom-left-radius);
120
- --comp-input-border-width: var(--tct-input-border-top-width, 1px)
121
- var(--tct-input-border-right-width, 1px) var(--tct-input-border-bottom-width, 1px)
122
- var(--tct-input-border-left-width, 1px);
117
+ --comp-input-border-radius: var(--comp-input-border-top-left-radius) var(--comp-input-border-top-right-radius)
118
+ var(--comp-input-border-bottom-right-radius) var(--comp-input-border-bottom-left-radius);
119
+ --comp-input-border-width: var(--tct-input-border-top-width, 1px) var(--tct-input-border-right-width, 1px)
120
+ var(--tct-input-border-bottom-width, 1px) var(--tct-input-border-left-width, 1px);
123
121
  --comp-input-focus-border-width: var(--tct-input-focus-border-top-width, 1px)
124
- var(--tct-input-focus-border-right-width, 1px)
125
- var(--tct-input-focus-border-bottom-width, 1px)
122
+ var(--tct-input-focus-border-right-width, 1px) var(--tct-input-focus-border-bottom-width, 1px)
126
123
  var(--tct-input-focus-border-left-width, 1px);
127
- --comp-input-prefix-clearance: calc(
128
- 3 * var(--tct-input-prefix-font-size, 14px) + var(--tct-scale-1, 5px)
129
- );
124
+ --comp-input-prefix-clearance: calc(3 * var(--tct-input-prefix-font-size, 14px) + var(--tct-scale-1, 5px));
130
125
  --comp-input-icon-clearance: 34px;
131
- --comp-input-min-height: var(--tct-input-min-height, 44px);
126
+ --comp-input-min-height: var(--tct-input-min-height, var(--t-input-min-height, 44px));
127
+ --comp-input-max-height: var(--tct-input-max-height, var(--t-input-max-height));
132
128
  border-width: var(--comp-input-border-width);
133
129
  border-style: solid;
134
130
  border-color: var(--tct-input-border-color, var(--t-input-border-color, var(--tct-gray-11, var(--t-gray-11, #cccccc))));
@@ -148,9 +144,11 @@ label {
148
144
  appearance: none;
149
145
  box-sizing: border-box;
150
146
  min-height: var(--comp-input-min-height);
147
+ max-height: var(--comp-input-max-height);
148
+ overflow-y: hidden;
151
149
  height: var(--tct-input-height, var(--t-input-height, 44px));
152
150
  width: 100%;
153
- padding: 0 var(--tct-input-horizontal-padding, var(--t-input-horizontal-padding, var(--tct-scale-2, var(--app-scale-2, 10px))));
151
+ padding: 0 var(--tct-input-horizontal-padding, var(--t-input-horizontal-padding, var(--tct-scale-2, var(--app-scale-2x, 10px))));
154
152
  background-color: transparent;
155
153
  color: var(--tct-input-font-color, var(--t-input-font-color, var(--t-text, inherit)));
156
154
  display: inline-block;
@@ -188,6 +186,21 @@ label {
188
186
  display: inline-flex;
189
187
  align-items: center;
190
188
  }
189
+ .has-custom-display .input-field:is(button) {
190
+ height: auto;
191
+ padding: 0;
192
+ }
193
+ .input-field:is(button) span {
194
+ white-space: nowrap;
195
+ overflow: hidden;
196
+ text-overflow: ellipsis;
197
+ }
198
+
199
+ .has-custom-display .custom-display-container {
200
+ --comp-default-padding: var(--app-scale-2x, 10px) var(--app-scale-2x, 10px) var(--app-scale-3x, 15px);
201
+ padding: var(--tct-input-padding, var(--t-input-padding, var(--comp-default-padding)));
202
+ width: 100%;
203
+ }
191
204
 
192
205
  .input-container:focus-within {
193
206
  border-width: var(--comp-input-focus-border-width, 1px);
@@ -200,15 +213,10 @@ label {
200
213
  color: var(--tct-input-placeholder-font-color, var(--t-input-placeholder-font-color, var(--t-textA, var(--app-gray-d1, rgba(77, 77, 77, 0.77)))));
201
214
  }
202
215
 
203
- .pseudo-input {
216
+ .pseudo-input-container {
204
217
  min-width: 0;
205
218
  flex: 1;
206
219
  }
207
- .pseudo-input span {
208
- white-space: nowrap;
209
- overflow: hidden;
210
- text-overflow: ellipsis;
211
- }
212
220
 
213
221
  .input-icons-container-left,
214
222
  .input-icons-container-right {
@@ -255,8 +263,7 @@ q2-icon {
255
263
  align-items: center;
256
264
  justify-content: center;
257
265
  min-height: calc(
258
- var(--comp-input-min-height) - var(--tct-input-focus-border-top-width, var(--t-input-focus-border-top-width, 1px)) -
259
- var(--tct-input-focus-border-bottom-width, var(--t-input-focus-border-bottom-width, 1px))
266
+ var(--comp-input-min-height) - var(--tct-input-focus-border-top-width, var(--t-input-focus-border-top-width, 1px)) - var(--tct-input-focus-border-bottom-width, var(--t-input-focus-border-bottom-width, 1px))
260
267
  );
261
268
  height: calc(
262
269
  var(--tct-input-height, var(--t-input-height, 44px)) - var(--tct-input-focus-border-top-width, var(--t-input-focus-border-top-width, 1px)) - var(--tct-input-focus-border-bottom-width, var(--t-input-focus-border-bottom-width, 1px))
@@ -294,7 +301,7 @@ q2-icon {
294
301
 
295
302
  .pw-show {
296
303
  position: absolute;
297
- margin-right: var(--tct-scale-2, var(--app-scale-2, 20px));
304
+ margin-right: var(--tct-scale-2, var(--app-scale-2x, 10px));
298
305
  }
299
306
 
300
307
  .btn-clear {
@@ -8,7 +8,7 @@
8
8
 
9
9
  *:focus {
10
10
  outline: none;
11
- box-shadow: var(--const-global-focus);
11
+ box-shadow: var(--const-global-focus, 0 0 0 2px #33b4ff);
12
12
  }
13
13
 
14
14
  :host {
@@ -102,7 +102,7 @@ button {
102
102
  }
103
103
 
104
104
  :host(:not([inline]):not([modifiers*=inline])) {
105
- font-size: var(--tct-loading-spinner-size, var(--tct-scale-5, var(--app-scale-5, 60px)));
105
+ font-size: var(--tct-loading-spinner-size, var(--t-loading-spinner-size, var(--app-scale-12x, 60px)));
106
106
  }
107
107
 
108
108
  .q2-loading-animation {
@@ -129,12 +129,12 @@ button {
129
129
  }
130
130
 
131
131
  .half-circle-spinner .circle.circle-1 {
132
- border-top-color: var(--tct-loading-primary-color, var(--t-loading-primary-color, #2e2e2e));
132
+ border-top-color: var(--tct-loading-primary-color, var(--t-loading-primary-color, var(--t-primary, #0079c1)));
133
133
  animation: half-circle-spinner-animation 1s infinite;
134
134
  }
135
135
 
136
136
  .half-circle-spinner .circle.circle-2 {
137
- border-bottom-color: var(--tct-loading-secondary-color, var(--t-loading-secondary-color, #cccccc));
137
+ border-bottom-color: var(--tct-loading-secondary-color, var(--t-loading-secondary-color, #9ddd4f));
138
138
  animation: half-circle-spinner-animation 1s infinite alternate;
139
139
  }
140
140
 
@@ -8,7 +8,7 @@
8
8
 
9
9
  *:focus {
10
10
  outline: none;
11
- box-shadow: var(--const-global-focus);
11
+ box-shadow: var(--const-global-focus, 0 0 0 2px #33b4ff);
12
12
  }
13
13
 
14
14
  :host {
@@ -8,7 +8,7 @@
8
8
 
9
9
  *:focus {
10
10
  outline: none;
11
- box-shadow: var(--const-global-focus);
11
+ box-shadow: var(--const-global-focus, 0 0 0 2px #33b4ff);
12
12
  }
13
13
 
14
14
  :host {
@@ -73,10 +73,11 @@ button {
73
73
  }
74
74
 
75
75
  .message {
76
- border-left-width: var(--tct-message-bar-width, var(--t-message-bar-width, var(--app-scale-1, 5px)));
76
+ border-left-width: var(--tct-message-bar-width, var(--t-message-bar-width, var(--app-scale-1x, 5px)));
77
77
  border-left-style: solid;
78
+ --comp-line-height: var(--tct-message-line-height, var(--t-message-line-height, var(--app-line-height, 1.428571429em)));
78
79
  display: grid;
79
- gap: var(--tct-scale-1, var(--app-scale-1, 5px));
80
+ gap: var(--tct-scale-1, var(--app-scale-1x, 5px));
80
81
  align-items: flex-start;
81
82
  background: var(--tct-message-bg, var(--t-message-bg, var(--tct-gray-14, var(--t-gray-14, var(--tct-gray-l3, var(--app-gray-l3, #f2f2f2))))));
82
83
  color: var(--tct-message-font-color, var(--t-message-font-color, inherit));
@@ -88,47 +89,48 @@ button {
88
89
  }
89
90
 
90
91
  .message-icon {
91
- width: 24px;
92
+ --comp-top-offset: calc(calc(var(--comp-line-height) - var(--comp-icon-size)) / 2);
93
+ --tct-icon-size: var(--comp-icon-size);
94
+ top: var(--comp-top-offset);
95
+ margin-bottom: calc(var(--comp-top-offset) * -1);
92
96
  }
93
97
 
94
98
  .message-content {
95
99
  flex: 1;
100
+ line-height: var(--comp-line-height);
96
101
  }
97
102
 
98
103
  ::slotted(ul) {
99
- padding-left: var(--tct-scale-l3, var(--app-scale-3, 15px));
104
+ padding-left: var(--tct-scale-l3, var(--app-scale-3x, 15px));
100
105
  }
101
106
 
102
107
  :host(:not([appearance])),
103
108
  :host([appearance=standard]) {
104
- margin: var(--tct-scale-l3, var(--app-scale-3, 15px)) 0;
109
+ margin: var(--tct-scale-l3, var(--app-scale-3x, 15px)) 0;
105
110
  }
106
111
  :host(:not([appearance])) .message,
107
112
  :host([appearance=standard]) .message {
108
- grid-template-columns: 24px 1fr;
109
- --comp-padding: var(--tct-message-padding, var(--t-message-padding, var(--app-scale-3, 15px)));
113
+ --comp-icon-size: var(--tct-message-icon-size, var(--t-message-icon-size, 24px));
114
+ --comp-padding: var(--tct-message-padding, var(--t-message-padding, var(--app-scale-3x, 15px)));
115
+ grid-template-columns: var(--comp-icon-size) 1fr;
110
116
  padding: var(--comp-padding);
111
- padding-top: calc(var(--comp-padding) - var(--tct-scale-1, var(--app-scale-1, 5px)));
112
- padding-left: calc(var(--comp-padding) - var(--tct-scale-2, var(--app-scale-2, 10px)));
113
- }
114
- :host(:not([appearance])) .message-content,
115
- :host([appearance=standard]) .message-content {
116
- padding-top: var(--tct-scale-1, var(--app-scale-1, 5px));
117
+ padding-left: calc(var(--comp-padding) - var(--tct-scale-2, var(--app-scale-2x, 10px)));
118
+ padding-bottom: calc(var(--comp-padding) - var(--tct-scale-1, var(--app-scale-1x, 5px)));
117
119
  }
118
120
  :host(:not([appearance])) ::slotted(ul),
119
121
  :host([appearance=standard]) ::slotted(ul) {
120
- margin: var(--tct-scale-l3, var(--app-scale-3, 15px)) 0;
122
+ margin: var(--tct-scale-l3, var(--app-scale-3x, 15px)) 0;
121
123
  }
122
124
 
123
125
  :host([appearance=minimal]) {
124
126
  margin: 0;
125
127
  }
126
128
  :host([appearance=minimal]) .message {
127
- padding: var(--tct-message-minimal-padding, var(--t-message-minimal-padding, var(--app-scale-2, 10px)));
129
+ padding: var(--tct-message-minimal-padding, var(--t-message-minimal-padding, var(--app-scale-2x, 10px)));
128
130
  grid-template-columns: 1fr;
129
131
  }
130
132
  :host([appearance=minimal]) ::slotted(ul) {
131
- margin: var(--tct-scale-1, var(--app-scale-1, 5px)) 0;
133
+ margin: var(--tct-scale-1, var(--app-scale-1x, 5px)) 0;
132
134
  }
133
135
 
134
136
  :host(:not([type])) .message,
@@ -8,7 +8,7 @@
8
8
 
9
9
  *:focus {
10
10
  outline: none;
11
- box-shadow: var(--const-global-focus);
11
+ box-shadow: var(--const-global-focus, 0 0 0 2px #33b4ff);
12
12
  }
13
13
 
14
14
  :host {
@@ -69,16 +69,12 @@ button {
69
69
  }
70
70
 
71
71
  .q2-optgroup-header {
72
- background-color: var(--tct-optgroup-header-bg, var(--tct-gray-13, var(--t-gray-13, var(--tct-gray-l2, var(--app-gray-l2, #e6e6e6)))));
73
- padding: var(--tct-scale-1, var(--app-scale-1, 5px)) var(--tct-scale-2, var(--app-scale-2, 10px));
74
- font-weight: var(--tct-optgroup-header-font-weight, 600);
75
- text-transform: var(--tct-optgroup-header-text-transform, uppercase);
76
- /*
77
- position: -webkit-sticky;
72
+ --comp-header-padding: var(--tct-scale-1, var(--app-scale-1x, 5px)) var(--tct-scale-2, var(--app-scale-2x, 10px));
73
+ background: var(--tct-optgroup-header-bg, var(--t-optgroup-header-bg, var(--tct-gray-13, var(--t-gray-13, var(--tct-gray-l2, var(--app-gray-l2, #e6e6e6))))));
74
+ padding: var(--tct-optgroup-header-padding, var(--t-optgroup-header-padding, var(--comp-header-padding)));
75
+ font-weight: var(--tct-optgroup-header-font-weight, var(--t-optgroup-header-font-weight, 600));
76
+ text-transform: var(--tct-optgroup-header-text-transform, var(--t-optgroup-header-text-transform, uppercase));
78
77
  position: sticky;
79
- top: 0;
78
+ top: var(--comp-multi-select-header-height, 0);
80
79
  z-index: 1;
81
-
82
- temp removal, will fix with TCT-804
83
- */
84
80
  }
@@ -1,10 +1,18 @@
1
- import { Component, Prop, h, Element, Host } from '@stencil/core';
1
+ import { Component, Prop, h, Element, Host, Watch } from '@stencil/core';
2
2
  export class Q2Option {
3
3
  constructor() {
4
4
  this.role = 'option';
5
5
  this.tabindex = '-1';
6
6
  this._multiSelectHidden = false;
7
7
  }
8
+ componentWillLoad() {
9
+ this.handleDisplay();
10
+ }
11
+ handleDisplay() {
12
+ if (this.display || this.multiline)
13
+ return;
14
+ this.display = this.hostElement.textContent.trim();
15
+ }
8
16
  render() {
9
17
  const { disabled, disabledGroup, selected, _multiSelectHidden } = this;
10
18
  const isDisabled = disabled || disabledGroup;
@@ -60,7 +68,7 @@ export class Q2Option {
60
68
  },
61
69
  "display": {
62
70
  "type": "string",
63
- "mutable": false,
71
+ "mutable": true,
64
72
  "complexType": {
65
73
  "original": "string",
66
74
  "resolved": "string",
@@ -73,7 +81,7 @@ export class Q2Option {
73
81
  "text": ""
74
82
  },
75
83
  "attribute": "display",
76
- "reflect": true
84
+ "reflect": false
77
85
  },
78
86
  "value": {
79
87
  "type": "string",
@@ -248,4 +256,8 @@ export class Q2Option {
248
256
  }
249
257
  }; }
250
258
  static get elementRef() { return "hostElement"; }
259
+ static get watchers() { return [{
260
+ "propName": "display",
261
+ "methodName": "handleDisplay"
262
+ }]; }
251
263
  }
@@ -8,7 +8,7 @@
8
8
 
9
9
  *:focus {
10
10
  outline: none;
11
- box-shadow: var(--const-global-focus);
11
+ box-shadow: var(--const-global-focus, 0 0 0 2px #33b4ff);
12
12
  }
13
13
 
14
14
  :host {
@@ -65,14 +65,21 @@ button {
65
65
  }
66
66
 
67
67
  :host {
68
- padding: 0 var(--tct-scale-2, var(--app-scale-2, 10px));
68
+ --comp-padding: 0 var(--app-scale-2x, 10px);
69
+ --comp-selected-icon-size: var(--tct-option-selected-icon-size, var(--t-option-selected-icon-size, var(--tct-scale-3, var(--app-scale-3x, 15px))));
70
+ padding: var(--tct-option-padding, var(--t-option-padding, var(--comp-padding)));
69
71
  min-height: 44px;
70
72
  align-items: center;
71
73
  cursor: pointer;
72
- grid-template-columns: var(--tct-option-selected-icon-size, var(--tct-scale-3, var(--app-scale-3, 15px))) 1fr;
74
+ grid-template-columns: var(--comp-selected-icon-size) 1fr;
73
75
  align-items: center;
74
76
  grid-template-areas: "icon content";
75
- gap: var(--tct-scale-1, var(--app-scale-1, 5px));
77
+ gap: var(--tct-scale-1, var(--app-scale-1x, 5px));
78
+ }
79
+
80
+ :host([multiline]) {
81
+ --comp-padding: var(--app-scale-2, 10px) var(--app-scale-2, 10px);
82
+ --comp-selected-icon-size: var(--tct-option-selected-icon-size, var(--t-option-selected-icon-size, 26px));
76
83
  }
77
84
 
78
85
  :host([_no-select]) {
@@ -102,7 +109,7 @@ button {
102
109
 
103
110
  q2-icon {
104
111
  grid-area: icon;
105
- --tct-icon-size: var(--tct-option-selected-icon-size, var(--tct-scale-3, var(--app-scale-3, 15px)));
112
+ --tct-icon-size: var(--comp-selected-icon-size);
106
113
  }
107
114
 
108
115
  .content {
@@ -8,7 +8,7 @@
8
8
 
9
9
  *:focus {
10
10
  outline: none;
11
- box-shadow: var(--const-global-focus);
11
+ box-shadow: var(--const-global-focus, 0 0 0 2px #33b4ff);
12
12
  }
13
13
 
14
14
  :host {
@@ -76,15 +76,15 @@ button {
76
76
  height: 0;
77
77
  opacity: 0;
78
78
  visibility: hidden;
79
- background-color: var(--app-white);
80
- color: var(--t-font-color);
79
+ background-color: var(--app-white, #ffffff);
80
+ color: var(--t-text, #4d4d4d);
81
81
  z-index: 100;
82
82
  width: max-content;
83
83
  min-width: var(--tct-option-list-min-width, var(--t-option-list-min-width, 135px));
84
- box-shadow: var(--app-shadow-1);
84
+ box-shadow: var(--app-shadow-1, 0 2px 4px rgba(0, 0, 0, 0.3));
85
85
  overflow: hidden;
86
86
  text-align: start;
87
- transition: opacity var(--app-tween-1);
87
+ transition: opacity var(--app-tween-1, 0.2s ease);
88
88
  border-radius: var(--tct-option-list-border-radius, var(--t-option-list-border-radius, 0));
89
89
  --comp-scrollbar-size: var(--tct-scrollbar-size, var(--t-scrollbar-size, var(--app-scale-1x, 5px)));
90
90
  --comp-scrollbar-border-radius: var(--tct-scrollbar-border-radius, var(--t-scrollbar-border-radius, var(--app-border-radius-1, 3px)));
@@ -8,7 +8,7 @@
8
8
 
9
9
  *:focus {
10
10
  outline: none;
11
- box-shadow: var(--const-global-focus);
11
+ box-shadow: var(--const-global-focus, 0 0 0 2px #33b4ff);
12
12
  }
13
13
 
14
14
  :host {