lightning-base-components 1.22.2-alpha → 1.22.3-alpha

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 (137) hide show
  1. package/README.md +2 -0
  2. package/metadata/raptor.json +31 -2
  3. package/package.json +12 -1
  4. package/scopedImports/@salesforce-label-LightningRecordPicker.actionIconAlternativeText.js +1 -0
  5. package/src/lightning/ariaObserver/ariaObserver.js +1 -1
  6. package/src/lightning/baseCombobox/baseCombobox.html +1 -1
  7. package/src/lightning/baseCombobox/baseCombobox.js +1 -0
  8. package/src/lightning/baseCombobox/input-text.slds.css +6 -7
  9. package/src/lightning/baseComboboxItem/card.lbc.native.css +1 -0
  10. package/src/lightning/baseComboboxItem/inline.lbc.native.css +1 -0
  11. package/src/lightning/buttonIcon/button-icon.slds.css +5 -5
  12. package/src/lightning/buttonIconStateful/button-icon.slds.css +5 -5
  13. package/src/lightning/buttonMenu/button-icon.slds.css +5 -5
  14. package/src/lightning/calendar/calendar.slds.css +10 -13
  15. package/src/lightning/checkboxGroup/checkboxGroup.js +21 -10
  16. package/src/lightning/checkboxGroup/checkboxGroup.js-meta.xml +3 -0
  17. package/src/lightning/colorPickerCustom/input-text.slds.css +6 -7
  18. package/src/lightning/combobox/form-element.slds.css +1 -1
  19. package/src/lightning/datatable/__docs__/datatable.md +10 -5
  20. package/src/lightning/datatable/columnResizer.js +3 -2
  21. package/src/lightning/datatable/columnWidthManager.js +16 -10
  22. package/src/lightning/datatable/datatable.js +101 -38
  23. package/src/lightning/datatable/infiniteLoading.js +8 -20
  24. package/src/lightning/datatable/inlineEdit.js +11 -6
  25. package/src/lightning/datatable/keyboard.js +58 -55
  26. package/src/lightning/datatable/resizeObserver.js +10 -5
  27. package/src/lightning/datatable/rows.js +1 -2
  28. package/src/lightning/datatable/rowsInlining.js +5 -4
  29. package/src/lightning/datatable/state.js +1 -2
  30. package/src/lightning/datatable/templates/div/div.html +150 -43
  31. package/src/lightning/datatable/templates/div/div.lbc.synthetic.css +8 -7
  32. package/src/lightning/datatable/templates/table/table.html +153 -46
  33. package/src/lightning/datatable/utils.js +10 -4
  34. package/src/lightning/datatable/virtualization.js +6 -4
  35. package/src/lightning/datatable/wrapText.js +16 -15
  36. package/src/lightning/datepicker/form-element.slds.css +1 -1
  37. package/src/lightning/datepicker/input-text.slds.css +6 -7
  38. package/src/lightning/datetimepicker/form-element.slds.css +1 -1
  39. package/src/lightning/datetimepicker/input-text.slds.css +6 -7
  40. package/src/lightning/dualListbox/form-element.slds.css +1 -1
  41. package/src/lightning/groupedCombobox/form-element.slds.css +1 -1
  42. package/src/lightning/groupedCombobox/input-text.slds.css +6 -7
  43. package/src/lightning/helptext/button-icon.slds.css +5 -5
  44. package/src/lightning/helptext/form-element.slds.css +1 -1
  45. package/src/lightning/input/form-element.slds.css +1 -1
  46. package/src/lightning/input/input.html +0 -1
  47. package/src/lightning/inputAddress/form-element.slds.css +1 -1
  48. package/src/lightning/inputAddress/input-text.slds.css +6 -7
  49. package/src/lightning/inputLocation/form-element.slds.css +1 -1
  50. package/src/lightning/inputLocation/input-text.slds.css +6 -7
  51. package/src/lightning/inputName/form-element.slds.css +1 -1
  52. package/src/lightning/inputName/input-text.slds.css +6 -7
  53. package/src/lightning/lookupAddress/form-element.slds.css +1 -1
  54. package/src/lightning/modal/__docs__/modal.md +2 -0
  55. package/src/lightning/modalBase/modalBase.html +2 -0
  56. package/src/lightning/modalBase/modalBase.js +30 -31
  57. package/src/lightning/modalBody/modalBody.html +1 -0
  58. package/src/lightning/modalBody/modalBody.js +3 -0
  59. package/src/lightning/modalFooter/modalFooter.html +5 -1
  60. package/src/lightning/modalFooter/modalFooter.js +3 -0
  61. package/src/lightning/modalHeader/modalHeader.html +4 -1
  62. package/src/lightning/modalHeader/modalHeader.js +3 -0
  63. package/src/lightning/overlayManager/overlayManager.js +1 -1
  64. package/src/lightning/positionLibrary/elementProxy.js +13 -6
  65. package/src/lightning/positionLibrary/util.js +20 -2
  66. package/src/lightning/primitiveCellActions/primitiveCellActions.html +1 -0
  67. package/src/lightning/primitiveCellActions/primitiveCellActions.js +3 -5
  68. package/src/lightning/primitiveCellButton/primitiveCellButton.html +2 -0
  69. package/src/lightning/primitiveCellButton/primitiveCellButton.js +3 -5
  70. package/src/lightning/primitiveCellCheckbox/checkbox.html +3 -2
  71. package/src/lightning/primitiveCellCheckbox/primitiveCellCheckbox.js +6 -3
  72. package/src/lightning/primitiveCellCheckbox/radio.html +5 -4
  73. package/src/lightning/primitiveCellEditableButton/primitiveCellEditableButton.html +1 -1
  74. package/src/lightning/primitiveCellEditableButton/primitiveCellEditableButton.js +1 -1
  75. package/src/lightning/primitiveCellFactory/bareCustomCell.html +1 -0
  76. package/src/lightning/primitiveCellFactory/cellWithStandardLayout.html +1 -0
  77. package/src/lightning/primitiveCellFactory/primitiveCellFactory.js +4 -6
  78. package/src/lightning/primitiveColorpickerButton/color-picker-button.slds.css +1 -1
  79. package/src/lightning/primitiveColumnSorter/primitiveColumnSorter.html +1 -0
  80. package/src/lightning/primitiveColumnSorter/primitiveColumnSorter.js +1 -1
  81. package/src/lightning/primitiveDatatableIeditPanel/primitiveDatatableIeditPanel.html +3 -1
  82. package/src/lightning/primitiveDatatableIeditPanel/primitiveDatatableIeditPanel.js +3 -3
  83. package/src/lightning/primitiveDatatableStatusBar/primitiveDatatableStatusBar.html +1 -0
  84. package/src/lightning/primitiveDatatableStatusBar/primitiveDatatableStatusBar.js +1 -3
  85. package/src/lightning/primitiveDatatableTooltip/primitiveDatatableTooltip.html +1 -0
  86. package/src/lightning/primitiveDatatableTooltip/primitiveDatatableTooltip.js +1 -1
  87. package/src/lightning/primitiveDatatableTooltipBubble/primitiveDatatableTooltipBubble.html +1 -1
  88. package/src/lightning/primitiveDatatableTooltipBubble/primitiveDatatableTooltipBubble.js +1 -1
  89. package/src/lightning/primitiveHeaderActions/primitiveHeaderActions.html +1 -0
  90. package/src/lightning/primitiveHeaderActions/primitiveHeaderActions.js +2 -4
  91. package/src/lightning/primitiveHeaderFactory/nonsortableHeader.html +8 -3
  92. package/src/lightning/primitiveHeaderFactory/primitiveHeaderFactory.js +43 -13
  93. package/src/lightning/primitiveHeaderFactory/selectableHeader.html +3 -2
  94. package/src/lightning/primitiveHeaderFactory/sortableHeader.html +8 -3
  95. package/src/lightning/primitiveHeaderFactory/sortingMenuHeader.html +1 -1
  96. package/src/lightning/primitiveIcon/primitiveIcon.css +0 -1
  97. package/src/lightning/primitiveInputCheckbox/form-element.slds.css +1 -1
  98. package/src/lightning/primitiveInputCheckboxButton/form-element.slds.css +1 -1
  99. package/src/lightning/primitiveInputColor/form-element.slds.css +1 -1
  100. package/src/lightning/primitiveInputColor/input-text.slds.css +6 -7
  101. package/src/lightning/primitiveInputFile/form-element.slds.css +1 -1
  102. package/src/lightning/primitiveInputSimple/form-element.slds.css +1 -1
  103. package/src/lightning/primitiveInputSimple/input-text.slds.css +6 -7
  104. package/src/lightning/primitiveInputToggle/form-element.slds.css +1 -1
  105. package/src/lightning/primitiveResizeHandler/primitiveResizeHandler.html +4 -2
  106. package/src/lightning/primitiveResizeHandler/primitiveResizeHandler.js +2 -2
  107. package/src/lightning/primitiveTreegridCellToggle/primitiveTreegridCellToggle.html +1 -1
  108. package/src/lightning/primitiveTreegridCellToggle/primitiveTreegridCellToggle.js +1 -1
  109. package/src/lightning/progressIndicator/progressIndicator.css +1 -1
  110. package/src/lightning/progressIndicator/progressIndicator.js +14 -6
  111. package/src/lightning/progressIndicator/progressIndicator.js-meta.xml +3 -0
  112. package/src/lightning/progressIndicator/progressIndicator.lbc.native.css +2 -0
  113. package/src/lightning/progressStep/__examples__/basic/basic.html +11 -0
  114. package/src/lightning/progressStep/__examples__/basic/basic.js +3 -0
  115. package/src/lightning/progressStep/__examples__/shaded/shaded.html +11 -0
  116. package/src/lightning/progressStep/__examples__/shaded/shaded.js +3 -0
  117. package/src/lightning/progressStep/base.html +2 -1
  118. package/src/lightning/progressStep/progressStep.css +1 -0
  119. package/src/lightning/progressStep/progressStep.js +40 -29
  120. package/src/lightning/progressStep/progressStep.js-meta.xml +3 -0
  121. package/src/lightning/progressStep/progressStep.lbc.native.css +3 -0
  122. package/src/lightning/prompt/form-element.slds.css +1 -1
  123. package/src/lightning/prompt/input-text.slds.css +6 -7
  124. package/src/lightning/radioGroup/form-element.slds.css +1 -1
  125. package/src/lightning/select/form-element.slds.css +1 -1
  126. package/src/lightning/select/select.slds.css +1 -1
  127. package/src/lightning/sldsCommon/sldsCommon.css +1 -1
  128. package/src/lightning/textarea/form-element.slds.css +1 -1
  129. package/src/lightning/tile/mediaTile.css +2 -0
  130. package/src/lightning/tile/standardTile.css +2 -1
  131. package/src/lightning/tile/tile.js +5 -2
  132. package/src/lightning/tile/tile.js-meta.xml +3 -0
  133. package/src/lightning/tile/tile.lbc.native.css +4 -0
  134. package/src/lightning/timepicker/form-element.slds.css +1 -1
  135. package/src/lightning/toast/button-icon.slds.css +5 -5
  136. package/src/lightning/primitiveIcon/primitiveIcon.lbc.synthetic.css +0 -9
  137. /package/src/lightning/tile/{standardTile.lbc.synthetic.css → tile.lbc.synthetic.css} +0 -0
