lightning-base-components 1.21.2-alpha → 1.21.4-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.
- package/metadata/raptor.json +77 -1
- package/package.json +108 -15
- package/scopedImports/@salesforce-label-LightningDatatable.showActions.js +1 -1
- package/scopedImports/@salesforce-label-LightningForm.controllerFieldsMessage.js +1 -0
- package/scopedImports/@salesforce-label-LightningForm.dependentFieldsHeader.js +1 -0
- package/scopedImports/@salesforce-label-LightningForm.dependentFieldsListHeading.js +1 -0
- package/scopedImports/@salesforce-label-LightningForm.generalDependentFieldsMessage.js +1 -0
- package/scopedImports/@salesforce-label-LightningForm.learnMore.js +1 -0
- package/scopedImports/@salesforce-label-LightningForm.okButton.js +1 -0
- package/scopedImports/@salesforce-label-LightningLookup.modalCancel.js +1 -0
- package/scopedImports/@salesforce-label-LightningLookup.modalSelect.js +1 -0
- package/scopedImports/@salesforce-label-LightningProgressIndicator.currentStage.js +1 -1
- package/scopedImports/@salesforce-label-LightningProgressIndicator.errorStage.js +1 -0
- package/scopedImports/@salesforce-label-LightningProgressIndicator.stageComplete.js +1 -1
- package/scopedImports/@salesforce-label-LightningProgressIndicator.stageNotStarted.js +1 -1
- package/scopedImports/@salesforce-label-LightningRichTextEditor.colorPicker.js +1 -0
- package/src/lightning/accordion/accordion-section.slds.css +3 -3
- package/src/lightning/accordion/accordion.slds.css +1 -2
- package/src/lightning/accordionSection/accordion-section.slds.css +3 -3
- package/src/lightning/accordionSection/accordionSection.js +3 -1
- package/src/lightning/accordionSection/button.slds.css +1 -1
- package/src/lightning/avatar/avatar.html +1 -0
- package/src/lightning/badge/badge.html +3 -3
- package/src/lightning/badge/badge.js +1 -0
- package/src/lightning/badge/badge.js-meta.xml +3 -0
- package/src/lightning/baseCombobox/base-combobox.slds.css +11 -6
- package/src/lightning/baseCombobox/baseCombobox.html +5 -2
- package/src/lightning/baseCombobox/baseCombobox.js +5 -18
- package/src/lightning/baseCombobox/baseCombobox.js-meta.xml +6 -0
- package/src/lightning/baseCombobox/input-text.slds.css +41 -68
- package/src/lightning/baseCombobox/keyboard.js +12 -4
- package/src/lightning/baseCombobox/listbox.slds.css +51 -99
- package/src/lightning/baseCombobox/spinner.slds.css +62 -62
- package/src/lightning/baseComboboxFormattedText/baseComboboxFormattedText.js-meta.xml +6 -0
- package/src/lightning/baseComboboxItem/baseComboboxItem.js +10 -6
- package/src/lightning/baseComboboxItem/baseComboboxItem.js-meta.xml +6 -0
- package/src/lightning/baseComboboxItem/listbox.slds.css +51 -99
- package/src/lightning/baseFormattedText/baseFormattedText.js +2 -2
- package/src/lightning/button/__docs__/button.md +2 -1
- package/src/lightning/button/button.js +5 -5
- package/src/lightning/button/button.slds.css +1 -1
- package/src/lightning/buttonIcon/__docs__/buttonIcon.md +1 -0
- package/src/lightning/buttonIcon/button-icon.slds.css +1 -1
- package/src/lightning/buttonIcon/buttonIcon.html +1 -1
- package/src/lightning/buttonIcon/buttonIcon.js +18 -17
- package/src/lightning/buttonIconStateful/button-icon-stateful.slds.css +4 -2
- package/src/lightning/buttonIconStateful/button-icon.slds.css +1 -1
- package/src/lightning/buttonIconStateful/button.slds.css +1 -1
- package/src/lightning/buttonMenu/button-icon.slds.css +1 -1
- package/src/lightning/buttonMenu/button-menu.slds.css +8 -2
- package/src/lightning/buttonMenu/button.slds.css +1 -1
- package/src/lightning/buttonMenu/buttonMenu.css +5 -0
- package/src/lightning/buttonMenu/buttonMenu.js +2 -0
- package/src/lightning/buttonStateful/button-stateful.slds.css +6 -2
- package/src/lightning/buttonStateful/button.slds.css +1 -1
- package/src/lightning/buttonStateful/buttonStateful.js +4 -1
- package/src/lightning/calendar/calendar.js-meta.xml +6 -0
- package/src/lightning/calendar/calendar.slds.css +9 -2
- package/src/lightning/colorPickerCustom/color-picker-custom.slds.css +22 -23
- package/src/lightning/colorPickerCustom/colorPickerCustom.js +12 -0
- package/src/lightning/colorPickerCustom/input-text.slds.css +41 -68
- package/src/lightning/colorPickerPanel/color-picker-panel.slds.css +9 -10
- package/src/lightning/colorPickerPanel/colorPickerPanel.js +11 -1
- package/src/lightning/colorPickerPanel/popover.slds.css +0 -2
- package/src/lightning/combobox/combobox.html +1 -0
- package/src/lightning/combobox/combobox.slds.css +1 -2
- package/src/lightning/combobox/form-element.slds.css +54 -54
- package/src/lightning/datatable/__examples__disabled/customComponentWrapper/customComponentWrapper.html +11 -0
- package/src/lightning/datatable/__examples__disabled/customComponentWrapper/customComponentWrapper.js +25 -0
- package/src/lightning/datatable/__examples__disabled/customComponentWrapper/generateData.js +15 -0
- package/src/lightning/datatable/__examples__disabled/customDatatableWrapper/customDatatableWrapper.js +89 -0
- package/src/lightning/datatable/__examples__disabled/customDatatypeDeleteRowBtn/customDatatypeDeleteRowBtn.html +6 -0
- package/src/lightning/datatable/{__examples__ → __examples__disabled}/customDatatypeDeleteRowBtn/customDatatypeDeleteRowBtn.js +1 -16
- package/src/lightning/datatable/__examples__disabled/customDatatypeLink/customDatatypeLink.html +9 -0
- package/src/lightning/datatable/__examples__disabled/customDatatypeRowOrderingBtn/customDatatypeRowOrderingBtn.html +3 -0
- package/src/lightning/datatable/__examples__disabled/customDatatypeRowOrderingBtn/customDatatypeRowOrderingBtn.js +3 -0
- package/src/lightning/datatable/__examples__disabled/customDatatypeTable/customNumber.html +3 -0
- package/src/lightning/datatable/{__examples__ → __examples__disabled}/customDatatypeTable/customNumberEdit.html +2 -0
- package/src/lightning/datatable/{__examples__ → __examples__disabled}/customDatatypeTable/deleteRow.html +3 -2
- package/src/lightning/datatable/{__examples__ → __examples__disabled}/customDatatypeTable/iconPill.html +1 -1
- package/src/lightning/datatable/{__examples__/customDatatypeRowOrderingBtn/customDatatypeRowOrderingBtn.html → __examples__disabled/customNestedComponent/customNestedComponent.html} +2 -2
- package/src/lightning/datatable/__examples__disabled/customNestedComponent/customNestedComponent.js +12 -0
- package/src/lightning/datatable/__examples__disabled/myCustomTypeDatatable/customInput.html +4 -0
- package/src/lightning/datatable/__examples__disabled/myCustomTypeDatatable/myCustomTypeDatatable.js +17 -0
- package/src/lightning/datatable/__examples__disabled/myCustomTypeDatatable/nestedSimpleComponentParent.html +7 -0
- package/src/lightning/datatable/__examples__disabled/simpleComponentNested/simpleComponentNested.html +9 -0
- package/src/lightning/datatable/__examples__disabled/simpleComponentNested/simpleComponentNested.js +6 -0
- package/src/lightning/datatable/autoWidthStrategy.js +145 -217
- package/src/lightning/datatable/columnResizer.js +80 -190
- package/src/lightning/datatable/columnWidthManager.js +128 -243
- package/src/lightning/datatable/columns.js +192 -283
- package/src/lightning/datatable/datagrid.slds.css +187 -0
- package/src/lightning/datatable/datatable.js +647 -614
- package/src/lightning/datatable/errors.js +19 -28
- package/src/lightning/datatable/fixedWidthStrategy.js +27 -49
- package/src/lightning/datatable/headerActions.js +10 -42
- package/src/lightning/datatable/indexes.js +42 -0
- package/src/lightning/datatable/infiniteLoading.js +27 -46
- package/src/lightning/datatable/inlineEdit.js +311 -322
- package/src/lightning/datatable/keyboard.js +490 -510
- package/src/lightning/datatable/renderManager.js +10 -11
- package/src/lightning/datatable/resizeObserver.js +10 -67
- package/src/lightning/datatable/rowLevelActions.js +7 -6
- package/src/lightning/datatable/rowNumber.js +41 -79
- package/src/lightning/datatable/rowSelection.js +236 -291
- package/src/lightning/datatable/rowSelectionShared.js +26 -33
- package/src/lightning/datatable/rows.js +264 -476
- package/src/lightning/datatable/sort.js +27 -82
- package/src/lightning/datatable/templates/div/div.css +2 -57
- package/src/lightning/datatable/templates/div/div.html +25 -10
- package/src/lightning/datatable/templates/div/div.lbc.native.css +3 -0
- package/src/lightning/datatable/templates/div/div.lbc.synthetic.css +80 -0
- package/src/lightning/datatable/templates/table/table.html +16 -5
- package/src/lightning/datatable/tree.js +17 -35
- package/src/lightning/datatable/types.js +10 -31
- package/src/lightning/datatable/utils.js +54 -29
- package/src/lightning/datatable/virtualization.js +2 -5
- package/src/lightning/datatable/widthManagerShared.js +24 -41
- package/src/lightning/datatable/wrapText.js +45 -77
- package/src/lightning/datepicker/datepicker.js +32 -9
- package/src/lightning/datepicker/datepicker.js-meta.xml +6 -0
- package/src/lightning/datepicker/form-element.slds.css +54 -54
- package/src/lightning/datepicker/input-text.slds.css +41 -68
- package/src/lightning/datetimepicker/datetimepicker.js-meta.xml +6 -0
- package/src/lightning/datetimepicker/form-element.slds.css +54 -54
- package/src/lightning/datetimepicker/input-text.slds.css +41 -68
- package/src/lightning/dualListbox/dual-listbox.slds.css +7 -2
- package/src/lightning/dualListbox/dualListbox.js +7 -8
- package/src/lightning/dualListbox/form-element.slds.css +54 -54
- package/src/lightning/dualListbox/listbox.slds.css +51 -99
- package/src/lightning/dynamicIcon/dynamic-icon-strength.slds.css +1 -2
- package/src/lightning/dynamicIcon/dynamic-icon-trend.slds.css +1 -2
- package/src/lightning/formattedDateTime/formattedDateTime.js +7 -62
- package/src/lightning/formattedDateTime/formattedDateTime.js-meta.xml +3 -0
- package/src/lightning/formattedLocation/formattedLocation.html +1 -3
- package/src/lightning/formattedLocation/formattedLocation.js +3 -25
- package/src/lightning/formattedLookup/events.js +2 -4
- package/src/lightning/formattedName/formattedName.js +3 -2
- package/src/lightning/formattedName/formattedName.js-meta.xml +3 -0
- package/src/lightning/formattedNumber/formattedNumber.js +5 -51
- package/src/lightning/formattedNumber/formattedNumber.js-meta.xml +3 -0
- package/src/lightning/formattedRichText/formattedRichText.js +5 -5
- package/src/lightning/formattedRichText/linkTextNodes.js +58 -0
- package/src/lightning/formattedRichText/richTextConfig.js +1 -0
- package/src/lightning/groupedCombobox/form-element.slds.css +54 -54
- package/src/lightning/groupedCombobox/grouped-combobox.slds.css +0 -2
- package/src/lightning/groupedCombobox/groupedCombobox.js-meta.xml +1 -1
- package/src/lightning/groupedCombobox/input-text.slds.css +41 -68
- package/src/lightning/helptext/button-icon.slds.css +1 -1
- package/src/lightning/helptext/form-element.slds.css +54 -54
- package/src/lightning/helptext/helptext.css +7 -0
- package/src/lightning/helptext/helptext.js +3 -4
- package/src/lightning/icon/icon.html +1 -1
- package/src/lightning/icon/icon.slds.css +12 -25
- package/src/lightning/input/form-element.slds.css +54 -54
- package/src/lightning/input/input.html +5 -0
- package/src/lightning/inputAddress/addressFormat.js +31 -4
- package/src/lightning/inputAddress/fieldsLayout.js +6 -0
- package/src/lightning/inputAddress/form-element.slds.css +54 -54
- package/src/lightning/inputAddress/input-address.slds.css +1 -2
- package/src/lightning/inputAddress/input-text.slds.css +41 -68
- package/src/lightning/inputAddress/inputAddress.html +19 -1
- package/src/lightning/inputAddress/inputAddress.js +75 -3
- package/src/lightning/inputAddress/inputAddress.js-meta.xml +3 -0
- package/src/lightning/inputLocation/form-element.slds.css +54 -54
- package/src/lightning/inputLocation/input-location.slds.css +1 -2
- package/src/lightning/inputLocation/input-text.slds.css +41 -68
- package/src/lightning/inputName/form-element.slds.css +54 -54
- package/src/lightning/inputName/input-text.slds.css +41 -68
- package/src/lightning/interactiveDialogBase/interactive-dialog-base.slds.css +0 -3
- package/src/lightning/interactiveDialogBase/interactiveDialogBase.js-meta.xml +6 -0
- package/src/lightning/internationalizationLibrary/address/AddressFormat.js +553 -610
- package/src/lightning/lookupAddress/form-element.slds.css +54 -54
- package/src/lightning/lookupAddress/listbox.slds.css +51 -99
- package/src/lightning/lookupAddress/location.js +2 -0
- package/src/lightning/lookupAddress/lookup-address.slds.css +0 -2
- package/src/lightning/lookupAddress/lookupAddress.html +6 -1
- package/src/lightning/lookupAddress/lookupAddress.js +40 -10
- package/src/lightning/menuDivider/menu-divider.slds.css +0 -2
- package/src/lightning/menuItem/menu-item.slds.css +8 -2
- package/src/lightning/menuSubheader/menu-subheader.slds.css +1 -2
- package/src/lightning/modal/__docs__/modal.md +10 -1
- package/src/lightning/modal/__modalUtils__/modalContainerTestConstants.js +3 -7
- package/src/lightning/modal/__modalUtils__/modalContainerTestMethods.js +39 -133
- package/src/lightning/modal/__modalUtils__/modalContainerTestMockData.js +1 -1
- package/src/lightning/modal/modal.js +1 -1
- package/src/lightning/modalBase/modal-base.slds.css +3 -3
- package/src/lightning/modalBase/modalBase.html +15 -10
- package/src/lightning/modalBase/modalBase.js +131 -154
- package/src/lightning/modalBase/modalBase.js-meta.xml +6 -0
- package/src/lightning/modalBody/modal-body.slds.css +1 -2
- package/src/lightning/modalBody/modalBody.css +6 -0
- package/src/lightning/modalFooter/modal-footer.slds.css +2 -2
- package/src/lightning/modalFooter/modalFooter.js +0 -21
- package/src/lightning/modalHeader/modal-header.slds.css +1 -2
- package/src/lightning/modalHeader/modalHeader.html +16 -4
- package/src/lightning/modalHeader/modalHeader.js +61 -36
- package/src/lightning/overlay/overlay.js-meta.xml +6 -0
- package/src/lightning/pill/link.html +1 -0
- package/src/lightning/pill/pill.slds.css +32 -58
- package/src/lightning/pill/plain.html +1 -0
- package/src/lightning/pill/plainLink.html +1 -0
- package/src/lightning/pillContainer/button.slds.css +1 -1
- package/src/lightning/pillContainer/listbox.slds.css +51 -99
- package/src/lightning/pillContainer/pill-container.slds.css +6 -10
- package/src/lightning/pillContainer/pill.slds.css +32 -58
- package/src/lightning/popup/popover.slds.css +0 -2
- package/src/lightning/primitiveBubble/primitiveBubble.js +42 -0
- package/src/lightning/primitiveBubble/primitiveBubble.js-meta.xml +6 -0
- package/src/lightning/primitiveButton/primitiveButoon.js-meta.xml +6 -0
- package/src/lightning/primitiveCellCheckbox/checkbox.css +2 -0
- package/src/lightning/primitiveColorpickerButton/color-picker-button.slds.css +16 -38
- package/src/lightning/primitiveCustomCell/primitiveCustomCell.js +26 -1
- package/src/lightning/primitiveDatatableCell/primitiveDatatableCell.js +1 -1
- package/src/lightning/primitiveHeaderActions/primitiveHeaderActions.html +1 -1
- package/src/lightning/primitiveHeaderActions/primitiveHeaderActions.js +13 -0
- package/src/lightning/primitiveHeaderFactory/nonsortableHeader.css +1 -0
- package/src/lightning/primitiveHeaderFactory/nonsortableHeader.html +19 -6
- package/src/lightning/primitiveHeaderFactory/selectableHeader.css +2 -0
- package/src/lightning/primitiveHeaderFactory/sortableHeader.html +3 -1
- package/src/lightning/primitiveIcon/icon.slds.css +12 -25
- package/src/lightning/primitiveIcon/primitiveIcon.js-meta.xml +6 -0
- package/src/lightning/primitiveIframe/primitiveIframe.js +3 -1
- package/src/lightning/primitiveInputCheckbox/form-element.slds.css +54 -54
- package/src/lightning/primitiveInputCheckbox/primitiveInputCheckbox.js +5 -2
- package/src/lightning/primitiveInputCheckbox/primitiveInputCheckbox.js-meta.xml +6 -0
- package/src/lightning/primitiveInputCheckboxButton/form-element.slds.css +54 -54
- package/src/lightning/primitiveInputCheckboxButton/input-checkbox-button.slds.css +6 -4
- package/src/lightning/primitiveInputCheckboxButton/primitiveInputCheckboxButton.js +5 -2
- package/src/lightning/primitiveInputCheckboxButton/primitiveInputCheckboxButton.js-meta.xml +6 -0
- package/src/lightning/primitiveInputColor/form-element.slds.css +54 -54
- package/src/lightning/primitiveInputColor/input-color.slds.css +2 -3
- package/src/lightning/primitiveInputColor/input-text.slds.css +41 -68
- package/src/lightning/primitiveInputColor/primitiveInputColor.js +5 -2
- package/src/lightning/primitiveInputColor/primitiveInputColor.js-meta.xml +6 -0
- package/src/lightning/primitiveInputFile/button.slds.css +1 -1
- package/src/lightning/primitiveInputFile/form-element.slds.css +54 -54
- package/src/lightning/primitiveInputFile/input-file.slds.css +1 -4
- package/src/lightning/primitiveInputFile/primitiveInputFile.js +4 -2
- package/src/lightning/primitiveInputFile/primitiveInputFile.js-meta.xml +6 -0
- package/src/lightning/primitiveInputRadio/primitiveInputRadio.js +4 -2
- package/src/lightning/primitiveInputSimple/form-element.slds.css +54 -54
- package/src/lightning/primitiveInputSimple/input-text.slds.css +41 -68
- package/src/lightning/primitiveInputSimple/primitiveInputSimple.js-meta.xml +6 -0
- package/src/lightning/primitiveInputToggle/form-element.slds.css +54 -54
- package/src/lightning/primitiveInputToggle/input-toggle.slds.css +50 -27
- package/src/lightning/primitiveInputToggle/primitiveInputToggle.js +5 -2
- package/src/lightning/primitiveInputToggle/primitiveInputToggle.js-meta.xml +6 -0
- package/src/lightning/primitiveResizeHandler/primitiveResizeHandler.css +11 -0
- package/src/lightning/primitiveResizeHandler/primitiveResizeHandler.html +2 -1
- package/src/lightning/primitiveResizeHandler/primitiveResizeHandler.js +1 -0
- package/src/lightning/progressBar/progress-bar.slds.css +8 -10
- package/src/lightning/progressRing/progress-ring.slds.css +0 -23
- package/src/lightning/progressStep/base.html +5 -6
- package/src/lightning/progressStep/progressStep.js +15 -23
- package/src/lightning/prompt/__docs__/prompt.md +1 -1
- package/src/lightning/radioGroup/form-element.slds.css +54 -54
- package/src/lightning/radioGroup/radioGroup.html +1 -2
- package/src/lightning/radioGroup/radioGroup.js +1 -0
- package/src/lightning/routingService/routingService.js +31 -5
- package/src/lightning/select/form-element.slds.css +54 -54
- package/src/lightning/select/select.slds.css +4 -2
- package/src/lightning/shadowBaseClassPrivate/shadowBaseClassPrivate.js +0 -2
- package/src/lightning/sldsCommon/sldsCommon.css +134 -98
- package/src/lightning/sldsUtilsAlignment/sldsUtilsAlignment.css +1 -1
- package/src/lightning/sldsUtilsBox/sldsUtilsBox.css +14 -13
- package/src/lightning/sldsUtilsGrid/sldsUtilsGrid.css +95 -92
- package/src/lightning/sldsUtilsHyphenation/sldsUtilsHyphenation.css +1 -1
- package/src/lightning/sldsUtilsMargin/sldsUtilsMargin.css +77 -75
- package/src/lightning/sldsUtilsPadding/sldsUtilsPadding.css +73 -73
- package/src/lightning/sldsUtilsSizing/sldsUtilsSizing.css +552 -558
- package/src/lightning/sldsUtilsVisibility/sldsUtilsVisibility.css +5 -1
- package/src/lightning/spinner/spinner.slds.css +62 -62
- package/src/lightning/staticMap/staticMap.js +3 -2
- package/src/lightning/tab/tab.js +10 -5
- package/src/lightning/tab/tab.js-meta.xml +3 -0
- package/src/lightning/tab/tab.slds.css +14 -7
- package/src/lightning/tabBar/tab-bar.slds.css +16 -6
- package/src/lightning/tabBar/tabBar.js +10 -5
- package/src/lightning/tabset/__docs__/tabset.md +24 -1
- package/src/lightning/tabset/tabset.html +2 -0
- package/src/lightning/tabset/tabset.js +25 -38
- package/src/lightning/tabset/tabset.js-meta.xml +3 -0
- package/src/lightning/tabset/tabset.slds.css +0 -2
- package/src/lightning/textarea/form-element.slds.css +54 -54
- package/src/lightning/textarea/textarea.js +11 -2
- package/src/lightning/textarea/textarea.slds.css +22 -9
- package/src/lightning/timepicker/form-element.slds.css +54 -54
- package/src/lightning/timepicker/timepicker.js-meta.xml +6 -0
- package/src/lightning/timepicker/timepicker.slds.css +2 -2
- package/src/lightning/toast/__docs__/toast.md +20 -22
- package/src/lightning/toast/button-icon.slds.css +1 -1
- package/src/lightning/toast/icon.slds.css +12 -25
- package/src/lightning/toast/toast.js +15 -12
- package/src/lightning/toast/toast.slds.css +6 -18
- package/src/lightning/toastContainer/__docs__/toastContainer.md +3 -2
- package/src/lightning/toastContainer/toast.slds.css +6 -18
- package/src/lightning/toastContainer/toastContainer.js +25 -17
- package/src/lightning/tooltipLibrary/tooltipLibrary.js +36 -24
- package/src/lightning/tree/tree.js +2 -0
- package/src/lightning/utils/classSet.js +9 -3
- package/src/lightning/utilsPrivate/formatUtils.js +158 -0
- package/src/lightning/utilsPrivate/textUtils.js +16 -0
- package/src/lightning/utilsPrivate/utilsPrivate.js +56 -15
- package/src/lightning/utilsPrivate/validationUtils.js +59 -0
- package/src/lightning/verticalNavigation/vertical-navigation.slds.css +14 -0
- package/src/lightning/verticalNavigation/verticalNavigation.css +1 -1
- package/src/lightning/verticalNavigation/verticalNavigation.html +1 -1
- package/src/lightning/verticalNavigation/verticalNavigation.js +66 -28
- package/src/lightning/verticalNavigation/verticalNavigation.js-meta.xml +3 -0
- package/src/lightning/verticalNavigationItem/vertical-navigation-item.slds.css +63 -0
- package/src/lightning/verticalNavigationItem/verticalNavigationItem.css +2 -3
- package/src/lightning/verticalNavigationItem/verticalNavigationItem.js +29 -15
- package/src/lightning/verticalNavigationItem/verticalNavigationItem.js-meta.xml +3 -0
- package/src/lightning/verticalNavigationItem/verticalNavigationItem.lbc.native.css +2 -0
- package/src/lightning/verticalNavigationItem/verticalNavigationItem.lbc.synthetic.css +3 -0
- package/src/lightning/verticalNavigationItemBadge/badge.slds.css +76 -0
- package/src/lightning/verticalNavigationItemBadge/vertical-navigation-item.slds.css +63 -0
- package/src/lightning/verticalNavigationItemBadge/verticalNavigationItemBadge.css +2 -3
- package/src/lightning/verticalNavigationItemBadge/verticalNavigationItemBadge.html +1 -1
- package/src/lightning/verticalNavigationItemBadge/verticalNavigationItemBadge.js +28 -15
- package/src/lightning/verticalNavigationItemBadge/verticalNavigationItemBadge.js-meta.xml +3 -0
- package/src/lightning/verticalNavigationItemBadge/verticalNavigationItemBadge.lbc.native.css +5 -0
- package/src/lightning/verticalNavigationItemBadge/verticalNavigationItemBadge.lbc.synthetic.css +3 -0
- package/src/lightning/verticalNavigationItemIcon/vertical-navigation-item.slds.css +63 -0
- package/src/lightning/verticalNavigationItemIcon/verticalNavigationItemIcon.css +2 -3
- package/src/lightning/verticalNavigationItemIcon/verticalNavigationItemIcon.js +29 -15
- package/src/lightning/verticalNavigationItemIcon/verticalNavigationItemIcon.js-meta.xml +3 -0
- package/src/lightning/verticalNavigationItemIcon/verticalNavigationItemIcon.lbc.native.css +3 -0
- package/src/lightning/verticalNavigationItemIcon/verticalNavigationItemIcon.lbc.synthetic.css +3 -0
- package/src/lightning/verticalNavigationOverflow/button.slds.css +503 -0
- package/src/lightning/verticalNavigationOverflow/vertical-navigation-item.slds.css +63 -0
- package/src/lightning/verticalNavigationOverflow/vertical-navigation-section.slds.css +17 -0
- package/src/lightning/verticalNavigationOverflow/verticalNavigationOverflow.css +2 -1
- package/src/lightning/verticalNavigationOverflow/verticalNavigationOverflow.html +2 -0
- package/src/lightning/verticalNavigationOverflow/verticalNavigationOverflow.js +18 -13
- package/src/lightning/verticalNavigationOverflow/verticalNavigationOverflow.js-meta.xml +3 -0
- package/src/lightning/verticalNavigationOverflow/verticalNavigationOverflow.lbc.native.css +5 -0
- package/src/lightning/verticalNavigationSection/vertical-navigation-section.slds.css +13 -15
- package/src/lightning/verticalNavigationSection/verticalNavigationSection.js-meta.xml +3 -0
- package/src/lightning/datatable/__examples__/customDatatableWrapper/customDatatableWrapper.js +0 -158
- package/src/lightning/datatable/__examples__/customDatatypeDeleteRowBtn/customDatatypeDeleteRowBtn.html +0 -6
- package/src/lightning/datatable/__examples__/customDatatypeLink/customDatatypeLink.html +0 -9
- package/src/lightning/datatable/__examples__/customDatatypeRowOrderingBtn/customDatatypeRowOrderingBtn.js +0 -40
- package/src/lightning/datatable/__examples__/customDatatypeTable/customNumber.html +0 -3
- package/src/lightning/datatable/inlineEditShared.js +0 -26
- package/src/lightning/datatable/resizeSensor.js +0 -244
- package/src/lightning/formattedRichText/linkify.js +0 -43
- package/src/lightning/utilsPrivate/smartSetAttribute.js +0 -19
- /package/src/lightning/datatable/{__examples__ → __examples__disabled}/customDatatableWrapper/customDatatableWrapper.html +0 -0
- /package/src/lightning/datatable/{__examples__ → __examples__disabled}/customDatatypeLink/customDatatypeLink.js +0 -0
- /package/src/lightning/datatable/{__examples__ → __examples__disabled}/customDatatypeNumber/customDatatypeNumber.html +0 -0
- /package/src/lightning/datatable/{__examples__ → __examples__disabled}/customDatatypeNumber/customDatatypeNumber.js +0 -0
- /package/src/lightning/datatable/{__examples__ → __examples__disabled}/customDatatypeTable/customDatatypeTable.js +0 -0
- /package/src/lightning/datatable/{__examples__ → __examples__disabled}/customDatatypeTable/customLink.html +0 -0
- /package/src/lightning/datatable/{__examples__ → __examples__disabled}/customDatatypeTable/customName.html +0 -0
- /package/src/lightning/datatable/{__examples__ → __examples__disabled}/customDatatypeTable/orderingButtons.html +0 -0
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
/* Copyright (c) 2015-present, salesforce.com, inc. All rights reserved
|
|
3
3
|
Licensed under BSD 3-Clause - see LICENSE.txt or git.io/sfdc-license */
|
|
4
4
|
|
|
5
|
-
@supports (--styling-hooks: '') {
|
|
6
5
|
/**
|
|
7
6
|
* Remap to SLDS blueprint hooks for parity
|
|
8
7
|
* https://www.lightningdesignsystem.com/components/modals/#Styling-Hooks-Overview
|
|
@@ -136,12 +135,12 @@
|
|
|
136
135
|
}
|
|
137
136
|
}
|
|
138
137
|
|
|
139
|
-
|
|
140
138
|
/* Sizes: Full */
|
|
141
139
|
|
|
142
140
|
/* .slds-modal_full {} */
|
|
143
141
|
|
|
144
142
|
/* Behaves like large size when not in a small viewport */
|
|
143
|
+
|
|
145
144
|
@media (width >= 48em) {
|
|
146
145
|
:host([data-render-mode="shadow"]) .slds-modal_full .slds-modal__container {
|
|
147
146
|
width: 90%;
|
|
@@ -151,6 +150,7 @@
|
|
|
151
150
|
}
|
|
152
151
|
|
|
153
152
|
/* Original SLDS implementation was desktop-first. This is now mobile-first for <=480px */
|
|
153
|
+
|
|
154
154
|
@media (width <= 30em) {
|
|
155
155
|
:host([data-render-mode="shadow"]) .slds-modal_full {
|
|
156
156
|
/* Account for iOS safe areas so our modal doesn't load underneath iOS elements. */
|
|
@@ -227,6 +227,7 @@
|
|
|
227
227
|
}
|
|
228
228
|
|
|
229
229
|
/* TODO W-12674349: remove after assistive text util is added */
|
|
230
|
+
|
|
230
231
|
:host([data-render-mode="shadow"]) .slds-assistive-text {
|
|
231
232
|
position: absolute !important;
|
|
232
233
|
margin: -1px !important;
|
|
@@ -239,4 +240,3 @@
|
|
|
239
240
|
text-transform: none !important;
|
|
240
241
|
white-space: nowrap !important;
|
|
241
242
|
}
|
|
242
|
-
}
|
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
onprivatemodalfooterregister={handleFooterRegister}
|
|
19
19
|
onprivateclose={handlePrivateClose}
|
|
20
20
|
onprivatedisableclosebutton={handlePrivateDisableCloseButton}
|
|
21
|
+
onprivatemodalheaderclose={handleModalHeaderCloseClick}
|
|
21
22
|
data-modal
|
|
22
23
|
>
|
|
23
24
|
<template if:true={showAriaDescribedBy}>
|
|
@@ -39,16 +40,20 @@
|
|
|
39
40
|
class="slds-modal__container"
|
|
40
41
|
data-container
|
|
41
42
|
>
|
|
42
|
-
<
|
|
43
|
-
class=
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
43
|
+
<template if:true={isHeadlessModalVariant}>
|
|
44
|
+
<div class="slds-modal__header slds-text-align_left slds-modal__header_empty">
|
|
45
|
+
<lightning-button-icon
|
|
46
|
+
class="slds-modal__close"
|
|
47
|
+
icon-name="utility:close"
|
|
48
|
+
variant="bare"
|
|
49
|
+
alternative-text={closeButtonAltText}
|
|
50
|
+
onclick={handleCloseClick}
|
|
51
|
+
size="large"
|
|
52
|
+
disabled={disableCloseButton}
|
|
53
|
+
data-close-button
|
|
54
|
+
></lightning-button-icon>
|
|
55
|
+
</div>
|
|
56
|
+
</template>
|
|
52
57
|
<div data-slot lwc:dom="manual"></div>
|
|
53
58
|
</div>
|
|
54
59
|
</section>
|
|
@@ -2,20 +2,19 @@ import { api } from 'lwc';
|
|
|
2
2
|
import LightningShadowBaseClass from 'lightning/shadowBaseClassPrivate';
|
|
3
3
|
import { classSet } from 'lightning/utils';
|
|
4
4
|
import {
|
|
5
|
-
makeEverythingExceptElementInert,
|
|
6
|
-
normalizeString,
|
|
7
|
-
synchronizeAttrs,
|
|
8
|
-
restoreInertness,
|
|
9
|
-
hasAnimation,
|
|
10
5
|
ARIA,
|
|
6
|
+
hasAnimation,
|
|
11
7
|
isAriaDescriptionSupported,
|
|
12
8
|
isCSR,
|
|
9
|
+
makeEverythingExceptElementInert,
|
|
10
|
+
normalizeString,
|
|
11
|
+
restoreInertness,
|
|
12
|
+
synchronizeAttrs,
|
|
13
13
|
} from 'lightning/utilsPrivate';
|
|
14
14
|
import { instanceName, secure } from 'lightning/overlayUtils';
|
|
15
15
|
import {
|
|
16
16
|
getElementWithFocus,
|
|
17
17
|
returnFocusToElement,
|
|
18
|
-
findAllTabbableElements,
|
|
19
18
|
} from 'lightning/focusUtils';
|
|
20
19
|
import closeButtonAltText from '@salesforce/label/LightningModalBase.cancelandclose';
|
|
21
20
|
import disableCloseBtnMessage from '@salesforce/label/LightningModalBase.waitstate';
|
|
@@ -27,7 +26,6 @@ const SIZE_SMALL = 'small';
|
|
|
27
26
|
const SIZE_MEDIUM = 'medium';
|
|
28
27
|
const SIZE_LARGE = 'large';
|
|
29
28
|
const SIZE_FULL = 'full';
|
|
30
|
-
const OVERLAY_CONTAINER = 'lightning-overlay-container';
|
|
31
29
|
const MODAL_BASE = 'lightning-modal-base';
|
|
32
30
|
|
|
33
31
|
export default class LightningModalBase extends LightningShadowBaseClass {
|
|
@@ -47,6 +45,7 @@ export default class LightningModalBase extends LightningShadowBaseClass {
|
|
|
47
45
|
isSmallScreenSize = null;
|
|
48
46
|
|
|
49
47
|
// modalHeader, child
|
|
48
|
+
isHeadlessModalVariant = false;
|
|
50
49
|
headerRegistered = false;
|
|
51
50
|
headerHeight = 0;
|
|
52
51
|
headerDefaultSlotIsPopulated = false;
|
|
@@ -55,7 +54,6 @@ export default class LightningModalBase extends LightningShadowBaseClass {
|
|
|
55
54
|
headerLabelId = null;
|
|
56
55
|
headerLabelIsPopulated = null;
|
|
57
56
|
headerTitleRef = null;
|
|
58
|
-
headerTabElemRef = null;
|
|
59
57
|
|
|
60
58
|
// modalBody, child
|
|
61
59
|
bodyRegistered = false;
|
|
@@ -83,7 +81,6 @@ export default class LightningModalBase extends LightningShadowBaseClass {
|
|
|
83
81
|
footerHeight = 0;
|
|
84
82
|
footerSlotHasRendered = false;
|
|
85
83
|
footerDefaultSlotIsPopulated = false;
|
|
86
|
-
footerTabElemRef = null;
|
|
87
84
|
|
|
88
85
|
// aria attributes
|
|
89
86
|
modalLabel = null;
|
|
@@ -165,48 +162,6 @@ export default class LightningModalBase extends LightningShadowBaseClass {
|
|
|
165
162
|
return modal.disableClose;
|
|
166
163
|
}
|
|
167
164
|
|
|
168
|
-
/**
|
|
169
|
-
* Toggle on and off disable close button feature
|
|
170
|
-
* typically used very briefly when devs want to save form data to backend
|
|
171
|
-
* and do not want the form to be closed before the save has
|
|
172
|
-
* completed successfully
|
|
173
|
-
* toggleDisableCloseButton sets local state to
|
|
174
|
-
* (a) toggle display an aria-live message
|
|
175
|
-
* (b) toggle set disabled on the <lightning-button-icon>
|
|
176
|
-
* (c) toggle set aria-busy value on
|
|
177
|
-
* elsewhere in modalBase and modal, ESC key is also disabled, and
|
|
178
|
-
* calls to this.close() are prevented
|
|
179
|
-
*/
|
|
180
|
-
toggleDisableCloseButton() {
|
|
181
|
-
// this.disableCloseButton is local modalBase state
|
|
182
|
-
// this.disableClose is modal.js @api state
|
|
183
|
-
// we track both in order to handle transition correctly
|
|
184
|
-
const isSwitchingToDisabled =
|
|
185
|
-
!this.disableCloseButton && this.disableClose;
|
|
186
|
-
/* Future enhancement possibility - trigger setInterval to remove and
|
|
187
|
-
again add back 'Processing' text, as this will indicate to the screen
|
|
188
|
-
reader user that the interface continues to be busy
|
|
189
|
-
*/
|
|
190
|
-
const disableCloseButtonMessage = isSwitchingToDisabled
|
|
191
|
-
? this.disableCloseBtnMessage
|
|
192
|
-
: '';
|
|
193
|
-
if (isSwitchingToDisabled) {
|
|
194
|
-
// Should disable close button
|
|
195
|
-
this.ariaLiveMessage = disableCloseButtonMessage;
|
|
196
|
-
this.showAriaLiveMessage = true;
|
|
197
|
-
synchronizeAttrs(this.modalWrapper, { [`${ARIA.BUSY}`]: true });
|
|
198
|
-
synchronizeAttrs(this.modalCloseButton, { disabled: 'disabled' });
|
|
199
|
-
this.disableCloseButton = true;
|
|
200
|
-
} else {
|
|
201
|
-
// Should enable close button
|
|
202
|
-
this.ariaLiveMessage = disableCloseBtnMessage;
|
|
203
|
-
this.showAriaLiveMessage = false;
|
|
204
|
-
synchronizeAttrs(this.modalWrapper, { [`${ARIA.BUSY}`]: null });
|
|
205
|
-
synchronizeAttrs(this.modalCloseButton, { disabled: null });
|
|
206
|
-
this.disableCloseButton = false;
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
|
|
210
165
|
/**
|
|
211
166
|
* Public method to get the modal slot element
|
|
212
167
|
* @type {(HTMLElement|null)} The modal slot, currently a div elem
|
|
@@ -356,35 +311,99 @@ export default class LightningModalBase extends LightningShadowBaseClass {
|
|
|
356
311
|
return classes.toString();
|
|
357
312
|
}
|
|
358
313
|
|
|
314
|
+
get isDescriptionSet() {
|
|
315
|
+
const { description } = this;
|
|
316
|
+
// check for being set, as well as not just a description with spaces
|
|
317
|
+
// avoiding setting aria-describedby on section pointing to
|
|
318
|
+
// an empty SPAN element
|
|
319
|
+
return !!description?.trim().length;
|
|
320
|
+
}
|
|
321
|
+
|
|
359
322
|
/**
|
|
360
|
-
*
|
|
361
|
-
*
|
|
362
|
-
*
|
|
363
|
-
*
|
|
364
|
-
* modal header so the close button maintains visibility for a11y
|
|
323
|
+
* Determines if aria-describedby should be set, and the span tag shown
|
|
324
|
+
* occurs only when aria-description is not supported.
|
|
325
|
+
* ex: when description api is set to '' or ' ',
|
|
326
|
+
* we don't want to show the span or set aria-describedby
|
|
365
327
|
* @private
|
|
366
328
|
*/
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
let classes = classSet('slds-modal__close');
|
|
370
|
-
const fullScreenActive =
|
|
371
|
-
this.isSmallScreenSize && this.size === SIZE_FULL;
|
|
372
|
-
classes.add({
|
|
373
|
-
'slds-modal_full-close-button': fullScreenActive,
|
|
374
|
-
});
|
|
375
|
-
return classes.toString();
|
|
329
|
+
get showAriaDescribedBy() {
|
|
330
|
+
return !isAriaDescriptionSupported() && this.isDescriptionSet;
|
|
376
331
|
}
|
|
377
332
|
|
|
378
333
|
/**
|
|
379
|
-
*
|
|
380
|
-
*
|
|
381
|
-
*
|
|
382
|
-
* when size 'small', 'medium' and 'large' close button variant
|
|
383
|
-
* when 'isSmallScreenSize = true' for a11y purposes
|
|
334
|
+
* When window is resizing, need to debounce callback
|
|
335
|
+
* Track internal variable _resizing
|
|
336
|
+
* @returns {Boolean}
|
|
384
337
|
* @private
|
|
385
338
|
*/
|
|
386
|
-
get
|
|
387
|
-
|
|
339
|
+
get modalResizing() {
|
|
340
|
+
if (!this._resizing) {
|
|
341
|
+
this._resizing = this.scheduleWindowResizeEvent.bind(this);
|
|
342
|
+
}
|
|
343
|
+
return this._resizing;
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
/**
|
|
347
|
+
* Toggle on and off disable close button feature
|
|
348
|
+
* typically used very briefly when devs want to save form data to backend
|
|
349
|
+
* and do not want the form to be closed before the save has
|
|
350
|
+
* completed successfully
|
|
351
|
+
* toggleDisableCloseButton sets local state to
|
|
352
|
+
* (a) toggle display an aria-live message
|
|
353
|
+
* (b) toggle set disabled on the <lightning-button-icon>
|
|
354
|
+
* (c) toggle set aria-busy value on
|
|
355
|
+
* elsewhere in modalBase and modal, ESC key is also disabled, and
|
|
356
|
+
* calls to this.close() are prevented
|
|
357
|
+
*/
|
|
358
|
+
toggleDisableCloseButton() {
|
|
359
|
+
// this.disableCloseButton is local modalBase state
|
|
360
|
+
// this.disableClose is modal.js @api state
|
|
361
|
+
// we track both in order to handle transition correctly
|
|
362
|
+
const isSwitchingToDisabled =
|
|
363
|
+
!this.disableCloseButton && this.disableClose;
|
|
364
|
+
/* Future enhancement possibility - trigger setInterval to remove and
|
|
365
|
+
again add back 'Processing' text, as this will indicate to the screen
|
|
366
|
+
reader user that the interface continues to be busy
|
|
367
|
+
*/
|
|
368
|
+
const disableCloseButtonMessage = isSwitchingToDisabled
|
|
369
|
+
? this.disableCloseBtnMessage
|
|
370
|
+
: '';
|
|
371
|
+
|
|
372
|
+
const closeButtonDisable = isSwitchingToDisabled ? 'disabled' : null;
|
|
373
|
+
|
|
374
|
+
// Finally, set accessibility attributes for modal-base
|
|
375
|
+
if (isSwitchingToDisabled) {
|
|
376
|
+
// Should disable close button
|
|
377
|
+
this.ariaLiveMessage = disableCloseButtonMessage;
|
|
378
|
+
this.showAriaLiveMessage = true;
|
|
379
|
+
synchronizeAttrs(this.modalWrapper, { [`${ARIA.BUSY}`]: true });
|
|
380
|
+
this.disableCloseButton = true;
|
|
381
|
+
} else {
|
|
382
|
+
// Should enable close button
|
|
383
|
+
this.ariaLiveMessage = disableCloseButtonMessage;
|
|
384
|
+
this.showAriaLiveMessage = false;
|
|
385
|
+
synchronizeAttrs(this.modalWrapper, { [`${ARIA.BUSY}`]: null });
|
|
386
|
+
this.disableCloseButton = false;
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
// Modal with Header variant has close button icon on lightning-modal-header child component
|
|
390
|
+
// where-as Headless Modal variant has close button icon on modal-base,
|
|
391
|
+
if (!this.isHeadlessModalVariant) {
|
|
392
|
+
// dispatch secondary event to disable close button icon present on lightning-modal-header
|
|
393
|
+
this.headerTitleRef.dispatchEvent(
|
|
394
|
+
new CustomEvent('privatemodalheaderdisableclose', {
|
|
395
|
+
detail: {
|
|
396
|
+
disableClose: isSwitchingToDisabled,
|
|
397
|
+
[secure]: true,
|
|
398
|
+
},
|
|
399
|
+
bubbles: true,
|
|
400
|
+
})
|
|
401
|
+
);
|
|
402
|
+
} else {
|
|
403
|
+
synchronizeAttrs(this.modalCloseButton, {
|
|
404
|
+
disabled: closeButtonDisable,
|
|
405
|
+
});
|
|
406
|
+
}
|
|
388
407
|
}
|
|
389
408
|
|
|
390
409
|
/**
|
|
@@ -449,50 +468,10 @@ export default class LightningModalBase extends LightningShadowBaseClass {
|
|
|
449
468
|
* </ul>
|
|
450
469
|
* @param e - Event
|
|
451
470
|
*/
|
|
452
|
-
handleFocusinEvents(
|
|
471
|
+
handleFocusinEvents() {
|
|
453
472
|
// eslint-disable-next-line @lwc/lwc/no-async-operation
|
|
454
473
|
requestAnimationFrame(() => {
|
|
455
|
-
|
|
456
|
-
e.stopPropagation();
|
|
457
|
-
|
|
458
|
-
const focusinEvtTarget = e.target;
|
|
459
|
-
const isFocusTargetAModal =
|
|
460
|
-
focusinEvtTarget.matches(OVERLAY_CONTAINER);
|
|
461
|
-
const wasANewModalStackedOnTopOfAnExistingModal =
|
|
462
|
-
this.isStackedModal() &&
|
|
463
|
-
this.savedInertElements.length >
|
|
464
|
-
this.previousSavedInertElementsSize;
|
|
465
|
-
|
|
466
|
-
if (wasANewModalStackedOnTopOfAnExistingModal) {
|
|
467
|
-
// update private tracker in anticipation of more stacked modals
|
|
468
|
-
this.previousSavedInertElementsSize =
|
|
469
|
-
this.savedInertElements.length;
|
|
470
|
-
}
|
|
471
|
-
|
|
472
|
-
// 1. If focus is on a Modal, then track the last focussed element
|
|
473
|
-
if (isFocusTargetAModal) {
|
|
474
|
-
// Perf optimization: check if allTabbableElements needs updating
|
|
475
|
-
if (
|
|
476
|
-
!this.allTabbableElements ||
|
|
477
|
-
wasANewModalStackedOnTopOfAnExistingModal
|
|
478
|
-
) {
|
|
479
|
-
this.allTabbableElements =
|
|
480
|
-
findAllTabbableElements(focusinEvtTarget);
|
|
481
|
-
}
|
|
482
|
-
const elementWithFocus = getElementWithFocus();
|
|
483
|
-
const isModalTitleText =
|
|
484
|
-
elementWithFocus.hasAttribute('data-label');
|
|
485
|
-
if (
|
|
486
|
-
isModalTitleText ||
|
|
487
|
-
this.allTabbableElements.indexOf(elementWithFocus) !== -1
|
|
488
|
-
) {
|
|
489
|
-
// element is part of the Modal with current focus on it, track it
|
|
490
|
-
this.lastFocussedElementOnModal = elementWithFocus;
|
|
491
|
-
}
|
|
492
|
-
} // 2. If focus moved out of Modal, return focus to last element that was focussed.
|
|
493
|
-
else {
|
|
494
|
-
returnFocusToElement(this.lastFocussedElementOnModal);
|
|
495
|
-
}
|
|
474
|
+
// W-14998924 note: code revert to unblock 250R downstream
|
|
496
475
|
});
|
|
497
476
|
}
|
|
498
477
|
|
|
@@ -543,25 +522,6 @@ export default class LightningModalBase extends LightningShadowBaseClass {
|
|
|
543
522
|
}
|
|
544
523
|
};
|
|
545
524
|
|
|
546
|
-
get isDescriptionSet() {
|
|
547
|
-
const { description } = this;
|
|
548
|
-
// check for being set, as well as not just a description with spaces
|
|
549
|
-
// avoiding setting aria-describedby on section pointing to
|
|
550
|
-
// an empty SPAN element
|
|
551
|
-
return description && description.trim().length > 0;
|
|
552
|
-
}
|
|
553
|
-
|
|
554
|
-
/**
|
|
555
|
-
* Determines if aria-describedby should be set, and the span tag shown
|
|
556
|
-
* occurs only when aria-description is not supported.
|
|
557
|
-
* ex: when description api is set to '' or ' ',
|
|
558
|
-
* we don't want to show the span or set aria-describedby
|
|
559
|
-
* @private
|
|
560
|
-
*/
|
|
561
|
-
get showAriaDescribedBy() {
|
|
562
|
-
return !isAriaDescriptionSupported() && this.isDescriptionSet;
|
|
563
|
-
}
|
|
564
|
-
|
|
565
525
|
/**
|
|
566
526
|
* Set either 'aria-describedby' or 'aria-description' value for accessibility
|
|
567
527
|
* based on the presence of 'description' api value
|
|
@@ -650,6 +610,19 @@ export default class LightningModalBase extends LightningShadowBaseClass {
|
|
|
650
610
|
console.error(errorMsg);
|
|
651
611
|
}
|
|
652
612
|
|
|
613
|
+
/**
|
|
614
|
+
* Handle close button click triggered from lightning-modal-header
|
|
615
|
+
* @param e
|
|
616
|
+
*/
|
|
617
|
+
handleModalHeaderCloseClick(e) {
|
|
618
|
+
if (!e?.detail?.[secure]) {
|
|
619
|
+
console.error('Invalid access to privatemodalheaderclose event');
|
|
620
|
+
return;
|
|
621
|
+
}
|
|
622
|
+
e.stopPropagation();
|
|
623
|
+
this.handleCloseClick();
|
|
624
|
+
}
|
|
625
|
+
|
|
653
626
|
/**
|
|
654
627
|
* Handle the close button click, or via ESC key
|
|
655
628
|
* @private
|
|
@@ -661,8 +634,11 @@ export default class LightningModalBase extends LightningShadowBaseClass {
|
|
|
661
634
|
}
|
|
662
635
|
}
|
|
663
636
|
|
|
664
|
-
|
|
665
|
-
|
|
637
|
+
/**
|
|
638
|
+
* Handle privateclose event firing is prevented from occurring
|
|
639
|
+
* when this.disableClose set true in modal.js
|
|
640
|
+
* @param e
|
|
641
|
+
*/
|
|
666
642
|
handlePrivateClose(e) {
|
|
667
643
|
if (!(e.detail && e.detail[secure])) {
|
|
668
644
|
console.error('Invalid access to privateclose event');
|
|
@@ -703,6 +679,7 @@ export default class LightningModalBase extends LightningShadowBaseClass {
|
|
|
703
679
|
console.error('Invalid access to privatedisableclose event');
|
|
704
680
|
return;
|
|
705
681
|
}
|
|
682
|
+
|
|
706
683
|
this.toggleDisableCloseButton();
|
|
707
684
|
}
|
|
708
685
|
|
|
@@ -873,6 +850,20 @@ export default class LightningModalBase extends LightningShadowBaseClass {
|
|
|
873
850
|
if (!this.focusinEventBound) {
|
|
874
851
|
this.addFocusinEventListener();
|
|
875
852
|
}
|
|
853
|
+
|
|
854
|
+
this.updateHeadlessModalVariantState();
|
|
855
|
+
}
|
|
856
|
+
|
|
857
|
+
/**
|
|
858
|
+
* In case of a headless modal variant, the close button icon lives inside modalBase,
|
|
859
|
+
* while in other variants, the close icon lives inside lightning-modal-header
|
|
860
|
+
*
|
|
861
|
+
* This helper method is to accurately update the state of 'isHeadlessModalVariant' flag
|
|
862
|
+
* in order to selectively render the close <lightning-button-icon> in modalBase.html
|
|
863
|
+
*/
|
|
864
|
+
updateHeadlessModalVariantState() {
|
|
865
|
+
this.isHeadlessModalVariant =
|
|
866
|
+
this.bodyRegistered && !this.headerRegistered;
|
|
876
867
|
}
|
|
877
868
|
|
|
878
869
|
/**
|
|
@@ -927,7 +918,6 @@ export default class LightningModalBase extends LightningShadowBaseClass {
|
|
|
927
918
|
*/
|
|
928
919
|
registerHeader({
|
|
929
920
|
defaultSlotIsPopulated,
|
|
930
|
-
firstTabbableElemRef,
|
|
931
921
|
defaultSlotWrapperId,
|
|
932
922
|
defaultSlotHasRendered,
|
|
933
923
|
unRegisterCallback,
|
|
@@ -944,7 +934,6 @@ export default class LightningModalBase extends LightningShadowBaseClass {
|
|
|
944
934
|
this.headerLabelId = labelId;
|
|
945
935
|
this.headerLabelIsPopulated = labelIsPopulated;
|
|
946
936
|
this.headerTitleRef = headerRef;
|
|
947
|
-
this.headerTabElemRef = firstTabbableElemRef;
|
|
948
937
|
unRegisterCallback(() => {
|
|
949
938
|
this.unregisterHeader();
|
|
950
939
|
});
|
|
@@ -952,6 +941,8 @@ export default class LightningModalBase extends LightningShadowBaseClass {
|
|
|
952
941
|
if (this.bodyRegistered) {
|
|
953
942
|
this.updateModalBodyHeight();
|
|
954
943
|
}
|
|
944
|
+
|
|
945
|
+
this.updateHeadlessModalVariantState();
|
|
955
946
|
}
|
|
956
947
|
|
|
957
948
|
/**
|
|
@@ -981,7 +972,7 @@ export default class LightningModalBase extends LightningShadowBaseClass {
|
|
|
981
972
|
this.headerLabelId = null;
|
|
982
973
|
this.headerLabelIsPopulated = null;
|
|
983
974
|
this.headerTitleRef = null;
|
|
984
|
-
this.
|
|
975
|
+
this.updateHeadlessModalVariantState();
|
|
985
976
|
}
|
|
986
977
|
|
|
987
978
|
/**
|
|
@@ -1012,13 +1003,11 @@ export default class LightningModalBase extends LightningShadowBaseClass {
|
|
|
1012
1003
|
defaultSlotHasRendered,
|
|
1013
1004
|
footerHeight,
|
|
1014
1005
|
unRegisterCallback,
|
|
1015
|
-
firstTabbableElemRef,
|
|
1016
1006
|
}) {
|
|
1017
1007
|
this.footerRegistered = true;
|
|
1018
1008
|
this.footerDefaultSlotIsPopulated = defaultSlotIsPopulated;
|
|
1019
1009
|
this.footerSlotHasRendered = defaultSlotHasRendered;
|
|
1020
1010
|
this.updateFooterHeight(footerHeight);
|
|
1021
|
-
this.footerTabElemRef = firstTabbableElemRef || null;
|
|
1022
1011
|
unRegisterCallback(() => {
|
|
1023
1012
|
this.unregisterFooter();
|
|
1024
1013
|
});
|
|
@@ -1026,6 +1015,8 @@ export default class LightningModalBase extends LightningShadowBaseClass {
|
|
|
1026
1015
|
if (this.bodyRegistered) {
|
|
1027
1016
|
this.updateModalBodyHeight();
|
|
1028
1017
|
}
|
|
1018
|
+
|
|
1019
|
+
this.updateHeadlessModalVariantState();
|
|
1029
1020
|
}
|
|
1030
1021
|
|
|
1031
1022
|
/**
|
|
@@ -1050,20 +1041,6 @@ export default class LightningModalBase extends LightningShadowBaseClass {
|
|
|
1050
1041
|
this.footerHeight = 0;
|
|
1051
1042
|
this.footerSlotHasRendered = false;
|
|
1052
1043
|
this.footerDefaultSlotIsPopulated = false;
|
|
1053
|
-
this.footerTabElemRef = null;
|
|
1054
|
-
}
|
|
1055
|
-
|
|
1056
|
-
/**
|
|
1057
|
-
* When window is resizing, need to debounce callback
|
|
1058
|
-
* Track internal variable _resizing
|
|
1059
|
-
* @returns {Boolean}
|
|
1060
|
-
* @private
|
|
1061
|
-
*/
|
|
1062
|
-
get modalResizing() {
|
|
1063
|
-
if (!this._resizing) {
|
|
1064
|
-
this._resizing = this.scheduleWindowResizeEvent.bind(this);
|
|
1065
|
-
}
|
|
1066
|
-
return this._resizing;
|
|
1067
1044
|
}
|
|
1068
1045
|
|
|
1069
1046
|
/**
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
/* Copyright (c) 2015-present, salesforce.com, inc. All rights reserved
|
|
3
3
|
Licensed under BSD 3-Clause - see LICENSE.txt or git.io/sfdc-license */
|
|
4
4
|
|
|
5
|
-
@supports (--styling-hooks: '') {
|
|
6
5
|
:host([data-render-mode="shadow"]) .slds-modal__content_headless {
|
|
7
6
|
border-start-end-radius: var(--slds-c-modalbody-radius-border, var(--slds-g-radius-border-2));
|
|
8
7
|
border-start-start-radius: var(--slds-c-modalbody-radius-border, var(--slds-g-radius-border-2));
|
|
@@ -31,6 +30,7 @@
|
|
|
31
30
|
/* Sizes: Full */
|
|
32
31
|
|
|
33
32
|
/* Original SLDS implementation was desktop-first. This is now mobile-first for <=480px */
|
|
33
|
+
|
|
34
34
|
@media (width <= 30em) {
|
|
35
35
|
:host([data-render-mode="shadow"][data-size='full']) [part='modal-body'] {
|
|
36
36
|
grid-area: content;
|
|
@@ -58,4 +58,3 @@
|
|
|
58
58
|
display: contents;
|
|
59
59
|
}
|
|
60
60
|
}
|
|
61
|
-
}
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
/* Copyright (c) 2015-present, salesforce.com, inc. All rights reserved
|
|
3
3
|
Licensed under BSD 3-Clause - see LICENSE.txt or git.io/sfdc-license */
|
|
4
4
|
|
|
5
|
-
@supports (--styling-hooks: '') {
|
|
6
5
|
:host([data-render-mode="shadow"]) .slds-modal__footer {
|
|
7
6
|
|
|
8
7
|
/* stylelint-disable sds-stylelint-plugin/styling-hooks-deprecated */
|
|
@@ -41,6 +40,7 @@
|
|
|
41
40
|
}
|
|
42
41
|
|
|
43
42
|
/* TODO W-12674349: Replace with visibility utility classes when available */
|
|
43
|
+
|
|
44
44
|
:host([data-render-mode="shadow"]) .slds-hide {
|
|
45
45
|
display: none !important;
|
|
46
46
|
}
|
|
@@ -48,6 +48,7 @@
|
|
|
48
48
|
/* Sizes: Full */
|
|
49
49
|
|
|
50
50
|
/* Original SLDS implementation was desktop-first. This is now mobile-first for <=480px */
|
|
51
|
+
|
|
51
52
|
@media (width <= 30em) {
|
|
52
53
|
:host([data-render-mode="shadow"][data-size='full']) [part='modal-footer'] {
|
|
53
54
|
grid-area: footer;
|
|
@@ -76,4 +77,3 @@
|
|
|
76
77
|
:host([data-render-mode="shadow"]) .slds-modal__footer .slds-button + .slds-button {
|
|
77
78
|
margin-left: var(--slds-g-spacing-2);
|
|
78
79
|
}
|
|
79
|
-
}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import LightningShadowBaseClass from 'lightning/shadowBaseClassPrivate';
|
|
2
2
|
import { classSet } from 'lightning/utils';
|
|
3
|
-
import { findAllTabbableElements, filterTooltips } from 'lightning/focusUtils';
|
|
4
3
|
|
|
5
4
|
// SLDS Modal Footer classes
|
|
6
5
|
const footerClass = 'slds-modal__footer';
|
|
@@ -82,25 +81,6 @@ export default class LightningModalFooter extends LightningShadowBaseClass {
|
|
|
82
81
|
return true;
|
|
83
82
|
}
|
|
84
83
|
|
|
85
|
-
/**
|
|
86
|
-
* Get first tabbable element within modalFooter's slot, if exists
|
|
87
|
-
* This is passed to parent in order to possibly be used for autoFocus
|
|
88
|
-
* @returns {(HTMLElement|null)}
|
|
89
|
-
* @private
|
|
90
|
-
*/
|
|
91
|
-
get firstTabbableElement() {
|
|
92
|
-
let firstElem = null;
|
|
93
|
-
if (this.isDefaultSlotPopulated) {
|
|
94
|
-
const filteredElements = filterTooltips(
|
|
95
|
-
findAllTabbableElements(this.defaultSlotElement)
|
|
96
|
-
);
|
|
97
|
-
if (filteredElements.length > 0) {
|
|
98
|
-
firstElem = filteredElements[0];
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
return firstElem;
|
|
102
|
-
}
|
|
103
|
-
|
|
104
84
|
/**
|
|
105
85
|
* Register modalFooter with modal parent, including callbacks to
|
|
106
86
|
* unregister the modal footer
|
|
@@ -116,7 +96,6 @@ export default class LightningModalFooter extends LightningShadowBaseClass {
|
|
|
116
96
|
footerHeight: this.footerHeight,
|
|
117
97
|
defaultSlotIsPopulated: this.isDefaultSlotPopulated,
|
|
118
98
|
defaultSlotHasRendered: !this.initialSlotRender,
|
|
119
|
-
firstTabbableElemRef: this.firstTabbableElement,
|
|
120
99
|
unRegisterCallback: (unregisterCallback) => {
|
|
121
100
|
this.unregisterCallback = unregisterCallback;
|
|
122
101
|
},
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
/* Copyright (c) 2015-present, salesforce.com, inc. All rights reserved
|
|
3
3
|
Licensed under BSD 3-Clause - see LICENSE.txt or git.io/sfdc-license */
|
|
4
4
|
|
|
5
|
-
@supports (--styling-hooks: '') {
|
|
6
5
|
/* stylelint-disable sds-stylelint-plugin/styling-hooks-deprecated */
|
|
7
6
|
|
|
8
7
|
/* stylelint-disable sds-stylelint-plugin/styling-hooks-pattern */
|
|
@@ -51,6 +50,7 @@
|
|
|
51
50
|
/* Sizes: Full */
|
|
52
51
|
|
|
53
52
|
/* Original SLDS implementation was desktop-first. This is now mobile-first for <=480px */
|
|
53
|
+
|
|
54
54
|
@media (width <= 30em) {
|
|
55
55
|
:host([data-render-mode="shadow"][data-size='full']) [part='modal-header'] {
|
|
56
56
|
grid-area: header;
|
|
@@ -74,4 +74,3 @@
|
|
|
74
74
|
display: contents;
|
|
75
75
|
}
|
|
76
76
|
}
|
|
77
|
-
}
|
|
@@ -1,13 +1,25 @@
|
|
|
1
|
-
|
|
2
|
-
<div class="slds-modal__header" part="modal-header"
|
|
1
|
+
<template>
|
|
2
|
+
<div class="slds-modal__header slds-text-align_left" part="modal-header"
|
|
3
|
+
onprivatemodalheaderdisableclose={handlePrivateModalHeaderDisableClose}
|
|
4
|
+
>
|
|
3
5
|
<template if:true={label}>
|
|
4
6
|
<h1
|
|
5
|
-
id="modal-label"
|
|
6
7
|
class="slds-modal__title slds-hyphenate"
|
|
7
|
-
tabindex="-1"
|
|
8
8
|
data-label
|
|
9
|
+
id="modal-label"
|
|
10
|
+
tabindex="-1"
|
|
9
11
|
>{label}</h1>
|
|
10
12
|
</template>
|
|
13
|
+
<lightning-button-icon
|
|
14
|
+
alternative-text={headerCloseButtonAltText}
|
|
15
|
+
class="slds-modal__close"
|
|
16
|
+
data-header-close-button
|
|
17
|
+
disabled={disableCloseButton}
|
|
18
|
+
icon-name="utility:close"
|
|
19
|
+
onclick={handleModalHeaderClose}
|
|
20
|
+
size="large"
|
|
21
|
+
variant="bare"
|
|
22
|
+
></lightning-button-icon>
|
|
11
23
|
<slot
|
|
12
24
|
data-default-slot
|
|
13
25
|
onslotchange={handleDefaultSlotChange}
|