@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
|
@@ -27,9 +27,8 @@ import sinon from 'sinon';
|
|
|
27
27
|
function getGlobalOverlayCtrls() {
|
|
28
28
|
return overlaysManager.list;
|
|
29
29
|
}
|
|
30
|
-
|
|
31
30
|
function resetOverlaysManager() {
|
|
32
|
-
overlaysManager.list.forEach(overlayCtrl => overlaysManager.remove(overlayCtrl));
|
|
31
|
+
overlaysManager.list.forEach((overlayCtrl) => overlaysManager.remove(overlayCtrl));
|
|
33
32
|
}
|
|
34
33
|
|
|
35
34
|
/**
|
|
@@ -49,7 +48,9 @@ async function mimicEscapePress(element) {
|
|
|
49
48
|
}
|
|
50
49
|
|
|
51
50
|
// Send the event
|
|
52
|
-
await sendKeys({
|
|
51
|
+
await sendKeys({
|
|
52
|
+
press: 'Escape',
|
|
53
|
+
});
|
|
53
54
|
// Wait for at least a microtask, so that possible property effects are performed
|
|
54
55
|
await aTimeout(0);
|
|
55
56
|
}
|
|
@@ -60,53 +61,49 @@ async function mimicEscapePress(element) {
|
|
|
60
61
|
export function runOverlayMixinSuite({ tagString, tag, suffix = '' }) {
|
|
61
62
|
describe(`OverlayMixin${suffix}`, () => {
|
|
62
63
|
it('should not be opened by default', async () => {
|
|
63
|
-
const el =
|
|
64
|
+
const el =
|
|
65
|
+
/** @type {OverlayEl} */
|
|
64
66
|
await fixture(html`
|
|
65
67
|
<${tag}>
|
|
66
68
|
<div slot="content">content of the overlay</div>
|
|
67
69
|
<button slot="invoker">invoker button</button>
|
|
68
70
|
</${tag}>
|
|
69
|
-
`)
|
|
70
|
-
);
|
|
71
|
+
`);
|
|
71
72
|
expect(el.opened).to.be.false;
|
|
72
73
|
expect(el._overlayCtrl.isShown).to.be.false;
|
|
73
74
|
});
|
|
74
|
-
|
|
75
75
|
it('syncs opened to overlayController', async () => {
|
|
76
|
-
const el =
|
|
76
|
+
const el =
|
|
77
|
+
/** @type {OverlayEl} */
|
|
77
78
|
await fixture(html`
|
|
78
79
|
<${tag}>
|
|
79
80
|
<div slot="content">content of the overlay</div>
|
|
80
81
|
<button slot="invoker">invoker button</button>
|
|
81
82
|
</${tag}>
|
|
82
|
-
`)
|
|
83
|
-
);
|
|
83
|
+
`);
|
|
84
84
|
el.opened = true;
|
|
85
85
|
await el.updateComplete;
|
|
86
86
|
await el._overlayCtrl._showComplete;
|
|
87
87
|
expect(el.opened).to.be.true;
|
|
88
88
|
expect(el._overlayCtrl.isShown).to.be.true;
|
|
89
|
-
|
|
90
89
|
el.opened = false;
|
|
91
90
|
await el.updateComplete;
|
|
92
91
|
await el._overlayCtrl._hideComplete;
|
|
93
92
|
expect(el.opened).to.be.false;
|
|
94
93
|
expect(el._overlayCtrl.isShown).to.be.false;
|
|
95
94
|
});
|
|
96
|
-
|
|
97
95
|
it('syncs OverlayController to opened', async () => {
|
|
98
|
-
const el =
|
|
96
|
+
const el =
|
|
97
|
+
/** @type {OverlayEl} */
|
|
99
98
|
await fixture(html`
|
|
100
99
|
<${tag}>
|
|
101
100
|
<div slot="content">content of the overlay</div>
|
|
102
101
|
<button slot="invoker">invoker button</button>
|
|
103
102
|
</${tag}>
|
|
104
|
-
`)
|
|
105
|
-
);
|
|
103
|
+
`);
|
|
106
104
|
expect(el.opened).to.be.false;
|
|
107
105
|
await el._overlayCtrl.show();
|
|
108
106
|
expect(el.opened).to.be.true;
|
|
109
|
-
|
|
110
107
|
await el._overlayCtrl.hide();
|
|
111
108
|
expect(el.opened).to.be.false;
|
|
112
109
|
});
|
|
@@ -116,8 +113,11 @@ export function runOverlayMixinSuite({ tagString, tag, suffix = '' }) {
|
|
|
116
113
|
* make sure it does not conflict with the Escape handler in OverlayController.
|
|
117
114
|
* */
|
|
118
115
|
it('syncs opened between overlayController and OverlayMixin on Escape', async () => {
|
|
119
|
-
const config = {
|
|
120
|
-
|
|
116
|
+
const config = {
|
|
117
|
+
hidesOnEsc: true,
|
|
118
|
+
};
|
|
119
|
+
const el =
|
|
120
|
+
/** @type {OverlayEl} */
|
|
121
121
|
await fixture(html`
|
|
122
122
|
<${tag} id="main-dialog" .config="${config}">
|
|
123
123
|
<div slot="content" id="mainContent">
|
|
@@ -131,11 +131,10 @@ export function runOverlayMixinSuite({ tagString, tag, suffix = '' }) {
|
|
|
131
131
|
</div>
|
|
132
132
|
<button slot="invoker" id="mainInvoker">invoker button</button>
|
|
133
133
|
</${tag}>
|
|
134
|
-
`)
|
|
135
|
-
);
|
|
134
|
+
`);
|
|
136
135
|
await el.updateComplete;
|
|
137
|
-
const subDialog = /** @type {OverlayEl} */
|
|
138
|
-
const nestedContentInput = /** @type {OverlayEl} */
|
|
136
|
+
const subDialog = /** @type {OverlayEl} */ el.querySelector('#sub-dialog');
|
|
137
|
+
const nestedContentInput = /** @type {OverlayEl} */ el.querySelector('#nestedContentInput');
|
|
139
138
|
|
|
140
139
|
// Note, OverlayController has Escape key listener added to "#nestedContent".
|
|
141
140
|
// And the sub-dialog adds the Escape key listener to "#nestedContentInput" which is a child evelement of "#nestedContent"
|
|
@@ -148,19 +147,16 @@ export function runOverlayMixinSuite({ tagString, tag, suffix = '' }) {
|
|
|
148
147
|
subDialog.opened = false;
|
|
149
148
|
}
|
|
150
149
|
});
|
|
151
|
-
|
|
152
150
|
el.opened = true;
|
|
153
151
|
await el.updateComplete;
|
|
154
152
|
await el._overlayCtrl._showComplete;
|
|
155
153
|
expect(el.opened).to.be.true;
|
|
156
154
|
expect(el._overlayCtrl.isShown).to.be.true;
|
|
157
|
-
|
|
158
155
|
subDialog.opened = true;
|
|
159
156
|
await subDialog.updateComplete;
|
|
160
157
|
await subDialog._overlayCtrl._showComplete;
|
|
161
158
|
expect(subDialog.opened).to.be.true;
|
|
162
159
|
expect(subDialog._overlayCtrl.isShown).to.be.true;
|
|
163
|
-
|
|
164
160
|
await mimicEscapePress(nestedContentInput);
|
|
165
161
|
expect(subDialog.opened).to.be.false;
|
|
166
162
|
expect(subDialog._overlayCtrl.isShown).to.be.false;
|
|
@@ -172,7 +168,8 @@ export function runOverlayMixinSuite({ tagString, tag, suffix = '' }) {
|
|
|
172
168
|
it('does not change the body size when opened', async () => {
|
|
173
169
|
const parentNode = document.createElement('div');
|
|
174
170
|
parentNode.setAttribute('style', 'height: 10000px; width: 10000px;');
|
|
175
|
-
const elWithBigParent =
|
|
171
|
+
const elWithBigParent =
|
|
172
|
+
/** @type {OverlayEl} */
|
|
176
173
|
await fixture(
|
|
177
174
|
html`
|
|
178
175
|
<${tag}>
|
|
@@ -180,9 +177,10 @@ export function runOverlayMixinSuite({ tagString, tag, suffix = '' }) {
|
|
|
180
177
|
<button slot="invoker">invoker button</button>
|
|
181
178
|
</${tag}>
|
|
182
179
|
`,
|
|
183
|
-
{
|
|
184
|
-
|
|
185
|
-
|
|
180
|
+
{
|
|
181
|
+
parentNode,
|
|
182
|
+
},
|
|
183
|
+
);
|
|
186
184
|
|
|
187
185
|
// For now, we skip this test for MacSafari, since the body.overlays-scroll-lock-ios-fix
|
|
188
186
|
// class results in a scrollbar when preventsScroll is true.
|
|
@@ -190,15 +188,9 @@ export function runOverlayMixinSuite({ tagString, tag, suffix = '' }) {
|
|
|
190
188
|
if (browserDetection.isMacSafari && elWithBigParent._overlayCtrl.preventsScroll) {
|
|
191
189
|
return;
|
|
192
190
|
}
|
|
193
|
-
|
|
194
|
-
const elWithBigParentOffsetParent = /** @type {HTMLElement} */ (
|
|
195
|
-
elWithBigParent?.offsetParent
|
|
196
|
-
);
|
|
197
|
-
|
|
191
|
+
const elWithBigParentOffsetParent = /** @type {HTMLElement} */ elWithBigParent?.offsetParent;
|
|
198
192
|
const { offsetWidth, offsetHeight } = elWithBigParentOffsetParent;
|
|
199
|
-
|
|
200
193
|
await elWithBigParent._overlayCtrl.show();
|
|
201
|
-
|
|
202
194
|
expect(elWithBigParent.opened).to.be.true;
|
|
203
195
|
expect(elWithBigParentOffsetParent.offsetWidth).to.equal(offsetWidth);
|
|
204
196
|
expect(elWithBigParentOffsetParent.offsetHeight).to.equal(offsetHeight);
|
|
@@ -206,35 +198,41 @@ export function runOverlayMixinSuite({ tagString, tag, suffix = '' }) {
|
|
|
206
198
|
expect(elWithBigParentOffsetParent.offsetWidth).to.equal(offsetWidth);
|
|
207
199
|
expect(elWithBigParentOffsetParent.offsetHeight).to.equal(offsetHeight);
|
|
208
200
|
});
|
|
209
|
-
|
|
210
201
|
it('should respond to initially and dynamically setting the config', async () => {
|
|
211
|
-
const itEl =
|
|
202
|
+
const itEl =
|
|
203
|
+
/** @type {OverlayEl} */
|
|
212
204
|
await fixture(html`
|
|
213
|
-
<${tag} .config=${{
|
|
205
|
+
<${tag} .config=${{
|
|
206
|
+
trapsKeyboardFocus: false,
|
|
207
|
+
viewportConfig: {
|
|
208
|
+
placement: 'top',
|
|
209
|
+
},
|
|
210
|
+
}}>
|
|
214
211
|
<div slot="content">content of the overlay</div>
|
|
215
212
|
<button slot="invoker">invoker button</button>
|
|
216
213
|
</${tag}>
|
|
217
|
-
`)
|
|
218
|
-
);
|
|
214
|
+
`);
|
|
219
215
|
itEl.opened = true;
|
|
220
216
|
await itEl.updateComplete;
|
|
221
217
|
expect(itEl._overlayCtrl.trapsKeyboardFocus).to.be.false;
|
|
222
|
-
|
|
223
218
|
await nextFrame();
|
|
224
|
-
itEl.config = {
|
|
219
|
+
itEl.config = {
|
|
220
|
+
viewportConfig: {
|
|
221
|
+
placement: 'left',
|
|
222
|
+
},
|
|
223
|
+
};
|
|
225
224
|
expect(itEl._overlayCtrl.viewportConfig.placement).to.equal('left');
|
|
226
225
|
});
|
|
227
|
-
|
|
228
226
|
it('fires "opened-changed" event on hide', async () => {
|
|
229
227
|
const spy = sinon.spy();
|
|
230
|
-
const el =
|
|
228
|
+
const el =
|
|
229
|
+
/** @type {OverlayEl} */
|
|
231
230
|
await fixture(html`
|
|
232
231
|
<${tag} @opened-changed="${spy}">
|
|
233
232
|
<div slot="content">content of the overlay</div>
|
|
234
233
|
<button slot="invoker">invoker button</button>
|
|
235
234
|
</${tag}>
|
|
236
|
-
`)
|
|
237
|
-
);
|
|
235
|
+
`);
|
|
238
236
|
expect(spy).not.to.have.been.called;
|
|
239
237
|
await el._overlayCtrl.show();
|
|
240
238
|
await el.updateComplete;
|
|
@@ -248,17 +246,16 @@ export function runOverlayMixinSuite({ tagString, tag, suffix = '' }) {
|
|
|
248
246
|
expect(spy.callCount).to.equal(2);
|
|
249
247
|
expect(el.opened).to.be.false;
|
|
250
248
|
});
|
|
251
|
-
|
|
252
249
|
it('fires "before-closed" event on hide', async () => {
|
|
253
250
|
const beforeSpy = sinon.spy();
|
|
254
|
-
const el =
|
|
251
|
+
const el =
|
|
252
|
+
/** @type {OverlayEl} */
|
|
255
253
|
await fixture(html`
|
|
256
254
|
<${tag} @before-closed="${beforeSpy}" opened>
|
|
257
255
|
<div slot="content">content of the overlay</div>
|
|
258
256
|
<button slot="invoker">invoker button</button>
|
|
259
257
|
</${tag}>
|
|
260
|
-
`)
|
|
261
|
-
);
|
|
258
|
+
`);
|
|
262
259
|
// Wait until it's done opening (handling features is async)
|
|
263
260
|
await nextFrame();
|
|
264
261
|
expect(beforeSpy).not.to.have.been.called;
|
|
@@ -266,36 +263,35 @@ export function runOverlayMixinSuite({ tagString, tag, suffix = '' }) {
|
|
|
266
263
|
expect(beforeSpy).to.have.been.called;
|
|
267
264
|
expect(el.opened).to.be.false;
|
|
268
265
|
});
|
|
269
|
-
|
|
270
266
|
it('fires before-opened" event on show', async () => {
|
|
271
267
|
const beforeSpy = sinon.spy();
|
|
272
|
-
const el =
|
|
268
|
+
const el =
|
|
269
|
+
/** @type {OverlayEl} */
|
|
273
270
|
await fixture(html`
|
|
274
271
|
<${tag} @before-opened="${beforeSpy}">
|
|
275
272
|
<div slot="content">content of the overlay</div>
|
|
276
273
|
<button slot="invoker">invoker button</button>
|
|
277
274
|
</${tag}>
|
|
278
|
-
`)
|
|
279
|
-
);
|
|
275
|
+
`);
|
|
280
276
|
expect(beforeSpy).not.to.have.been.called;
|
|
281
277
|
await el._overlayCtrl.show();
|
|
282
278
|
expect(beforeSpy).to.have.been.called;
|
|
283
279
|
expect(el.opened).to.be.true;
|
|
284
280
|
});
|
|
285
|
-
|
|
286
281
|
it('allows to call "preventDefault()" on "before-opened"/"before-closed" events', async () => {
|
|
287
282
|
function preventer(/** @type Event */ ev) {
|
|
288
283
|
ev.preventDefault();
|
|
289
284
|
}
|
|
290
|
-
const el =
|
|
285
|
+
const el =
|
|
286
|
+
/** @type {OverlayEl} */
|
|
291
287
|
await fixture(html`
|
|
292
288
|
<${tag} @before-opened="${preventer}" @before-closed="${preventer}">
|
|
293
289
|
<div slot="content">content of the overlay</div>
|
|
294
290
|
<button slot="invoker">invoker button</button>
|
|
295
291
|
</${tag}>
|
|
296
|
-
`)
|
|
297
|
-
|
|
298
|
-
|
|
292
|
+
`);
|
|
293
|
+
/** @type {HTMLElement} */
|
|
294
|
+
el.querySelector('[slot="invoker"]').click();
|
|
299
295
|
await nextFrame();
|
|
300
296
|
expect(el.opened).to.be.false;
|
|
301
297
|
|
|
@@ -305,13 +301,16 @@ export function runOverlayMixinSuite({ tagString, tag, suffix = '' }) {
|
|
|
305
301
|
await nextFrame();
|
|
306
302
|
expect(el.opened).to.be.false;
|
|
307
303
|
});
|
|
308
|
-
|
|
309
304
|
it('hides content on "close-overlay" event within the content ', async () => {
|
|
310
305
|
function sendCloseEvent(/** @type {Event} */ e) {
|
|
311
|
-
e.target?.dispatchEvent(
|
|
306
|
+
e.target?.dispatchEvent(
|
|
307
|
+
new Event('close-overlay', {
|
|
308
|
+
bubbles: true,
|
|
309
|
+
}),
|
|
310
|
+
);
|
|
312
311
|
}
|
|
313
|
-
|
|
314
|
-
|
|
312
|
+
const el =
|
|
313
|
+
/** @type {OverlayEl} */
|
|
315
314
|
await fixture(html`
|
|
316
315
|
<${tag} opened>
|
|
317
316
|
<div slot="content">
|
|
@@ -320,8 +319,7 @@ export function runOverlayMixinSuite({ tagString, tag, suffix = '' }) {
|
|
|
320
319
|
</div>
|
|
321
320
|
<button slot="invoker">invoker button</button>
|
|
322
321
|
</${tag}>
|
|
323
|
-
`)
|
|
324
|
-
);
|
|
322
|
+
`);
|
|
325
323
|
// @ts-ignore
|
|
326
324
|
el.querySelector('[slot=content] button').click();
|
|
327
325
|
await el._overlayCtrl._hideComplete;
|
|
@@ -330,50 +328,50 @@ export function runOverlayMixinSuite({ tagString, tag, suffix = '' }) {
|
|
|
330
328
|
|
|
331
329
|
// See https://github.com/ing-bank/lion/discussions/1095
|
|
332
330
|
it('exposes "open()", "close()" and "toggle()" methods', async () => {
|
|
333
|
-
const el =
|
|
331
|
+
const el =
|
|
332
|
+
/** @type {OverlayEl} */
|
|
334
333
|
await fixture(html`
|
|
335
334
|
<${tag}>
|
|
336
335
|
<div slot="content">content</div>
|
|
337
336
|
<button slot="invoker">invoker button</button>
|
|
338
337
|
</${tag}>
|
|
339
|
-
`)
|
|
340
|
-
);
|
|
338
|
+
`);
|
|
341
339
|
expect(el.opened).to.be.false;
|
|
342
340
|
el.open();
|
|
343
341
|
await nextFrame();
|
|
344
342
|
expect(el.opened).to.be.true;
|
|
345
|
-
|
|
346
343
|
el.close();
|
|
347
344
|
await nextFrame();
|
|
348
345
|
expect(el.opened).to.be.false;
|
|
349
|
-
|
|
350
346
|
el.toggle();
|
|
351
347
|
await nextFrame();
|
|
352
348
|
expect(el.opened).to.be.true;
|
|
353
|
-
|
|
354
349
|
el.toggle();
|
|
355
350
|
await nextFrame();
|
|
356
351
|
expect(el.opened).to.be.false;
|
|
357
352
|
});
|
|
358
|
-
|
|
359
353
|
it('exposes "repositionOverlay()" method', async () => {
|
|
360
|
-
const el =
|
|
354
|
+
const el =
|
|
355
|
+
/** @type {OverlayEl} */
|
|
361
356
|
await fixture(html`
|
|
362
|
-
<${tag} opened .config="${{
|
|
357
|
+
<${tag} opened .config="${{
|
|
358
|
+
placementMode: 'local',
|
|
359
|
+
}}">
|
|
363
360
|
<div slot="content">content</div>
|
|
364
361
|
<button slot="invoker">invoker button</button>
|
|
365
362
|
</${tag}>
|
|
366
|
-
`)
|
|
367
|
-
);
|
|
363
|
+
`);
|
|
368
364
|
await OverlayController.popperModule;
|
|
369
365
|
// @ts-ignore [popper-instance-access-in-test]
|
|
370
366
|
sinon.spy(el._overlayCtrl._popper, 'update');
|
|
371
367
|
el.repositionOverlay();
|
|
372
368
|
// @ts-ignore [popper-instance-access-in-test]
|
|
373
369
|
expect(el._overlayCtrl._popper.update).to.have.been.been.calledOnce;
|
|
374
|
-
|
|
375
370
|
if (!el._overlayCtrl.isTooltip) {
|
|
376
|
-
el.config = {
|
|
371
|
+
el.config = {
|
|
372
|
+
...el.config,
|
|
373
|
+
placementMode: 'global',
|
|
374
|
+
};
|
|
377
375
|
el.repositionOverlay();
|
|
378
376
|
// @ts-ignore [popper-instance-access-in-test]
|
|
379
377
|
expect(el._overlayCtrl._popper.update).to.have.been.been.calledOnce;
|
|
@@ -382,34 +380,34 @@ export function runOverlayMixinSuite({ tagString, tag, suffix = '' }) {
|
|
|
382
380
|
|
|
383
381
|
/** See: https://github.com/ing-bank/lion/issues/1075 */
|
|
384
382
|
it('stays open after config update', async () => {
|
|
385
|
-
const el =
|
|
383
|
+
const el =
|
|
384
|
+
/** @type {OverlayEl} */
|
|
386
385
|
await fixture(html`
|
|
387
386
|
<${tag}>
|
|
388
387
|
<div slot="content">content</div>
|
|
389
388
|
<button slot="invoker">invoker button</button>
|
|
390
389
|
</${tag}>
|
|
391
|
-
`)
|
|
392
|
-
);
|
|
390
|
+
`);
|
|
393
391
|
el.open();
|
|
394
392
|
await el._overlayCtrl._showComplete;
|
|
395
|
-
|
|
396
|
-
|
|
393
|
+
el.config = {
|
|
394
|
+
...el.config,
|
|
395
|
+
hidesOnOutsideClick: !el.config.hidesOnOutsideClick,
|
|
396
|
+
};
|
|
397
397
|
await nextFrame();
|
|
398
398
|
expect(el.opened).to.be.true;
|
|
399
399
|
expect(getComputedStyle(el._overlayCtrl.contentWrapperNode).display).not.to.equal('none');
|
|
400
400
|
});
|
|
401
|
-
|
|
402
401
|
it('does not run setup when disconnected', async () => {
|
|
403
|
-
const el =
|
|
402
|
+
const el =
|
|
403
|
+
/** @type {OverlayEl} */
|
|
404
404
|
fixtureSync(html`
|
|
405
405
|
<${tag}>
|
|
406
406
|
<div slot="content">content</div>
|
|
407
407
|
<button slot="invoker">invoker button</button>
|
|
408
408
|
</${tag}>
|
|
409
|
-
`)
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
const parentOfEl = /** @type {HTMLDivElement} */ (el.parentElement);
|
|
409
|
+
`);
|
|
410
|
+
const parentOfEl = /** @type {HTMLDivElement} */ el.parentElement;
|
|
413
411
|
|
|
414
412
|
// @ts-expect-error [allow-protected-in-tests]
|
|
415
413
|
const setupSpy = sinon.spy(el, '_setupOverlayCtrl');
|
|
@@ -422,45 +420,45 @@ export function runOverlayMixinSuite({ tagString, tag, suffix = '' }) {
|
|
|
422
420
|
parentOfEl.appendChild(el);
|
|
423
421
|
await el.updateComplete;
|
|
424
422
|
expect(setupSpy.callCount).to.equal(1);
|
|
425
|
-
|
|
426
423
|
setupSpy.restore();
|
|
427
424
|
});
|
|
428
425
|
|
|
429
426
|
/** Prevent unnecessary reset side effects, such as show animation. See: https://github.com/ing-bank/lion/issues/1075 */
|
|
430
427
|
it('does not call updateConfig on equivalent config change', async () => {
|
|
431
|
-
const el =
|
|
428
|
+
const el =
|
|
429
|
+
/** @type {OverlayEl} */
|
|
432
430
|
await fixture(html`
|
|
433
431
|
<${tag}>
|
|
434
432
|
<div slot="content">content</div>
|
|
435
433
|
<button slot="invoker">invoker button</button>
|
|
436
434
|
</${tag}>
|
|
437
|
-
`)
|
|
438
|
-
);
|
|
435
|
+
`);
|
|
439
436
|
el.open();
|
|
440
437
|
await nextFrame();
|
|
441
|
-
|
|
442
438
|
const stub = sinon.stub(el._overlayCtrl, 'updateConfig');
|
|
443
439
|
stub.callsFake(() => {
|
|
444
440
|
throw new Error('Unexpected config update');
|
|
445
441
|
});
|
|
446
|
-
|
|
447
442
|
expect(() => {
|
|
448
|
-
el.config = {
|
|
443
|
+
el.config = {
|
|
444
|
+
...el.config,
|
|
445
|
+
};
|
|
449
446
|
}).to.not.throw;
|
|
450
447
|
stub.restore();
|
|
451
448
|
});
|
|
452
|
-
|
|
453
449
|
it('should not visually hide when hidesOnEsc / hidesOnOutsideEsc is not configured', async () => {
|
|
454
|
-
const el =
|
|
450
|
+
const el =
|
|
451
|
+
/** @type {OverlayEl} */
|
|
455
452
|
await fixture(html`
|
|
456
|
-
<${tag} .config="${{
|
|
453
|
+
<${tag} .config="${{
|
|
454
|
+
hidesOnEsc: false,
|
|
455
|
+
hidesOnOutsideEsc: false,
|
|
456
|
+
}}" opened>
|
|
457
457
|
<div slot="content">content of the overlay</div>
|
|
458
458
|
<button slot="invoker">invoker button</button>
|
|
459
459
|
</${tag}>
|
|
460
|
-
`)
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
const dialogEl = /** @type {HTMLDialogElement} */ (el._overlayCtrl.__wrappingDialogNode);
|
|
460
|
+
`);
|
|
461
|
+
const dialogEl = /** @type {HTMLDialogElement} */ el._overlayCtrl.__wrappingDialogNode;
|
|
464
462
|
|
|
465
463
|
// @ts-ignore [checkVisibility lives on the polyfilled dialog]
|
|
466
464
|
expect(dialogEl.checkVisibility()).to.be.true;
|
|
@@ -469,17 +467,16 @@ export function runOverlayMixinSuite({ tagString, tag, suffix = '' }) {
|
|
|
469
467
|
// @ts-ignore [checkVisibility lives on the polyfilled dialog]
|
|
470
468
|
expect(dialogEl.checkVisibility()).to.be.true;
|
|
471
469
|
});
|
|
472
|
-
|
|
473
470
|
describe('Teardown', () => {
|
|
474
471
|
it('does not teardown when moving dom nodes', async () => {
|
|
475
|
-
const el =
|
|
472
|
+
const el =
|
|
473
|
+
/** @type {OverlayEl} */
|
|
476
474
|
await fixture(html`
|
|
477
475
|
<${tag}>
|
|
478
476
|
<div slot="content">content</div>
|
|
479
477
|
<button slot="invoker">invoker button</button>
|
|
480
478
|
</${tag}>
|
|
481
|
-
`)
|
|
482
|
-
);
|
|
479
|
+
`);
|
|
483
480
|
// @ts-expect-error [allow-protected] in tests
|
|
484
481
|
const teardownSpy = sinon.spy(el, '_teardownOverlayCtrl');
|
|
485
482
|
// @ts-expect-error [allow-protected] in tests
|
|
@@ -490,31 +487,27 @@ export function runOverlayMixinSuite({ tagString, tag, suffix = '' }) {
|
|
|
490
487
|
document.body.appendChild(newParent);
|
|
491
488
|
newParent.appendChild(el);
|
|
492
489
|
expect(spyDisconnected.callCount).to.equal(1);
|
|
493
|
-
|
|
494
490
|
const otherParent = document.createElement('div');
|
|
495
491
|
document.body.appendChild(otherParent);
|
|
496
492
|
otherParent.appendChild(el);
|
|
497
493
|
await aTimeout(0);
|
|
498
|
-
|
|
499
494
|
expect(spyDisconnected.callCount).to.equal(2);
|
|
500
495
|
expect(teardownSpy.callCount).to.equal(0);
|
|
501
496
|
|
|
502
497
|
// simulate a permanent disconnect
|
|
503
498
|
otherParent.removeChild(el);
|
|
504
499
|
await aTimeout(0);
|
|
505
|
-
|
|
506
500
|
expect(teardownSpy.callCount).to.equal(1);
|
|
507
501
|
});
|
|
508
|
-
|
|
509
502
|
it('allows to disconnect and reconnect later', async () => {
|
|
510
|
-
const el =
|
|
503
|
+
const el =
|
|
504
|
+
/** @type {OverlayEl} */
|
|
511
505
|
await fixture(html`
|
|
512
506
|
<${tag}>
|
|
513
507
|
<div slot="content">content</div>
|
|
514
508
|
<button slot="invoker">invoker button</button>
|
|
515
509
|
</${tag}>
|
|
516
|
-
`)
|
|
517
|
-
);
|
|
510
|
+
`);
|
|
518
511
|
// @ts-expect-error [allow-protected] in tests
|
|
519
512
|
const teardownSpy = sinon.spy(el, '_teardownOverlayCtrl');
|
|
520
513
|
// @ts-expect-error [allow-protected] in tests
|
|
@@ -526,33 +519,28 @@ export function runOverlayMixinSuite({ tagString, tag, suffix = '' }) {
|
|
|
526
519
|
const offlineParent = document.createElement('div');
|
|
527
520
|
offlineParent.appendChild(el);
|
|
528
521
|
await aTimeout(0);
|
|
529
|
-
|
|
530
522
|
expect(spyDisconnected.callCount).to.equal(1);
|
|
531
523
|
expect(teardownSpy.callCount).to.equal(1);
|
|
532
524
|
|
|
533
525
|
// reconnect
|
|
534
526
|
document.body.appendChild(offlineParent);
|
|
535
527
|
await aTimeout(0);
|
|
536
|
-
|
|
537
528
|
expect(setupSpy.callCount).to.equal(1);
|
|
538
529
|
});
|
|
539
|
-
|
|
540
530
|
it('works with cache directive when reconnected', async () => {
|
|
541
531
|
class CachingContext extends LitElement {
|
|
542
532
|
static properties = {
|
|
543
|
-
showOverlay: {
|
|
533
|
+
showOverlay: {
|
|
534
|
+
type: Boolean,
|
|
535
|
+
},
|
|
544
536
|
};
|
|
545
|
-
|
|
546
537
|
constructor() {
|
|
547
538
|
super();
|
|
548
|
-
|
|
549
539
|
this.showOverlay = true;
|
|
550
540
|
}
|
|
551
|
-
|
|
552
541
|
get overlayEl() {
|
|
553
542
|
return this.shadowRoot?.querySelector('#myOverlay');
|
|
554
543
|
}
|
|
555
|
-
|
|
556
544
|
render() {
|
|
557
545
|
return html`${cache(
|
|
558
546
|
this.showOverlay
|
|
@@ -564,15 +552,13 @@ export function runOverlayMixinSuite({ tagString, tag, suffix = '' }) {
|
|
|
564
552
|
)}`;
|
|
565
553
|
}
|
|
566
554
|
}
|
|
567
|
-
|
|
568
555
|
const cachingTagName = defineCE(CachingContext);
|
|
569
556
|
const cachingTag = unsafeStatic(cachingTagName);
|
|
570
|
-
|
|
571
|
-
|
|
557
|
+
const el =
|
|
558
|
+
/** @type {CachingContext} */
|
|
572
559
|
await fixture(html`
|
|
573
560
|
<${cachingTag}></${cachingTag}>
|
|
574
|
-
`)
|
|
575
|
-
);
|
|
561
|
+
`);
|
|
576
562
|
|
|
577
563
|
// @ts-expect-error [allow-protected] in tests
|
|
578
564
|
const teardownSpy = sinon.spy(el.overlayEl, '_teardownOverlayCtrl');
|
|
@@ -580,35 +566,32 @@ export function runOverlayMixinSuite({ tagString, tag, suffix = '' }) {
|
|
|
580
566
|
const spyDisconnected = sinon.spy(el.overlayEl, '_isPermanentlyDisconnected');
|
|
581
567
|
// @ts-expect-error [allow-protected] in tests
|
|
582
568
|
const setupSpy = sinon.spy(el.overlayEl, '_setupOverlayCtrl');
|
|
583
|
-
|
|
584
569
|
el.showOverlay = false;
|
|
585
570
|
// render the new content
|
|
586
571
|
await el.updateComplete;
|
|
587
572
|
// wait for the teardown to complete
|
|
588
573
|
await el.updateComplete;
|
|
589
|
-
|
|
590
574
|
expect(spyDisconnected.callCount).to.equal(1);
|
|
591
575
|
expect(teardownSpy.callCount).to.equal(1);
|
|
592
576
|
expect(setupSpy.callCount).to.equal(0);
|
|
593
|
-
|
|
594
577
|
el.showOverlay = true;
|
|
595
578
|
await el.updateComplete;
|
|
596
579
|
expect(setupSpy.callCount).to.equal(1);
|
|
597
|
-
|
|
598
|
-
const
|
|
599
|
-
|
|
580
|
+
const elCtrl = /** @type {OverlayEl} */ el.overlayEl?._overlayCtrl;
|
|
581
|
+
const isCtrlRegisteredAtOverlaysManager = elCtrl.manager.list.some(
|
|
582
|
+
(ctrl) => elCtrl === ctrl,
|
|
583
|
+
);
|
|
600
584
|
expect(isCtrlRegisteredAtOverlaysManager).to.equal(true);
|
|
601
585
|
});
|
|
602
|
-
|
|
603
586
|
it('teardown completes successfully when open overlay is removed from DOM', async () => {
|
|
604
|
-
const el =
|
|
587
|
+
const el =
|
|
588
|
+
/** @type {OverlayEl} */
|
|
605
589
|
await fixture(html`
|
|
606
590
|
<${tag}>
|
|
607
591
|
<div slot="content">content of the overlay</div>
|
|
608
592
|
<button slot="invoker">invoker button</button>
|
|
609
593
|
</${tag}>
|
|
610
|
-
`)
|
|
611
|
-
);
|
|
594
|
+
`);
|
|
612
595
|
|
|
613
596
|
// 1. Open the overlay
|
|
614
597
|
el.opened = true;
|
|
@@ -617,25 +600,26 @@ export function runOverlayMixinSuite({ tagString, tag, suffix = '' }) {
|
|
|
617
600
|
expect(el._overlayCtrl.isShown).to.be.true;
|
|
618
601
|
|
|
619
602
|
// 2. Remove element from DOM without closing
|
|
620
|
-
/** @type {HTMLElement} */
|
|
603
|
+
/** @type {HTMLElement} */
|
|
604
|
+
el.parentNode.removeChild(el);
|
|
621
605
|
|
|
622
606
|
// 3. Wait for _isPermanentlyDisconnected to resolve and teardown to complete
|
|
623
607
|
await aTimeout(0);
|
|
624
608
|
|
|
625
609
|
// 4. Teardown should complete without errors
|
|
626
610
|
// The controller should no longer be registered
|
|
627
|
-
expect(el._overlayCtrl.manager.list.find(ctrl => ctrl === el._overlayCtrl)).to.be
|
|
611
|
+
expect(el._overlayCtrl.manager.list.find((ctrl) => ctrl === el._overlayCtrl)).to.be
|
|
612
|
+
.undefined;
|
|
628
613
|
});
|
|
629
|
-
|
|
630
614
|
it('does not throw when element is removed from DOM while overlay is open', async () => {
|
|
631
|
-
const el =
|
|
615
|
+
const el =
|
|
616
|
+
/** @type {OverlayEl} */
|
|
632
617
|
await fixture(html`
|
|
633
618
|
<${tag}>
|
|
634
619
|
<div slot="content">content of the overlay</div>
|
|
635
620
|
<button slot="invoker">invoker button</button>
|
|
636
621
|
</${tag}>
|
|
637
|
-
`)
|
|
638
|
-
);
|
|
622
|
+
`);
|
|
639
623
|
|
|
640
624
|
// 1. Open the overlay
|
|
641
625
|
el.opened = true;
|
|
@@ -647,7 +631,8 @@ export function runOverlayMixinSuite({ tagString, tag, suffix = '' }) {
|
|
|
647
631
|
const ctrl = el._overlayCtrl;
|
|
648
632
|
|
|
649
633
|
// 3. Remove element from DOM without closing the overlay
|
|
650
|
-
/** @type {HTMLElement} */
|
|
634
|
+
/** @type {HTMLElement} */
|
|
635
|
+
el.parentNode.removeChild(el);
|
|
651
636
|
|
|
652
637
|
// 4. Wait for _isPermanentlyDisconnected to resolve and teardown to complete
|
|
653
638
|
await aTimeout(0);
|
|
@@ -657,23 +642,19 @@ export function runOverlayMixinSuite({ tagString, tag, suffix = '' }) {
|
|
|
657
642
|
await ctrl.hide();
|
|
658
643
|
expect(ctrl.isShown).to.be.false;
|
|
659
644
|
});
|
|
660
|
-
|
|
661
645
|
it('correctly removes event listeners when disconnected from dom', async () => {
|
|
662
|
-
const el =
|
|
646
|
+
const el =
|
|
647
|
+
/** @type {OverlayEl} */
|
|
663
648
|
await fixture(html`
|
|
664
649
|
<${tag}>
|
|
665
650
|
<div slot="content">content</div>
|
|
666
651
|
<button slot="invoker">invoker button</button>
|
|
667
652
|
</${tag}>
|
|
668
|
-
`)
|
|
669
|
-
);
|
|
670
|
-
|
|
653
|
+
`);
|
|
671
654
|
const eventRemoveSpy = sinon.spy(el._overlayCtrl, 'removeEventListener');
|
|
672
655
|
el.parentNode?.removeChild(el);
|
|
673
656
|
await el.updateComplete;
|
|
674
|
-
|
|
675
657
|
expect(eventRemoveSpy.callCount).to.equal(0);
|
|
676
|
-
|
|
677
658
|
await el.updateComplete;
|
|
678
659
|
const hasOneInstanceFor = (
|
|
679
660
|
/** @type {string} */ eventName,
|
|
@@ -698,16 +679,15 @@ export function runOverlayMixinSuite({ tagString, tag, suffix = '' }) {
|
|
|
698
679
|
});
|
|
699
680
|
});
|
|
700
681
|
});
|
|
701
|
-
|
|
702
682
|
describe(`OverlayMixin${suffix} nested`, () => {
|
|
703
683
|
// For some reason, globalRootNode is not cleared properly on disconnectedCallback from previous overlay test fixtures...
|
|
704
684
|
// Not sure why this "bug" happens...
|
|
705
685
|
beforeEach(() => {
|
|
706
686
|
resetOverlaysManager();
|
|
707
687
|
});
|
|
708
|
-
|
|
709
688
|
it('supports nested overlays', async () => {
|
|
710
|
-
const el =
|
|
689
|
+
const el =
|
|
690
|
+
/** @type {OverlayEl} */
|
|
711
691
|
await fixture(html`
|
|
712
692
|
<${tag} id="main-dialog">
|
|
713
693
|
<div slot="content" id="mainContent">
|
|
@@ -721,55 +701,48 @@ export function runOverlayMixinSuite({ tagString, tag, suffix = '' }) {
|
|
|
721
701
|
</div>
|
|
722
702
|
<button slot="invoker" id="mainInvoker">invoker button</button>
|
|
723
703
|
</${tag}>
|
|
724
|
-
`)
|
|
725
|
-
);
|
|
726
|
-
|
|
704
|
+
`);
|
|
727
705
|
if (el._overlayCtrl.placementMode === 'global') {
|
|
728
706
|
expect(getGlobalOverlayCtrls().length).to.equal(2);
|
|
729
707
|
}
|
|
730
|
-
|
|
731
708
|
el.opened = true;
|
|
732
709
|
await aTimeout(0);
|
|
733
710
|
expect(el._overlayCtrl.contentNode).to.be.displayed;
|
|
734
|
-
const nestedOverlayEl =
|
|
735
|
-
|
|
736
|
-
|
|
711
|
+
const nestedOverlayEl =
|
|
712
|
+
/** @type {OverlayEl} */
|
|
713
|
+
el._overlayCtrl.contentNode.querySelector(tagString);
|
|
737
714
|
nestedOverlayEl.opened = true;
|
|
738
715
|
await aTimeout(0);
|
|
739
716
|
expect(nestedOverlayEl._overlayCtrl.contentNode).to.be.displayed;
|
|
740
717
|
});
|
|
741
|
-
|
|
742
718
|
it('[global] allows for moving of the element', async () => {
|
|
743
|
-
const el =
|
|
719
|
+
const el =
|
|
720
|
+
/** @type {OverlayEl} */
|
|
744
721
|
await fixture(html`
|
|
745
722
|
<${tag}>
|
|
746
723
|
<div slot="content" id="nestedContent">content of the nested overlay</div>
|
|
747
724
|
<button slot="invoker">invoker nested</button>
|
|
748
725
|
</${tag}>
|
|
749
|
-
`)
|
|
750
|
-
);
|
|
726
|
+
`);
|
|
751
727
|
if (el._overlayCtrl.placementMode === 'global') {
|
|
752
728
|
expect(getGlobalOverlayCtrls().length).to.equal(1);
|
|
753
|
-
|
|
754
|
-
const moveTarget = /** @type {OverlayEl} */ (await fixture('<div id="target"></div>'));
|
|
729
|
+
const moveTarget = /** @type {OverlayEl} */ await fixture('<div id="target"></div>');
|
|
755
730
|
moveTarget.appendChild(el);
|
|
756
731
|
await el.updateComplete;
|
|
757
|
-
|
|
758
732
|
expect(getGlobalOverlayCtrls().length).to.equal(1);
|
|
759
733
|
}
|
|
760
734
|
});
|
|
761
|
-
|
|
762
735
|
it('reconstructs the overlay when disconnected and reconnected to DOM (support for nested overlay nodes)', async () => {
|
|
763
|
-
const nestedEl =
|
|
736
|
+
const nestedEl =
|
|
737
|
+
/** @type {OverlayEl} */
|
|
764
738
|
await fixture(html`
|
|
765
739
|
<${tag} id="nest">
|
|
766
740
|
<div slot="content" id="nestedContent">content of the nested overlay</div>
|
|
767
741
|
<button slot="invoker">invoker nested</button>
|
|
768
742
|
</${tag}>
|
|
769
|
-
`)
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
const el = /** @type {OverlayEl} */ (
|
|
743
|
+
`);
|
|
744
|
+
const el =
|
|
745
|
+
/** @type {OverlayEl} */
|
|
773
746
|
await fixture(html`
|
|
774
747
|
<${tag} id="main">
|
|
775
748
|
<div slot="content" id="mainContent">
|
|
@@ -778,19 +751,17 @@ export function runOverlayMixinSuite({ tagString, tag, suffix = '' }) {
|
|
|
778
751
|
</div>
|
|
779
752
|
<button slot="invoker">invoker button</button>
|
|
780
753
|
</${tag}>
|
|
781
|
-
`)
|
|
782
|
-
);
|
|
783
|
-
|
|
754
|
+
`);
|
|
784
755
|
if (el._overlayCtrl.placementMode === 'global') {
|
|
785
756
|
// Find the outlets that are not backdrop outlets
|
|
786
757
|
expect(getGlobalOverlayCtrls().length).to.equal(2);
|
|
787
758
|
// Check that the last container is the nested one with the intended content
|
|
788
759
|
expect(el.contains(nestedEl)).to.be.true;
|
|
789
760
|
} else {
|
|
790
|
-
const contentNode =
|
|
761
|
+
const contentNode =
|
|
762
|
+
/** @type {HTMLElement} */
|
|
791
763
|
// @ts-ignore [allow-protected] in tests
|
|
792
|
-
el._overlayContentNode.querySelector('#nestedContent')
|
|
793
|
-
);
|
|
764
|
+
el._overlayContentNode.querySelector('#nestedContent');
|
|
794
765
|
expect(contentNode).to.not.be.null;
|
|
795
766
|
expect(contentNode.innerText).to.equal('content of the nested overlay');
|
|
796
767
|
}
|