lightning-base-components 1.14.6-alpha → 1.15.2-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 (169) hide show
  1. package/metadata/raptor.json +31 -4
  2. package/package.json +13 -2
  3. package/scopedImports/@salesforce-internal-core.appVersion.js +1 -1
  4. package/scopedImports/@salesforce-label-LightningMap.defaultTitle.js +1 -0
  5. package/scopedImports/@salesforce-label-LightningProgressBar.progressBar.js +1 -0
  6. package/src/lightning/alert/__docs__/alert.md +99 -0
  7. package/src/lightning/alert/__examples__disabled/basic/basic.css +7 -0
  8. package/src/lightning/alert/__examples__disabled/basic/basic.html +8 -0
  9. package/src/lightning/alert/__examples__disabled/basic/basic.js +14 -0
  10. package/src/lightning/alert/alert.html +3 -0
  11. package/src/lightning/alert/alert.js +78 -0
  12. package/src/lightning/alert/alert.js-meta.xml +6 -0
  13. package/src/lightning/baseCombobox/baseCombobox.html +2 -1
  14. package/src/lightning/baseCombobox/baseCombobox.js +41 -6
  15. package/src/lightning/button/__wdio__/utam/utam.html +3 -0
  16. package/src/lightning/button/__wdio__/utam/utam.js +3 -0
  17. package/src/lightning/button/__wdio__/utam/utam.spec.js +20 -0
  18. package/src/lightning/button/button.js +22 -1
  19. package/src/lightning/buttonMenu/buttonMenu.js +12 -0
  20. package/src/lightning/checkboxGroup/checkboxGroup.html +2 -2
  21. package/src/lightning/checkboxGroup/checkboxGroup.js +9 -5
  22. package/src/lightning/combobox/__docs__/combobox.md +3 -1
  23. package/src/lightning/combobox/combobox.js +0 -1
  24. package/src/lightning/confirm/__docs__/confirm.md +98 -0
  25. package/src/lightning/confirm/__examples__disabled/basic/basic.css +7 -0
  26. package/src/lightning/confirm/__examples__disabled/basic/basic.html +8 -0
  27. package/src/lightning/confirm/__examples__disabled/basic/basic.js +14 -0
  28. package/src/lightning/confirm/confirm.html +3 -0
  29. package/src/lightning/confirm/confirm.js +80 -0
  30. package/src/lightning/confirm/confirm.js-meta.xml +6 -0
  31. package/src/lightning/datatable/__docs__/datatable.md +45 -0
  32. package/src/lightning/datatable/__wdio__/utam/utam.html +32 -0
  33. package/src/lightning/datatable/__wdio__/utam/utam.js +91 -0
  34. package/src/lightning/datatable/__wdio__/utam/utam.spec.js +214 -0
  35. package/src/lightning/datatable/columns.js +166 -71
  36. package/src/lightning/datatable/datatable.js +103 -20
  37. package/src/lightning/datatable/headerActions.js +2 -2
  38. package/src/lightning/datatable/inlineEdit.js +0 -5
  39. package/src/lightning/datatable/inlineEditShared.js +4 -2
  40. package/src/lightning/datatable/keyboard.js +17 -13
  41. package/src/lightning/datatable/renderManager.js +45 -13
  42. package/src/lightning/datatable/resizeSensor.js +11 -3
  43. package/src/lightning/datatable/rowSelection.js +9 -3
  44. package/src/lightning/datatable/rowSelectionShared.js +33 -20
  45. package/src/lightning/datatable/rows.js +3 -2
  46. package/src/lightning/datatable/sort.js +8 -8
  47. package/src/lightning/datatable/state.js +9 -1
  48. package/src/lightning/datatable/templates/div/div.html +6 -2
  49. package/src/lightning/datatable/templates/table/table.html +7 -4
  50. package/src/lightning/datatable/tree.js +25 -0
  51. package/src/lightning/datatable/types.js +77 -9
  52. package/src/lightning/datatable/utils.js +51 -24
  53. package/src/lightning/datatable/virtualization.js +319 -0
  54. package/src/lightning/datatable/wrapText.js +54 -16
  55. package/src/lightning/datepicker/__perf__DISABLED/datepickerWithCalendarOpen.perf.js +55 -0
  56. package/src/lightning/datepicker/datepicker.html +1 -0
  57. package/src/lightning/datepicker/datepicker.js +10 -0
  58. package/src/lightning/datetimepicker/datetimepicker.html +2 -0
  59. package/src/lightning/datetimepicker/datetimepicker.js +8 -0
  60. package/src/lightning/dualListbox/dualListbox.js +2 -1
  61. package/src/lightning/formattedAddress/__docs__/formattedAddress.md +3 -0
  62. package/src/lightning/formattedAddress/__examples__/customLocale/customLocale.html +22 -0
  63. package/src/lightning/formattedAddress/__examples__/customLocale/customLocale.js +3 -0
  64. package/src/lightning/formattedAddress/formattedAddress.js +7 -1
  65. package/src/lightning/groupedCombobox/groupedCombobox.html +2 -1
  66. package/src/lightning/groupedCombobox/groupedCombobox.js +16 -2
  67. package/src/lightning/iconSvgTemplates/buildTemplates/standard/dashboard_component.html +7 -0
  68. package/src/lightning/iconSvgTemplates/buildTemplates/standard/slack.html +7 -0
  69. package/src/lightning/iconSvgTemplates/buildTemplates/standard/tableau.html +7 -0
  70. package/src/lightning/iconSvgTemplates/buildTemplates/standard/travel_mode.html +2 -2
  71. package/src/lightning/iconSvgTemplates/buildTemplates/templates.js +8 -1
  72. package/src/lightning/iconSvgTemplates/buildTemplates/utility/data_model.html +7 -0
  73. package/src/lightning/iconSvgTemplates/buildTemplates/utility/serialized_product.html +1 -1
  74. package/src/lightning/iconSvgTemplates/buildTemplates/utility/serialized_product_transaction.html +2 -1
  75. package/src/lightning/iconSvgTemplates/buildTemplates/utility/slack.html +7 -0
  76. package/src/lightning/iconSvgTemplates/buildTemplates/utility/tableau.html +7 -0
  77. package/src/lightning/iconSvgTemplates/buildTemplates/utility/video_off.html +7 -0
  78. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/standard/dashboard_component.html +7 -0
  79. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/standard/slack.html +7 -0
  80. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/standard/tableau.html +7 -0
  81. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/standard/travel_mode.html +2 -2
  82. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/templates.js +8 -1
  83. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/utility/data_model.html +7 -0
  84. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/utility/serialized_product.html +1 -1
  85. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/utility/serialized_product_transaction.html +2 -1
  86. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/utility/slack.html +7 -0
  87. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/utility/tableau.html +7 -0
  88. package/src/lightning/iconSvgTemplatesRtl/buildTemplates/utility/video_off.html +7 -0
  89. package/src/lightning/iconSvgTemplatesStandard/buildTemplates/standard/dashboard_component.html +7 -0
  90. package/src/lightning/iconSvgTemplatesStandard/buildTemplates/standard/slack.html +7 -0
  91. package/src/lightning/iconSvgTemplatesStandard/buildTemplates/standard/tableau.html +7 -0
  92. package/src/lightning/iconSvgTemplatesStandard/buildTemplates/standard/travel_mode.html +2 -2
  93. package/src/lightning/iconSvgTemplatesStandard/buildTemplates/templates.js +4 -1
  94. package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/standard/dashboard_component.html +7 -0
  95. package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/standard/slack.html +7 -0
  96. package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/standard/tableau.html +7 -0
  97. package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/standard/travel_mode.html +2 -2
  98. package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/templates.js +4 -1
  99. package/src/lightning/iconSvgTemplatesUtility/buildTemplates/templates.js +5 -1
  100. package/src/lightning/iconSvgTemplatesUtility/buildTemplates/utility/data_model.html +7 -0
  101. package/src/lightning/iconSvgTemplatesUtility/buildTemplates/utility/serialized_product.html +1 -1
  102. package/src/lightning/iconSvgTemplatesUtility/buildTemplates/utility/serialized_product_transaction.html +2 -1
  103. package/src/lightning/iconSvgTemplatesUtility/buildTemplates/utility/slack.html +7 -0
  104. package/src/lightning/iconSvgTemplatesUtility/buildTemplates/utility/tableau.html +7 -0
  105. package/src/lightning/iconSvgTemplatesUtility/buildTemplates/utility/video_off.html +7 -0
  106. package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/templates.js +5 -1
  107. package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/utility/data_model.html +7 -0
  108. package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/utility/serialized_product.html +1 -1
  109. package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/utility/serialized_product_transaction.html +2 -1
  110. package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/utility/slack.html +7 -0
  111. package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/utility/tableau.html +7 -0
  112. package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/utility/video_off.html +7 -0
  113. package/src/lightning/input/__docs__/input.md +2 -0
  114. package/src/lightning/input/input.html +6 -0
  115. package/src/lightning/input/input.js +2 -1
  116. package/src/lightning/inputAddress/__docs__/inputAddress.md +5 -0
  117. package/src/lightning/inputAddress/__examples__/customLocale/customLocale.html +12 -0
  118. package/src/lightning/inputAddress/__examples__/customLocale/customLocale.js +3 -0
  119. package/src/lightning/inputAddress/inputAddress.html +2 -0
  120. package/src/lightning/inputAddress/inputAddress.js +26 -3
  121. package/src/lightning/inputName/__docs__/inputName.md +2 -0
  122. package/src/lightning/inputName/inputName.html +4 -1
  123. package/src/lightning/inputUtils/inputUtils.js +11 -0
  124. package/src/lightning/interactiveDialogBase/interactiveDialogBase.css +494 -0
  125. package/src/lightning/interactiveDialogBase/interactiveDialogBase.html +63 -0
  126. package/src/lightning/interactiveDialogBase/interactiveDialogBase.js +200 -0
  127. package/src/lightning/menuItem/menuItem.js +4 -1
  128. package/src/lightning/modalBase/modalBase.css +20 -0
  129. package/src/lightning/modalBase/modalBase.html +54 -0
  130. package/src/lightning/modalBase/modalBase.js +1039 -0
  131. package/src/lightning/overlay/__docs__/overlay.md +90 -0
  132. package/src/lightning/overlay/__examples__/alert/alert.html +27 -0
  133. package/src/lightning/overlay/__examples__/alert/alert.js +33 -0
  134. package/src/lightning/overlay/__examples__/basic/basic.css +7 -0
  135. package/src/lightning/overlay/__examples__/basic/basic.html +18 -0
  136. package/src/lightning/overlay/__examples__/basic/basic.js +61 -0
  137. package/src/lightning/overlay/__examples__/demo/demo.html +29 -0
  138. package/src/lightning/overlay/__examples__/demo/demo.js +40 -0
  139. package/src/lightning/overlay/__examples__/panel/panel.html +17 -0
  140. package/src/lightning/overlay/__examples__/panel/panel.js +21 -0
  141. package/src/lightning/overlay/overlay.html +3 -0
  142. package/src/lightning/overlay/overlay.js +45 -0
  143. package/src/lightning/overlayContainer/__docs__/overlayContainer.md +0 -0
  144. package/src/lightning/overlayContainer/overlayContainer.html +3 -0
  145. package/src/lightning/overlayContainer/overlayContainer.js +138 -0
  146. package/src/lightning/overlayManager/overlayManager.js +54 -0
  147. package/src/lightning/overlayUtils/overlayUtils.js +17 -0
  148. package/src/lightning/picklist/picklist.js +6 -1
  149. package/src/lightning/progressBar/progressBar.html +2 -1
  150. package/src/lightning/progressBar/progressBar.js +18 -1
  151. package/src/lightning/prompt/__docs__/prompt.md +100 -0
  152. package/src/lightning/prompt/__examples__disabled/basic/basic.css +7 -0
  153. package/src/lightning/prompt/__examples__disabled/basic/basic.html +8 -0
  154. package/src/lightning/prompt/__examples__disabled/basic/basic.js +15 -0
  155. package/src/lightning/prompt/prompt.css +81 -0
  156. package/src/lightning/prompt/prompt.html +8 -0
  157. package/src/lightning/prompt/prompt.js +92 -0
  158. package/src/lightning/prompt/prompt.js-meta.xml +6 -0
  159. package/src/lightning/radioGroup/radioGroup.js +9 -0
  160. package/src/lightning/select/select.html +3 -1
  161. package/src/lightning/select/select.js +5 -1
  162. package/src/lightning/textarea/textarea.html +1 -0
  163. package/src/lightning/textarea/textarea.js +5 -0
  164. package/src/lightning/timepicker/timepicker.html +3 -1
  165. package/src/lightning/timepicker/timepicker.js +8 -0
  166. package/src/lightning/utilsPrivate/aria.js +26 -0
  167. package/src/lightning/utilsPrivate/linkify.js +1 -1
  168. package/src/lightning/utilsPrivate/utilsPrivate.js +7 -1
  169. package/src/lightning/icon/__component__/icon-spirite.spec.js +0 -59
