@limetech/lime-elements 40.14.3 → 40.14.5

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 (56) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/cjs/lime-elements.cjs.js +1 -1
  3. package/dist/cjs/limel-breadcrumbs_6.cjs.entry.js +9 -7
  4. package/dist/cjs/limel-checkbox.cjs.entry.js +9 -6
  5. package/dist/cjs/limel-chip-set.cjs.entry.js +34 -3
  6. package/dist/cjs/limel-helper-line_3.cjs.entry.js +1 -1
  7. package/dist/cjs/limel-picker.cjs.entry.js +3 -3
  8. package/dist/cjs/limel-select.cjs.entry.js +13 -10
  9. package/dist/cjs/limel-slider.cjs.entry.js +7 -6
  10. package/dist/cjs/limel-switch.cjs.entry.js +5 -4
  11. package/dist/cjs/loader.cjs.js +1 -1
  12. package/dist/collection/components/checkbox/checkbox.js +11 -8
  13. package/dist/collection/components/chip-set/chip-set-input-helpers.js +3 -0
  14. package/dist/collection/components/chip-set/chip-set.css +2 -2
  15. package/dist/collection/components/chip-set/chip-set.js +30 -2
  16. package/dist/collection/components/input-field/input-field.css +28 -24
  17. package/dist/collection/components/input-field/input-field.js +8 -6
  18. package/dist/collection/components/notched-outline/notched-outline.css +3 -1
  19. package/dist/collection/components/picker/picker.js +3 -3
  20. package/dist/collection/components/select/select.css +4 -8
  21. package/dist/collection/components/select/select.js +9 -6
  22. package/dist/collection/components/select/select.template.js +4 -4
  23. package/dist/collection/components/slider/slider.js +8 -7
  24. package/dist/collection/components/switch/switch.js +6 -5
  25. package/dist/collection/style/internal/shared_input-select-picker.scss +2 -2
  26. package/dist/esm/lime-elements.js +1 -1
  27. package/dist/esm/limel-breadcrumbs_6.entry.js +9 -7
  28. package/dist/esm/limel-checkbox.entry.js +9 -6
  29. package/dist/esm/limel-chip-set.entry.js +34 -3
  30. package/dist/esm/limel-helper-line_3.entry.js +1 -1
  31. package/dist/esm/limel-picker.entry.js +3 -3
  32. package/dist/esm/limel-select.entry.js +13 -10
  33. package/dist/esm/limel-slider.entry.js +7 -6
  34. package/dist/esm/limel-switch.entry.js +5 -4
  35. package/dist/esm/loader.js +1 -1
  36. package/dist/lime-elements/lime-elements.esm.js +1 -1
  37. package/dist/lime-elements/{p-1663fa9d.entry.js → p-150010b5.entry.js} +1 -1
  38. package/dist/lime-elements/p-5633c069.entry.js +1 -0
  39. package/dist/lime-elements/p-88dcba1e.entry.js +1 -0
  40. package/dist/lime-elements/p-bb40b96c.entry.js +23 -0
  41. package/dist/lime-elements/{p-95ca7426.entry.js → p-d1eaba10.entry.js} +1 -1
  42. package/dist/lime-elements/{p-4a272ac2.entry.js → p-d94f1c0f.entry.js} +1 -1
  43. package/dist/lime-elements/p-f0e3a147.entry.js +159 -0
  44. package/dist/lime-elements/{p-9aa921a2.entry.js → p-f96a8e2c.entry.js} +1 -1
  45. package/dist/lime-elements/style/internal/shared_input-select-picker.scss +2 -2
  46. package/dist/types/components/checkbox/checkbox.d.ts +8 -5
  47. package/dist/types/components/chip-set/chip-set.d.ts +2 -0
  48. package/dist/types/components/select/select.d.ts +4 -4
  49. package/dist/types/components/slider/slider.d.ts +4 -3
  50. package/dist/types/components/switch/switch.d.ts +4 -3
  51. package/dist/types/components.d.ts +10 -10
  52. package/package.json +1 -1
  53. package/dist/lime-elements/p-3de45ea6.entry.js +0 -159
  54. package/dist/lime-elements/p-677836c9.entry.js +0 -1
  55. package/dist/lime-elements/p-ec531ecb.entry.js +0 -1
  56. package/dist/lime-elements/p-ed73fb0f.entry.js +0 -23
@@ -1662,12 +1662,12 @@
1662
1662
  padding-right: 2rem;
1663
1663
  }
1664
1664
 
