lightning-base-components 1.21.2-alpha → 1.21.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 (222) hide show
  1. package/metadata/raptor.json +28 -1
  2. package/package.json +28 -2
  3. package/scopedImports/@salesforce-label-LightningRichTextEditor.colorPicker.js +1 -0
  4. package/src/lightning/accordion/accordion-section.slds.css +3 -3
  5. package/src/lightning/accordion/accordion.slds.css +1 -2
  6. package/src/lightning/accordionSection/accordion-section.slds.css +3 -3
  7. package/src/lightning/accordionSection/accordionSection.js +3 -1
  8. package/src/lightning/accordionSection/button.slds.css +1 -1
  9. package/src/lightning/badge/badge.js +1 -0
  10. package/src/lightning/badge/badge.js-meta.xml +3 -0
  11. package/src/lightning/baseCombobox/base-combobox.slds.css +11 -6
  12. package/src/lightning/baseCombobox/baseCombobox.html +1 -1
  13. package/src/lightning/baseCombobox/baseCombobox.js +2 -2
  14. package/src/lightning/baseCombobox/baseCombobox.js-meta.xml +6 -0
  15. package/src/lightning/baseCombobox/input-text.slds.css +41 -68
  16. package/src/lightning/baseCombobox/keyboard.js +12 -4
  17. package/src/lightning/baseCombobox/listbox.slds.css +51 -99
  18. package/src/lightning/baseCombobox/spinner.slds.css +62 -62
  19. package/src/lightning/baseComboboxFormattedText/baseComboboxFormattedText.js-meta.xml +6 -0
  20. package/src/lightning/baseComboboxItem/baseComboboxItem.js +10 -6
  21. package/src/lightning/baseComboboxItem/baseComboboxItem.js-meta.xml +6 -0
  22. package/src/lightning/baseComboboxItem/listbox.slds.css +51 -99
  23. package/src/lightning/baseFormattedText/baseFormattedText.js +2 -2
  24. package/src/lightning/button/button.js +2 -1
  25. package/src/lightning/button/button.slds.css +1 -1
  26. package/src/lightning/buttonIcon/button-icon.slds.css +1 -1
  27. package/src/lightning/buttonIconStateful/button-icon-stateful.slds.css +4 -2
  28. package/src/lightning/buttonIconStateful/button-icon.slds.css +1 -1
  29. package/src/lightning/buttonIconStateful/button.slds.css +1 -1
  30. package/src/lightning/buttonMenu/button-icon.slds.css +1 -1
  31. package/src/lightning/buttonMenu/button-menu.slds.css +8 -2
  32. package/src/lightning/buttonMenu/button.slds.css +1 -1
  33. package/src/lightning/buttonStateful/button-stateful.slds.css +6 -2
  34. package/src/lightning/buttonStateful/button.slds.css +1 -1
  35. package/src/lightning/buttonStateful/buttonStateful.js +4 -1
  36. package/src/lightning/calendar/calendar.js-meta.xml +6 -0
  37. package/src/lightning/calendar/calendar.slds.css +9 -2
  38. package/src/lightning/colorPickerCustom/color-picker-custom.slds.css +22 -23
  39. package/src/lightning/colorPickerCustom/input-text.slds.css +41 -68
  40. package/src/lightning/colorPickerPanel/color-picker-panel.slds.css +9 -10
  41. package/src/lightning/colorPickerPanel/popover.slds.css +0 -2
  42. package/src/lightning/combobox/combobox.slds.css +1 -2
  43. package/src/lightning/combobox/form-element.slds.css +54 -54
  44. package/src/lightning/datatable/__examples__/customDatatableWrapper/customDatatableWrapper.js +0 -69
  45. package/src/lightning/datatable/__examples__/customDatatypeDeleteRowBtn/customDatatypeDeleteRowBtn.html +1 -1
  46. package/src/lightning/datatable/__examples__/customDatatypeDeleteRowBtn/customDatatypeDeleteRowBtn.js +1 -16
  47. package/src/lightning/datatable/__examples__/customDatatypeLink/customDatatypeLink.html +3 -3
  48. package/src/lightning/datatable/__examples__/customDatatypeRowOrderingBtn/customDatatypeRowOrderingBtn.html +1 -8
  49. package/src/lightning/datatable/__examples__/customDatatypeRowOrderingBtn/customDatatypeRowOrderingBtn.js +2 -39
  50. package/src/lightning/datatable/__examples__/customDatatypeTable/customNumber.html +1 -1
  51. package/src/lightning/datatable/__examples__/customDatatypeTable/customNumberEdit.html +2 -0
  52. package/src/lightning/datatable/__examples__/customDatatypeTable/deleteRow.html +3 -2
  53. package/src/lightning/datatable/__examples__/customDatatypeTable/iconPill.html +1 -1
  54. package/src/lightning/datatable/__examples__/customNestedComponent/customNestedComponent.html +10 -0
  55. package/src/lightning/datatable/__examples__/customNestedComponent/customNestedComponent.js +12 -0
  56. package/src/lightning/datatable/autoWidthStrategy.js +147 -191
  57. package/src/lightning/datatable/columnResizer.js +35 -35
  58. package/src/lightning/datatable/columnWidthManager.js +118 -177
  59. package/src/lightning/datatable/columns.js +90 -59
  60. package/src/lightning/datatable/datagrid.slds.css +187 -0
  61. package/src/lightning/datatable/datatable.js +248 -229
  62. package/src/lightning/datatable/errors.js +3 -0
  63. package/src/lightning/datatable/fixedWidthStrategy.js +22 -29
  64. package/src/lightning/datatable/headerActions.js +7 -9
  65. package/src/lightning/datatable/infiniteLoading.js +15 -15
  66. package/src/lightning/datatable/inlineEdit.js +255 -235
  67. package/src/lightning/datatable/keyboard.js +318 -282
  68. package/src/lightning/datatable/renderManager.js +10 -7
  69. package/src/lightning/datatable/resizeObserver.js +11 -59
  70. package/src/lightning/datatable/rowLevelActions.js +6 -5
  71. package/src/lightning/datatable/rowNumber.js +23 -23
  72. package/src/lightning/datatable/rowSelection.js +173 -145
  73. package/src/lightning/datatable/rowSelectionShared.js +13 -6
  74. package/src/lightning/datatable/rows.js +231 -196
  75. package/src/lightning/datatable/sort.js +26 -22
  76. package/src/lightning/datatable/templates/div/div.css +2 -57
  77. package/src/lightning/datatable/templates/div/div.html +13 -6
  78. package/src/lightning/datatable/templates/div/div.lbc.native.css +3 -0
  79. package/src/lightning/datatable/templates/div/div.lbc.synthetic.css +86 -0
  80. package/src/lightning/datatable/templates/table/table.html +1 -0
  81. package/src/lightning/datatable/utils.js +5 -5
  82. package/src/lightning/datatable/widthManagerShared.js +24 -21
  83. package/src/lightning/datatable/wrapText.js +25 -26
  84. package/src/lightning/datepicker/datepicker.js +32 -9
  85. package/src/lightning/datepicker/datepicker.js-meta.xml +6 -0
  86. package/src/lightning/datepicker/form-element.slds.css +54 -54
  87. package/src/lightning/datepicker/input-text.slds.css +41 -68
  88. package/src/lightning/datetimepicker/datetimepicker.js-meta.xml +6 -0
  89. package/src/lightning/datetimepicker/form-element.slds.css +54 -54
  90. package/src/lightning/datetimepicker/input-text.slds.css +41 -68
  91. package/src/lightning/dualListbox/dual-listbox.slds.css +7 -2
  92. package/src/lightning/dualListbox/form-element.slds.css +54 -54
  93. package/src/lightning/dualListbox/listbox.slds.css +51 -99
  94. package/src/lightning/dynamicIcon/dynamic-icon-strength.slds.css +1 -2
  95. package/src/lightning/dynamicIcon/dynamic-icon-trend.slds.css +1 -2
  96. package/src/lightning/formattedDateTime/formattedDateTime.js +7 -62
  97. package/src/lightning/formattedDateTime/formattedDateTime.js-meta.xml +3 -0
  98. package/src/lightning/formattedLocation/formattedLocation.html +1 -3
  99. package/src/lightning/formattedLocation/formattedLocation.js +3 -25
  100. package/src/lightning/formattedLookup/events.js +2 -4
  101. package/src/lightning/formattedNumber/formattedNumber.js +2 -49
  102. package/src/lightning/formattedRichText/formattedRichText.js +5 -5
  103. package/src/lightning/formattedRichText/linkTextNodes.js +58 -0
  104. package/src/lightning/groupedCombobox/form-element.slds.css +54 -54
  105. package/src/lightning/groupedCombobox/grouped-combobox.slds.css +0 -2
  106. package/src/lightning/groupedCombobox/groupedCombobox.js-meta.xml +1 -1
  107. package/src/lightning/groupedCombobox/input-text.slds.css +41 -68
  108. package/src/lightning/helptext/button-icon.slds.css +1 -1
  109. package/src/lightning/helptext/form-element.slds.css +54 -54
  110. package/src/lightning/icon/icon.slds.css +12 -25
  111. package/src/lightning/input/form-element.slds.css +54 -54
  112. package/src/lightning/inputAddress/form-element.slds.css +54 -54
  113. package/src/lightning/inputAddress/input-address.slds.css +1 -2
  114. package/src/lightning/inputAddress/input-text.slds.css +41 -68
  115. package/src/lightning/inputAddress/inputAddress.js +1 -0
  116. package/src/lightning/inputAddress/inputAddress.js-meta.xml +3 -0
  117. package/src/lightning/inputLocation/form-element.slds.css +54 -54
  118. package/src/lightning/inputLocation/input-location.slds.css +1 -2
  119. package/src/lightning/inputLocation/input-text.slds.css +41 -68
  120. package/src/lightning/inputName/form-element.slds.css +54 -54
  121. package/src/lightning/inputName/input-text.slds.css +41 -68
  122. package/src/lightning/interactiveDialogBase/interactive-dialog-base.slds.css +0 -3
  123. package/src/lightning/interactiveDialogBase/interactiveDialogBase.js-meta.xml +6 -0
  124. package/src/lightning/lookupAddress/form-element.slds.css +54 -54
  125. package/src/lightning/lookupAddress/listbox.slds.css +51 -99
  126. package/src/lightning/lookupAddress/location.js +2 -0
  127. package/src/lightning/lookupAddress/lookup-address.slds.css +0 -2
  128. package/src/lightning/lookupAddress/lookupAddress.js +15 -10
  129. package/src/lightning/menuDivider/menu-divider.slds.css +0 -2
  130. package/src/lightning/menuItem/menu-item.slds.css +8 -2
  131. package/src/lightning/menuSubheader/menu-subheader.slds.css +1 -2
  132. package/src/lightning/modalBase/modal-base.slds.css +3 -3
  133. package/src/lightning/modalBase/modalBase.js +0 -8
  134. package/src/lightning/modalBase/modalBase.js-meta.xml +6 -0
  135. package/src/lightning/modalBody/modal-body.slds.css +1 -2
  136. package/src/lightning/modalFooter/modal-footer.slds.css +2 -2
  137. package/src/lightning/modalFooter/modalFooter.js +0 -21
  138. package/src/lightning/modalHeader/modal-header.slds.css +1 -2
  139. package/src/lightning/modalHeader/modalHeader.js +0 -22
  140. package/src/lightning/overlay/overlay.js-meta.xml +6 -0
  141. package/src/lightning/pill/pill.slds.css +32 -58
  142. package/src/lightning/pillContainer/button.slds.css +1 -1
  143. package/src/lightning/pillContainer/listbox.slds.css +51 -99
  144. package/src/lightning/pillContainer/pill-container.slds.css +6 -10
  145. package/src/lightning/pillContainer/pill.slds.css +32 -58
  146. package/src/lightning/popup/popover.slds.css +0 -2
  147. package/src/lightning/primitiveBubble/primitiveBubble.js-meta.xml +6 -0
  148. package/src/lightning/primitiveButton/primitiveButoon.js-meta.xml +6 -0
  149. package/src/lightning/primitiveCellCheckbox/checkbox.css +2 -0
  150. package/src/lightning/primitiveColorpickerButton/color-picker-button.slds.css +16 -38
  151. package/src/lightning/primitiveCustomCell/primitiveCustomCell.js +26 -1
  152. package/src/lightning/primitiveHeaderFactory/nonsortableHeader.css +1 -0
  153. package/src/lightning/primitiveHeaderFactory/selectableHeader.css +2 -0
  154. package/src/lightning/primitiveIcon/icon.slds.css +12 -25
  155. package/src/lightning/primitiveIcon/primitiveIcon.js-meta.xml +6 -0
  156. package/src/lightning/primitiveIframe/primitiveIframe.js +3 -1
  157. package/src/lightning/primitiveInputCheckbox/form-element.slds.css +54 -54
  158. package/src/lightning/primitiveInputCheckbox/primitiveInputCheckbox.js +5 -2
  159. package/src/lightning/primitiveInputCheckbox/primitiveInputCheckbox.js-meta.xml +6 -0
  160. package/src/lightning/primitiveInputCheckboxButton/form-element.slds.css +54 -54
  161. package/src/lightning/primitiveInputCheckboxButton/input-checkbox-button.slds.css +6 -4
  162. package/src/lightning/primitiveInputCheckboxButton/primitiveInputCheckboxButton.js +5 -2
  163. package/src/lightning/primitiveInputCheckboxButton/primitiveInputCheckboxButton.js-meta.xml +6 -0
  164. package/src/lightning/primitiveInputColor/form-element.slds.css +54 -54
  165. package/src/lightning/primitiveInputColor/input-color.slds.css +2 -3
  166. package/src/lightning/primitiveInputColor/input-text.slds.css +41 -68
  167. package/src/lightning/primitiveInputColor/primitiveInputColor.js +5 -2
  168. package/src/lightning/primitiveInputColor/primitiveInputColor.js-meta.xml +6 -0
  169. package/src/lightning/primitiveInputFile/button.slds.css +1 -1
  170. package/src/lightning/primitiveInputFile/form-element.slds.css +54 -54
  171. package/src/lightning/primitiveInputFile/input-file.slds.css +1 -4
  172. package/src/lightning/primitiveInputFile/primitiveInputFile.js +4 -2
  173. package/src/lightning/primitiveInputFile/primitiveInputFile.js-meta.xml +6 -0
  174. package/src/lightning/primitiveInputRadio/primitiveInputRadio.js +4 -2
  175. package/src/lightning/primitiveInputSimple/form-element.slds.css +54 -54
  176. package/src/lightning/primitiveInputSimple/input-text.slds.css +41 -68
  177. package/src/lightning/primitiveInputSimple/primitiveInputSimple.js-meta.xml +6 -0
  178. package/src/lightning/primitiveInputToggle/form-element.slds.css +54 -54
  179. package/src/lightning/primitiveInputToggle/input-toggle.slds.css +50 -27
  180. package/src/lightning/primitiveInputToggle/primitiveInputToggle.js +5 -2
  181. package/src/lightning/primitiveInputToggle/primitiveInputToggle.js-meta.xml +6 -0
  182. package/src/lightning/progressBar/progress-bar.slds.css +8 -10
  183. package/src/lightning/progressRing/progress-ring.slds.css +0 -23
  184. package/src/lightning/progressStep/progressStep.js +1 -14
  185. package/src/lightning/radioGroup/form-element.slds.css +54 -54
  186. package/src/lightning/radioGroup/radioGroup.html +1 -2
  187. package/src/lightning/radioGroup/radioGroup.js +1 -0
  188. package/src/lightning/routingService/routingService.js +31 -5
  189. package/src/lightning/select/form-element.slds.css +54 -54
  190. package/src/lightning/select/select.slds.css +4 -2
  191. package/src/lightning/sldsUtilsVisibility/sldsUtilsVisibility.css +4 -0
  192. package/src/lightning/spinner/spinner.slds.css +62 -62
  193. package/src/lightning/tab/tab.js +4 -2
  194. package/src/lightning/tab/tab.slds.css +14 -7
  195. package/src/lightning/tabBar/tab-bar.slds.css +16 -6
  196. package/src/lightning/tabset/__docs__/tabset.md +24 -1
  197. package/src/lightning/tabset/tabset.js +25 -38
  198. package/src/lightning/tabset/tabset.slds.css +0 -2
  199. package/src/lightning/textarea/form-element.slds.css +54 -54
  200. package/src/lightning/textarea/textarea.js +5 -1
  201. package/src/lightning/textarea/textarea.slds.css +22 -9
  202. package/src/lightning/timepicker/form-element.slds.css +54 -54
  203. package/src/lightning/timepicker/timepicker.js-meta.xml +6 -0
  204. package/src/lightning/timepicker/timepicker.slds.css +2 -2
  205. package/src/lightning/toast/__docs__/toast.md +20 -22
  206. package/src/lightning/toast/button-icon.slds.css +1 -1
  207. package/src/lightning/toast/icon.slds.css +12 -25
  208. package/src/lightning/toast/toast.js +15 -12
  209. package/src/lightning/toast/toast.slds.css +6 -18
  210. package/src/lightning/toastContainer/toast.slds.css +6 -18
  211. package/src/lightning/toastContainer/toastContainer.js +25 -17
  212. package/src/lightning/tooltipLibrary/tooltipLibrary.js +12 -9
  213. package/src/lightning/tree/tree.js +2 -0
  214. package/src/lightning/utils/classSet.js +9 -3
  215. package/src/lightning/utilsPrivate/formatUtils.js +158 -0
  216. package/src/lightning/utilsPrivate/textUtils.js +16 -0
  217. package/src/lightning/utilsPrivate/utilsPrivate.js +56 -15
  218. package/src/lightning/utilsPrivate/validationUtils.js +59 -0
  219. package/src/lightning/verticalNavigationSection/vertical-navigation-section.slds.css +0 -2
  220. package/src/lightning/datatable/resizeSensor.js +0 -244
  221. package/src/lightning/formattedRichText/linkify.js +0 -43
  222. package/src/lightning/utilsPrivate/smartSetAttribute.js +0 -19