@@ -0,0 +1,200 @@
1
+ import { classSet } from 'lightning/utils';
2
+ import {
3
+ hasAnimation,
4
+ normalizeString,
5
+ synchronizeAttrs,
6
+ getRealDOMId,
7
+ } from 'lightning/utilsPrivate';
8
+ import { instanceName } from 'lightning/overlayUtils';
9
+ import { findAllTabbableElements } from 'lightning/focusUtils';
10
+ import LightningModalBase from 'lightning/modalBase';
11
+ import labelOK from '@salesforce/label/LightningInteractiveDialogBase.ok';
12
+ import labelCancel from '@salesforce/label/LightningInteractiveDialogBase.cancel';
13
+
14
+ // options for header theme based on SLDS themes
15
+ const themeOptions = [
16
+ 'default',
17
+ 'shade',
18
+ 'inverse',
19
+ 'alt-inverse',
20
+ 'success',
21
+ 'info',
22
+ 'warning',
23
+ 'error',
24
+ 'offline',
25
+ ];
26
+
27
+ /**
28
+ * Base component used for lightning-alert,
29
+ * lightning-confirm and lightning-prompt
30
+ */
31
+ export default class LightningModal extends LightningModalBase {
32
+ static [instanceName] = 'lightning-interactive-dialog-base';
33
+
34
+ label;
35
+ description;
36
+ okText = labelOK;
37
+ cancelText = labelCancel;
38
+
39
+ getChildProperty(property) {
40
+ if (this.defaultSlot) {
41
+ return this.defaultSlot.firstChild[property];
42
+ }
43
+ return null;
44
+ }
45
+
46
+ /**
47
+ * Sets variant to determine
48
+ * if header or headerless
49
+ */
50
+ setVariant() {
51
+ const variant = this.getChildProperty('variant');
52
+ const normalizedVariant = normalizeString(variant, {
53
+ fallbackValue: 'header',
54
+ validValues: ['header', 'headerless'],
55
+ });
56
+ this.showHeader = normalizedVariant === 'header';
57
+ }
58
+
59
+ /**
60
+ * Calls functions to set all properties
61
+ * that depend on slot being rendered
62
+ */
63
+ setChildProperties(detail) {
64
+ this.role = detail.role;
65
+ this.label = detail.label;
66
+ this.hideCancel = detail.hideCancel;
67
+ this.getOkValue = detail.getOkValue;
68
+ this.getCancelValue = detail.getCancelValue;
69
+ this.description = detail.showDescription ? detail.message : '';
70
+ this.setVariant();
71
+ }
72
+
73
+ updateAriaLabelledBy() {
74
+ if (this.showHeader) {
75
+ const heading = this.template.querySelector('[data-modal-heading]');
76
+ const headingId = getRealDOMId(heading);
77
+ synchronizeAttrs(this.modalWrapper, {
78
+ 'aria-labelledby': headingId,
79
+ });
80
+ }
81
+ }
82
+
83
+ /**
84
+ * gets aria-label value to set through template
85
+ * ensures that renderedCallback gets extra call needed
86
+ */
87
+ get ariaLabel() {
88
+ return this.showHeader ? null : this.label;
89
+ }
90
+
91
+ get computedModalHeaderCssClasses() {
92
+ const theme = this.getChildProperty('theme');
93
+ const normalizedTheme = normalizeString(theme, {
94
+ fallbackValue: 'default',
95
+ validValues: themeOptions,
96
+ });
97
+ const classes = classSet('slds-modal__header slds-theme_alert-texture');
98
+ classes.add(`slds-theme_${normalizedTheme}`);
99
+ return classes.toString();
100
+ }
101
+
102
+ get computedModalContentCssClasses() {
103
+ const classes = classSet('slds-modal__content slds-p-around_medium');
104
+ classes.add({
105
+ 'slds-modal__content_headless': !this.showHeader,
106
+ });
107
+ return classes.toString();
108
+ }
109
+
110
+ get computedModalCssClasses() {
111
+ //waiting for x-small modal size
112
+ const classes = classSet('slds-modal fix-slds-modal slds-modal_prompt');
113
+ if (hasAnimation()) {
114
+ classes.add({
115
+ 'slds-fade-in-open': this.isModalTransitioningIn,
116
+ });
117
+ } else {
118
+ classes.add({
119
+ 'slds-fade-in-open': true,
120
+ });
121
+ }
122
+ return classes.toString();
123
+ }
124
+
125
+ /**
126
+ * Handles clicking the "OK" button
127
+ * Closes modal with "okValue" set in child
128
+ */
129
+ handleOkClick() {
130
+ let okValue;
131
+ if (this.getOkValue) {
132
+ okValue = this.getOkValue();
133
+ }
134
+ this.modal.close(okValue);
135
+ }
136
+
137
+ /**
138
+ * Handles clicking the "Cancel" button and
139
+ * Overrides handleCloseClick in modalBase
140
+ * to address closing by "Escape" use case
141
+ * Closes modal with "cancelValue" set in child
142
+ */
143
+ handleCloseClick() {
144
+ let cancelValue;
145
+ if (this.getCancelValue) {
146
+ cancelValue = this.getCancelValue();
147
+ }
148
+ this.modal.close(cancelValue);
149
+ }
150
+
151
+ /**
152
+ * Focus/select first focusable element in slot
153
+ * if present, otherwise focuses wrapper
154
+ */
155
+ focusElement() {
156
+ const tabbableElems = findAllTabbableElements(this.defaultSlot);
157
+ if (tabbableElems && tabbableElems.length) {
158
+ const focusElem = tabbableElems[0];
159
+ focusElem.focus();
160
+ if (focusElem.select) {
161
+ focusElem.select();
162
+ }
163
+ } else {
164
+ this.modalWrapper.focus();
165
+ }
166
+ }
167
+
168
+ /**
169
+ * Event handler for childrender event
170
+ * from alert/confirm/prompt
171
+ * Sets properties, aria attributes
172
+ * and focuses element
173
+ */
174
+ handlePrivateChildRender(event) {
175
+ event.stopPropagation();
176
+ this.setChildProperties(event.detail || {});
177
+ if (!this.isModalTransitioningIn) {
178
+ this.queueShowModal();
179
+ }
180
+ }
181
+
182
+ /**
183
+ * Opens modal on initial render, sets aria attributes
184
+ * and focuses element on second render
185
+ */
186
+ renderedCallback() {
187
+ if (this.initialRender) {
188
+ this.openModal();
189
+ this.initialRender = false;
190
+ } else if (this.modalWrapper) {
191
+ this.template.host.style = 'z-index: 9099; position: absolute;';
192
+ this.updateAriaDescription();
193
+ this.updateAriaLabelledBy();
194
+ if (!this.autoFocusCompletedOnce) {
195
+ this.focusElement();
196
+ this.autoFocusCompletedOnce = true;
197
+ }
198
+ }
199
+ }
200
+ }
@@ -222,7 +222,7 @@ export default class LightningMenuItem extends LightningElement {
222
222
  return this.isMenuItemCheckbox ? 'menuitemcheckbox' : 'menuitem';
223
223
  }
