lightning-base-components 1.18.8-alpha → 1.19.1-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/README.md +1 -1
- package/metadata/raptor.json +51 -1
- package/package.json +25 -1
- package/scopedImports/@salesforce-internal-core.appVersion.js +1 -1
- package/scopedImports/@salesforce-label-LightningProgressRing.complete.js +1 -0
- package/scopedImports/@salesforce-label-LightningProgressRing.expired.js +1 -0
- package/scopedImports/@salesforce-label-LightningProgressRing.warning.js +1 -0
- package/scopedImports/@salesforce-label-LightningRecordPicker.defaultSelectedRecordErrorMessage.js +1 -0
- package/scopedImports/@salesforce-label-LightningRecordPicker.invalidConfigurationErrorMessage.js +1 -1
- package/scopedImports/@salesforce-label-LightningRecordPicker.loadingPlaceholder.js +1 -0
- package/scopedImports/@salesforce-label-LightningRecordPicker.messageWhenBadInputDefault.js +1 -0
- package/scopedImports/@salesforce-label-LightningServiceCloudVoiceToolkitApi.missingNbaParams.js +1 -1
- package/src/lightning/accordion/__docs__/accordion.md +2 -2
- package/src/lightning/accordion/accordion.slds.css +30 -29
- package/src/lightning/accordionSection/__docs__/accordionSection.md +1 -1
- package/src/lightning/accordionSection/accordion-section.slds.css +26 -24
- package/src/lightning/avatar/__docs__/avatar.md +1 -1
- package/src/lightning/avatar/avatar.slds.css +21 -22
- package/src/lightning/badge/__docs__/badge.md +1 -1
- package/src/lightning/barcodeScanner/__docs__/barcodeScanner.md +2 -2
- package/src/lightning/baseCombobox/base-combobox.slds.css +48 -71
- package/src/lightning/baseCombobox/baseCombobox.js +20 -7
- package/src/lightning/baseComboboxItem/listbox.slds.css +10 -25
- package/src/lightning/breadcrumb/breadcrumb.slds.css +2 -2
- package/src/lightning/breadcrumbs/__docs__/breadcrumbs.md +3 -3
- package/src/lightning/breadcrumbs/breadcrumbs.slds.css +4 -3
- package/src/lightning/button/__docs__/button.md +8 -8
- package/src/lightning/button/button.js +1 -0
- package/src/lightning/button/button.slds.css +3 -3
- package/src/lightning/buttonGroup/__docs__/buttonGroup.md +1 -1
- package/src/lightning/buttonIcon/__docs__/buttonIcon.md +1 -1
- package/src/lightning/buttonIcon/button-icon.slds.css +6 -6
- package/src/lightning/buttonIcon/buttonIcon.js +1 -0
- package/src/lightning/buttonIconStateful/__docs__/buttonIconStateful.md +1 -1
- package/src/lightning/buttonIconStateful/button-icon-stateful.slds.css +6 -6
- package/src/lightning/buttonIconStateful/buttonIconStateful.css +4 -0
- package/src/lightning/buttonMenu/__docs__/buttonMenu.md +3 -1
- package/src/lightning/buttonMenu/button-menu.slds.css +42 -51
- package/src/lightning/buttonMenu/buttonMenu.js +4 -1
- package/src/lightning/buttonStateful/__docs__/buttonStateful.md +2 -2
- package/src/lightning/buttonStateful/button-stateful.slds.css +19 -22
- package/src/lightning/calendar/calendar.slds.css +39 -48
- package/src/lightning/card/__docs__/card.md +5 -5
- package/src/lightning/card/card.slds.css +37 -18
- package/src/lightning/colorPickerCustom/color-picker-custom.slds.css +3 -3
- package/src/lightning/colorPickerPanel/popover.slds.css +1 -1
- package/src/lightning/combobox/__docs__/combobox.md +2 -0
- package/src/lightning/combobox/combobox.html +3 -2
- package/src/lightning/combobox/combobox.js +2 -0
- package/src/lightning/combobox/form-element.slds.css +23 -24
- package/src/lightning/datatable/__docs__/datatable.md +63 -8
- package/src/lightning/datepicker/datepicker.html +1 -1
- package/src/lightning/datepicker/datepicker.js +8 -0
- package/src/lightning/datepicker/form-element.slds.css +23 -24
- package/src/lightning/datepicker/input-text.slds.css +16 -16
- package/src/lightning/datetimepicker/form-element.slds.css +23 -24
- package/src/lightning/datetimepicker/input-text.slds.css +16 -16
- package/src/lightning/dialog/README.md +1 -1
- package/src/lightning/dualListbox/__docs__/dualListbox.md +1 -1
- package/src/lightning/dualListbox/dual-listbox.slds.css +4 -13
- package/src/lightning/dualListbox/form-element.slds.css +23 -24
- package/src/lightning/dualListbox/listbox.slds.css +10 -25
- package/src/lightning/dynamicIcon/dynamic-icon-ellie.slds.css +2 -2
- package/src/lightning/dynamicIcon/dynamic-icon-eq.slds.css +1 -1
- package/src/lightning/dynamicIcon/dynamic-icon-trend.slds.css +1 -1
- package/src/lightning/formattedDateTime/__docs__/formattedDateTime.md +1 -1
- package/src/lightning/formattedNumber/__docs__/formattedNumber.md +1 -1
- package/src/lightning/formattedRichText/formatted-rich-text.slds.css +0 -2
- package/src/lightning/helptext/form-element.slds.css +23 -24
- package/src/lightning/helptext/help-text.slds.css +6 -6
- package/src/lightning/icon/__docs__/icon.md +2 -2
- package/src/lightning/icon/icon.html +9 -3
- package/src/lightning/icon/icon.js +16 -12
- package/src/lightning/icon/icon.slds.css +14 -14
- package/src/lightning/iconSvgTemplates/buildTemplates/standard/attribute_based_pricing.html +10 -0
- package/src/lightning/iconSvgTemplates/buildTemplates/standard/bundles_pricing.html +7 -0
- package/src/lightning/iconSvgTemplates/buildTemplates/standard/data_cloud.html +8 -0
- package/src/lightning/iconSvgTemplates/buildTemplates/standard/data_graph.html +7 -0
- package/src/lightning/iconSvgTemplates/buildTemplates/standard/dynamic_highlights_panel.html +7 -0
- package/src/lightning/iconSvgTemplates/buildTemplates/standard/header_discounts.html +7 -0
- package/src/lightning/iconSvgTemplates/buildTemplates/standard/impact_outcome.html +7 -0
- package/src/lightning/iconSvgTemplates/buildTemplates/standard/impact_strategy.html +7 -0
- package/src/lightning/iconSvgTemplates/buildTemplates/standard/impact_strategy_assignment.html +7 -0
- package/src/lightning/iconSvgTemplates/buildTemplates/standard/indicator_assignment.html +8 -0
- package/src/lightning/iconSvgTemplates/buildTemplates/standard/indicator_definition.html +8 -0
- package/src/lightning/iconSvgTemplates/buildTemplates/standard/indicator_performance_period.html +7 -0
- package/src/lightning/iconSvgTemplates/buildTemplates/standard/indicator_result.html +8 -0
- package/src/lightning/iconSvgTemplates/buildTemplates/standard/manual_discounts.html +9 -0
- package/src/lightning/iconSvgTemplates/buildTemplates/standard/no_code_model.html +7 -0
- package/src/lightning/iconSvgTemplates/buildTemplates/standard/outcome_activity.html +7 -0
- package/src/lightning/iconSvgTemplates/buildTemplates/standard/panel_detail.html +8 -0
- package/src/lightning/iconSvgTemplates/buildTemplates/standard/price_adjustment_matrix.html +8 -0
- package/src/lightning/iconSvgTemplates/buildTemplates/standard/registered_model.html +7 -0
- package/src/lightning/iconSvgTemplates/buildTemplates/standard/repeaters.html +7 -0
- package/src/lightning/iconSvgTemplates/buildTemplates/standard/scheduling_workspace.html +7 -0
- package/src/lightning/iconSvgTemplates/buildTemplates/standard/story.html +4 -2
- package/src/lightning/iconSvgTemplates/buildTemplates/standard/time_period.html +7 -0
- package/src/lightning/iconSvgTemplates/buildTemplates/standard/travel_mode.html +2 -2
- package/src/lightning/iconSvgTemplates/buildTemplates/standard/uploaded_model.html +7 -0
- package/src/lightning/iconSvgTemplates/buildTemplates/standard/volume_discounts.html +7 -0
- package/src/lightning/iconSvgTemplates/buildTemplates/standard/walkthroughs.html +8 -0
- package/src/lightning/iconSvgTemplates/buildTemplates/templates.js +38 -1
- package/src/lightning/iconSvgTemplates/buildTemplates/utility/apex_alt.html +8 -0
- package/src/lightning/iconSvgTemplates/buildTemplates/utility/data_cloud.html +8 -0
- package/src/lightning/iconSvgTemplates/buildTemplates/utility/data_graph.html +7 -0
- package/src/lightning/iconSvgTemplates/buildTemplates/utility/data_transforms.html +7 -0
- package/src/lightning/iconSvgTemplates/buildTemplates/utility/edit_gpt.html +8 -0
- package/src/lightning/iconSvgTemplates/buildTemplates/utility/einstein.html +4 -2
- package/src/lightning/iconSvgTemplates/buildTemplates/utility/guidance.html +8 -0
- package/src/lightning/iconSvgTemplates/buildTemplates/utility/indicator_performance_period.html +7 -0
- package/src/lightning/iconSvgTemplates/buildTemplates/utility/mixed_sources_mapping.html +8 -0
- package/src/lightning/iconSvgTemplates/buildTemplates/utility/page_structure.html +7 -0
- package/src/lightning/iconSvgTemplates/buildTemplates/utility/sparkles.html +7 -0
- package/src/lightning/iconSvgTemplates/buildTemplates/utility/visibility_rule_assigned.html +7 -0
- package/src/lightning/iconSvgTemplates/buildTemplates/utility/walkthroughs.html +8 -0
- package/src/lightning/iconSvgTemplatesRtl/buildTemplates/standard/attribute_based_pricing.html +10 -0
- package/src/lightning/iconSvgTemplatesRtl/buildTemplates/standard/bundles_pricing.html +7 -0
- package/src/lightning/iconSvgTemplatesRtl/buildTemplates/standard/data_cloud.html +8 -0
- package/src/lightning/iconSvgTemplatesRtl/buildTemplates/standard/data_graph.html +7 -0
- package/src/lightning/iconSvgTemplatesRtl/buildTemplates/standard/dynamic_highlights_panel.html +7 -0
- package/src/lightning/iconSvgTemplatesRtl/buildTemplates/standard/header_discounts.html +7 -0
- package/src/lightning/iconSvgTemplatesRtl/buildTemplates/standard/impact_outcome.html +7 -0
- package/src/lightning/iconSvgTemplatesRtl/buildTemplates/standard/impact_strategy.html +7 -0
- package/src/lightning/iconSvgTemplatesRtl/buildTemplates/standard/impact_strategy_assignment.html +7 -0
- package/src/lightning/iconSvgTemplatesRtl/buildTemplates/standard/indicator_assignment.html +8 -0
- package/src/lightning/iconSvgTemplatesRtl/buildTemplates/standard/indicator_definition.html +8 -0
- package/src/lightning/iconSvgTemplatesRtl/buildTemplates/standard/indicator_performance_period.html +7 -0
- package/src/lightning/iconSvgTemplatesRtl/buildTemplates/standard/indicator_result.html +8 -0
- package/src/lightning/iconSvgTemplatesRtl/buildTemplates/standard/manual_discounts.html +9 -0
- package/src/lightning/iconSvgTemplatesRtl/buildTemplates/standard/no_code_model.html +7 -0
- package/src/lightning/iconSvgTemplatesRtl/buildTemplates/standard/outcome_activity.html +7 -0
- package/src/lightning/iconSvgTemplatesRtl/buildTemplates/standard/panel_detail.html +8 -0
- package/src/lightning/iconSvgTemplatesRtl/buildTemplates/standard/price_adjustment_matrix.html +8 -0
- package/src/lightning/iconSvgTemplatesRtl/buildTemplates/standard/registered_model.html +7 -0
- package/src/lightning/iconSvgTemplatesRtl/buildTemplates/standard/repeaters.html +7 -0
- package/src/lightning/iconSvgTemplatesRtl/buildTemplates/standard/scheduling_workspace.html +7 -0
- package/src/lightning/iconSvgTemplatesRtl/buildTemplates/standard/story.html +4 -2
- package/src/lightning/iconSvgTemplatesRtl/buildTemplates/standard/time_period.html +7 -0
- package/src/lightning/iconSvgTemplatesRtl/buildTemplates/standard/travel_mode.html +2 -2
- package/src/lightning/iconSvgTemplatesRtl/buildTemplates/standard/uploaded_model.html +7 -0
- package/src/lightning/iconSvgTemplatesRtl/buildTemplates/standard/volume_discounts.html +7 -0
- package/src/lightning/iconSvgTemplatesRtl/buildTemplates/standard/walkthroughs.html +8 -0
- package/src/lightning/iconSvgTemplatesRtl/buildTemplates/templates.js +38 -1
- package/src/lightning/iconSvgTemplatesRtl/buildTemplates/utility/apex_alt.html +8 -0
- package/src/lightning/iconSvgTemplatesRtl/buildTemplates/utility/data_cloud.html +8 -0
- package/src/lightning/iconSvgTemplatesRtl/buildTemplates/utility/data_graph.html +7 -0
- package/src/lightning/iconSvgTemplatesRtl/buildTemplates/utility/data_transforms.html +7 -0
- package/src/lightning/iconSvgTemplatesRtl/buildTemplates/utility/edit_gpt.html +8 -0
- package/src/lightning/iconSvgTemplatesRtl/buildTemplates/utility/einstein.html +4 -2
- package/src/lightning/iconSvgTemplatesRtl/buildTemplates/utility/guidance.html +8 -0
- package/src/lightning/iconSvgTemplatesRtl/buildTemplates/utility/indicator_performance_period.html +7 -0
- package/src/lightning/iconSvgTemplatesRtl/buildTemplates/utility/mixed_sources_mapping.html +8 -0
- package/src/lightning/iconSvgTemplatesRtl/buildTemplates/utility/page_structure.html +7 -0
- package/src/lightning/iconSvgTemplatesRtl/buildTemplates/utility/sparkles.html +7 -0
- package/src/lightning/iconSvgTemplatesRtl/buildTemplates/utility/visibility_rule_assigned.html +7 -0
- package/src/lightning/iconSvgTemplatesRtl/buildTemplates/utility/walkthroughs.html +8 -0
- package/src/lightning/iconSvgTemplatesStandard/buildTemplates/standard/attribute_based_pricing.html +10 -0
- package/src/lightning/iconSvgTemplatesStandard/buildTemplates/standard/bundles_pricing.html +7 -0
- package/src/lightning/iconSvgTemplatesStandard/buildTemplates/standard/data_cloud.html +8 -0
- package/src/lightning/iconSvgTemplatesStandard/buildTemplates/standard/data_graph.html +7 -0
- package/src/lightning/iconSvgTemplatesStandard/buildTemplates/standard/dynamic_highlights_panel.html +7 -0
- package/src/lightning/iconSvgTemplatesStandard/buildTemplates/standard/header_discounts.html +7 -0
- package/src/lightning/iconSvgTemplatesStandard/buildTemplates/standard/impact_outcome.html +7 -0
- package/src/lightning/iconSvgTemplatesStandard/buildTemplates/standard/impact_strategy.html +7 -0
- package/src/lightning/iconSvgTemplatesStandard/buildTemplates/standard/impact_strategy_assignment.html +7 -0
- package/src/lightning/iconSvgTemplatesStandard/buildTemplates/standard/indicator_assignment.html +8 -0
- package/src/lightning/iconSvgTemplatesStandard/buildTemplates/standard/indicator_definition.html +8 -0
- package/src/lightning/iconSvgTemplatesStandard/buildTemplates/standard/indicator_performance_period.html +7 -0
- package/src/lightning/iconSvgTemplatesStandard/buildTemplates/standard/indicator_result.html +8 -0
- package/src/lightning/iconSvgTemplatesStandard/buildTemplates/standard/manual_discounts.html +9 -0
- package/src/lightning/iconSvgTemplatesStandard/buildTemplates/standard/no_code_model.html +7 -0
- package/src/lightning/iconSvgTemplatesStandard/buildTemplates/standard/outcome_activity.html +7 -0
- package/src/lightning/iconSvgTemplatesStandard/buildTemplates/standard/panel_detail.html +8 -0
- package/src/lightning/iconSvgTemplatesStandard/buildTemplates/standard/price_adjustment_matrix.html +8 -0
- package/src/lightning/iconSvgTemplatesStandard/buildTemplates/standard/registered_model.html +7 -0
- package/src/lightning/iconSvgTemplatesStandard/buildTemplates/standard/repeaters.html +7 -0
- package/src/lightning/iconSvgTemplatesStandard/buildTemplates/standard/scheduling_workspace.html +7 -0
- package/src/lightning/iconSvgTemplatesStandard/buildTemplates/standard/story.html +4 -2
- package/src/lightning/iconSvgTemplatesStandard/buildTemplates/standard/time_period.html +7 -0
- package/src/lightning/iconSvgTemplatesStandard/buildTemplates/standard/travel_mode.html +2 -2
- package/src/lightning/iconSvgTemplatesStandard/buildTemplates/standard/uploaded_model.html +7 -0
- package/src/lightning/iconSvgTemplatesStandard/buildTemplates/standard/volume_discounts.html +7 -0
- package/src/lightning/iconSvgTemplatesStandard/buildTemplates/standard/walkthroughs.html +8 -0
- package/src/lightning/iconSvgTemplatesStandard/buildTemplates/templates.js +26 -1
- package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/standard/attribute_based_pricing.html +10 -0
- package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/standard/bundles_pricing.html +7 -0
- package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/standard/data_cloud.html +8 -0
- package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/standard/data_graph.html +7 -0
- package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/standard/dynamic_highlights_panel.html +7 -0
- package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/standard/header_discounts.html +7 -0
- package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/standard/impact_outcome.html +7 -0
- package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/standard/impact_strategy.html +7 -0
- package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/standard/impact_strategy_assignment.html +7 -0
- package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/standard/indicator_assignment.html +8 -0
- package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/standard/indicator_definition.html +8 -0
- package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/standard/indicator_performance_period.html +7 -0
- package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/standard/indicator_result.html +8 -0
- package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/standard/manual_discounts.html +9 -0
- package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/standard/no_code_model.html +7 -0
- package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/standard/outcome_activity.html +7 -0
- package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/standard/panel_detail.html +8 -0
- package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/standard/price_adjustment_matrix.html +8 -0
- package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/standard/registered_model.html +7 -0
- package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/standard/repeaters.html +7 -0
- package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/standard/scheduling_workspace.html +7 -0
- package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/standard/story.html +4 -2
- package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/standard/time_period.html +7 -0
- package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/standard/travel_mode.html +2 -2
- package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/standard/uploaded_model.html +7 -0
- package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/standard/volume_discounts.html +7 -0
- package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/standard/walkthroughs.html +8 -0
- package/src/lightning/iconSvgTemplatesStandardRtl/buildTemplates/templates.js +26 -1
- package/src/lightning/iconSvgTemplatesUtility/buildTemplates/templates.js +13 -1
- package/src/lightning/iconSvgTemplatesUtility/buildTemplates/utility/apex_alt.html +8 -0
- package/src/lightning/iconSvgTemplatesUtility/buildTemplates/utility/data_cloud.html +8 -0
- package/src/lightning/iconSvgTemplatesUtility/buildTemplates/utility/data_graph.html +7 -0
- package/src/lightning/iconSvgTemplatesUtility/buildTemplates/utility/data_transforms.html +7 -0
- package/src/lightning/iconSvgTemplatesUtility/buildTemplates/utility/edit_gpt.html +8 -0
- package/src/lightning/iconSvgTemplatesUtility/buildTemplates/utility/einstein.html +4 -2
- package/src/lightning/iconSvgTemplatesUtility/buildTemplates/utility/guidance.html +8 -0
- package/src/lightning/iconSvgTemplatesUtility/buildTemplates/utility/indicator_performance_period.html +7 -0
- package/src/lightning/iconSvgTemplatesUtility/buildTemplates/utility/mixed_sources_mapping.html +8 -0
- package/src/lightning/iconSvgTemplatesUtility/buildTemplates/utility/page_structure.html +7 -0
- package/src/lightning/iconSvgTemplatesUtility/buildTemplates/utility/sparkles.html +7 -0
- package/src/lightning/iconSvgTemplatesUtility/buildTemplates/utility/visibility_rule_assigned.html +7 -0
- package/src/lightning/iconSvgTemplatesUtility/buildTemplates/utility/walkthroughs.html +8 -0
- package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/templates.js +13 -1
- package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/utility/apex_alt.html +8 -0
- package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/utility/data_cloud.html +8 -0
- package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/utility/data_graph.html +7 -0
- package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/utility/data_transforms.html +7 -0
- package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/utility/edit_gpt.html +8 -0
- package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/utility/einstein.html +4 -2
- package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/utility/guidance.html +8 -0
- package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/utility/indicator_performance_period.html +7 -0
- package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/utility/mixed_sources_mapping.html +8 -0
- package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/utility/page_structure.html +7 -0
- package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/utility/sparkles.html +7 -0
- package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/utility/visibility_rule_assigned.html +7 -0
- package/src/lightning/iconSvgTemplatesUtilityRtl/buildTemplates/utility/walkthroughs.html +8 -0
- package/src/lightning/iconUtils/iconColors.js +1 -0
- package/src/lightning/iconUtils/iconUtils.js +10 -0
- package/src/lightning/input/__docs__/input.md +11 -6
- package/src/lightning/input/form-element.slds.css +23 -24
- package/src/lightning/input/input.html +2 -3
- package/src/lightning/input/input.js +14 -10
- package/src/lightning/inputAddress/__docs__/inputAddress.md +5 -5
- package/src/lightning/inputName/__docs__/inputName.md +4 -4
- package/src/lightning/layoutItem/__docs__/layoutItem.md +1 -1
- package/src/lightning/menuItem/menu-item.slds.css +3 -3
- package/src/lightning/modal/__docs__/migration.md +9 -9
- package/src/lightning/modal/__docs__/modal.md +5 -5
- package/src/lightning/modal/__modalUtils__/modalContainerTestConstants.js +2 -4
- package/src/lightning/modal/__modalUtils__/modalContainerTestMethods.js +96 -58
- package/src/lightning/modalBase/modalBase.js +26 -76
- package/src/lightning/modalBody/__docs__/modalBody.md +3 -3
- package/src/lightning/modalBody/modalBody.js +33 -36
- package/src/lightning/modalFooter/__docs__/modalFooter.md +3 -3
- package/src/lightning/modalFooter/modalFooter.js +1 -76
- package/src/lightning/modalHeader/__docs__/modalHeader.md +3 -3
- package/src/lightning/modalHeader/modalHeader.js +0 -68
- package/src/lightning/navigation/__docs__/navigation.md +3 -3
- package/src/lightning/pill/__docs__/pill.md +2 -2
- package/src/lightning/pill/avatar.slds.css +21 -22
- package/src/lightning/pill/pill.slds.css +17 -9
- package/src/lightning/pillContainer/__docs__/pillContainer.md +1 -1
- package/src/lightning/pillContainer/listbox.slds.css +10 -25
- package/src/lightning/pillContainer/pill-container.slds.css +19 -8
- package/src/lightning/pillContainer/pill.slds.css +17 -9
- package/src/lightning/popup/popover.slds.css +1 -1
- package/src/lightning/primitiveBubble/tooltip.slds.css +14 -23
- package/src/lightning/primitiveButton/primitiveButton.js +5 -1
- package/src/lightning/primitiveColorpickerButton/color-picker-button.slds.css +14 -14
- package/src/lightning/primitiveIcon/icon.slds.css +14 -14
- package/src/lightning/primitiveInputCheckbox/form-element.slds.css +23 -24
- package/src/lightning/primitiveInputCheckbox/input-checkbox.slds.css +7 -7
- package/src/lightning/primitiveInputCheckboxButton/form-element.slds.css +23 -24
- package/src/lightning/primitiveInputCheckboxButton/input-checkbox-button.slds.css +1 -6
- package/src/lightning/primitiveInputColor/form-element.slds.css +23 -24
- package/src/lightning/primitiveInputColor/input-color.slds.css +3 -3
- package/src/lightning/primitiveInputColor/input-text.slds.css +16 -16
- package/src/lightning/primitiveInputColor/primitiveInputColor.html +1 -1
- package/src/lightning/primitiveInputFile/button.slds.css +3 -3
- package/src/lightning/primitiveInputFile/form-element.slds.css +23 -24
- package/src/lightning/primitiveInputFile/input-file.slds.css +2 -2
- package/src/lightning/primitiveInputSimple/form-element.slds.css +23 -24
- package/src/lightning/primitiveInputSimple/input-text.slds.css +16 -16
- package/src/lightning/primitiveInputSimple/mobileInputUtils.js +24 -0
- package/src/lightning/primitiveInputSimple/primitiveInputSimple.html +1 -1
- package/src/lightning/primitiveInputSimple/primitiveInputSimple.js +82 -13
- package/src/lightning/primitiveInputToggle/form-element.slds.css +23 -24
- package/src/lightning/progressRing/progressRing.js +16 -3
- package/src/lightning/radioGroup/input-radio-group.slds.css +12 -13
- package/src/lightning/relativeDateTime/__docs__/relativeDateTime.md +1 -1
- package/src/lightning/select/__docs__/select.md +1 -1
- package/src/lightning/select/form-element.slds.css +23 -24
- package/src/lightning/select/select.slds.css +26 -27
- package/src/lightning/spinner/spinner.slds.css +5 -8
- package/src/lightning/tab/__docs__/tab.md +1 -1
- package/src/lightning/tab/tab.slds.css +8 -8
- package/src/lightning/tabBar/tab-bar.slds.css +31 -35
- package/src/lightning/tabset/__docs__/tabset.md +2 -2
- package/src/lightning/textarea/textarea.css +2 -1
- package/src/lightning/textarea/textarea.html +1 -1
- package/src/lightning/textarea/textarea.js +4 -1
- package/src/lightning/tile/__docs__/tile.md +1 -1
- package/src/lightning/timepicker/form-element.slds.css +23 -24
- package/src/lightning/toast/button-icon.slds.css +6 -6
- package/src/lightning/toast/formatted-rich-text.slds.css +0 -2
- package/src/lightning/toast/icon.slds.css +14 -14
- package/src/lightning/toast/toast.slds.css +101 -95
- package/src/lightning/toastContainer/toast.slds.css +101 -95
- package/src/lightning/utilsPrivate/utilsPrivate.js +9 -0
- package/src/lightning/icon/iconColors.js +0 -1
|
@@ -19,7 +19,6 @@ import {
|
|
|
19
19
|
MODAL_CLOSE_BTN,
|
|
20
20
|
MODAL_CLOSE_BTN_CLASS,
|
|
21
21
|
MODAL_CLOSE_BTN_FULL_CLASS,
|
|
22
|
-
MODAL_CLOSE_BTN_ICON_BORDER_CLASS,
|
|
23
22
|
MODAL_CLOSE_BUTTON_FULL_VARIANT,
|
|
24
23
|
MODAL_CLOSE_BUTTON_NORMAL_VARIANT,
|
|
25
24
|
SCREEN_SIZE_LARGE,
|
|
@@ -60,8 +59,6 @@ async function getOverlayContainer() {
|
|
|
60
59
|
// overlay container isn't present in the DOM
|
|
61
60
|
// until first overlay or modal is created
|
|
62
61
|
// eslint-disable-next-line
|
|
63
|
-
// wrapper = await kontajner.getWrapper();
|
|
64
|
-
// await wrapper.waitForDisplayed();
|
|
65
62
|
// eslint-disable-next-line no-undef
|
|
66
63
|
const htmlElem = await $('html');
|
|
67
64
|
// eslint-disable-next-line no-undef
|
|
@@ -139,9 +136,9 @@ async function getModalInternals(config, modalIndex = 0) {
|
|
|
139
136
|
modalBaseBackdropElem = await modalBaseElem.shadow$(
|
|
140
137
|
MODAL_BODY_BACKDROP
|
|
141
138
|
);
|
|
139
|
+
|
|
142
140
|
// get focus trap element
|
|
143
141
|
focusTrapElem = await modalBaseElem.shadow$(FOCUS_TRAP);
|
|
144
|
-
await focusTrapElem.waitForDisplayed();
|
|
145
142
|
focusTrapSlotElem = await focusTrapElem.shadow$('slot');
|
|
146
143
|
|
|
147
144
|
// get modal's <section> element just inside focus trap
|
|
@@ -150,20 +147,15 @@ async function getModalInternals(config, modalIndex = 0) {
|
|
|
150
147
|
'getFirstSlotElement',
|
|
151
148
|
focusTrapSlotElem
|
|
152
149
|
);
|
|
153
|
-
await modalSectionElem.waitForDisplayed();
|
|
154
150
|
// get modal close button
|
|
155
151
|
modalCloseButton = await modalSectionElem.$(MODAL_CLOSE_BTN);
|
|
156
|
-
await modalCloseButton.waitForDisplayed();
|
|
157
152
|
|
|
158
153
|
// get modal div slot (not an actual slot)
|
|
159
154
|
modalDataSlot = await modalSectionElem.$(MODAL_DIV_SLOT);
|
|
160
|
-
await modalDataSlot.waitForDisplayed();
|
|
161
155
|
// get div[data-container].slds-modal__container
|
|
162
156
|
modalContainerElem = await modalSectionElem.$(MODAL_CONTAINER_DIV);
|
|
163
|
-
await modalContainerElem.waitForDisplayed();
|
|
164
157
|
// get lightning-modal element
|
|
165
158
|
modalElem = await modalSectionElem.$(MODAL);
|
|
166
|
-
await modalElem.waitForDisplayed();
|
|
167
159
|
|
|
168
160
|
// skip looking for modalHeader when type of modal is 'headless'
|
|
169
161
|
if (!isModalOfVariantType(modalVariantType, 'headless')) {
|
|
@@ -325,7 +317,7 @@ async function validateModalCloseButtonAttributes(config) {
|
|
|
325
317
|
expect(modalCloseButtonCssClass).toContain(MODAL_CLOSE_BTN_CLASS);
|
|
326
318
|
|
|
327
319
|
// the only time size='full' actual renders full page width and height
|
|
328
|
-
// is when windowWidth is set <=
|
|
320
|
+
// is when windowWidth is set <= 768
|
|
329
321
|
if (
|
|
330
322
|
modalSize === MODAL_SIZE_FULL &&
|
|
331
323
|
windowWidth <= MODAL_FULL_SCREEN_SMALL_BREAKPOINT
|
|
@@ -335,22 +327,72 @@ async function validateModalCloseButtonAttributes(config) {
|
|
|
335
327
|
);
|
|
336
328
|
|
|
337
329
|
expect(modalCloseButtonCssClass).toContain(MODAL_CLOSE_BTN_FULL_CLASS);
|
|
338
|
-
expect(modalCloseButtonCssClass).toContain(
|
|
339
|
-
MODAL_CLOSE_BTN_ICON_BORDER_CLASS
|
|
340
|
-
);
|
|
341
330
|
} else {
|
|
342
|
-
// 'small', 'medium', 'large', and ('full' when windowWidth is set >
|
|
331
|
+
// 'small', 'medium', 'large', and ('full' when windowWidth is set > 768) are normal modal behavior
|
|
343
332
|
expect(modalCloseButtonVariant).toEqual(
|
|
344
333
|
MODAL_CLOSE_BUTTON_NORMAL_VARIANT
|
|
345
334
|
);
|
|
346
335
|
expect(modalCloseButtonCssClass).not.toContain(
|
|
347
336
|
MODAL_CLOSE_BTN_FULL_CLASS
|
|
348
337
|
);
|
|
349
|
-
expect(modalCloseButtonCssClass).not.toContain(
|
|
350
|
-
MODAL_CLOSE_BTN_ICON_BORDER_CLASS
|
|
351
|
-
);
|
|
352
338
|
}
|
|
353
339
|
}
|
|
340
|
+
/*
|
|
341
|
+
* get some of the modal internals element details
|
|
342
|
+
* including offset values and classes
|
|
343
|
+
* utilizes DOM based approach via browser.execute
|
|
344
|
+
*/
|
|
345
|
+
// eslint-disable-next-line @lwc/lwc/no-async-await
|
|
346
|
+
async function getModalInternalsDomBased() {
|
|
347
|
+
// eslint-disable-next-line no-undef
|
|
348
|
+
const result = await browser.execute(() => {
|
|
349
|
+
// down the modal dom tree
|
|
350
|
+
// eslint-disable-next-line @lwc/lwc/no-document-query
|
|
351
|
+
const loc = document.querySelector('lightning-overlay-container');
|
|
352
|
+
const modalBase = loc.shadowRoot.querySelector('lightning-modal-base');
|
|
353
|
+
const modalBackdrop =
|
|
354
|
+
modalBase.shadowRoot.querySelector('.slds-backdrop');
|
|
355
|
+
const focusTrap = modalBase.shadowRoot.querySelector(
|
|
356
|
+
'lightning-focus-trap'
|
|
357
|
+
);
|
|
358
|
+
const focusTrapSlot = focusTrap.shadowRoot.querySelector('slot');
|
|
359
|
+
const modalSectionElem = focusTrapSlot.assignedNodes()[0];
|
|
360
|
+
const modalContainerElem = modalSectionElem.querySelector(
|
|
361
|
+
'.slds-modal__container'
|
|
362
|
+
);
|
|
363
|
+
const modalCloseButton = modalSectionElem.querySelector(
|
|
364
|
+
'lightning-button-icon'
|
|
365
|
+
);
|
|
366
|
+
const modalElem = modalSectionElem.querySelector('lightning-modal');
|
|
367
|
+
return {
|
|
368
|
+
window: {
|
|
369
|
+
width: window.innerWidth,
|
|
370
|
+
height: window.innerHeight,
|
|
371
|
+
},
|
|
372
|
+
modalBase: {
|
|
373
|
+
offset: modalBase.getBoundingClientRect(),
|
|
374
|
+
},
|
|
375
|
+
modalBackdrop: {
|
|
376
|
+
offset: modalBackdrop.getBoundingClientRect(),
|
|
377
|
+
},
|
|
378
|
+
modalSectionElem: {
|
|
379
|
+
class: modalSectionElem.getAttribute('class'),
|
|
380
|
+
offset: modalSectionElem.getBoundingClientRect(),
|
|
381
|
+
},
|
|
382
|
+
modalContainerElem: {
|
|
383
|
+
class: modalContainerElem.getAttribute('class'),
|
|
384
|
+
offset: modalContainerElem.getBoundingClientRect(),
|
|
385
|
+
},
|
|
386
|
+
modalCloseButton: {
|
|
387
|
+
class: modalCloseButton.getAttribute('class'),
|
|
388
|
+
},
|
|
389
|
+
modalElem: {
|
|
390
|
+
offset: modalElem.getBoundingClientRect(),
|
|
391
|
+
},
|
|
392
|
+
};
|
|
393
|
+
});
|
|
394
|
+
return result;
|
|
395
|
+
}
|
|
354
396
|
|
|
355
397
|
/* Function includes expect tests to validate the expected
|
|
356
398
|
* modal HEIGHT behavior based on screen size, size attribute,
|
|
@@ -359,23 +401,20 @@ async function validateModalCloseButtonAttributes(config) {
|
|
|
359
401
|
// eslint-disable-next-line @lwc/lwc/no-async-await
|
|
360
402
|
async function validateModalHeightBehavior(config) {
|
|
361
403
|
const { modalSize } = config;
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
const {
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
const {
|
|
370
|
-
await modalElem.getLocation();
|
|
371
|
-
|
|
372
|
-
// get <lightning-modal-body> element
|
|
404
|
+
// first, get sizes of elements
|
|
405
|
+
const { modalSectionElem, window, modalElem } =
|
|
406
|
+
await getModalInternalsDomBased();
|
|
407
|
+
const { height: modalSectionElemHeight } = modalSectionElem.offset;
|
|
408
|
+
const { height: windowHeight, width: windowWidth } = window;
|
|
409
|
+
|
|
410
|
+
// get <lightning-modal-body> element for min and max height values
|
|
411
|
+
const { modalBodyElem } = await getModalInternals(config);
|
|
373
412
|
const { bodyOuterDiv } = await getModalBodyInternals(modalBodyElem);
|
|
374
413
|
const modalBodyOuterDivStyle = await bodyOuterDiv.getAttribute('style');
|
|
375
414
|
const modalBodyStyleProps = parseStyleAttributes(modalBodyOuterDivStyle);
|
|
376
|
-
|
|
415
|
+
const { x: modalElemX, y: modalElemY } = modalElem.offset;
|
|
377
416
|
// the only time size='full' actual renders full page width and height
|
|
378
|
-
// is when windowWidth is set <=
|
|
417
|
+
// is when windowWidth is set <= 768
|
|
379
418
|
// note: reliably testing outer div element was not possible as
|
|
380
419
|
// webdriver getSize didn't provide correct values for comparison
|
|
381
420
|
// the tests below verify that the code path for setting full height are invoked
|
|
@@ -383,33 +422,29 @@ async function validateModalHeightBehavior(config) {
|
|
|
383
422
|
modalSize === MODAL_SIZE_FULL &&
|
|
384
423
|
windowWidth <= MODAL_FULL_SCREEN_SMALL_BREAKPOINT
|
|
385
424
|
) {
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
// y=48 comes from margin/padding and is expected
|
|
390
|
-
expect(modalElemLocX).toEqual(MODAL_ELEM_FULL_PX_OFFSET_X);
|
|
391
|
-
expect(modalElemLocY).toBeLessThan(MODAL_ELEM_FULL_PX_OFFSET_Y);
|
|
425
|
+
expect(modalSectionElemHeight).toEqual(windowHeight);
|
|
426
|
+
expect(modalElemX).toEqual(MODAL_ELEM_FULL_PX_OFFSET_X);
|
|
427
|
+
expect(modalElemY).toEqual(MODAL_ELEM_FULL_PX_OFFSET_Y);
|
|
392
428
|
// these next two tests are proxy behavior indicating
|
|
393
429
|
// that the event listeners, and rendering has updated
|
|
394
430
|
// to make the modal go full height
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
);
|
|
398
|
-
expect(modalBodyStyleProps[MIN_HEIGHT]).
|
|
399
|
-
MODAL_BODY_MIN_HEIGHT_PX
|
|
400
|
-
);
|
|
431
|
+
// these values are not set after the SLDS based
|
|
432
|
+
// CSS grid implementation was implemented
|
|
433
|
+
expect(modalBodyStyleProps[MAX_HEIGHT]).toBeUndefined();
|
|
434
|
+
expect(modalBodyStyleProps[MIN_HEIGHT]).toBeUndefined();
|
|
401
435
|
} else {
|
|
402
|
-
// 'small', 'medium', 'large', and ('full' when windowWidth is set >
|
|
403
|
-
// the
|
|
436
|
+
// 'small', 'medium', 'large', and ('full' when windowWidth is set > 768) are normal modal behavior
|
|
437
|
+
// the div.slds-modal__container element is consistently accurate for
|
|
404
438
|
// location measurment in the CI
|
|
405
439
|
// location values vary based on screen and size value
|
|
406
|
-
// typical value are: { x: > 25
|
|
407
|
-
|
|
408
|
-
expect(
|
|
409
|
-
|
|
410
|
-
// these next two tests are proxy behavior indicating
|
|
440
|
+
// typical value are: { x: > 25 },
|
|
441
|
+
expect(modalElemX).toBeGreaterThan(MODAL_DEFAULT_PX_OFFSET_X);
|
|
442
|
+
expect(modalElemY).toBeGreaterThan(MODAL_DEFAULT_PX_OFFSET_Y);
|
|
443
|
+
// these next two sets of tests are proxy behavior indicating
|
|
411
444
|
// that the event listeners, and rendering has updated
|
|
412
|
-
// to make the modal
|
|
445
|
+
// to make the modal exhibit normal height behavior (not full screen)
|
|
446
|
+
expect(modalBodyStyleProps[MAX_HEIGHT]).toBeDefined();
|
|
447
|
+
expect(modalBodyStyleProps[MIN_HEIGHT]).toBeDefined();
|
|
413
448
|
expect(modalBodyStyleProps[MAX_HEIGHT]).not.toEqual(
|
|
414
449
|
modalBodyStyleProps[MIN_HEIGHT]
|
|
415
450
|
);
|
|
@@ -428,22 +463,25 @@ async function validateModalWidthBehavior(config, modalIndex = 0) {
|
|
|
428
463
|
const { modalSize } = config;
|
|
429
464
|
// first, get outer window size
|
|
430
465
|
// eslint-disable-next-line no-undef
|
|
431
|
-
const { width: windowWidth } =
|
|
466
|
+
const { width: windowWidth } =
|
|
467
|
+
// eslint-disable-next-line no-undef
|
|
468
|
+
await browser.getWindowSize();
|
|
432
469
|
|
|
433
470
|
// second, find modal elem, then get width
|
|
434
|
-
const {
|
|
435
|
-
const { width:
|
|
471
|
+
const { modalContainerElem } = await getModalInternals(config, modalIndex);
|
|
472
|
+
const { width: modalContainerElemWidth } =
|
|
473
|
+
await modalContainerElem.getSize();
|
|
436
474
|
|
|
437
475
|
// the only time size='full' actual renders full page width and height
|
|
438
|
-
// is when windowWidth is set <=
|
|
476
|
+
// is when windowWidth is set <= 768
|
|
439
477
|
if (
|
|
440
478
|
modalSize === MODAL_SIZE_FULL &&
|
|
441
479
|
windowWidth <= MODAL_FULL_SCREEN_SMALL_BREAKPOINT
|
|
442
480
|
) {
|
|
443
|
-
expect(
|
|
481
|
+
expect(modalContainerElemWidth).toEqual(windowWidth);
|
|
444
482
|
} else {
|
|
445
|
-
// 'small', 'medium', 'large', and ('full' when windowWidth is set >
|
|
446
|
-
expect(
|
|
483
|
+
// 'small', 'medium', 'large', and ('full' when windowWidth is set > 768) are normal modal behavior
|
|
484
|
+
expect(modalContainerElemWidth).toBeLessThan(windowWidth);
|
|
447
485
|
}
|
|
448
486
|
}
|
|
449
487
|
|
|
@@ -495,7 +533,6 @@ async function openModal({
|
|
|
495
533
|
if (runMockMatchMedia) {
|
|
496
534
|
await mockMatchMedia();
|
|
497
535
|
}
|
|
498
|
-
|
|
499
536
|
// set a specific window size based on sizing descriptor (SMALL, MEDIUM)
|
|
500
537
|
await setWindowSize(screenSizeToSet);
|
|
501
538
|
|
|
@@ -1122,6 +1159,7 @@ async function validateModalOpenTabNavFocusBehavior(
|
|
|
1122
1159
|
}
|
|
1123
1160
|
|
|
1124
1161
|
module.exports = {
|
|
1162
|
+
getModalInternalsDomBased,
|
|
1125
1163
|
setupStrategy,
|
|
1126
1164
|
isModalOfVariantType,
|
|
1127
1165
|
parseStyleAttributes,
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { api, LightningElement } from 'lwc';
|
|
2
2
|
import { classSet } from 'lightning/utils';
|
|
3
3
|
import {
|
|
4
|
+
isCSR,
|
|
4
5
|
makeEverythingExceptElementInert,
|
|
5
6
|
normalizeString,
|
|
6
7
|
synchronizeAttrs,
|
|
@@ -18,7 +19,7 @@ import closeButtonAltText from '@salesforce/label/LightningModalBase.cancelandcl
|
|
|
18
19
|
import disableCloseBtnMessage from '@salesforce/label/LightningModalBase.waitstate';
|
|
19
20
|
|
|
20
21
|
const DEBOUNCE_RESIZE = 300;
|
|
21
|
-
const SMALL_SCREEN_SIZE =
|
|
22
|
+
const SMALL_SCREEN_SIZE = 768;
|
|
22
23
|
const SIZE_SMALL = 'small';
|
|
23
24
|
const SIZE_MEDIUM = 'medium';
|
|
24
25
|
const SIZE_LARGE = 'large';
|
|
@@ -50,7 +51,6 @@ export default class LightningModalBase extends LightningElement {
|
|
|
50
51
|
headerLabelIsPopulated = null;
|
|
51
52
|
headerTitleRef = null;
|
|
52
53
|
headerTabElemRef = null;
|
|
53
|
-
headerHeightCheck = null;
|
|
54
54
|
|
|
55
55
|
// modalBody, child
|
|
56
56
|
bodyRegistered = false;
|
|
@@ -72,7 +72,6 @@ export default class LightningModalBase extends LightningElement {
|
|
|
72
72
|
footerSlotHasRendered = false;
|
|
73
73
|
footerDefaultSlotIsPopulated = false;
|
|
74
74
|
footerTabElemRef = null;
|
|
75
|
-
footerHeightCheck = null;
|
|
76
75
|
|
|
77
76
|
// aria attributes
|
|
78
77
|
modalLabel = null;
|
|
@@ -342,12 +341,12 @@ export default class LightningModalBase extends LightningElement {
|
|
|
342
341
|
* modal header so the close button maintains visibility for a11y
|
|
343
342
|
* @private
|
|
344
343
|
*/
|
|
344
|
+
// slds-button slds-button_icon slds-modal__close slds-button_icon-inverse
|
|
345
345
|
get computedCloseButtonCssClass() {
|
|
346
346
|
let classes = classSet('slds-modal__close');
|
|
347
347
|
const fullScreenActive =
|
|
348
348
|
this.isSmallScreenSize && this.size === SIZE_FULL;
|
|
349
349
|
classes.add({
|
|
350
|
-
'slds-button_icon-border-filled': fullScreenActive,
|
|
351
350
|
'slds-modal_full-close-button': fullScreenActive,
|
|
352
351
|
});
|
|
353
352
|
return classes.toString();
|
|
@@ -840,7 +839,6 @@ export default class LightningModalBase extends LightningElement {
|
|
|
840
839
|
firstTabbableElemRef,
|
|
841
840
|
defaultSlotWrapperId,
|
|
842
841
|
defaultSlotHasRendered,
|
|
843
|
-
checkHeaderHeightCallback,
|
|
844
842
|
unRegisterCallback,
|
|
845
843
|
labelIsPopulated,
|
|
846
844
|
headerHeight,
|
|
@@ -856,7 +854,6 @@ export default class LightningModalBase extends LightningElement {
|
|
|
856
854
|
this.headerLabelIsPopulated = labelIsPopulated;
|
|
857
855
|
this.headerTitleRef = headerRef;
|
|
858
856
|
this.headerTabElemRef = firstTabbableElemRef;
|
|
859
|
-
this.headerHeightCheck = checkHeaderHeightCallback;
|
|
860
857
|
unRegisterCallback(() => {
|
|
861
858
|
this.unregisterHeader();
|
|
862
859
|
});
|
|
@@ -894,7 +891,6 @@ export default class LightningModalBase extends LightningElement {
|
|
|
894
891
|
this.headerLabelIsPopulated = null;
|
|
895
892
|
this.headerTitleRef = null;
|
|
896
893
|
this.headerTabElemRef = null;
|
|
897
|
-
this.headerHeightCheck = null;
|
|
898
894
|
}
|
|
899
895
|
|
|
900
896
|
/**
|
|
@@ -926,14 +922,12 @@ export default class LightningModalBase extends LightningElement {
|
|
|
926
922
|
footerHeight,
|
|
927
923
|
unRegisterCallback,
|
|
928
924
|
firstTabbableElemRef,
|
|
929
|
-
checkFooterHeightCallback,
|
|
930
925
|
}) {
|
|
931
926
|
this.footerRegistered = true;
|
|
932
927
|
this.footerDefaultSlotIsPopulated = defaultSlotIsPopulated;
|
|
933
928
|
this.footerSlotHasRendered = defaultSlotHasRendered;
|
|
934
929
|
this.updateFooterHeight(footerHeight);
|
|
935
930
|
this.footerTabElemRef = firstTabbableElemRef || null;
|
|
936
|
-
this.footerHeightCheck = checkFooterHeightCallback;
|
|
937
931
|
unRegisterCallback(() => {
|
|
938
932
|
this.unregisterFooter();
|
|
939
933
|
});
|
|
@@ -966,7 +960,6 @@ export default class LightningModalBase extends LightningElement {
|
|
|
966
960
|
this.footerSlotHasRendered = false;
|
|
967
961
|
this.footerDefaultSlotIsPopulated = false;
|
|
968
962
|
this.footerTabElemRef = null;
|
|
969
|
-
this.footerHeightCheck = null;
|
|
970
963
|
}
|
|
971
964
|
|
|
972
965
|
/**
|
|
@@ -991,54 +984,6 @@ export default class LightningModalBase extends LightningElement {
|
|
|
991
984
|
return this.size === SIZE_FULL && this.isSmallScreenSize;
|
|
992
985
|
}
|
|
993
986
|
|
|
994
|
-
/**
|
|
995
|
-
* Under the right conditions, update the local tracked header height value
|
|
996
|
-
* @private
|
|
997
|
-
*/
|
|
998
|
-
checkAndUpdateHeaderHeight() {
|
|
999
|
-
// important to verify that header is registered,
|
|
1000
|
-
// and not on initial render of modal parent, since
|
|
1001
|
-
// child component may not yet exist
|
|
1002
|
-
const shouldCheckHeaderHeight =
|
|
1003
|
-
!this.initialRender &&
|
|
1004
|
-
this.headerRegistered &&
|
|
1005
|
-
this.shouldModalBeFullScreen();
|
|
1006
|
-
// when screen size changes, variable height content within the
|
|
1007
|
-
// modal header can reflow
|
|
1008
|
-
// for example: 3 rows of content in tagline can become 2 rows
|
|
1009
|
-
if (shouldCheckHeaderHeight) {
|
|
1010
|
-
const { changed: headerChangedHeight, value: newHeaderHeight } =
|
|
1011
|
-
this.headerHeightCheck();
|
|
1012
|
-
if (headerChangedHeight) {
|
|
1013
|
-
this.updateHeaderHeight(newHeaderHeight);
|
|
1014
|
-
}
|
|
1015
|
-
}
|
|
1016
|
-
}
|
|
1017
|
-
|
|
1018
|
-
/**
|
|
1019
|
-
* Under the right conditions, update the local tracked footer height value
|
|
1020
|
-
* @private
|
|
1021
|
-
*/
|
|
1022
|
-
checkAndUpdateFooterHeight() {
|
|
1023
|
-
// important to verify that footer is registered,
|
|
1024
|
-
// and not on initial render of modal parent, since
|
|
1025
|
-
// child component may not yet exist
|
|
1026
|
-
const shouldCheckFooterHeight =
|
|
1027
|
-
!this.initialRender &&
|
|
1028
|
-
this.footerRegistered &&
|
|
1029
|
-
this.shouldModalBeFullScreen();
|
|
1030
|
-
// when screen size changes, variable height content within the
|
|
1031
|
-
// modal footer can reflow
|
|
1032
|
-
// for example: 1 row of buttons to 2 rows, or 2 rows to 1 row
|
|
1033
|
-
if (shouldCheckFooterHeight) {
|
|
1034
|
-
const { changed: footerChangedHeight, value: newFooterHeight } =
|
|
1035
|
-
this.footerHeightCheck();
|
|
1036
|
-
if (footerChangedHeight) {
|
|
1037
|
-
this.updateFooterHeight(newFooterHeight);
|
|
1038
|
-
}
|
|
1039
|
-
}
|
|
1040
|
-
}
|
|
1041
|
-
|
|
1042
987
|
/**
|
|
1043
988
|
* When the modalBody content height is tall, it requires max-height
|
|
1044
989
|
* to be set in order to prevent overflow of the modal offscreen
|
|
@@ -1054,9 +999,6 @@ export default class LightningModalBase extends LightningElement {
|
|
|
1054
999
|
// check, and update isSmallScreenSize before
|
|
1055
1000
|
// callback to modalBody
|
|
1056
1001
|
this.setIsSmallScreenSize();
|
|
1057
|
-
// check for height changes in header or footer
|
|
1058
|
-
this.checkAndUpdateHeaderHeight();
|
|
1059
|
-
this.checkAndUpdateFooterHeight();
|
|
1060
1002
|
// eslint-disable-next-line @lwc/lwc/no-async-operation
|
|
1061
1003
|
requestAnimationFrame(() => {
|
|
1062
1004
|
this.bodyResizeScheduled = false;
|
|
@@ -1106,7 +1048,7 @@ export default class LightningModalBase extends LightningElement {
|
|
|
1106
1048
|
* @private
|
|
1107
1049
|
*/
|
|
1108
1050
|
addWindowResizeEventListener() {
|
|
1109
|
-
if (
|
|
1051
|
+
if (isCSR && !this.windowResizeEventBound) {
|
|
1110
1052
|
window.addEventListener('resize', this.handleWindowResizeEvent);
|
|
1111
1053
|
this.windowResizeEventBound = true;
|
|
1112
1054
|
}
|
|
@@ -1117,7 +1059,7 @@ export default class LightningModalBase extends LightningElement {
|
|
|
1117
1059
|
* @private
|
|
1118
1060
|
*/
|
|
1119
1061
|
removeWindowResizeEventListener() {
|
|
1120
|
-
if (
|
|
1062
|
+
if (isCSR && this.windowResizeEventBound) {
|
|
1121
1063
|
window.removeEventListener('resize', this.handleWindowResizeEvent);
|
|
1122
1064
|
clearTimeout(this.timeoutId);
|
|
1123
1065
|
this.timeoutId = 0;
|
|
@@ -1148,15 +1090,19 @@ export default class LightningModalBase extends LightningElement {
|
|
|
1148
1090
|
* orientation changes: 'portrait' -> 'landscape' -> 'portrait'
|
|
1149
1091
|
*/
|
|
1150
1092
|
addOrientationChangeListener() {
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
if (this.portraitMatchMedia) {
|
|
1155
|
-
this.portraitMatchMedia.addEventListener(
|
|
1156
|
-
'change',
|
|
1157
|
-
this.screenOrientationChangeHandler
|
|
1093
|
+
if (isCSR) {
|
|
1094
|
+
this.portraitMatchMedia = window.matchMedia(
|
|
1095
|
+
'(orientation: portrait)'
|
|
1158
1096
|
);
|
|
1159
|
-
this.
|
|
1097
|
+
this.screenOrientationChangeHandler =
|
|
1098
|
+
this.handleWindowResizeEvent.bind(this);
|
|
1099
|
+
if (this.portraitMatchMedia) {
|
|
1100
|
+
this.portraitMatchMedia.addEventListener(
|
|
1101
|
+
'change',
|
|
1102
|
+
this.screenOrientationChangeHandler
|
|
1103
|
+
);
|
|
1104
|
+
this.windowOrientationEventBound = true;
|
|
1105
|
+
}
|
|
1160
1106
|
}
|
|
1161
1107
|
}
|
|
1162
1108
|
|
|
@@ -1169,11 +1115,15 @@ export default class LightningModalBase extends LightningElement {
|
|
|
1169
1115
|
* @private
|
|
1170
1116
|
*/
|
|
1171
1117
|
setIsSmallScreenSize() {
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
|
|
1175
|
-
|
|
1176
|
-
|
|
1118
|
+
if (isCSR) {
|
|
1119
|
+
const docElem = (document && document.documentElement) || null;
|
|
1120
|
+
const browserWidth = docElem
|
|
1121
|
+
? docElem.clientWidth
|
|
1122
|
+
: window.innerWidth;
|
|
1123
|
+
const isSmallScreenSize = browserWidth <= SMALL_SCREEN_SIZE;
|
|
1124
|
+
if (isSmallScreenSize !== this.isSmallScreenSize) {
|
|
1125
|
+
this.isSmallScreenSize = isSmallScreenSize;
|
|
1126
|
+
}
|
|
1177
1127
|
}
|
|
1178
1128
|
}
|
|
1179
1129
|
|
|
@@ -5,7 +5,7 @@ component after `lightning-modal-header` and before `lightning-modal-footer` com
|
|
|
5
5
|
|
|
6
6
|
This sample code shows the expected order of the modal components. The modal content is
|
|
7
7
|
created in a separate component extended from `LightningModal`. See
|
|
8
|
-
[Lightning Web Components Developer Guide](docs/
|
|
8
|
+
[Lightning Web Components Developer Guide](https://developer.salesforce.com/docs/platform/lwc/guide/)
|
|
9
9
|
|
|
10
10
|
```html
|
|
11
11
|
<!-- my/modalDialog.html -->
|
|
@@ -53,9 +53,9 @@ For example, specify the background color on the modal using the `sds-c-modal-co
|
|
|
53
53
|
|
|
54
54
|
See the modal blueprint's [Styling Hooks Overview](https://www.lightningdesignsystem.com/components/modals/#Styling-Hooks-Overview) for a list of CSS custom properties.
|
|
55
55
|
|
|
56
|
-
For more information, see [Style Components Using Lightning Design System Styling Hooks](docs/
|
|
56
|
+
For more information, see [Style Components Using Lightning Design System Styling Hooks](https://developer.salesforce.com/docs/platform/lwc/guide/create-components-css-custom-properties) in the Lightning Web Components Developer Guide.
|
|
57
57
|
|
|
58
58
|
#### Accessibility
|
|
59
59
|
|
|
60
|
-
See [Lightning Web Components Developer Guide](docs/
|
|
60
|
+
See [Lightning Web Components Developer Guide](https://developer.salesforce.com/docs/platform/lwc/guide/) for more information about accessibility in modals.
|
|
61
61
|
|
|
@@ -147,26 +147,19 @@ export default class LightningModalBody extends LightningElement {
|
|
|
147
147
|
* Based on initial values, calculate min/max height style values
|
|
148
148
|
* to set on modalBody for correct display of content, and scrollability
|
|
149
149
|
* @param {object} values passed from modalBase to modalBody,
|
|
150
|
-
* @param {boolean} shouldUseFullHeight boolean to determine if full
|
|
151
150
|
* height of screen should be used
|
|
152
151
|
* representing height and width values of header, footer, and body
|
|
153
152
|
* @return {object} values, after adding of modalUsableHeight
|
|
154
153
|
* @private
|
|
155
154
|
*/
|
|
156
|
-
updateModalBodyHeightValues(values
|
|
157
|
-
|
|
158
|
-
// first have to calculate the correct values
|
|
155
|
+
updateModalBodyHeightValues(values) {
|
|
156
|
+
// first, have to calculate the correct values
|
|
159
157
|
const updatedValues = this.calculateModalUsableHeight(values);
|
|
160
158
|
const modalBodyUsableHeight =
|
|
161
159
|
this.calculateModalBodyUsableHeight(updatedValues);
|
|
162
160
|
// update values with calculated values
|
|
163
161
|
values.modalBodyUsableHeight = modalBodyUsableHeight;
|
|
164
162
|
values.maxModalBodyHeightStyle = `${modalBodyUsableHeight}px`;
|
|
165
|
-
// need to adjust minHeight, to force modal to use full height
|
|
166
|
-
// of user screen
|
|
167
|
-
values.minModalBodyHeightStyle = shouldUseFullHeight
|
|
168
|
-
? `${modalBodyUsableHeight}px`
|
|
169
|
-
: `${modalBodyMinHeight}px`;
|
|
170
163
|
return values;
|
|
171
164
|
}
|
|
172
165
|
|
|
@@ -176,33 +169,38 @@ export default class LightningModalBody extends LightningElement {
|
|
|
176
169
|
* @private
|
|
177
170
|
*/
|
|
178
171
|
setModalBodyHeight(values, shouldUseFullHeight) {
|
|
179
|
-
|
|
180
|
-
|
|
172
|
+
// set base style to remove any preset max/min-height values
|
|
173
|
+
// if you move from > 767 to <= 767 or vise versa, previously set
|
|
174
|
+
// values must be unset. removing by setting initial 'null' values
|
|
175
|
+
let styles = { maxHeight: null, minHeight: null };
|
|
176
|
+
// when not utilizing size=full screen modal
|
|
177
|
+
// we need to calculate the max-height value
|
|
178
|
+
// so the modalBody content scrolls correctly
|
|
179
|
+
// (min-height value is always static for non size=full modals)
|
|
180
|
+
// size=full screen modal required a CSS Grid based solution
|
|
181
|
+
// due to iOS dynamic view port heights
|
|
182
|
+
if (!shouldUseFullHeight) {
|
|
183
|
+
// update the max-height and min height values
|
|
184
|
+
// on modal body wrapper div
|
|
185
|
+
const { maxModalBodyHeightStyle, minModalBodyHeightStyle } =
|
|
186
|
+
this.updateModalBodyHeightValues(values);
|
|
187
|
+
styles.maxHeight = maxModalBodyHeightStyle;
|
|
188
|
+
styles.minHeight = minModalBodyHeightStyle;
|
|
189
|
+
}
|
|
181
190
|
const divElem = this.contentElem;
|
|
182
|
-
const styles = {
|
|
183
|
-
maxHeight: maxModalBodyHeightStyle,
|
|
184
|
-
minHeight: minModalBodyHeightStyle,
|
|
185
|
-
};
|
|
186
|
-
// set the max and min height value on modal body wrapper div
|
|
187
191
|
Object.assign(divElem.style, styles);
|
|
188
192
|
}
|
|
189
193
|
|
|
190
194
|
/**
|
|
191
|
-
* Update values
|
|
192
|
-
*
|
|
193
|
-
* @param {Boolean} shouldUseFullHeight Whether full height of screen should be used
|
|
195
|
+
* Update values for any size modal behavior when not exhibiting full height behavior
|
|
196
|
+
* size=small|medium|large && size=full (when screen size greater than 767px)
|
|
194
197
|
* @param {object} values Provided height, width values from handleUpdateHeight
|
|
195
|
-
* @returns {object} updatedValues
|
|
198
|
+
* @returns {object} updatedValues for default modal behavior. not utilized for full screen
|
|
196
199
|
* @private
|
|
197
200
|
*/
|
|
198
|
-
updateValues(
|
|
201
|
+
updateValues(values) {
|
|
199
202
|
const { headerHeight, footerHeight, backdropHeight } = values;
|
|
200
203
|
const MODAL_BODY_MIN_HEIGHT = 80;
|
|
201
|
-
// Full screen size constants
|
|
202
|
-
// positioning values of body and footer are effected
|
|
203
|
-
// by modalHeader presence (headless)
|
|
204
|
-
const PAD_TOP_FULL = 48;
|
|
205
|
-
const PAD_BOTTOM_FULL = 1;
|
|
206
204
|
// default screen behavior (original modal behavior)
|
|
207
205
|
const PAD_TOP_DEFAULT = 48;
|
|
208
206
|
const PAD_BOTTOM_DEFAULT = 80;
|
|
@@ -212,14 +210,16 @@ export default class LightningModalBody extends LightningElement {
|
|
|
212
210
|
headerHeight: Math.floor(headerHeight),
|
|
213
211
|
footerHeight: Math.floor(footerHeight),
|
|
214
212
|
backdropHeight: Math.floor(backdropHeight),
|
|
215
|
-
paddingTop:
|
|
216
|
-
paddingBottom:
|
|
217
|
-
? PAD_BOTTOM_FULL
|
|
218
|
-
: PAD_BOTTOM_DEFAULT,
|
|
213
|
+
paddingTop: PAD_TOP_DEFAULT,
|
|
214
|
+
paddingBottom: PAD_BOTTOM_DEFAULT,
|
|
219
215
|
modalBodyMinHeight: MODAL_BODY_MIN_HEIGHT,
|
|
220
|
-
//
|
|
216
|
+
// since size=full screen no longer relies on
|
|
217
|
+
// JS calculated values, minHeight value is only
|
|
218
|
+
// utilized for !size=full modals, and the value is
|
|
219
|
+
// always static at 'min-height: 80px'
|
|
220
|
+
minModalBodyHeightStyle: `${MODAL_BODY_MIN_HEIGHT}px`,
|
|
221
|
+
// these last three values must first be calculated
|
|
221
222
|
// the first two values get set on modal body
|
|
222
|
-
minModalBodyHeightStyle: null,
|
|
223
223
|
maxModalBodyHeightStyle: null,
|
|
224
224
|
modalBodyUsableHeight: null,
|
|
225
225
|
modalUsableHeight: null,
|
|
@@ -251,10 +251,7 @@ export default class LightningModalBody extends LightningElement {
|
|
|
251
251
|
this.footerPresent = footerHeight !== 0;
|
|
252
252
|
// now determine behavior: full screen or default
|
|
253
253
|
const shouldUseFullHeight = sizeSetFull && isSmallScreenSize;
|
|
254
|
-
const updatedValues = this.updateValues(
|
|
255
|
-
shouldUseFullHeight,
|
|
256
|
-
values
|
|
257
|
-
);
|
|
254
|
+
const updatedValues = this.updateValues(values);
|
|
258
255
|
// set updated values based on behavior
|
|
259
256
|
this.setModalBodyHeight(updatedValues, shouldUseFullHeight);
|
|
260
257
|
}
|
|
@@ -6,7 +6,7 @@ Place the `lightning-modal-footer` component after the `lightning-modal-body` co
|
|
|
6
6
|
|
|
7
7
|
This sample code shows the expected order of the modal components. The modal content is
|
|
8
8
|
created in a separate component extended from `LightningModal`. See
|
|
9
|
-
[Lightning Web Components Developer Guide](docs/
|
|
9
|
+
[Lightning Web Components Developer Guide](https://developer.salesforce.com/docs/platform/lwc/guide/)
|
|
10
10
|
|
|
11
11
|
This sample's `lightning-modal-footer` includes two `lightning-button` components,
|
|
12
12
|
but you can also use `<button>` elements.
|
|
@@ -59,7 +59,7 @@ For example, specify the background color on the footer using the `sds-c-modal-f
|
|
|
59
59
|
|
|
60
60
|
See the modal blueprint's [Styling Hooks Overview](https://www.lightningdesignsystem.com/components/modals/#Styling-Hooks-Overview) for a list of CSS custom properties.
|
|
61
61
|
|
|
62
|
-
For more information, see [Style Components Using Lightning Design System Styling Hooks](docs/
|
|
62
|
+
For more information, see [Style Components Using Lightning Design System Styling Hooks](https://developer.salesforce.com/docs/platform/lwc/guide/create-components-css-custom-properties) in the Lightning Web Components Developer Guide.
|
|
63
63
|
|
|
64
64
|
#### Accessibility
|
|
65
65
|
|
|
@@ -68,5 +68,5 @@ If you add buttons to the footer, you can use the accessibility attributes descr
|
|
|
68
68
|
When the modal opens, focus goes to the first interactive element in the modal. If there are no links in the header or any interactive elements
|
|
69
69
|
in the modal body, the first footer button gets initial focus.
|
|
70
70
|
|
|
71
|
-
See [Lightning Web Components Developer Guide](docs/
|
|
71
|
+
See [Lightning Web Components Developer Guide](https://developer.salesforce.com/docs/platform/lwc/guide/) for more information about accessibility in modals.
|
|
72
72
|
|