lightning-base-components 1.21.1-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.
- package/metadata/raptor.json +88 -1
- package/package.json +181 -2
- package/scopedImports/@salesforce-label-LightningRichTextEditor.colorPicker.js +1 -0
- package/src/lightning/accordion/accordion-section.slds.css +122 -0
- package/src/lightning/accordion/accordion.css +2 -16
- package/src/lightning/accordion/accordion.js +10 -7
- package/src/lightning/accordion/accordion.js-meta.xml +3 -0
- package/src/lightning/accordion/accordion.lbc.native.css +4 -0
- package/src/lightning/accordion/accordion.lbc.synthetic.css +13 -0
- package/src/lightning/accordion/accordion.slds.css +1 -656
- package/src/lightning/accordionSection/accordion-section.slds.css +31 -564
- package/src/lightning/accordionSection/accordionSection.css +2 -17
- package/src/lightning/accordionSection/accordionSection.js +29 -17
- package/src/lightning/accordionSection/accordionSection.js-meta.xml +3 -0
- package/src/lightning/accordionSection/accordionSection.lbc.native.css +5 -0
- package/src/lightning/accordionSection/accordionSection.lbc.synthetic.css +14 -0
- package/src/lightning/accordionSection/button.slds.css +503 -0
- package/src/lightning/alert/alert.css +1 -0
- package/src/lightning/alert/alert.js +12 -9
- package/src/lightning/alert/alert.js-meta.xml +3 -0
- package/src/lightning/alert/alert.lbc.native.css +1 -0
- package/src/lightning/ariaObserver/ariaObserver.js +111 -46
- package/src/lightning/avatar/avatar.css +1 -2
- package/src/lightning/avatar/avatar.html +19 -5
- package/src/lightning/avatar/avatar.js +18 -3
- package/src/lightning/avatar/avatar.js-meta.xml +3 -0
- package/src/lightning/avatar/avatar.lbc.native.css +2 -0
- package/src/lightning/avatar/avatar.slds.css +34 -205
- package/src/lightning/badge/__examples__/basic/basic.html +3 -1
- package/src/lightning/badge/badge.css +1 -0
- package/src/lightning/badge/badge.html +16 -14
- package/src/lightning/badge/badge.js +5 -2
- package/src/lightning/badge/badge.js-meta.xml +3 -0
- package/src/lightning/badge/badge.lbc.native.css +2 -0
- package/src/lightning/badge/badge.slds.css +76 -0
- package/src/lightning/baseCombobox/base-combobox.slds.css +108 -1435
- package/src/lightning/baseCombobox/baseCombobox.css +2 -27
- package/src/lightning/baseCombobox/baseCombobox.html +2 -2
- package/src/lightning/baseCombobox/baseCombobox.js +17 -4
- package/src/lightning/baseCombobox/baseCombobox.js-meta.xml +6 -0
- package/src/lightning/baseCombobox/baseCombobox.lbc.native.css +7 -0
- package/src/lightning/baseCombobox/baseCombobox.lbc.synthetic.css +25 -0
- package/src/lightning/baseCombobox/dropdown.slds.css +594 -0
- package/src/lightning/baseCombobox/input-text.slds.css +506 -0
- package/src/lightning/baseCombobox/keyboard.js +12 -4
- package/src/lightning/baseCombobox/listbox.slds.css +204 -0
- package/src/lightning/baseCombobox/spinner.slds.css +429 -0
- package/src/lightning/baseComboboxFormattedText/baseComboboxFormattedText.js +3 -2
- package/src/lightning/baseComboboxFormattedText/baseComboboxFormattedText.js-meta.xml +6 -0
- package/src/lightning/baseComboboxItem/baseComboboxItem.js +14 -8
- package/src/lightning/baseComboboxItem/baseComboboxItem.js-meta.xml +6 -0
- package/src/lightning/baseComboboxItem/card.css +1 -0
- package/src/lightning/baseComboboxItem/card.lbc.native.css +2 -0
- package/src/lightning/baseComboboxItem/inline.css +1 -2
- package/src/lightning/baseComboboxItem/inline.lbc.native.css +2 -0
- package/src/lightning/baseComboboxItem/listbox.slds.css +103 -151
- package/src/lightning/baseFormattedText/baseFormattedText.js +2 -2
- package/src/lightning/breadcrumb/breadcrumb.css +2 -6
- package/src/lightning/breadcrumb/breadcrumb.js +4 -2
- package/src/lightning/breadcrumb/breadcrumb.js-meta.xml +3 -0
- package/src/lightning/breadcrumb/breadcrumb.lbc.native.css +1 -0
- package/src/lightning/breadcrumb/breadcrumb.lbc.synthetic.css +3 -0
- package/src/lightning/breadcrumb/breadcrumb.slds.css +4 -6
- package/src/lightning/breadcrumbs/breadcrumbs.css +2 -10
- package/src/lightning/breadcrumbs/breadcrumbs.js +3 -2
- package/src/lightning/breadcrumbs/breadcrumbs.js-meta.xml +3 -0
- package/src/lightning/breadcrumbs/breadcrumbs.lbc.native.css +2 -0
- package/src/lightning/breadcrumbs/breadcrumbs.lbc.synthetic.css +7 -0
- package/src/lightning/breadcrumbs/breadcrumbs.slds.css +7 -5
- package/src/lightning/button/button.css +1 -2
- package/src/lightning/button/button.js +2 -1
- package/src/lightning/button/button.js-meta.xml +3 -0
- package/src/lightning/button/button.lbc.native.css +2 -0
- package/src/lightning/button/button.slds.css +365 -395
- package/src/lightning/buttonGroup/button-group.slds.css +37 -35
- package/src/lightning/buttonGroup/buttonGroup.css +2 -11
- package/src/lightning/buttonGroup/buttonGroup.js +5 -2
- package/src/lightning/buttonGroup/buttonGroup.js-meta.xml +3 -0
- package/src/lightning/buttonGroup/buttonGroup.lbc.native.css +2 -0
- package/src/lightning/buttonGroup/buttonGroup.lbc.synthetic.css +3 -0
- package/src/lightning/buttonIcon/button-icon.slds.css +575 -766
- package/src/lightning/buttonIcon/buttonIcon.css +2 -2
- package/src/lightning/buttonIcon/buttonIcon.js +8 -2
- package/src/lightning/buttonIcon/buttonIcon.js-meta.xml +3 -0
- package/src/lightning/buttonIconStateful/button-icon-stateful.slds.css +23 -976
- package/src/lightning/buttonIconStateful/button-icon.slds.css +724 -0
- package/src/lightning/buttonIconStateful/button.slds.css +503 -0
- package/src/lightning/buttonIconStateful/buttonIconStateful.css +2 -6
- package/src/lightning/buttonIconStateful/buttonIconStateful.js +54 -0
- package/src/lightning/buttonIconStateful/buttonIconStateful.js-meta.xml +3 -0
- package/src/lightning/buttonIconStateful/buttonIconStateful.lbc.native.css +4 -0
- package/src/lightning/buttonIconStateful/buttonIconStateful.lbc.synthetic.css +3 -0
- package/src/lightning/buttonMenu/button-icon.slds.css +724 -0
- package/src/lightning/buttonMenu/button-menu.slds.css +44 -1882
- package/src/lightning/buttonMenu/button.slds.css +503 -0
- package/src/lightning/buttonMenu/buttonMenu.css +1 -2
- package/src/lightning/buttonMenu/buttonMenu.js +8 -4
- package/src/lightning/buttonMenu/buttonMenu.js-meta.xml +3 -0
- package/src/lightning/buttonMenu/buttonMenu.lbc.native.css +5 -0
- package/src/lightning/buttonMenu/dropdown.slds.css +594 -0
- package/src/lightning/buttonStateful/button-stateful.slds.css +8 -747
- package/src/lightning/buttonStateful/button.slds.css +503 -0
- package/src/lightning/buttonStateful/buttonStateful.css +1 -2
- package/src/lightning/buttonStateful/buttonStateful.js +7 -3
- package/src/lightning/buttonStateful/buttonStateful.lbc.native.css +3 -0
- package/src/lightning/calendar/calendar.css +2 -11
- package/src/lightning/calendar/calendar.js +4 -2
- package/src/lightning/calendar/calendar.js-meta.xml +6 -0
- package/src/lightning/calendar/calendar.lbc.native.css +11 -0
- package/src/lightning/calendar/calendar.lbc.synthetic.css +8 -0
- package/src/lightning/calendar/calendar.slds.css +42 -1850
- package/src/lightning/calendar/dropdown.slds.css +594 -0
- package/src/lightning/card/card.css +1 -2
- package/src/lightning/card/card.js +3 -2
- package/src/lightning/card/card.lbc.native.css +2 -0
- package/src/lightning/card/card.slds.css +119 -176
- package/src/lightning/carousel/carousel.css +1 -7
- package/src/lightning/carousel/carousel.lbc.synthetic.css +7 -0
- package/src/lightning/colorPickerCustom/color-picker-custom.slds.css +56 -281
- package/src/lightning/colorPickerCustom/colorPickerCustom.css +1 -2
- package/src/lightning/colorPickerCustom/colorPickerCustom.js +3 -2
- package/src/lightning/colorPickerCustom/colorPickerCustom.lbc.native.css +3 -0
- package/src/lightning/colorPickerCustom/input-text.slds.css +506 -0
- package/src/lightning/colorPickerPanel/color-picker-panel.slds.css +11 -783
- package/src/lightning/colorPickerPanel/colorPickerPanel.css +2 -12
- package/src/lightning/colorPickerPanel/colorPickerPanel.js +4 -2
- package/src/lightning/colorPickerPanel/colorPickerPanel.lbc.native.css +3 -0
- package/src/lightning/colorPickerPanel/colorPickerPanel.lbc.synthetic.css +8 -0
- package/src/lightning/colorPickerPanel/popover.slds.css +29 -32
- package/src/lightning/combobox/combobox.css +2 -19
- package/src/lightning/combobox/combobox.html +4 -1
- package/src/lightning/combobox/combobox.js +20 -3
- package/src/lightning/combobox/combobox.js-meta.xml +3 -0
- package/src/lightning/combobox/combobox.lbc.native.css +3 -0
- package/src/lightning/combobox/combobox.lbc.synthetic.css +28 -0
- package/src/lightning/combobox/combobox.slds.css +3 -4
- package/src/lightning/combobox/form-element.slds.css +122 -95
- package/src/lightning/configProvider/defaultDurationConfig.js +1 -1
- package/src/lightning/confirm/confirm.css +1 -0
- package/src/lightning/confirm/confirm.js +12 -9
- package/src/lightning/confirm/confirm.js-meta.xml +3 -0
- package/src/lightning/confirm/confirm.lbc.native.css +1 -0
- package/src/lightning/datatable/__examples__/customDatatableWrapper/customDatatableWrapper.js +0 -69
- package/src/lightning/datatable/__examples__/customDatatypeDeleteRowBtn/customDatatypeDeleteRowBtn.html +1 -1
- package/src/lightning/datatable/__examples__/customDatatypeDeleteRowBtn/customDatatypeDeleteRowBtn.js +1 -16
- package/src/lightning/datatable/__examples__/customDatatypeLink/customDatatypeLink.html +3 -3
- package/src/lightning/datatable/__examples__/customDatatypeRowOrderingBtn/customDatatypeRowOrderingBtn.html +1 -8
- package/src/lightning/datatable/__examples__/customDatatypeRowOrderingBtn/customDatatypeRowOrderingBtn.js +2 -39
- package/src/lightning/datatable/__examples__/customDatatypeTable/customLink.html +5 -7
- package/src/lightning/datatable/__examples__/customDatatypeTable/customNumber.html +1 -1
- package/src/lightning/datatable/__examples__/customDatatypeTable/customNumberEdit.html +2 -0
- package/src/lightning/datatable/__examples__/customDatatypeTable/deleteRow.html +3 -2
- package/src/lightning/datatable/__examples__/customDatatypeTable/iconPill.html +1 -1
- package/src/lightning/datatable/__examples__/customNestedComponent/customNestedComponent.html +10 -0
- package/src/lightning/datatable/__examples__/customNestedComponent/customNestedComponent.js +12 -0
- package/src/lightning/datatable/autoWidthStrategy.js +147 -191
- package/src/lightning/datatable/columnResizer.js +35 -35
- package/src/lightning/datatable/columnWidthManager.js +118 -177
- package/src/lightning/datatable/columns.js +90 -59
- package/src/lightning/datatable/datagrid.slds.css +187 -0
- package/src/lightning/datatable/datatable.js +248 -229
- package/src/lightning/datatable/errors.js +3 -0
- package/src/lightning/datatable/fixedWidthStrategy.js +22 -29
- package/src/lightning/datatable/headerActions.js +7 -9
- package/src/lightning/datatable/infiniteLoading.js +15 -15
- package/src/lightning/datatable/inlineEdit.js +255 -235
- package/src/lightning/datatable/keyboard.js +318 -282
- package/src/lightning/datatable/renderManager.js +10 -7
- package/src/lightning/datatable/resizeObserver.js +11 -59
- package/src/lightning/datatable/rowLevelActions.js +6 -5
- package/src/lightning/datatable/rowNumber.js +23 -23
- package/src/lightning/datatable/rowSelection.js +173 -145
- package/src/lightning/datatable/rowSelectionShared.js +13 -6
- package/src/lightning/datatable/rows.js +231 -196
- package/src/lightning/datatable/sort.js +26 -22
- package/src/lightning/datatable/templates/div/div.css +2 -57
- package/src/lightning/datatable/templates/div/div.html +13 -6
- package/src/lightning/datatable/templates/div/div.lbc.native.css +3 -0
- package/src/lightning/datatable/templates/div/div.lbc.synthetic.css +86 -0
- package/src/lightning/datatable/templates/table/table.html +1 -0
- package/src/lightning/datatable/utils.js +5 -5
- package/src/lightning/datatable/widthManagerShared.js +24 -21
- package/src/lightning/datatable/wrapText.js +25 -26
- package/src/lightning/datepicker/datepicker.css +1 -3
- package/src/lightning/datepicker/datepicker.js +47 -17
- package/src/lightning/datepicker/datepicker.js-meta.xml +6 -0
- package/src/lightning/datepicker/datepicker.lbc.native.css +3 -0
- package/src/lightning/datepicker/form-element.slds.css +122 -95
- package/src/lightning/datepicker/input-text.slds.css +289 -181
- package/src/lightning/datetimepicker/datetimepicker.css +1 -3
- package/src/lightning/datetimepicker/datetimepicker.html +0 -2
- package/src/lightning/datetimepicker/datetimepicker.js +35 -10
- package/src/lightning/datetimepicker/datetimepicker.js-meta.xml +6 -0
- package/src/lightning/datetimepicker/datetimepicker.lbc.native.css +3 -0
- package/src/lightning/datetimepicker/form-element.slds.css +122 -95
- package/src/lightning/datetimepicker/input-text.slds.css +289 -181
- package/src/lightning/dualListbox/dual-listbox.slds.css +34 -29
- package/src/lightning/dualListbox/dualListbox.css +2 -8
- package/src/lightning/dualListbox/dualListbox.js +55 -36
- package/src/lightning/dualListbox/dualListbox.js-meta.xml +3 -0
- package/src/lightning/dualListbox/dualListbox.lbc.native.css +4 -0
- package/src/lightning/dualListbox/dualListbox.lbc.synthetic.css +3 -0
- package/src/lightning/dualListbox/form-element.slds.css +122 -95
- package/src/lightning/dualListbox/listbox.slds.css +103 -151
- 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/dynamicIcon/dynamicIcon.js +3 -2
- package/src/lightning/dynamicIcon/dynamicIcon.js-meta.xml +3 -0
- package/src/lightning/dynamicIcon/ellie.css +1 -1
- package/src/lightning/dynamicIcon/ellie.lbc.native.css +1 -0
- package/src/lightning/dynamicIcon/eq.css +1 -1
- package/src/lightning/dynamicIcon/eq.lbc.native.css +1 -0
- package/src/lightning/dynamicIcon/score.css +1 -1
- package/src/lightning/dynamicIcon/score.lbc.native.css +1 -0
- package/src/lightning/dynamicIcon/strength.css +1 -1
- package/src/lightning/dynamicIcon/strength.lbc.native.css +1 -0
- package/src/lightning/dynamicIcon/trend.css +1 -1
- package/src/lightning/dynamicIcon/trend.lbc.native.css +1 -0
- package/src/lightning/dynamicIcon/waffle.css +1 -1
- package/src/lightning/dynamicIcon/waffle.lbc.native.css +1 -0
- package/src/lightning/focusTrap/focusTrap.js +3 -2
- package/src/lightning/focusTrap/focusTrap.js-meta.xml +3 -0
- package/src/lightning/formattedAddress/formattedAddress.js-meta.xml +3 -0
- package/src/lightning/formattedDateTime/formattedDateTime.js +7 -62
- package/src/lightning/formattedDateTime/formattedDateTime.js-meta.xml +3 -0
- package/src/lightning/formattedEmail/formattedEmail.css +1 -0
- package/src/lightning/formattedEmail/formattedEmail.js +4 -2
- package/src/lightning/formattedEmail/formattedEmail.js-meta.xml +3 -0
- package/src/lightning/formattedEmail/formattedEmail.lbc.native.css +7 -0
- package/src/lightning/formattedLocation/formattedLocation.html +1 -3
- package/src/lightning/formattedLocation/formattedLocation.js +3 -25
- package/src/lightning/formattedLocation/formattedLocation.js-meta.xml +3 -0
- package/src/lightning/formattedLookup/events.js +2 -4
- package/src/lightning/formattedNumber/formattedNumber.css +1 -4
- package/src/lightning/formattedNumber/formattedNumber.js +2 -49
- package/src/lightning/formattedNumber/formattedNumber.lbc.synthetic.css +4 -0
- package/src/lightning/formattedPhone/formattedPhone.css +1 -4
- package/src/lightning/formattedPhone/formattedPhone.js-meta.xml +3 -0
- package/src/lightning/formattedPhone/formattedPhone.lbc.synthetic.css +4 -0
- package/src/lightning/formattedRichText/formatted-rich-text.slds.css +39 -39
- package/src/lightning/formattedRichText/formattedRichText.css +1 -3
- package/src/lightning/formattedRichText/formattedRichText.js +9 -7
- package/src/lightning/formattedRichText/formattedRichText.js-meta.xml +3 -0
- package/src/lightning/formattedRichText/formattedRichText.lbc.native.css +3 -0
- package/src/lightning/formattedRichText/linkTextNodes.js +58 -0
- package/src/lightning/formattedText/formattedText.css +1 -1
- package/src/lightning/formattedText/formattedText.js +3 -2
- package/src/lightning/formattedText/formattedText.js-meta.xml +3 -0
- package/src/lightning/formattedText/formattedText.lbc.native.css +1 -0
- package/src/lightning/formattedTime/formattedTime.js-meta.xml +3 -0
- package/src/lightning/formattedUrl/formattedUrl.js-meta.xml +3 -0
- package/src/lightning/groupedCombobox/__mockData__/exampleGroupedComboboxData.js +17 -0
- package/src/lightning/groupedCombobox/form-element.slds.css +315 -0
- package/src/lightning/groupedCombobox/grouped-combobox.slds.css +13 -0
- package/src/lightning/groupedCombobox/groupedCombobox.css +2 -3
- package/src/lightning/groupedCombobox/groupedCombobox.js +25 -3
- package/src/lightning/groupedCombobox/groupedCombobox.js-meta.xml +4 -1
- package/src/lightning/groupedCombobox/groupedCombobox.lbc.native.css +5 -0
- package/src/lightning/groupedCombobox/groupedCombobox.lbc.syhtnetic.css +3 -0
- package/src/lightning/groupedCombobox/input-text.slds.css +506 -0
- package/src/lightning/helptext/button-icon.slds.css +724 -0
- package/src/lightning/helptext/form-element.slds.css +122 -95
- package/src/lightning/helptext/help-text.slds.css +6 -938
- package/src/lightning/helptext/helptext.css +1 -3
- package/src/lightning/helptext/helptext.js +3 -2
- package/src/lightning/helptext/helptext.lbc.native.css +4 -0
- package/src/lightning/icon/icon.css +1 -2
- package/src/lightning/icon/icon.js +20 -2
- package/src/lightning/icon/icon.js-meta.xml +3 -0
- package/src/lightning/icon/icon.lbc.native.css +2 -0
- package/src/lightning/icon/icon.slds.css +76 -78
- package/src/lightning/input/form-element.slds.css +122 -95
- package/src/lightning/input/input.css +2 -13
- package/src/lightning/input/input.html +1 -0
- package/src/lightning/input/input.js +55 -9
- package/src/lightning/input/input.lbc.native.css +2 -0
- package/src/lightning/input/input.lbc.synthetic.css +9 -0
- package/src/lightning/inputAddress/form-element.slds.css +315 -0
- package/src/lightning/inputAddress/input-address.slds.css +14 -0
- package/src/lightning/inputAddress/input-text.slds.css +506 -0
- package/src/lightning/inputAddress/inputAddress.css +2 -3
- package/src/lightning/inputAddress/inputAddress.html +21 -12
- package/src/lightning/inputAddress/inputAddress.js +34 -14
- package/src/lightning/inputAddress/inputAddress.js-meta.xml +3 -0
- package/src/lightning/inputAddress/inputAddress.lbc.native.css +5 -0
- package/src/lightning/inputAddress/inputAddress.lbc.synthetic.css +4 -0
- package/src/lightning/inputLocation/form-element.slds.css +315 -0
- package/src/lightning/inputLocation/input-location.slds.css +14 -0
- package/src/lightning/inputLocation/input-text.slds.css +506 -0
- package/src/lightning/inputLocation/inputLocation.css +2 -3
- package/src/lightning/inputLocation/inputLocation.html +1 -1
- package/src/lightning/inputLocation/inputLocation.js +27 -6
- package/src/lightning/inputLocation/inputLocation.js-meta.xml +3 -0
- package/src/lightning/inputLocation/inputLocation.lbc.native.css +5 -0
- package/src/lightning/inputLocation/inputLocation.lbc.synthetic.css +3 -0
- package/src/lightning/inputName/form-element.slds.css +315 -0
- package/src/lightning/inputName/input-text.slds.css +506 -0
- package/src/lightning/inputName/inputName.css +2 -3
- package/src/lightning/inputName/inputName.js +22 -15
- package/src/lightning/inputName/inputName.lbc.native.css +4 -0
- package/src/lightning/inputName/inputName.lbc.synthetic.css +3 -0
- package/src/lightning/interactiveDialogBase/interactive-dialog-base.slds.css +21 -0
- package/src/lightning/interactiveDialogBase/interactiveDialogBase.css +2 -520
- package/src/lightning/interactiveDialogBase/interactiveDialogBase.html +8 -3
- package/src/lightning/interactiveDialogBase/interactiveDialogBase.js +6 -0
- package/src/lightning/interactiveDialogBase/interactiveDialogBase.js-meta.xml +6 -0
- package/src/lightning/interactiveDialogBase/interactiveDialogBase.lbc.native.css +3 -0
- package/src/lightning/interactiveDialogBase/interactiveDialogBase.lbc.synthetic.css +20 -0
- package/src/lightning/internationalizationLibrary/datetime/dateTimeUtils.js +33 -10
- package/src/lightning/layout/layout.css +2 -9
- package/src/lightning/layout/layout.js +5 -2
- package/src/lightning/layout/layout.js-meta.xml +3 -0
- package/src/lightning/layout/layout.lbc.native.css +2 -0
- package/src/lightning/layout/layout.lbc.synthetic.css +6 -0
- package/src/lightning/layoutItem/layoutItem.css +1 -5
- package/src/lightning/layoutItem/layoutItem.js +5 -2
- package/src/lightning/layoutItem/layoutItem.js-meta.xml +3 -0
- package/src/lightning/layoutItem/layoutItem.lbc.native.css +5 -0
- package/src/lightning/lookupAddress/form-element.slds.css +315 -0
- package/src/lightning/lookupAddress/listbox.slds.css +204 -0
- package/src/lightning/lookupAddress/location.js +2 -0
- package/src/lightning/lookupAddress/lookup-address.slds.css +8 -0
- package/src/lightning/lookupAddress/lookupAddress.css +2 -0
- package/src/lightning/lookupAddress/lookupAddress.html +12 -9
- package/src/lightning/lookupAddress/lookupAddress.js +19 -12
- package/src/lightning/lookupAddress/lookupAddress.lbc.native.css +4 -0
- package/src/lightning/menuDivider/menu-divider.slds.css +4 -6
- package/src/lightning/menuDivider/menuDivider.css +2 -6
- package/src/lightning/menuDivider/menuDivider.js +4 -3
- package/src/lightning/menuDivider/menuDivider.lbc.native.css +2 -0
- package/src/lightning/menuDivider/menuDivider.lbc.synthetic.css +3 -0
- package/src/lightning/menuItem/menu-item.slds.css +24 -18
- package/src/lightning/menuItem/menuItem.css +2 -6
- package/src/lightning/menuItem/menuItem.js +13 -3
- package/src/lightning/menuItem/menuItem.js-meta.xml +3 -0
- package/src/lightning/menuItem/menuItem.lbc.native.css +2 -0
- package/src/lightning/menuItem/menuItem.lbc.synthetic.css +3 -0
- package/src/lightning/menuSubheader/menu-subheader.slds.css +5 -6
- package/src/lightning/menuSubheader/menuSubheader.css +2 -6
- package/src/lightning/menuSubheader/menuSubheader.js +4 -2
- package/src/lightning/menuSubheader/menuSubheader.lbc.native.css +2 -0
- package/src/lightning/menuSubheader/menuSubheader.lbc.synthetic.css +3 -0
- package/src/lightning/modal/__docs__/modal.md +30 -0
- package/src/lightning/modal/__examples__disabled/allformfullcompound/allformfullcompound.css +7 -0
- package/src/lightning/modal/__examples__disabled/allformfullcompound/allformfullcompound.html +9 -0
- package/src/lightning/modal/__examples__disabled/allformfullcompound/allformfullcompound.js +54 -0
- package/src/lightning/modal/__examples__disabled/allformhoriz/allformhoriz.css +7 -0
- package/src/lightning/modal/__examples__disabled/allformhoriz/allformhoriz.html +9 -0
- package/src/lightning/modal/__examples__disabled/allformhoriz/allformhoriz.js +53 -0
- package/src/lightning/modal/__examples__disabled/allmulti/allmulti.html +1 -0
- package/src/lightning/modal/__examples__disabled/allmulti/allmulti.js +43 -1
- package/src/lightning/modal/__examples__disabled/basic/basic.css +1 -1
- package/src/lightning/modal/__examples__disabled/demo/demo.css +1 -0
- package/src/lightning/modal/__examples__disabled/demoall/demoall.css +5 -0
- package/src/lightning/modal/__examples__disabled/demoallform/demoallform.css +2 -3
- package/src/lightning/modal/__examples__disabled/demoallform/demoallform.html +181 -107
- package/src/lightning/modal/__examples__disabled/demoallform/demoallform.js +7 -1
- package/src/lightning/modal/__examples__disabled/demoallformfull/demoallformfull.css +2 -3
- package/src/lightning/modal/__examples__disabled/demoallformfull/demoallformfull.html +181 -107
- package/src/lightning/modal/__examples__disabled/demoallformfullcompound/demoallformfullcompound.css +7 -0
- package/src/lightning/modal/__examples__disabled/demoallformfullcompound/demoallformfullcompound.html +109 -0
- package/src/lightning/modal/__examples__disabled/demoallformfullcompound/demoallformfullcompound.js +241 -0
- package/src/lightning/modal/__examples__disabled/demoallformhoriz/demoallformhoriz.css +5 -0
- package/src/lightning/modal/__examples__disabled/demoallformhoriz/demoallformhoriz.html +165 -0
- package/src/lightning/modal/__examples__disabled/demoallformhoriz/demoallformhoriz.js +241 -0
- package/src/lightning/modal/__examples__disabled/demofootless/demofootless.css +1 -0
- package/src/lightning/modal/__examples__disabled/demoheadless/demoheadless.css +5 -0
- package/src/lightning/modal/__modalUtils__/modalContainerTestConstants.js +8 -0
- package/src/lightning/modal/__modalUtils__/modalContainerTestMethods.js +108 -3
- package/src/lightning/modalBase/modal-base.slds.css +242 -0
- package/src/lightning/modalBase/modalBase.css +2 -16
- package/src/lightning/modalBase/modalBase.html +2 -0
- package/src/lightning/modalBase/modalBase.js +158 -18
- package/src/lightning/modalBase/modalBase.js-meta.xml +6 -0
- package/src/lightning/modalBase/modalBase.lbc.native.css +2 -0
- package/src/lightning/modalBase/modalBase.lbc.synthetic.css +18 -0
- package/src/lightning/modalBody/modal-body.slds.css +60 -0
- package/src/lightning/modalBody/modalBody.css +1 -0
- package/src/lightning/modalBody/modalBody.html +1 -0
- package/src/lightning/modalBody/modalBody.js +15 -2
- package/src/lightning/modalBody/modalBody.lbc.native.css +3 -0
- package/src/lightning/modalFooter/modal-footer.slds.css +79 -0
- package/src/lightning/modalFooter/modalFooter.css +1 -0
- package/src/lightning/modalFooter/modalFooter.html +1 -1
- package/src/lightning/modalFooter/modalFooter.js +3 -23
- package/src/lightning/modalFooter/modalFooter.lbc.native.css +2 -0
- package/src/lightning/modalHeader/modal-header.slds.css +76 -0
- package/src/lightning/modalHeader/modalHeader.css +3 -0
- package/src/lightning/modalHeader/modalHeader.html +1 -1
- package/src/lightning/modalHeader/modalHeader.js +4 -24
- package/src/lightning/modalHeader/modalHeader.lbc.native.css +3 -0
- package/src/lightning/overlay/overlay.js +11 -4
- package/src/lightning/overlay/overlay.js-meta.xml +6 -0
- package/src/lightning/overlayContainer/overlayContainer.js +3 -2
- package/src/lightning/picklist/picklist.js +24 -19
- package/src/lightning/picklist/picklist.js-meta.xml +3 -0
- package/src/lightning/pill/avatar.slds.css +34 -205
- package/src/lightning/pill/link.css +1 -3
- package/src/lightning/pill/link.lbc.native.css +3 -0
- package/src/lightning/pill/pill.js +4 -2
- package/src/lightning/pill/pill.js-meta.xml +3 -0
- package/src/lightning/pill/pill.slds.css +82 -103
- package/src/lightning/pill/plain.css +1 -3
- package/src/lightning/pill/plain.lbc.native.css +3 -0
- package/src/lightning/pill/plainLink.css +1 -3
- package/src/lightning/pill/plainLink.lbc.native.css +3 -0
- package/src/lightning/pillContainer/barePillContainer.css +1 -3
- package/src/lightning/pillContainer/barePillContainer.html +1 -1
- package/src/lightning/pillContainer/barePillContainer.lbc.native.css +4 -0
- package/src/lightning/pillContainer/button.slds.css +503 -0
- package/src/lightning/pillContainer/listbox.slds.css +103 -151
- package/src/lightning/pillContainer/pill-container.slds.css +19 -17
- package/src/lightning/pillContainer/pill.slds.css +82 -103
- package/src/lightning/pillContainer/pillContainer.js +15 -12
- package/src/lightning/pillContainer/pillContainer.js-meta.xml +3 -0
- package/src/lightning/pillContainer/standardPillContainer.css +3 -2
- package/src/lightning/pillContainer/standardPillContainer.html +1 -1
- package/src/lightning/popup/popover.slds.css +29 -32
- package/src/lightning/popup/popup.css +1 -2
- package/src/lightning/popup/popup.js +3 -2
- package/src/lightning/popup/popup.js-meta.xml +3 -0
- package/src/lightning/popup/popup.lbc.native.css +2 -0
- package/src/lightning/primitiveBubble/primitiveBubble.css +2 -11
- package/src/lightning/primitiveBubble/primitiveBubble.js +4 -2
- package/src/lightning/primitiveBubble/primitiveBubble.js-meta.xml +6 -0
- package/src/lightning/primitiveBubble/primitiveBubble.lbc.native.css +2 -0
- package/src/lightning/primitiveBubble/primitiveBubble.lbc.synthetic.css +8 -0
- package/src/lightning/primitiveBubble/tooltip.slds.css +89 -142
- package/src/lightning/primitiveButton/primitiveButoon.js-meta.xml +6 -0
- package/src/lightning/primitiveButton/primitiveButton.js +4 -2
- package/src/lightning/primitiveCellCheckbox/checkbox.css +2 -0
- package/src/lightning/primitiveColorpickerButton/color-picker-button.slds.css +18 -249
- package/src/lightning/primitiveColorpickerButton/primitiveColorpickerButton.css +1 -2
- package/src/lightning/primitiveColorpickerButton/primitiveColorpickerButton.js +3 -2
- package/src/lightning/primitiveColorpickerButton/primitiveColorpickerButton.lbc.native.css +2 -0
- package/src/lightning/primitiveCustomCell/primitiveCustomCell.js +26 -2
- package/src/lightning/primitiveDatatableCell/primitiveDatatableCell.js +1 -3
- package/src/lightning/primitiveFileDroppableZone/primitiveFileDroppableZone.js +17 -7
- package/src/lightning/primitiveHeaderFactory/nonsortableHeader.css +1 -0
- package/src/lightning/primitiveHeaderFactory/selectableHeader.css +2 -0
- package/src/lightning/primitiveIcon/icon.slds.css +76 -78
- package/src/lightning/primitiveIcon/primitiveIcon.css +2 -11
- package/src/lightning/primitiveIcon/primitiveIcon.js +7 -9
- package/src/lightning/primitiveIcon/primitiveIcon.js-meta.xml +6 -0
- package/src/lightning/primitiveIcon/primitiveIcon.lbc.native.css +2 -0
- package/src/lightning/primitiveIcon/primitiveIcon.lbc.synthetic.css +9 -0
- package/src/lightning/primitiveIframe/primitiveIframe.html +9 -8
- package/src/lightning/primitiveIframe/primitiveIframe.js +7 -3
- package/src/lightning/primitiveInputCheckbox/form-element.slds.css +122 -95
- package/src/lightning/primitiveInputCheckbox/input-checkbox.slds.css +223 -237
- package/src/lightning/primitiveInputCheckbox/primitiveInputCheckbox.css +1 -3
- package/src/lightning/primitiveInputCheckbox/primitiveInputCheckbox.js +14 -3
- package/src/lightning/primitiveInputCheckbox/primitiveInputCheckbox.js-meta.xml +6 -0
- package/src/lightning/primitiveInputCheckbox/primitiveInputCheckbox.lbc.native.css +3 -0
- package/src/lightning/primitiveInputCheckboxButton/form-element.slds.css +122 -95
- package/src/lightning/primitiveInputCheckboxButton/input-checkbox-button.slds.css +36 -34
- package/src/lightning/primitiveInputCheckboxButton/primitiveInputCheckboxButton.css +2 -6
- package/src/lightning/primitiveInputCheckboxButton/primitiveInputCheckboxButton.js +5 -2
- package/src/lightning/primitiveInputCheckboxButton/primitiveInputCheckboxButton.js-meta.xml +6 -0
- package/src/lightning/primitiveInputCheckboxButton/primitiveInputCheckboxButton.lbc.native.css +2 -0
- package/src/lightning/primitiveInputCheckboxButton/primitiveInputCheckboxButton.lbc.synthetic.css +2 -0
- package/src/lightning/primitiveInputColor/form-element.slds.css +122 -95
- package/src/lightning/primitiveInputColor/input-color.slds.css +5 -10
- package/src/lightning/primitiveInputColor/input-text.slds.css +289 -181
- package/src/lightning/primitiveInputColor/primitiveInputColor.css +1 -4
- package/src/lightning/primitiveInputColor/primitiveInputColor.js +5 -2
- package/src/lightning/primitiveInputColor/primitiveInputColor.js-meta.xml +6 -0
- package/src/lightning/primitiveInputColor/primitiveInputColor.lbc.native.css +4 -0
- package/src/lightning/primitiveInputFile/button.slds.css +365 -395
- package/src/lightning/primitiveInputFile/form-element.slds.css +122 -95
- package/src/lightning/primitiveInputFile/input-file.slds.css +13 -16
- package/src/lightning/primitiveInputFile/primitiveInputFile.css +1 -5
- package/src/lightning/primitiveInputFile/primitiveInputFile.js +13 -9
- package/src/lightning/primitiveInputFile/primitiveInputFile.js-meta.xml +6 -0
- package/src/lightning/primitiveInputFile/primitiveInputFile.lbc.native.css +4 -0
- package/src/lightning/primitiveInputRadio/primitiveInputRadio.js +4 -2
- package/src/lightning/primitiveInputSimple/form-element.slds.css +122 -95
- package/src/lightning/primitiveInputSimple/input-text.slds.css +289 -181
- package/src/lightning/primitiveInputSimple/primitiveInputSimple.css +2 -9
- package/src/lightning/primitiveInputSimple/primitiveInputSimple.js +4 -2
- package/src/lightning/primitiveInputSimple/primitiveInputSimple.js-meta.xml +6 -0
- package/src/lightning/primitiveInputSimple/primitiveInputSimple.lbc.native.css +3 -0
- package/src/lightning/primitiveInputSimple/primitiveInputSimple.lbc.synthetic.css +5 -0
- package/src/lightning/primitiveInputToggle/form-element.slds.css +122 -95
- package/src/lightning/primitiveInputToggle/input-toggle.slds.css +78 -55
- package/src/lightning/primitiveInputToggle/primitiveInputToggle.css +1 -3
- package/src/lightning/primitiveInputToggle/primitiveInputToggle.js +14 -3
- package/src/lightning/primitiveInputToggle/primitiveInputToggle.js-meta.xml +6 -0
- package/src/lightning/primitiveInputToggle/primitiveInputToggle.lbc.native.css +3 -0
- package/src/lightning/progressBar/progress-bar.slds.css +64 -0
- package/src/lightning/progressBar/progressBar.css +1 -0
- package/src/lightning/progressBar/progressBar.html +1 -0
- package/src/lightning/progressBar/progressBar.js +3 -2
- package/src/lightning/progressBar/progressBar.lbc.native.css +2 -0
- package/src/lightning/progressIndicator/progressIndicator.css +1 -3
- package/src/lightning/progressIndicator/progressIndicator.lbc.synthetic.css +3 -0
- package/src/lightning/progressRing/progress-ring.slds.css +113 -0
- package/src/lightning/progressRing/progressRing.css +1 -0
- package/src/lightning/progressRing/progressRing.html +1 -1
- package/src/lightning/progressRing/progressRing.js +3 -2
- package/src/lightning/progressRing/progressRing.lbc.native.css +2 -0
- package/src/lightning/progressStep/progressStep.js +1 -14
- package/src/lightning/prompt/prompt.css +1 -85
- package/src/lightning/prompt/prompt.html +15 -5
- package/src/lightning/prompt/prompt.js +12 -9
- package/src/lightning/prompt/prompt.js-meta.xml +3 -0
- package/src/lightning/prompt/prompt.lbc.native.css +2 -0
- package/src/lightning/prompt/prompt.slds.css +10 -0
- package/src/lightning/radioGroup/form-element.slds.css +315 -0
- package/src/lightning/radioGroup/input-radio-group.slds.css +124 -571
- package/src/lightning/radioGroup/radioGroup.css +2 -7
- package/src/lightning/radioGroup/radioGroup.html +1 -2
- package/src/lightning/radioGroup/radioGroup.js +5 -2
- package/src/lightning/radioGroup/radioGroup.lbc.native.css +3 -0
- package/src/lightning/radioGroup/radioGroup.lbc.synthetic.css +3 -0
- package/src/lightning/routingService/routingService.js +31 -5
- package/src/lightning/select/form-element.slds.css +122 -95
- package/src/lightning/select/select.css +1 -3
- package/src/lightning/select/select.js +4 -2
- package/src/lightning/select/select.js-meta.xml +3 -0
- package/src/lightning/select/select.lbc.native.css +3 -0
- package/src/lightning/select/select.slds.css +26 -343
- package/src/lightning/sldsUtilsThemes/sldsUtilsThemes.css +27 -11
- package/src/lightning/sldsUtilsVisibility/sldsUtilsVisibility.css +24 -0
- package/src/lightning/sldsUtilsVisibility/sldsUtilsVisibility.js-meta.xml +4 -0
- package/src/lightning/spinner/spinner.css +1 -2
- package/src/lightning/spinner/spinner.js +6 -4
- package/src/lightning/spinner/spinner.js-meta.xml +3 -0
- package/src/lightning/spinner/spinner.lbc.native.css +2 -0
- package/src/lightning/spinner/spinner.slds.css +66 -72
- package/src/lightning/staticMap/staticMap.html +12 -10
- package/src/lightning/staticMap/staticMap.js +16 -4
- package/src/lightning/tab/tab.css +1 -2
- package/src/lightning/tab/tab.js +4 -2
- package/src/lightning/tab/tab.lbc.native.css +2 -0
- package/src/lightning/tab/tab.slds.css +23 -16
- package/src/lightning/tabBar/tab-bar.slds.css +75 -65
- package/src/lightning/tabBar/tabBar.css +1 -2
- package/src/lightning/tabBar/tabBar.js +19 -2
- package/src/lightning/tabBar/tabBar.lbc.native.css +2 -0
- package/src/lightning/tabset/__docs__/tabset.md +24 -1
- package/src/lightning/tabset/tabset.css +1 -10
- package/src/lightning/tabset/tabset.html +19 -7
- package/src/lightning/tabset/tabset.js +212 -61
- package/src/lightning/tabset/tabset.lbc.native.css +3 -0
- package/src/lightning/tabset/tabset.slds.css +13 -0
- package/src/lightning/textarea/form-element.slds.css +315 -0
- package/src/lightning/textarea/textarea.css +2 -5
- package/src/lightning/textarea/textarea.html +21 -5
- package/src/lightning/textarea/textarea.js +171 -128
- package/src/lightning/textarea/textarea.lbc.native.css +3 -0
- package/src/lightning/textarea/textarea.lbc.synthetic.css +5 -0
- package/src/lightning/textarea/textarea.slds.css +108 -0
- package/src/lightning/tile/standardTile.css +1 -3
- package/src/lightning/tile/standardTile.lbc.synthetic.css +3 -0
- package/src/lightning/timepicker/form-element.slds.css +122 -95
- package/src/lightning/timepicker/timepicker.css +1 -3
- package/src/lightning/timepicker/timepicker.html +1 -1
- package/src/lightning/timepicker/timepicker.js +21 -5
- package/src/lightning/timepicker/timepicker.js-meta.xml +6 -0
- package/src/lightning/timepicker/timepicker.lbc.native.css +3 -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 +575 -766
- package/src/lightning/toast/formatted-rich-text.slds.css +39 -39
- package/src/lightning/toast/icon.slds.css +76 -78
- package/src/lightning/toast/toast.css +2 -68
- package/src/lightning/toast/toast.js +19 -14
- package/src/lightning/toast/toast.lbc.native.css +9 -0
- package/src/lightning/toast/toast.lbc.synthetic.css +58 -0
- package/src/lightning/toast/toast.slds.css +26 -38
- package/src/lightning/toastContainer/toast.slds.css +26 -38
- package/src/lightning/toastContainer/toastContainer.css +2 -43
- package/src/lightning/toastContainer/toastContainer.js +25 -17
- package/src/lightning/toastContainer/toastContainer.lbc.native.css +4 -0
- package/src/lightning/toastContainer/toastContainer.lbc.synthetic.css +38 -0
- package/src/lightning/tooltipLibrary/tooltipLibrary.js +12 -9
- package/src/lightning/tree/tree.js +2 -0
- package/src/lightning/utils/classSet.js +9 -3
- package/src/lightning/utilsPrivate/animation.js +10 -8
- package/src/lightning/utilsPrivate/aria.js +1 -1
- package/src/lightning/utilsPrivate/formatUtils.js +158 -0
- package/src/lightning/utilsPrivate/textUtils.js +16 -0
- package/src/lightning/utilsPrivate/utilsPrivate.js +76 -19
- package/src/lightning/utilsPrivate/validationUtils.js +59 -0
- package/src/lightning/verticalNavigation/verticalNavigation.css +1 -3
- package/src/lightning/verticalNavigation/verticalNavigation.js +3 -2
- package/src/lightning/verticalNavigation/verticalNavigation.lbc.native.css +2 -0
- package/src/lightning/verticalNavigationOverflow/verticalNavigationOverflow.css +1 -3
- package/src/lightning/verticalNavigationOverflow/verticalNavigationOverflow.lbc.synthetic.css +3 -0
- package/src/lightning/verticalNavigationSection/vertical-navigation-section.slds.css +8 -10
- package/src/lightning/verticalNavigationSection/verticalNavigationSection.css +2 -7
- package/src/lightning/verticalNavigationSection/verticalNavigationSection.js +3 -2
- package/src/lightning/verticalNavigationSection/verticalNavigationSection.lbc.native.css +2 -0
- package/src/lightning/verticalNavigationSection/verticalNavigationSection.lbc.synthetic.css +3 -0
- package/src/lightning/datatable/resizeSensor.js +0 -244
- package/src/lightning/formattedRichText/linkify.js +0 -43
- package/src/lightning/utilsPrivate/smartSetAttribute.js +0 -19
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { api
|
|
1
|
+
import { api } from 'lwc';
|
|
2
|
+
import LightningShadowBaseClass from 'lightning/shadowBaseClassPrivate';
|
|
2
3
|
import { classSet } from 'lightning/utils';
|
|
3
4
|
import {
|
|
4
|
-
isCSR,
|
|
5
5
|
makeEverythingExceptElementInert,
|
|
6
6
|
normalizeString,
|
|
7
7
|
synchronizeAttrs,
|
|
@@ -9,14 +9,17 @@ import {
|
|
|
9
9
|
hasAnimation,
|
|
10
10
|
ARIA,
|
|
11
11
|
isAriaDescriptionSupported,
|
|
12
|
+
isCSR,
|
|
12
13
|
} from 'lightning/utilsPrivate';
|
|
13
14
|
import { instanceName, secure } from 'lightning/overlayUtils';
|
|
14
15
|
import {
|
|
15
16
|
getElementWithFocus,
|
|
16
17
|
returnFocusToElement,
|
|
18
|
+
findAllTabbableElements,
|
|
17
19
|
} from 'lightning/focusUtils';
|
|
18
20
|
import closeButtonAltText from '@salesforce/label/LightningModalBase.cancelandclose';
|
|
19
21
|
import disableCloseBtnMessage from '@salesforce/label/LightningModalBase.waitstate';
|
|
22
|
+
import AriaObserver from 'lightning/ariaObserver';
|
|
20
23
|
|
|
21
24
|
const DEBOUNCE_RESIZE = 300;
|
|
22
25
|
const SMALL_SCREEN_SIZE = 480;
|
|
@@ -24,10 +27,12 @@ const SIZE_SMALL = 'small';
|
|
|
24
27
|
const SIZE_MEDIUM = 'medium';
|
|
25
28
|
const SIZE_LARGE = 'large';
|
|
26
29
|
const SIZE_FULL = 'full';
|
|
30
|
+
const OVERLAY_CONTAINER = 'lightning-overlay-container';
|
|
31
|
+
const MODAL_BASE = 'lightning-modal-base';
|
|
27
32
|
|
|
28
|
-
export default class LightningModalBase extends
|
|
33
|
+
export default class LightningModalBase extends LightningShadowBaseClass {
|
|
29
34
|
// this is visible in DOM, changed from 'lightning-modal-base'
|
|
30
|
-
static [instanceName] =
|
|
35
|
+
static [instanceName] = MODAL_BASE;
|
|
31
36
|
|
|
32
37
|
// private tracked state
|
|
33
38
|
initialRender = true;
|
|
@@ -50,7 +55,6 @@ export default class LightningModalBase extends LightningElement {
|
|
|
50
55
|
headerLabelId = null;
|
|
51
56
|
headerLabelIsPopulated = null;
|
|
52
57
|
headerTitleRef = null;
|
|
53
|
-
headerTabElemRef = null;
|
|
54
58
|
|
|
55
59
|
// modalBody, child
|
|
56
60
|
bodyRegistered = false;
|
|
@@ -66,12 +70,18 @@ export default class LightningModalBase extends LightningElement {
|
|
|
66
70
|
portraitMatchMedia = null;
|
|
67
71
|
screenOrientationChangeHandler = null;
|
|
68
72
|
|
|
73
|
+
// state utilized when performing keyboard Tab/Shift-Tab interactions
|
|
74
|
+
focusinEventBound = false;
|
|
75
|
+
focusinEventHandler = null;
|
|
76
|
+
lastFocussedElementOnModal = null;
|
|
77
|
+
previousSavedInertElementsSize = 0;
|
|
78
|
+
allTabbableElements = null;
|
|
79
|
+
|
|
69
80
|
// modalFooter, child
|
|
70
81
|
footerRegistered = false;
|
|
71
82
|
footerHeight = 0;
|
|
72
83
|
footerSlotHasRendered = false;
|
|
73
84
|
footerDefaultSlotIsPopulated = false;
|
|
74
|
-
footerTabElemRef = null;
|
|
75
85
|
|
|
76
86
|
// aria attributes
|
|
77
87
|
modalLabel = null;
|
|
@@ -89,6 +99,14 @@ export default class LightningModalBase extends LightningElement {
|
|
|
89
99
|
// before modal opened, element previously focused
|
|
90
100
|
savedActiveElement;
|
|
91
101
|
|
|
102
|
+
// accessibility
|
|
103
|
+
ariaObserver = null;
|
|
104
|
+
|
|
105
|
+
constructor() {
|
|
106
|
+
super();
|
|
107
|
+
this.ariaObserver = new AriaObserver(this);
|
|
108
|
+
}
|
|
109
|
+
|
|
92
110
|
/**
|
|
93
111
|
* <lightning-modal> label value
|
|
94
112
|
* Text to display as the heading at the top of the modal
|
|
@@ -212,7 +230,10 @@ export default class LightningModalBase extends LightningElement {
|
|
|
212
230
|
* @private
|
|
213
231
|
*/
|
|
214
232
|
get modal() {
|
|
215
|
-
return (
|
|
233
|
+
return (
|
|
234
|
+
(isCSR && this.defaultSlot && this.defaultSlot.childNodes[0]) ||
|
|
235
|
+
null
|
|
236
|
+
);
|
|
216
237
|
}
|
|
217
238
|
|
|
218
239
|
/**
|
|
@@ -418,6 +439,61 @@ export default class LightningModalBase extends LightningElement {
|
|
|
418
439
|
}
|
|
419
440
|
}
|
|
420
441
|
|
|
442
|
+
/**
|
|
443
|
+
* Handler for 'focusin' events responsible for following -
|
|
444
|
+
* <ul>
|
|
445
|
+
* <li>While the focus is on a Modal or stacked Modals, the handler tracks the last focussed element inside a Modal</li>
|
|
446
|
+
* <li>If user's focus moves outside a Modal, the handler tries to bring user's focus back to last focussed element</li>
|
|
447
|
+
* </ul>
|
|
448
|
+
* @param e - Event
|
|
449
|
+
*/
|
|
450
|
+
handleFocusinEvents(e) {
|
|
451
|
+
// eslint-disable-next-line @lwc/lwc/no-async-operation
|
|
452
|
+
requestAnimationFrame(() => {
|
|
453
|
+
e.preventDefault();
|
|
454
|
+
e.stopPropagation();
|
|
455
|
+
|
|
456
|
+
const focusinEvtTarget = e.target;
|
|
457
|
+
const isFocusTargetAModal =
|
|
458
|
+
focusinEvtTarget.matches(OVERLAY_CONTAINER);
|
|
459
|
+
const wasANewModalStackedOnTopOfAnExistingModal =
|
|
460
|
+
this.isStackedModal() &&
|
|
461
|
+
this.savedInertElements.length >
|
|
462
|
+
this.previousSavedInertElementsSize;
|
|
463
|
+
|
|
464
|
+
if (wasANewModalStackedOnTopOfAnExistingModal) {
|
|
465
|
+
// update private tracker in anticipation of more stacked modals
|
|
466
|
+
this.previousSavedInertElementsSize =
|
|
467
|
+
this.savedInertElements.length;
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
// 1. If focus is on a Modal, then track the last focussed element
|
|
471
|
+
if (isFocusTargetAModal) {
|
|
472
|
+
// Perf optimization: check if allTabbableElements needs updating
|
|
473
|
+
if (
|
|
474
|
+
!this.allTabbableElements ||
|
|
475
|
+
wasANewModalStackedOnTopOfAnExistingModal
|
|
476
|
+
) {
|
|
477
|
+
this.allTabbableElements =
|
|
478
|
+
findAllTabbableElements(focusinEvtTarget);
|
|
479
|
+
}
|
|
480
|
+
const elementWithFocus = getElementWithFocus();
|
|
481
|
+
const isModalTitleText =
|
|
482
|
+
elementWithFocus.hasAttribute('data-label');
|
|
483
|
+
if (
|
|
484
|
+
isModalTitleText ||
|
|
485
|
+
this.allTabbableElements.indexOf(elementWithFocus) !== -1
|
|
486
|
+
) {
|
|
487
|
+
// element is part of the Modal with current focus on it, track it
|
|
488
|
+
this.lastFocussedElementOnModal = elementWithFocus;
|
|
489
|
+
}
|
|
490
|
+
} // 2. If focus moved out of Modal, return focus to last element that was focussed.
|
|
491
|
+
else {
|
|
492
|
+
returnFocusToElement(this.lastFocussedElementOnModal);
|
|
493
|
+
}
|
|
494
|
+
});
|
|
495
|
+
}
|
|
496
|
+
|
|
421
497
|
/**
|
|
422
498
|
* Opening the modal involves first performing necessary steps to
|
|
423
499
|
* prepare for when the modal closes
|
|
@@ -440,6 +516,10 @@ export default class LightningModalBase extends LightningElement {
|
|
|
440
516
|
closeModal() {
|
|
441
517
|
this.returnFocusToBackground();
|
|
442
518
|
this.renderBackgroundActive(this.savedInertElements);
|
|
519
|
+
if (this.ariaObserver) {
|
|
520
|
+
this.ariaObserver.disconnect();
|
|
521
|
+
this.ariaObserver = undefined;
|
|
522
|
+
}
|
|
443
523
|
}
|
|
444
524
|
|
|
445
525
|
/**
|
|
@@ -456,6 +536,9 @@ export default class LightningModalBase extends LightningElement {
|
|
|
456
536
|
});
|
|
457
537
|
// console.error when label empty
|
|
458
538
|
this.errorLabelRequired();
|
|
539
|
+
if (this.ariaObserver) {
|
|
540
|
+
this.ariaObserver.disconnect();
|
|
541
|
+
}
|
|
459
542
|
};
|
|
460
543
|
|
|
461
544
|
get isDescriptionSet() {
|
|
@@ -520,10 +603,12 @@ export default class LightningModalBase extends LightningElement {
|
|
|
520
603
|
// headerLabelIsPopulated is equivalent labelIsEmpty, but from modalHeader level
|
|
521
604
|
if (headerRegistered) {
|
|
522
605
|
if (headerLabelId && headerLabelIsPopulated) {
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
606
|
+
this.ariaObserver.connect({
|
|
607
|
+
targetNode: this.modalWrapper,
|
|
608
|
+
attribute: 'aria-labelledby',
|
|
609
|
+
relatedNodes: [this.headerTitleRef],
|
|
526
610
|
});
|
|
611
|
+
synchronizeAttrs(this.modalWrapper, { [ARIA.LABEL]: null });
|
|
527
612
|
// if labelId not set OR header label value not set,
|
|
528
613
|
// must console.error
|
|
529
614
|
} else {
|
|
@@ -746,7 +831,6 @@ export default class LightningModalBase extends LightningElement {
|
|
|
746
831
|
// FUTURE TODO mechanism to support aria-describedby
|
|
747
832
|
// aria-describedby is optional, without a good reproducible pattern
|
|
748
833
|
this.initBodyState();
|
|
749
|
-
this.removeWindowResizeEventListener();
|
|
750
834
|
}
|
|
751
835
|
|
|
752
836
|
/**
|
|
@@ -784,6 +868,9 @@ export default class LightningModalBase extends LightningElement {
|
|
|
784
868
|
if (!this.windowOrientationEventBound) {
|
|
785
869
|
this.addOrientationChangeListener();
|
|
786
870
|
}
|
|
871
|
+
if (!this.focusinEventBound) {
|
|
872
|
+
this.addFocusinEventListener();
|
|
873
|
+
}
|
|
787
874
|
}
|
|
788
875
|
|
|
789
876
|
/**
|
|
@@ -838,7 +925,6 @@ export default class LightningModalBase extends LightningElement {
|
|
|
838
925
|
*/
|
|
839
926
|
registerHeader({
|
|
840
927
|
defaultSlotIsPopulated,
|
|
841
|
-
firstTabbableElemRef,
|
|
842
928
|
defaultSlotWrapperId,
|
|
843
929
|
defaultSlotHasRendered,
|
|
844
930
|
unRegisterCallback,
|
|
@@ -855,7 +941,6 @@ export default class LightningModalBase extends LightningElement {
|
|
|
855
941
|
this.headerLabelId = labelId;
|
|
856
942
|
this.headerLabelIsPopulated = labelIsPopulated;
|
|
857
943
|
this.headerTitleRef = headerRef;
|
|
858
|
-
this.headerTabElemRef = firstTabbableElemRef;
|
|
859
944
|
unRegisterCallback(() => {
|
|
860
945
|
this.unregisterHeader();
|
|
861
946
|
});
|
|
@@ -892,7 +977,6 @@ export default class LightningModalBase extends LightningElement {
|
|
|
892
977
|
this.headerLabelId = null;
|
|
893
978
|
this.headerLabelIsPopulated = null;
|
|
894
979
|
this.headerTitleRef = null;
|
|
895
|
-
this.headerTabElemRef = null;
|
|
896
980
|
}
|
|
897
981
|
|
|
898
982
|
/**
|
|
@@ -923,13 +1007,11 @@ export default class LightningModalBase extends LightningElement {
|
|
|
923
1007
|
defaultSlotHasRendered,
|
|
924
1008
|
footerHeight,
|
|
925
1009
|
unRegisterCallback,
|
|
926
|
-
firstTabbableElemRef,
|
|
927
1010
|
}) {
|
|
928
1011
|
this.footerRegistered = true;
|
|
929
1012
|
this.footerDefaultSlotIsPopulated = defaultSlotIsPopulated;
|
|
930
1013
|
this.footerSlotHasRendered = defaultSlotHasRendered;
|
|
931
1014
|
this.updateFooterHeight(footerHeight);
|
|
932
|
-
this.footerTabElemRef = firstTabbableElemRef || null;
|
|
933
1015
|
unRegisterCallback(() => {
|
|
934
1016
|
this.unregisterFooter();
|
|
935
1017
|
});
|
|
@@ -961,7 +1043,6 @@ export default class LightningModalBase extends LightningElement {
|
|
|
961
1043
|
this.footerHeight = 0;
|
|
962
1044
|
this.footerSlotHasRendered = false;
|
|
963
1045
|
this.footerDefaultSlotIsPopulated = false;
|
|
964
|
-
this.footerTabElemRef = null;
|
|
965
1046
|
}
|
|
966
1047
|
|
|
967
1048
|
/**
|
|
@@ -997,6 +1078,16 @@ export default class LightningModalBase extends LightningElement {
|
|
|
997
1078
|
clearTimeout(this.timeoutId);
|
|
998
1079
|
this.timeoutId = 0;
|
|
999
1080
|
|
|
1081
|
+
if (this.updateHeaderCallback) {
|
|
1082
|
+
// Update the header size
|
|
1083
|
+
this.updateHeaderCallback({ size: this.size });
|
|
1084
|
+
}
|
|
1085
|
+
|
|
1086
|
+
if (this.updateFooterCallback) {
|
|
1087
|
+
// Update the footer size
|
|
1088
|
+
this.updateFooterCallback({ size: this.size });
|
|
1089
|
+
}
|
|
1090
|
+
|
|
1000
1091
|
if (this.bodyRegistered && !this.bodyResizeScheduled) {
|
|
1001
1092
|
// check, and update isSmallScreenSize before
|
|
1002
1093
|
// callback to modalBody
|
|
@@ -1013,6 +1104,7 @@ export default class LightningModalBase extends LightningElement {
|
|
|
1013
1104
|
backdropWidth: this.backdropDimensions.width,
|
|
1014
1105
|
sizeSetFull: this.size === SIZE_FULL,
|
|
1015
1106
|
isSmallScreenSize: this.isSmallScreenSize,
|
|
1107
|
+
size: this.size,
|
|
1016
1108
|
};
|
|
1017
1109
|
this.baseUpdateBodyCallback(values);
|
|
1018
1110
|
}
|
|
@@ -1108,12 +1200,58 @@ export default class LightningModalBase extends LightningElement {
|
|
|
1108
1200
|
}
|
|
1109
1201
|
}
|
|
1110
1202
|
|
|
1203
|
+
/**
|
|
1204
|
+
* Helper method to determine when modals are being stacked.
|
|
1205
|
+
*
|
|
1206
|
+
* When stacked modals are present on the page,
|
|
1207
|
+
* elements in savedInertElements will have 'ariaHidden' attribute with a boolean true
|
|
1208
|
+
* @returns {boolean}
|
|
1209
|
+
*/
|
|
1210
|
+
isStackedModal() {
|
|
1211
|
+
const { savedInertElements } = this;
|
|
1212
|
+
for (let i = 0; i < savedInertElements.length; i++) {
|
|
1213
|
+
const isAriaHidden = savedInertElements[i].ariaHidden;
|
|
1214
|
+
if (isAriaHidden) {
|
|
1215
|
+
return true;
|
|
1216
|
+
}
|
|
1217
|
+
}
|
|
1218
|
+
return false;
|
|
1219
|
+
}
|
|
1220
|
+
|
|
1221
|
+
/**
|
|
1222
|
+
* == W-12654751 P1 a11y bug ==
|
|
1223
|
+
*
|
|
1224
|
+
* Adds an event listener to listen and handle to 'focusin' events.
|
|
1225
|
+
* All Lightning Modals must trap user focus, while they are open.
|
|
1226
|
+
*/
|
|
1227
|
+
addFocusinEventListener() {
|
|
1228
|
+
if (!this.focusinEventBound) {
|
|
1229
|
+
this.focusinEventBound = true;
|
|
1230
|
+
this.focusinEventHandler = this.handleFocusinEvents.bind(this);
|
|
1231
|
+
window.addEventListener('focusin', this.focusinEventHandler);
|
|
1232
|
+
}
|
|
1233
|
+
}
|
|
1234
|
+
|
|
1235
|
+
/**
|
|
1236
|
+
* == W-12654751 P1 a11y bug ==
|
|
1237
|
+
*
|
|
1238
|
+
* Remove event listener for 'focusin' events, only when the base modal is closed.
|
|
1239
|
+
* No-op when modals stacked on top of a base modal are closed.
|
|
1240
|
+
*/
|
|
1241
|
+
removeFocusinEventListener() {
|
|
1242
|
+
if (this.focusinEventBound) {
|
|
1243
|
+
this.focusinEventBound = false;
|
|
1244
|
+
window.removeEventListener('focusin', this.focusinEventHandler);
|
|
1245
|
+
this.focusinEventHandler = null;
|
|
1246
|
+
}
|
|
1247
|
+
}
|
|
1248
|
+
|
|
1111
1249
|
/**
|
|
1112
1250
|
* determine if the current screen is less than SMALL_SCREEN_SIZE
|
|
1113
1251
|
* for Modal, screen size detection is simplified to what's required
|
|
1114
1252
|
* for the size="full" feature addition, which is a single breakpoint
|
|
1115
1253
|
* either (a) at or below 480 pixels (small = full screen modal behavior),
|
|
1116
|
-
* or (b) at or above
|
|
1254
|
+
* or (b) at or above 481 (large = default modal behavior)
|
|
1117
1255
|
* @private
|
|
1118
1256
|
*/
|
|
1119
1257
|
setIsSmallScreenSize() {
|
|
@@ -1132,6 +1270,7 @@ export default class LightningModalBase extends LightningElement {
|
|
|
1132
1270
|
removeModalEventListeners() {
|
|
1133
1271
|
this.removeWindowResizeEventListener();
|
|
1134
1272
|
this.removeOrientationChangeListener();
|
|
1273
|
+
this.removeFocusinEventListener();
|
|
1135
1274
|
}
|
|
1136
1275
|
|
|
1137
1276
|
/**
|
|
@@ -1176,6 +1315,7 @@ export default class LightningModalBase extends LightningElement {
|
|
|
1176
1315
|
}
|
|
1177
1316
|
|
|
1178
1317
|
connectedCallback() {
|
|
1318
|
+
super.connectedCallback();
|
|
1179
1319
|
this.initModalState();
|
|
1180
1320
|
// check for screen size right away
|
|
1181
1321
|
// not adding event listeners here,
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/* Modal close button */
|
|
2
|
+
|
|
3
|
+
/* Required for autofocus to work correctly:
|
|
4
|
+
- child elements of modal appear 'visibility: hidden' at
|
|
5
|
+
the moment that they are being reviewed for eligibility
|
|
6
|
+
for focus in focus.js at isElementVisible()
|
|
7
|
+
*/
|
|
8
|
+
.fix-slds-modal,
|
|
9
|
+
:host([data-render-mode="shadow"]) .fix-slds-modal {
|
|
10
|
+
visibility: visible;
|
|
11
|
+
z-index: unset;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
/* Required for z-index */
|
|
15
|
+
.fix-slds-backdrop,
|
|
16
|
+
:host([data-render-mode="shadow"]) .fix-slds-backdrop {
|
|
17
|
+
z-index: unset;
|
|
18
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
|
|
2
|
+
/* Copyright (c) 2015-present, salesforce.com, inc. All rights reserved
|
|
3
|
+
Licensed under BSD 3-Clause - see LICENSE.txt or git.io/sfdc-license */
|
|
4
|
+
|
|
5
|
+
:host([data-render-mode="shadow"]) .slds-modal__content_headless {
|
|
6
|
+
border-start-end-radius: var(--slds-c-modalbody-radius-border, var(--slds-g-radius-border-2));
|
|
7
|
+
border-start-start-radius: var(--slds-c-modalbody-radius-border, var(--slds-g-radius-border-2));
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
:host([data-render-mode="shadow"]) .slds-modal__content {
|
|
11
|
+
/**
|
|
12
|
+
* Remap to SLDS blueprint hooks for parity
|
|
13
|
+
* https://www.lightningdesignsystem.com/components/modals/#Styling-Hooks-Overview
|
|
14
|
+
*/
|
|
15
|
+
--slds-c-modal-content-color-background: var(--slds-c-modalbody-color-background);
|
|
16
|
+
--slds-c-modal-content-text-color: var(--slds-c-modalbody-text-color);
|
|
17
|
+
|
|
18
|
+
background-color: var(--slds-c-modalbody-color-background, var(--slds-g-color-surface-container-1));
|
|
19
|
+
color: var(--slds-c-modalbody-text-color);
|
|
20
|
+
overflow: hidden;
|
|
21
|
+
overflow-y: auto;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
:host([data-render-mode="shadow"]) .slds-modal__content_footless {
|
|
25
|
+
border-bottom-right-radius: var(--slds-c-modalbody-radius-border, var(--slds-g-radius-border-2));
|
|
26
|
+
border-bottom-left-radius: var(--slds-c-modalbody-radius-border, var(--slds-g-radius-border-2));
|
|
27
|
+
box-shadow: var(--slds-c-modalbody-shadow, var(--slds-g-shadow-2));
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/* Sizes: Full */
|
|
31
|
+
|
|
32
|
+
/* Original SLDS implementation was desktop-first. This is now mobile-first for <=480px */
|
|
33
|
+
|
|
34
|
+
@media (width <= 30em) {
|
|
35
|
+
:host([data-render-mode="shadow"][data-size='full']) [part='modal-body'] {
|
|
36
|
+
grid-area: content;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
:host([data-render-mode="shadow"][data-size='full'][data-variant-footless]) [part='modal-body'] {
|
|
40
|
+
border-end-end-radius: 0;
|
|
41
|
+
border-end-start-radius: 0;
|
|
42
|
+
box-shadow: none;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* INTERNAL USE ONLY - SUBJECT TO CHANGE AND REMOVAL
|
|
47
|
+
*
|
|
48
|
+
* SLDS Blueprint <> LBC Parity Patch
|
|
49
|
+
*
|
|
50
|
+
* SLDS blueprints and LBC implementation are not 1:1. This patch is needed to
|
|
51
|
+
* account for the differences introduced in the LBC implementation. Location
|
|
52
|
+
* of this code would ideally live within the LBC component CSS module but
|
|
53
|
+
* synthetic shadow and how LBC deconstructs the modal into individual components
|
|
54
|
+
* makes this not feasible. Not ideal, but this is the best solution for now.
|
|
55
|
+
* Selectors are scoped to lightning-* to avoid any potential outside conflicts.
|
|
56
|
+
*/
|
|
57
|
+
:host([data-render-mode="shadow"][data-size='full']) {
|
|
58
|
+
display: contents;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@import './modalBody.lbc.native.css';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import LightningShadowBaseClass from 'lightning/shadowBaseClassPrivate';
|
|
2
2
|
import { classSet } from 'lightning/utils';
|
|
3
3
|
import { getRealDOMId } from 'lightning/utilsPrivate';
|
|
4
4
|
import { findAllTabbableElements, filterTooltips } from 'lightning/focusUtils';
|
|
@@ -6,7 +6,7 @@ import { findAllTabbableElements, filterTooltips } from 'lightning/focusUtils';
|
|
|
6
6
|
/**
|
|
7
7
|
* The modal body component to display main content area in lightning modal.
|
|
8
8
|
* */
|
|
9
|
-
export default class LightningModalBody extends
|
|
9
|
+
export default class LightningModalBody extends LightningShadowBaseClass {
|
|
10
10
|
// private tracked state
|
|
11
11
|
initialRender = true;
|
|
12
12
|
initialSlotRender = true;
|
|
@@ -243,6 +243,7 @@ export default class LightningModalBody extends LightningElement {
|
|
|
243
243
|
const {
|
|
244
244
|
sizeSetFull,
|
|
245
245
|
isSmallScreenSize,
|
|
246
|
+
size,
|
|
246
247
|
headerHeight,
|
|
247
248
|
footerHeight,
|
|
248
249
|
} = values;
|
|
@@ -254,6 +255,17 @@ export default class LightningModalBody extends LightningElement {
|
|
|
254
255
|
const updatedValues = this.updateValues(values);
|
|
255
256
|
// set updated values based on behavior
|
|
256
257
|
this.setModalBodyHeight(updatedValues, shouldUseFullHeight);
|
|
258
|
+
|
|
259
|
+
// update host variant and size based on header and footer height
|
|
260
|
+
if (!this.headerPresent) {
|
|
261
|
+
this.setAttribute('data-variant-headless', '');
|
|
262
|
+
}
|
|
263
|
+
if (!this.footerPresent) {
|
|
264
|
+
this.setAttribute('data-variant-footless', '');
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
// set the host size based on the modal base size
|
|
268
|
+
this.setAttribute('data-size', size);
|
|
257
269
|
}
|
|
258
270
|
}
|
|
259
271
|
|
|
@@ -296,6 +308,7 @@ export default class LightningModalBody extends LightningElement {
|
|
|
296
308
|
}
|
|
297
309
|
|
|
298
310
|
connectedCallback() {
|
|
311
|
+
super.connectedCallback();
|
|
299
312
|
// handle case where modalBody is added/removed/re-added to DOM
|
|
300
313
|
this.initState();
|
|
301
314
|
}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
|
|
2
|
+
/* Copyright (c) 2015-present, salesforce.com, inc. All rights reserved
|
|
3
|
+
Licensed under BSD 3-Clause - see LICENSE.txt or git.io/sfdc-license */
|
|
4
|
+
|
|
5
|
+
:host([data-render-mode="shadow"]) .slds-modal__footer {
|
|
6
|
+
|
|
7
|
+
/* stylelint-disable sds-stylelint-plugin/styling-hooks-deprecated */
|
|
8
|
+
|
|
9
|
+
/* stylelint-disable sds-stylelint-plugin/styling-hooks-pattern */
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Remap to SLDS blueprint hooks for parity
|
|
13
|
+
* https://www.lightningdesignsystem.com/components/modals/#Styling-Hooks-Overview
|
|
14
|
+
*/
|
|
15
|
+
--slds-c-modal-footer-color-background: var(--slds-c-modalfooter-color-background);
|
|
16
|
+
--slds-c-modal-footer-text-color: var(--slds-c-modalfooter-text-color);
|
|
17
|
+
--slds-c-modal-footer-spacing-block-start: var(--slds-c-modalfooter-spacing-block-start);
|
|
18
|
+
--slds-c-modal-footer-spacing-inline-end: var(--slds-c-modalfooter-spacing-inline-end);
|
|
19
|
+
--slds-c-modal-footer-spacing-block-end: var(--slds-c-modalfooter-spacing-block-end);
|
|
20
|
+
--slds-c-modal-footer-spacing-inline-start: var(--slds-c-modalfooter-spacing-inline-start);
|
|
21
|
+
|
|
22
|
+
border-end-end-radius: var(--slds-c-modalfooter-radius-border, var(--slds-g-radius-border-2));
|
|
23
|
+
border-end-start-radius: var(--slds-c-modalfooter-radius-border, var(--slds-g-radius-border-2));
|
|
24
|
+
border-block-start-width: var(--slds-c-modalfooter-sizing-border, var(--slds-g-sizing-border-2));
|
|
25
|
+
border-block-start-style: solid;
|
|
26
|
+
border-block-start-color: var(--slds-c-modalfooter-color-border, var(--slds-g-color-border-1));
|
|
27
|
+
background-color: var(--slds-c-modalfooter-color-background, var(--slds-g-color-surface-container-2));
|
|
28
|
+
color: var(--slds-c-modalfooter-text-color);
|
|
29
|
+
-ms-flex-negative: 0;
|
|
30
|
+
flex-shrink: 0;
|
|
31
|
+
padding-block-start: var(--slds-c-modalfooter-spacing-block-start, var(--slds-g-spacing-3));
|
|
32
|
+
padding-inline-end: var(--slds-c-modalfooter-spacing-inline-end, var(--slds-g-spacing-4));
|
|
33
|
+
padding-block-end: var(--slds-c-modalfooter-spacing-block-end, var(--slds-g-spacing-3));
|
|
34
|
+
padding-inline-start: var(--slds-c-modalfooter-spacing-inline-start, var(--slds-g-spacing-4));
|
|
35
|
+
text-align: right;
|
|
36
|
+
box-shadow: var(--slds-c-modalfooter-shadow, 0 2px 3px 0 rgba(0, 0, 0, 16%));
|
|
37
|
+
/* stylelint-enable sds-stylelint-plugin/styling-hooks-deprecated */
|
|
38
|
+
|
|
39
|
+
/* stylelint-enable sds-stylelint-plugin/styling-hooks-pattern */
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/* TODO W-12674349: Replace with visibility utility classes when available */
|
|
43
|
+
|
|
44
|
+
:host([data-render-mode="shadow"]) .slds-hide {
|
|
45
|
+
display: none !important;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/* Sizes: Full */
|
|
49
|
+
|
|
50
|
+
/* Original SLDS implementation was desktop-first. This is now mobile-first for <=480px */
|
|
51
|
+
|
|
52
|
+
@media (width <= 30em) {
|
|
53
|
+
:host([data-render-mode="shadow"][data-size='full']) [part='modal-footer'] {
|
|
54
|
+
grid-area: footer;
|
|
55
|
+
border-start-end-radius: 0;
|
|
56
|
+
border-end-start-radius: 0;
|
|
57
|
+
box-shadow: none;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* INTERNAL USE ONLY - SUBJECT TO CHANGE AND REMOVAL
|
|
62
|
+
*
|
|
63
|
+
* SLDS Blueprint <> LBC Parity Patch
|
|
64
|
+
*
|
|
65
|
+
* SLDS blueprints and LBC implementation are not 1:1. This patch is needed to
|
|
66
|
+
* account for the differences introduced in the LBC implementation. Location
|
|
67
|
+
* of this code would ideally live within the LBC component CSS module but
|
|
68
|
+
* synthetic shadow and how LBC deconstructs the modal into individual components
|
|
69
|
+
* makes this not feasible. Not ideal, but this is the best solution for now.
|
|
70
|
+
* Selectors are scoped to lightning-* to avoid any potential outside conflicts.
|
|
71
|
+
*/
|
|
72
|
+
:host([data-render-mode="shadow"][data-size='full']) {
|
|
73
|
+
display: contents;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
:host([data-render-mode="shadow"]) .slds-modal__footer .slds-button + .slds-button {
|
|
78
|
+
margin-left: var(--slds-g-spacing-2);
|
|
79
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@import './modalFooter.lbc.native.css';
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import
|
|
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';
|
|
@@ -12,7 +11,7 @@ const footerSlotSelector = '[data-footer-slot]';
|
|
|
12
11
|
/**
|
|
13
12
|
* The modal footer component to display footer content in lightning modal.
|
|
14
13
|
* */
|
|
15
|
-
export default class LightningModalFooter extends
|
|
14
|
+
export default class LightningModalFooter extends LightningShadowBaseClass {
|
|
16
15
|
// tracked private state
|
|
17
16
|
initialRender = true;
|
|
18
17
|
initialSlotRender = true;
|
|
@@ -82,25 +81,6 @@ export default class LightningModalFooter extends LightningElement {
|
|
|
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 LightningElement {
|
|
|
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
|
},
|
|
@@ -140,6 +119,7 @@ export default class LightningModalFooter extends LightningElement {
|
|
|
140
119
|
}
|
|
141
120
|
|
|
142
121
|
connectedCallback() {
|
|
122
|
+
super.connectedCallback();
|
|
143
123
|
// handle case where modalFooter is added/removed/added to DOM
|
|
144
124
|
// so registerWithParent gets called
|
|
145
125
|
this.initState();
|