224
224
 
225
- handleBlur() {
225
+ handleBlur(event) {
226
226
  this.dispatchEvent(new CustomEvent('blur'));
227
227
 
228
228
  // we need to trigger a private blur to make it bubble and be handled by parent button-menu
@@ -231,6 +231,9 @@ export default class LightningMenuItem extends LightningElement {
231
231
  composed: true,
232
232
  bubbles: true,
233
233
  cancelable: true,
234
+ detail: {
235
+ relatedTarget: event.relatedTarget,
236
+ },
234
237
  })
235
238
  );
236
239
  }
@@ -0,0 +1,20 @@
1
+ /* Modal close button */
2
+
3
+ .fix-slds-modal-close-disabled {
4
+ opacity: 0.15;
5
+ }
6
+
7
+ /* Required for autofocus to work correctly:
8
+ - child elements of modal appear 'visibility: hidden' at
9
+ the moment that they are being reviewed for eligibility
10
+ for focus in focus.js at isElementVisible()
11
+ */
12
+ .fix-slds-modal {
13
+ visibility: visible;
14
+ z-index: unset;
15
+ }
16
+
17
+ /* Required for z-index */
18
+ .fix-slds-backdrop {
19
+ z-index: unset;
20
+ }
@@ -0,0 +1,54 @@
1
+ <template>
2
+ <div
3
+ class={modalBackdropCssClasses}
4
+ role="presentation"
5
+ data-backdrop
6
+ ></div>
7
+ <lightning-focus-trap>
8
+ <section
9
+ role="dialog"
10
+ tabindex="-1"
11
+ aria-modal="true"
12
+ class={modalCssClasses}
13
+ onkeydown={handleModalKeyDown}
14
+ onprivatemodalheaderregister={handleHeaderRegister}
15
+ onprivatemodalbodyregister={handleBodyRegister}
16
+ onprivatemodalfooterregister={handleFooterRegister}
17
+ onprivateclose={handlePrivateClose}
18
+ onprivatedisableclosebutton={handlePrivateDisableCloseButton}
19
+ data-modal
20
+ >
21
+ <template if:true={showAriaDescribedBy}>
22
+ <span
23
+ id="modal-description"
24
+ class="slds-assistive-text"
25
+ data-aria-description
26
+ >{description}</span>
27
+ </template>
28
+ <template if:true={showAriaLiveMessage}>
29
+ <span
30
+ aria-live="polite"
31
+ role="status"
32
+ class="slds-assistive-text"
33
+ data-aria-live-message
34
+ >{ariaLiveMessage}</span>
35
+ </template>
36
+ <div
37
+ class="slds-modal__container"
38
+ data-container
39
+ >
40
+ <lightning-button-icon
41
+ class={modalCloseButtonCssClasses}
42
+ icon-name="utility:close"
43
+ variant="bare-inverse"
44
+ alternative-text={closeButtonAltText}
45
+ onclick={handleCloseClick}
46
+ size="large"
47
+ disabled={disableCloseButton}
48
+ data-close-button
49
+ ></lightning-button-icon>
50
+ <div data-slot lwc:dom="manual"></div>
51
+ </div>
52
+ </section>
53
+ </lightning-focus-trap>
54
+ </template>