@lion/ui 0.22.0 → 0.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +65 -0
- 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 +45 -55
- 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 +598 -860
- 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 -357
- 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-core/types/choice-group/ChoiceGroupMixinTypes.ts +5 -0
- 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 +37 -26
- package/components/input-amount/src/formatters.js +4 -5
- package/components/input-amount/src/parsers.js +0 -3
- package/components/input-amount/test/formatters.test.js +102 -80
- package/components/input-amount/test/lion-input-amount-integrations.test.js +0 -4
- package/components/input-amount/test/lion-input-amount.test.js +155 -164
- package/components/input-amount/test/parsers.test.js +33 -17
- package/components/input-amount/test/preprocessors.test.js +0 -3
- package/components/input-amount-dropdown/src/LionInputAmountDropdown.js +49 -59
- package/components/input-amount-dropdown/src/currencyUtil.js +8 -7
- package/components/input-amount-dropdown/src/parsers.js +0 -1
- package/components/input-amount-dropdown/src/validators.js +0 -1
- package/components/input-amount-dropdown/test/LionInputAmountDropdown.test.js +34 -36
- package/components/input-amount-dropdown/test/lion-input-amount-dropdown-integrations.test.js +18 -13
- package/components/input-amount-dropdown/test-helpers/mimicUserChangingDropdown.js +5 -1
- package/components/input-amount-dropdown/test-suites/LionInputAmountDropdown.suite.js +132 -107
- package/components/input-date/src/LionInputDate.js +4 -3
- package/components/input-date/test/lion-input-date-integrations.test.js +0 -3
- package/components/input-date/test/lion-input-date.test.js +19 -32
- package/components/input-datepicker/src/LionInputDatepicker.js +17 -29
- package/components/input-datepicker/src/localizeNamespaceLoader.js +1 -2
- package/components/input-datepicker/test/lion-input-datepicker-integrations.test.js +0 -3
- package/components/input-datepicker/test/lion-input-datepicker.test.js +88 -153
- package/components/input-datepicker/test-helpers/DatepickerInputObject.js +9 -12
- package/components/input-datepicker/test-suites/LionInputDatepicker.suite.js +6 -4
- package/components/input-datepicker/translations/bg-BG.js +0 -1
- package/components/input-datepicker/translations/cs-CZ.js +0 -1
- package/components/input-datepicker/translations/de-DE.js +0 -1
- package/components/input-datepicker/translations/en-AU.js +0 -1
- package/components/input-datepicker/translations/en-GB.js +0 -1
- package/components/input-datepicker/translations/en-US.js +0 -1
- package/components/input-datepicker/translations/es-ES.js +0 -1
- package/components/input-datepicker/translations/fr-BE.js +0 -1
- package/components/input-datepicker/translations/fr-FR.js +0 -1
- package/components/input-datepicker/translations/hu-HU.js +0 -1
- package/components/input-datepicker/translations/it-IT.js +0 -1
- package/components/input-datepicker/translations/nl-BE.js +0 -1
- package/components/input-datepicker/translations/nl-NL.js +0 -1
- package/components/input-datepicker/translations/pl-PL.js +0 -1
- package/components/input-datepicker/translations/ro-RO.js +0 -1
- package/components/input-datepicker/translations/ru-RU.js +0 -1
- package/components/input-datepicker/translations/sk-SK.js +0 -1
- package/components/input-datepicker/translations/tr-TR.js +0 -1
- package/components/input-datepicker/translations/uk-UA.js +0 -1
- package/components/input-email/test/lion-input-email-integrations.test.js +0 -2
- package/components/input-email/test/lion-input-email.test.js +1 -7
- package/components/input-file/src/FileHandle.js +0 -3
- package/components/input-file/src/LionInputFile.js +85 -83
- package/components/input-file/src/LionSelectedFileList.js +12 -12
- package/components/input-file/src/validators.js +10 -9
- package/components/input-file/test/FileValidators.test.js +170 -80
- package/components/input-file/test/lion-input-file.test.js +160 -244
- package/components/input-file/test/lion-selected-file-list.test.js +13 -22
- package/components/input-file/translations/bg-BG.js +0 -1
- package/components/input-file/translations/cs-CZ.js +0 -1
- package/components/input-file/translations/de-DE.js +0 -1
- package/components/input-file/translations/en-AU.js +0 -1
- package/components/input-file/translations/en-GB.js +0 -1
- package/components/input-file/translations/en-PH.js +0 -1
- package/components/input-file/translations/en-US.js +0 -1
- package/components/input-file/translations/en.js +2 -1
- package/components/input-file/translations/es-ES.js +0 -1
- package/components/input-file/translations/fr-BE.js +0 -1
- package/components/input-file/translations/fr-FR.js +0 -1
- package/components/input-file/translations/hu-HU.js +0 -1
- package/components/input-file/translations/id-ID.js +0 -1
- package/components/input-file/translations/id.js +2 -1
- package/components/input-file/translations/it-IT.js +0 -1
- package/components/input-file/translations/nl-BE.js +0 -1
- package/components/input-file/translations/nl-NL.js +0 -1
- package/components/input-file/translations/pl-PL.js +0 -1
- package/components/input-file/translations/ro-RO.js +0 -1
- package/components/input-file/translations/ru-RU.js +0 -1
- package/components/input-file/translations/sk-SK.js +0 -1
- package/components/input-file/translations/uk-UA.js +0 -1
- package/components/input-file/translations/zh-CN.js +0 -1
- package/components/input-iban/src/validators.js +6 -11
- package/components/input-iban/test/formatters.test.js +0 -3
- package/components/input-iban/test/lion-input-iban-integrations.test.js +0 -2
- package/components/input-iban/test/lion-input-iban.test.js +1 -9
- package/components/input-iban/test/parsers.test.js +0 -2
- package/components/input-iban/test/validators.test.js +0 -12
- package/components/input-iban/translations/bg-BG.js +0 -1
- package/components/input-iban/translations/cs-CZ.js +0 -1
- package/components/input-iban/translations/de-DE.js +0 -1
- package/components/input-iban/translations/en-AU.js +0 -1
- package/components/input-iban/translations/en-GB.js +0 -1
- package/components/input-iban/translations/en-US.js +0 -1
- package/components/input-iban/translations/es-ES.js +0 -1
- package/components/input-iban/translations/fr-BE.js +0 -1
- package/components/input-iban/translations/fr-FR.js +0 -1
- package/components/input-iban/translations/hu-HU.js +0 -1
- package/components/input-iban/translations/it-IT.js +0 -1
- package/components/input-iban/translations/nl-BE.js +0 -1
- package/components/input-iban/translations/nl-NL.js +0 -1
- package/components/input-iban/translations/pl-PL.js +0 -1
- package/components/input-iban/translations/ro-RO.js +0 -1
- package/components/input-iban/translations/ru-RU.js +0 -1
- package/components/input-iban/translations/sk-SK.js +0 -1
- package/components/input-iban/translations/uk-UA.js +0 -1
- package/components/input-range/src/LionInputRange.js +18 -19
- package/components/input-range/test/lion-input-range.test.js +23 -48
- package/components/input-range/translations/bg-BG.js +0 -1
- package/components/input-range/translations/cs-CZ.js +0 -1
- package/components/input-range/translations/de-DE.js +0 -1
- package/components/input-range/translations/en-AU.js +0 -1
- package/components/input-range/translations/en-GB.js +0 -1
- package/components/input-range/translations/en-PH.js +0 -1
- package/components/input-range/translations/en-US.js +0 -1
- package/components/input-range/translations/es-ES.js +0 -1
- package/components/input-range/translations/fr-BE.js +0 -1
- package/components/input-range/translations/fr-FR.js +0 -1
- package/components/input-range/translations/hu-HU.js +0 -1
- package/components/input-range/translations/it-IT.js +0 -1
- package/components/input-range/translations/nl-BE.js +0 -1
- package/components/input-range/translations/nl-NL.js +0 -1
- package/components/input-range/translations/pl-PL.js +0 -1
- package/components/input-range/translations/ro-RO.js +0 -1
- package/components/input-range/translations/ru-RU.js +0 -1
- package/components/input-range/translations/sk-SK.js +0 -1
- package/components/input-range/translations/uk-UA.js +0 -1
- package/components/input-range/translations/zh-CN.js +0 -1
- package/components/input-stepper/src/LionInputStepper.js +19 -38
- package/components/input-stepper/test/lion-input-stepper-integrations.test.js +0 -1
- package/components/input-stepper/test/lion-input-stepper.test.js +0 -1
- package/components/input-stepper/test-suites/lion-input-stepper.integration.suite.js +0 -2
- package/components/input-stepper/test-suites/lion-input-stepper.suite.js +56 -105
- package/components/input-stepper/translations/bg-BG.js +0 -1
- package/components/input-stepper/translations/cs-CZ.js +0 -1
- package/components/input-stepper/translations/de-DE.js +0 -1
- package/components/input-stepper/translations/en-AU.js +0 -1
- package/components/input-stepper/translations/en-GB.js +0 -1
- package/components/input-stepper/translations/en-US.js +0 -1
- package/components/input-stepper/translations/es-ES.js +0 -1
- package/components/input-stepper/translations/fr-BE.js +0 -1
- package/components/input-stepper/translations/fr-FR.js +0 -1
- package/components/input-stepper/translations/hu-HU.js +0 -1
- package/components/input-stepper/translations/it-IT.js +0 -1
- package/components/input-stepper/translations/nl-BE.js +0 -1
- package/components/input-stepper/translations/nl-NL.js +0 -1
- package/components/input-stepper/translations/pl-PL.js +0 -1
- package/components/input-stepper/translations/ro-RO.js +0 -1
- package/components/input-stepper/translations/ru-RU.js +0 -1
- package/components/input-stepper/translations/sk-SK.js +0 -1
- package/components/input-stepper/translations/uk-UA.js +0 -1
- package/components/input-tel/src/LionInputTel.js +53 -37
- package/components/input-tel/src/PhoneUtilManager.js +6 -4
- package/components/input-tel/src/formatters.js +12 -10
- package/components/input-tel/src/parsers.js +3 -3
- package/components/input-tel/src/preprocessors.js +15 -7
- package/components/input-tel/src/validators.js +4 -6
- package/components/input-tel/test/LionInputTel.test.js +4 -2
- package/components/input-tel/test/formatters.test.js +22 -10
- package/components/input-tel/test/parsers.test.js +40 -11
- package/components/input-tel/test/preprocessors.test.js +24 -13
- package/components/input-tel/test/validators.test.js +15 -13
- package/components/input-tel/test-helpers/mockPhoneUtilManager.js +7 -6
- package/components/input-tel/test-suites/LionInputTel.suite.js +33 -73
- package/components/input-tel/translations/bg-BG.js +0 -1
- package/components/input-tel/translations/cs-CZ.js +0 -1
- package/components/input-tel/translations/de-DE.js +0 -1
- package/components/input-tel/translations/en-AU.js +0 -1
- package/components/input-tel/translations/en-GB.js +0 -1
- package/components/input-tel/translations/en-US.js +0 -1
- package/components/input-tel/translations/es-ES.js +0 -1
- package/components/input-tel/translations/fr-BE.js +0 -1
- package/components/input-tel/translations/fr-FR.js +0 -1
- package/components/input-tel/translations/hu-HU.js +0 -1
- package/components/input-tel/translations/it-IT.js +0 -1
- package/components/input-tel/translations/nl-BE.js +0 -1
- package/components/input-tel/translations/nl-NL.js +0 -1
- package/components/input-tel/translations/pl-PL.js +0 -1
- package/components/input-tel/translations/ro-RO.js +0 -1
- package/components/input-tel/translations/ru-RU.js +0 -1
- package/components/input-tel/translations/sk-SK.js +0 -1
- package/components/input-tel/translations/uk-UA.js +0 -1
- package/components/input-tel-dropdown/src/LionInputTelDropdown.js +10 -28
- package/components/input-tel-dropdown/src/regionCodeToLocale.js +3 -1
- package/components/input-tel-dropdown/test/LionInputTelDropdown.test.js +31 -38
- package/components/input-tel-dropdown/test/regionCodeToLocale.test.js +0 -1
- package/components/input-tel-dropdown/test-helpers/mimicUserChangingDropdown.js +5 -1
- package/components/input-tel-dropdown/test-suites/LionInputTelDropdown--parentheses.suite.js +16 -11
- package/components/input-tel-dropdown/test-suites/LionInputTelDropdown.suite.js +54 -79
- package/components/listbox/src/LionListbox.js +4 -1
- package/components/listbox/src/LionOption.js +8 -7
- package/components/listbox/src/LionOptions.js +0 -3
- package/components/listbox/src/ListboxMixin.js +801 -819
- 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/listbox/types/ListboxMixinTypes.ts +7 -1
- 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/README.md +360 -0
- package/components/menu/src/InteractiveListMixin.js +866 -0
- package/components/menu/src/LionMenu.js +423 -0
- package/components/menu/src/MoreButtonMenuMixin.js +272 -0
- package/components/menu/src/MultiLevelListMixin.js +306 -0
- package/components/menu/src/utils/isInView.js +25 -0
- package/components/menu/src/utils/listItemInteractions.js +124 -0
- package/components/menu/test/InteractiveListMixin.test.js +2 -0
- package/components/menu/test/MoreButtonMenuMixin.test.js +5 -0
- package/components/menu/test/MultiLevelListMixin.test.js +2 -0
- package/components/menu/test/lion-menu-interactions.test.js +2 -0
- package/components/menu/test/lion-menu.test.js +18 -0
- package/components/menu/test-helpers/mimicKeyPress.js +19 -0
- package/components/menu/test-suites/InteractiveListMixin.suite.js +498 -0
- package/components/menu/test-suites/LionMenu.suite.js +107 -0
- package/components/menu/test-suites/LionMenuInteractions.suite.js +561 -0
- package/components/menu/test-suites/MoreButtonMenuMixin.suite.js +365 -0
- package/components/menu/test-suites/MultiLevelListMixin.suite.js +291 -0
- package/components/menu/types/InteractiveListMixinTypes.ts +126 -0
- package/components/menu/types/MoreButtonMenuMixinTypes.ts +51 -0
- package/components/menu/types/MultiLevelListMixinTypes.ts +28 -0
- package/components/menu/types/OverlayWithListInvokerMixinTypes.ts +61 -0
- package/components/overlays/NEXT.md +49 -0
- package/components/overlays/src/ArrowMixin.js +111 -127
- package/components/overlays/src/OverlayController.js +440 -246
- package/components/overlays/src/OverlayMixin.js +130 -68
- 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 +19 -19
- 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 +14 -6
- 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 +551 -533
- package/components/overlays/test/OverlayMixin.test.js +0 -2
- package/components/overlays/test/OverlaysManager.test.js +30 -35
- package/components/overlays/test/global-positioning.test.js +6 -10
- package/components/overlays/test/local-positioning.test.js +101 -103
- package/components/overlays/test/utils-tests/active-element.test.js +12 -27
- package/components/overlays/test/utils-tests/adopt-styles.test.js +25 -56
- package/components/overlays/test/utils-tests/deep-contains.test.js +73 -74
- package/components/overlays/test/utils-tests/get-focusable-elements.test.js +6 -23
- package/components/overlays/test/utils-tests/is-equal-config.test.js +32 -13
- package/components/overlays/test/utils-tests/visibility.test.js +44 -79
- package/components/overlays/test-helpers/createShadowHost.js +5 -3
- package/components/overlays/test-helpers/normalizeTransformStyle.js +2 -4
- package/components/overlays/test-suites/OverlayMixin.suite.js +159 -188
- 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/overlays/types/ArrowMixinTypes.ts +1 -3
- package/components/overlays/types/OverlayConfig.ts +20 -5
- package/components/overlays/types/OverlayMixinTypes.ts +2 -0
- 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 +32 -43
- package/components/select-rich/test/demos.screenshots-test.js +40 -9
- package/components/select-rich/test/lion-select-invoker.test.js +26 -43
- package/components/select-rich/test/lion-select-listbox-suite-integration.test.js +3 -3
- package/components/select-rich/test/lion-select-rich-dialog-integration.test.js +4 -9
- package/components/select-rich/test/lion-select-rich-interaction.test.js +154 -101
- package/components/select-rich/test/lion-select-rich-upgrade.test.js +26 -0
- 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 +3312 -206
- package/dist-types/components/combobox/src/LionCombobox.d.ts +1 -1
- package/dist-types/components/combobox/src/LionCombobox.d.ts.map +1 -1
- 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/dialog/src/LionDialog.d.ts +6 -2
- package/dist-types/components/dialog/src/LionDialog.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/form-core/src/choice-group/ChoiceGroupMixin.d.ts.map +1 -1
- package/dist-types/components/form-core/types/choice-group/ChoiceGroupMixinTypes.d.ts +5 -0
- package/dist-types/components/form-core/types/choice-group/ChoiceGroupMixinTypes.d.ts.map +1 -1
- package/dist-types/components/input-amount/src/LionInputAmount.d.ts +3 -1
- package/dist-types/components/input-amount/src/LionInputAmount.d.ts.map +1 -1
- package/dist-types/components/input-amount/src/formatters.d.ts +6 -4
- package/dist-types/components/input-amount/src/formatters.d.ts.map +1 -1
- package/dist-types/components/input-datepicker/src/LionInputDatepicker.d.ts +1 -1
- package/dist-types/components/input-tel/src/LionInputTel.d.ts +6 -6
- package/dist-types/components/input-tel/src/LionInputTel.d.ts.map +1 -1
- package/dist-types/components/input-tel/src/PhoneUtilManager.d.ts +2 -2
- package/dist-types/components/input-tel/src/PhoneUtilManager.d.ts.map +1 -1
- package/dist-types/components/input-tel/src/formatters.d.ts +2 -2
- package/dist-types/components/input-tel/src/formatters.d.ts.map +1 -1
- package/dist-types/components/input-tel/src/preprocessors.d.ts +2 -2
- package/dist-types/components/input-tel/src/preprocessors.d.ts.map +1 -1
- package/dist-types/components/input-tel/test/validators.test.d.ts +1 -1
- package/dist-types/components/input-tel/test/validators.test.d.ts.map +1 -1
- package/dist-types/components/listbox/src/LionOption.d.ts +5 -2
- package/dist-types/components/listbox/src/LionOption.d.ts.map +1 -1
- package/dist-types/components/listbox/src/ListboxMixin.d.ts.map +1 -1
- package/dist-types/components/listbox/types/ListboxMixinTypes.d.ts +7 -1
- package/dist-types/components/listbox/types/ListboxMixinTypes.d.ts.map +1 -1
- package/dist-types/components/menu/src/InteractiveListMixin.d.ts +35 -0
- package/dist-types/components/menu/src/InteractiveListMixin.d.ts.map +1 -0
- package/dist-types/components/menu/src/LionMenu.d.ts +129 -0
- package/dist-types/components/menu/src/LionMenu.d.ts.map +1 -0
- package/dist-types/components/menu/src/MoreButtonMenuMixin.d.ts +8 -0
- package/dist-types/components/menu/src/MoreButtonMenuMixin.d.ts.map +1 -0
- package/dist-types/components/menu/src/MultiLevelListMixin.d.ts +7 -0
- package/dist-types/components/menu/src/MultiLevelListMixin.d.ts.map +1 -0
- package/dist-types/components/menu/src/utils/isInView.d.ts +9 -0
- package/dist-types/components/menu/src/utils/isInView.d.ts.map +1 -0
- package/dist-types/components/menu/src/utils/listItemInteractions.d.ts +48 -0
- package/dist-types/components/menu/src/utils/listItemInteractions.d.ts.map +1 -0
- package/dist-types/components/menu/test/InteractiveListMixin.test.d.ts +2 -0
- package/dist-types/components/menu/test/InteractiveListMixin.test.d.ts.map +1 -0
- package/dist-types/components/menu/test/MoreButtonMenuMixin.test.d.ts +2 -0
- package/dist-types/components/menu/test/MoreButtonMenuMixin.test.d.ts.map +1 -0
- package/dist-types/components/menu/test/MultiLevelListMixin.test.d.ts +2 -0
- package/dist-types/components/menu/test/MultiLevelListMixin.test.d.ts.map +1 -0
- package/dist-types/components/menu/test/lion-menu-interactions.test.d.ts +2 -0
- package/dist-types/components/menu/test/lion-menu-interactions.test.d.ts.map +1 -0
- package/dist-types/components/menu/test/lion-menu.test.d.ts +2 -0
- package/dist-types/components/menu/test/lion-menu.test.d.ts.map +1 -0
- package/dist-types/components/menu/test-helpers/mimicKeyPress.d.ts +7 -0
- package/dist-types/components/menu/test-helpers/mimicKeyPress.d.ts.map +1 -0
- package/dist-types/components/menu/test-suites/InteractiveListMixin.suite.d.ts +11 -0
- package/dist-types/components/menu/test-suites/InteractiveListMixin.suite.d.ts.map +1 -0
- package/dist-types/components/menu/test-suites/LionMenu.suite.d.ts +9 -0
- package/dist-types/components/menu/test-suites/LionMenu.suite.d.ts.map +1 -0
- package/dist-types/components/menu/test-suites/LionMenuInteractions.suite.d.ts +5 -0
- package/dist-types/components/menu/test-suites/LionMenuInteractions.suite.d.ts.map +1 -0
- package/dist-types/components/menu/test-suites/MoreButtonMenuMixin.suite.d.ts +11 -0
- package/dist-types/components/menu/test-suites/MoreButtonMenuMixin.suite.d.ts.map +1 -0
- package/dist-types/components/menu/test-suites/MultiLevelListMixin.suite.d.ts +11 -0
- package/dist-types/components/menu/test-suites/MultiLevelListMixin.suite.d.ts.map +1 -0
- package/dist-types/components/menu/types/InteractiveListMixinTypes.d.ts +72 -0
- package/dist-types/components/menu/types/InteractiveListMixinTypes.d.ts.map +1 -0
- package/dist-types/components/menu/types/MoreButtonMenuMixinTypes.d.ts +30 -0
- package/dist-types/components/menu/types/MoreButtonMenuMixinTypes.d.ts.map +1 -0
- package/dist-types/components/menu/types/MultiLevelListMixinTypes.d.ts +16 -0
- package/dist-types/components/menu/types/MultiLevelListMixinTypes.d.ts.map +1 -0
- package/dist-types/components/menu/types/OverlayWithListInvokerMixinTypes.d.ts +35 -0
- package/dist-types/components/menu/types/OverlayWithListInvokerMixinTypes.d.ts.map +1 -0
- package/dist-types/components/overlays/src/OverlayController.d.ts +22 -5
- 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/src/utils/is-equal-config.d.ts.map +1 -1
- package/dist-types/components/overlays/types/ArrowMixinTypes.d.ts.map +1 -1
- package/dist-types/components/overlays/types/OverlayConfig.d.ts +12 -2
- package/dist-types/components/overlays/types/OverlayConfig.d.ts.map +1 -1
- package/dist-types/components/overlays/types/OverlayMixinTypes.d.ts +1 -0
- package/dist-types/components/overlays/types/OverlayMixinTypes.d.ts.map +1 -1
- package/dist-types/components/select-rich/src/LionSelectInvoker.d.ts +3 -1
- package/dist-types/components/select-rich/src/LionSelectInvoker.d.ts.map +1 -1
- package/dist-types/components/select-rich/src/LionSelectRich.d.ts +13 -2
- package/dist-types/components/select-rich/src/LionSelectRich.d.ts.map +1 -1
- package/dist-types/components/select-rich/test/lion-select-rich-interaction.test.d.ts.map +1 -1
- package/dist-types/components/select-rich/test/lion-select-rich-upgrade.test.d.ts +2 -0
- package/dist-types/components/select-rich/test/lion-select-rich-upgrade.test.d.ts.map +1 -0
- package/dist-types/components/tooltip/src/LionTooltip.d.ts +1 -1
- package/dist-types/exports/define/lion-item.d.ts +2 -0
- package/dist-types/exports/define/lion-item.d.ts.map +1 -0
- package/dist-types/exports/define/lion-menu.d.ts +2 -0
- package/dist-types/exports/define/lion-menu.d.ts.map +1 -0
- package/dist-types/exports/define/lion-menuitem.d.ts +2 -0
- package/dist-types/exports/define/lion-menuitem.d.ts.map +1 -0
- package/dist-types/exports/menu-test-suites.d.ts +4 -0
- package/dist-types/exports/menu-test-suites.d.ts.map +1 -0
- package/dist-types/exports/menu.d.ts +3 -0
- package/dist-types/exports/menu.d.ts.map +1 -0
- package/dist-types/exports/overlays.d.ts +6 -0
- package/dist-types/exports/overlays.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 +53 -39
- 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/api-table.md +32 -6
- 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/api-table.md +9 -7
- package/docs/components/input-amount/overview.md +5 -5
- package/docs/components/input-amount/use-cases.md +17 -6
- package/docs/components/input-amount-dropdown/api-table.md +2 -0
- 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/api-table.md +63 -45
- package/docs/components/input-datepicker/overview.md +7 -7
- package/docs/components/input-datepicker/use-cases.md +2 -2
- package/docs/components/input-email/overview.md +4 -4
- package/docs/components/input-email/use-cases.md +2 -2
- package/docs/components/input-file/overview.md +3 -3
- package/docs/components/input-file/use-cases.md +2 -2
- package/docs/components/input-iban/overview.md +4 -4
- package/docs/components/input-iban/use-cases.md +2 -2
- package/docs/components/input-range/overview.md +4 -4
- package/docs/components/input-range/use-cases.md +2 -2
- package/docs/components/input-stepper/overview.md +3 -3
- package/docs/components/input-stepper/use-cases.md +2 -2
- package/docs/components/input-tel/overview.md +3 -3
- package/docs/components/input-tel/use-cases.md +8 -8
- package/docs/components/input-tel-dropdown/extensions.md +2 -2
- package/docs/components/input-tel-dropdown/overview.md +3 -3
- package/docs/components/input-tel-dropdown/use-cases.md +2 -2
- package/docs/components/listbox/overview.md +2 -2
- package/docs/components/listbox/use-cases.md +3 -3
- package/docs/components/menu/api-table.md +44 -0
- package/docs/components/menu/applyMenuDemoStyles.js +173 -0
- package/docs/components/menu/extensions.md +262 -0
- package/docs/components/menu/index.md +13 -0
- package/docs/components/menu/migration.md +129 -0
- package/docs/components/menu/overview.md +448 -0
- package/docs/components/menu/src/DemoNavigationBar.js +441 -0
- package/docs/components/menu/src/DemoSpinButton.js +215 -0
- package/docs/components/menu/src/DemoToolbar.js +101 -0
- package/docs/components/menu/src/DemoTree.js +55 -0
- package/docs/components/menu/src/navigation-bar-types.js +41 -0
- package/docs/components/menu/use-cases.md +74 -0
- 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 +51 -33
- 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/api-table.md +33 -7
- 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 +3 -3
- 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 +46 -43
- 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 +2 -0
- package/exports/define/lion-listbox.js +0 -1
- package/exports/define/lion-menu.js +2 -0
- package/exports/define/lion-menuitem.js +2 -0
- 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/menu-test-suites.js +4 -0
- package/exports/menu.js +3 -0
- package/exports/overlays.js +6 -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/menu-test-suites.js +4 -0
- package/menu.js +3 -0
- package/overlays.js +6 -0
- package/package.json +35 -6
- package/vscode.html-custom-data.json +76 -8
- package/web-types.json +202 -17
|
@@ -14,12 +14,10 @@ import { LionInputStepper } from '../src/LionInputStepper.js';
|
|
|
14
14
|
/**
|
|
15
15
|
* @typedef {import('lit').TemplateResult} TemplateResult
|
|
16
16
|
*/
|
|
17
|
-
const fixture = /** @type {(arg: TemplateResult|string) => Promise<LionInputStepper>} */
|
|
18
|
-
|
|
17
|
+
const fixture = /** @type {(arg: TemplateResult|string) => Promise<LionInputStepper>} */ _fixture;
|
|
19
18
|
export function runInputStepperSuite(klass = LionInputStepper) {
|
|
20
19
|
const tagString = defineCE(class extends klass {});
|
|
21
20
|
const tag = unsafeStatic(tagString);
|
|
22
|
-
|
|
23
21
|
const defaultInputStepper = html`
|
|
24
22
|
<${tag} name="year" label="Years"></${tag}>
|
|
25
23
|
`;
|
|
@@ -37,129 +35,144 @@ export function runInputStepperSuite(klass = LionInputStepper) {
|
|
|
37
35
|
value="1"
|
|
38
36
|
readonly
|
|
39
37
|
></${tag}>`;
|
|
40
|
-
|
|
41
38
|
describe('InputStepper', async () => {
|
|
42
39
|
describe('Stepper', () => {
|
|
43
40
|
it('has a type text', async () => {
|
|
44
41
|
const el = await fixture(defaultInputStepper);
|
|
45
42
|
expect(el._inputNode.type).to.equal('text');
|
|
46
43
|
});
|
|
47
|
-
|
|
48
44
|
it('has a default min and max of Infinity', async () => {
|
|
49
45
|
const el = await fixture(defaultInputStepper);
|
|
50
46
|
expect(el.getAttribute('min')).to.equal('Infinity');
|
|
51
47
|
expect(el.getAttribute('max')).to.equal('Infinity');
|
|
52
48
|
});
|
|
53
|
-
|
|
54
49
|
it('has a default step of 1', async () => {
|
|
55
50
|
const el = await fixture(defaultInputStepper);
|
|
56
51
|
expect(el.getAttribute('step')).to.equal('1');
|
|
57
52
|
});
|
|
58
|
-
|
|
59
53
|
it('can set a step with which the value increases', async () => {
|
|
60
54
|
const el = await fixture(defaultInputStepper);
|
|
61
55
|
el.step = 10;
|
|
62
56
|
await el.updateComplete;
|
|
63
57
|
expect(el.value).to.equal('');
|
|
64
58
|
expect(el.getAttribute('step')).to.equal('10');
|
|
65
|
-
|
|
66
59
|
const incrementButton = el.querySelector('[slot=suffix]');
|
|
67
60
|
incrementButton?.dispatchEvent(new Event('click'));
|
|
68
61
|
expect(el.value).to.equal('10');
|
|
69
62
|
});
|
|
70
63
|
});
|
|
71
|
-
|
|
72
64
|
describe('Formatter', () => {
|
|
73
65
|
it('uses formatNumber for formatting', async () => {
|
|
74
66
|
const el = await fixture(defaultInputStepper);
|
|
75
67
|
expect(el.formatter).to.equal(formatNumber);
|
|
76
68
|
});
|
|
77
|
-
|
|
78
69
|
it('formatNumber uses locale provided in formatOptions', async () => {
|
|
79
70
|
let el = await fixture(html`
|
|
80
|
-
<${tag} .formatOptions="${{
|
|
71
|
+
<${tag} .formatOptions="${{
|
|
72
|
+
locale: 'en-GB',
|
|
73
|
+
}}" .modelValue="${1234.56}"
|
|
81
74
|
></${tag}>
|
|
82
75
|
`);
|
|
83
76
|
expect(el.formattedValue).to.equal('1,234.56');
|
|
84
77
|
el = await fixture(html`
|
|
85
|
-
<${tag} .formatOptions="${{
|
|
78
|
+
<${tag} .formatOptions="${{
|
|
79
|
+
locale: 'nl-NL',
|
|
80
|
+
}}" .modelValue="${1234.56}"
|
|
86
81
|
></${tag}>
|
|
87
82
|
`);
|
|
88
83
|
expect(el.formattedValue).to.equal('1.234,56');
|
|
89
84
|
});
|
|
90
|
-
|
|
91
85
|
it('supports overriding decimalSeparator in formatOptions', async () => {
|
|
92
|
-
const el = await fixture(
|
|
93
|
-
|
|
94
|
-
|
|
86
|
+
const el = await fixture(html`<${tag}
|
|
87
|
+
.formatOptions="${{
|
|
88
|
+
locale: 'nl-NL',
|
|
89
|
+
decimalSeparator: '.',
|
|
90
|
+
}}"
|
|
95
91
|
.modelValue="${12.34}"
|
|
96
92
|
|
|
97
|
-
></${tag}
|
|
98
|
-
);
|
|
93
|
+
></${tag}>`);
|
|
99
94
|
expect(el.formattedValue).to.equal('12.34');
|
|
100
95
|
});
|
|
101
|
-
|
|
102
96
|
it('supports overriding groupSeparator in formatOptions', async () => {
|
|
103
|
-
const el = await fixture(
|
|
104
|
-
|
|
105
|
-
|
|
97
|
+
const el = await fixture(html`<${tag}
|
|
98
|
+
.formatOptions="${{
|
|
99
|
+
locale: 'nl-NL',
|
|
100
|
+
groupSeparator: ',',
|
|
101
|
+
decimalSeparator: '.',
|
|
102
|
+
}}"
|
|
106
103
|
.modelValue="${1234.56}"
|
|
107
104
|
|
|
108
|
-
></${tag}
|
|
109
|
-
);
|
|
105
|
+
></${tag}>`);
|
|
110
106
|
expect(el.formattedValue).to.equal('1,234.56');
|
|
111
107
|
});
|
|
112
108
|
});
|
|
113
|
-
|
|
114
109
|
describe('User interaction', () => {
|
|
115
110
|
it('should NOT increment the value to 1 on [ArrowUp] when is readonly', async () => {
|
|
116
111
|
const el = await fixture(inputStepperReadOnly);
|
|
117
112
|
expect(el.value).to.equal('1');
|
|
118
|
-
el.dispatchEvent(
|
|
113
|
+
el.dispatchEvent(
|
|
114
|
+
new KeyboardEvent('keydown', {
|
|
115
|
+
key: 'ArrowUp',
|
|
116
|
+
}),
|
|
117
|
+
);
|
|
119
118
|
await el.updateComplete;
|
|
120
119
|
expect(el.value).to.equal('1');
|
|
121
120
|
});
|
|
122
|
-
|
|
123
121
|
it('should NOT decrement the value to -1 on [ArrowDown] when is readonly', async () => {
|
|
124
122
|
const el = await fixture(inputStepperReadOnly);
|
|
125
123
|
expect(el.value).to.equal('1');
|
|
126
|
-
el.dispatchEvent(
|
|
124
|
+
el.dispatchEvent(
|
|
125
|
+
new KeyboardEvent('keydown', {
|
|
126
|
+
key: 'ArrowDown',
|
|
127
|
+
}),
|
|
128
|
+
);
|
|
127
129
|
await el.updateComplete;
|
|
128
130
|
expect(el.value).to.equal('1');
|
|
129
131
|
});
|
|
130
|
-
|
|
131
132
|
it('should increment the value to 1 on [ArrowUp]', async () => {
|
|
132
133
|
const el = await fixture(defaultInputStepper);
|
|
133
134
|
expect(el.value).to.equal('');
|
|
134
|
-
el.dispatchEvent(
|
|
135
|
+
el.dispatchEvent(
|
|
136
|
+
new KeyboardEvent('keydown', {
|
|
137
|
+
key: 'ArrowUp',
|
|
138
|
+
}),
|
|
139
|
+
);
|
|
135
140
|
await el.updateComplete;
|
|
136
141
|
expect(el.value).to.equal('1');
|
|
137
142
|
});
|
|
138
|
-
|
|
139
143
|
it('should increment the value to minValue on [ArrowUp] if value is below min', async () => {
|
|
140
144
|
const el = await fixture(inputStepperWithAttrs);
|
|
141
145
|
expect(el.value).to.equal('');
|
|
142
|
-
el.dispatchEvent(
|
|
146
|
+
el.dispatchEvent(
|
|
147
|
+
new KeyboardEvent('keydown', {
|
|
148
|
+
key: 'ArrowUp',
|
|
149
|
+
}),
|
|
150
|
+
);
|
|
143
151
|
await el.updateComplete;
|
|
144
152
|
expect(el.value).to.equal('100');
|
|
145
153
|
});
|
|
146
|
-
|
|
147
154
|
it('should decrement the value to -1 on [ArrowDown]', async () => {
|
|
148
155
|
const el = await fixture(defaultInputStepper);
|
|
149
156
|
expect(el.value).to.equal('');
|
|
150
|
-
el.dispatchEvent(
|
|
157
|
+
el.dispatchEvent(
|
|
158
|
+
new KeyboardEvent('keydown', {
|
|
159
|
+
key: 'ArrowDown',
|
|
160
|
+
}),
|
|
161
|
+
);
|
|
151
162
|
await el.updateComplete;
|
|
152
163
|
expect(el.value).to.equal('−1');
|
|
153
164
|
});
|
|
154
|
-
|
|
155
165
|
it('should increment the value to minValue on [ArrowDown] if value is below min', async () => {
|
|
156
166
|
const el = await fixture(inputStepperWithAttrs);
|
|
157
167
|
el.modelValue = 600;
|
|
158
|
-
el.dispatchEvent(
|
|
168
|
+
el.dispatchEvent(
|
|
169
|
+
new KeyboardEvent('keydown', {
|
|
170
|
+
key: 'ArrowDown',
|
|
171
|
+
}),
|
|
172
|
+
);
|
|
159
173
|
await el.updateComplete;
|
|
160
174
|
expect(el.value).to.equal('200');
|
|
161
175
|
});
|
|
162
|
-
|
|
163
176
|
it('should increment the value to 1 on + button click', async () => {
|
|
164
177
|
const el = await fixture(defaultInputStepper);
|
|
165
178
|
expect(el.value).to.equal('');
|
|
@@ -167,7 +180,6 @@ export function runInputStepperSuite(klass = LionInputStepper) {
|
|
|
167
180
|
incrementButton?.dispatchEvent(new Event('click'));
|
|
168
181
|
expect(el.value).to.equal('1');
|
|
169
182
|
});
|
|
170
|
-
|
|
171
183
|
it('should decrement the value to -1 on - button click', async () => {
|
|
172
184
|
const el = await fixture(defaultInputStepper);
|
|
173
185
|
expect(el.value).to.equal('');
|
|
@@ -175,7 +187,6 @@ export function runInputStepperSuite(klass = LionInputStepper) {
|
|
|
175
187
|
decrementButton?.dispatchEvent(new Event('click'));
|
|
176
188
|
expect(el.value).to.equal('−1');
|
|
177
189
|
});
|
|
178
|
-
|
|
179
190
|
it('fires one "user-input-changed" event on + button click', async () => {
|
|
180
191
|
let counter = 0;
|
|
181
192
|
const el = await fixture(html`
|
|
@@ -193,7 +204,6 @@ export function runInputStepperSuite(klass = LionInputStepper) {
|
|
|
193
204
|
incrementButton?.dispatchEvent(new Event('click'));
|
|
194
205
|
expect(counter).to.equal(1);
|
|
195
206
|
});
|
|
196
|
-
|
|
197
207
|
it('fires one "user-input-changed" event on - button click', async () => {
|
|
198
208
|
let counter = 0;
|
|
199
209
|
const el = await fixture(html`
|
|
@@ -211,7 +221,6 @@ export function runInputStepperSuite(klass = LionInputStepper) {
|
|
|
211
221
|
decrementButton?.dispatchEvent(new Event('click'));
|
|
212
222
|
expect(counter).to.equal(1);
|
|
213
223
|
});
|
|
214
|
-
|
|
215
224
|
it('should update min and max attributes when min and max property change', async () => {
|
|
216
225
|
const el = await fixture(inputStepperWithAttrs);
|
|
217
226
|
el.min = 100;
|
|
@@ -220,7 +229,6 @@ export function runInputStepperSuite(klass = LionInputStepper) {
|
|
|
220
229
|
expect(el._inputNode.min).to.equal(el.min.toString());
|
|
221
230
|
expect(el._inputNode.max).to.equal(el.max.toString());
|
|
222
231
|
});
|
|
223
|
-
|
|
224
232
|
it('should remove the disabled attribute of the decrement button when the min property changes to below the modelvalue', async () => {
|
|
225
233
|
const el = await fixture(inputStepperWithAttrs);
|
|
226
234
|
const decrementButton = el.querySelector('[slot=prefix]');
|
|
@@ -231,7 +239,6 @@ export function runInputStepperSuite(klass = LionInputStepper) {
|
|
|
231
239
|
await nextFrame();
|
|
232
240
|
expect(decrementButton?.getAttribute('disabled')).to.equal(null);
|
|
233
241
|
});
|
|
234
|
-
|
|
235
242
|
it('should add the disabled attribute of the decrement button when the min property changes to the modelvalue', async () => {
|
|
236
243
|
const el = await fixture(inputStepperWithAttrs);
|
|
237
244
|
const decrementButton = el.querySelector('[slot=prefix]');
|
|
@@ -242,7 +249,6 @@ export function runInputStepperSuite(klass = LionInputStepper) {
|
|
|
242
249
|
await nextFrame();
|
|
243
250
|
expect(decrementButton?.getAttribute('disabled')).to.equal('true');
|
|
244
251
|
});
|
|
245
|
-
|
|
246
252
|
it('should remove the disabled attribute of the increment button when the max property changes to above the modelvalue', async () => {
|
|
247
253
|
const el = await fixture(inputStepperWithAttrs);
|
|
248
254
|
const incrementButton = el.querySelector('[slot=suffix]');
|
|
@@ -253,7 +259,6 @@ export function runInputStepperSuite(klass = LionInputStepper) {
|
|
|
253
259
|
await nextFrame();
|
|
254
260
|
expect(incrementButton?.getAttribute('disabled')).to.equal(null);
|
|
255
261
|
});
|
|
256
|
-
|
|
257
262
|
it('should add the disabled attribute of the increment button when the max property changes to the modelvalue', async () => {
|
|
258
263
|
const el = await fixture(inputStepperWithAttrs);
|
|
259
264
|
const incrementButton = el.querySelector('[slot=suffix]');
|
|
@@ -264,7 +269,6 @@ export function runInputStepperSuite(klass = LionInputStepper) {
|
|
|
264
269
|
await nextFrame();
|
|
265
270
|
expect(incrementButton?.getAttribute('disabled')).to.equal('true');
|
|
266
271
|
});
|
|
267
|
-
|
|
268
272
|
it('should react to changes in the modelValue by adjusting the disabled state of the button', async () => {
|
|
269
273
|
const el = await fixture(inputStepperWithAttrs);
|
|
270
274
|
const incrementButton = el.querySelector('[slot=suffix]');
|
|
@@ -275,7 +279,6 @@ export function runInputStepperSuite(klass = LionInputStepper) {
|
|
|
275
279
|
await nextFrame();
|
|
276
280
|
expect(incrementButton?.getAttribute('disabled')).to.equal('true');
|
|
277
281
|
});
|
|
278
|
-
|
|
279
282
|
describe('It align to steps', () => {
|
|
280
283
|
it('aligns the value to the nearest step when incrementing', async () => {
|
|
281
284
|
let el = await fixture(html`<${tag} step="10" min="0" max="100" value="55"></${tag}>`);
|
|
@@ -312,7 +315,6 @@ export function runInputStepperSuite(klass = LionInputStepper) {
|
|
|
312
315
|
await el.updateComplete;
|
|
313
316
|
expect(el.modelValue).to.equal(-3, 'Fail + : (-23 > 100 by 10; val 55)'); // -23 > -13 > -3 > 7
|
|
314
317
|
});
|
|
315
|
-
|
|
316
318
|
it('aligns the value to the nearest step when decrementing', async () => {
|
|
317
319
|
let el = await fixture(html`<${tag} step="10" min="0" max="100" value="55"></${tag}>`);
|
|
318
320
|
let decrementButton = el.querySelector('[slot=prefix]');
|
|
@@ -348,7 +350,6 @@ export function runInputStepperSuite(klass = LionInputStepper) {
|
|
|
348
350
|
await el.updateComplete;
|
|
349
351
|
expect(el.modelValue).to.equal(-13, 'Fail - : (-23 > 100 by 10; val 55)'); // -23 > -13 > -3 > 7
|
|
350
352
|
});
|
|
351
|
-
|
|
352
353
|
it('handles decimal step values correctly', async () => {
|
|
353
354
|
// Test with decimal step 0.1
|
|
354
355
|
let el = await fixture(html`<${tag} step="0.1" min="0" max="9" value="5.55"></${tag}>`);
|
|
@@ -385,13 +386,11 @@ export function runInputStepperSuite(klass = LionInputStepper) {
|
|
|
385
386
|
});
|
|
386
387
|
});
|
|
387
388
|
});
|
|
388
|
-
|
|
389
389
|
describe('_destroyOutputContent method', () => {
|
|
390
390
|
beforeEach(() => {
|
|
391
391
|
// Ensure clean state for each test
|
|
392
392
|
sinon.restore();
|
|
393
393
|
});
|
|
394
|
-
|
|
395
394
|
it('should clear existing timer before setting a new one', async () => {
|
|
396
395
|
const el = await fixture(defaultInputStepper);
|
|
397
396
|
const clearTimeoutSpy = sinon.spy(window, 'clearTimeout');
|
|
@@ -402,11 +401,9 @@ export function runInputStepperSuite(klass = LionInputStepper) {
|
|
|
402
401
|
|
|
403
402
|
// Call _destroyOutputContent
|
|
404
403
|
el._destroyOutputContent();
|
|
405
|
-
|
|
406
404
|
expect(clearTimeoutSpy.calledWith(initialTimer)).to.be.true;
|
|
407
405
|
clearTimeoutSpy.restore();
|
|
408
406
|
});
|
|
409
|
-
|
|
410
407
|
it('should set __valueText to nothing and request update after timeout', async () => {
|
|
411
408
|
const el = await fixture(defaultInputStepper);
|
|
412
409
|
const requestUpdateSpy = sinon.spy(el, 'requestUpdate');
|
|
@@ -420,32 +417,26 @@ export function runInputStepperSuite(klass = LionInputStepper) {
|
|
|
420
417
|
|
|
421
418
|
// Fast forward time by 2000ms (default timeout)
|
|
422
419
|
clock.tick(2000);
|
|
423
|
-
|
|
424
420
|
await expect(el.__valueText).to.equal(nothing);
|
|
425
421
|
expect(requestUpdateSpy.calledOnce).to.be.true;
|
|
426
|
-
|
|
427
422
|
clock.restore();
|
|
428
423
|
requestUpdateSpy.restore();
|
|
429
424
|
});
|
|
430
|
-
|
|
431
425
|
it('should use custom timeout from data-self-destruct attribute', async () => {
|
|
432
426
|
const el = await fixture(html`
|
|
433
427
|
<${tag} name="test" label="Test"> ></${tag}>
|
|
434
428
|
`);
|
|
435
|
-
|
|
436
429
|
await el.updateComplete;
|
|
437
430
|
|
|
438
431
|
// Get the output element and set custom self-destruct value
|
|
439
|
-
const outputElement =
|
|
440
|
-
|
|
441
|
-
|
|
432
|
+
const outputElement =
|
|
433
|
+
/** @type {HTMLElement} */
|
|
434
|
+
el.shadowRoot?.querySelector('.input-stepper__value');
|
|
442
435
|
if (outputElement) {
|
|
443
436
|
outputElement.dataset.selfDestruct = '5000';
|
|
444
437
|
}
|
|
445
|
-
|
|
446
438
|
const clock = sinon.useFakeTimers();
|
|
447
439
|
const requestUpdateSpy = sinon.spy(el, 'requestUpdate');
|
|
448
|
-
|
|
449
440
|
el.__valueText = 'test value';
|
|
450
441
|
el._destroyOutputContent();
|
|
451
442
|
|
|
@@ -458,29 +449,24 @@ export function runInputStepperSuite(klass = LionInputStepper) {
|
|
|
458
449
|
clock.tick(3000); // Total 5000ms
|
|
459
450
|
await expect(el.__valueText).to.equal(nothing);
|
|
460
451
|
expect(requestUpdateSpy.calledOnce).to.be.true;
|
|
461
|
-
|
|
462
452
|
clock.restore();
|
|
463
453
|
requestUpdateSpy.restore();
|
|
464
454
|
});
|
|
465
|
-
|
|
466
455
|
it('should handle invalid data-self-destruct value by using default timeout', async () => {
|
|
467
456
|
const el = await fixture(html`
|
|
468
457
|
<${tag} name="test" label="Test"> ></${tag}>
|
|
469
458
|
`);
|
|
470
|
-
|
|
471
459
|
await el.updateComplete;
|
|
472
460
|
|
|
473
461
|
// Get the output element and set invalid self-destruct value
|
|
474
|
-
const outputElement =
|
|
475
|
-
|
|
476
|
-
|
|
462
|
+
const outputElement =
|
|
463
|
+
/** @type {HTMLElement} */
|
|
464
|
+
el.shadowRoot?.querySelector('.input-stepper__value');
|
|
477
465
|
if (outputElement) {
|
|
478
466
|
outputElement.dataset.selfDestruct = 'invalid';
|
|
479
467
|
}
|
|
480
|
-
|
|
481
468
|
const clock = sinon.useFakeTimers();
|
|
482
469
|
const requestUpdateSpy = sinon.spy(el, 'requestUpdate');
|
|
483
|
-
|
|
484
470
|
el.__valueText = 'test value';
|
|
485
471
|
el._destroyOutputContent();
|
|
486
472
|
|
|
@@ -488,11 +474,9 @@ export function runInputStepperSuite(klass = LionInputStepper) {
|
|
|
488
474
|
clock.tick(2000);
|
|
489
475
|
await expect(el.__valueText).to.equal(nothing);
|
|
490
476
|
expect(requestUpdateSpy.calledOnce).to.be.true;
|
|
491
|
-
|
|
492
477
|
clock.restore();
|
|
493
478
|
requestUpdateSpy.restore();
|
|
494
479
|
});
|
|
495
|
-
|
|
496
480
|
it('should not set timeout if output element does not exist', async () => {
|
|
497
481
|
const el = await fixture(defaultInputStepper);
|
|
498
482
|
const setTimeoutSpy = sinon.spy(window, 'setTimeout');
|
|
@@ -502,9 +486,7 @@ export function runInputStepperSuite(klass = LionInputStepper) {
|
|
|
502
486
|
if (el.shadowRoot) {
|
|
503
487
|
el.shadowRoot.querySelector = () => null;
|
|
504
488
|
}
|
|
505
|
-
|
|
506
489
|
el._destroyOutputContent();
|
|
507
|
-
|
|
508
490
|
expect(setTimeoutSpy.called).to.be.false;
|
|
509
491
|
|
|
510
492
|
// Restore original querySelector
|
|
@@ -513,12 +495,10 @@ export function runInputStepperSuite(klass = LionInputStepper) {
|
|
|
513
495
|
}
|
|
514
496
|
setTimeoutSpy.restore();
|
|
515
497
|
});
|
|
516
|
-
|
|
517
498
|
it('should only execute timeout callback if output element still has parent', async () => {
|
|
518
499
|
const el = await fixture(defaultInputStepper);
|
|
519
500
|
const clock = sinon.useFakeTimers();
|
|
520
501
|
const requestUpdateSpy = sinon.spy(el, 'requestUpdate');
|
|
521
|
-
|
|
522
502
|
el.__valueText = 'test value';
|
|
523
503
|
el._destroyOutputContent();
|
|
524
504
|
|
|
@@ -534,38 +514,29 @@ export function runInputStepperSuite(klass = LionInputStepper) {
|
|
|
534
514
|
// Should not have updated since element was removed
|
|
535
515
|
expect(requestUpdateSpy.called).to.be.false;
|
|
536
516
|
expect(el.__valueText).to.equal('test value');
|
|
537
|
-
|
|
538
517
|
clock.restore();
|
|
539
518
|
requestUpdateSpy.restore();
|
|
540
519
|
});
|
|
541
|
-
|
|
542
520
|
it('should be called when increment button is clicked', async () => {
|
|
543
521
|
const el = await fixture(defaultInputStepper);
|
|
544
522
|
const destroyOutputSpy = sinon.spy(el, '_destroyOutputContent');
|
|
545
|
-
|
|
546
523
|
const incrementButton = el.querySelector('[slot=suffix]');
|
|
547
524
|
incrementButton?.dispatchEvent(new Event('click'));
|
|
548
|
-
|
|
549
525
|
expect(destroyOutputSpy.calledOnce).to.be.true;
|
|
550
526
|
destroyOutputSpy.restore();
|
|
551
527
|
});
|
|
552
|
-
|
|
553
528
|
it('should be called when decrement button is clicked', async () => {
|
|
554
529
|
const el = await fixture(defaultInputStepper);
|
|
555
530
|
const destroyOutputSpy = sinon.spy(el, '_destroyOutputContent');
|
|
556
|
-
|
|
557
531
|
const decrementButton = el.querySelector('[slot=prefix]');
|
|
558
532
|
decrementButton?.dispatchEvent(new Event('click'));
|
|
559
|
-
|
|
560
533
|
expect(destroyOutputSpy.calledOnce).to.be.true;
|
|
561
534
|
destroyOutputSpy.restore();
|
|
562
535
|
});
|
|
563
|
-
|
|
564
536
|
it('should handle multiple rapid calls by clearing previous timers', async () => {
|
|
565
537
|
const el = await fixture(defaultInputStepper);
|
|
566
538
|
const clock = sinon.useFakeTimers();
|
|
567
539
|
const requestUpdateSpy = sinon.spy(el, 'requestUpdate');
|
|
568
|
-
|
|
569
540
|
el.__valueText = 'test value';
|
|
570
541
|
|
|
571
542
|
// Call _destroyOutputContent multiple times rapidly
|
|
@@ -578,48 +549,39 @@ export function runInputStepperSuite(klass = LionInputStepper) {
|
|
|
578
549
|
// Should not have triggered yet since second call reset the timer
|
|
579
550
|
expect(el.__valueText).to.equal('test value');
|
|
580
551
|
expect(requestUpdateSpy.called).to.be.false;
|
|
581
|
-
|
|
582
552
|
clock.tick(1000); // Total 2 seconds from second call
|
|
583
553
|
|
|
584
554
|
// Should trigger now
|
|
585
555
|
await expect(el.__valueText).to.equal(nothing);
|
|
586
556
|
expect(requestUpdateSpy.calledOnce).to.be.true;
|
|
587
|
-
|
|
588
557
|
clock.restore();
|
|
589
558
|
requestUpdateSpy.restore();
|
|
590
559
|
});
|
|
591
560
|
});
|
|
592
|
-
|
|
593
561
|
describe('Accessibility', () => {
|
|
594
562
|
it('is a11y AXE accessible', async () => {
|
|
595
563
|
const el = await fixture(defaultInputStepper);
|
|
596
564
|
await expect(el).to.be.accessible();
|
|
597
565
|
});
|
|
598
|
-
|
|
599
566
|
it('is accessible when disabled', async () => {
|
|
600
567
|
const el = await fixture(html`<${tag} label="rsvp" disabled></${tag}>`);
|
|
601
568
|
await expect(el).to.be.accessible();
|
|
602
569
|
});
|
|
603
|
-
|
|
604
570
|
it('has role="spinbutton"', async () => {
|
|
605
571
|
const el = await fixture(defaultInputStepper);
|
|
606
572
|
expect(el._inputNode.hasAttribute('role')).to.be.true;
|
|
607
573
|
expect(el._inputNode.getAttribute('role')).to.equal('spinbutton');
|
|
608
574
|
});
|
|
609
|
-
|
|
610
575
|
it('updates aria-valuenow when stepper is changed', async () => {
|
|
611
576
|
const el = await fixture(defaultInputStepper);
|
|
612
577
|
el.modelValue = 1;
|
|
613
|
-
|
|
614
578
|
await el.updateComplete;
|
|
615
579
|
expect(el._inputNode.hasAttribute('aria-valuenow')).to.be.true;
|
|
616
580
|
expect(el._inputNode.getAttribute('aria-valuenow')).to.equal('1');
|
|
617
|
-
|
|
618
581
|
el.modelValue = '';
|
|
619
582
|
await el.updateComplete;
|
|
620
583
|
expect(el._inputNode.hasAttribute('aria-valuenow')).to.be.false;
|
|
621
584
|
});
|
|
622
|
-
|
|
623
585
|
it('updates aria-valuetext when stepper is changed', async () => {
|
|
624
586
|
// VoiceOver announces percentages once the valuemin or valuemax are used.
|
|
625
587
|
// This can be fixed by setting valuetext to the same value as valuenow
|
|
@@ -627,15 +589,12 @@ export function runInputStepperSuite(klass = LionInputStepper) {
|
|
|
627
589
|
const el = await fixture(defaultInputStepper);
|
|
628
590
|
el.modelValue = 1;
|
|
629
591
|
await el.updateComplete;
|
|
630
|
-
|
|
631
592
|
expect(el._inputNode.hasAttribute('aria-valuetext')).to.be.true;
|
|
632
593
|
expect(el._inputNode.getAttribute('aria-valuetext')).to.equal('1');
|
|
633
|
-
|
|
634
594
|
el.modelValue = '';
|
|
635
595
|
await el.updateComplete;
|
|
636
596
|
expect(el._inputNode.hasAttribute('aria-valuetext')).to.be.false;
|
|
637
597
|
});
|
|
638
|
-
|
|
639
598
|
it('can give aria-valuetext to override default value as a human-readable text alternative', async () => {
|
|
640
599
|
const values = {
|
|
641
600
|
1: 'first',
|
|
@@ -650,45 +609,37 @@ export function runInputStepperSuite(klass = LionInputStepper) {
|
|
|
650
609
|
expect(el._inputNode.hasAttribute('aria-valuetext')).to.be.true;
|
|
651
610
|
expect(el._inputNode.getAttribute('aria-valuetext')).to.equal('first');
|
|
652
611
|
});
|
|
653
|
-
|
|
654
612
|
it('updates aria-valuemin when stepper is changed', async () => {
|
|
655
613
|
const el = await fixture(inputStepperWithAttrs);
|
|
656
614
|
const incrementButton = el.querySelector('[slot=suffix]');
|
|
657
615
|
incrementButton?.dispatchEvent(new Event('click'));
|
|
658
616
|
expect(el._inputNode.hasAttribute('aria-valuemin')).to.be.true;
|
|
659
617
|
expect(el._inputNode.getAttribute('aria-valuemin')).to.equal('100');
|
|
660
|
-
|
|
661
618
|
el.min = 0;
|
|
662
619
|
await el.updateComplete;
|
|
663
620
|
expect(el._inputNode.hasAttribute('aria-valuemin')).to.be.true;
|
|
664
621
|
expect(el._inputNode.getAttribute('aria-valuemin')).to.equal('0');
|
|
665
622
|
});
|
|
666
|
-
|
|
667
623
|
it('updates aria-valuemax when stepper is changed', async () => {
|
|
668
624
|
const el = await fixture(inputStepperWithAttrs);
|
|
669
625
|
const incrementButton = el.querySelector('[slot=suffix]');
|
|
670
626
|
incrementButton?.dispatchEvent(new Event('click'));
|
|
671
627
|
expect(el._inputNode.hasAttribute('aria-valuemax')).to.be.true;
|
|
672
628
|
expect(el._inputNode.getAttribute('aria-valuemax')).to.equal('200');
|
|
673
|
-
|
|
674
629
|
el.max = 1000;
|
|
675
630
|
await el.updateComplete;
|
|
676
631
|
expect(el._inputNode.hasAttribute('aria-valuemax')).to.be.true;
|
|
677
632
|
expect(el._inputNode.getAttribute('aria-valuemax')).to.equal('1000');
|
|
678
633
|
});
|
|
679
|
-
|
|
680
634
|
it('decrease button should have aria-label with the component label', async () => {
|
|
681
635
|
const el = await fixture(inputStepperWithAttrs);
|
|
682
636
|
const decrementButton = el.querySelector('[slot=prefix]');
|
|
683
|
-
|
|
684
637
|
expect(decrementButton?.hasAttribute('aria-label')).to.be.true;
|
|
685
638
|
expect(decrementButton?.getAttribute('aria-label')).to.equal('Decrease Label');
|
|
686
639
|
});
|
|
687
|
-
|
|
688
640
|
it('increase button should have aria-label with the component label', async () => {
|
|
689
641
|
const el = await fixture(inputStepperWithAttrs);
|
|
690
642
|
const incrementButton = el.querySelector('[slot=suffix]');
|
|
691
|
-
|
|
692
643
|
expect(incrementButton?.hasAttribute('aria-label')).to.be.true;
|
|
693
644
|
expect(incrementButton?.getAttribute('aria-label')).to.equal('Increase Label');
|
|
694
645
|
});
|