1665
- .mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input {
1665
+ .mdc-text-field:not(.mdc-text-field--disabled):not(.lime-text-field--readonly) .mdc-text-field__input {
1666
1666
  color: rgba(var(--contrast-1400), 1);
1667
1667
  font-size: var(--limel-theme-default-font-size) !important;
1668
1668
  font-family: inherit !important;
1669
1669
  }
1670
- .mdc-text-field.mdc-text-field--disabled .mdc-text-field__input {
1670
+ .mdc-text-field.mdc-text-field--disabled .mdc-text-field__input, .mdc-text-field.lime-text-field--readonly .mdc-text-field__input {
1671
1671
  color: rgba(var(--contrast-1400), 0.5);
1672
1672
  }
1673
1673
 
@@ -309,6 +309,28 @@ export class ChipSet {
309
309
  getDescribedBy() {
310
310
  return this.helperText ? this.helperTextId : undefined;
311
311
  }
312
+ handleReadonlyChange(isReadonly) {
313
+ if (isReadonly) {
314
+ this.endEditing();
315
+ return;
316
+ }
317
+ const input = this.host.shadowRoot.querySelector('input');
318
+ if (this.disabled ||
319
+ !input ||
320
+ this.host.shadowRoot.activeElement !== input) {
321
+ return;
322
+ }
323
+ this.editMode = true;
324
+ this.startEdit.emit();
325
+ }
326
+ endEditing() {
327
+ if (!this.editMode) {
328
+ return;
329
+ }
330
+ this.editMode = false;
331
+ this.inputChipIndexSelected = null;
332
+ this.stopEdit.emit();
333
+ }
312
334
  handleChangeChips(newValue, oldValue) {
313
335
  if (isEqual(newValue, oldValue)) {
314
336
  return;
@@ -321,13 +343,13 @@ export class ChipSet {
321
343
  renderInputChips() {
322
344
  return [
323
345
  this.value.map(this.renderInputChip),
324
- h("input", { tabIndex: this.disabled || this.readonly ? -1 : 0, type: this.inputType, id: this.labelId, "aria-describedby": this.getDescribedBy(), "aria-invalid": this.isOutlineInvalid() ? 'true' : undefined, "aria-required": this.required ? 'true' : undefined, disabled: this.readonly || this.disabled, class: {
346
+ h("input", { tabIndex: this.disabled ? -1 : 0, type: this.inputType, id: this.labelId, "aria-describedby": this.getDescribedBy(), "aria-invalid": this.isOutlineInvalid() ? 'true' : undefined, "aria-required": this.required ? 'true' : undefined, disabled: this.disabled, class: {
325
347
  'mdc-text-field__input': true,
326
348
  hidden: this.inputHidden(),
327
349
  }, value: this.textValue, onBlur: this.handleInputBlur, onFocus: this.handleTextFieldFocus, onKeyDown: this.handleKeyDown, onInput: this.handleTextInput,
328
350
  // Some browsers emit a change event on input elements, we need to stop
329
351
  // that event from propagating since we are emitting our own change event
330
- onChange: this.inputFieldOnChange, placeholder: this.isFull() ? '' : this.searchLabel, readonly: this.isFull(), autocomplete: this.autocomplete }),
352
+ onChange: this.inputFieldOnChange, placeholder: this.isFull() ? '' : this.searchLabel, readonly: this.readonly || this.isFull(), autocomplete: this.autocomplete }),
331
353
  this.renderLeadingIcon(),
332
354
  this.renderClearAllChipsButton(),
333
355
  ];
@@ -378,6 +400,9 @@ export class ChipSet {
378
400
  * additional space when the user it not typing anything
379
401
  */
380
402
  handleInputBlur() {
403
+ if (this.readonly) {
404
+ return;
405
+ }
381
406
  if (this.emptyInputOnBlur) {
382
407
  this.syncEmptyInput();
383
408
  }
@@ -1079,6 +1104,9 @@ export class ChipSet {
1079
1104
  static get elementRef() { return "host"; }
1080
1105
  static get watchers() {
1081
1106
  return [{
1107
+ "propName": "readonly",
1108
+ "methodName": "handleReadonlyChange"
1109
+ }, {
1082
1110
  "propName": "value",
1083
1111
  "methodName": "handleChangeChips"
1084
1112
  }];
@@ -1709,32 +1709,32 @@
1709
1709
  /*rtl:end:ignore*/
1710
1710
  }
1711
1711
 
1712
- .mdc-text-field.mdc-text-field--disabled.lime-text-field--readonly .mdc-text-field__input {
1712
+ .mdc-text-field.lime-text-field--readonly .mdc-text-field__input {
1713
1713
  background-color: transparent;
1714
1714
  color: rgba(var(--contrast-1400), 1);
1715
1715
  }
1716
- .mdc-text-field.mdc-text-field--disabled.lime-text-field--readonly.mdc-text-field--with-leading-icon .lime-looks-like-input-value, .mdc-text-field.mdc-text-field--disabled.lime-text-field--readonly.has-leading-icon .lime-looks-like-input-value {
1716
+ .mdc-text-field.lime-text-field--readonly.mdc-text-field--with-leading-icon .lime-looks-like-input-value, .mdc-text-field.lime-text-field--readonly.has-leading-icon .lime-looks-like-input-value {
1717
1717
  padding-left: 1rem;
1718
1718
  }
1719
- .mdc-text-field.mdc-text-field--disabled.lime-text-field--readonly .lime-looks-like-input-value {
1719
+ .mdc-text-field.lime-text-field--readonly .lime-looks-like-input-value {
1720
1720
  color: rgba(var(--contrast-1400), 1);
1721
1721
  opacity: 1;
1722
1722
  }
1723
- .mdc-text-field.mdc-text-field--disabled.lime-text-field--readonly .mdc-floating-label {
1723
+ .mdc-text-field.lime-text-field--readonly .mdc-floating-label {
1724
1724
  color: rgba(var(--contrast-1200), 1);
1725
1725
  }
1726
- .mdc-text-field.mdc-text-field--disabled.lime-text-field--readonly .mdc-notched-outline__leading,
1727
- .mdc-text-field.mdc-text-field--disabled.lime-text-field--readonly .mdc-notched-outline__notch,
1728
- .mdc-text-field.mdc-text-field--disabled.lime-text-field--readonly .mdc-notched-outline__trailing {
1726
+ .mdc-text-field.lime-text-field--readonly .mdc-notched-outline__leading,
1727
+ .mdc-text-field.lime-text-field--readonly .mdc-notched-outline__notch,
1728
+ .mdc-text-field.lime-text-field--readonly .mdc-notched-outline__trailing {
1729
1729
  border-color: transparent;
1730
1730
  }
1731
- .mdc-text-field.mdc-text-field--disabled.lime-text-field--readonly.mdc-text-field--invalid + .mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg {
1731
+ .mdc-text-field.lime-text-field--readonly.mdc-text-field--invalid + .mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg {
1732
1732
  color: var(--limel-theme-error-text-color);
1733
1733
  }
1734
- .mdc-text-field.mdc-text-field--disabled.lime-text-field--readonly.mdc-text-field--with-trailing-icon input.mdc-text-field__input {
1734
+ .mdc-text-field.lime-text-field--readonly.mdc-text-field--with-trailing-icon input.mdc-text-field__input {
1735
1735
  pointer-events: none;
1736
1736
  }
1737
- .mdc-text-field.mdc-text-field--disabled.lime-text-field--readonly.mdc-text-field--with-trailing-icon .mdc-text-field__icon--trailing, .mdc-text-field.mdc-text-field--disabled.lime-text-field--readonly.mdc-text-field--with-trailing-icon a.lime-trailing-icon-for-link {
1737
+ .mdc-text-field.lime-text-field--readonly.mdc-text-field--with-trailing-icon .mdc-text-field__icon--trailing, .mdc-text-field.lime-text-field--readonly.mdc-text-field--with-trailing-icon a.lime-trailing-icon-for-link {
1738
1738
  width: calc(100% - 1rem);
1739
1739
  position: absolute;
1740
1740
  left: 0;
@@ -1745,14 +1745,14 @@
1745
1745
  color: rgba(var(--contrast-1200), 1);
1746
1746
  border-radius: 0.25rem;
1747
1747
  }
1748
- .mdc-text-field.mdc-text-field--disabled.lime-text-field--readonly.mdc-text-field--with-trailing-icon .mdc-text-field__icon--trailing limel-icon, .mdc-text-field.mdc-text-field--disabled.lime-text-field--readonly.mdc-text-field--with-trailing-icon a.lime-trailing-icon-for-link limel-icon {
1748
+ .mdc-text-field.lime-text-field--readonly.mdc-text-field--with-trailing-icon .mdc-text-field__icon--trailing limel-icon, .mdc-text-field.lime-text-field--readonly.mdc-text-field--with-trailing-icon a.lime-trailing-icon-for-link limel-icon {
1749
1749
  width: 1.5rem;
1750
1750
  margin-right: 0.25rem;
1751
1751
  }
1752
- .mdc-text-field.mdc-text-field--disabled.lime-text-field--readonly.mdc-text-field--with-trailing-icon:hover .mdc-text-field__icon--trailing:hover, .mdc-text-field.mdc-text-field--disabled.lime-text-field--readonly.mdc-text-field--with-trailing-icon:hover a.lime-trailing-icon-for-link:hover {
1752
+ .mdc-text-field.lime-text-field--readonly.mdc-text-field--with-trailing-icon:hover .mdc-text-field__icon--trailing:hover, .mdc-text-field.lime-text-field--readonly.mdc-text-field--with-trailing-icon:hover a.lime-trailing-icon-for-link:hover {
1753
1753
  box-shadow: var(--button-shadow-hovered);
1754
1754
  }
1755
- .mdc-text-field.mdc-text-field--disabled.lime-text-field--readonly.mdc-text-field--with-trailing-icon:hover .mdc-text-field__icon--trailing:active, .mdc-text-field.mdc-text-field--disabled.lime-text-field--readonly.mdc-text-field--with-trailing-icon:hover a.lime-trailing-icon-for-link:active {
1755
+ .mdc-text-field.lime-text-field--readonly.mdc-text-field--with-trailing-icon:hover .mdc-text-field__icon--trailing:active, .mdc-text-field.lime-text-field--readonly.mdc-text-field--with-trailing-icon:hover a.lime-trailing-icon-for-link:active {
1756
1756
  box-shadow: var(--button-shadow-pressed);
1757
1757
  }
1758
1758
 
@@ -1778,15 +1778,15 @@
1778
1778
  .mdc-text-field--with-trailing-icon .mdc-text-field__icon--trailing:focus-visible, .mdc-text-field--with-trailing-icon a.lime-trailing-icon-for-link:focus-visible {
1779
1779
  box-shadow: 0 0 0 0.125rem var(--lime-primary-color, var(--limel-theme-primary-color)) !important;
1780
1780
  }
1781
- .mdc-text-field--with-trailing-icon:not(.mdc-text-field--disabled):hover .mdc-text-field__icon--trailing, .mdc-text-field--with-trailing-icon:not(.mdc-text-field--disabled):hover a.lime-trailing-icon-for-link {
1781
+ .mdc-text-field--with-trailing-icon:not(.mdc-text-field--disabled):not(.lime-text-field--readonly):hover .mdc-text-field__icon--trailing, .mdc-text-field--with-trailing-icon:not(.mdc-text-field--disabled):not(.lime-text-field--readonly):hover a.lime-trailing-icon-for-link {
1782
1782
  box-shadow: var(--button-shadow-normal);
1783
1783
  background-color: rgba(var(--contrast-100), 0.4);
1784
1784
  }
1785
- .mdc-text-field--with-trailing-icon:not(.mdc-text-field--disabled):hover .mdc-text-field__icon--trailing:hover, .mdc-text-field--with-trailing-icon:not(.mdc-text-field--disabled):hover a.lime-trailing-icon-for-link:hover {
1785
+ .mdc-text-field--with-trailing-icon:not(.mdc-text-field--disabled):not(.lime-text-field--readonly):hover .mdc-text-field__icon--trailing:hover, .mdc-text-field--with-trailing-icon:not(.mdc-text-field--disabled):not(.lime-text-field--readonly):hover a.lime-trailing-icon-for-link:hover {
1786
1786
  background-color: rgb(var(--contrast-100));
1787
1787
  box-shadow: var(--button-shadow-hovered);
1788
1788
  }
1789
- .mdc-text-field--with-trailing-icon:not(.mdc-text-field--disabled):hover .mdc-text-field__icon--trailing:active, .mdc-text-field--with-trailing-icon:not(.mdc-text-field--disabled):hover a.lime-trailing-icon-for-link:active {
1789
+ .mdc-text-field--with-trailing-icon:not(.mdc-text-field--disabled):not(.lime-text-field--readonly):hover .mdc-text-field__icon--trailing:active, .mdc-text-field--with-trailing-icon:not(.mdc-text-field--disabled):not(.lime-text-field--readonly):hover a.lime-trailing-icon-for-link:active {
1790
1790
  box-shadow: var(--button-shadow-pressed);
1791
1791
  }
1792
1792
  .mdc-text-field--with-trailing-icon.mdc-text-field--invalid i.mdc-text-field__icon.invalid-icon limel-icon {
@@ -1826,12 +1826,13 @@ limel-notched-outline[has-value] .mdc-text-field__affix, limel-notched-outline:f
1826
1826
  .mdc-text-field {
1827
1827
  width: 100%;
1828
1828
  }
1829
- .mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__affix,
1830
- .mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__icon {
1829
+ .mdc-text-field:not(.mdc-text-field--disabled):not(.lime-text-field--readonly) .mdc-text-field__affix,
1830
+ .mdc-text-field:not(.mdc-text-field--disabled):not(.lime-text-field--readonly) .mdc-text-field__icon {
1831
1831
  color: rgb(var(--contrast-900));
1832
1832
  }
1833
1833
  .mdc-text-field.mdc-text-field--disabled .mdc-text-field__affix,
1834
- .mdc-text-field.mdc-text-field--disabled .mdc-text-field__icon {
1834
+ .mdc-text-field.mdc-text-field--disabled .mdc-text-field__icon, .mdc-text-field.lime-text-field--readonly .mdc-text-field__affix,
1835
+ .mdc-text-field.lime-text-field--readonly .mdc-text-field__icon {
1835
1836
  color: rgb(var(--contrast-700));
1836
1837
  }
1837
1838
 
@@ -1841,7 +1842,7 @@ limel-notched-outline[has-value] .mdc-text-field__affix, limel-notched-outline:f
1841
1842
  z-index: 1;
1842
1843
  pointer-events: none;
1843
1844
  }
1844
- .mdc-text-field:not(.mdc-text-field--focused):not(.mdc-text-field--invalid) .lime-formatted-input {
1845
+ .mdc-text-field:not(.mdc-text-field--focused):not(.mdc-text-field--invalid) .lime-formatted-input, .mdc-text-field.lime-text-field--readonly .lime-formatted-input {
1845
1846
  display: block;
1846
1847
  }
1847
1848
  .lime-formatted-input + .mdc-text-field__input {
@@ -1852,8 +1853,11 @@ limel-notched-outline[has-value] .mdc-text-field__affix, limel-notched-outline:f
1852
1853
  color: transparent;
1853
1854
  -webkit-text-fill-color: transparent;
1854
1855
  }
1855
- .mdc-text-field:not(.mdc-text-field--focused):not(.mdc-text-field--invalid).lime-text-field--readonly .mdc-text-field__input[type=number] {
1856
- visibility: hidden;
1856
+
1857
+ .mdc-text-field.lime-text-field--readonly .mdc-text-field__input[type=number] {
1858
+ color: transparent;
1859
+ -webkit-text-fill-color: transparent;
1860
+ user-select: none;
1857
1861
  }
1858
1862
 
1859
1863
  .autocomplete-list-container {
@@ -1878,10 +1882,10 @@ limel-notched-outline[has-value] .mdc-text-field__affix, limel-notched-outline:f
1878
1882
  font-size: var(--limel-theme-default-font-size) !important;
1879
1883
  font-family: inherit !important;
1880
1884
  }
1881
- .mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input {
1885
+ .mdc-text-field:not(.mdc-text-field--disabled):not(.lime-text-field--readonly) .mdc-text-field__input {
1882
1886
  color: rgba(var(--contrast-1400), 1);
1883
1887
  }
1884
- .mdc-text-field.mdc-text-field--disabled .mdc-text-field__input {
1888
+ .mdc-text-field.mdc-text-field--disabled .mdc-text-field__input, .mdc-text-field.lime-text-field--readonly .mdc-text-field__input {
1885
1889
  color: rgba(var(--contrast-1400), 0.5);
1886
1890
  }
1887
1891
 
@@ -124,7 +124,7 @@ export class InputField {
124
124
  'mdc-text-field': true,
125
125
  'mdc-text-field--outlined': true,
126
126
  'mdc-text-field--invalid': this.isInvalid(),
127
- 'mdc-text-field--disabled': this.disabled || this.readonly,
127
+ 'mdc-text-field--disabled': this.disabled,
128
128
  'lime-text-field--readonly': this.readonly,
129
129
  'mdc-text-field--required': this.required,
130
130
  'lime-text-field--empty': this.isEmpty(),
@@ -365,7 +365,7 @@ export class InputField {
365
365
  return;
366
366
  }
367
367
  }
368
- return (h("span", { class: "lime-formatted-input lime-looks-like-input-value" }, renderValue));
368
+ return (h("span", { class: "lime-formatted-input lime-looks-like-input-value", "aria-hidden": this.readonly ? 'true' : undefined }, renderValue));
369
369
  };
370
370
  /**
371
371
  * Key handler for the input field
@@ -419,7 +419,9 @@ export class InputField {
419
419
  this.changeEmitter.flush();
420
420
  };
421
421
  this.renderAutocompleteList = () => {
422
- if (this.type === 'textarea' || this.completions.length === 0) {
422
+ if (this.readonly ||
423
+ this.type === 'textarea' ||
424
+ this.completions.length === 0) {
423
425
  return;
424
426
  }
425
427
  const dropdownZIndex = getComputedStyle(this.limelInputField).getPropertyValue('--dropdown-z-index');
@@ -524,7 +526,7 @@ export class InputField {
524
526
  // flagged it either.
525
527
  this.mdcTextField.valid = true;
526
528
  }
527
- this.mdcTextField.disabled = this.disabled || this.readonly;
529
+ this.mdcTextField.disabled = this.disabled;
528
530
  }
529
531
  /**
530
532
  * Returns the start position of the current text selection.
@@ -589,7 +591,7 @@ export class InputField {
589
591
  properties.onBlur = this.onBlur;
590
592
  properties.required = this.required;
591
593
  properties.readonly = this.readonly;
592
- properties.disabled = this.disabled || this.readonly;
594
+ properties.disabled = this.disabled;
593
595
  if (this.hasHelperText()) {
594
596
  properties['aria-describedby'] = this.helperTextId;
595
597
  }
@@ -599,7 +601,7 @@ export class InputField {
599
601
  if (this.renderAutocompleteList()) {
600
602
  properties['aria-controls'] = this.portalId;
601
603
  }
602
- return (h(Host, { key: 'ed9c0ff9c44e672a33ff2c17cc6adf4ae8f518cd' }, h("limel-notched-outline", { key: 'ae6dc84f39a46175309ef4fe834f3e91910f6b99', labelId: this.inputId, labelElementId: this.labelElementId, label: this.label, required: this.required, invalid: this.invalid || this.isInvalid(), disabled: this.disabled, readonly: this.readonly, hasValue: !!this.value, hasLeadingIcon: !!this.leadingIcon }, h("label", { key: 'c0ddb03c7c0c64b0002f2ed44db932fe77513ca8', slot: "content", class: this.getContainerClassList() }, this.renderLeadingIcon(), this.renderPrefix(), this.renderFormattedNumber(), this.renderInput(properties), this.renderSuffix(), this.renderTextarea(properties), this.renderTrailingLinkOrButton())), this.renderHelperLine(), this.renderAutocompleteList()));
604
+ return (h(Host, { key: '0f3e3dadc4345adb1abbbca32cd13a041172767b' }, h("limel-notched-outline", { key: '1f833a0fcb202529209ce58ce1c6ab313ab5e0e6', labelId: this.inputId, labelElementId: this.labelElementId, label: this.label, required: this.required, invalid: this.invalid || this.isInvalid(), disabled: this.disabled, readonly: this.readonly, hasValue: !!this.value, hasLeadingIcon: !!this.leadingIcon }, h("label", { key: '1f866999f40bd57e11dc80cb2c04935dcfe0f31b', slot: "content", class: this.getContainerClassList() }, this.renderLeadingIcon(), this.renderPrefix(), this.renderFormattedNumber(), this.renderInput(properties), this.renderSuffix(), this.renderTextarea(properties), this.renderTrailingLinkOrButton())), this.renderHelperLine(), this.renderAutocompleteList()));
603
605
  }
604
606
  valueWatcher(newValue) {
605
607
  if (!this.mdcTextField || this.changeWaiting) {
@@ -236,9 +236,11 @@ limel-notched-outline[invalid]:not([invalid=false]) .limel-notched-outline--notc
236
236
  color: var(--limel-theme-error-text-color);
237
237
  }
238
238
  limel-notched-outline[readonly]:not([readonly=false]) {
239
- --limel-notched-outline-border-color: transparent !important;
240
239
  --limel-notched-outline-background-color: transparent !important;
241
240
  }
241
+ limel-notched-outline[readonly]:not([readonly=false]):not(:has([slot=content]:is(:focus-visible, :focus-within))) {
242
+ --limel-notched-outline-border-color: transparent !important;
243
+ }
242
244
  limel-notched-outline[readonly]:not([readonly=false]) .limel-notched-outline--notch label {
243
245
  transition-duration: 0s;
244
246
  }
@@ -181,7 +181,7 @@ export class Picker {
181
181
  this.updateTabIndex();
182
182
  }
183
183
  updateTabIndex() {
184
- if (this.disabled || this.readonly) {
184
+ if (this.disabled) {
185
185
  this.host.setAttribute('tabindex', '-1');
186
186
  return;
187
187
  }
@@ -199,7 +199,7 @@ export class Picker {
199
199
  props.maxItems = 1;
200
200
  }
201
201
  return [
202
- h("limel-chip-set", Object.assign({ key: '52839878b5dfc5477a0fdc848ad3f7ea7a48019b', type: "input", inputType: "search", label: this.label, helperText: this.helperText, leadingIcon: this.leadingIcon, value: this.chips, disabled: this.disabled, invalid: this.invalid, delimiter: this.renderDelimiter(), readonly: this.readonly, required: this.required, searchLabel: this.searchLabel, language: this.language, onInput: this.handleTextInput, onKeyDown: this.handleInputKeyDown, onChange: this.handleChange, onInteract: this.handleInteract, onStartEdit: this.handleInputFieldFocus, onStopEdit: this.handleStopEditAndBlur, emptyInputOnBlur: false, emptyInputOnChange: false, clearAllButton: this.multiple && !this.chipSetEditMode }, props)),
202
+ h("limel-chip-set", Object.assign({ key: '48b339e4313ecdd3541e4256d96b54cebb04b0d8', type: "input", inputType: "search", label: this.label, helperText: this.helperText, leadingIcon: this.leadingIcon, value: this.chips, disabled: this.disabled, invalid: this.invalid, delimiter: this.renderDelimiter(), readonly: this.readonly, required: this.required, searchLabel: this.searchLabel, language: this.language, onInput: this.handleTextInput, onKeyDown: this.handleInputKeyDown, onChange: this.handleChange, onInteract: this.handleInteract, onStartEdit: this.handleInputFieldFocus, onStopEdit: this.handleStopEditAndBlur, emptyInputOnBlur: false, emptyInputOnChange: false, clearAllButton: this.multiple && !this.chipSetEditMode }, props)),
203
203
  this.renderDropdown(),
204
204
  ];
205
205
  }
@@ -254,7 +254,7 @@ export class Picker {
254
254
  return Object.assign(Object.assign({}, action), { actions: [] });
255
255
  }
256
256
  shouldShowDropDownContent() {
257
- if (this.isFull()) {
257
+ if (this.readonly || this.isFull()) {
258
258
  return false;
259
259
  }
260
260
  return !!this.chipSetEditMode;
@@ -1674,7 +1674,7 @@ div.limel-select__field--open limel-helper-line {
1674
1674
  display: none;
1675
1675
  }
1676
1676
 
1677
- limel-notched-outline:not([invalid]:not([invalid=false])) .limel-notched-outline--outlines {
1677
+ limel-notched-outline:not([invalid]:not([invalid=false])):not(:has([slot=content]:focus-visible)) .limel-notched-outline--outlines {
1678
1678
  --limel-notched-outline-border-color: transparent;
1679
1679
  }
1680
1680
 
@@ -1751,6 +1751,9 @@ limel-notched-outline:not([invalid]:not([invalid=false])) .limel-notched-outline
1751
1751
  align-items: center;
1752
1752
  border-radius: 0.375rem;
1753
1753
  }
1754
+ .limel-select .limel-select-trigger:focus, .limel-select .limel-select-trigger:focus-visible {
1755
+ outline: none;
1756
+ }
1754
1757
  .limel-select .limel-select-trigger,
1755
1758
  .limel-select .limel-select__selected-option {
1756
1759
  width: 100%;
@@ -1800,13 +1803,6 @@ limel-notched-outline:not([invalid]:not([invalid=false])) .limel-notched-outline
1800
1803
  --limel-clickable-transition-speed: 0.2s;
1801
1804
  --limel-clickable-transform-speed: 0.16s;
1802
1805
  }
1803
- .limel-select:not(.mdc-select--disabled) .limel-select-trigger:focus {
1804
- outline: none;
1805
- }
1806
- .limel-select:not(.mdc-select--disabled) .limel-select-trigger:focus-visible {
1807
- outline: none;
1808
- box-shadow: var(--shadow-depth-8-focused);
1809
- }
1810
1806
  .limel-select:not(.mdc-select--disabled) .limel-select-trigger.limel-select--focused {
1811
1807
  background-color: rgba(var(--contrast-100), 0.8);
1812
1808
  }
@@ -57,10 +57,10 @@ export class Select {
57
57
  */
58
58
  this.disabled = false;
59
59
  /**
60
- * Set to `true` to make the field read-only.
61
- * This visualizes the component slightly differently.
62
- * But shows no visual sign indicating that the component is disabled
63
- * or can ever become interactable.
60
+ * Set to `true` to make the select read-only.
61
+ * Use `readonly` when the select is only there to present the data it holds,
62
+ * and will not become possible for the current user to edit.
63
+ * It is then drawn without any sign that it could be interacted with.
64
64
  */
65
65
  this.readonly = false;
66
66
  /**
@@ -81,6 +81,9 @@ export class Select {
81
81
  this.checkValid = false;
82
82
  this.typeaheadBuffer = new TypeaheadBuffer();
83
83
  this.handleMenuTriggerKeyDown = (event) => {
84
+ if (this.readonly) {
85
+ return;
86
+ }
84
87
  // Typeahead runs first, so that a space extends an ongoing typeahead
85
88
  // instead of just opening the dropdown. A *bare* space is declined by
86
89
  // `handleTypeaheadKey`, and keeps its usual meaning below.
@@ -180,7 +183,7 @@ export class Select {
180
183
  }
181
184
  render() {
182
185
  const dropdownZIndex = getComputedStyle(this.host).getPropertyValue('--dropdown-z-index');
183
- return (h(SelectTemplate, { key: '52540b6851ec8a02c81dff7e7b896208f8b11c84', id: this.portalId, disabled: this.disabled || this.readonly, readonly: this.readonly, required: this.required, invalid: this.invalid, label: this.label, helperText: this.helperText, value: this.value, options: this.options, onMenuChange: this.handleMenuChange, onNativeChange: this.handleNativeChange, onTriggerKeyDown: this.handleMenuTriggerKeyDown, listRef: this.setListElement, multiple: this.multiple, isOpen: this.menuOpen, open: this.openMenu, close: this.closeMenu, checkValid: this.checkValid, native: this.shouldRenderNative(), dropdownZIndex: dropdownZIndex, anchor: this.getAnchorElement() }));
186
+ return (h(SelectTemplate, { key: '768d4f7e5dae3eb741ab6e01eeda2379c76c62df', id: this.portalId, disabled: this.disabled, readonly: this.readonly, required: this.required, invalid: this.invalid, label: this.label, helperText: this.helperText, value: this.value, options: this.options, onMenuChange: this.handleMenuChange, onNativeChange: this.handleNativeChange, onTriggerKeyDown: this.handleMenuTriggerKeyDown, listRef: this.setListElement, multiple: this.multiple, isOpen: this.menuOpen, open: this.openMenu, close: this.closeMenu, checkValid: this.checkValid, native: this.shouldRenderNative(), dropdownZIndex: dropdownZIndex, anchor: this.getAnchorElement() }));
184
187
  }
185
188
  watchOpen(newValue, oldValue) {
186
189
  if (this.checkValid) {
@@ -552,7 +555,7 @@ export class Select {
552
555
  "optional": false,
553
556
  "docs": {
554
557
  "tags": [],
555
- "text": "Set to `true` to make the field read-only.\nThis visualizes the component slightly differently.\nBut shows no visual sign indicating that the component is disabled\nor can ever become interactable."
558
+ "text": "Set to `true` to make the select read-only.\nUse `readonly` when the select is only there to present the data it holds,\nand will not become possible for the current user to edit.\nIt is then drawn without any sign that it could be interacted with."
556
559
  },
557
560
  "getter": false,
558
561
  "setter": false,
@@ -24,7 +24,7 @@ export const SelectTemplate = (props) => {
24
24
  const classList = {
25
25
  'limel-select': true,
26
26
  'mdc-select': true,
27
- 'mdc-select--disabled': props.disabled,
27
+ 'mdc-select--disabled': props.disabled || props.readonly,
28
28
  'limel-select--readonly': props.readonly,
29
29
  'limel-select--invalid': !isValid,
30
30
  'limel-select--with-helper-text': typeof props.helperText === 'string',
@@ -62,9 +62,9 @@ const SelectValue = (props) => {
62
62
  'limel-select-trigger': true,
63
63
  'limel-select--focused': props.isOpen,
64
64
  };
65
- return (h("button", { id: TRIGGER_ID, slot: "content", class: anchorClassList, onClick: props.open, onKeyDown: props.onTriggerKeyDown, role: isCombobox ? 'combobox' : undefined, "aria-haspopup": "listbox", "aria-expanded": isCombobox ? String(props.isOpen) : undefined, "aria-controls": props.id, "aria-labelledby": props.label
65
+ return (h("button", { id: TRIGGER_ID, slot: "content", class: anchorClassList, onClick: props.readonly ? undefined : props.open, onKeyDown: props.onTriggerKeyDown, role: isCombobox ? 'combobox' : undefined, "aria-haspopup": "listbox", "aria-expanded": isCombobox ? String(props.isOpen) : undefined, "aria-controls": props.id, "aria-labelledby": props.label
66
66
  ? `${LABEL_ID} ${SELECTED_TEXT_ID}`
67
- : SELECTED_TEXT_ID, "aria-describedby": getDescribedBy(props), "aria-required": isCombobox && props.required ? 'true' : undefined, "aria-invalid": isCombobox && !props.isValid ? 'true' : undefined, disabled: props.disabled || props.readonly }, h("span", { class: "mdc-select__selected-text-container limel-select__selected-option" }, getSelectedIcon(props.value), getSelectedPrimaryComponent(props.value), h("span", { id: SELECTED_TEXT_ID, class: "mdc-select__selected-text limel-select__selected-option__text" }, getSelectedText(props.value))), h(ShowIcon, Object.assign({}, props, { isValid: props.isValid })), h("span", { class: "mdc-select__dropdown-icon" }, h("svg", { class: "mdc-select__dropdown-icon-graphic", viewBox: "7 10 10 5", focusable: "false" }, h("polygon", { stroke: "none", "fill-rule": "evenodd", points: "7 10 12 15 17 10" })))));
67
+ : SELECTED_TEXT_ID, "aria-describedby": getDescribedBy(props), "aria-required": isCombobox && props.required ? 'true' : undefined, "aria-invalid": isCombobox && !props.isValid ? 'true' : undefined, "aria-readonly": isCombobox && props.readonly ? 'true' : undefined, disabled: props.disabled || (props.native && props.readonly) }, h("span", { class: "mdc-select__selected-text-container limel-select__selected-option" }, getSelectedIcon(props.value), getSelectedPrimaryComponent(props.value), h("span", { id: SELECTED_TEXT_ID, class: "mdc-select__selected-text limel-select__selected-option__text" }, getSelectedText(props.value))), h(ShowIcon, Object.assign({}, props, { isValid: props.isValid })), h("span", { class: "mdc-select__dropdown-icon" }, h("svg", { class: "mdc-select__dropdown-icon-graphic", viewBox: "7 10 10 5", focusable: "false" }, h("polygon", { stroke: "none", "fill-rule": "evenodd", points: "7 10 12 15 17 10" })))));
68
68
  };
69
69
  const ShowIcon = (props) => {
70
70
  if (props.isValid) {
@@ -98,7 +98,7 @@ const NativeDropdown = (props) => {
98
98
  const options = props.options
99
99
  .filter((option) => !('separator' in option))
100
100
  .map(renderOption(props.value));
101
- return (h("select", { required: props.required, "aria-labelledby": props.label ? LABEL_ID : undefined, "aria-describedby": getDescribedBy(props), "aria-disabled": props.disabled, "aria-invalid": props.isValid ? undefined : 'true', onChange: props.onNativeChange, onFocus: props.open, onBlur: props.close, class: "limel-select__native-control", disabled: props.disabled, multiple: props.multiple }, options));
101
+ return (h("select", { required: props.required, "aria-labelledby": props.label ? LABEL_ID : undefined, "aria-describedby": getDescribedBy(props), "aria-disabled": props.disabled, "aria-invalid": props.isValid ? undefined : 'true', onChange: props.onNativeChange, onFocus: props.open, onBlur: props.close, class: "limel-select__native-control", disabled: props.disabled || props.readonly, multiple: props.multiple }, options));
102
102
  };
103
103
  const renderOption = (selectedOption) => {
104
104
  return (option) => {
@@ -35,9 +35,10 @@ export class Slider {
35
35
  */
36
36
  this.disabled = false;
37
37
  /**
38
- * Disables the slider when `true`. This visualizes the slider slightly differently.
39
- * But shows no visual sign indicating that the slider field
40
- * is disabled or can ever become interactable.
38
+ * Set to `true` to make the slider read-only.
39
+ * Use `readonly` when the slider is only there to present the data it holds,
40
+ * and will not become possible for the current user to edit.
41
+ * It is then drawn without any sign that it could be interacted with.
41
42
  */
42
43
  this.readonly = false;
43
44
  /**
@@ -270,15 +271,15 @@ export class Slider {
270
271
  if (this.disabled || this.readonly) {
271
272
  inputProps.disabled = true;
272
273
  }
273
- return (h(Host, { key: '3a782f6aa420997f4a088e922438245c7c34143b', class: this.getContainerClassList() }, h("limel-notched-outline", { key: '997046fb961c325d2a4a1e5cc51b08d84bcc2274', labelId: this.inputId, label: this.label, required: this.required, invalid: this.invalid, disabled: this.disabled, readonly: this.readonly, hasValue: !this.isUnset, hasFloatingLabel: true }, h("div", { key: '985fceba0aa4385936c06b1e8cd083ead77823b2', slot: "content" }, h("div", { key: '47238548b281254d3fe7e9fe7350890ffb5f573e', class: "slider", style: { '--slider-fraction': `${fraction}` } }, h("input", Object.assign({ key: 'f3fc215a6b2c331342487f206c549e04d109a061', id: this.inputId, type: "range", min: min, max: max, value: this.displayValue, "aria-describedby": this.helperText
274
+ return (h(Host, { key: '4fe4c4d105e9b5cbee5299d8eccb215a2da9e79e', class: this.getContainerClassList() }, h("limel-notched-outline", { key: 'e5a0b3e92e1a91c61e2da6489b0b02a684126c98', labelId: this.inputId, label: this.label, required: this.required, invalid: this.invalid, disabled: this.disabled, readonly: this.readonly, hasValue: !this.isUnset, hasFloatingLabel: true }, h("div", { key: 'd4c854c56f632778ad84444de663883af90066f0', slot: "content" }, h("div", { key: '8ee47dd4e40db9ba9645d3725e6153df874318c1', class: "slider", style: { '--slider-fraction': `${fraction}` } }, h("input", Object.assign({ key: '44943cd55fcd376686cf7912665834932fc0f244', id: this.inputId, type: "range", min: min, max: max, value: this.displayValue, "aria-describedby": this.helperText
274
275
  ? this.helperTextId
275
276
  : undefined, "aria-invalid": this.invalid ? 'true' : undefined, "aria-valuetext": this.isUnset
276
277
  ? translate.get('value-not-set', this.language)
277
278
  : undefined, ref: (el) => {
278
279
  this.inputElement = el;
279
- }, onInput: this.handleInput, onChange: this.handleChange, onClick: this.handleClick }, inputProps)), h("div", { key: '407448db5cd86d489adb909e4c5ecc0e0d050c53', class: "track" }, h("div", { key: '7f8c47aa449ee1a5ffe9c8fbc35e7b8ec9c818ad', class: "active" }), this.renderStepDots(min, max)), h("div", { key: '866541538223dddbd750c57836426941ef4e6139', class: "thumb" }, h("div", { key: 'b663cbb67b3656bec79b81a3d0b47fb08f234bfb', class: "knob" }), h("div", { key: '58bc88bc2c9ff6e1a2c4635708d2dd1c5744e7ac', class: "indicator", "aria-hidden": "true" }, this.isUnset
280
+ }, onInput: this.handleInput, onChange: this.handleChange, onClick: this.handleClick }, inputProps)), h("div", { key: 'fd5746650df94db4fd49a80566ae984b491c449d', class: "track" }, h("div", { key: '0096471f182419bcb738282520b3cd23bff091fd', class: "active" }), this.renderStepDots(min, max)), h("div", { key: '1babaa01bf6238f0728f19ad14b84355dc094498', class: "thumb" }, h("div", { key: 'b3d3cb4785a1aaed224961e3809fa1ea18ccbd94', class: "knob" }), h("div", { key: '2ca4e3cc659ecf02fd05a144a35e6bd9969ca7bf', class: "indicator", "aria-hidden": "true" }, this.isUnset
280
281
  ? '\u{2194}\u{FE0E}'
281
- : this.displayValue))), h("div", { key: '4bc12eebc0006e5e54ff2d6c44d04303e0370de0', class: "range-labels" }, h("span", { key: 'faa2e129c54b50f7503277fdfb8430270a154524', class: "min" }, this.multiplyByFactor(this.valuemin), this.unit), h("span", { key: 'ade8069607794cddfddec0d6b5d574b54fb7da0e', class: "max" }, this.multiplyByFactor(this.valuemax), this.unit)))), this.renderClearButton(), this.renderHelperLine()));
282
+ : this.displayValue))), h("div", { key: '4309cea286f1f2a22ac2ae625cb7a9cd286df3c5', class: "range-labels" }, h("span", { key: 'd60949614cd7ce926f3c745ef731ee7a132ae342', class: "min" }, this.multiplyByFactor(this.valuemin), this.unit), h("span", { key: '4aa7e0b42c83079738fd83b85e8d8e8b796df7c3', class: "max" }, this.multiplyByFactor(this.valuemax), this.unit)))), this.renderClearButton(), this.renderHelperLine()));
282
283
  }
283
284
  watchValue() {
284
285
  this.syncStateFromValue();
@@ -329,7 +330,7 @@ export class Slider {
329
330
  "optional": false,
330
331
  "docs": {
331
332
  "tags": [],
332
- "text": "Disables the slider when `true`. This visualizes the slider slightly differently.\nBut shows no visual sign indicating that the slider field\nis disabled or can ever become interactable."
333
+ "text": "Set to `true` to make the slider read-only.\nUse `readonly` when the slider is only there to present the data it holds,\nand will not become possible for the current user to edit.\nIt is then drawn without any sign that it could be interacted with."
333
334
  },
334
335
  "getter": false,
335
336
  "setter": false,
@@ -29,9 +29,10 @@ export class Switch {
29
29
  */
30
30
  this.disabled = false;
31
31
  /**
32
- * Disables the switch when `true`. This visualizes the switch slightly differently.
33
- * But shows no visual sign indicating that the switch is disabled
34
- * or can ever become interactable.
32
+ * Set to `true` to make the switch read-only.
33
+ * Use `readonly` when the switch is only there to present the data it holds,
34
+ * and will not become possible for the current user to edit.
35
+ * It is then drawn without any sign that it could be interacted with.
35
36
  */
36
37
  this.readonly = false;
37
38
  /**
@@ -78,7 +79,7 @@ export class Switch {
78
79
  removeEnterClickable(this.host);
79
80
  }
80
81
  render() {
81
- return (h(Host, { key: 'b6c37d2c9a9dc66e7e02271fe7877d24f190aaa9' }, this.readonly
82
+ return (h(Host, { key: 'c85cef5b79b367de3c8ce07e486873f2311b47be' }, this.readonly
82
83
  ? this.renderReadonly()
83
84
  : this.renderInteractive(), this.renderHelperLine()));
84
85
  }
@@ -150,7 +151,7 @@ export class Switch {
150
151
  "optional": false,
151
152
  "docs": {
152
153
  "tags": [],
153
- "text": "Disables the switch when `true`. This visualizes the switch slightly differently.\nBut shows no visual sign indicating that the switch is disabled\nor can ever become interactable."
154
+ "text": "Set to `true` to make the switch read-only.\nUse `readonly` when the switch is only there to present the data it holds,\nand will not become possible for the current user to edit.\nIt is then drawn without any sign that it could be interacted with."
154
155
  },
155
156
  "getter": false,
156
157
  "setter": false,
@@ -86,7 +86,7 @@ $height-of-mdc-text-field: 2.5rem; //This is written directly in `rem`, becurse
86
86
  var(--lime-primary-color, var(--limel-theme-primary-color)) !important; // has to be `!important` since we're using `box-shadow` insted of `outline` which is also used in `hover` mode
87
87
  }
88
88
  }
89
- &:not(.mdc-text-field--disabled):hover {
89
+ &:not(.mdc-text-field--disabled):not(.lime-text-field--readonly):hover {
90
90
  .mdc-text-field__icon--trailing {
91
91
  box-shadow: var(--button-shadow-normal);
92
92
  background-color: rgba(var(--contrast-100), 0.4);
@@ -113,7 +113,7 @@ $height-of-mdc-text-field: 2.5rem; //This is written directly in `rem`, becurse
113
113
  }
114
114
 
115
115
  @mixin readonly-overrides {
116
- .mdc-text-field.mdc-text-field--disabled.lime-text-field--readonly {
116
+ .mdc-text-field.lime-text-field--readonly {
117
117
  .mdc-text-field__input {
118
118
  background-color: transparent;
119
119
  color: $input-text-color;