@lion/ui 0.23.0 → 0.24.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 +40 -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 +7 -6
- 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 +4 -1
- 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 +166 -151
- package/components/overlays/src/OverlayMixin.js +61 -63
- 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 +375 -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/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 +20 -43
- 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 +191 -56
- 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/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/OverlaysManager.d.ts.map +1 -1
- package/dist-types/components/overlays/src/overlayDocumentStyle.d.ts.map +1 -1
- 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 +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/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/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/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/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 +32 -10
- 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
|
/**
|
|
@@ -313,7 +303,7 @@ export class OverlayController extends EventTarget {
|
|
|
313
303
|
* @type {HTMLDialogElement | HTMLDivElement}
|
|
314
304
|
*/
|
|
315
305
|
get content() {
|
|
316
|
-
return /** @type {HTMLDialogElement | HTMLDivElement} */
|
|
306
|
+
return /** @type {HTMLDialogElement | HTMLDivElement} */ this.__wrappingDialogNode;
|
|
317
307
|
}
|
|
318
308
|
|
|
319
309
|
/**
|
|
@@ -339,7 +329,7 @@ export class OverlayController extends EventTarget {
|
|
|
339
329
|
* @type {HTMLElement}
|
|
340
330
|
*/
|
|
341
331
|
get referenceNode() {
|
|
342
|
-
return /** @type {HTMLElement} */
|
|
332
|
+
return /** @type {HTMLElement} */ this.config?.referenceNode;
|
|
343
333
|
}
|
|
344
334
|
|
|
345
335
|
/**
|
|
@@ -347,7 +337,7 @@ export class OverlayController extends EventTarget {
|
|
|
347
337
|
* @type {HTMLElement}
|
|
348
338
|
*/
|
|
349
339
|
get contentNode() {
|
|
350
|
-
return /** @type {HTMLElement} */
|
|
340
|
+
return /** @type {HTMLElement} */ this.config?.contentNode;
|
|
351
341
|
}
|
|
352
342
|
|
|
353
343
|
/**
|
|
@@ -358,9 +348,7 @@ export class OverlayController extends EventTarget {
|
|
|
358
348
|
* @type {HTMLElement}
|
|
359
349
|
*/
|
|
360
350
|
get contentWrapperNode() {
|
|
361
|
-
return /** @type {HTMLElement} */
|
|
362
|
-
this.__contentWrapperNode || this.config?.contentWrapperNode
|
|
363
|
-
);
|
|
351
|
+
return /** @type {HTMLElement} */ this.__contentWrapperNode || this.config?.contentWrapperNode;
|
|
364
352
|
}
|
|
365
353
|
|
|
366
354
|
/**
|
|
@@ -369,7 +357,7 @@ export class OverlayController extends EventTarget {
|
|
|
369
357
|
* @type {HTMLElement}
|
|
370
358
|
*/
|
|
371
359
|
get backdropNode() {
|
|
372
|
-
return /** @type {HTMLElement} */
|
|
360
|
+
return /** @type {HTMLElement} */ this.__backdropNode || this.config?.backdropNode;
|
|
373
361
|
}
|
|
374
362
|
|
|
375
363
|
/**
|
|
@@ -377,8 +365,9 @@ export class OverlayController extends EventTarget {
|
|
|
377
365
|
* @type {HTMLElement}
|
|
378
366
|
*/
|
|
379
367
|
get elementToFocusAfterHide() {
|
|
380
|
-
return
|
|
381
|
-
this.__elementToFocusAfterHide ||
|
|
368
|
+
return (
|
|
369
|
+
/** @type {HTMLElement} */ this.__elementToFocusAfterHide ||
|
|
370
|
+
this.config?.elementToFocusAfterHide
|
|
382
371
|
);
|
|
383
372
|
}
|
|
384
373
|
|
|
@@ -387,7 +376,7 @@ export class OverlayController extends EventTarget {
|
|
|
387
376
|
* @type {boolean}
|
|
388
377
|
*/
|
|
389
378
|
get hasBackdrop() {
|
|
390
|
-
return /** @type {boolean} */
|
|
379
|
+
return /** @type {boolean} */ !!this.backdropNode || this.config?.hasBackdrop;
|
|
391
380
|
}
|
|
392
381
|
|
|
393
382
|
/**
|
|
@@ -395,7 +384,7 @@ export class OverlayController extends EventTarget {
|
|
|
395
384
|
* @type {boolean}
|
|
396
385
|
*/
|
|
397
386
|
get isBlocking() {
|
|
398
|
-
return /** @type {boolean} */
|
|
387
|
+
return /** @type {boolean} */ this.config?.isBlocking;
|
|
399
388
|
}
|
|
400
389
|
|
|
401
390
|
/**
|
|
@@ -403,7 +392,7 @@ export class OverlayController extends EventTarget {
|
|
|
403
392
|
* @type {boolean}
|
|
404
393
|
*/
|
|
405
394
|
get preventsScroll() {
|
|
406
|
-
return /** @type {boolean} */
|
|
395
|
+
return /** @type {boolean} */ this.config?.preventsScroll;
|
|
407
396
|
}
|
|
408
397
|
|
|
409
398
|
/**
|
|
@@ -411,7 +400,7 @@ export class OverlayController extends EventTarget {
|
|
|
411
400
|
* @type {boolean}
|
|
412
401
|
*/
|
|
413
402
|
get trapsKeyboardFocus() {
|
|
414
|
-
return /** @type {boolean} */
|
|
403
|
+
return /** @type {boolean} */ this.config?.trapsKeyboardFocus;
|
|
415
404
|
}
|
|
416
405
|
|
|
417
406
|
/**
|
|
@@ -419,7 +408,7 @@ export class OverlayController extends EventTarget {
|
|
|
419
408
|
* @type {boolean}
|
|
420
409
|
*/
|
|
421
410
|
get hidesOnEsc() {
|
|
422
|
-
return /** @type {boolean} */
|
|
411
|
+
return /** @type {boolean} */ this.config?.hidesOnEsc;
|
|
423
412
|
}
|
|
424
413
|
|
|
425
414
|
/**
|
|
@@ -427,7 +416,7 @@ export class OverlayController extends EventTarget {
|
|
|
427
416
|
* @type {boolean}
|
|
428
417
|
*/
|
|
429
418
|
get hidesOnOutsideClick() {
|
|
430
|
-
return /** @type {boolean} */
|
|
419
|
+
return /** @type {boolean} */ this.config?.hidesOnOutsideClick;
|
|
431
420
|
}
|
|
432
421
|
|
|
433
422
|
/**
|
|
@@ -435,7 +424,7 @@ export class OverlayController extends EventTarget {
|
|
|
435
424
|
* @type {boolean}
|
|
436
425
|
*/
|
|
437
426
|
get hidesOnOutsideEsc() {
|
|
438
|
-
return /** @type {boolean} */
|
|
427
|
+
return /** @type {boolean} */ this.config?.hidesOnOutsideEsc;
|
|
439
428
|
}
|
|
440
429
|
|
|
441
430
|
/**
|
|
@@ -462,7 +451,7 @@ export class OverlayController extends EventTarget {
|
|
|
462
451
|
* @type {boolean}
|
|
463
452
|
*/
|
|
464
453
|
get handlesAccessibility() {
|
|
465
|
-
return /** @type {boolean} */
|
|
454
|
+
return /** @type {boolean} */ this.config?.handlesAccessibility;
|
|
466
455
|
}
|
|
467
456
|
|
|
468
457
|
/**
|
|
@@ -471,7 +460,7 @@ export class OverlayController extends EventTarget {
|
|
|
471
460
|
* @type {boolean}
|
|
472
461
|
*/
|
|
473
462
|
get isTooltip() {
|
|
474
|
-
return /** @type {boolean} */
|
|
463
|
+
return /** @type {boolean} */ this.config?.isTooltip;
|
|
475
464
|
}
|
|
476
465
|
|
|
477
466
|
/**
|
|
@@ -479,7 +468,7 @@ export class OverlayController extends EventTarget {
|
|
|
479
468
|
* to communicate an important message and require a response.
|
|
480
469
|
*/
|
|
481
470
|
get isAlertDialog() {
|
|
482
|
-
return /** @type {boolean} */
|
|
471
|
+
return /** @type {boolean} */ this.config?.isAlertDialog;
|
|
483
472
|
}
|
|
484
473
|
|
|
485
474
|
/**
|
|
@@ -496,7 +485,7 @@ export class OverlayController extends EventTarget {
|
|
|
496
485
|
* @type {PopperOptions}
|
|
497
486
|
*/
|
|
498
487
|
get popperConfig() {
|
|
499
|
-
return /** @type {PopperOptions} */
|
|
488
|
+
return /** @type {PopperOptions} */ this.config?.popperConfig;
|
|
500
489
|
}
|
|
501
490
|
|
|
502
491
|
/**
|
|
@@ -504,11 +493,10 @@ export class OverlayController extends EventTarget {
|
|
|
504
493
|
* @type {ViewportConfig}
|
|
505
494
|
*/
|
|
506
495
|
get viewportConfig() {
|
|
507
|
-
return /** @type {ViewportConfig} */
|
|
496
|
+
return /** @type {ViewportConfig} */ this.config?.viewportConfig;
|
|
508
497
|
}
|
|
509
|
-
|
|
510
498
|
get visibilityTriggerFunction() {
|
|
511
|
-
return /** @type {function} */
|
|
499
|
+
return /** @type {function} */ this.config?.visibilityTriggerFunction;
|
|
512
500
|
}
|
|
513
501
|
|
|
514
502
|
/**
|
|
@@ -551,9 +539,12 @@ export class OverlayController extends EventTarget {
|
|
|
551
539
|
|
|
552
540
|
/** @type {OverlayConfig} */
|
|
553
541
|
const newConfig = {
|
|
554
|
-
...this._defaultConfig,
|
|
555
|
-
|
|
556
|
-
...
|
|
542
|
+
...this._defaultConfig,
|
|
543
|
+
// our basic ingredients
|
|
544
|
+
...this.__sharedConfig,
|
|
545
|
+
// the initial configured overlayController
|
|
546
|
+
...cfgToAdd,
|
|
547
|
+
// the added config
|
|
557
548
|
popperConfig: {
|
|
558
549
|
...(this._defaultConfig.popperConfig || {}),
|
|
559
550
|
...(this.__sharedConfig.popperConfig || {}),
|
|
@@ -565,27 +556,23 @@ export class OverlayController extends EventTarget {
|
|
|
565
556
|
],
|
|
566
557
|
},
|
|
567
558
|
};
|
|
568
|
-
|
|
569
559
|
const shouldUpdate = !this.__hasSetup || !isEqualConfig(prevConfig, newConfig);
|
|
570
560
|
if (!shouldUpdate) return;
|
|
571
561
|
// Teardown all previous configs
|
|
572
562
|
|
|
573
563
|
this.teardown();
|
|
574
|
-
|
|
575
564
|
this.config = newConfig;
|
|
576
565
|
|
|
577
566
|
/** @private */
|
|
578
567
|
this.__validateConfiguration(this.config);
|
|
579
568
|
/** @protected */
|
|
580
569
|
this._init();
|
|
581
|
-
|
|
582
570
|
if (!this.#isRegisteredOnManager()) {
|
|
583
571
|
this.manager.add(this);
|
|
584
572
|
}
|
|
585
573
|
}
|
|
586
|
-
|
|
587
574
|
#isRegisteredOnManager() {
|
|
588
|
-
return Boolean(this.manager.list.find(ctrl => this === ctrl));
|
|
575
|
+
return Boolean(this.manager.list.find((ctrl) => this === ctrl));
|
|
589
576
|
}
|
|
590
577
|
|
|
591
578
|
/**
|
|
@@ -635,33 +622,32 @@ export class OverlayController extends EventTarget {
|
|
|
635
622
|
this.contentWrapperNode.removeAttribute('style');
|
|
636
623
|
this.contentWrapperNode.removeAttribute('class');
|
|
637
624
|
}
|
|
638
|
-
|
|
639
625
|
if (this.placementMode === 'local') {
|
|
640
626
|
// Lazily load Popper as soon as the first local overlay is used...
|
|
641
627
|
if (!OverlayController.popperModule) {
|
|
642
628
|
OverlayController.popperModule = preloadPopper();
|
|
643
629
|
}
|
|
644
630
|
}
|
|
645
|
-
this.__handleOverlayStyles({
|
|
646
|
-
|
|
631
|
+
this.__handleOverlayStyles({
|
|
632
|
+
phase: 'init',
|
|
633
|
+
});
|
|
634
|
+
this._handleFeatures({
|
|
635
|
+
phase: 'init',
|
|
636
|
+
});
|
|
647
637
|
|
|
648
638
|
/** @private */
|
|
649
639
|
this.__elementToFocusAfterHide = undefined;
|
|
650
|
-
|
|
651
640
|
this.contentNode.dataset.content = '';
|
|
652
641
|
|
|
653
642
|
// Use event delegation to listen for clicks on close buttons...
|
|
654
643
|
this.contentNode.addEventListener('click', this.#hideOnCloseButtonClick);
|
|
655
|
-
|
|
656
644
|
this.__hasSetup = true;
|
|
657
645
|
}
|
|
658
|
-
|
|
659
646
|
#hideOnCloseButtonClick = (/** @type {{ target: any; }} */ ev) => {
|
|
660
647
|
const isOurCloseButton =
|
|
661
648
|
ev.target.hasAttribute('data-close') &&
|
|
662
649
|
deepClosest(ev.target, '[data-content]') === this.contentNode;
|
|
663
650
|
if (!isOurCloseButton) return;
|
|
664
|
-
|
|
665
651
|
this.hide();
|
|
666
652
|
};
|
|
667
653
|
|
|
@@ -670,11 +656,13 @@ export class OverlayController extends EventTarget {
|
|
|
670
656
|
* @private
|
|
671
657
|
*/
|
|
672
658
|
__handleOverlayStyles({ phase }) {
|
|
673
|
-
const rootNode = /** @type {ShadowRoot} */
|
|
659
|
+
const rootNode = /** @type {ShadowRoot} */ this.contentWrapperNode?.getRootNode();
|
|
674
660
|
if (phase === 'init') {
|
|
675
661
|
_adoptStyleUtils.adoptStyle(rootNode, overlayShadowDomStyle);
|
|
676
662
|
} else if (phase === 'teardown') {
|
|
677
|
-
_adoptStyleUtils.adoptStyle(rootNode, overlayShadowDomStyle, {
|
|
663
|
+
_adoptStyleUtils.adoptStyle(rootNode, overlayShadowDomStyle, {
|
|
664
|
+
teardown: true,
|
|
665
|
+
});
|
|
678
666
|
}
|
|
679
667
|
}
|
|
680
668
|
|
|
@@ -739,7 +727,6 @@ export class OverlayController extends EventTarget {
|
|
|
739
727
|
this.contentWrapperNode.setAttribute('data-id', 'content-wrapper');
|
|
740
728
|
// 'hack' that makes sure popperjs (that is applied one level lower) works correctly in deeply nested shadow roots
|
|
741
729
|
this.contentWrapperNode.style.transform = 'translateZ(0px)';
|
|
742
|
-
|
|
743
730
|
this.__rearrangeNodesCleanup = rearrangeNodes({
|
|
744
731
|
wrappingDialogNodeL1: wrappingDialogElement,
|
|
745
732
|
contentWrapperNodeL2: this.contentWrapperNode,
|
|
@@ -747,7 +734,6 @@ export class OverlayController extends EventTarget {
|
|
|
747
734
|
// requireConnectedNodes: Boolean(this.config.requireConnectedNodes),
|
|
748
735
|
});
|
|
749
736
|
wrappingDialogElement.open = true;
|
|
750
|
-
|
|
751
737
|
if (this.isTooltip) {
|
|
752
738
|
// needed to prevent tooltip getting focus in Safari and Firefox
|
|
753
739
|
wrappingDialogElement.setAttribute('tabindex', '-1');
|
|
@@ -783,10 +769,10 @@ export class OverlayController extends EventTarget {
|
|
|
783
769
|
}
|
|
784
770
|
},
|
|
785
771
|
);
|
|
786
|
-
wrappingDialogElement.addEventListener('cancel', event => {
|
|
772
|
+
wrappingDialogElement.addEventListener('cancel', (event) => {
|
|
787
773
|
event.stopPropagation();
|
|
788
774
|
});
|
|
789
|
-
wrappingDialogElement.addEventListener('close', event => {
|
|
775
|
+
wrappingDialogElement.addEventListener('close', (event) => {
|
|
790
776
|
event.stopPropagation();
|
|
791
777
|
});
|
|
792
778
|
}
|
|
@@ -796,17 +782,18 @@ export class OverlayController extends EventTarget {
|
|
|
796
782
|
this.__wrappingDialogNode = this.contentNode;
|
|
797
783
|
}
|
|
798
784
|
}
|
|
799
|
-
|
|
800
785
|
__initVisibility() {
|
|
801
786
|
// TODO: allow defaultOpen?
|
|
802
|
-
/** @type {HTMLDialogElement} */
|
|
787
|
+
/** @type {HTMLDialogElement} */
|
|
788
|
+
this.__wrappingDialogNode.style.display = 'none';
|
|
803
789
|
}
|
|
804
790
|
|
|
805
791
|
// Clean up the DOM structure, leaving it as we found it.
|
|
806
792
|
// TODO: __teardownContentDomStructure method... use Resettable (rename ro Restorable) found in VisibilitToggleCtrl
|
|
807
793
|
__teardownVisibility() {
|
|
808
794
|
// TODO: full structure. For now we just reset display prop...
|
|
809
|
-
/** @type {HTMLDialogElement} */
|
|
795
|
+
/** @type {HTMLDialogElement} */
|
|
796
|
+
this.__wrappingDialogNode.style.display = '';
|
|
810
797
|
}
|
|
811
798
|
|
|
812
799
|
/**
|
|
@@ -818,7 +805,6 @@ export class OverlayController extends EventTarget {
|
|
|
818
805
|
if (this.placementMode !== 'local') {
|
|
819
806
|
return;
|
|
820
807
|
}
|
|
821
|
-
|
|
822
808
|
if (phase === 'setup') {
|
|
823
809
|
const zIndexNumber = Number(getComputedStyle(this.contentNode).zIndex);
|
|
824
810
|
if (zIndexNumber < 1 || Number.isNaN(zIndexNumber)) {
|
|
@@ -835,7 +821,6 @@ export class OverlayController extends EventTarget {
|
|
|
835
821
|
if (phase === 'init') {
|
|
836
822
|
this.__storeOriginalAttrs(this.contentNode, ['role', 'id']);
|
|
837
823
|
const isModal = this.trapsKeyboardFocus;
|
|
838
|
-
|
|
839
824
|
if (this.invokerNode) {
|
|
840
825
|
const attributesToStore = ['aria-labelledby', 'aria-describedby'];
|
|
841
826
|
if (!isModal) {
|
|
@@ -843,7 +828,6 @@ export class OverlayController extends EventTarget {
|
|
|
843
828
|
}
|
|
844
829
|
this.__storeOriginalAttrs(this.invokerNode, attributesToStore);
|
|
845
830
|
}
|
|
846
|
-
|
|
847
831
|
if (!this.contentNode.id) {
|
|
848
832
|
this.contentNode.setAttribute('id', this._contentId);
|
|
849
833
|
}
|
|
@@ -879,7 +863,7 @@ export class OverlayController extends EventTarget {
|
|
|
879
863
|
__storeOriginalAttrs(node, attrs) {
|
|
880
864
|
/** @type {Record<string, any>} */
|
|
881
865
|
const attrMap = {};
|
|
882
|
-
attrs.forEach(attrName => {
|
|
866
|
+
attrs.forEach((attrName) => {
|
|
883
867
|
attrMap[attrName] = node.getAttribute(attrName);
|
|
884
868
|
});
|
|
885
869
|
this.__originalAttrs.set(node, attrMap);
|
|
@@ -898,7 +882,6 @@ export class OverlayController extends EventTarget {
|
|
|
898
882
|
}
|
|
899
883
|
this.__originalAttrs.clear();
|
|
900
884
|
}
|
|
901
|
-
|
|
902
885
|
get isShown() {
|
|
903
886
|
return Boolean(this.__wrappingDialogNode && this.__wrappingDialogNode.style.display !== 'none');
|
|
904
887
|
}
|
|
@@ -914,7 +897,7 @@ export class OverlayController extends EventTarget {
|
|
|
914
897
|
if (this._showComplete) {
|
|
915
898
|
await this._showComplete;
|
|
916
899
|
}
|
|
917
|
-
this._showComplete = new Promise(resolve => {
|
|
900
|
+
this._showComplete = new Promise((resolve) => {
|
|
918
901
|
this._showResolve = resolve;
|
|
919
902
|
});
|
|
920
903
|
|
|
@@ -924,18 +907,17 @@ export class OverlayController extends EventTarget {
|
|
|
924
907
|
if (!this.__wrappingDialogNode) {
|
|
925
908
|
this._init();
|
|
926
909
|
}
|
|
927
|
-
|
|
928
910
|
if (this.manager) {
|
|
929
911
|
this.manager.show(this);
|
|
930
912
|
}
|
|
931
|
-
|
|
932
913
|
if (this.isShown) {
|
|
933
914
|
/** @type {function} */
|
|
934
|
-
|
|
915
|
+
this._showResolve();
|
|
935
916
|
return;
|
|
936
917
|
}
|
|
937
|
-
|
|
938
|
-
|
|
918
|
+
const event = new CustomEvent('before-show', {
|
|
919
|
+
cancelable: true,
|
|
920
|
+
});
|
|
939
921
|
this.dispatchEvent(event);
|
|
940
922
|
if (!event.defaultPrevented) {
|
|
941
923
|
if ('HTMLDialogElement' in window && this.__wrappingDialogNode instanceof HTMLDialogElement) {
|
|
@@ -944,10 +926,18 @@ export class OverlayController extends EventTarget {
|
|
|
944
926
|
|
|
945
927
|
// @ts-ignore
|
|
946
928
|
this.__wrappingDialogNode.style.display = '';
|
|
947
|
-
this._keepBodySize({
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
await this.
|
|
929
|
+
this._keepBodySize({
|
|
930
|
+
phase: 'before-show',
|
|
931
|
+
});
|
|
932
|
+
await this._handleFeatures({
|
|
933
|
+
phase: 'show',
|
|
934
|
+
});
|
|
935
|
+
this._keepBodySize({
|
|
936
|
+
phase: 'show',
|
|
937
|
+
});
|
|
938
|
+
await this._handlePosition({
|
|
939
|
+
phase: 'show',
|
|
940
|
+
});
|
|
951
941
|
this.__elementToFocusAfterHide = elementToFocusAfterHide;
|
|
952
942
|
this.dispatchEvent(new Event('show'));
|
|
953
943
|
await this._transitionShow({
|
|
@@ -958,13 +948,14 @@ export class OverlayController extends EventTarget {
|
|
|
958
948
|
|
|
959
949
|
// a styling/debug hook for open state
|
|
960
950
|
this.contentNode.setAttribute('data-open', '');
|
|
961
|
-
|
|
962
951
|
if (this.config.elementToFocusOnShow) {
|
|
963
|
-
this.contentNode.focus({
|
|
952
|
+
this.contentNode.focus({
|
|
953
|
+
preventScroll: true,
|
|
954
|
+
});
|
|
964
955
|
}
|
|
965
956
|
|
|
966
957
|
/** @type {function} */
|
|
967
|
-
|
|
958
|
+
this._showResolve();
|
|
968
959
|
}
|
|
969
960
|
|
|
970
961
|
/**
|
|
@@ -974,7 +965,6 @@ export class OverlayController extends EventTarget {
|
|
|
974
965
|
async _handlePosition({ phase }) {
|
|
975
966
|
if (this.placementMode === 'global') {
|
|
976
967
|
const placementClass = `overlays__overlay-container--${this.viewportConfig.placement}`;
|
|
977
|
-
|
|
978
968
|
if (phase === 'show') {
|
|
979
969
|
this.contentWrapperNode.classList.add('overlays__overlay-container');
|
|
980
970
|
this.contentWrapperNode.classList.add(placementClass);
|
|
@@ -993,7 +983,8 @@ export class OverlayController extends EventTarget {
|
|
|
993
983
|
* This is however necessary for initial placement.
|
|
994
984
|
*/
|
|
995
985
|
await this.__createPopperInstance();
|
|
996
|
-
/** @type {import('@popperjs/core').Instance} */
|
|
986
|
+
/** @type {import('@popperjs/core').Instance} */
|
|
987
|
+
this._popper.forceUpdate();
|
|
997
988
|
}
|
|
998
989
|
// N.B. leave it up to the user if placementMode === 'custom'
|
|
999
990
|
}
|
|
@@ -1004,8 +995,9 @@ export class OverlayController extends EventTarget {
|
|
|
1004
995
|
*/
|
|
1005
996
|
_keepBodySize({ phase }) {
|
|
1006
997
|
if (!this.preventsScroll) return;
|
|
1007
|
-
|
|
1008
|
-
|
|
998
|
+
this.manager.requestToKeepBodySize({
|
|
999
|
+
phase,
|
|
1000
|
+
});
|
|
1009
1001
|
}
|
|
1010
1002
|
|
|
1011
1003
|
/**
|
|
@@ -1015,8 +1007,7 @@ export class OverlayController extends EventTarget {
|
|
|
1015
1007
|
async hide() {
|
|
1016
1008
|
// Function like a no-op for dynamic edge cases...
|
|
1017
1009
|
if (!this.config.isActivated) return;
|
|
1018
|
-
|
|
1019
|
-
this._hideComplete = new Promise(resolve => {
|
|
1010
|
+
this._hideComplete = new Promise((resolve) => {
|
|
1020
1011
|
this._hideResolve = resolve;
|
|
1021
1012
|
});
|
|
1022
1013
|
|
|
@@ -1024,39 +1015,40 @@ export class OverlayController extends EventTarget {
|
|
|
1024
1015
|
// while the dialog was open.
|
|
1025
1016
|
// We need this in the _restoreFocus method to determine if we should focus this.elementToFocusAfterHide when the
|
|
1026
1017
|
// 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
|
-
|
|
1018
|
+
this.__activeElementRightBeforeHide =
|
|
1019
|
+
/** @type {ShadowRoot} */ this.contentNode.getRootNode().activeElement;
|
|
1031
1020
|
if (this.manager && this.#isRegisteredOnManager()) {
|
|
1032
1021
|
this.manager.hide(this);
|
|
1033
1022
|
}
|
|
1034
|
-
|
|
1035
1023
|
if (!this.isShown) {
|
|
1036
|
-
/** @type {function} */
|
|
1024
|
+
/** @type {function} */ this._hideResolve();
|
|
1037
1025
|
return;
|
|
1038
1026
|
}
|
|
1039
|
-
|
|
1040
|
-
|
|
1027
|
+
const event = new CustomEvent('before-hide', {
|
|
1028
|
+
cancelable: true,
|
|
1029
|
+
});
|
|
1041
1030
|
this.dispatchEvent(event);
|
|
1042
1031
|
if (!event.defaultPrevented) {
|
|
1043
1032
|
await this._transitionHide({
|
|
1044
1033
|
backdropNode: this.backdropNode,
|
|
1045
1034
|
contentNode: this.contentNode,
|
|
1046
1035
|
});
|
|
1047
|
-
|
|
1048
1036
|
if ('HTMLDialogElement' in window && this.__wrappingDialogNode instanceof HTMLDialogElement) {
|
|
1049
1037
|
this.__wrappingDialogNode.close();
|
|
1050
1038
|
}
|
|
1051
1039
|
// @ts-ignore
|
|
1052
1040
|
this.__wrappingDialogNode.style.display = 'none';
|
|
1053
|
-
this._handleFeatures({
|
|
1054
|
-
|
|
1041
|
+
this._handleFeatures({
|
|
1042
|
+
phase: 'hide',
|
|
1043
|
+
});
|
|
1044
|
+
this._keepBodySize({
|
|
1045
|
+
phase: 'hide',
|
|
1046
|
+
});
|
|
1055
1047
|
this.dispatchEvent(new Event('hide'));
|
|
1056
1048
|
this._restoreFocus();
|
|
1057
1049
|
}
|
|
1058
|
-
/** @type {function} */
|
|
1059
|
-
|
|
1050
|
+
/** @type {function} */
|
|
1051
|
+
this._hideResolve();
|
|
1060
1052
|
this.contentNode.removeAttribute('data-open');
|
|
1061
1053
|
}
|
|
1062
1054
|
|
|
@@ -1076,8 +1068,13 @@ export class OverlayController extends EventTarget {
|
|
|
1076
1068
|
// eslint-disable-next-line class-methods-use-this, no-empty-function, no-unused-vars
|
|
1077
1069
|
async _transitionHide({ backdropNode, contentNode }) {
|
|
1078
1070
|
// `this.transitionHide` is a hook for our users
|
|
1079
|
-
await this.transitionHide({
|
|
1080
|
-
|
|
1071
|
+
await this.transitionHide({
|
|
1072
|
+
backdropNode,
|
|
1073
|
+
contentNode,
|
|
1074
|
+
});
|
|
1075
|
+
this._handlePosition({
|
|
1076
|
+
phase: 'hide',
|
|
1077
|
+
});
|
|
1081
1078
|
if (!backdropNode) {
|
|
1082
1079
|
return;
|
|
1083
1080
|
}
|
|
@@ -1099,8 +1096,10 @@ export class OverlayController extends EventTarget {
|
|
|
1099
1096
|
// eslint-disable-next-line class-methods-use-this, no-empty-function, no-unused-vars
|
|
1100
1097
|
async _transitionShow(showConfig) {
|
|
1101
1098
|
// `this.transitionShow` is a hook for our users
|
|
1102
|
-
await this.transitionShow({
|
|
1103
|
-
|
|
1099
|
+
await this.transitionShow({
|
|
1100
|
+
backdropNode: this.backdropNode,
|
|
1101
|
+
contentNode: this.contentNode,
|
|
1102
|
+
});
|
|
1104
1103
|
if (showConfig.backdropNode) {
|
|
1105
1104
|
showConfig.backdropNode.classList.add(`overlays__backdrop--animation-in`);
|
|
1106
1105
|
}
|
|
@@ -1113,19 +1112,18 @@ export class OverlayController extends EventTarget {
|
|
|
1113
1112
|
const weStillOwnActiveElement =
|
|
1114
1113
|
this.__activeElementRightBeforeHide instanceof HTMLElement &&
|
|
1115
1114
|
this.contentNode.contains(this.__activeElementRightBeforeHide);
|
|
1116
|
-
|
|
1117
1115
|
if (!weStillOwnActiveElement) {
|
|
1118
1116
|
return;
|
|
1119
1117
|
}
|
|
1120
|
-
|
|
1121
1118
|
if (this.elementToFocusAfterHide instanceof HTMLElement) {
|
|
1122
1119
|
this.elementToFocusAfterHide.focus();
|
|
1123
|
-
this.elementToFocusAfterHide.scrollIntoView({
|
|
1120
|
+
this.elementToFocusAfterHide.scrollIntoView({
|
|
1121
|
+
block: 'nearest',
|
|
1122
|
+
});
|
|
1124
1123
|
} else {
|
|
1125
|
-
/** @type {HTMLElement} */
|
|
1124
|
+
/** @type {HTMLElement} */ this.__activeElementRightBeforeHide.blur();
|
|
1126
1125
|
}
|
|
1127
1126
|
}
|
|
1128
|
-
|
|
1129
1127
|
async toggle() {
|
|
1130
1128
|
return this.isShown ? this.hide() : this.show();
|
|
1131
1129
|
}
|
|
@@ -1136,43 +1134,66 @@ export class OverlayController extends EventTarget {
|
|
|
1136
1134
|
* @protected
|
|
1137
1135
|
*/
|
|
1138
1136
|
_handleFeatures({ phase }) {
|
|
1139
|
-
this._handleZIndex({
|
|
1140
|
-
|
|
1137
|
+
this._handleZIndex({
|
|
1138
|
+
phase,
|
|
1139
|
+
});
|
|
1141
1140
|
if (this.preventsScroll) {
|
|
1142
|
-
this._handlePreventsScroll({
|
|
1141
|
+
this._handlePreventsScroll({
|
|
1142
|
+
phase,
|
|
1143
|
+
});
|
|
1143
1144
|
}
|
|
1144
1145
|
if (this.isBlocking) {
|
|
1145
|
-
this._handleBlocking({
|
|
1146
|
+
this._handleBlocking({
|
|
1147
|
+
phase,
|
|
1148
|
+
});
|
|
1146
1149
|
}
|
|
1147
1150
|
if (this.hasBackdrop) {
|
|
1148
|
-
this._handleBackdrop({
|
|
1151
|
+
this._handleBackdrop({
|
|
1152
|
+
phase,
|
|
1153
|
+
});
|
|
1149
1154
|
}
|
|
1150
1155
|
if (this.trapsKeyboardFocus) {
|
|
1151
|
-
this._handleTrapsKeyboardFocus({
|
|
1156
|
+
this._handleTrapsKeyboardFocus({
|
|
1157
|
+
phase,
|
|
1158
|
+
});
|
|
1152
1159
|
}
|
|
1153
1160
|
if (this.hidesOnEsc) {
|
|
1154
|
-
this._handleHidesOnEsc({
|
|
1161
|
+
this._handleHidesOnEsc({
|
|
1162
|
+
phase,
|
|
1163
|
+
});
|
|
1155
1164
|
}
|
|
1156
1165
|
if (this.hidesOnOutsideEsc) {
|
|
1157
|
-
this._handleHidesOnOutsideEsc({
|
|
1166
|
+
this._handleHidesOnOutsideEsc({
|
|
1167
|
+
phase,
|
|
1168
|
+
});
|
|
1158
1169
|
}
|
|
1159
1170
|
if (this.hidesOnOutsideClick) {
|
|
1160
|
-
this._handleHidesOnOutsideClick({
|
|
1171
|
+
this._handleHidesOnOutsideClick({
|
|
1172
|
+
phase,
|
|
1173
|
+
});
|
|
1161
1174
|
}
|
|
1162
1175
|
if (this.handlesAccessibility) {
|
|
1163
|
-
this._handleAccessibility({
|
|
1176
|
+
this._handleAccessibility({
|
|
1177
|
+
phase,
|
|
1178
|
+
});
|
|
1164
1179
|
}
|
|
1165
1180
|
if (this.inheritsReferenceWidth) {
|
|
1166
1181
|
this._handleInheritsReferenceWidth();
|
|
1167
1182
|
}
|
|
1168
1183
|
if (this.visibilityTriggerFunction) {
|
|
1169
|
-
this._handleVisibilityTriggers({
|
|
1184
|
+
this._handleVisibilityTriggers({
|
|
1185
|
+
phase,
|
|
1186
|
+
});
|
|
1170
1187
|
}
|
|
1171
1188
|
if (this.config.syncChildrenCloseState) {
|
|
1172
|
-
this._handleSyncChildrenCloseState({
|
|
1189
|
+
this._handleSyncChildrenCloseState({
|
|
1190
|
+
phase,
|
|
1191
|
+
});
|
|
1173
1192
|
}
|
|
1174
1193
|
if (this.config.elementToFocusOnShow) {
|
|
1175
|
-
this._handleElementToFocusOnShow({
|
|
1194
|
+
this._handleElementToFocusOnShow({
|
|
1195
|
+
phase,
|
|
1196
|
+
});
|
|
1176
1197
|
}
|
|
1177
1198
|
}
|
|
1178
1199
|
|
|
@@ -1195,11 +1216,10 @@ export class OverlayController extends EventTarget {
|
|
|
1195
1216
|
*/
|
|
1196
1217
|
_handleSyncChildrenCloseState({ phase }) {
|
|
1197
1218
|
if (phase !== 'hide') return;
|
|
1198
|
-
|
|
1199
1219
|
const visibleChildren = this.manager.shownList.filter(
|
|
1200
|
-
ctrl => ctrl !== this && deepContains(this.contentNode, ctrl.contentNode),
|
|
1220
|
+
(ctrl) => ctrl !== this && deepContains(this.contentNode, ctrl.contentNode),
|
|
1201
1221
|
);
|
|
1202
|
-
visibleChildren.forEach(ctrl => ctrl.hide());
|
|
1222
|
+
visibleChildren.forEach((ctrl) => ctrl.hide());
|
|
1203
1223
|
}
|
|
1204
1224
|
|
|
1205
1225
|
/**
|
|
@@ -1211,7 +1231,9 @@ export class OverlayController extends EventTarget {
|
|
|
1211
1231
|
// Here we initialize the __visibilityTriggerHandler of our invokerNode. It's important that we ONLY do this on init,
|
|
1212
1232
|
// otherwise we risk not being able to properly clean up listeners...
|
|
1213
1233
|
if (phase === 'init') {
|
|
1214
|
-
this.__visibilityTriggerHandler = this.visibilityTriggerFunction({
|
|
1234
|
+
this.__visibilityTriggerHandler = this.visibilityTriggerFunction({
|
|
1235
|
+
controller: this,
|
|
1236
|
+
});
|
|
1215
1237
|
}
|
|
1216
1238
|
// Here we run the appropriate lifecycle, if defined in our handler
|
|
1217
1239
|
this.__visibilityTriggerHandler[phase]?.();
|
|
@@ -1251,7 +1273,6 @@ export class OverlayController extends EventTarget {
|
|
|
1251
1273
|
/* no default */
|
|
1252
1274
|
}
|
|
1253
1275
|
}
|
|
1254
|
-
|
|
1255
1276
|
get hasActiveBackdrop() {
|
|
1256
1277
|
return this.__hasActiveBackdrop;
|
|
1257
1278
|
}
|
|
@@ -1296,7 +1317,7 @@ export class OverlayController extends EventTarget {
|
|
|
1296
1317
|
/**
|
|
1297
1318
|
* @param {KeyboardEvent} event
|
|
1298
1319
|
*/
|
|
1299
|
-
#isShiftPressedOnKeyDownHandler = event => {
|
|
1320
|
+
#isShiftPressedOnKeyDownHandler = (event) => {
|
|
1300
1321
|
if (event.key === 'Shift') {
|
|
1301
1322
|
this.#isShiftPressed = true;
|
|
1302
1323
|
}
|
|
@@ -1305,26 +1326,23 @@ export class OverlayController extends EventTarget {
|
|
|
1305
1326
|
/**
|
|
1306
1327
|
* @param {KeyboardEvent} event
|
|
1307
1328
|
*/
|
|
1308
|
-
#isShiftPressedOnKeyUpHandler = event => {
|
|
1329
|
+
#isShiftPressedOnKeyUpHandler = (event) => {
|
|
1309
1330
|
if (event.key === 'Shift') {
|
|
1310
1331
|
this.#isShiftPressed = false;
|
|
1311
1332
|
}
|
|
1312
1333
|
};
|
|
1313
|
-
|
|
1314
1334
|
#handleShiftKeyPress = () => {
|
|
1315
1335
|
window.addEventListener('keydown', this.#isShiftPressedOnKeyDownHandler);
|
|
1316
1336
|
window.addEventListener('keyup', this.#isShiftPressedOnKeyUpHandler);
|
|
1317
1337
|
};
|
|
1318
|
-
|
|
1319
1338
|
#stopHandlingShiftKeyPress = () => {
|
|
1320
1339
|
window.removeEventListener('keydown', this.#isShiftPressedOnKeyDownHandler);
|
|
1321
1340
|
window.removeEventListener('keyup', this.#isShiftPressedOnKeyUpHandler);
|
|
1322
1341
|
};
|
|
1323
|
-
|
|
1324
1342
|
#getInitialElementToFocus = () => {
|
|
1325
1343
|
const focusableElements = getFocusableElements(this.contentNode);
|
|
1326
1344
|
// Initial focus goes to first element with autofocus, or `contentNode`
|
|
1327
|
-
return focusableElements.find(e => e.hasAttribute('autofocus')) || this.contentNode;
|
|
1345
|
+
return focusableElements.find((e) => e.hasAttribute('autofocus')) || this.contentNode;
|
|
1328
1346
|
};
|
|
1329
1347
|
|
|
1330
1348
|
/**
|
|
@@ -1359,7 +1377,6 @@ export class OverlayController extends EventTarget {
|
|
|
1359
1377
|
if (phase === 'init') {
|
|
1360
1378
|
this.contentNode.style.outline = 'none';
|
|
1361
1379
|
this.contentNode.tabIndex = -1;
|
|
1362
|
-
|
|
1363
1380
|
const isContentShadowHost = Boolean(this.contentNode.shadowRoot);
|
|
1364
1381
|
if (isContentShadowHost) {
|
|
1365
1382
|
// eslint-disable-next-line no-console
|
|
@@ -1412,7 +1429,6 @@ export class OverlayController extends EventTarget {
|
|
|
1412
1429
|
) {
|
|
1413
1430
|
return;
|
|
1414
1431
|
}
|
|
1415
|
-
|
|
1416
1432
|
if (this.#hasPressedInside(event)) {
|
|
1417
1433
|
this.__escKeyHandlerCalled = true;
|
|
1418
1434
|
this.hide();
|
|
@@ -1427,18 +1443,17 @@ export class OverlayController extends EventTarget {
|
|
|
1427
1443
|
* @param {KeyboardEvent} event
|
|
1428
1444
|
* @returns {boolean}
|
|
1429
1445
|
*/
|
|
1430
|
-
#hasPressedInside = event =>
|
|
1431
|
-
event.composedPath().includes(/** @type {EventTarget} */
|
|
1446
|
+
#hasPressedInside = (event) =>
|
|
1447
|
+
event.composedPath().includes(/** @type {EventTarget} */ this.__wrappingDialogNode) ||
|
|
1432
1448
|
(this.invokerNode && event.composedPath().includes(this.invokerNode)) ||
|
|
1433
|
-
deepContains(this.contentNode, /** @type {HTMLElement|ShadowRoot} */
|
|
1449
|
+
deepContains(this.contentNode, /** @type {HTMLElement|ShadowRoot} */ event.target);
|
|
1434
1450
|
|
|
1435
1451
|
/**
|
|
1436
1452
|
* @param {KeyboardEvent} event
|
|
1437
1453
|
* @returns {void}
|
|
1438
1454
|
*/
|
|
1439
|
-
#outsideEscKeyHandler = event => {
|
|
1455
|
+
#outsideEscKeyHandler = (event) => {
|
|
1440
1456
|
if (event.key !== 'Escape') return;
|
|
1441
|
-
|
|
1442
1457
|
if (this.#hasPressedInside(event)) return;
|
|
1443
1458
|
this.hide();
|
|
1444
1459
|
};
|
|
@@ -1510,7 +1525,6 @@ export class OverlayController extends EventTarget {
|
|
|
1510
1525
|
*/
|
|
1511
1526
|
_handleHidesOnOutsideClick({ phase }) {
|
|
1512
1527
|
const addOrRemoveListener = phase === 'show' ? 'addEventListener' : 'removeEventListener';
|
|
1513
|
-
|
|
1514
1528
|
if (phase === 'show') {
|
|
1515
1529
|
/**
|
|
1516
1530
|
* We listen to click (more specifically mouseup and mousedown) events
|
|
@@ -1538,7 +1552,6 @@ export class OverlayController extends EventTarget {
|
|
|
1538
1552
|
// [1]. was mousedown inside content or invoker
|
|
1539
1553
|
wasMouseDownInside = true;
|
|
1540
1554
|
};
|
|
1541
|
-
|
|
1542
1555
|
this.__onInsideMouseUp = () => {
|
|
1543
1556
|
// [3]. was mouseup inside content or invoker
|
|
1544
1557
|
wasMouseUpInside = true;
|
|
@@ -1567,7 +1580,6 @@ export class OverlayController extends EventTarget {
|
|
|
1567
1580
|
});
|
|
1568
1581
|
};
|
|
1569
1582
|
}
|
|
1570
|
-
|
|
1571
1583
|
this.contentWrapperNode[addOrRemoveListener](
|
|
1572
1584
|
'mousedown',
|
|
1573
1585
|
/** @type {EventListenerOrEventListenerObject} */
|
|
@@ -1578,7 +1590,7 @@ export class OverlayController extends EventTarget {
|
|
|
1578
1590
|
this.contentWrapperNode[addOrRemoveListener](
|
|
1579
1591
|
'mouseup',
|
|
1580
1592
|
/** @type {EventListenerOrEventListenerObject} */
|
|
1581
|
-
|
|
1593
|
+
this.__onInsideMouseUp,
|
|
1582
1594
|
true,
|
|
1583
1595
|
);
|
|
1584
1596
|
if (this.invokerNode) {
|
|
@@ -1594,7 +1606,7 @@ export class OverlayController extends EventTarget {
|
|
|
1594
1606
|
this.invokerNode[addOrRemoveListener](
|
|
1595
1607
|
'mouseup',
|
|
1596
1608
|
/** @type {EventListenerOrEventListenerObject} */
|
|
1597
|
-
|
|
1609
|
+
this.__onInsideMouseUp,
|
|
1598
1610
|
true,
|
|
1599
1611
|
);
|
|
1600
1612
|
}
|
|
@@ -1619,25 +1631,31 @@ export class OverlayController extends EventTarget {
|
|
|
1619
1631
|
*/
|
|
1620
1632
|
_handleAccessibility({ phase }) {
|
|
1621
1633
|
if (phase === 'init' || phase === 'teardown') {
|
|
1622
|
-
this.__setupTeardownAccessibility({
|
|
1634
|
+
this.__setupTeardownAccessibility({
|
|
1635
|
+
phase,
|
|
1636
|
+
});
|
|
1623
1637
|
}
|
|
1624
1638
|
const isModal = this.trapsKeyboardFocus;
|
|
1625
1639
|
if (this.invokerNode && !this.isTooltip && !isModal) {
|
|
1626
1640
|
this.invokerNode.setAttribute('aria-expanded', `${phase === 'show'}`);
|
|
1627
1641
|
}
|
|
1628
1642
|
}
|
|
1629
|
-
|
|
1630
1643
|
teardown() {
|
|
1631
1644
|
if (!this.__hasSetup) return;
|
|
1632
|
-
this.__handleOverlayStyles({
|
|
1645
|
+
this.__handleOverlayStyles({
|
|
1646
|
+
phase: 'teardown',
|
|
1647
|
+
});
|
|
1633
1648
|
if (this.isShown) {
|
|
1634
|
-
this._keepBodySize({
|
|
1649
|
+
this._keepBodySize({
|
|
1650
|
+
phase: 'teardown',
|
|
1651
|
+
});
|
|
1635
1652
|
}
|
|
1636
|
-
this._handleFeatures({
|
|
1653
|
+
this._handleFeatures({
|
|
1654
|
+
phase: 'teardown',
|
|
1655
|
+
});
|
|
1637
1656
|
if (this.#isRegisteredOnManager()) {
|
|
1638
1657
|
this.manager.remove(this);
|
|
1639
1658
|
}
|
|
1640
|
-
|
|
1641
1659
|
this.contentNode?.removeEventListener('click', this.#hideOnCloseButtonClick);
|
|
1642
1660
|
|
|
1643
1661
|
// if (this.config._shouldTeardownDomStructure) {
|
|
@@ -1656,7 +1674,6 @@ export class OverlayController extends EventTarget {
|
|
|
1656
1674
|
this.__contentWrapperNode = undefined;
|
|
1657
1675
|
this.__wrappingDialogNode = undefined;
|
|
1658
1676
|
}
|
|
1659
|
-
|
|
1660
1677
|
this.__hasSetup = false;
|
|
1661
1678
|
}
|
|
1662
1679
|
|
|
@@ -1666,11 +1683,10 @@ export class OverlayController extends EventTarget {
|
|
|
1666
1683
|
this._popper.destroy();
|
|
1667
1684
|
this._popper = undefined;
|
|
1668
1685
|
}
|
|
1669
|
-
|
|
1670
1686
|
if (OverlayController.popperModule !== undefined) {
|
|
1671
1687
|
const { createPopper } = await OverlayController.popperModule;
|
|
1672
1688
|
this._popper = createPopper(
|
|
1673
|
-
/** @type {HTMLElement} */
|
|
1689
|
+
/** @type {HTMLElement} */ this._referenceNode,
|
|
1674
1690
|
this.contentWrapperNode,
|
|
1675
1691
|
{
|
|
1676
1692
|
...this.config?.popperConfig,
|
|
@@ -1678,11 +1694,10 @@ export class OverlayController extends EventTarget {
|
|
|
1678
1694
|
);
|
|
1679
1695
|
}
|
|
1680
1696
|
}
|
|
1681
|
-
|
|
1682
1697
|
_hasDisabledInvoker() {
|
|
1683
1698
|
if (this.invokerNode) {
|
|
1684
1699
|
return (
|
|
1685
|
-
/** @type {HTMLElement & { disabled: boolean }} */
|
|
1700
|
+
/** @type {HTMLElement & { disabled: boolean }} */ this.invokerNode.disabled ||
|
|
1686
1701
|
this.invokerNode.getAttribute('aria-disabled') === 'true'
|
|
1687
1702
|
);
|
|
1688
1703
|
}
|