@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
|
@@ -3,7 +3,6 @@ import { SlotMixin } from '@lion/ui/core.js';
|
|
|
3
3
|
import { LitElement } from 'lit';
|
|
4
4
|
import sinon from 'sinon';
|
|
5
5
|
import { moveUserProvidedDefaultSlottablesToTarget } from '../src/SlotMixin.js';
|
|
6
|
-
|
|
7
6
|
import { ScopedElementsMixin, supportsScopedRegistry } from '../src/ScopedElementsMixin.js';
|
|
8
7
|
import { isActiveElement } from '../test-helpers/isActiveElement.js';
|
|
9
8
|
|
|
@@ -12,6 +11,17 @@ import { isActiveElement } from '../test-helpers/isActiveElement.js';
|
|
|
12
11
|
*/
|
|
13
12
|
|
|
14
13
|
describe('SlotMixin', () => {
|
|
14
|
+
it('preserves a subclass constructor when the mixin is reapplied', () => {
|
|
15
|
+
class SlottedElement extends SlotMixin(LitElement) {
|
|
16
|
+
get slots() {
|
|
17
|
+
return {
|
|
18
|
+
...super.slots,
|
|
19
|
+
content: () => document.createElement('span'),
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
expect(SlotMixin(SlottedElement)).to.equal(SlottedElement);
|
|
24
|
+
});
|
|
15
25
|
it('inserts provided element into light dom and sets slot', async () => {
|
|
16
26
|
const tag = defineCE(
|
|
17
27
|
class extends SlotMixin(LitElement) {
|
|
@@ -26,7 +36,6 @@ describe('SlotMixin', () => {
|
|
|
26
36
|
const el = await fixture(`<${tag}></${tag}>`);
|
|
27
37
|
expect(el.children[0].slot).to.equal('feedback');
|
|
28
38
|
});
|
|
29
|
-
|
|
30
39
|
it("supports default slot with ''", async () => {
|
|
31
40
|
const tag = defineCE(
|
|
32
41
|
class extends SlotMixin(LitElement) {
|
|
@@ -42,7 +51,6 @@ describe('SlotMixin', () => {
|
|
|
42
51
|
expect(el.children[0].slot).to.equal('');
|
|
43
52
|
expect(el.children[0]).dom.to.equal('<div></div>');
|
|
44
53
|
});
|
|
45
|
-
|
|
46
54
|
it('supports default slot in conjunction with named slots', async () => {
|
|
47
55
|
const tag = defineCE(
|
|
48
56
|
class extends SlotMixin(LitElement) {
|
|
@@ -61,7 +69,6 @@ describe('SlotMixin', () => {
|
|
|
61
69
|
expect(el.children[0]).dom.to.equal('<a slot="foo"></a>');
|
|
62
70
|
expect(el.children[1]).dom.to.equal('<div></div>');
|
|
63
71
|
});
|
|
64
|
-
|
|
65
72
|
it('does not override user provided slots', async () => {
|
|
66
73
|
const shouldReturn = false;
|
|
67
74
|
const tag = defineCE(
|
|
@@ -83,12 +90,10 @@ describe('SlotMixin', () => {
|
|
|
83
90
|
);
|
|
84
91
|
const el = await fixture(`<${tag}><p slot="feedback">user-content</p></${tag}>`);
|
|
85
92
|
expect(el.children[0].tagName).to.equal('P');
|
|
86
|
-
expect(/** @type HTMLParagraphElement */
|
|
87
|
-
|
|
93
|
+
expect(/** @type HTMLParagraphElement */ el.children[0].innerText).to.equal('user-content');
|
|
88
94
|
expect(el.children[1].tagName).to.equal('DIV');
|
|
89
|
-
expect(/** @type HTMLParagraphElement */
|
|
95
|
+
expect(/** @type HTMLParagraphElement */ el.children[1].slot).to.equal('even-more-feedback');
|
|
90
96
|
});
|
|
91
|
-
|
|
92
97
|
it('does add when user provided slots are not direct children', async () => {
|
|
93
98
|
const tag = defineCE(
|
|
94
99
|
class extends SlotMixin(LitElement) {
|
|
@@ -101,13 +106,12 @@ describe('SlotMixin', () => {
|
|
|
101
106
|
},
|
|
102
107
|
);
|
|
103
108
|
const el = await fixture(`<${tag}><p><span slot="content">user-content</span></p></${tag}>`);
|
|
104
|
-
const slot =
|
|
105
|
-
|
|
106
|
-
|
|
109
|
+
const slot =
|
|
110
|
+
/** @type HTMLDivElement */
|
|
111
|
+
Array.from(el.children).find((elm) => elm.slot === 'content');
|
|
107
112
|
expect(slot.tagName).to.equal('DIV');
|
|
108
113
|
expect(slot.innerText).to.equal('');
|
|
109
114
|
});
|
|
110
|
-
|
|
111
115
|
it("allows to check which slots have been created via this._isPrivateSlot('slotname')", async () => {
|
|
112
116
|
let renderSlot = true;
|
|
113
117
|
class SlotPrivateText extends SlotMixin(LitElement) {
|
|
@@ -117,24 +121,21 @@ describe('SlotMixin', () => {
|
|
|
117
121
|
conditional: () => (renderSlot ? document.createElement('div') : undefined),
|
|
118
122
|
};
|
|
119
123
|
}
|
|
120
|
-
|
|
121
124
|
didCreateConditionalSlot() {
|
|
122
125
|
return this._isPrivateSlot('conditional');
|
|
123
126
|
}
|
|
124
127
|
}
|
|
125
|
-
|
|
126
128
|
const tag = defineCE(SlotPrivateText);
|
|
127
|
-
const el = /** @type {SlotPrivateText} */
|
|
129
|
+
const el = /** @type {SlotPrivateText} */ await fixture(`<${tag}><${tag}>`);
|
|
128
130
|
expect(el.didCreateConditionalSlot()).to.be.true;
|
|
129
|
-
const elUserSlot =
|
|
130
|
-
|
|
131
|
-
|
|
131
|
+
const elUserSlot =
|
|
132
|
+
/** @type {SlotPrivateText} */
|
|
133
|
+
await fixture(`<${tag}><p slot="conditional">foo</p><${tag}>`);
|
|
132
134
|
expect(elUserSlot.didCreateConditionalSlot()).to.be.false;
|
|
133
135
|
renderSlot = false;
|
|
134
|
-
const elNoSlot = /** @type {SlotPrivateText} */
|
|
136
|
+
const elNoSlot = /** @type {SlotPrivateText} */ await fixture(`<${tag}><${tag}>`);
|
|
135
137
|
expect(elNoSlot.didCreateConditionalSlot()).to.be.false;
|
|
136
138
|
});
|
|
137
|
-
|
|
138
139
|
it('should move default slots to target', async () => {
|
|
139
140
|
const target = document.createElement('div');
|
|
140
141
|
const source = document.createElement('div');
|
|
@@ -208,7 +209,6 @@ describe('SlotMixin', () => {
|
|
|
208
209
|
<div class="test3"></div>
|
|
209
210
|
${namedSlottable}
|
|
210
211
|
`;
|
|
211
|
-
|
|
212
212
|
moveUserProvidedDefaultSlottablesToTarget(source, target);
|
|
213
213
|
expect(target.children.length).to.equal(3);
|
|
214
214
|
const test1Element = target.querySelector('.test1');
|
|
@@ -218,60 +218,55 @@ describe('SlotMixin', () => {
|
|
|
218
218
|
expect(test2Element?.parentElement === target).to.equal(true);
|
|
219
219
|
expect(test3Element?.parentElement === target).to.equal(true);
|
|
220
220
|
});
|
|
221
|
-
|
|
222
221
|
describe('Rerender', () => {
|
|
223
222
|
it('supports rerender when SlotRerenderObject provided', async () => {
|
|
224
223
|
const tag = defineCE(
|
|
225
224
|
// @ts-expect-error
|
|
226
225
|
class extends SlotMixin(LitElement) {
|
|
227
|
-
static properties = {
|
|
228
|
-
|
|
226
|
+
static properties = {
|
|
227
|
+
currentValue: Number,
|
|
228
|
+
};
|
|
229
229
|
constructor() {
|
|
230
230
|
super();
|
|
231
231
|
this.currentValue = 0;
|
|
232
232
|
}
|
|
233
|
-
|
|
234
233
|
get slots() {
|
|
235
234
|
return {
|
|
236
235
|
...super.slots,
|
|
237
|
-
template: () => ({
|
|
236
|
+
template: () => ({
|
|
237
|
+
template: html`<span>${this.currentValue}</span> `,
|
|
238
|
+
}),
|
|
238
239
|
};
|
|
239
240
|
}
|
|
240
|
-
|
|
241
241
|
render() {
|
|
242
242
|
return html`<slot name="template"></slot>`;
|
|
243
243
|
}
|
|
244
|
-
|
|
245
244
|
get _templateNode() {
|
|
246
|
-
return /** @type HTMLSpanElement */ (
|
|
247
|
-
|
|
245
|
+
return /** @type HTMLSpanElement */ Array.from(this.children).find(
|
|
246
|
+
(elm) => elm.slot === 'template',
|
|
248
247
|
);
|
|
249
248
|
}
|
|
250
249
|
},
|
|
251
250
|
);
|
|
252
|
-
const el = /** @type {* & SlotHost} */
|
|
251
|
+
const el = /** @type {* & SlotHost} */ await fixture(`<${tag}></${tag}>`);
|
|
253
252
|
await el.updateComplete;
|
|
254
|
-
|
|
255
253
|
expect(el._templateNode.slot).to.equal('template');
|
|
256
254
|
expect(el._templateNode.textContent?.trim()).to.equal('0');
|
|
257
|
-
|
|
258
255
|
el.currentValue = 1;
|
|
259
256
|
await el.updateComplete;
|
|
260
|
-
|
|
261
257
|
expect(el._templateNode.textContent?.trim()).to.equal('1');
|
|
262
258
|
});
|
|
263
|
-
|
|
264
259
|
it('keeps focus after rerender', async () => {
|
|
265
260
|
const tag = defineCE(
|
|
266
261
|
// @ts-expect-error
|
|
267
262
|
class extends SlotMixin(LitElement) {
|
|
268
|
-
static properties = {
|
|
269
|
-
|
|
263
|
+
static properties = {
|
|
264
|
+
currentValue: Number,
|
|
265
|
+
};
|
|
270
266
|
constructor() {
|
|
271
267
|
super();
|
|
272
268
|
this.currentValue = 0;
|
|
273
269
|
}
|
|
274
|
-
|
|
275
270
|
get slots() {
|
|
276
271
|
return {
|
|
277
272
|
...super.slots,
|
|
@@ -281,29 +276,23 @@ describe('SlotMixin', () => {
|
|
|
281
276
|
}),
|
|
282
277
|
};
|
|
283
278
|
}
|
|
284
|
-
|
|
285
279
|
render() {
|
|
286
280
|
return html`<slot name="focusable-node"></slot>`;
|
|
287
281
|
}
|
|
288
|
-
|
|
289
282
|
get _focusableNode() {
|
|
290
|
-
return /** @type HTMLSpanElement */ (
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
);
|
|
283
|
+
return /** @type HTMLSpanElement */ Array.from(this.children).find(
|
|
284
|
+
(elm) => elm.slot === 'focusable-node',
|
|
285
|
+
)?.firstElementChild;
|
|
294
286
|
}
|
|
295
287
|
},
|
|
296
288
|
);
|
|
297
|
-
const el = /** @type {* & SlotHost} */
|
|
289
|
+
const el = /** @type {* & SlotHost} */ await fixture(`<${tag}></${tag}>`);
|
|
298
290
|
el._focusableNode.focus();
|
|
299
291
|
expect(isActiveElement(el._focusableNode)).to.be.true;
|
|
300
|
-
|
|
301
292
|
el.currentValue = 1;
|
|
302
293
|
await el.updateComplete;
|
|
303
|
-
|
|
304
294
|
expect(isActiveElement(el._focusableNode)).to.be.true;
|
|
305
295
|
});
|
|
306
|
-
|
|
307
296
|
it('keeps focus after rerendering complex shadow root into slot', async () => {
|
|
308
297
|
const complexSlotTagName = defineCE(
|
|
309
298
|
class extends LitElement {
|
|
@@ -313,26 +302,23 @@ describe('SlotMixin', () => {
|
|
|
313
302
|
<button>I will be focused</button>
|
|
314
303
|
`;
|
|
315
304
|
}
|
|
316
|
-
|
|
317
305
|
get _buttonNode() {
|
|
318
306
|
// @ts-expect-error
|
|
319
307
|
return this.shadowRoot.querySelector('button');
|
|
320
308
|
}
|
|
321
309
|
},
|
|
322
310
|
);
|
|
323
|
-
|
|
324
311
|
const complexSlotTag = unsafeStatic(complexSlotTagName);
|
|
325
|
-
|
|
326
312
|
const tagName = defineCE(
|
|
327
313
|
// @ts-expect-error
|
|
328
314
|
class extends SlotMixin(LitElement) {
|
|
329
|
-
static properties = {
|
|
330
|
-
|
|
315
|
+
static properties = {
|
|
316
|
+
currentValue: Number,
|
|
317
|
+
};
|
|
331
318
|
constructor() {
|
|
332
319
|
super();
|
|
333
320
|
this.currentValue = 0;
|
|
334
321
|
}
|
|
335
|
-
|
|
336
322
|
get slots() {
|
|
337
323
|
return {
|
|
338
324
|
...super.slots,
|
|
@@ -341,32 +327,32 @@ describe('SlotMixin', () => {
|
|
|
341
327
|
}),
|
|
342
328
|
};
|
|
343
329
|
}
|
|
344
|
-
|
|
345
330
|
render() {
|
|
346
331
|
return html`<slot name="focusable-node"></slot>`;
|
|
347
332
|
}
|
|
348
|
-
|
|
349
333
|
get _focusableNode() {
|
|
350
|
-
return /** @type HTMLSpanElement */ (
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
);
|
|
334
|
+
return /** @type HTMLSpanElement */ Array.from(this.children).find(
|
|
335
|
+
(elm) => elm.slot === 'focusable-node',
|
|
336
|
+
)?.firstElementChild;
|
|
354
337
|
}
|
|
355
338
|
},
|
|
356
339
|
);
|
|
357
|
-
const el = /** @type {* & SlotHost} */
|
|
358
|
-
|
|
340
|
+
const el = /** @type {* & SlotHost} */ await fixture(`<${tagName}></${tagName}>`);
|
|
359
341
|
el._focusableNode._buttonNode.focus();
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
342
|
+
expect(
|
|
343
|
+
isActiveElement(el._focusableNode._buttonNode, {
|
|
344
|
+
deep: true,
|
|
345
|
+
}),
|
|
346
|
+
).to.be.true;
|
|
363
347
|
el.currentValue = 1;
|
|
364
348
|
await el.updateComplete;
|
|
365
|
-
|
|
366
349
|
expect(isActiveElement(el._focusableNode)).to.be.true;
|
|
367
|
-
expect(
|
|
350
|
+
expect(
|
|
351
|
+
isActiveElement(el._focusableNode._buttonNode, {
|
|
352
|
+
deep: true,
|
|
353
|
+
}),
|
|
354
|
+
).to.be.true;
|
|
368
355
|
});
|
|
369
|
-
|
|
370
356
|
it('allows for rerendering complex shadow root into slot as a direct child', async () => {
|
|
371
357
|
const complexSlotTagName = defineCE(
|
|
372
358
|
class extends LitElement {
|
|
@@ -376,26 +362,23 @@ describe('SlotMixin', () => {
|
|
|
376
362
|
<button>I will be focused</button>
|
|
377
363
|
`;
|
|
378
364
|
}
|
|
379
|
-
|
|
380
365
|
get _buttonNode() {
|
|
381
366
|
// @ts-expect-error
|
|
382
367
|
return this.shadowRoot.querySelector('button');
|
|
383
368
|
}
|
|
384
369
|
},
|
|
385
370
|
);
|
|
386
|
-
|
|
387
371
|
const complexSlotTag = unsafeStatic(complexSlotTagName);
|
|
388
|
-
|
|
389
372
|
const tagName = defineCE(
|
|
390
373
|
// @ts-expect-error
|
|
391
374
|
class extends SlotMixin(LitElement) {
|
|
392
|
-
static properties = {
|
|
393
|
-
|
|
375
|
+
static properties = {
|
|
376
|
+
currentValue: Number,
|
|
377
|
+
};
|
|
394
378
|
constructor() {
|
|
395
379
|
super();
|
|
396
380
|
this.currentValue = 0;
|
|
397
381
|
}
|
|
398
|
-
|
|
399
382
|
get slots() {
|
|
400
383
|
return {
|
|
401
384
|
...super.slots,
|
|
@@ -405,42 +388,43 @@ describe('SlotMixin', () => {
|
|
|
405
388
|
}),
|
|
406
389
|
};
|
|
407
390
|
}
|
|
408
|
-
|
|
409
391
|
render() {
|
|
410
392
|
return html`<slot name="focusable-node"></slot>`;
|
|
411
393
|
}
|
|
412
|
-
|
|
413
394
|
get _focusableNode() {
|
|
414
|
-
return /** @type HTMLSpanElement */ (
|
|
415
|
-
|
|
395
|
+
return /** @type HTMLSpanElement */ Array.from(this.children).find(
|
|
396
|
+
(elm) => elm.slot === 'focusable-node',
|
|
416
397
|
);
|
|
417
398
|
}
|
|
418
399
|
},
|
|
419
400
|
);
|
|
420
|
-
const el = /** @type {* & SlotHost} */
|
|
421
|
-
|
|
401
|
+
const el = /** @type {* & SlotHost} */ await fixture(`<${tagName}></${tagName}>`);
|
|
422
402
|
el._focusableNode._buttonNode.focus();
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
403
|
+
expect(
|
|
404
|
+
isActiveElement(el._focusableNode._buttonNode, {
|
|
405
|
+
deep: true,
|
|
406
|
+
}),
|
|
407
|
+
).to.be.true;
|
|
426
408
|
el.currentValue = 1;
|
|
427
409
|
await el.updateComplete;
|
|
428
|
-
|
|
429
410
|
expect(isActiveElement(el._focusableNode)).to.be.true;
|
|
430
|
-
expect(
|
|
411
|
+
expect(
|
|
412
|
+
isActiveElement(el._focusableNode._buttonNode, {
|
|
413
|
+
deep: true,
|
|
414
|
+
}),
|
|
415
|
+
).to.be.true;
|
|
431
416
|
});
|
|
432
|
-
|
|
433
417
|
it('allows for switching template root in slot as a direct child', async () => {
|
|
434
418
|
const tagName = defineCE(
|
|
435
419
|
// @ts-expect-error
|
|
436
420
|
class extends SlotMixin(LitElement) {
|
|
437
|
-
static properties = {
|
|
438
|
-
|
|
421
|
+
static properties = {
|
|
422
|
+
isSwitched: Boolean,
|
|
423
|
+
};
|
|
439
424
|
constructor() {
|
|
440
425
|
super();
|
|
441
426
|
this.isSwitched = false;
|
|
442
427
|
}
|
|
443
|
-
|
|
444
428
|
get slots() {
|
|
445
429
|
return {
|
|
446
430
|
...super.slots,
|
|
@@ -452,47 +436,41 @@ describe('SlotMixin', () => {
|
|
|
452
436
|
}),
|
|
453
437
|
};
|
|
454
438
|
}
|
|
455
|
-
|
|
456
439
|
render() {
|
|
457
440
|
return html`<slot name="my-root-switcher-node"></slot>`;
|
|
458
441
|
}
|
|
459
|
-
|
|
460
442
|
get _myRootSwitcherNode() {
|
|
461
|
-
return /** @type HTMLSpanElement */ (
|
|
462
|
-
|
|
443
|
+
return /** @type HTMLSpanElement */ Array.from(this.children).find(
|
|
444
|
+
(elm) => elm.slot === 'my-root-switcher-node',
|
|
463
445
|
);
|
|
464
446
|
}
|
|
465
447
|
},
|
|
466
448
|
);
|
|
467
|
-
const el = /** @type {* & SlotHost} */
|
|
468
|
-
|
|
449
|
+
const el = /** @type {* & SlotHost} */ await fixture(`<${tagName}></${tagName}>`);
|
|
469
450
|
expect(el._myRootSwitcherNode.id).to.equal('is-not-switched');
|
|
470
451
|
expect(el.innerHTML).to.equal(
|
|
471
452
|
`<!--_start_slot_my-root-switcher-node_--><!----><span id="is-not-switched" slot="my-root-switcher-node"> </span> <!--_end_slot_my-root-switcher-node_-->`,
|
|
472
453
|
);
|
|
473
|
-
|
|
474
454
|
el.isSwitched = true;
|
|
475
455
|
await el.updateComplete;
|
|
476
|
-
|
|
477
456
|
expect(el._myRootSwitcherNode.id).to.equal('is-switched');
|
|
478
457
|
expect(el.innerHTML).to.equal(
|
|
479
458
|
`<!--_start_slot_my-root-switcher-node_--><!----><div id="is-switched" slot="my-root-switcher-node"></div><!--_end_slot_my-root-switcher-node_-->`,
|
|
480
459
|
);
|
|
481
460
|
});
|
|
482
|
-
|
|
483
461
|
describe('firstRenderOnConnected (for backwards compatibility)', () => {
|
|
484
462
|
it('does render on connected when firstRenderOnConnected:true', async () => {
|
|
485
463
|
// Start with elem that does not render on connectedCallback
|
|
486
464
|
const tag = defineCE(
|
|
487
465
|
// @ts-expect-error
|
|
488
466
|
class extends SlotMixin(LitElement) {
|
|
489
|
-
static properties = {
|
|
490
|
-
|
|
467
|
+
static properties = {
|
|
468
|
+
currentValue: Number,
|
|
469
|
+
};
|
|
491
470
|
constructor() {
|
|
492
471
|
super();
|
|
493
472
|
this.currentValue = 0;
|
|
494
473
|
}
|
|
495
|
-
|
|
496
474
|
get slots() {
|
|
497
475
|
return {
|
|
498
476
|
...super.slots,
|
|
@@ -502,54 +480,51 @@ describe('SlotMixin', () => {
|
|
|
502
480
|
}),
|
|
503
481
|
};
|
|
504
482
|
}
|
|
505
|
-
|
|
506
483
|
render() {
|
|
507
484
|
return html`<slot name="template"></slot>`;
|
|
508
485
|
}
|
|
509
|
-
|
|
510
486
|
get _templateNode() {
|
|
511
|
-
return /** @type HTMLSpanElement */ (
|
|
512
|
-
|
|
487
|
+
return /** @type HTMLSpanElement */ Array.from(this.children).find(
|
|
488
|
+
(elm) => elm.slot === 'template',
|
|
513
489
|
);
|
|
514
490
|
}
|
|
515
491
|
},
|
|
516
492
|
);
|
|
517
|
-
const el = /** @type {* & SlotHost} */
|
|
493
|
+
const el = /** @type {* & SlotHost} */ fixtureSync(`<${tag}></${tag}>`);
|
|
518
494
|
expect(el._templateNode.slot).to.equal('template');
|
|
519
495
|
expect(el._templateNode.textContent?.trim()).to.equal('0');
|
|
520
496
|
});
|
|
521
|
-
|
|
522
497
|
it('does not render on connected when firstRenderOnConnected:false', async () => {
|
|
523
498
|
// Start with elem that does not render on connectedCallback
|
|
524
499
|
const tag = defineCE(
|
|
525
500
|
// @ts-expect-error
|
|
526
501
|
class extends SlotMixin(LitElement) {
|
|
527
|
-
static properties = {
|
|
528
|
-
|
|
502
|
+
static properties = {
|
|
503
|
+
currentValue: Number,
|
|
504
|
+
};
|
|
529
505
|
constructor() {
|
|
530
506
|
super();
|
|
531
507
|
this.currentValue = 0;
|
|
532
508
|
}
|
|
533
|
-
|
|
534
509
|
get slots() {
|
|
535
510
|
return {
|
|
536
511
|
...super.slots,
|
|
537
|
-
template: () => ({
|
|
512
|
+
template: () => ({
|
|
513
|
+
template: html`<span>${this.currentValue}</span> `,
|
|
514
|
+
}),
|
|
538
515
|
};
|
|
539
516
|
}
|
|
540
|
-
|
|
541
517
|
render() {
|
|
542
518
|
return html`<slot name="template"></slot>`;
|
|
543
519
|
}
|
|
544
|
-
|
|
545
520
|
get _templateNode() {
|
|
546
|
-
return /** @type HTMLSpanElement */ (
|
|
547
|
-
|
|
521
|
+
return /** @type HTMLSpanElement */ Array.from(this.children).find(
|
|
522
|
+
(elm) => elm.slot === 'template',
|
|
548
523
|
);
|
|
549
524
|
}
|
|
550
525
|
},
|
|
551
526
|
);
|
|
552
|
-
const el = /** @type {* & SlotHost} */
|
|
527
|
+
const el = /** @type {* & SlotHost} */ fixtureSync(`<${tag}></${tag}>`);
|
|
553
528
|
expect(el._templateNode).to.be.undefined;
|
|
554
529
|
await el.updateComplete;
|
|
555
530
|
expect(el._templateNode.slot).to.equal('template');
|
|
@@ -557,7 +532,6 @@ describe('SlotMixin', () => {
|
|
|
557
532
|
});
|
|
558
533
|
});
|
|
559
534
|
});
|
|
560
|
-
|
|
561
535
|
describe('SlotFunctionResult types', () => {
|
|
562
536
|
it('supports complex dom trees as element (type "Element")', async () => {
|
|
563
537
|
const tag = defineCE(
|
|
@@ -566,7 +540,6 @@ describe('SlotMixin', () => {
|
|
|
566
540
|
super();
|
|
567
541
|
this.foo = 'bar';
|
|
568
542
|
}
|
|
569
|
-
|
|
570
543
|
get slots() {
|
|
571
544
|
return {
|
|
572
545
|
...super.slots,
|
|
@@ -585,11 +558,10 @@ describe('SlotMixin', () => {
|
|
|
585
558
|
const el = await fixture(`<${tag}></${tag}>`);
|
|
586
559
|
expect(el.children[0].slot).to.equal('feedback');
|
|
587
560
|
expect(el.children[0].getAttribute('foo')).to.equal('bar');
|
|
588
|
-
expect(/** @type HTMLParagraphElement */
|
|
561
|
+
expect(/** @type HTMLParagraphElement */ el.children[0].children[0].innerText).to.equal(
|
|
589
562
|
'cat',
|
|
590
563
|
);
|
|
591
564
|
});
|
|
592
|
-
|
|
593
565
|
it('supports conditional slots (type "undefined")', async () => {
|
|
594
566
|
let renderSlot = true;
|
|
595
567
|
const tag = defineCE(
|
|
@@ -615,7 +587,6 @@ describe('SlotMixin', () => {
|
|
|
615
587
|
const elNoSlot = await fixture(`<${tag}><${tag}>`);
|
|
616
588
|
expect(elNoSlot.querySelector('#someSlot')).to.not.exist;
|
|
617
589
|
});
|
|
618
|
-
|
|
619
590
|
it('supports templates (type "TemplateResult")', async () => {
|
|
620
591
|
const tag = defineCE(
|
|
621
592
|
class extends SlotMixin(LitElement) {
|
|
@@ -625,33 +596,30 @@ describe('SlotMixin', () => {
|
|
|
625
596
|
template: () => html`<span>text</span>`,
|
|
626
597
|
};
|
|
627
598
|
}
|
|
628
|
-
|
|
629
599
|
render() {
|
|
630
600
|
return html`<slot name="template"></slot>`;
|
|
631
601
|
}
|
|
632
602
|
},
|
|
633
603
|
);
|
|
634
604
|
const el = await fixture(`<${tag}></${tag}>`);
|
|
635
|
-
const slot =
|
|
636
|
-
|
|
637
|
-
|
|
605
|
+
const slot =
|
|
606
|
+
/** @type HTMLSpanElement */
|
|
607
|
+
Array.from(el.children).find((elm) => elm.slot === 'template');
|
|
638
608
|
expect(slot.slot).to.equal('template');
|
|
639
609
|
expect(slot.tagName).to.equal('SPAN');
|
|
640
610
|
});
|
|
641
|
-
|
|
642
611
|
it('supports (deprecated) afterRender logic (type "{ template:TemplateResults; afterRender: Function}" )', async () => {
|
|
643
612
|
let varThatProvesAfterRenderIsCalled = 'not called';
|
|
644
|
-
|
|
645
613
|
const tag = defineCE(
|
|
646
614
|
// @ts-expect-error
|
|
647
615
|
class extends SlotMixin(LitElement) {
|
|
648
|
-
static properties = {
|
|
649
|
-
|
|
616
|
+
static properties = {
|
|
617
|
+
currentValue: Number,
|
|
618
|
+
};
|
|
650
619
|
constructor() {
|
|
651
620
|
super();
|
|
652
621
|
this.currentValue = 0;
|
|
653
622
|
}
|
|
654
|
-
|
|
655
623
|
get slots() {
|
|
656
624
|
return {
|
|
657
625
|
...super.slots,
|
|
@@ -663,38 +631,31 @@ describe('SlotMixin', () => {
|
|
|
663
631
|
}),
|
|
664
632
|
};
|
|
665
633
|
}
|
|
666
|
-
|
|
667
634
|
render() {
|
|
668
635
|
return html`<slot name="template"></slot>`;
|
|
669
636
|
}
|
|
670
|
-
|
|
671
637
|
get _templateNode() {
|
|
672
|
-
return /** @type HTMLSpanElement */ (
|
|
673
|
-
|
|
674
|
-
);
|
|
638
|
+
return /** @type HTMLSpanElement */ Array.from(this.children).find(
|
|
639
|
+
(elm) => elm.slot === 'template',
|
|
640
|
+
)?.firstElementChild;
|
|
675
641
|
}
|
|
676
642
|
},
|
|
677
643
|
);
|
|
678
|
-
const el = /** @type {* & SlotHost} */
|
|
644
|
+
const el = /** @type {* & SlotHost} */ await fixture(`<${tag}></${tag}>`);
|
|
679
645
|
expect(el._templateNode.textContent).to.equal('0');
|
|
680
|
-
|
|
681
646
|
el.currentValue = 1;
|
|
682
647
|
await el.updateComplete;
|
|
683
|
-
|
|
684
648
|
expect(varThatProvesAfterRenderIsCalled).to.equal('called');
|
|
685
649
|
expect(el._templateNode.textContent).to.equal('1');
|
|
686
650
|
});
|
|
687
651
|
});
|
|
688
|
-
|
|
689
652
|
describe('Scoped Registries', () => {
|
|
690
653
|
it('supports scoped elements when scoped registries supported (or polyfill loaded)', async () => {
|
|
691
654
|
if (!supportsScopedRegistry()) return;
|
|
692
655
|
|
|
693
656
|
// @ts-expect-error
|
|
694
657
|
const createElSpy = sinon.spy(ShadowRoot.prototype, 'createElement');
|
|
695
|
-
|
|
696
658
|
class ScopedEl extends LitElement {}
|
|
697
|
-
|
|
698
659
|
const tagName = defineCE(
|
|
699
660
|
// @ts-ignore
|
|
700
661
|
class extends ScopedElementsMixin(SlotMixin(LitElement)) {
|
|
@@ -705,33 +666,25 @@ describe('SlotMixin', () => {
|
|
|
705
666
|
'scoped-elm': ScopedEl,
|
|
706
667
|
};
|
|
707
668
|
}
|
|
708
|
-
|
|
709
669
|
get slots() {
|
|
710
670
|
return {
|
|
711
671
|
...super.slots,
|
|
712
672
|
template: () => html`<scoped-elm></scoped-elm>`,
|
|
713
673
|
};
|
|
714
674
|
}
|
|
715
|
-
|
|
716
675
|
render() {
|
|
717
676
|
return html`<slot name="template"></slot>`;
|
|
718
677
|
}
|
|
719
678
|
},
|
|
720
679
|
);
|
|
721
|
-
|
|
722
680
|
const tag = unsafeStatic(tagName);
|
|
723
681
|
await fixture(html`<${tag}></${tag}>`);
|
|
724
|
-
|
|
725
682
|
expect(createElSpy.callCount).to.equal(1);
|
|
726
|
-
|
|
727
683
|
createElSpy.restore();
|
|
728
684
|
});
|
|
729
|
-
|
|
730
685
|
it('does not scope elements when scoped registries not supported (or polyfill not loaded)', async () => {
|
|
731
686
|
if (supportsScopedRegistry()) return;
|
|
732
|
-
|
|
733
687
|
class ScopedEl extends LitElement {}
|
|
734
|
-
|
|
735
688
|
const tagName = defineCE(
|
|
736
689
|
class extends ScopedElementsMixin(SlotMixin(LitElement)) {
|
|
737
690
|
static get scopedElements() {
|
|
@@ -741,20 +694,17 @@ describe('SlotMixin', () => {
|
|
|
741
694
|
'scoped-el': ScopedEl,
|
|
742
695
|
};
|
|
743
696
|
}
|
|
744
|
-
|
|
745
697
|
get slots() {
|
|
746
698
|
return {
|
|
747
699
|
...super.slots,
|
|
748
700
|
template: () => html`<scoped-el></scoped-el>`,
|
|
749
701
|
};
|
|
750
702
|
}
|
|
751
|
-
|
|
752
703
|
render() {
|
|
753
704
|
return html`<slot name="template"></slot>`;
|
|
754
705
|
}
|
|
755
706
|
},
|
|
756
707
|
);
|
|
757
|
-
|
|
758
708
|
const renderTarget = document.createElement('div');
|
|
759
709
|
const el = document.createElement(tagName);
|
|
760
710
|
|
|
@@ -762,9 +712,7 @@ describe('SlotMixin', () => {
|
|
|
762
712
|
const docSpy = sinon.spy(document, 'createElement');
|
|
763
713
|
document.body.appendChild(renderTarget);
|
|
764
714
|
renderTarget.appendChild(el);
|
|
765
|
-
|
|
766
715
|
expect(docSpy.callCount).to.equal(2);
|
|
767
|
-
|
|
768
716
|
document.body.removeChild(renderTarget);
|
|
769
717
|
docSpy.restore();
|
|
770
718
|
});
|