@@ -66,9 +66,10 @@ export class RenderManager {
66
66
  /**
67
67
  * Updates and normalizes configuration for RenderManager
68
68
  * Used when setting renderConfig for datatable
69
- * @param {Object} state - datatable state
70
- * @param {Function} getWrapperHeight - function to get height of datatable wrapper
71
- * @param {RenderManagerConfig} config - set of properties used for render management
69
+ *
70
+ * @param {Object} state - The datatable state
71
+ * @param {Function} getWrapperHeight - A function to get height of datatable wrapper
72
+ * @param {RenderManagerConfig} config - The render management config
72
73
  */
73
74
  configure(state, getWrapperHeight, config) {
74
75
  const {
@@ -282,8 +283,9 @@ export class RenderManager {
282
283
  * @param {Node} resizeTarget
283
284
  */
284
285
  connectResizeObserver(resizeTarget) {
285
- if (this._heightResizeObserver) {
286
- this._heightResizeObserver.observe(resizeTarget);
286
+ const { _heightResizeObserver } = this;
287
+ if (_heightResizeObserver) {
288
+ _heightResizeObserver.observe(resizeTarget);
287
289
  this._resizeObserverConnected = true;
288
290
  }
289
291
  }
@@ -292,9 +294,10 @@ export class RenderManager {
292
294
  * Disconnect the resize observer
293
295
  */
294
296
  disconnectResizeObserver() {
295
- if (this._heightResizeObserver) {
297
+ const { _heightResizeObserver } = this;
298
+ if (_heightResizeObserver) {
296
299
  this._resizeObserverConnected = false;
297
- this._heightResizeObserver.disconnect();
300
+ _heightResizeObserver.disconnect();
298
301
  }
299
302
  }
300
303
 
@@ -1,7 +1,5 @@
1
1
  import { LightningResizeObserver } from 'lightning/resizeObserver';
2
2
  import { isTableRenderedVisible } from './columnResizer';
3
- import { ResizeSensor } from './resizeSensor';
4
- import { debounce } from 'lightning/inputUtils';
5
3
  import { getColumns } from './columns';
6
4
 
7
5
  const WIDTH_OBSERVER_SELECTOR = '.dt-width-observer';
@@ -17,31 +15,19 @@ export class LightningDatatableResizeObserver {
17
15
  constructor(template, state, widthsData, columnWidthManager) {
18
16
  const resizeTarget = template.querySelector(WIDTH_OBSERVER_SELECTOR);
19
17
 
20
- // If ResizeObserver is available on the browser, create one and begin observing for changes
18
+ // Create ResizeObserver and begin observing for changes.
21
19
  // Calculate and modify the column widths when there are changes to the dimensions
22
20
  // and when the table is rendered and visible on screen
23
- if (this._resizeObserverAvailable) {
24
- this._resizeObserver = new LightningResizeObserver(() => {
25
- if (this._connected && isTableRenderedVisible(template)) {
26
- columnWidthManager.adjustColumnsSizeAfterResize(
27
- template,
28
- getColumns(state),
29
- widthsData
30
- );
31
- }
32
- });
33
- this._resizeObserver.observe(resizeTarget);
34
- } else {
35
- // fallback behavior for IE11 using existing resize sensor functionality (less performant)
36
- this._resizeSensor = createResizeSensorForIE11(
37
- this,
38
- columnWidthManager,
39
- template,
40
- state,
41
- widthsData,
42
- resizeTarget
43
- );
44
- }
21
+ this._resizeObserver = new LightningResizeObserver(() => {
22
+ if (this._connected && isTableRenderedVisible(template)) {
23
+ columnWidthManager.adjustColumnsSizeAfterResize(
24
+ template,
25
+ getColumns(state),
26
+ widthsData
27
+ );
28
+ }
29
+ });
30
+ this._resizeObserver.observe(resizeTarget);
45
31
 
46
32
  this._connected = true;
47
33
  }
@@ -75,37 +61,3 @@ export class LightningDatatableResizeObserver {
75
61
  return this._connected;
76
62
  }
77
63
  }
78
-
79
- /**
80
- * Creates a ResizeSensor which is used to observe the dimensions of an element.
81
- *
82
- * This ResizeSensor is only used in the event that the standard ResizeObserver
83
- * is NOT available on the browser.
84
- * Currently only IE11 does not support the ResizeObserver. We should be able to
85
- * remove this once we fully drop support of IE11.
86
- */
87
- function createResizeSensorForIE11(
88
- dtObserver,
89
- columnWidthManager,
90
- template,
91
- state,
92
- widthsData,
93
- resizeTarget
94
- ) {
95
- return new ResizeSensor(
96
- resizeTarget,
97
- debounce(() => {
98
- // since this event handler is debounced, it might be the case that at the time the handler is called,
99
- // the element is disconnected (this.hasDetachedListeners)
100
- // the scroll event which the ResizeSensor uses can happen when table is hidden (as in console when switching tabs)
101
- // and hence the need for isTableRenderedVisible check
102
- if (dtObserver.isConnected() && isTableRenderedVisible(template)) {
103
- columnWidthManager.adjustColumnsSizeAfterResize(
104
- template,
105
- getColumns(state),
106
- widthsData
107
- );
108
- }
109
- }, 200)
110
- );
111
- }
@@ -60,16 +60,17 @@ export function handleLoadDynamicActions(event) {
60
60
  export function handleCellButtonClick(event) {
61
61
  event.stopPropagation();
62
62
 
63
+ const { state } = this;
63
64
  const { colKeyValue, rowKeyValue } = event.detail;
64
- const row = getUserRowByCellKeys(this.state, rowKeyValue, colKeyValue);
65
- const userColumnIndex = getUserColumnIndex(this.state, colKeyValue);
66
- const userColumnDefinition = this._columns[userColumnIndex];
65
+ const selectedRow = getUserRowByCellKeys(state, rowKeyValue, colKeyValue);
66
+ const colIndex = getUserColumnIndex(state, colKeyValue);
67
+ const col = this._columns[colIndex];
67
68
 
68
69
  this.dispatchEvent(
69
70
  new CustomEvent('rowaction', {
70
71
  detail: {
71
- action: unwrap(userColumnDefinition.typeAttributes),
72
- row: unwrap(row),
72
+ action: unwrap(col.typeAttributes),
73
+ row: unwrap(selectedRow),
73
74
  },
74
75
  })
75
76
  );
@@ -4,15 +4,16 @@ import labelRowNumber from '@salesforce/label/LightningDatatable.rowNumber';
4
4
  import { formatLabel } from 'lightning/utils';
5
5
  import { normalizeBoolean } from 'lightning/utilsPrivate';
6
6
 
7
- export const TOOLTIP_ALLOWANCE = 20;
8
7
  const CHAR_WIDTH = 10;
9
- const ROWNUMBER_PADDING = 12;
8
+ const ROW_NUMBER_PADDING = 12;
10
9
  const ROW_NUMBER_COLUMN_TYPE = 'rowNumber';
11
10
  const i18n = {
12
11
  rowLevelErrorAssistiveText: labelRowLevelErrorAssistiveText,
13
12
  rowNumber: labelRowNumber,
14
13
  };
15
14
 
15
+ export const TOOLTIP_ALLOWANCE = 20;
16
+
16
17
  /**
17
18
  * Returns the initial default column definition
18
19
  * for the row number column
@@ -74,22 +75,22 @@ export function isRowNumberColumn(column) {
74
75
  }
75
76
 
76
77
  /**
77
- * Calculates the width of the row number column
78
+ * Calculates the width of the row number column.
78
79
  * This takes into account the number of digits in the row number
79
80
  * (ex. 3 for 100 rows), padding in the cell and
80
- * space allowance for the error tooltip which is rendered in this cell
81
+ * space allowance for the error tooltip which is rendered in this cell.
81
82
  *
82
- * @param {Object} state - datatable's state object
83
+ * @param {Object} state - The datatable state
83
84
  * @returns
84
85
  */
85
86
  export function getAdjustedRowNumberColumnWidth(state) {
86
- const numOfRows = state.rows.length;
87
- const offset = state.rowNumberOffset;
88
- const numberOfChars = String(numOfRows + offset).length;
87
+ const numberOfChars = String(
88
+ state.rows.length + state.rowNumberOffset
89
+ ).length;
89
90
  return Math.max(
90
91
  CHAR_WIDTH * numberOfChars +
91
- ROWNUMBER_PADDING /* padding */ +
92
- TOOLTIP_ALLOWANCE /* primitive-tootlip */,
92
+ ROW_NUMBER_PADDING /* padding */ +
93
+ TOOLTIP_ALLOWANCE /* primitive-tooltip */,
93
94
  getRowNumberColumnDef().initialWidth
94
95
  );
95
96
  }
@@ -98,15 +99,14 @@ export function getAdjustedRowNumberColumnWidth(state) {
98
99
  * Retrieves the column index of the row number column
99
100
  * Returns -1 if the row number column is not present
100
101
  *
101
- * @param {Object} state - datatable's state object
102
+ * @param {Object} state - The datatable state
102
103
  * @returns {Number} index of row number column. Returns -1 if not present
103
104
  */
104
105
  export function getRowNumberColumnIndex(state) {
105
- if (hasRowNumberColumn(state) && state.columns.length > 0) {
106
- const columns = state.columns;
107
- for (let i = 0; i < columns.length; i++) {
108
- const column = columns[i];
109
- if (column.type === ROW_NUMBER_COLUMN_TYPE) {
106
+ if (hasRowNumberColumn(state)) {
107
+ const { columns } = state;
108
+ for (let i = 0, { length } = columns; i < length; i += 1) {
109
+ if (columns[i].type === ROW_NUMBER_COLUMN_TYPE) {
110
110
  return i;
111
111
  }
112
112
  }
@@ -124,13 +124,13 @@ export function getRowNumberColumnIndex(state) {
124
124
  * @returns
125
125
  */
126
126
  export function getRowNumberErrorColumnDef(rowErrors, rowTitle) {
127
- const { title, messages } = rowErrors;
128
-
129
- const numberOfErrors = rowErrors.cells
130
- ? Object.keys(rowErrors.cells).length
131
- : rowErrors.fieldNames
132
- ? rowErrors.fieldNames.length
133
- : 0;
127
+ const { cells, fieldNames, messages, title } = rowErrors || {};
128
+ let numberOfErrors = 0;
129
+ if (cells) {
130
+ numberOfErrors = Object.keys(cells).length;
131
+ } else if (fieldNames) {
132
+ numberOfErrors = fieldNames.length;
133
+ }
134
134
 
135
135
  const alternativeText = formatLabel(
136
136
  i18n.rowLevelErrorAssistiveText,