@@ -26,7 +26,7 @@ export default class PrimitiveCellCheckbox extends PrimitiveDatatableCell {
26
26
  this._columnHeaderId = id || '';
27
27
  const labelId = this.computedLabelId;
28
28
  if (labelId) {
29
- synchronizeAttrs(this.template.querySelector('input'), {
29
+ synchronizeAttrs(this.refs.input, {
30
30
  'aria-labelledby': `${labelId} ${this._columnHeaderId}`,
31
31
  });
32
32
  }
@@ -41,13 +41,16 @@ export default class PrimitiveCellCheckbox extends PrimitiveDatatableCell {
41
41
 
42
42
  renderedCallback() {
43
43
  //give input the correct aria-labelledby value
44
- synchronizeAttrs(this.template.querySelector('input'), {
44
+ synchronizeAttrs(this.refs.input, {
45
45
  'aria-labelledby': `${this.computedLabelId} ${this.columnHeaderId}`,
46
46
  });
47
47
  }
48
48
 
49
49
  get computedLabelId() {
50
- return getRealDOMId(this.template.querySelector('label'));
50
+ if (this.isConnected && this.refs) {
51
+ return getRealDOMId(this.refs.label);
52
+ }
53
+ return null;
51
54
  }
52
55
 
53
56
  get selectItemAssistiveText() {
@@ -1,6 +1,7 @@
1
1
  <template>
2
2
  <span class="slds-radio">
3
- <input type="radio"
3
+ <input lwc:ref="input"
4
+ type="radio"
4
5
  name={computedOptionName}
5
6
  id="primitive-checkbox-radio-id"
6
7
  tabindex={internalTabIndex}
@@ -11,9 +12,9 @@
11
12
  disabled={isDisabled}
12
13
  onkeydown={handleRadioKeyDown}
13
14
  checked={isSelected}>
14
- <label
15
- id={labelId}
16
- class="slds-radio__label"
15
+ <label lwc:ref="label"
16
+ id={labelId}
17
+ class="slds-radio__label"
17
18
  for="primitive-checkbox-radio-id">
18
19
  <span class="slds-radio_faux"></span>
19
20
  <span class="slds-form-element__label slds-assistive-text">
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <button tabindex={tabIndex} class="slds-button slds-button_icon slds-cell-edit__button slds-m-left_x-small">
2
+ <button lwc:ref="button" tabindex={tabIndex} class="slds-button slds-button_icon slds-cell-edit__button slds-m-left_x-small">
3
3
  <lightning-primitive-icon
4
4
  icon-name="utility:edit"
5
5
  size="xx-small"
@@ -38,7 +38,7 @@ export default class PrivateCellEditableButton extends LightningElement {
38
38
 
39
39
  get htmlButton() {
40
40
  if (!this._htmlButton) {
41
- this._htmlButton = this.template.querySelector('button');
41
+ this._htmlButton = this.refs.button;
42
42
  }
43
43
 
44
44
  return this._htmlButton;
@@ -1,6 +1,7 @@
1
1
  <template>
2
2
  <div class={computedCellDivClass} style={computedCssStyles}>
3
3
  <lightning-primitive-custom-cell
4
+ lwc:ref="customCell"
4
5
  types={types}
5
6
  keyboard-mode={keyboardMode}
6
7
  column-type={columnType}
@@ -104,6 +104,7 @@
104
104
  <!-- custom type -->
105
105
  <template if:true={isCustomType}>
106
106
  <lightning-primitive-custom-cell
107
+ lwc:ref="customCell"
107
108
  class={computedMarginClassWhenLeftIconExists}
108
109
  types={types}
109
110
  keyboard-mode={keyboardMode}
@@ -93,9 +93,7 @@ export default class PrivateCellFactory extends PrimitiveDatatableCell {
93
93
  this.template.querySelectorAll('[data-navigation="enable"]')
94
94
  );
95
95
 
96
- const customType = this.template.querySelector(
97
- 'lightning-primitive-custom-cell'
98
- );
96
+ const customType = this.refs.customCell;
99
97
 
100
98
  if (customType) {
101
99
  const wrapperActionableElements =
@@ -283,7 +281,7 @@ export default class PrivateCellFactory extends PrimitiveDatatableCell {
283
281
  'slds-truncate':
284
282
  columnType !== 'button-icon' && !isActionType && !_wrapText,
285
283
  'slds-hyphenate': _wrapText,
286
- 'slds-line-clamp': _wrapText && this.wrapTextMaxLines,
284
+ 'slds-line-clamp': _wrapText,
287
285
  'ltr-content-in-rtl': document.dir === 'rtl' && this.isLtrType(),
288
286
  });
289
287
  }
@@ -357,8 +355,8 @@ export default class PrivateCellFactory extends PrimitiveDatatableCell {
357
355
  }
358
356
 
359
357
  get computedCssStyles() {
360
- if (this._wrapText && this.wrapTextMaxLines) {
361
- return `${'--lwc-lineClamp'}: ${this.wrapTextMaxLines}`;
358
+ if (this._wrapText) {
359
+ return `${'--lwc-lineClamp'}: ${this.wrapTextMaxLines || 'none'}`;
362
360
  }
363
361
  return null;
364
362
  }
@@ -69,7 +69,7 @@ Licensed under BSD 3-Clause - see LICENSE.txt or git.io/sfdc-license */
69
69
  --slds-c-icon-color-foreground: var(--slds-g-color-disabled-1);
70
70
 
71
71
  pointer-events: none;
72
- border-color: transparent;
72
+ border-color: var(--slds-g-color-border-disabled-2);
73
73
  }
74
74
 
75
75
  /* TO DO: .panel and .panel-open should be renamed
@@ -12,6 +12,7 @@
12
12
  <lightning-button-icon tooltip={i18n.moveDownTooltip} icon-name="utility:arrowdown" onclick={handleMoveDown} disabled={isDownDisabled} variant="border-filled" alternative-text="Arrow Down"></lightning-button-icon>
13
13
  </lightning-button-group>
14
14
  <lightning-combobox
15
+ lwc:ref="combobox"
15
16
  name="column select"
16
17
  disabled={rule.disableInputs}
17
18
  placeholder={i18n.dropdownPlaceholder}
@@ -26,7 +26,7 @@ export default class PrimitiveColumnSorter extends LightningElement {
26
26
  @api
27
27
  get combobox() {
28
28
  if (!this._combobox) {
29
- this._combobox = this.template.querySelector('lightning-combobox');
29
+ this._combobox = this.refs.combobox;
30
30
  }
31
31
  return this._combobox;
32
32
  }
@@ -1,6 +1,7 @@
1
1
  <template>
2
2
  <section
3
3
  if:true={visible}
4
+ lwc:ref="section"
4
5
  class="slds-popover slds-popover_edit"
5
6
  role="dialog"
6
7
  aria-label={dialogAriaLabel}
@@ -35,6 +36,7 @@
35
36
  <template if:true={isMassEditEnabled}>
36
37
  <!-- Checkbox to select in order to mass edit multiple rows -->
37
38
  <lightning-input
39
+ lwc:ref="massSelectCheckbox"
38
40
  data-mass-selection="true"
39
41
  type="checkbox"
40
42
  name="dt-iedit-mass-edit"
@@ -60,12 +62,12 @@
60
62
  onclick={cancelEditing}>
61
63
  </lightning-button>
62
64
  <lightning-button
65
+ lwc:ref="formLastElement"
63
66
  label={i18n.apply}
64
67
  style="margin-left: .25rem"
65
68
  variant="brand"
66
69
  onblur={handleTypeElemBlur}
67
70
  onfocus={handleTypeElemFocus}
68
- data-form-last-element="true"
69
71
  onclick={processSubmission}>
70
72
  </lightning-button>
71
73
  </div>
@@ -53,7 +53,7 @@ export default class PrimitiveDatatableIeditPanel extends LightningElement {
53
53
  get isMassEditChecked() {
54
54
  return (
55
55
  this.isMassEditEnabled &&
56
- this.template.querySelector('[data-mass-selection="true"]').checked
56
+ this.refs.massSelectCheckbox.checked
57
57
  );
58
58
  }
59
59
 
@@ -95,7 +95,7 @@ export default class PrimitiveDatatableIeditPanel extends LightningElement {
95
95
  */
96
96
  @api
97
97
  getPositionedElement() {
98
- return this.template.querySelector('section');
98
+ return this.refs.section;
99
99
  }
100
100
 
101
101
  /************************* PRIVATE GETTERS *************************/
@@ -279,7 +279,7 @@ export default class PrimitiveDatatableIeditPanel extends LightningElement {
279
279
  /************************* HELPER FUNCTIONS *************************/
280
280
 
281
281
  focusLastElement() {
282
- this.template.querySelector('[data-form-last-element="true"]').focus();
282
+ this.refs.formLastElement.focus();
283
283
  }
284
284
 
285
285
  processSubmission() {
@@ -4,6 +4,7 @@
4
4
  <template if:true={showError}>
5
5
  <!-- Error Tooltip -->
6
6
  <lightning-primitive-datatable-tooltip
7
+ lwc:ref="tooltip"
7
8
  class="slds-button"
8
9
  size="small"
9
10
  variant="error"
@@ -95,9 +95,7 @@ export default class LightningPrimitiveDatatableStatusBar extends LightningEleme
95
95
  */
96
96
  handleShowError() {
97
97
  Promise.resolve().then(() => {
98
- const trigger = this.template.querySelector(
99
- 'lightning-primitive-datatable-tooltip'
100
- );
98
+ const trigger = this.refs.tooltip;
101
99
 
102
100
  if (trigger) {
103
101
  if (this.showErrorBubble) {
@@ -1,5 +1,6 @@
1
1
  <template>
2
2
  <button
3
+ lwc:ref="trigger"
3
4
  data-trigger="true"
4
5
  class={computedButtonClass}
5
6
  onmouseover={handleMouseOver}
@@ -104,7 +104,7 @@ export default class LightningPrimitiveDatatableTooltip extends LightningElement
104
104
  }
105
105
 
106
106
  get triggerElement() {
107
- return this.template.querySelector('[data-trigger="true"]');
107
+ return this.refs.trigger;
108
108
  }
109
109
 
110
110
  handleMouseOver() {
@@ -16,7 +16,7 @@
16
16
  alternative-text={i18n.closeButtonAssistiveText}
17
17
  onclick={handleCloseButtonClick}
18
18
  onkeydown={handleCloseButtonKey}
19
- data-close="true"
19
+ lwc:ref="closeBtn"
20
20
  ></lightning-button-icon>
21
21
  </template>
22
22
 
@@ -82,7 +82,7 @@ export default class LightningPrimitiveDatatableTooltipBubble extends LightningE
82
82
  }
83
83
 
84
84
  get closeButton() {
85
- return this.template.querySelector('[data-close="true"]');
85
+ return this.refs.closeBtn;
86
86
  }
87
87
 
88
88
  handleBlur = (evt) => {
@@ -1,6 +1,7 @@
1
1
  <template>
2
2
  <template if:true={hasActions}>
3
3
  <lightning-button-menu
4
+ lwc:ref="buttonMenu"
4
5
  id="primitive-header-action-button-menu-id"
5
6
  icon-size="x-small"
6
7
  menu-alignment={_actionMenuAlignment}
@@ -58,7 +58,7 @@ export default class PrimitiveHeaderActions extends LightningElement {
58
58
  */
59
59
  @api
60
60
  focus() {
61
- const btnMenu = this.template.querySelector('lightning-button-menu');
61
+ const btnMenu = this.refs.buttonMenu;
62
62
 
63
63
  if (btnMenu) {
64
64
  btnMenu.focus();
@@ -109,9 +109,7 @@ export default class PrimitiveHeaderActions extends LightningElement {
109
109
  event.preventDefault();
110
110
  event.stopPropagation();
111
111
 
112
- this.elementRect = this.template
113
- .querySelector('lightning-button-menu')
114
- .getBoundingClientRect();
112
+ this.elementRect = this.refs.buttonMenu.getBoundingClientRect();
115
113
 
116
114
  this.dispatchEvent(
117
115
  new CustomEvent('privatecellheaderactionmenuopening', {
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <div class={computedClass} style={columnStyles}>
2
+ <div lwc:ref="child" class={computedClass} style={columnStyles}>
3
3
 
4
4
  <!-- Header Content -->
5
5
  <span class="slds-th__action" style={thActionStyles}>
@@ -7,12 +7,17 @@
7
7
  <div class="slds-grid slds-grid_vertical-align-center slds-has-flexi-truncate">
8
8
  <lightning-icon icon-name={def.iconName} size="x-small" class="slds-icon_container slds-m-right_xx-small" alternative-text={def.label} title={def.label}></lightning-icon>
9
9
  <template if:false={def.hideLabel} class="slds-grid slds-grid_vertical-align-center slds-has-flexi-truncate">
10
- <span class={getHeaderLabelStyle}>{def.label}</span>
10
+ <span class={getHeaderLabelClass} style={getHeaderLabelStyle}>{def.label}</span>
11
11
  </template>
12
12
  </div>
13
13
  </template>
14
14
  <template if:false={def.iconName}>
15
- <span class={getHeaderLabelStyle} if:true={def.label} title={def.label}>{def.label}</span>
15
+ <span if:true={def.label}
16
+ class={getHeaderLabelClass}
17
+ style={getHeaderLabelStyle}
18
+ title={def.label}>
19
+ {def.label}
20
+ </span>
16
21
  <span class="slds-truncate" if:false={def.label} title={def.ariaLabel}></span>
17
22
  </template>
18
23
 
@@ -58,11 +58,13 @@ export default class PrimitiveHeaderFactory extends PrimitiveDatatableCell {
58
58
  @api colIndex;
59
59
  @api columnWidth;
60
60
  @api dtContextId;
61
+ @api headerHeight;
61
62
  @api resizestep;
62
63
  @api showCheckbox = false;
63
64
  @api sorted;
64
65
  @api sortedDirection;
65
66
  @api showActionsMenu;
67
+ @api wrapTextMaxLines;
66
68
 
67
69
  /**
68
70
  * Retrieves the computed header DOM `id`
@@ -71,7 +73,7 @@ export default class PrimitiveHeaderFactory extends PrimitiveDatatableCell {
71
73
  */
72
74
  @api
73
75
  get computedColumnHeaderId() {
74
- const el = this.template.querySelector('[data-column-header]');
76
+ const el = this.refs.columnHeader;
75
77
  return getRealDOMId(el);
76
78
  }
77
79
 
@@ -152,6 +154,20 @@ export default class PrimitiveHeaderFactory extends PrimitiveDatatableCell {
152
154
 
153
155
  /************************** PUBLIC METHODS ***************************/
154
156
 
157
+ /**
158
+ * Retrieves the header cell's height
159
+ *
160
+ * @return {string} The height of the cell
161
+ */
162
+ @api
163
+ getDomHeight() {
164
+ const child = this.template.querySelector('.slds-hyphenate');
165
+ if (child) {
166
+ return child.offsetHeight;
167
+ }
168
+ return '';
169
+ }
170
+
155
171
  /**
156
172
  * Retrieves the header cell's width
157
173
  *
@@ -159,7 +175,7 @@ export default class PrimitiveHeaderFactory extends PrimitiveDatatableCell {
159
175
  */
160
176
  @api
161
177
  getDomWidth() {
162
- const child = this.template.querySelector('.slds-cell-fixed');
178
+ const { child } = this.refs;
163
179
  if (child) {
164
180
  return child.offsetWidth;
165
181
  }
@@ -168,6 +184,14 @@ export default class PrimitiveHeaderFactory extends PrimitiveDatatableCell {
168
184
 
169
185
  /************************** PRIVATE GETTERS **************************/
170
186
 
187
+ get shouldWrapText() {
188
+ const { _wrapTableHeader } = this;
189
+ return (
190
+ _wrapTableHeader === 'all' ||
191
+ (_wrapTableHeader === 'by-column' && this._def.wrapText)
192
+ );
193
+ }
194
+
171
195
  /**
172
196
  * Computes the styles for the column
173
197
  *
@@ -182,7 +206,9 @@ export default class PrimitiveHeaderFactory extends PrimitiveDatatableCell {
182
206
  const offsetStyle =
183
207
  document.dir === 'rtl' ? `right: ${this._def.offset}px;` : '';
184
208
  const widthStyle = columnWidth ? `width: ${columnWidth}px;` : '';
185
- const heightStyle = this._wrapTableHeader ? 'min-height: 3rem' : '';
209
+ const heightStyle = this.headerHeight
210
+ ? `height: ${this.headerHeight}`
211
+ : '';
186
212
 
187
213
  return `
188
214
  ${widthStyle}
@@ -226,22 +252,28 @@ export default class PrimitiveHeaderFactory extends PrimitiveDatatableCell {
226
252
  /**
227
253
  * Computes styling for header label
228
254
  */
229
- get getHeaderLabelStyle() {
230
- return this._wrapTableHeader
231
- ? 'slds-line-clamp_small '
255
+ get getHeaderLabelClass() {
256
+ return this.shouldWrapText
257
+ ? 'slds-line-clamp slds-hyphenate'
232
258
  : 'slds-truncate';
233
259
  }
234
260
 
261
+ /**
262
+ * Computes styling for header label
263
+ */
264
+ get getHeaderLabelStyle() {
265
+ return this.shouldWrapText
266
+ ? `--lwc-lineClamp: ${this.wrapTextMaxLines || 'none'}`
267
+ : '';
268
+ }
269
+
235
270
  /**
236
271
  * Get th Action styles (needed for wrapping headers)
237
272
  *
238
273
  * @return {string} The computed classes
239
274
  */
240
275
  get thActionStyles() {
241
- const heightStyle = this._wrapTableHeader ? 'min-height: 3rem' : '';
242
- return `
243
- ${heightStyle}
244
- `;
276
+ return this.headerHeight ? `height: ${this.headerHeight}` : '';
245
277
  }
246
278
 
247
279
  /**
@@ -494,9 +526,7 @@ export default class PrimitiveHeaderFactory extends PrimitiveDatatableCell {
494
526
  */
495
527
  updateBulkSelectionCheckbox() {
496
528
  const { bulkSelection } = this._def;
497
- const allCheckbox = this.template.querySelector(
498
- '.datatable-select-all'
499
- );
529
+ const allCheckbox = this.refs.selectAll;
500
530
  allCheckbox.indeterminate = bulkSelection === 'some';
501
531
 
502
532
  // Note: since we have to handle the indeterminate state,
@@ -1,13 +1,14 @@
1
1
  <template>
2
- <span id="column-group-header" class="slds-assistive-text" data-column-header>
2
+ <span lwc:ref="columnHeader" id="column-group-header" class="slds-assistive-text" data-column-header>
3
3
  {computedColumnHeaderLabel}
4
4
  </span>
5
5
  <!-- Header Content -->
6
- <div class="slds-th__action slds-th__action_form slds-cell-fixed" style={columnStyles}>
6
+ <div lwc:ref="child" class="slds-th__action slds-th__action_form slds-cell-fixed" style={columnStyles}>
7
7
  <template if:true={showCheckbox}>
8
8
  <span class="slds-checkbox">
9
9
  <!-- Selectable Checkbox -->
10
10
  <input
11
+ lwc:ref="selectAll"
11
12
  type="checkbox"
12
13
  class="datatable-select-all"
13
14
  name={computedOptionName}
@@ -1,6 +1,6 @@
1
1
  <template>
2
2
  <!-- Header Content -->
3
- <span class={computedClass} tabindex={internalTabIndex} style={columnStyles}>
3
+ <span lwc:ref="child" class={computedClass} tabindex={internalTabIndex} style={columnStyles}>
4
4
 
5
5
  <a href="javascript:void(0);"
6
6
  class={computedSortClass}
@@ -18,7 +18,7 @@
18
18
  <div class="slds-grid slds-grid_vertical-align-center slds-has-flexi-truncate">
19
19
  <lightning-icon icon-name={def.iconName} size="x-small" class="slds-icon_container slds-m-right_xx-small" alternative-text={def.label} title={def.label}></lightning-icon>
20
20
  <template if:false={def.hideLabel} class="slds-grid slds-grid_vertical-align-center slds-has-flexi-truncate">
21
- <span class={getHeaderLabelStyle}>{def.label}</span>
21
+ <span class={getHeaderLabelClass} style={getHeaderLabelStyle}>{def.label}</span>
22
22
  </template>
23
23
 
24
24
  <!-- Arrow Icon - Rotates based on sorting direction -->
@@ -31,7 +31,12 @@
31
31
  </div>
32
32
  </template>
33
33
  <template if:false={def.iconName}>
34
- <span class={getHeaderLabelStyle} title={def.label}>{def.label}</span>
34
+ <span
35
+ class={getHeaderLabelClass}
36
+ style={getHeaderLabelStyle}
37
+ title={def.label}>
38
+ {def.label}
39
+ </span>
35
40
  <!-- Arrow Icon - Rotates based on sorting direction -->
36
41
  <lightning-primitive-icon
37
42
  class="slds-icon_container"
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <div class="slds-th__action slds-th__action_form slds-cell-fixed" style={columnStyles}>
2
+ <div lwc:ref="child" class="slds-th__action slds-th__action_form slds-cell-fixed" style={columnStyles}>
3
3
  <lightning-button-menu alternative-text="Show menu" internal-datatable-actions-menu icon-name="utility:threedots" variant="border-filled" menu-alignment="right" icon-size="x-small" tooltip={i18n.sortingMenuTooltip} onselect={handleSortingMenuSelection}>
4
4
  <lightning-menu-item value="MultiColumnSorting" label={i18n.sortingMenuMultiColumnSort}></lightning-menu-item>
5
5
  <lightning-menu-item value="ReorderRow" label={i18n.sortingMenuRows}></lightning-menu-item>
@@ -1,2 +1 @@
1
- @import './primitiveIcon.lbc.synthetic.css';
2
1
  @import './primitiveIcon.lbc.native.css';
@@ -46,7 +46,7 @@
46
46
  hyphens: auto;
47
47
  display: inline-block;
48
48
  color: var(--slds-g-color-on-surface-2);
49
- font-size: var(--slds-s-label-font-size, var(--slds-g-font-scale-neg-2));
49
+ font-size: var(--slds-g-font-scale-neg-3);
50
50
  padding-inline-end: var(--slds-g-spacing-2);
51
51
  padding-block-start: var(--slds-g-spacing-1);
52
52
  margin-block-end: calc(var(--slds-g-spacing-1) / 2);
@@ -46,7 +46,7 @@
46
46
  hyphens: auto;
47
47
  display: inline-block;
48
48
  color: var(--slds-g-color-on-surface-2);
49
- font-size: var(--slds-s-label-font-size, var(--slds-g-font-scale-neg-2));
49
+ font-size: var(--slds-g-font-scale-neg-3);
50
50
  padding-inline-end: var(--slds-g-spacing-2);
51
51
  padding-block-start: var(--slds-g-spacing-1);
52
52
  margin-block-end: calc(var(--slds-g-spacing-1) / 2);
@@ -46,7 +46,7 @@
46
46
  hyphens: auto;
47
47
  display: inline-block;
48
48
  color: var(--slds-g-color-on-surface-2);
49
- font-size: var(--slds-s-label-font-size, var(--slds-g-font-scale-neg-2));
49
+ font-size: var(--slds-g-font-scale-neg-3);
50
50
  padding-inline-end: var(--slds-g-spacing-2);
51
51
  padding-block-start: var(--slds-g-spacing-1);
52
52
  margin-block-end: calc(var(--slds-g-spacing-1) / 2);
@@ -246,7 +246,7 @@
246
246
  --sds-c-inputtext-text-color: var(--slds-c-inputtext-text-color);
247
247
  --sds-c-inputtext-font-size: var(
248
248
  --slds-c-inputtext-font-size,
249
- var(--slds-g-font-size-base)
249
+ var(--slds-g-font-scale-neg-2)
250
250
  );
251
251
  --sds-c-inputtext-text-color-placeholder: var(
252
252
  --slds-c-inputtext-text-color-placeholder,
@@ -264,7 +264,7 @@
264
264
 
265
265
  display: flex;
266
266
  flex-wrap: wrap;
267
- flex-direction: column;
267
+ align-items: center;
268
268
  }
269
269
  /**
270
270
  * Input Container
@@ -371,10 +371,6 @@
371
371
  --sds-c-inputtext-color-border: var(--slds-g-color-border-disabled-1);
372
372
  --sds-c-inputtext-text-color: var(--slds-g-color-on-disabled-2);
373
373
  }
374
- :host([data-render-mode="shadow"][disabled]) [part='input-text'] {
375
- --sds-c-inputtext-text-color-placeholder:
376
- var(--slds-g-color-on-disabled-2);
377
- }
378
374
  /**
379
375
  * Label
380
376
  *
@@ -388,7 +384,10 @@
388
384
  --slds-c-inputtext-label-color,
389
385
  var(--slds-g-color-on-surface-2)
390
386
  );
391
- font-size: var(--slds-s-label-font-size, var(--slds-g-font-scale-neg-2));
387
+ font-size: var(
388
+ --slds-c-inputtext-label-font-size,
389
+ var(--slds-g-font-scale-neg-3)
390
+ );
392
391
  margin-block-end: var(--slds-g-sizing-1);
393
392
 
394
393
  /* We inline flex to control the spacing between elements and not have to rely on whitespace characters */
@@ -46,7 +46,7 @@
46
46
  hyphens: auto;
47
47
  display: inline-block;
48
48
  color: var(--slds-g-color-on-surface-2);
49
- font-size: var(--slds-s-label-font-size, var(--slds-g-font-scale-neg-2));
49
+ font-size: var(--slds-g-font-scale-neg-3);
50
50
  padding-inline-end: var(--slds-g-spacing-2);
51
51
  padding-block-start: var(--slds-g-spacing-1);
52
52
  margin-block-end: calc(var(--slds-g-spacing-1) / 2);
@@ -46,7 +46,7 @@
46
46
  hyphens: auto;
47
47
  display: inline-block;
48
48
  color: var(--slds-g-color-on-surface-2);
49
- font-size: var(--slds-s-label-font-size, var(--slds-g-font-scale-neg-2));
49
+ font-size: var(--slds-g-font-scale-neg-3);
50
50
  padding-inline-end: var(--slds-g-spacing-2);
51
51
  padding-block-start: var(--slds-g-spacing-1);
52
52
  margin-block-end: calc(var(--slds-g-spacing-1) / 2);
@@ -246,7 +246,7 @@
246
246
  --sds-c-inputtext-text-color: var(--slds-c-inputtext-text-color);
247
247
  --sds-c-inputtext-font-size: var(
248
248
  --slds-c-inputtext-font-size,
249
- var(--slds-g-font-size-base)
249
+ var(--slds-g-font-scale-neg-2)
250
250
  );
251
251
  --sds-c-inputtext-text-color-placeholder: var(
252
252
  --slds-c-inputtext-text-color-placeholder,
@@ -264,7 +264,7 @@
264
264
 
265
265
  display: flex;
266
266
  flex-wrap: wrap;
267
- flex-direction: column;
267
+ align-items: center;
268
268
  }
269
269
  /**
270
270
  * Input Container
@@ -371,10 +371,6 @@
371
371
  --sds-c-inputtext-color-border: var(--slds-g-color-border-disabled-1);
372
372
  --sds-c-inputtext-text-color: var(--slds-g-color-on-disabled-2);
373
373
  }
374
- :host([data-render-mode="shadow"][disabled]) [part='input-text'] {
375
- --sds-c-inputtext-text-color-placeholder:
376
- var(--slds-g-color-on-disabled-2);
377
- }
378
374
  /**
379
375
  * Label
380
376
  *
@@ -388,7 +384,10 @@
388
384
  --slds-c-inputtext-label-color,
389
385
  var(--slds-g-color-on-surface-2)
390
386
  );
391
- font-size: var(--slds-s-label-font-size, var(--slds-g-font-scale-neg-2));
387
+ font-size: var(
388
+ --slds-c-inputtext-label-font-size,
389
+ var(--slds-g-font-scale-neg-3)
390
+ );
392
391
  margin-block-end: var(--slds-g-sizing-1);
393
392
 
394
393
  /* We inline flex to control the spacing between elements and not have to rely on whitespace characters */