@lion/ui 0.23.0 → 0.25.0
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 +50 -20
- package/components/accordion/src/LionAccordion.js +31 -42
- package/components/accordion/test/lion-accordion.test.js +108 -134
- package/components/button/src/LionButton.js +9 -12
- package/components/button/src/LionButtonReset.js +0 -5
- package/components/button/src/LionButtonSubmit.js +7 -12
- package/components/button/test/demos.screenshots-test.js +50 -11
- package/components/button/test/lion-button.test.js +0 -1
- package/components/button/test-suites/LionButton.suite.js +135 -145
- package/components/button/test-suites/LionButtonReset.suite.js +54 -72
- package/components/button/test-suites/LionButtonSubmit.suite.js +49 -68
- package/components/calendar/src/LionCalendar.js +151 -104
- package/components/calendar/src/calendarStyle.js +0 -1
- package/components/calendar/src/utils/createMonth.js +3 -4
- package/components/calendar/src/utils/createMultipleMonth.js +15 -7
- package/components/calendar/src/utils/createWeek.js +0 -2
- package/components/calendar/src/utils/dataTemplate.js +8 -4
- package/components/calendar/src/utils/dayTemplate.js +0 -6
- package/components/calendar/src/utils/getDayMonthYear.js +6 -2
- package/components/calendar/test/demos.screenshots-test.js +40 -9
- package/components/calendar/test/lion-calendar.test.js +171 -282
- package/components/calendar/test/utils/createMonth.test.js +61 -22
- package/components/calendar/test/utils/createMultipleMonth.test.js +14 -7
- package/components/calendar/test/utils/createWeek.test.js +51 -17
- package/components/calendar/test/utils/dataTemplate.test.js +3 -4
- package/components/calendar/test/utils/dayTemplate.test.js +106 -34
- package/components/calendar/test/utils/getFirstDayNextMonth.test.js +0 -1
- package/components/calendar/test/utils/getLastDayPreviousMonth.test.js +0 -1
- package/components/calendar/test/utils/isSameDate.test.js +0 -1
- package/components/calendar/test/utils/snapshots/monthTemplate_en-GB_Sunday_2018-12.js +1 -2
- package/components/calendar/test-helpers/CalendarObject.js +31 -62
- package/components/calendar/test-helpers/DayObject.js +7 -15
- package/components/calendar/test-suites/LionCalendar.suite.js +7 -9
- package/components/checkbox-group/src/LionCheckboxIndeterminate.js +17 -30
- package/components/checkbox-group/test/lion-checkbox-group-integrations.test.js +0 -1
- package/components/checkbox-group/test/lion-checkbox-group.test.js +21 -16
- package/components/checkbox-group/test/lion-checkbox-indeterminate-integrations.test.js +3 -3
- package/components/checkbox-group/test/lion-checkbox-integrations.test.js +3 -2
- package/components/checkbox-group/test/lion-checkbox.test.js +30 -16
- package/components/checkbox-group/test-suites/CheckboxIndeterminate.suite.js +147 -191
- package/components/collapsible/src/LionCollapsible.js +10 -15
- package/components/collapsible/test/lion-collapsible.test.js +4 -18
- package/components/combobox/src/LionCombobox.js +35 -53
- package/components/combobox/src/utils/makeMatchingTextBold.js +2 -5
- package/components/combobox/src/validators.js +0 -1
- package/components/combobox/test/lion-combobox-integrations.test.js +6 -6
- package/components/combobox/test/lion-combobox.test.js +576 -869
- package/components/combobox/test/validators.test.js +6 -13
- package/components/combobox/test-helpers/combobox-helpers.js +24 -11
- package/components/core/src/DisabledMixin.js +61 -66
- package/components/core/src/DisabledWithTabIndexMixin.js +76 -83
- package/components/core/src/EventTargetShim.js +1 -4
- package/components/core/src/ScopedElementsMixin.js +4 -15
- package/components/core/src/ScopedStylesController.js +1 -5
- package/components/core/src/SlotMixin.js +236 -239
- package/components/core/src/browserDetection.js +5 -12
- package/components/core/test/DisabledMixin.test.js +24 -39
- package/components/core/test/DisabledWithTabIndexMixin.test.js +21 -34
- package/components/core/test/EventTargetShim.test.js +0 -8
- package/components/core/test/ScopedElementsMixin.test.js +22 -38
- package/components/core/test/ScopedStylesController.test.js +11 -20
- package/components/core/test/SlotMixin.test.js +102 -154
- package/components/core/test-helpers/getCachedFixture.js +5 -11
- package/components/core/types/SlotMixinTypes.ts +8 -3
- package/components/dialog/src/LionDialog.js +4 -3
- package/components/dialog/test/lion-dialog.integration.test.js +10 -20
- package/components/dialog/test/lion-dialog.test.js +48 -62
- package/components/dialog/test-helpers/test-router.js +4 -6
- package/components/drawer/src/LionDrawer.js +18 -34
- package/components/drawer/src/drawerStyle.js +0 -1
- package/components/drawer/test/lion-drawer.test.js +1 -17
- package/components/fieldset/test/lion-fieldset.test.js +6 -4
- package/components/form/src/LionForm.js +18 -13
- package/components/form/test/lion-form.test.js +22 -52
- package/components/form-core/src/FocusMixin.js +172 -174
- package/components/form-core/src/FormControlMixin.js +811 -813
- package/components/form-core/src/FormatMixin.js +537 -537
- package/components/form-core/src/InteractionStateMixin.js +196 -183
- package/components/form-core/src/LionField.js +9 -5
- package/components/form-core/src/NativeTextFieldMixin.js +114 -116
- package/components/form-core/src/choice-group/ChoiceGroupMixin.js +322 -364
- package/components/form-core/src/choice-group/ChoiceInputMixin.js +306 -296
- package/components/form-core/src/choice-group/CustomChoiceGroupMixin.js +114 -139
- package/components/form-core/src/form-group/FormElementsHaveNoError.js +0 -2
- package/components/form-core/src/form-group/FormGroupMixin.js +551 -557
- package/components/form-core/src/registration/FormRegisteringMixin.js +72 -71
- package/components/form-core/src/registration/FormRegistrarMixin.js +201 -217
- package/components/form-core/src/registration/FormRegistrarPortalMixin.js +31 -37
- package/components/form-core/src/utils/SyncUpdatableMixin.js +106 -117
- package/components/form-core/src/utils/getAriaElementsInRightDomOrder.js +1 -2
- package/components/form-core/src/validate/LionValidationFeedback.js +12 -8
- package/components/form-core/src/validate/Unparseable.js +4 -2
- package/components/form-core/src/validate/ValidateMixin.js +829 -883
- package/components/form-core/src/validate/Validator.js +3 -6
- package/components/form-core/src/validate/resultValidators/DefaultSuccess.js +1 -2
- package/components/form-core/src/validate/validators/DateValidators.js +0 -5
- package/components/form-core/src/validate/validators/NumberValidators.js +1 -5
- package/components/form-core/src/validate/validators/Required.js +1 -1
- package/components/form-core/src/validate/validators/StringValidators.js +1 -8
- package/components/form-core/test/FocusMixin.test.js +96 -82
- package/components/form-core/test/FormControlMixin.test.js +120 -176
- package/components/form-core/test/FormRegistrationMixins.test.js +0 -2
- package/components/form-core/test/FormatMixin.test.js +0 -1
- package/components/form-core/test/InteractionStateMixin.test.js +0 -1
- package/components/form-core/test/NativeTextFieldMixin.test.js +0 -1
- package/components/form-core/test/choice-group/ChoiceGroupMixin.test.js +0 -1
- package/components/form-core/test/choice-group/ChoiceInputMixin.test.js +0 -1
- package/components/form-core/test/choice-group/CustomChoiceGroupMixin.integrations.test.js +6 -8
- package/components/form-core/test/choice-group/CustomChoiceGroupMixin.test.js +0 -3
- package/components/form-core/test/form-group/FormGroupMixin.test.js +0 -1
- package/components/form-core/test/lion-field.test.js +88 -98
- package/components/form-core/test/utils/SyncUpdatableMixin.test.js +51 -65
- package/components/form-core/test/utils/getAriaElementsInRightDomOrder.test.js +3 -3
- package/components/form-core/test/validate/DateValidators.test.js +5 -27
- package/components/form-core/test/validate/NumberValidators.test.js +4 -16
- package/components/form-core/test/validate/Required.test.js +8 -21
- package/components/form-core/test/validate/ResultValidator.test.js +1 -2
- package/components/form-core/test/validate/StringValidators.test.js +4 -35
- package/components/form-core/test/validate/ValidateMixin.test.js +0 -1
- package/components/form-core/test/validate/ValidateMixinFeedbackPart.test.js +0 -1
- package/components/form-core/test/validate/Validator.test.js +39 -34
- package/components/form-core/test/validate/lion-validation-feedback.test.js +81 -43
- package/components/form-core/test-helpers/ExampleValidators.js +0 -5
- package/components/form-core/test-helpers/getFormControlMembers.js +2 -2
- package/components/form-core/test-helpers/mimicUserInput.js +5 -1
- package/components/form-core/test-suites/FormRegistrationMixins.suite.js +65 -122
- package/components/form-core/test-suites/FormatMixin.suite.js +202 -227
- package/components/form-core/test-suites/InteractionStateMixin.suite.js +47 -60
- package/components/form-core/test-suites/NativeTextFieldMixin.suite.js +8 -11
- package/components/form-core/test-suites/ValidateMixin.suite.js +280 -359
- package/components/form-core/test-suites/ValidateMixinFeedbackPart.suite.js +112 -163
- package/components/form-core/test-suites/choice-group/ChoiceGroupMixin.suite.js +185 -218
- package/components/form-core/test-suites/choice-group/ChoiceInputMixin.suite.js +116 -109
- package/components/form-core/test-suites/choice-group/CustomChoiceGroupMixin.suite.js +36 -70
- package/components/form-core/test-suites/form-group/FormGroupMixin-input.suite.js +57 -65
- package/components/form-core/test-suites/form-group/FormGroupMixin.suite.js +664 -523
- package/components/form-core/translations/bg-BG.js +0 -1
- package/components/form-core/translations/cs-CZ.js +0 -1
- package/components/form-core/translations/de-DE.js +0 -1
- package/components/form-core/translations/en-AU.js +0 -1
- package/components/form-core/translations/en-GB.js +0 -1
- package/components/form-core/translations/en-US.js +0 -1
- package/components/form-core/translations/es-ES.js +0 -1
- package/components/form-core/translations/fr-BE.js +0 -1
- package/components/form-core/translations/fr-FR.js +0 -1
- package/components/form-core/translations/hu-HU.js +0 -1
- package/components/form-core/translations/it-IT.js +0 -1
- package/components/form-core/translations/nl-BE.js +0 -1
- package/components/form-core/translations/nl-NL.js +0 -1
- package/components/form-core/translations/pl-PL.js +0 -1
- package/components/form-core/translations/ro-RO.js +0 -1
- package/components/form-core/translations/ru-RU.js +0 -1
- package/components/form-core/translations/sk-SK.js +0 -1
- package/components/form-core/translations/tr-TR.js +0 -1
- package/components/form-core/translations/uk-UA.js +0 -1
- package/components/form-integrations/test/dialog-integrations.test.js +1 -4
- package/components/form-integrations/test/form-group-methods.test.js +28 -31
- package/components/form-integrations/test/form-integrations.test.js +27 -28
- package/components/form-integrations/test/form-validation-integrations.test.js +21 -29
- package/components/form-integrations/test/helpers/umbrella-form.js +3 -5
- package/components/form-integrations/test/model-value-consistency.test.js +75 -77
- package/components/form-integrations/test/model-value-event.test.js +10 -20
- package/components/helpers/src/SbActionLogger.js +13 -17
- package/components/helpers/src/SbLocaleSwitcher.js +5 -5
- package/components/helpers/src/sortEachDepth.js +0 -2
- package/components/helpers/test/renderLitAsNode.test.js +0 -4
- package/components/helpers/test/sb-action-logger.test.js +24 -55
- package/components/icon/src/IconManager.js +0 -2
- package/components/icon/src/LionIcon.js +2 -7
- package/components/icon/src/icons.js +0 -2
- package/components/icon/test/IconManager.test.js +0 -15
- package/components/icon/test/hammer.svg.js +3 -4
- package/components/icon/test/heart.svg.js +3 -4
- package/components/icon/test/lion-icon.test.js +14 -43
- package/components/input/src/LionInput.js +2 -8
- package/components/input/test/input-integrations.test.js +0 -5
- package/components/input/test/lion-input-integrations.test.js +0 -4
- package/components/input/test/lion-input.test.js +28 -58
- package/components/input/test-helpers/getInputMembers.js +2 -2
- package/components/input-amount/src/LionInputAmount.js +20 -20
- package/components/input-amount/src/formatters.js +0 -3
- package/components/input-amount/src/parsers.js +0 -3
- package/components/input-amount/test/formatters.test.js +24 -16
- package/components/input-amount/test/lion-input-amount-integrations.test.js +0 -4
- package/components/input-amount/test/lion-input-amount.test.js +123 -147
- package/components/input-amount/test/parsers.test.js +33 -17
- package/components/input-amount/test/preprocessors.test.js +0 -3
- package/components/input-amount-dropdown/src/LionInputAmountDropdown.js +49 -59
- package/components/input-amount-dropdown/src/currencyUtil.js +8 -7
- package/components/input-amount-dropdown/src/parsers.js +0 -1
- package/components/input-amount-dropdown/src/validators.js +0 -1
- package/components/input-amount-dropdown/test/LionInputAmountDropdown.test.js +34 -36
- package/components/input-amount-dropdown/test/lion-input-amount-dropdown-integrations.test.js +18 -13
- package/components/input-amount-dropdown/test-helpers/mimicUserChangingDropdown.js +5 -1
- package/components/input-amount-dropdown/test-suites/LionInputAmountDropdown.suite.js +132 -107
- package/components/input-date/src/LionInputDate.js +4 -3
- package/components/input-date/test/lion-input-date-integrations.test.js +0 -3
- package/components/input-date/test/lion-input-date.test.js +19 -32
- package/components/input-datepicker/src/LionInputDatepicker.js +17 -29
- package/components/input-datepicker/src/localizeNamespaceLoader.js +1 -2
- package/components/input-datepicker/test/lion-input-datepicker-integrations.test.js +0 -3
- package/components/input-datepicker/test/lion-input-datepicker.test.js +88 -153
- package/components/input-datepicker/test-helpers/DatepickerInputObject.js +9 -12
- package/components/input-datepicker/test-suites/LionInputDatepicker.suite.js +6 -4
- package/components/input-datepicker/translations/bg-BG.js +0 -1
- package/components/input-datepicker/translations/cs-CZ.js +0 -1
- package/components/input-datepicker/translations/de-DE.js +0 -1
- package/components/input-datepicker/translations/en-AU.js +0 -1
- package/components/input-datepicker/translations/en-GB.js +0 -1
- package/components/input-datepicker/translations/en-US.js +0 -1
- package/components/input-datepicker/translations/es-ES.js +0 -1
- package/components/input-datepicker/translations/fr-BE.js +0 -1
- package/components/input-datepicker/translations/fr-FR.js +0 -1
- package/components/input-datepicker/translations/hu-HU.js +0 -1
- package/components/input-datepicker/translations/it-IT.js +0 -1
- package/components/input-datepicker/translations/nl-BE.js +0 -1
- package/components/input-datepicker/translations/nl-NL.js +0 -1
- package/components/input-datepicker/translations/pl-PL.js +0 -1
- package/components/input-datepicker/translations/ro-RO.js +0 -1
- package/components/input-datepicker/translations/ru-RU.js +0 -1
- package/components/input-datepicker/translations/sk-SK.js +0 -1
- package/components/input-datepicker/translations/tr-TR.js +0 -1
- package/components/input-datepicker/translations/uk-UA.js +0 -1
- package/components/input-email/test/lion-input-email-integrations.test.js +0 -2
- package/components/input-email/test/lion-input-email.test.js +1 -7
- package/components/input-file/src/FileHandle.js +0 -3
- package/components/input-file/src/LionInputFile.js +85 -83
- package/components/input-file/src/LionSelectedFileList.js +12 -12
- package/components/input-file/src/validators.js +10 -9
- package/components/input-file/test/FileValidators.test.js +170 -80
- package/components/input-file/test/lion-input-file.test.js +160 -244
- package/components/input-file/test/lion-selected-file-list.test.js +13 -22
- package/components/input-file/translations/bg-BG.js +0 -1
- package/components/input-file/translations/cs-CZ.js +0 -1
- package/components/input-file/translations/de-DE.js +0 -1
- package/components/input-file/translations/en-AU.js +0 -1
- package/components/input-file/translations/en-GB.js +0 -1
- package/components/input-file/translations/en-PH.js +0 -1
- package/components/input-file/translations/en-US.js +0 -1
- package/components/input-file/translations/en.js +2 -1
- package/components/input-file/translations/es-ES.js +0 -1
- package/components/input-file/translations/fr-BE.js +0 -1
- package/components/input-file/translations/fr-FR.js +0 -1
- package/components/input-file/translations/hu-HU.js +0 -1
- package/components/input-file/translations/id-ID.js +0 -1
- package/components/input-file/translations/id.js +2 -1
- package/components/input-file/translations/it-IT.js +0 -1
- package/components/input-file/translations/nl-BE.js +0 -1
- package/components/input-file/translations/nl-NL.js +0 -1
- package/components/input-file/translations/pl-PL.js +0 -1
- package/components/input-file/translations/ro-RO.js +0 -1
- package/components/input-file/translations/ru-RU.js +0 -1
- package/components/input-file/translations/sk-SK.js +0 -1
- package/components/input-file/translations/uk-UA.js +0 -1
- package/components/input-file/translations/zh-CN.js +0 -1
- package/components/input-iban/src/validators.js +6 -11
- package/components/input-iban/test/formatters.test.js +0 -3
- package/components/input-iban/test/lion-input-iban-integrations.test.js +0 -2
- package/components/input-iban/test/lion-input-iban.test.js +1 -9
- package/components/input-iban/test/parsers.test.js +0 -2
- package/components/input-iban/test/validators.test.js +0 -12
- package/components/input-iban/translations/bg-BG.js +0 -1
- package/components/input-iban/translations/cs-CZ.js +0 -1
- package/components/input-iban/translations/de-DE.js +0 -1
- package/components/input-iban/translations/en-AU.js +0 -1
- package/components/input-iban/translations/en-GB.js +0 -1
- package/components/input-iban/translations/en-US.js +0 -1
- package/components/input-iban/translations/es-ES.js +0 -1
- package/components/input-iban/translations/fr-BE.js +0 -1
- package/components/input-iban/translations/fr-FR.js +0 -1
- package/components/input-iban/translations/hu-HU.js +0 -1
- package/components/input-iban/translations/it-IT.js +0 -1
- package/components/input-iban/translations/nl-BE.js +0 -1
- package/components/input-iban/translations/nl-NL.js +0 -1
- package/components/input-iban/translations/pl-PL.js +0 -1
- package/components/input-iban/translations/ro-RO.js +0 -1
- package/components/input-iban/translations/ru-RU.js +0 -1
- package/components/input-iban/translations/sk-SK.js +0 -1
- package/components/input-iban/translations/uk-UA.js +0 -1
- package/components/input-range/src/LionInputRange.js +18 -19
- package/components/input-range/test/lion-input-range.test.js +23 -48
- package/components/input-range/translations/bg-BG.js +0 -1
- package/components/input-range/translations/cs-CZ.js +0 -1
- package/components/input-range/translations/de-DE.js +0 -1
- package/components/input-range/translations/en-AU.js +0 -1
- package/components/input-range/translations/en-GB.js +0 -1
- package/components/input-range/translations/en-PH.js +0 -1
- package/components/input-range/translations/en-US.js +0 -1
- package/components/input-range/translations/es-ES.js +0 -1
- package/components/input-range/translations/fr-BE.js +0 -1
- package/components/input-range/translations/fr-FR.js +0 -1
- package/components/input-range/translations/hu-HU.js +0 -1
- package/components/input-range/translations/it-IT.js +0 -1
- package/components/input-range/translations/nl-BE.js +0 -1
- package/components/input-range/translations/nl-NL.js +0 -1
- package/components/input-range/translations/pl-PL.js +0 -1
- package/components/input-range/translations/ro-RO.js +0 -1
- package/components/input-range/translations/ru-RU.js +0 -1
- package/components/input-range/translations/sk-SK.js +0 -1
- package/components/input-range/translations/uk-UA.js +0 -1
- package/components/input-range/translations/zh-CN.js +0 -1
- package/components/input-stepper/src/LionInputStepper.js +19 -38
- package/components/input-stepper/test/lion-input-stepper-integrations.test.js +0 -1
- package/components/input-stepper/test/lion-input-stepper.test.js +0 -1
- package/components/input-stepper/test-suites/lion-input-stepper.integration.suite.js +0 -2
- package/components/input-stepper/test-suites/lion-input-stepper.suite.js +56 -105
- package/components/input-stepper/translations/bg-BG.js +0 -1
- package/components/input-stepper/translations/cs-CZ.js +0 -1
- package/components/input-stepper/translations/de-DE.js +0 -1
- package/components/input-stepper/translations/en-AU.js +0 -1
- package/components/input-stepper/translations/en-GB.js +0 -1
- package/components/input-stepper/translations/en-US.js +0 -1
- package/components/input-stepper/translations/es-ES.js +0 -1
- package/components/input-stepper/translations/fr-BE.js +0 -1
- package/components/input-stepper/translations/fr-FR.js +0 -1
- package/components/input-stepper/translations/hu-HU.js +0 -1
- package/components/input-stepper/translations/it-IT.js +0 -1
- package/components/input-stepper/translations/nl-BE.js +0 -1
- package/components/input-stepper/translations/nl-NL.js +0 -1
- package/components/input-stepper/translations/pl-PL.js +0 -1
- package/components/input-stepper/translations/ro-RO.js +0 -1
- package/components/input-stepper/translations/ru-RU.js +0 -1
- package/components/input-stepper/translations/sk-SK.js +0 -1
- package/components/input-stepper/translations/uk-UA.js +0 -1
- package/components/input-tel/src/LionInputTel.js +53 -37
- package/components/input-tel/src/PhoneUtilManager.js +6 -4
- package/components/input-tel/src/formatters.js +12 -10
- package/components/input-tel/src/parsers.js +3 -3
- package/components/input-tel/src/preprocessors.js +15 -7
- package/components/input-tel/src/validators.js +4 -6
- package/components/input-tel/test/LionInputTel.test.js +4 -2
- package/components/input-tel/test/formatters.test.js +22 -10
- package/components/input-tel/test/parsers.test.js +127 -11
- package/components/input-tel/test/preprocessors.test.js +24 -13
- package/components/input-tel/test/validators.test.js +7 -14
- package/components/input-tel/test-helpers/mockPhoneUtilManager.js +20 -8
- package/components/input-tel/test-suites/LionInputTel.suite.js +33 -73
- package/components/input-tel/translations/bg-BG.js +0 -1
- package/components/input-tel/translations/cs-CZ.js +0 -1
- package/components/input-tel/translations/de-DE.js +0 -1
- package/components/input-tel/translations/en-AU.js +0 -1
- package/components/input-tel/translations/en-GB.js +0 -1
- package/components/input-tel/translations/en-US.js +0 -1
- package/components/input-tel/translations/es-ES.js +0 -1
- package/components/input-tel/translations/fr-BE.js +0 -1
- package/components/input-tel/translations/fr-FR.js +0 -1
- package/components/input-tel/translations/hu-HU.js +0 -1
- package/components/input-tel/translations/it-IT.js +0 -1
- package/components/input-tel/translations/nl-BE.js +0 -1
- package/components/input-tel/translations/nl-NL.js +0 -1
- package/components/input-tel/translations/pl-PL.js +0 -1
- package/components/input-tel/translations/ro-RO.js +0 -1
- package/components/input-tel/translations/ru-RU.js +0 -1
- package/components/input-tel/translations/sk-SK.js +0 -1
- package/components/input-tel/translations/uk-UA.js +0 -1
- package/components/input-tel-dropdown/src/LionInputTelDropdown.js +10 -28
- package/components/input-tel-dropdown/src/regionCodeToLocale.js +3 -1
- package/components/input-tel-dropdown/test/LionInputTelDropdown.test.js +31 -38
- package/components/input-tel-dropdown/test/regionCodeToLocale.test.js +0 -1
- package/components/input-tel-dropdown/test-helpers/mimicUserChangingDropdown.js +5 -1
- package/components/input-tel-dropdown/test-suites/LionInputTelDropdown--parentheses.suite.js +16 -11
- package/components/input-tel-dropdown/test-suites/LionInputTelDropdown.suite.js +54 -79
- package/components/listbox/src/LionListbox.js +5 -2
- package/components/listbox/src/LionOption.js +8 -7
- package/components/listbox/src/LionOptions.js +0 -3
- package/components/listbox/src/ListboxMixin.js +786 -820
- package/components/listbox/test/lion-listbox.test.js +0 -1
- package/components/listbox/test/lion-option.test.js +53 -64
- package/components/listbox/test/lion-options.test.js +3 -4
- package/components/listbox/test-helpers/getListboxMembers.js +6 -3
- package/components/listbox/test-suites/ListboxMixin.suite.js +101 -261
- package/components/localize/src/LocalizeManager.js +40 -40
- package/components/localize/src/LocalizeMixin.js +130 -157
- package/components/localize/src/date/formatDate.js +1 -5
- package/components/localize/src/date/getDateFormatBasedOnLocale.js +5 -3
- package/components/localize/src/date/getMonthNames.js +3 -5
- package/components/localize/src/date/getWeekdayNames.js +1 -5
- package/components/localize/src/date/parseDate.js +5 -20
- package/components/localize/src/date/utils/normalizeIntlDate.js +0 -7
- package/components/localize/src/getLocalizeManager.js +0 -3
- package/components/localize/src/number/formatNumber.js +3 -7
- package/components/localize/src/number/formatNumberToParts.js +52 -18
- package/components/localize/src/number/getCurrencyName.js +5 -5
- package/components/localize/src/number/getFractionDigits.js +4 -4
- package/components/localize/src/number/getSeparatorsFromNumber.js +1 -3
- package/components/localize/src/number/parseNumber.js +0 -3
- package/components/localize/src/number/utils/normalize-format-number-to-parts/forceAddGroupSeparators.js +0 -1
- package/components/localize/src/number/utils/normalize-format-number-to-parts/forceSpaceBetweenCurrencyCodeAndNumber.js +4 -1
- package/components/localize/test/LocalizeManager.test.js +385 -278
- package/components/localize/test/LocalizeMixin.test.js +28 -112
- package/components/localize/test/date/formatDate.test.js +18 -48
- package/components/localize/test/date/getDateFormatBasedOnLocale.test.js +0 -3
- package/components/localize/test/date/getMonthNames.test.js +27 -12
- package/components/localize/test/date/getWeekdayNames.test.js +93 -49
- package/components/localize/test/date/normalizeDateTime.test.js +0 -2
- package/components/localize/test/date/parseDate.test.js +12 -16
- package/components/localize/test/getLocalizeManager.test.js +0 -3
- package/components/localize/test/isLocalizeESModule.test.js +32 -13
- package/components/localize/test/localize.test.js +0 -4
- package/components/localize/test/number/formatNumber.test.js +215 -106
- package/components/localize/test/number/formatNumberToParts.test.js +31 -38
- package/components/localize/test/number/getCurrencyName.test.js +20 -6
- package/components/localize/test/number/getDecimalSeparator.test.js +5 -4
- package/components/localize/test/number/getFractionDigits.test.js +0 -2
- package/components/localize/test/number/getGroupSeparator.test.js +0 -2
- package/components/localize/test/number/getSeparatorsFromNumber.test.js +5 -3
- package/components/localize/test/number/parseNumber.test.js +123 -56
- package/components/localize/test/side-effect-free-entrypoint.test.js +0 -6
- package/components/localize/test-helpers/fake-imports.js +11 -6
- package/components/localize/test-helpers/localizeTearDown.js +0 -1
- package/components/menu/src/InteractiveListMixin.js +637 -638
- package/components/menu/src/LionMenu.js +46 -59
- package/components/menu/src/MoreButtonMenuMixin.js +215 -238
- package/components/menu/src/MultiLevelListMixin.js +240 -246
- package/components/menu/src/utils/isInView.js +0 -1
- package/components/menu/src/utils/listItemInteractions.js +4 -4
- package/components/menu/test/InteractiveListMixin.test.js +0 -1
- package/components/menu/test/MoreButtonMenuMixin.test.js +3 -2
- package/components/menu/test/MultiLevelListMixin.test.js +0 -1
- package/components/menu/test/lion-menu-interactions.test.js +0 -1
- package/components/menu/test/lion-menu.test.js +6 -2
- package/components/menu/test-helpers/mimicKeyPress.js +12 -2
- package/components/menu/test-suites/InteractiveListMixin.suite.js +4 -43
- package/components/menu/test-suites/LionMenu.suite.js +1 -8
- package/components/menu/test-suites/LionMenuInteractions.suite.js +22 -44
- package/components/menu/test-suites/MoreButtonMenuMixin.suite.js +34 -41
- package/components/menu/test-suites/MultiLevelListMixin.suite.js +5 -23
- package/components/overlays/src/ArrowMixin.js +111 -127
- package/components/overlays/src/OverlayController.js +172 -152
- package/components/overlays/src/OverlayMixin.js +64 -69
- package/components/overlays/src/OverlaysManager.js +30 -32
- package/components/overlays/src/configurations/visibility-trigger-partials/withClickInteraction.js +0 -1
- package/components/overlays/src/configurations/visibility-trigger-partials/withHoverInteraction.js +11 -11
- package/components/overlays/src/configurations/withBottomSheetConfig.js +12 -13
- package/components/overlays/src/configurations/withDropdownConfig.js +4 -2
- package/components/overlays/src/configurations/withModalDialogConfig.js +12 -13
- package/components/overlays/src/configurations/withPopoverConfig.js +27 -25
- package/components/overlays/src/configurations/withTooltipConfig.js +15 -13
- package/components/overlays/src/overlayDocumentStyle.js +1 -1
- package/components/overlays/src/overlayShadowDomStyle.js +0 -1
- package/components/overlays/src/singleton.js +0 -2
- package/components/overlays/src/utils/adopt-styles.js +18 -18
- package/components/overlays/src/utils/deep-contains.js +7 -6
- package/components/overlays/src/utils/get-focusable-elements.js +7 -10
- package/components/overlays/src/utils/inert-siblings.js +2 -4
- package/components/overlays/src/utils/is-equal-config.js +2 -3
- package/components/overlays/src/utils/is-visible.js +0 -1
- package/components/overlays/src/utils/simulate-tab.js +1 -4
- package/components/overlays/src/utils/sort-by-tabindex.js +2 -4
- package/components/overlays/test/ArrowMixin.test.js +18 -30
- package/components/overlays/test/OverlayController.test.js +406 -555
- package/components/overlays/test/OverlayMixin.test.js +0 -2
- package/components/overlays/test/OverlaysManager.test.js +30 -35
- package/components/overlays/test/global-positioning.test.js +6 -10
- package/components/overlays/test/invoker-compatibility.test.js +37 -0
- package/components/overlays/test/local-positioning.test.js +101 -103
- package/components/overlays/test/utils-tests/active-element.test.js +12 -27
- package/components/overlays/test/utils-tests/adopt-styles.test.js +25 -56
- package/components/overlays/test/utils-tests/deep-contains.test.js +73 -74
- package/components/overlays/test/utils-tests/get-focusable-elements.test.js +6 -23
- package/components/overlays/test/utils-tests/is-equal-config.test.js +32 -13
- package/components/overlays/test/utils-tests/visibility.test.js +44 -79
- package/components/overlays/test-helpers/createShadowHost.js +5 -3
- package/components/overlays/test-helpers/normalizeTransformStyle.js +2 -4
- package/components/overlays/test-suites/OverlayMixin.suite.js +152 -181
- package/components/overlays/test-suites/WithHoverInteraction.suite.js +96 -79
- package/components/overlays/translations/bg-BG.js +0 -1
- package/components/overlays/translations/cs-CZ.js +0 -1
- package/components/overlays/translations/de-DE.js +0 -1
- package/components/overlays/translations/en-AU.js +0 -1
- package/components/overlays/translations/en-GB.js +0 -1
- package/components/overlays/translations/en-US.js +0 -1
- package/components/overlays/translations/es-ES.js +0 -1
- package/components/overlays/translations/fr-BE.js +0 -1
- package/components/overlays/translations/fr-FR.js +0 -1
- package/components/overlays/translations/hu-HU.js +0 -1
- package/components/overlays/translations/it-IT.js +0 -1
- package/components/overlays/translations/nl-BE.js +0 -1
- package/components/overlays/translations/nl-NL.js +0 -1
- package/components/overlays/translations/pl-PL.js +0 -1
- package/components/overlays/translations/ro-RO.js +0 -1
- package/components/overlays/translations/ru-RU.js +0 -1
- package/components/overlays/translations/sk-SK.js +0 -1
- package/components/overlays/translations/tr-TR.js +0 -1
- package/components/overlays/translations/uk-UA.js +0 -1
- package/components/pagination/src/LionPagination.js +9 -12
- package/components/pagination/test/lion-pagination.test.js +18 -50
- package/components/progress-indicator/src/LionProgressIndicator.js +10 -12
- package/components/progress-indicator/test/lion-progress-indicator.test.js +1 -22
- package/components/radio-group/src/LionRadioGroup.js +1 -2
- package/components/radio-group/test/lion-radio-group-integrations.test.js +0 -1
- package/components/radio-group/test/lion-radio-group.test.js +27 -27
- package/components/radio-group/test/lion-radio-integrations.test.js +3 -2
- package/components/radio-group/test/lion-radio.test.js +30 -16
- package/components/select/src/LionSelect.js +12 -13
- package/components/select/test/lion-select.test.js +7 -12
- package/components/select-rich/src/LionSelectInvoker.js +18 -11
- package/components/select-rich/src/LionSelectRich.js +22 -44
- package/components/select-rich/test/demos.screenshots-test.js +40 -9
- package/components/select-rich/test/lion-select-invoker.test.js +26 -43
- package/components/select-rich/test/lion-select-listbox-suite-integration.test.js +3 -3
- package/components/select-rich/test/lion-select-rich-dialog-integration.test.js +4 -9
- package/components/select-rich/test/lion-select-rich-interaction.test.js +116 -116
- package/components/select-rich/test/lion-select-rich-upgrade.test.js +3 -7
- package/components/select-rich/test/lion-select-rich.test.js +153 -195
- package/components/select-rich/test-helpers/getSelectRichMembers.js +4 -1
- package/components/steps/src/LionStep.js +21 -12
- package/components/steps/src/LionSteps.js +25 -25
- package/components/steps/test/lion-step.test.js +18 -25
- package/components/steps/test/lion-steps.test.js +45 -78
- package/components/switch/src/LionSwitch.js +2 -7
- package/components/switch/src/LionSwitchButton.js +5 -6
- package/components/switch/test/lion-switch-button.test.js +16 -28
- package/components/switch/test/lion-switch.test.js +17 -31
- package/components/tabs/src/LionTabs.js +25 -28
- package/components/tabs/test/lion-tabs.test.js +156 -154
- package/components/textarea/src/LionTextarea.js +4 -23
- package/components/textarea/test/lion-textarea-integrations.test.js +0 -5
- package/components/textarea/test/lion-textarea.test.js +2 -28
- package/components/tooltip/src/LionTooltip.js +6 -6
- package/components/tooltip/test/lion-tooltip.test.js +75 -102
- package/components/validate-messages/src/getLocalizedMessage.js +8 -7
- package/components/validate-messages/src/loadDefaultFeedbackMessages.js +3 -1
- package/components/validate-messages/src/loadDefaultFeedbackMessagesNoSideEffects.js +9 -5
- package/components/validate-messages/src/per-entrypoint/loadComboboxMessagesNoSideEffects.js +5 -2
- package/components/validate-messages/src/per-entrypoint/loadFormCoreMessagesNoSideEffects.js +99 -35
- package/components/validate-messages/src/per-entrypoint/loadInputTelMessagesNoSideEffects.js +4 -3
- package/components/validate-messages/test/loadDefaultFeedbackMessages.test.js +5 -3
- package/components/validate-messages/test/loadDefaultFeedbackMessagesNoSideEffects.test.js +80 -45
- package/components/validate-messages/translations/bg-BG.js +0 -1
- package/components/validate-messages/translations/cs-CZ.js +0 -1
- package/components/validate-messages/translations/de-DE.js +0 -1
- package/components/validate-messages/translations/en-AU.js +0 -1
- package/components/validate-messages/translations/en-GB.js +0 -1
- package/components/validate-messages/translations/en-PH.js +0 -1
- package/components/validate-messages/translations/en-US.js +0 -1
- package/components/validate-messages/translations/es-ES.js +0 -1
- package/components/validate-messages/translations/fr-BE.js +0 -1
- package/components/validate-messages/translations/fr-FR.js +0 -1
- package/components/validate-messages/translations/hu-HU.js +0 -1
- package/components/validate-messages/translations/it-IT.js +0 -1
- package/components/validate-messages/translations/nl-BE.js +0 -1
- package/components/validate-messages/translations/nl-NL.js +0 -1
- package/components/validate-messages/translations/pl-PL.js +0 -1
- package/components/validate-messages/translations/ro-RO.js +0 -1
- package/components/validate-messages/translations/ru-RU.js +0 -1
- package/components/validate-messages/translations/sk-SK.js +0 -1
- package/components/validate-messages/translations/tr-TR.js +0 -1
- package/components/validate-messages/translations/uk-UA.js +0 -1
- package/custom-elements.json +229 -85
- package/dist-types/components/core/src/SlotMixin.d.ts +6 -1
- package/dist-types/components/core/src/SlotMixin.d.ts.map +1 -1
- package/dist-types/components/core/types/SlotMixinTypes.d.ts +5 -1
- package/dist-types/components/core/types/SlotMixinTypes.d.ts.map +1 -1
- package/dist-types/components/form-core/src/LionField.d.ts +3 -1
- package/dist-types/components/form-core/src/LionField.d.ts.map +1 -1
- package/dist-types/components/input-tel/src/LionInputTel.d.ts +6 -6
- package/dist-types/components/input-tel/src/LionInputTel.d.ts.map +1 -1
- package/dist-types/components/input-tel/src/PhoneUtilManager.d.ts +2 -2
- package/dist-types/components/input-tel/src/PhoneUtilManager.d.ts.map +1 -1
- package/dist-types/components/input-tel/src/formatters.d.ts +2 -2
- package/dist-types/components/input-tel/src/formatters.d.ts.map +1 -1
- package/dist-types/components/input-tel/src/preprocessors.d.ts +2 -2
- package/dist-types/components/input-tel/src/preprocessors.d.ts.map +1 -1
- package/dist-types/components/input-tel/test/validators.test.d.ts +1 -1
- package/dist-types/components/input-tel/test/validators.test.d.ts.map +1 -1
- package/dist-types/components/input-tel/test-helpers/mockPhoneUtilManager.d.ts +5 -0
- package/dist-types/components/input-tel/test-helpers/mockPhoneUtilManager.d.ts.map +1 -1
- package/dist-types/components/listbox/src/LionListbox.d.ts +2 -2
- package/dist-types/components/listbox/src/LionListbox.d.ts.map +1 -1
- package/dist-types/components/listbox/src/LionOption.d.ts +5 -2
- package/dist-types/components/listbox/src/LionOption.d.ts.map +1 -1
- package/dist-types/components/overlays/src/OverlayController.d.ts +3 -1
- package/dist-types/components/overlays/src/OverlayController.d.ts.map +1 -1
- package/dist-types/components/overlays/src/OverlayMixin.d.ts.map +1 -1
- package/dist-types/components/overlays/src/OverlaysManager.d.ts.map +1 -1
- package/dist-types/components/overlays/src/overlayDocumentStyle.d.ts.map +1 -1
- package/dist-types/components/overlays/test/invoker-compatibility.test.d.ts +3 -0
- package/dist-types/components/overlays/test/invoker-compatibility.test.d.ts.map +1 -0
- package/dist-types/components/select-rich/src/LionSelectInvoker.d.ts +3 -1
- package/dist-types/components/select-rich/src/LionSelectInvoker.d.ts.map +1 -1
- package/dist-types/components/select-rich/src/LionSelectRich.d.ts +6 -5
- package/dist-types/components/select-rich/src/LionSelectRich.d.ts.map +1 -1
- package/dist-types/tsconfig.tsbuildinfo +1 -1
- package/docs/components/accordion/overview.md +2 -2
- package/docs/components/accordion/reference.md +2 -2
- package/docs/components/accordion/use-cases.md +2 -2
- package/docs/components/button/examples.md +2 -2
- package/docs/components/button/extensions.md +2 -2
- package/docs/components/button/overview.md +2 -2
- package/docs/components/button/use-cases.md +2 -2
- package/docs/components/calendar/overview.md +2 -2
- package/docs/components/calendar/use-cases.md +2 -2
- package/docs/components/checkbox-group/overview.md +4 -4
- package/docs/components/checkbox-group/use-cases.md +2 -2
- package/docs/components/collapsible/examples.md +2 -2
- package/docs/components/collapsible/overview.md +3 -3
- package/docs/components/collapsible/use-cases.md +2 -2
- package/docs/components/combobox/api-table.md +1 -1
- package/docs/components/combobox/extensions.md +2 -2
- package/docs/components/combobox/overview.md +3 -3
- package/docs/components/combobox/use-cases.md +3 -3
- package/docs/components/dialog/overview.md +3 -3
- package/docs/components/dialog/use-cases.md +2 -2
- package/docs/components/drawer/overview.md +2 -2
- package/docs/components/drawer/use-cases.md +2 -2
- package/docs/components/fieldset/overview.md +7 -7
- package/docs/components/fieldset/use-cases.md +2 -2
- package/docs/components/form/overview.md +5 -5
- package/docs/components/form/use-cases.md +4 -4
- package/docs/components/icon/overview.md +2 -2
- package/docs/components/icon/use-cases.md +3 -3
- package/docs/components/input/overview.md +3 -3
- package/docs/components/input/use-cases.md +2 -2
- package/docs/components/input-amount/overview.md +5 -5
- package/docs/components/input-amount/use-cases.md +2 -2
- package/docs/components/input-amount-dropdown/use-cases.md +2 -2
- package/docs/components/input-date/overview.md +5 -5
- package/docs/components/input-date/use-cases.md +2 -2
- package/docs/components/input-datepicker/overview.md +7 -7
- package/docs/components/input-datepicker/use-cases.md +2 -2
- package/docs/components/input-email/overview.md +4 -4
- package/docs/components/input-email/use-cases.md +2 -2
- package/docs/components/input-file/overview.md +3 -3
- package/docs/components/input-file/use-cases.md +2 -2
- package/docs/components/input-iban/overview.md +4 -4
- package/docs/components/input-iban/use-cases.md +2 -2
- package/docs/components/input-range/overview.md +4 -4
- package/docs/components/input-range/use-cases.md +2 -2
- package/docs/components/input-stepper/overview.md +3 -3
- package/docs/components/input-stepper/use-cases.md +2 -2
- package/docs/components/input-tel/overview.md +3 -3
- package/docs/components/input-tel/use-cases.md +8 -8
- package/docs/components/input-tel-dropdown/extensions.md +2 -2
- package/docs/components/input-tel-dropdown/overview.md +3 -3
- package/docs/components/input-tel-dropdown/use-cases.md +2 -2
- package/docs/components/listbox/api-table.md +4 -4
- package/docs/components/listbox/overview.md +2 -2
- package/docs/components/listbox/use-cases.md +3 -3
- package/docs/components/menu/extensions.md +2 -2
- package/docs/components/menu/migration.md +2 -2
- package/docs/components/menu/overview.md +2 -2
- package/docs/components/menu/use-cases.md +1 -1
- package/docs/components/pagination/overview.md +2 -2
- package/docs/components/pagination/use-cases.md +2 -2
- package/docs/components/progress-indicator/examples.md +2 -2
- package/docs/components/progress-indicator/overview.md +2 -2
- package/docs/components/radio-group/overview.md +5 -5
- package/docs/components/radio-group/use-cases.md +2 -2
- package/docs/components/select/overview.md +2 -2
- package/docs/components/select/use-cases.md +3 -3
- package/docs/components/select-rich/api-table.md +1 -1
- package/docs/components/select-rich/examples.md +2 -2
- package/docs/components/select-rich/overview.md +2 -2
- package/docs/components/select-rich/use-cases.md +4 -4
- package/docs/components/steps/overview.md +2 -2
- package/docs/components/steps/use-cases.md +2 -2
- package/docs/components/switch/overview.md +2 -2
- package/docs/components/switch/reference.md +2 -2
- package/docs/components/switch/use-cases.md +2 -2
- package/docs/components/tabs/examples.md +3 -3
- package/docs/components/tabs/overview.md +2 -2
- package/docs/components/tabs/use-cases.md +2 -2
- package/docs/components/textarea/overview.md +2 -2
- package/docs/components/textarea/use-cases.md +2 -2
- package/docs/components/tooltip/examples.md +2 -2
- package/docs/components/tooltip/overview.md +2 -2
- package/docs/components/tooltip/use-cases.md +2 -2
- package/docs/fundamentals/index.md +4 -4
- package/docs/fundamentals/node-tools/babel-plugin-extend-docs/index.md +2 -2
- package/docs/fundamentals/node-tools/babel-plugin-extend-docs/overview.md +2 -2
- package/docs/fundamentals/node-tools/providence-analytics/index.md +2 -2
- package/docs/fundamentals/node-tools/providence-analytics/overview.md +2 -2
- package/docs/fundamentals/node-tools/publish-docs/index.md +2 -2
- package/docs/fundamentals/node-tools/publish-docs/overview.md +5 -5
- package/docs/fundamentals/node-tools/remark-extend/index.md +2 -2
- package/docs/fundamentals/node-tools/remark-extend/overview.md +2 -2
- package/docs/fundamentals/node-tools/rocket-preset-extend-lion-docs/index.md +2 -2
- package/docs/fundamentals/node-tools/rocket-preset-extend-lion-docs/overview.md +4 -4
- package/docs/fundamentals/rationales/TypeScript.md +62 -2
- package/docs/fundamentals/rationales/accessibility.md +5 -5
- package/docs/fundamentals/rationales/side-effects.md +2 -2
- package/docs/fundamentals/rationales/versioning.md +2 -2
- package/docs/fundamentals/systems/core/SlotMixin.md +3 -3
- package/docs/fundamentals/systems/core/index.md +2 -2
- package/docs/fundamentals/systems/core/overview.md +3 -3
- package/docs/fundamentals/systems/form/formatting-and-parsing.md +6 -6
- package/docs/fundamentals/systems/form/index.md +2 -2
- package/docs/fundamentals/systems/form/interaction-states.md +2 -2
- package/docs/fundamentals/systems/form/model-value.md +3 -3
- package/docs/fundamentals/systems/form/overview.md +30 -30
- package/docs/fundamentals/systems/form/styling.md +2 -2
- package/docs/fundamentals/systems/form/use-cases.md +2 -2
- package/docs/fundamentals/systems/form/validate.md +4 -4
- package/docs/fundamentals/systems/icon/index.md +2 -2
- package/docs/fundamentals/systems/icon/overview.md +2 -2
- package/docs/fundamentals/systems/localize/dates.md +2 -2
- package/docs/fundamentals/systems/localize/index.md +2 -2
- package/docs/fundamentals/systems/localize/numbers.md +2 -2
- package/docs/fundamentals/systems/localize/overview.md +6 -6
- package/docs/fundamentals/systems/localize/rationale.md +2 -2
- package/docs/fundamentals/systems/localize/text.md +2 -2
- package/docs/fundamentals/systems/localize/use-cases.md +2 -2
- package/docs/fundamentals/systems/overlays/_edge-cases.md +2 -2
- package/docs/fundamentals/systems/overlays/api-table.md +1 -1
- package/docs/fundamentals/systems/overlays/configuration.md +4 -4
- package/docs/fundamentals/systems/overlays/index.md +2 -2
- package/docs/fundamentals/systems/overlays/overview.md +7 -7
- package/docs/fundamentals/systems/overlays/rationale.md +2 -2
- package/docs/fundamentals/systems/overlays/use-cases.md +4 -4
- package/docs/fundamentals/tools/ajax/index.md +2 -2
- package/docs/fundamentals/tools/ajax/overview.md +2 -2
- package/docs/fundamentals/tools/ajax/use-cases.md +2 -2
- package/docs/fundamentals/tools/helpers/action-logger.md +2 -2
- package/docs/fundamentals/tools/helpers/index.md +2 -2
- package/docs/fundamentals/tools/helpers/overview.md +3 -3
- package/docs/fundamentals/tools/singleton-manager/example-complex/index.md +2 -2
- package/docs/fundamentals/tools/singleton-manager/example-fail/index.md +2 -2
- package/docs/fundamentals/tools/singleton-manager/example-success/index.md +2 -2
- package/docs/fundamentals/tools/singleton-manager/index.md +2 -2
- package/docs/fundamentals/tools/singleton-manager/overview.md +6 -6
- package/docs/guides/how-to/create-a-custom-field.md +7 -7
- package/docs/guides/how-to/create-a-form.md +6 -6
- package/docs/guides/how-to/extend-a-native-input.md +4 -4
- package/docs/guides/how-to/get-started.md +2 -2
- package/docs/guides/how-to/index.md +1 -1
- package/docs/guides/index.md +8 -8
- package/docs/guides/principles/definitions-and-terms.md +2 -2
- package/docs/guides/principles/index.md +5 -5
- package/docs/guides/principles/scoped-elements.md +2 -2
- package/docs/guides/principles/styling.md +3 -3
- package/docs/guides/principles/subclasser-apis.md +2 -2
- package/exports/define/lion-accordion.js +0 -1
- package/exports/define/lion-button-reset.js +0 -1
- package/exports/define/lion-button-submit.js +0 -1
- package/exports/define/lion-button.js +0 -1
- package/exports/define/lion-calendar.js +0 -1
- package/exports/define/lion-checkbox-group.js +0 -1
- package/exports/define/lion-checkbox-indeterminate.js +0 -1
- package/exports/define/lion-checkbox.js +0 -1
- package/exports/define/lion-collapsible.js +0 -1
- package/exports/define/lion-combobox.js +0 -1
- package/exports/define/lion-dialog.js +0 -1
- package/exports/define/lion-drawer.js +0 -1
- package/exports/define/lion-field.js +0 -1
- package/exports/define/lion-fieldset.js +0 -1
- package/exports/define/lion-form.js +0 -1
- package/exports/define/lion-icon.js +0 -1
- package/exports/define/lion-input-amount-dropdown.js +0 -1
- package/exports/define/lion-input-amount.js +0 -1
- package/exports/define/lion-input-date.js +0 -1
- package/exports/define/lion-input-datepicker.js +0 -1
- package/exports/define/lion-input-email.js +0 -1
- package/exports/define/lion-input-file.js +0 -1
- package/exports/define/lion-input-iban.js +0 -1
- package/exports/define/lion-input-range.js +0 -1
- package/exports/define/lion-input-stepper.js +0 -1
- package/exports/define/lion-input-tel-dropdown.js +0 -1
- package/exports/define/lion-input-tel.js +0 -1
- package/exports/define/lion-input.js +0 -1
- package/exports/define/lion-item.js +0 -1
- package/exports/define/lion-listbox.js +0 -1
- package/exports/define/lion-menu.js +0 -1
- package/exports/define/lion-menuitem.js +0 -1
- package/exports/define/lion-option.js +0 -1
- package/exports/define/lion-options.js +0 -1
- package/exports/define/lion-pagination.js +0 -1
- package/exports/define/lion-progress-indicator.js +0 -1
- package/exports/define/lion-radio-group.js +0 -1
- package/exports/define/lion-radio.js +0 -1
- package/exports/define/lion-select-invoker.js +0 -1
- package/exports/define/lion-select-rich.js +0 -1
- package/exports/define/lion-select.js +0 -1
- package/exports/define/lion-selected-file-list.js +0 -1
- package/exports/define/lion-step.js +0 -1
- package/exports/define/lion-steps.js +0 -1
- package/exports/define/lion-switch-button.js +0 -1
- package/exports/define/lion-switch.js +0 -1
- package/exports/define/lion-tabs.js +0 -1
- package/exports/define/lion-textarea.js +0 -1
- package/exports/define/lion-tooltip.js +0 -1
- package/exports/define/lion-validation-feedback.js +0 -1
- package/exports/define-helpers/sb-action-logger.js +0 -1
- package/exports/define-helpers/sb-locale-switcher.js +0 -1
- package/exports/form-core.js +0 -8
- package/exports/localize-no-side-effects.js +0 -1
- package/exports/localize.js +0 -2
- package/exports/overlays.js +0 -4
- package/generated/awesome-phonenumber/LICENSE +22 -0
- package/generated/awesome-phonenumber/LICENSE.closure-library +176 -0
- package/generated/awesome-phonenumber/LICENSE.libphonenumber +176 -0
- package/generated/awesome-phonenumber/checksums.json +6 -0
- package/generated/awesome-phonenumber/index-esm.mjs +817 -0
- package/generated/awesome-phonenumber/index.d.ts +227 -0
- package/generated/awesome-phonenumber/index.js +45 -0
- package/generated/awesome-phonenumber/lib/index.js +710 -0
- package/generated/awesome-phonenumber/package.json +9 -0
- package/generated/awesome-phonenumber/provenance.json +13 -0
- package/package.json +38 -15
- package/vscode.html-custom-data.json +5 -5
- package/web-types.json +1 -1
- package/vendor/README.md +0 -61
- package/vendor/awesome-phonenumber-7.9.0-tlouisse.libphonenumber-9.0.41.tgz +0 -0
|
@@ -46,7 +46,6 @@ function rearrangeNodes({ wrappingDialogNodeL1, contentWrapperNodeL2, contentNod
|
|
|
46
46
|
// We could be initialized via a directive (in offline dom). It's important that we know about the parents,
|
|
47
47
|
// as we cannot deal with single content nodes
|
|
48
48
|
const hasContentNodeAttachmentPoints = Boolean(contentNodeL3.parentNode);
|
|
49
|
-
|
|
50
49
|
if (!hasLegacyMethodOfProvidingWrapperNode && !hasContentNodeAttachmentPoints) {
|
|
51
50
|
throw new Error(
|
|
52
51
|
'[OverlayController] Could not find a render target, makes sure contentNode has a parent element (or contentWrapperNode is connected)',
|
|
@@ -59,7 +58,6 @@ function rearrangeNodes({ wrappingDialogNodeL1, contentWrapperNodeL2, contentNod
|
|
|
59
58
|
// Moving the wrapper can change slot assignment, so capture the node we relocate up front
|
|
60
59
|
// and restore that same node during cleanup.
|
|
61
60
|
const contentNodeOrSlot = contentNodeL3.assignedSlot || contentNodeL3;
|
|
62
|
-
|
|
63
61
|
if (hasLegacyMethodOfProvidingWrapperNode) {
|
|
64
62
|
// This is the case when contentWrapperNode (living in shadow dom, wrapping <slot name="my-content-outlet">) is already provided via controller.
|
|
65
63
|
parentElement = contentWrapperNodeL2.parentElement || contentWrapperNodeL2.getRootNode();
|
|
@@ -98,7 +96,6 @@ function rearrangeNodes({ wrappingDialogNodeL1, contentWrapperNodeL2, contentNod
|
|
|
98
96
|
* ```
|
|
99
97
|
*/
|
|
100
98
|
parentElement.insertBefore(wrappingDialogNodeL1, tempMarker);
|
|
101
|
-
|
|
102
99
|
return function cleanup() {
|
|
103
100
|
if (hasLegacyMethodOfProvidingWrapperNode) {
|
|
104
101
|
parentElement?.insertBefore(contentWrapperNodeL2, tempMarker);
|
|
@@ -109,7 +106,6 @@ function rearrangeNodes({ wrappingDialogNodeL1, contentWrapperNodeL2, contentNod
|
|
|
109
106
|
}
|
|
110
107
|
}
|
|
111
108
|
parentElement?.removeChild(tempMarker);
|
|
112
|
-
|
|
113
109
|
if (parentElement.contains(wrappingDialogNodeL1)) {
|
|
114
110
|
parentElement?.removeChild(wrappingDialogNodeL1);
|
|
115
111
|
}
|
|
@@ -121,9 +117,8 @@ function rearrangeNodes({ wrappingDialogNodeL1, contentWrapperNodeL2, contentNod
|
|
|
121
117
|
*/
|
|
122
118
|
async function preloadPopper() {
|
|
123
119
|
// @ts-ignore [external]: import complains about untyped module, but we typecast it ourselves
|
|
124
|
-
return /** @type {* & Promise<PopperModule>} */
|
|
120
|
+
return /** @type {* & Promise<PopperModule>} */ import('@popperjs/core/dist/esm/popper.js');
|
|
125
121
|
}
|
|
126
|
-
|
|
127
122
|
const childDialogsClosedInEventLoopWeakmap = new WeakMap();
|
|
128
123
|
|
|
129
124
|
/**
|
|
@@ -208,12 +203,10 @@ export class OverlayController extends EventTarget {
|
|
|
208
203
|
super();
|
|
209
204
|
this.manager = manager;
|
|
210
205
|
this.__sharedConfig = config;
|
|
211
|
-
|
|
212
206
|
this.__activeElementRightBeforeHide = null;
|
|
213
207
|
|
|
214
208
|
/** @type {OverlayConfig} */
|
|
215
209
|
this.config = {};
|
|
216
|
-
|
|
217
210
|
this._defaultConfig = {
|
|
218
211
|
placementMode: undefined,
|
|
219
212
|
contentNode: config.contentNode,
|
|
@@ -280,13 +273,11 @@ export class OverlayController extends EventTarget {
|
|
|
280
273
|
// @ts-ignore - hideVisually is an extension property
|
|
281
274
|
hideVisually: false,
|
|
282
275
|
requireConnectedNodes: true,
|
|
283
|
-
|
|
284
276
|
// hides children overlays when parent is closed...
|
|
285
277
|
syncChildrenCloseState: false,
|
|
286
278
|
// // In next major, we remove this prop. Now we disable it for backwards compatibility and enable it in the places we need it internally
|
|
287
279
|
// _shouldTeardownDomStructure: false,
|
|
288
280
|
};
|
|
289
|
-
|
|
290
281
|
this._contentId = `overlay-content--${Math.random().toString(36).slice(2, 10)}`;
|
|
291
282
|
this.__originalAttrs = new Map();
|
|
292
283
|
/** @private */
|
|
@@ -297,7 +288,6 @@ export class OverlayController extends EventTarget {
|
|
|
297
288
|
this.__cancelHandler = this.__cancelHandler.bind(this);
|
|
298
289
|
this.__escKeyHandlerCalled = false;
|
|
299
290
|
}
|
|
300
|
-
|
|
301
291
|
__hasSetup = false;
|
|
302
292
|
|
|
303
293
|
/**
|
|
@@ -309,11 +299,16 @@ export class OverlayController extends EventTarget {
|
|
|
309
299
|
}
|
|
310
300
|
|
|
311
301
|
/**
|
|
312
|
-
* The
|
|
302
|
+
* The outer wrapper while set up, or the original content after teardown.
|
|
303
|
+
* Keep the fallback for existing clients that remove content after teardown;
|
|
304
|
+
* changing or removing it is deferred to a future breaking release.
|
|
313
305
|
* @type {HTMLDialogElement | HTMLDivElement}
|
|
314
306
|
*/
|
|
315
307
|
get content() {
|
|
316
|
-
return
|
|
308
|
+
return (
|
|
309
|
+
/** @type {HTMLDialogElement | HTMLDivElement} */ this.__wrappingDialogNode ||
|
|
310
|
+
this.contentNode
|
|
311
|
+
);
|
|
317
312
|
}
|
|
318
313
|
|
|
319
314
|
/**
|
|
@@ -339,7 +334,7 @@ export class OverlayController extends EventTarget {
|
|
|
339
334
|
* @type {HTMLElement}
|
|
340
335
|
*/
|
|
341
336
|
get referenceNode() {
|
|
342
|
-
return /** @type {HTMLElement} */
|
|
337
|
+
return /** @type {HTMLElement} */ this.config?.referenceNode;
|
|
343
338
|
}
|
|
344
339
|
|
|
345
340
|
/**
|
|
@@ -347,7 +342,7 @@ export class OverlayController extends EventTarget {
|
|
|
347
342
|
* @type {HTMLElement}
|
|
348
343
|
*/
|
|
349
344
|
get contentNode() {
|
|
350
|
-
return /** @type {HTMLElement} */
|
|
345
|
+
return /** @type {HTMLElement} */ this.config?.contentNode;
|
|
351
346
|
}
|
|
352
347
|
|
|
353
348
|
/**
|
|
@@ -358,9 +353,7 @@ export class OverlayController extends EventTarget {
|
|
|
358
353
|
* @type {HTMLElement}
|
|
359
354
|
*/
|
|
360
355
|
get contentWrapperNode() {
|
|
361
|
-
return /** @type {HTMLElement} */
|
|
362
|
-
this.__contentWrapperNode || this.config?.contentWrapperNode
|
|
363
|
-
);
|
|
356
|
+
return /** @type {HTMLElement} */ this.__contentWrapperNode || this.config?.contentWrapperNode;
|
|
364
357
|
}
|
|
365
358
|
|
|
366
359
|
/**
|
|
@@ -369,7 +362,7 @@ export class OverlayController extends EventTarget {
|
|
|
369
362
|
* @type {HTMLElement}
|
|
370
363
|
*/
|
|
371
364
|
get backdropNode() {
|
|
372
|
-
return /** @type {HTMLElement} */
|
|
365
|
+
return /** @type {HTMLElement} */ this.__backdropNode || this.config?.backdropNode;
|
|
373
366
|
}
|
|
374
367
|
|
|
375
368
|
/**
|
|
@@ -377,8 +370,9 @@ export class OverlayController extends EventTarget {
|
|
|
377
370
|
* @type {HTMLElement}
|
|
378
371
|
*/
|
|
379
372
|
get elementToFocusAfterHide() {
|
|
380
|
-
return
|
|
381
|
-
this.__elementToFocusAfterHide ||
|
|
373
|
+
return (
|
|
374
|
+
/** @type {HTMLElement} */ this.__elementToFocusAfterHide ||
|
|
375
|
+
this.config?.elementToFocusAfterHide
|
|
382
376
|
);
|
|
383
377
|
}
|
|
384
378
|
|
|
@@ -387,7 +381,7 @@ export class OverlayController extends EventTarget {
|
|
|
387
381
|
* @type {boolean}
|
|
388
382
|
*/
|
|
389
383
|
get hasBackdrop() {
|
|
390
|
-
return /** @type {boolean} */
|
|
384
|
+
return /** @type {boolean} */ !!this.backdropNode || this.config?.hasBackdrop;
|
|
391
385
|
}
|
|
392
386
|
|
|
393
387
|
/**
|
|
@@ -395,7 +389,7 @@ export class OverlayController extends EventTarget {
|
|
|
395
389
|
* @type {boolean}
|
|
396
390
|
*/
|
|
397
391
|
get isBlocking() {
|
|
398
|
-
return /** @type {boolean} */
|
|
392
|
+
return /** @type {boolean} */ this.config?.isBlocking;
|
|
399
393
|
}
|
|
400
394
|
|
|
401
395
|
/**
|
|
@@ -403,7 +397,7 @@ export class OverlayController extends EventTarget {
|
|
|
403
397
|
* @type {boolean}
|
|
404
398
|
*/
|
|
405
399
|
get preventsScroll() {
|
|
406
|
-
return /** @type {boolean} */
|
|
400
|
+
return /** @type {boolean} */ this.config?.preventsScroll;
|
|
407
401
|
}
|
|
408
402
|
|
|
409
403
|
/**
|
|
@@ -411,7 +405,7 @@ export class OverlayController extends EventTarget {
|
|
|
411
405
|
* @type {boolean}
|
|
412
406
|
*/
|
|
413
407
|
get trapsKeyboardFocus() {
|
|
414
|
-
return /** @type {boolean} */
|
|
408
|
+
return /** @type {boolean} */ this.config?.trapsKeyboardFocus;
|
|
415
409
|
}
|
|
416
410
|
|
|
417
411
|
/**
|
|
@@ -419,7 +413,7 @@ export class OverlayController extends EventTarget {
|
|
|
419
413
|
* @type {boolean}
|
|
420
414
|
*/
|
|
421
415
|
get hidesOnEsc() {
|
|
422
|
-
return /** @type {boolean} */
|
|
416
|
+
return /** @type {boolean} */ this.config?.hidesOnEsc;
|
|
423
417
|
}
|
|
424
418
|
|
|
425
419
|
/**
|
|
@@ -427,7 +421,7 @@ export class OverlayController extends EventTarget {
|
|
|
427
421
|
* @type {boolean}
|
|
428
422
|
*/
|
|
429
423
|
get hidesOnOutsideClick() {
|
|
430
|
-
return /** @type {boolean} */
|
|
424
|
+
return /** @type {boolean} */ this.config?.hidesOnOutsideClick;
|
|
431
425
|
}
|
|
432
426
|
|
|
433
427
|
/**
|
|
@@ -435,7 +429,7 @@ export class OverlayController extends EventTarget {
|
|
|
435
429
|
* @type {boolean}
|
|
436
430
|
*/
|
|
437
431
|
get hidesOnOutsideEsc() {
|
|
438
|
-
return /** @type {boolean} */
|
|
432
|
+
return /** @type {boolean} */ this.config?.hidesOnOutsideEsc;
|
|
439
433
|
}
|
|
440
434
|
|
|
441
435
|
/**
|
|
@@ -462,7 +456,7 @@ export class OverlayController extends EventTarget {
|
|
|
462
456
|
* @type {boolean}
|
|
463
457
|
*/
|
|
464
458
|
get handlesAccessibility() {
|
|
465
|
-
return /** @type {boolean} */
|
|
459
|
+
return /** @type {boolean} */ this.config?.handlesAccessibility;
|
|
466
460
|
}
|
|
467
461
|
|
|
468
462
|
/**
|
|
@@ -471,7 +465,7 @@ export class OverlayController extends EventTarget {
|
|
|
471
465
|
* @type {boolean}
|
|
472
466
|
*/
|
|
473
467
|
get isTooltip() {
|
|
474
|
-
return /** @type {boolean} */
|
|
468
|
+
return /** @type {boolean} */ this.config?.isTooltip;
|
|
475
469
|
}
|
|
476
470
|
|
|
477
471
|
/**
|
|
@@ -479,7 +473,7 @@ export class OverlayController extends EventTarget {
|
|
|
479
473
|
* to communicate an important message and require a response.
|
|
480
474
|
*/
|
|
481
475
|
get isAlertDialog() {
|
|
482
|
-
return /** @type {boolean} */
|
|
476
|
+
return /** @type {boolean} */ this.config?.isAlertDialog;
|
|
483
477
|
}
|
|
484
478
|
|
|
485
479
|
/**
|
|
@@ -496,7 +490,7 @@ export class OverlayController extends EventTarget {
|
|
|
496
490
|
* @type {PopperOptions}
|
|
497
491
|
*/
|
|
498
492
|
get popperConfig() {
|
|
499
|
-
return /** @type {PopperOptions} */
|
|
493
|
+
return /** @type {PopperOptions} */ this.config?.popperConfig;
|
|
500
494
|
}
|
|
501
495
|
|
|
502
496
|
/**
|
|
@@ -504,11 +498,10 @@ export class OverlayController extends EventTarget {
|
|
|
504
498
|
* @type {ViewportConfig}
|
|
505
499
|
*/
|
|
506
500
|
get viewportConfig() {
|
|
507
|
-
return /** @type {ViewportConfig} */
|
|
501
|
+
return /** @type {ViewportConfig} */ this.config?.viewportConfig;
|
|
508
502
|
}
|
|
509
|
-
|
|
510
503
|
get visibilityTriggerFunction() {
|
|
511
|
-
return /** @type {function} */
|
|
504
|
+
return /** @type {function} */ this.config?.visibilityTriggerFunction;
|
|
512
505
|
}
|
|
513
506
|
|
|
514
507
|
/**
|
|
@@ -551,9 +544,12 @@ export class OverlayController extends EventTarget {
|
|
|
551
544
|
|
|
552
545
|
/** @type {OverlayConfig} */
|
|
553
546
|
const newConfig = {
|
|
554
|
-
...this._defaultConfig,
|
|
555
|
-
|
|
556
|
-
...
|
|
547
|
+
...this._defaultConfig,
|
|
548
|
+
// our basic ingredients
|
|
549
|
+
...this.__sharedConfig,
|
|
550
|
+
// the initial configured overlayController
|
|
551
|
+
...cfgToAdd,
|
|
552
|
+
// the added config
|
|
557
553
|
popperConfig: {
|
|
558
554
|
...(this._defaultConfig.popperConfig || {}),
|
|
559
555
|
...(this.__sharedConfig.popperConfig || {}),
|
|
@@ -565,27 +561,23 @@ export class OverlayController extends EventTarget {
|
|
|
565
561
|
],
|
|
566
562
|
},
|
|
567
563
|
};
|
|
568
|
-
|
|
569
564
|
const shouldUpdate = !this.__hasSetup || !isEqualConfig(prevConfig, newConfig);
|
|
570
565
|
if (!shouldUpdate) return;
|
|
571
566
|
// Teardown all previous configs
|
|
572
567
|
|
|
573
568
|
this.teardown();
|
|
574
|
-
|
|
575
569
|
this.config = newConfig;
|
|
576
570
|
|
|
577
571
|
/** @private */
|
|
578
572
|
this.__validateConfiguration(this.config);
|
|
579
573
|
/** @protected */
|
|
580
574
|
this._init();
|
|
581
|
-
|
|
582
575
|
if (!this.#isRegisteredOnManager()) {
|
|
583
576
|
this.manager.add(this);
|
|
584
577
|
}
|
|
585
578
|
}
|
|
586
|
-
|
|
587
579
|
#isRegisteredOnManager() {
|
|
588
|
-
return Boolean(this.manager.list.find(ctrl => this === ctrl));
|
|
580
|
+
return Boolean(this.manager.list.find((ctrl) => this === ctrl));
|
|
589
581
|
}
|
|
590
582
|
|
|
591
583
|
/**
|
|
@@ -635,33 +627,32 @@ export class OverlayController extends EventTarget {
|
|
|
635
627
|
this.contentWrapperNode.removeAttribute('style');
|
|
636
628
|
this.contentWrapperNode.removeAttribute('class');
|
|
637
629
|
}
|
|
638
|
-
|
|
639
630
|
if (this.placementMode === 'local') {
|
|
640
631
|
// Lazily load Popper as soon as the first local overlay is used...
|
|
641
632
|
if (!OverlayController.popperModule) {
|
|
642
633
|
OverlayController.popperModule = preloadPopper();
|
|
643
634
|
}
|
|
644
635
|
}
|
|
645
|
-
this.__handleOverlayStyles({
|
|
646
|
-
|
|
636
|
+
this.__handleOverlayStyles({
|
|
637
|
+
phase: 'init',
|
|
638
|
+
});
|
|
639
|
+
this._handleFeatures({
|
|
640
|
+
phase: 'init',
|
|
641
|
+
});
|
|
647
642
|
|
|
648
643
|
/** @private */
|
|
649
644
|
this.__elementToFocusAfterHide = undefined;
|
|
650
|
-
|
|
651
645
|
this.contentNode.dataset.content = '';
|
|
652
646
|
|
|
653
647
|
// Use event delegation to listen for clicks on close buttons...
|
|
654
648
|
this.contentNode.addEventListener('click', this.#hideOnCloseButtonClick);
|
|
655
|
-
|
|
656
649
|
this.__hasSetup = true;
|
|
657
650
|
}
|
|
658
|
-
|
|
659
651
|
#hideOnCloseButtonClick = (/** @type {{ target: any; }} */ ev) => {
|
|
660
652
|
const isOurCloseButton =
|
|
661
653
|
ev.target.hasAttribute('data-close') &&
|
|
662
654
|
deepClosest(ev.target, '[data-content]') === this.contentNode;
|
|
663
655
|
if (!isOurCloseButton) return;
|
|
664
|
-
|
|
665
656
|
this.hide();
|
|
666
657
|
};
|
|
667
658
|
|
|
@@ -670,11 +661,13 @@ export class OverlayController extends EventTarget {
|
|
|
670
661
|
* @private
|
|
671
662
|
*/
|
|
672
663
|
__handleOverlayStyles({ phase }) {
|
|
673
|
-
const rootNode = /** @type {ShadowRoot} */
|
|
664
|
+
const rootNode = /** @type {ShadowRoot} */ this.contentWrapperNode?.getRootNode();
|
|
674
665
|
if (phase === 'init') {
|
|
675
666
|
_adoptStyleUtils.adoptStyle(rootNode, overlayShadowDomStyle);
|
|
676
667
|
} else if (phase === 'teardown') {
|
|
677
|
-
_adoptStyleUtils.adoptStyle(rootNode, overlayShadowDomStyle, {
|
|
668
|
+
_adoptStyleUtils.adoptStyle(rootNode, overlayShadowDomStyle, {
|
|
669
|
+
teardown: true,
|
|
670
|
+
});
|
|
678
671
|
}
|
|
679
672
|
}
|
|
680
673
|
|
|
@@ -739,7 +732,6 @@ export class OverlayController extends EventTarget {
|
|
|
739
732
|
this.contentWrapperNode.setAttribute('data-id', 'content-wrapper');
|
|
740
733
|
// 'hack' that makes sure popperjs (that is applied one level lower) works correctly in deeply nested shadow roots
|
|
741
734
|
this.contentWrapperNode.style.transform = 'translateZ(0px)';
|
|
742
|
-
|
|
743
735
|
this.__rearrangeNodesCleanup = rearrangeNodes({
|
|
744
736
|
wrappingDialogNodeL1: wrappingDialogElement,
|
|
745
737
|
contentWrapperNodeL2: this.contentWrapperNode,
|
|
@@ -747,7 +739,6 @@ export class OverlayController extends EventTarget {
|
|
|
747
739
|
// requireConnectedNodes: Boolean(this.config.requireConnectedNodes),
|
|
748
740
|
});
|
|
749
741
|
wrappingDialogElement.open = true;
|
|
750
|
-
|
|
751
742
|
if (this.isTooltip) {
|
|
752
743
|
// needed to prevent tooltip getting focus in Safari and Firefox
|
|
753
744
|
wrappingDialogElement.setAttribute('tabindex', '-1');
|
|
@@ -783,10 +774,10 @@ export class OverlayController extends EventTarget {
|
|
|
783
774
|
}
|
|
784
775
|
},
|
|
785
776
|
);
|
|
786
|
-
wrappingDialogElement.addEventListener('cancel', event => {
|
|
777
|
+
wrappingDialogElement.addEventListener('cancel', (event) => {
|
|
787
778
|
event.stopPropagation();
|
|
788
779
|
});
|
|
789
|
-
wrappingDialogElement.addEventListener('close', event => {
|
|
780
|
+
wrappingDialogElement.addEventListener('close', (event) => {
|
|
790
781
|
event.stopPropagation();
|
|
791
782
|
});
|
|
792
783
|
}
|
|
@@ -796,17 +787,18 @@ export class OverlayController extends EventTarget {
|
|
|
796
787
|
this.__wrappingDialogNode = this.contentNode;
|
|
797
788
|
}
|
|
798
789
|
}
|
|
799
|
-
|
|
800
790
|
__initVisibility() {
|
|
801
791
|
// TODO: allow defaultOpen?
|
|
802
|
-
/** @type {HTMLDialogElement} */
|
|
792
|
+
/** @type {HTMLDialogElement} */
|
|
793
|
+
this.__wrappingDialogNode.style.display = 'none';
|
|
803
794
|
}
|
|
804
795
|
|
|
805
796
|
// Clean up the DOM structure, leaving it as we found it.
|
|
806
797
|
// TODO: __teardownContentDomStructure method... use Resettable (rename ro Restorable) found in VisibilitToggleCtrl
|
|
807
798
|
__teardownVisibility() {
|
|
808
799
|
// TODO: full structure. For now we just reset display prop...
|
|
809
|
-
/** @type {HTMLDialogElement} */
|
|
800
|
+
/** @type {HTMLDialogElement} */
|
|
801
|
+
this.__wrappingDialogNode.style.display = '';
|
|
810
802
|
}
|
|
811
803
|
|
|
812
804
|
/**
|
|
@@ -818,7 +810,6 @@ export class OverlayController extends EventTarget {
|
|
|
818
810
|
if (this.placementMode !== 'local') {
|
|
819
811
|
return;
|
|
820
812
|
}
|
|
821
|
-
|
|
822
813
|
if (phase === 'setup') {
|
|
823
814
|
const zIndexNumber = Number(getComputedStyle(this.contentNode).zIndex);
|
|
824
815
|
if (zIndexNumber < 1 || Number.isNaN(zIndexNumber)) {
|
|
@@ -835,7 +826,6 @@ export class OverlayController extends EventTarget {
|
|
|
835
826
|
if (phase === 'init') {
|
|
836
827
|
this.__storeOriginalAttrs(this.contentNode, ['role', 'id']);
|
|
837
828
|
const isModal = this.trapsKeyboardFocus;
|
|
838
|
-
|
|
839
829
|
if (this.invokerNode) {
|
|
840
830
|
const attributesToStore = ['aria-labelledby', 'aria-describedby'];
|
|
841
831
|
if (!isModal) {
|
|
@@ -843,7 +833,6 @@ export class OverlayController extends EventTarget {
|
|
|
843
833
|
}
|
|
844
834
|
this.__storeOriginalAttrs(this.invokerNode, attributesToStore);
|
|
845
835
|
}
|
|
846
|
-
|
|
847
836
|
if (!this.contentNode.id) {
|
|
848
837
|
this.contentNode.setAttribute('id', this._contentId);
|
|
849
838
|
}
|
|
@@ -879,7 +868,7 @@ export class OverlayController extends EventTarget {
|
|
|
879
868
|
__storeOriginalAttrs(node, attrs) {
|
|
880
869
|
/** @type {Record<string, any>} */
|
|
881
870
|
const attrMap = {};
|
|
882
|
-
attrs.forEach(attrName => {
|
|
871
|
+
attrs.forEach((attrName) => {
|
|
883
872
|
attrMap[attrName] = node.getAttribute(attrName);
|
|
884
873
|
});
|
|
885
874
|
this.__originalAttrs.set(node, attrMap);
|
|
@@ -898,7 +887,6 @@ export class OverlayController extends EventTarget {
|
|
|
898
887
|
}
|
|
899
888
|
this.__originalAttrs.clear();
|
|
900
889
|
}
|
|
901
|
-
|
|
902
890
|
get isShown() {
|
|
903
891
|
return Boolean(this.__wrappingDialogNode && this.__wrappingDialogNode.style.display !== 'none');
|
|
904
892
|
}
|
|
@@ -914,7 +902,7 @@ export class OverlayController extends EventTarget {
|
|
|
914
902
|
if (this._showComplete) {
|
|
915
903
|
await this._showComplete;
|
|
916
904
|
}
|
|
917
|
-
this._showComplete = new Promise(resolve => {
|
|
905
|
+
this._showComplete = new Promise((resolve) => {
|
|
918
906
|
this._showResolve = resolve;
|
|
919
907
|
});
|
|
920
908
|
|
|
@@ -924,18 +912,17 @@ export class OverlayController extends EventTarget {
|
|
|
924
912
|
if (!this.__wrappingDialogNode) {
|
|
925
913
|
this._init();
|
|
926
914
|
}
|
|
927
|
-
|
|
928
915
|
if (this.manager) {
|
|
929
916
|
this.manager.show(this);
|
|
930
917
|
}
|
|
931
|
-
|
|
932
918
|
if (this.isShown) {
|
|
933
919
|
/** @type {function} */
|
|
934
|
-
|
|
920
|
+
this._showResolve();
|
|
935
921
|
return;
|
|
936
922
|
}
|
|
937
|
-
|
|
938
|
-
|
|
923
|
+
const event = new CustomEvent('before-show', {
|
|
924
|
+
cancelable: true,
|
|
925
|
+
});
|
|
939
926
|
this.dispatchEvent(event);
|
|
940
927
|
if (!event.defaultPrevented) {
|
|
941
928
|
if ('HTMLDialogElement' in window && this.__wrappingDialogNode instanceof HTMLDialogElement) {
|
|
@@ -944,10 +931,18 @@ export class OverlayController extends EventTarget {
|
|
|
944
931
|
|
|
945
932
|
// @ts-ignore
|
|
946
933
|
this.__wrappingDialogNode.style.display = '';
|
|
947
|
-
this._keepBodySize({
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
await this.
|
|
934
|
+
this._keepBodySize({
|
|
935
|
+
phase: 'before-show',
|
|
936
|
+
});
|
|
937
|
+
await this._handleFeatures({
|
|
938
|
+
phase: 'show',
|
|
939
|
+
});
|
|
940
|
+
this._keepBodySize({
|
|
941
|
+
phase: 'show',
|
|
942
|
+
});
|
|
943
|
+
await this._handlePosition({
|
|
944
|
+
phase: 'show',
|
|
945
|
+
});
|
|
951
946
|
this.__elementToFocusAfterHide = elementToFocusAfterHide;
|
|
952
947
|
this.dispatchEvent(new Event('show'));
|
|
953
948
|
await this._transitionShow({
|
|
@@ -958,13 +953,14 @@ export class OverlayController extends EventTarget {
|
|
|
958
953
|
|
|
959
954
|
// a styling/debug hook for open state
|
|
960
955
|
this.contentNode.setAttribute('data-open', '');
|
|
961
|
-
|
|
962
956
|
if (this.config.elementToFocusOnShow) {
|
|
963
|
-
this.contentNode.focus({
|
|
957
|
+
this.contentNode.focus({
|
|
958
|
+
preventScroll: true,
|
|
959
|
+
});
|
|
964
960
|
}
|
|
965
961
|
|
|
966
962
|
/** @type {function} */
|
|
967
|
-
|
|
963
|
+
this._showResolve();
|
|
968
964
|
}
|
|
969
965
|
|
|
970
966
|
/**
|
|
@@ -974,7 +970,6 @@ export class OverlayController extends EventTarget {
|
|
|
974
970
|
async _handlePosition({ phase }) {
|
|
975
971
|
if (this.placementMode === 'global') {
|
|
976
972
|
const placementClass = `overlays__overlay-container--${this.viewportConfig.placement}`;
|
|
977
|
-
|
|
978
973
|
if (phase === 'show') {
|
|
979
974
|
this.contentWrapperNode.classList.add('overlays__overlay-container');
|
|
980
975
|
this.contentWrapperNode.classList.add(placementClass);
|
|
@@ -993,7 +988,8 @@ export class OverlayController extends EventTarget {
|
|
|
993
988
|
* This is however necessary for initial placement.
|
|
994
989
|
*/
|
|
995
990
|
await this.__createPopperInstance();
|
|
996
|
-
/** @type {import('@popperjs/core').Instance} */
|
|
991
|
+
/** @type {import('@popperjs/core').Instance} */
|
|
992
|
+
this._popper.forceUpdate();
|
|
997
993
|
}
|
|
998
994
|
// N.B. leave it up to the user if placementMode === 'custom'
|
|
999
995
|
}
|
|
@@ -1004,8 +1000,9 @@ export class OverlayController extends EventTarget {
|
|
|
1004
1000
|
*/
|
|
1005
1001
|
_keepBodySize({ phase }) {
|
|
1006
1002
|
if (!this.preventsScroll) return;
|
|
1007
|
-
|
|
1008
|
-
|
|
1003
|
+
this.manager.requestToKeepBodySize({
|
|
1004
|
+
phase,
|
|
1005
|
+
});
|
|
1009
1006
|
}
|
|
1010
1007
|
|
|
1011
1008
|
/**
|
|
@@ -1015,8 +1012,7 @@ export class OverlayController extends EventTarget {
|
|
|
1015
1012
|
async hide() {
|
|
1016
1013
|
// Function like a no-op for dynamic edge cases...
|
|
1017
1014
|
if (!this.config.isActivated) return;
|
|
1018
|
-
|
|
1019
|
-
this._hideComplete = new Promise(resolve => {
|
|
1015
|
+
this._hideComplete = new Promise((resolve) => {
|
|
1020
1016
|
this._hideResolve = resolve;
|
|
1021
1017
|
});
|
|
1022
1018
|
|
|
@@ -1024,39 +1020,40 @@ export class OverlayController extends EventTarget {
|
|
|
1024
1020
|
// while the dialog was open.
|
|
1025
1021
|
// We need this in the _restoreFocus method to determine if we should focus this.elementToFocusAfterHide when the
|
|
1026
1022
|
// dialog is closed or keep focus on the element that the user deliberately gave focus
|
|
1027
|
-
this.__activeElementRightBeforeHide =
|
|
1028
|
-
this.contentNode.getRootNode()
|
|
1029
|
-
).activeElement;
|
|
1030
|
-
|
|
1023
|
+
this.__activeElementRightBeforeHide =
|
|
1024
|
+
/** @type {ShadowRoot} */ this.contentNode.getRootNode().activeElement;
|
|
1031
1025
|
if (this.manager && this.#isRegisteredOnManager()) {
|
|
1032
1026
|
this.manager.hide(this);
|
|
1033
1027
|
}
|
|
1034
|
-
|
|
1035
1028
|
if (!this.isShown) {
|
|
1036
|
-
/** @type {function} */
|
|
1029
|
+
/** @type {function} */ this._hideResolve();
|
|
1037
1030
|
return;
|
|
1038
1031
|
}
|
|
1039
|
-
|
|
1040
|
-
|
|
1032
|
+
const event = new CustomEvent('before-hide', {
|
|
1033
|
+
cancelable: true,
|
|
1034
|
+
});
|
|
1041
1035
|
this.dispatchEvent(event);
|
|
1042
1036
|
if (!event.defaultPrevented) {
|
|
1043
1037
|
await this._transitionHide({
|
|
1044
1038
|
backdropNode: this.backdropNode,
|
|
1045
1039
|
contentNode: this.contentNode,
|
|
1046
1040
|
});
|
|
1047
|
-
|
|
1048
1041
|
if ('HTMLDialogElement' in window && this.__wrappingDialogNode instanceof HTMLDialogElement) {
|
|
1049
1042
|
this.__wrappingDialogNode.close();
|
|
1050
1043
|
}
|
|
1051
1044
|
// @ts-ignore
|
|
1052
1045
|
this.__wrappingDialogNode.style.display = 'none';
|
|
1053
|
-
this._handleFeatures({
|
|
1054
|
-
|
|
1046
|
+
this._handleFeatures({
|
|
1047
|
+
phase: 'hide',
|
|
1048
|
+
});
|
|
1049
|
+
this._keepBodySize({
|
|
1050
|
+
phase: 'hide',
|
|
1051
|
+
});
|
|
1055
1052
|
this.dispatchEvent(new Event('hide'));
|
|
1056
1053
|
this._restoreFocus();
|
|
1057
1054
|
}
|
|
1058
|
-
/** @type {function} */
|
|
1059
|
-
|
|
1055
|
+
/** @type {function} */
|
|
1056
|
+
this._hideResolve();
|
|
1060
1057
|
this.contentNode.removeAttribute('data-open');
|
|
1061
1058
|
}
|
|
1062
1059
|
|
|
@@ -1076,8 +1073,13 @@ export class OverlayController extends EventTarget {
|
|
|
1076
1073
|
// eslint-disable-next-line class-methods-use-this, no-empty-function, no-unused-vars
|
|
1077
1074
|
async _transitionHide({ backdropNode, contentNode }) {
|
|
1078
1075
|
// `this.transitionHide` is a hook for our users
|
|
1079
|
-
await this.transitionHide({
|
|
1080
|
-
|
|
1076
|
+
await this.transitionHide({
|
|
1077
|
+
backdropNode,
|
|
1078
|
+
contentNode,
|
|
1079
|
+
});
|
|
1080
|
+
this._handlePosition({
|
|
1081
|
+
phase: 'hide',
|
|
1082
|
+
});
|
|
1081
1083
|
if (!backdropNode) {
|
|
1082
1084
|
return;
|
|
1083
1085
|
}
|
|
@@ -1099,8 +1101,10 @@ export class OverlayController extends EventTarget {
|
|
|
1099
1101
|
// eslint-disable-next-line class-methods-use-this, no-empty-function, no-unused-vars
|
|
1100
1102
|
async _transitionShow(showConfig) {
|
|
1101
1103
|
// `this.transitionShow` is a hook for our users
|
|
1102
|
-
await this.transitionShow({
|
|
1103
|
-
|
|
1104
|
+
await this.transitionShow({
|
|
1105
|
+
backdropNode: this.backdropNode,
|
|
1106
|
+
contentNode: this.contentNode,
|
|
1107
|
+
});
|
|
1104
1108
|
if (showConfig.backdropNode) {
|
|
1105
1109
|
showConfig.backdropNode.classList.add(`overlays__backdrop--animation-in`);
|
|
1106
1110
|
}
|
|
@@ -1113,19 +1117,18 @@ export class OverlayController extends EventTarget {
|
|
|
1113
1117
|
const weStillOwnActiveElement =
|
|
1114
1118
|
this.__activeElementRightBeforeHide instanceof HTMLElement &&
|
|
1115
1119
|
this.contentNode.contains(this.__activeElementRightBeforeHide);
|
|
1116
|
-
|
|
1117
1120
|
if (!weStillOwnActiveElement) {
|
|
1118
1121
|
return;
|
|
1119
1122
|
}
|
|
1120
|
-
|
|
1121
1123
|
if (this.elementToFocusAfterHide instanceof HTMLElement) {
|
|
1122
1124
|
this.elementToFocusAfterHide.focus();
|
|
1123
|
-
this.elementToFocusAfterHide.scrollIntoView({
|
|
1125
|
+
this.elementToFocusAfterHide.scrollIntoView({
|
|
1126
|
+
block: 'nearest',
|
|
1127
|
+
});
|
|
1124
1128
|
} else {
|
|
1125
|
-
/** @type {HTMLElement} */
|
|
1129
|
+
/** @type {HTMLElement} */ this.__activeElementRightBeforeHide.blur();
|
|
1126
1130
|
}
|
|
1127
1131
|
}
|
|
1128
|
-
|
|
1129
1132
|
async toggle() {
|
|
1130
1133
|
return this.isShown ? this.hide() : this.show();
|
|
1131
1134
|
}
|
|
@@ -1136,43 +1139,66 @@ export class OverlayController extends EventTarget {
|
|
|
1136
1139
|
* @protected
|
|
1137
1140
|
*/
|
|
1138
1141
|
_handleFeatures({ phase }) {
|
|
1139
|
-
this._handleZIndex({
|
|
1140
|
-
|
|
1142
|
+
this._handleZIndex({
|
|
1143
|
+
phase,
|
|
1144
|
+
});
|
|
1141
1145
|
if (this.preventsScroll) {
|
|
1142
|
-
this._handlePreventsScroll({
|
|
1146
|
+
this._handlePreventsScroll({
|
|
1147
|
+
phase,
|
|
1148
|
+
});
|
|
1143
1149
|
}
|
|
1144
1150
|
if (this.isBlocking) {
|
|
1145
|
-
this._handleBlocking({
|
|
1151
|
+
this._handleBlocking({
|
|
1152
|
+
phase,
|
|
1153
|
+
});
|
|
1146
1154
|
}
|
|
1147
1155
|
if (this.hasBackdrop) {
|
|
1148
|
-
this._handleBackdrop({
|
|
1156
|
+
this._handleBackdrop({
|
|
1157
|
+
phase,
|
|
1158
|
+
});
|
|
1149
1159
|
}
|
|
1150
1160
|
if (this.trapsKeyboardFocus) {
|
|
1151
|
-
this._handleTrapsKeyboardFocus({
|
|
1161
|
+
this._handleTrapsKeyboardFocus({
|
|
1162
|
+
phase,
|
|
1163
|
+
});
|
|
1152
1164
|
}
|
|
1153
1165
|
if (this.hidesOnEsc) {
|
|
1154
|
-
this._handleHidesOnEsc({
|
|
1166
|
+
this._handleHidesOnEsc({
|
|
1167
|
+
phase,
|
|
1168
|
+
});
|
|
1155
1169
|
}
|
|
1156
1170
|
if (this.hidesOnOutsideEsc) {
|
|
1157
|
-
this._handleHidesOnOutsideEsc({
|
|
1171
|
+
this._handleHidesOnOutsideEsc({
|
|
1172
|
+
phase,
|
|
1173
|
+
});
|
|
1158
1174
|
}
|
|
1159
1175
|
if (this.hidesOnOutsideClick) {
|
|
1160
|
-
this._handleHidesOnOutsideClick({
|
|
1176
|
+
this._handleHidesOnOutsideClick({
|
|
1177
|
+
phase,
|
|
1178
|
+
});
|
|
1161
1179
|
}
|
|
1162
1180
|
if (this.handlesAccessibility) {
|
|
1163
|
-
this._handleAccessibility({
|
|
1181
|
+
this._handleAccessibility({
|
|
1182
|
+
phase,
|
|
1183
|
+
});
|
|
1164
1184
|
}
|
|
1165
1185
|
if (this.inheritsReferenceWidth) {
|
|
1166
1186
|
this._handleInheritsReferenceWidth();
|
|
1167
1187
|
}
|
|
1168
1188
|
if (this.visibilityTriggerFunction) {
|
|
1169
|
-
this._handleVisibilityTriggers({
|
|
1189
|
+
this._handleVisibilityTriggers({
|
|
1190
|
+
phase,
|
|
1191
|
+
});
|
|
1170
1192
|
}
|
|
1171
1193
|
if (this.config.syncChildrenCloseState) {
|
|
1172
|
-
this._handleSyncChildrenCloseState({
|
|
1194
|
+
this._handleSyncChildrenCloseState({
|
|
1195
|
+
phase,
|
|
1196
|
+
});
|
|
1173
1197
|
}
|
|
1174
1198
|
if (this.config.elementToFocusOnShow) {
|
|
1175
|
-
this._handleElementToFocusOnShow({
|
|
1199
|
+
this._handleElementToFocusOnShow({
|
|
1200
|
+
phase,
|
|
1201
|
+
});
|
|
1176
1202
|
}
|
|
1177
1203
|
}
|
|
1178
1204
|
|
|
@@ -1195,11 +1221,10 @@ export class OverlayController extends EventTarget {
|
|
|
1195
1221
|
*/
|
|
1196
1222
|
_handleSyncChildrenCloseState({ phase }) {
|
|
1197
1223
|
if (phase !== 'hide') return;
|
|
1198
|
-
|
|
1199
1224
|
const visibleChildren = this.manager.shownList.filter(
|
|
1200
|
-
ctrl => ctrl !== this && deepContains(this.contentNode, ctrl.contentNode),
|
|
1225
|
+
(ctrl) => ctrl !== this && deepContains(this.contentNode, ctrl.contentNode),
|
|
1201
1226
|
);
|
|
1202
|
-
visibleChildren.forEach(ctrl => ctrl.hide());
|
|
1227
|
+
visibleChildren.forEach((ctrl) => ctrl.hide());
|
|
1203
1228
|
}
|
|
1204
1229
|
|
|
1205
1230
|
/**
|
|
@@ -1211,7 +1236,9 @@ export class OverlayController extends EventTarget {
|
|
|
1211
1236
|
// Here we initialize the __visibilityTriggerHandler of our invokerNode. It's important that we ONLY do this on init,
|
|
1212
1237
|
// otherwise we risk not being able to properly clean up listeners...
|
|
1213
1238
|
if (phase === 'init') {
|
|
1214
|
-
this.__visibilityTriggerHandler = this.visibilityTriggerFunction({
|
|
1239
|
+
this.__visibilityTriggerHandler = this.visibilityTriggerFunction({
|
|
1240
|
+
controller: this,
|
|
1241
|
+
});
|
|
1215
1242
|
}
|
|
1216
1243
|
// Here we run the appropriate lifecycle, if defined in our handler
|
|
1217
1244
|
this.__visibilityTriggerHandler[phase]?.();
|
|
@@ -1251,7 +1278,6 @@ export class OverlayController extends EventTarget {
|
|
|
1251
1278
|
/* no default */
|
|
1252
1279
|
}
|
|
1253
1280
|
}
|
|
1254
|
-
|
|
1255
1281
|
get hasActiveBackdrop() {
|
|
1256
1282
|
return this.__hasActiveBackdrop;
|
|
1257
1283
|
}
|
|
@@ -1296,7 +1322,7 @@ export class OverlayController extends EventTarget {
|
|
|
1296
1322
|
/**
|
|
1297
1323
|
* @param {KeyboardEvent} event
|
|
1298
1324
|
*/
|
|
1299
|
-
#isShiftPressedOnKeyDownHandler = event => {
|
|
1325
|
+
#isShiftPressedOnKeyDownHandler = (event) => {
|
|
1300
1326
|
if (event.key === 'Shift') {
|
|
1301
1327
|
this.#isShiftPressed = true;
|
|
1302
1328
|
}
|
|
@@ -1305,26 +1331,23 @@ export class OverlayController extends EventTarget {
|
|
|
1305
1331
|
/**
|
|
1306
1332
|
* @param {KeyboardEvent} event
|
|
1307
1333
|
*/
|
|
1308
|
-
#isShiftPressedOnKeyUpHandler = event => {
|
|
1334
|
+
#isShiftPressedOnKeyUpHandler = (event) => {
|
|
1309
1335
|
if (event.key === 'Shift') {
|
|
1310
1336
|
this.#isShiftPressed = false;
|
|
1311
1337
|
}
|
|
1312
1338
|
};
|
|
1313
|
-
|
|
1314
1339
|
#handleShiftKeyPress = () => {
|
|
1315
1340
|
window.addEventListener('keydown', this.#isShiftPressedOnKeyDownHandler);
|
|
1316
1341
|
window.addEventListener('keyup', this.#isShiftPressedOnKeyUpHandler);
|
|
1317
1342
|
};
|
|
1318
|
-
|
|
1319
1343
|
#stopHandlingShiftKeyPress = () => {
|
|
1320
1344
|
window.removeEventListener('keydown', this.#isShiftPressedOnKeyDownHandler);
|
|
1321
1345
|
window.removeEventListener('keyup', this.#isShiftPressedOnKeyUpHandler);
|
|
1322
1346
|
};
|
|
1323
|
-
|
|
1324
1347
|
#getInitialElementToFocus = () => {
|
|
1325
1348
|
const focusableElements = getFocusableElements(this.contentNode);
|
|
1326
1349
|
// Initial focus goes to first element with autofocus, or `contentNode`
|
|
1327
|
-
return focusableElements.find(e => e.hasAttribute('autofocus')) || this.contentNode;
|
|
1350
|
+
return focusableElements.find((e) => e.hasAttribute('autofocus')) || this.contentNode;
|
|
1328
1351
|
};
|
|
1329
1352
|
|
|
1330
1353
|
/**
|
|
@@ -1359,7 +1382,6 @@ export class OverlayController extends EventTarget {
|
|
|
1359
1382
|
if (phase === 'init') {
|
|
1360
1383
|
this.contentNode.style.outline = 'none';
|
|
1361
1384
|
this.contentNode.tabIndex = -1;
|
|
1362
|
-
|
|
1363
1385
|
const isContentShadowHost = Boolean(this.contentNode.shadowRoot);
|
|
1364
1386
|
if (isContentShadowHost) {
|
|
1365
1387
|
// eslint-disable-next-line no-console
|
|
@@ -1412,7 +1434,6 @@ export class OverlayController extends EventTarget {
|
|
|
1412
1434
|
) {
|
|
1413
1435
|
return;
|
|
1414
1436
|
}
|
|
1415
|
-
|
|
1416
1437
|
if (this.#hasPressedInside(event)) {
|
|
1417
1438
|
this.__escKeyHandlerCalled = true;
|
|
1418
1439
|
this.hide();
|
|
@@ -1427,18 +1448,17 @@ export class OverlayController extends EventTarget {
|
|
|
1427
1448
|
* @param {KeyboardEvent} event
|
|
1428
1449
|
* @returns {boolean}
|
|
1429
1450
|
*/
|
|
1430
|
-
#hasPressedInside = event =>
|
|
1431
|
-
event.composedPath().includes(/** @type {EventTarget} */
|
|
1451
|
+
#hasPressedInside = (event) =>
|
|
1452
|
+
event.composedPath().includes(/** @type {EventTarget} */ this.__wrappingDialogNode) ||
|
|
1432
1453
|
(this.invokerNode && event.composedPath().includes(this.invokerNode)) ||
|
|
1433
|
-
deepContains(this.contentNode, /** @type {HTMLElement|ShadowRoot} */
|
|
1454
|
+
deepContains(this.contentNode, /** @type {HTMLElement|ShadowRoot} */ event.target);
|
|
1434
1455
|
|
|
1435
1456
|
/**
|
|
1436
1457
|
* @param {KeyboardEvent} event
|
|
1437
1458
|
* @returns {void}
|
|
1438
1459
|
*/
|
|
1439
|
-
#outsideEscKeyHandler = event => {
|
|
1460
|
+
#outsideEscKeyHandler = (event) => {
|
|
1440
1461
|
if (event.key !== 'Escape') return;
|
|
1441
|
-
|
|
1442
1462
|
if (this.#hasPressedInside(event)) return;
|
|
1443
1463
|
this.hide();
|
|
1444
1464
|
};
|
|
@@ -1510,7 +1530,6 @@ export class OverlayController extends EventTarget {
|
|
|
1510
1530
|
*/
|
|
1511
1531
|
_handleHidesOnOutsideClick({ phase }) {
|
|
1512
1532
|
const addOrRemoveListener = phase === 'show' ? 'addEventListener' : 'removeEventListener';
|
|
1513
|
-
|
|
1514
1533
|
if (phase === 'show') {
|
|
1515
1534
|
/**
|
|
1516
1535
|
* We listen to click (more specifically mouseup and mousedown) events
|
|
@@ -1538,7 +1557,6 @@ export class OverlayController extends EventTarget {
|
|
|
1538
1557
|
// [1]. was mousedown inside content or invoker
|
|
1539
1558
|
wasMouseDownInside = true;
|
|
1540
1559
|
};
|
|
1541
|
-
|
|
1542
1560
|
this.__onInsideMouseUp = () => {
|
|
1543
1561
|
// [3]. was mouseup inside content or invoker
|
|
1544
1562
|
wasMouseUpInside = true;
|
|
@@ -1567,7 +1585,6 @@ export class OverlayController extends EventTarget {
|
|
|
1567
1585
|
});
|
|
1568
1586
|
};
|
|
1569
1587
|
}
|
|
1570
|
-
|
|
1571
1588
|
this.contentWrapperNode[addOrRemoveListener](
|
|
1572
1589
|
'mousedown',
|
|
1573
1590
|
/** @type {EventListenerOrEventListenerObject} */
|
|
@@ -1578,7 +1595,7 @@ export class OverlayController extends EventTarget {
|
|
|
1578
1595
|
this.contentWrapperNode[addOrRemoveListener](
|
|
1579
1596
|
'mouseup',
|
|
1580
1597
|
/** @type {EventListenerOrEventListenerObject} */
|
|
1581
|
-
|
|
1598
|
+
this.__onInsideMouseUp,
|
|
1582
1599
|
true,
|
|
1583
1600
|
);
|
|
1584
1601
|
if (this.invokerNode) {
|
|
@@ -1594,7 +1611,7 @@ export class OverlayController extends EventTarget {
|
|
|
1594
1611
|
this.invokerNode[addOrRemoveListener](
|
|
1595
1612
|
'mouseup',
|
|
1596
1613
|
/** @type {EventListenerOrEventListenerObject} */
|
|
1597
|
-
|
|
1614
|
+
this.__onInsideMouseUp,
|
|
1598
1615
|
true,
|
|
1599
1616
|
);
|
|
1600
1617
|
}
|
|
@@ -1619,25 +1636,31 @@ export class OverlayController extends EventTarget {
|
|
|
1619
1636
|
*/
|
|
1620
1637
|
_handleAccessibility({ phase }) {
|
|
1621
1638
|
if (phase === 'init' || phase === 'teardown') {
|
|
1622
|
-
this.__setupTeardownAccessibility({
|
|
1639
|
+
this.__setupTeardownAccessibility({
|
|
1640
|
+
phase,
|
|
1641
|
+
});
|
|
1623
1642
|
}
|
|
1624
1643
|
const isModal = this.trapsKeyboardFocus;
|
|
1625
1644
|
if (this.invokerNode && !this.isTooltip && !isModal) {
|
|
1626
1645
|
this.invokerNode.setAttribute('aria-expanded', `${phase === 'show'}`);
|
|
1627
1646
|
}
|
|
1628
1647
|
}
|
|
1629
|
-
|
|
1630
1648
|
teardown() {
|
|
1631
1649
|
if (!this.__hasSetup) return;
|
|
1632
|
-
this.__handleOverlayStyles({
|
|
1650
|
+
this.__handleOverlayStyles({
|
|
1651
|
+
phase: 'teardown',
|
|
1652
|
+
});
|
|
1633
1653
|
if (this.isShown) {
|
|
1634
|
-
this._keepBodySize({
|
|
1654
|
+
this._keepBodySize({
|
|
1655
|
+
phase: 'teardown',
|
|
1656
|
+
});
|
|
1635
1657
|
}
|
|
1636
|
-
this._handleFeatures({
|
|
1658
|
+
this._handleFeatures({
|
|
1659
|
+
phase: 'teardown',
|
|
1660
|
+
});
|
|
1637
1661
|
if (this.#isRegisteredOnManager()) {
|
|
1638
1662
|
this.manager.remove(this);
|
|
1639
1663
|
}
|
|
1640
|
-
|
|
1641
1664
|
this.contentNode?.removeEventListener('click', this.#hideOnCloseButtonClick);
|
|
1642
1665
|
|
|
1643
1666
|
// if (this.config._shouldTeardownDomStructure) {
|
|
@@ -1656,7 +1679,6 @@ export class OverlayController extends EventTarget {
|
|
|
1656
1679
|
this.__contentWrapperNode = undefined;
|
|
1657
1680
|
this.__wrappingDialogNode = undefined;
|
|
1658
1681
|
}
|
|
1659
|
-
|
|
1660
1682
|
this.__hasSetup = false;
|
|
1661
1683
|
}
|
|
1662
1684
|
|
|
@@ -1666,11 +1688,10 @@ export class OverlayController extends EventTarget {
|
|
|
1666
1688
|
this._popper.destroy();
|
|
1667
1689
|
this._popper = undefined;
|
|
1668
1690
|
}
|
|
1669
|
-
|
|
1670
1691
|
if (OverlayController.popperModule !== undefined) {
|
|
1671
1692
|
const { createPopper } = await OverlayController.popperModule;
|
|
1672
1693
|
this._popper = createPopper(
|
|
1673
|
-
/** @type {HTMLElement} */
|
|
1694
|
+
/** @type {HTMLElement} */ this._referenceNode,
|
|
1674
1695
|
this.contentWrapperNode,
|
|
1675
1696
|
{
|
|
1676
1697
|
...this.config?.popperConfig,
|
|
@@ -1678,11 +1699,10 @@ export class OverlayController extends EventTarget {
|
|
|
1678
1699
|
);
|
|
1679
1700
|
}
|
|
1680
1701
|
}
|
|
1681
|
-
|
|
1682
1702
|
_hasDisabledInvoker() {
|
|
1683
1703
|
if (this.invokerNode) {
|
|
1684
1704
|
return (
|
|
1685
|
-
/** @type {HTMLElement & { disabled: boolean }} */
|
|
1705
|
+
/** @type {HTMLElement & { disabled: boolean }} */ this.invokerNode.disabled ||
|
|
1686
1706
|
this.invokerNode.getAttribute('aria-disabled') === 'true'
|
|
1687
1707
|
);
|
|
1688
1708
|
}
|