@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
|
@@ -19,12 +19,10 @@ import {
|
|
|
19
19
|
|
|
20
20
|
export function runValidateMixinFeedbackPart() {
|
|
21
21
|
const localizeManager = getLocalizeManager();
|
|
22
|
-
|
|
23
22
|
describe('Validity Feedback', () => {
|
|
24
23
|
beforeEach(() => {
|
|
25
24
|
localizeTearDown();
|
|
26
25
|
});
|
|
27
|
-
|
|
28
26
|
class ValidateElement extends ValidateMixin(LitElement) {
|
|
29
27
|
connectedCallback() {
|
|
30
28
|
super.connectedCallback();
|
|
@@ -33,10 +31,8 @@ export function runValidateMixinFeedbackPart() {
|
|
|
33
31
|
this.appendChild(inputNode);
|
|
34
32
|
}
|
|
35
33
|
}
|
|
36
|
-
|
|
37
34
|
const tagString = defineCE(ValidateElement);
|
|
38
35
|
const tag = unsafeStatic(tagString);
|
|
39
|
-
|
|
40
36
|
class ContainsLowercaseA extends Validator {
|
|
41
37
|
static get validatorName() {
|
|
42
38
|
return 'ContainsLowercaseA';
|
|
@@ -50,7 +46,6 @@ export function runValidateMixinFeedbackPart() {
|
|
|
50
46
|
return hasError;
|
|
51
47
|
}
|
|
52
48
|
}
|
|
53
|
-
|
|
54
49
|
class ContainsCat extends Validator {
|
|
55
50
|
static get validatorName() {
|
|
56
51
|
return 'ContainsCat';
|
|
@@ -64,35 +59,28 @@ export function runValidateMixinFeedbackPart() {
|
|
|
64
59
|
return hasError;
|
|
65
60
|
}
|
|
66
61
|
}
|
|
67
|
-
|
|
68
62
|
AlwaysInvalid.getMessage = async () => 'Message for AlwaysInvalid';
|
|
69
63
|
MinLength.getMessage = async () =>
|
|
70
64
|
localizeManager.locale === 'de-DE' ? 'Nachricht für MinLength' : 'Message for MinLength';
|
|
71
65
|
ContainsLowercaseA.getMessage = async () => 'Message for ContainsLowercaseA';
|
|
72
66
|
ContainsCat.getMessage = async () => 'Message for ContainsCat';
|
|
73
|
-
|
|
74
67
|
const lightDom = '';
|
|
75
|
-
|
|
76
68
|
afterEach(() => {
|
|
77
69
|
sinon.restore();
|
|
78
70
|
});
|
|
79
|
-
|
|
80
71
|
it('has .showsFeedbackFor indicating for which type it actually shows messages', async () => {
|
|
81
|
-
const el =
|
|
72
|
+
const el =
|
|
73
|
+
/** @type {ValidateElement} */
|
|
82
74
|
await fixture(html`
|
|
83
75
|
<${tag} submitted .validators=${[new MinLength(3)]}>${lightDom}</${tag}>
|
|
84
|
-
`)
|
|
85
|
-
);
|
|
86
|
-
|
|
76
|
+
`);
|
|
87
77
|
el.modelValue = 'a';
|
|
88
78
|
await el.feedbackComplete;
|
|
89
79
|
expect(el.showsFeedbackFor).to.deep.equal(['error']);
|
|
90
|
-
|
|
91
80
|
el.modelValue = 'abc';
|
|
92
81
|
await el.feedbackComplete;
|
|
93
82
|
expect(el.showsFeedbackFor).to.deep.equal([]);
|
|
94
83
|
});
|
|
95
|
-
|
|
96
84
|
it('reflects .showsFeedbackFor as attribute joined with "," to be used as a style hook', async () => {
|
|
97
85
|
class ValidateElementCustomTypes extends ValidateMixin(LitElement) {
|
|
98
86
|
static get validationTypes() {
|
|
@@ -102,66 +90,63 @@ export function runValidateMixinFeedbackPart() {
|
|
|
102
90
|
}
|
|
103
91
|
const elTagString = defineCE(ValidateElementCustomTypes);
|
|
104
92
|
const elTag = unsafeStatic(elTagString);
|
|
105
|
-
const el =
|
|
93
|
+
const el =
|
|
94
|
+
/** @type {ValidateElementCustomTypes} */
|
|
106
95
|
await fixture(html`
|
|
107
96
|
<${elTag}
|
|
108
97
|
.submitted=${true}
|
|
109
98
|
.validators=${[
|
|
110
|
-
new MinLength(2, {
|
|
111
|
-
|
|
99
|
+
new MinLength(2, {
|
|
100
|
+
type: 'x',
|
|
101
|
+
}),
|
|
102
|
+
new MinLength(3, {
|
|
103
|
+
type: 'error',
|
|
104
|
+
}),
|
|
112
105
|
]}>${lightDom}</${elTag}>
|
|
113
|
-
`)
|
|
114
|
-
);
|
|
115
|
-
|
|
106
|
+
`);
|
|
116
107
|
el.modelValue = '1';
|
|
117
108
|
await el.updateComplete;
|
|
118
109
|
await el.feedbackComplete;
|
|
119
110
|
expect(el.showsFeedbackFor).to.deep.equal(['error', 'x']);
|
|
120
111
|
expect(el.getAttribute('shows-feedback-for')).to.equal('error,x');
|
|
121
|
-
|
|
122
112
|
el.modelValue = '12';
|
|
123
113
|
await el.updateComplete;
|
|
124
114
|
await el.feedbackComplete;
|
|
125
115
|
expect(el.showsFeedbackFor).to.deep.equal(['error']);
|
|
126
116
|
expect(el.getAttribute('shows-feedback-for')).to.equal('error');
|
|
127
|
-
|
|
128
117
|
el.modelValue = '123';
|
|
129
118
|
await el.updateComplete;
|
|
130
119
|
await el.feedbackComplete;
|
|
131
120
|
expect(el.showsFeedbackFor).to.deep.equal([]);
|
|
132
121
|
expect(el.getAttribute('shows-feedback-for')).to.equal('');
|
|
133
122
|
});
|
|
134
|
-
|
|
135
123
|
it('passes a message to the "._feedbackNode"', async () => {
|
|
136
|
-
const el =
|
|
124
|
+
const el =
|
|
125
|
+
/** @type {ValidateElement} */
|
|
137
126
|
await fixture(html`
|
|
138
127
|
<${tag}
|
|
139
128
|
.submitted=${true}
|
|
140
129
|
.modelValue=${'cat'}
|
|
141
130
|
>${lightDom}</${tag}>
|
|
142
|
-
`)
|
|
143
|
-
);
|
|
131
|
+
`);
|
|
144
132
|
const { _feedbackNode } = getFormControlMembers(el);
|
|
145
|
-
|
|
146
133
|
expect(_feedbackNode.feedbackData).to.deep.equal([]);
|
|
147
134
|
el.validators = [new AlwaysInvalid()];
|
|
148
135
|
await el.updateComplete;
|
|
149
136
|
await el.feedbackComplete;
|
|
150
137
|
expect(_feedbackNode.feedbackData?.[0].message).to.equal('Message for AlwaysInvalid');
|
|
151
138
|
});
|
|
152
|
-
|
|
153
139
|
it('has configurable feedback visibility hook', async () => {
|
|
154
|
-
const el =
|
|
140
|
+
const el =
|
|
141
|
+
/** @type {ValidateElement} */
|
|
155
142
|
await fixture(html`
|
|
156
143
|
<${tag}
|
|
157
144
|
.submitted=${true}
|
|
158
145
|
.modelValue=${'cat'}
|
|
159
146
|
.validators=${[new AlwaysInvalid()]}
|
|
160
147
|
>${lightDom}</${tag}>
|
|
161
|
-
`)
|
|
162
|
-
);
|
|
148
|
+
`);
|
|
163
149
|
const { _feedbackNode } = getFormControlMembers(el);
|
|
164
|
-
|
|
165
150
|
await el.updateComplete;
|
|
166
151
|
await el.feedbackComplete;
|
|
167
152
|
expect(_feedbackNode.feedbackData?.[0].message).to.equal('Message for AlwaysInvalid');
|
|
@@ -172,47 +157,41 @@ export function runValidateMixinFeedbackPart() {
|
|
|
172
157
|
await el.feedbackComplete;
|
|
173
158
|
expect(_feedbackNode.feedbackData).to.deep.equal([]);
|
|
174
159
|
});
|
|
175
|
-
|
|
176
160
|
it('writes prioritized result to "._feedbackNode" based on Validator order', async () => {
|
|
177
|
-
const el =
|
|
161
|
+
const el =
|
|
162
|
+
/** @type {ValidateElement} */
|
|
178
163
|
await fixture(html`
|
|
179
164
|
<${tag}
|
|
180
165
|
.submitted=${true}
|
|
181
166
|
.modelValue=${'cat'}
|
|
182
167
|
.validators=${[new AlwaysInvalid(), new MinLength(4)]}
|
|
183
168
|
>${lightDom}</${tag}>
|
|
184
|
-
`)
|
|
185
|
-
);
|
|
169
|
+
`);
|
|
186
170
|
const { _feedbackNode } = getFormControlMembers(el);
|
|
187
|
-
|
|
188
171
|
await el.updateComplete;
|
|
189
172
|
await el.feedbackComplete;
|
|
190
173
|
expect(_feedbackNode.feedbackData?.[0].message).to.equal('Message for AlwaysInvalid');
|
|
191
174
|
});
|
|
192
|
-
|
|
193
175
|
it('renders validation result to "._feedbackNode" when async messages are resolved', async () => {
|
|
194
176
|
/** @type {function} FIXME: find better way to type this kind of pattern */
|
|
195
177
|
let unlockMessage = () => {};
|
|
196
|
-
const messagePromise = new Promise(resolve => {
|
|
178
|
+
const messagePromise = new Promise((resolve) => {
|
|
197
179
|
unlockMessage = resolve;
|
|
198
180
|
});
|
|
199
|
-
|
|
200
181
|
AlwaysInvalid.getMessage = async () => {
|
|
201
182
|
await messagePromise;
|
|
202
183
|
return 'this ends up in "._feedbackNode"';
|
|
203
184
|
};
|
|
204
|
-
|
|
205
|
-
|
|
185
|
+
const el =
|
|
186
|
+
/** @type {ValidateElement} */
|
|
206
187
|
await fixture(html`
|
|
207
188
|
<${tag}
|
|
208
189
|
.submitted=${true}
|
|
209
190
|
.modelValue=${'cat'}
|
|
210
191
|
.validators=${[new AlwaysInvalid()]}
|
|
211
192
|
>${lightDom}</${tag}>
|
|
212
|
-
`)
|
|
213
|
-
);
|
|
193
|
+
`);
|
|
214
194
|
const { _feedbackNode } = getFormControlMembers(el);
|
|
215
|
-
|
|
216
195
|
expect(_feedbackNode.feedbackData).to.be.undefined;
|
|
217
196
|
unlockMessage();
|
|
218
197
|
await el.updateComplete;
|
|
@@ -224,41 +203,38 @@ export function runValidateMixinFeedbackPart() {
|
|
|
224
203
|
it('renders empty result when Validator.getMessage() returns "null"', async () => {
|
|
225
204
|
/** @type {function} FIXME: find better way to type this kind of pattern */
|
|
226
205
|
let unlockMessage = () => {};
|
|
227
|
-
const messagePromise = new Promise(resolve => {
|
|
206
|
+
const messagePromise = new Promise((resolve) => {
|
|
228
207
|
unlockMessage = resolve;
|
|
229
208
|
});
|
|
230
|
-
|
|
231
209
|
AlwaysInvalid.getMessage = async () => {
|
|
232
210
|
await messagePromise;
|
|
233
211
|
return 'this ends up in "._feedbackNode"';
|
|
234
212
|
};
|
|
235
|
-
|
|
236
|
-
|
|
213
|
+
const el =
|
|
214
|
+
/** @type {ValidateElement} */
|
|
237
215
|
await fixture(html`
|
|
238
216
|
<${tag}
|
|
239
217
|
.submitted=${true}
|
|
240
218
|
.modelValue=${'cat'}
|
|
241
219
|
.validators=${[new AlwaysInvalid()]}
|
|
242
220
|
>${lightDom}</${tag}>
|
|
243
|
-
`)
|
|
244
|
-
);
|
|
221
|
+
`);
|
|
245
222
|
const { _feedbackNode } = getFormControlMembers(el);
|
|
246
|
-
|
|
247
223
|
expect(_feedbackNode.feedbackData).to.be.undefined;
|
|
248
224
|
unlockMessage();
|
|
249
225
|
await el.updateComplete;
|
|
250
226
|
await el.feedbackComplete;
|
|
251
227
|
expect(_feedbackNode.feedbackData?.[0].message).to.equal('this ends up in "._feedbackNode"');
|
|
252
228
|
});
|
|
253
|
-
|
|
254
229
|
it('supports custom element to render feedback', async () => {
|
|
255
230
|
class ValidateElementCustomRender extends LitElement {
|
|
256
231
|
static get properties() {
|
|
257
232
|
return {
|
|
258
|
-
feedbackData: {
|
|
233
|
+
feedbackData: {
|
|
234
|
+
attribute: false,
|
|
235
|
+
},
|
|
259
236
|
};
|
|
260
237
|
}
|
|
261
|
-
|
|
262
238
|
constructor() {
|
|
263
239
|
super();
|
|
264
240
|
/**
|
|
@@ -271,13 +247,12 @@ export function runValidateMixinFeedbackPart() {
|
|
|
271
247
|
/** @type {messageMap[]} */
|
|
272
248
|
this.feedbackData = [];
|
|
273
249
|
}
|
|
274
|
-
|
|
275
250
|
render() {
|
|
276
251
|
let name = '';
|
|
277
252
|
if (this.feedbackData && this.feedbackData.length > 0) {
|
|
278
|
-
const ctor =
|
|
279
|
-
|
|
280
|
-
|
|
253
|
+
const ctor =
|
|
254
|
+
/** @type {typeof Validator} */
|
|
255
|
+
this.feedbackData[0]?.validator?.constructor;
|
|
281
256
|
name = ctor.validatorName;
|
|
282
257
|
}
|
|
283
258
|
return html`Custom for ${name}`;
|
|
@@ -285,71 +260,66 @@ export function runValidateMixinFeedbackPart() {
|
|
|
285
260
|
}
|
|
286
261
|
const customFeedbackTagString = defineCE(ValidateElementCustomRender);
|
|
287
262
|
const customFeedbackTag = unsafeStatic(customFeedbackTagString);
|
|
288
|
-
const el =
|
|
263
|
+
const el =
|
|
264
|
+
/** @type {ValidateElement} */
|
|
289
265
|
await fixture(html`
|
|
290
266
|
<${tag}
|
|
291
267
|
.submitted=${true}
|
|
292
268
|
.validators=${[new ContainsLowercaseA(), new AlwaysInvalid()]}>
|
|
293
269
|
<${customFeedbackTag} slot="feedback"><${customFeedbackTag}>
|
|
294
270
|
</${tag}>
|
|
295
|
-
`)
|
|
296
|
-
);
|
|
271
|
+
`);
|
|
297
272
|
const { _feedbackNode } = getFormControlMembers(el);
|
|
298
|
-
|
|
299
273
|
expect(_feedbackNode.localName).to.equal(customFeedbackTagString);
|
|
300
|
-
|
|
301
274
|
el.modelValue = 'dog';
|
|
302
275
|
await el.updateComplete;
|
|
303
276
|
await el.feedbackComplete;
|
|
304
277
|
await _feedbackNode.updateComplete;
|
|
305
278
|
expect(_feedbackNode).shadowDom.to.equal('Custom for ContainsLowercaseA');
|
|
306
|
-
|
|
307
279
|
el.modelValue = 'cat';
|
|
308
280
|
await el.updateComplete;
|
|
309
281
|
await el.feedbackComplete;
|
|
310
282
|
await _feedbackNode.updateComplete;
|
|
311
283
|
expect(_feedbackNode).shadowDom.to.equal('Custom for AlwaysInvalid');
|
|
312
284
|
});
|
|
313
|
-
|
|
314
285
|
it('supports custom messages in Validator instance configuration object', async () => {
|
|
315
|
-
const el =
|
|
286
|
+
const el =
|
|
287
|
+
/** @type {ValidateElement} */
|
|
316
288
|
await fixture(html`
|
|
317
289
|
<${tag}
|
|
318
290
|
.submitted=${true}
|
|
319
|
-
.validators=${[
|
|
291
|
+
.validators=${[
|
|
292
|
+
new MinLength(3, {
|
|
293
|
+
getMessage: async () => 'custom via config',
|
|
294
|
+
}),
|
|
295
|
+
]}
|
|
320
296
|
>${lightDom}</${tag}>
|
|
321
|
-
`)
|
|
322
|
-
);
|
|
297
|
+
`);
|
|
323
298
|
const { _feedbackNode } = getFormControlMembers(el);
|
|
324
|
-
|
|
325
299
|
el.modelValue = 'a';
|
|
326
300
|
await el.updateComplete;
|
|
327
301
|
await el.feedbackComplete;
|
|
328
302
|
expect(_feedbackNode.feedbackData?.[0].message).to.equal('custom via config');
|
|
329
303
|
});
|
|
330
|
-
|
|
331
304
|
it('updates the feedback component when locale changes', async () => {
|
|
332
|
-
const el =
|
|
305
|
+
const el =
|
|
306
|
+
/** @type {ValidateElement} */
|
|
333
307
|
await fixture(html`
|
|
334
308
|
<${tag}
|
|
335
309
|
.submitted=${true}
|
|
336
310
|
.validators=${[new MinLength(3)]}
|
|
337
311
|
.modelValue=${'1'}
|
|
338
312
|
>${lightDom}</${tag}>
|
|
339
|
-
`)
|
|
340
|
-
);
|
|
313
|
+
`);
|
|
341
314
|
const { _feedbackNode } = getFormControlMembers(el);
|
|
342
|
-
|
|
343
315
|
await el.feedbackComplete;
|
|
344
316
|
expect(_feedbackNode.feedbackData?.length).to.equal(1);
|
|
345
317
|
expect(_feedbackNode.feedbackData?.[0].message).to.equal('Message for MinLength');
|
|
346
|
-
|
|
347
318
|
localizeManager.locale = 'de-DE';
|
|
348
319
|
await localizeManager.loadingComplete;
|
|
349
320
|
await el.feedbackComplete;
|
|
350
321
|
expect(_feedbackNode.feedbackData?.[0].message).to.equal('Nachricht für MinLength');
|
|
351
322
|
});
|
|
352
|
-
|
|
353
323
|
it('shows success message and clears after 3s', async () => {
|
|
354
324
|
class ValidateElementCustomTypes extends ValidateMixin(LitElement) {
|
|
355
325
|
static get validationTypes() {
|
|
@@ -359,24 +329,24 @@ export function runValidateMixinFeedbackPart() {
|
|
|
359
329
|
const clock = sinon.useFakeTimers();
|
|
360
330
|
const elTagString = defineCE(ValidateElementCustomTypes);
|
|
361
331
|
const elTag = unsafeStatic(elTagString);
|
|
362
|
-
const el =
|
|
332
|
+
const el =
|
|
333
|
+
/** @type {ValidateElementCustomTypes} */
|
|
363
334
|
await fixture(html`
|
|
364
335
|
<${elTag}
|
|
365
336
|
.submitted=${true}
|
|
366
337
|
.validators=${[
|
|
367
338
|
new MinLength(3),
|
|
368
|
-
new DefaultSuccess(null, {
|
|
339
|
+
new DefaultSuccess(null, {
|
|
340
|
+
getMessage: () => 'This is a success message',
|
|
341
|
+
}),
|
|
369
342
|
]}
|
|
370
343
|
>${lightDom}</${elTag}>
|
|
371
|
-
`)
|
|
372
|
-
);
|
|
344
|
+
`);
|
|
373
345
|
const { _feedbackNode } = getFormControlMembers(el);
|
|
374
|
-
|
|
375
346
|
el.modelValue = 'a';
|
|
376
347
|
await el.updateComplete;
|
|
377
348
|
await el.feedbackComplete;
|
|
378
349
|
expect(_feedbackNode.feedbackData?.[0].message).to.equal('Message for MinLength');
|
|
379
|
-
|
|
380
350
|
el.modelValue = 'abcd';
|
|
381
351
|
await el.updateComplete;
|
|
382
352
|
await el.feedbackComplete;
|
|
@@ -386,7 +356,6 @@ export function runValidateMixinFeedbackPart() {
|
|
|
386
356
|
clock.tick(200);
|
|
387
357
|
expect(_feedbackNode.feedbackData).to.be.empty;
|
|
388
358
|
});
|
|
389
|
-
|
|
390
359
|
it('shows success message and clears after configured time', async () => {
|
|
391
360
|
class ValidateElementCustomTypes extends ValidateMixin(LitElement) {
|
|
392
361
|
static get validationTypes() {
|
|
@@ -396,7 +365,8 @@ export function runValidateMixinFeedbackPart() {
|
|
|
396
365
|
const clock = sinon.useFakeTimers();
|
|
397
366
|
const elTagString = defineCE(ValidateElementCustomTypes);
|
|
398
367
|
const elTag = unsafeStatic(elTagString);
|
|
399
|
-
const el =
|
|
368
|
+
const el =
|
|
369
|
+
/** @type {ValidateElementCustomTypes} */
|
|
400
370
|
await fixture(html`
|
|
401
371
|
<${elTag}
|
|
402
372
|
.submitted=${true}
|
|
@@ -408,15 +378,12 @@ export function runValidateMixinFeedbackPart() {
|
|
|
408
378
|
}),
|
|
409
379
|
]}
|
|
410
380
|
>${lightDom}</${elTag}>
|
|
411
|
-
`)
|
|
412
|
-
);
|
|
381
|
+
`);
|
|
413
382
|
const { _feedbackNode } = getFormControlMembers(el);
|
|
414
|
-
|
|
415
383
|
el.modelValue = 'a';
|
|
416
384
|
await el.updateComplete;
|
|
417
385
|
await el.feedbackComplete;
|
|
418
386
|
expect(_feedbackNode.feedbackData?.[0].message).to.equal('Message for MinLength');
|
|
419
|
-
|
|
420
387
|
el.modelValue = 'abcd';
|
|
421
388
|
await el.updateComplete;
|
|
422
389
|
await el.feedbackComplete;
|
|
@@ -426,7 +393,6 @@ export function runValidateMixinFeedbackPart() {
|
|
|
426
393
|
clock.tick(200);
|
|
427
394
|
expect(_feedbackNode.feedbackData).to.be.empty;
|
|
428
395
|
});
|
|
429
|
-
|
|
430
396
|
it('shows success message and stays persistent', async () => {
|
|
431
397
|
class ValidateElementCustomTypes extends ValidateMixin(LitElement) {
|
|
432
398
|
static get validationTypes() {
|
|
@@ -436,7 +402,8 @@ export function runValidateMixinFeedbackPart() {
|
|
|
436
402
|
const clock = sinon.useFakeTimers();
|
|
437
403
|
const elTagString = defineCE(ValidateElementCustomTypes);
|
|
438
404
|
const elTag = unsafeStatic(elTagString);
|
|
439
|
-
const el =
|
|
405
|
+
const el =
|
|
406
|
+
/** @type {ValidateElementCustomTypes} */
|
|
440
407
|
await fixture(html`
|
|
441
408
|
<${elTag}
|
|
442
409
|
.submitted=${true}
|
|
@@ -448,15 +415,12 @@ export function runValidateMixinFeedbackPart() {
|
|
|
448
415
|
}),
|
|
449
416
|
]}
|
|
450
417
|
>${lightDom}</${elTag}>
|
|
451
|
-
`)
|
|
452
|
-
);
|
|
418
|
+
`);
|
|
453
419
|
const { _feedbackNode } = getFormControlMembers(el);
|
|
454
|
-
|
|
455
420
|
el.modelValue = 'a';
|
|
456
421
|
await el.updateComplete;
|
|
457
422
|
await el.feedbackComplete;
|
|
458
423
|
expect(_feedbackNode.feedbackData?.[0].message).to.equal('Message for MinLength');
|
|
459
|
-
|
|
460
424
|
el.modelValue = 'abcd';
|
|
461
425
|
await el.updateComplete;
|
|
462
426
|
await el.feedbackComplete;
|
|
@@ -468,7 +432,6 @@ export function runValidateMixinFeedbackPart() {
|
|
|
468
432
|
clock.tick(20000);
|
|
469
433
|
expect(_feedbackNode.feedbackData?.[0].message).to.equal('This is a success message');
|
|
470
434
|
});
|
|
471
|
-
|
|
472
435
|
it('shows success message after fixing an error', async () => {
|
|
473
436
|
class ValidateElementCustomTypes extends ValidateMixin(LitElement) {
|
|
474
437
|
static get validationTypes() {
|
|
@@ -477,30 +440,29 @@ export function runValidateMixinFeedbackPart() {
|
|
|
477
440
|
}
|
|
478
441
|
const elTagString = defineCE(ValidateElementCustomTypes);
|
|
479
442
|
const elTag = unsafeStatic(elTagString);
|
|
480
|
-
const el =
|
|
443
|
+
const el =
|
|
444
|
+
/** @type {ValidateElementCustomTypes} */
|
|
481
445
|
await fixture(html`
|
|
482
446
|
<${elTag}
|
|
483
447
|
.submitted=${true}
|
|
484
448
|
.validators=${[
|
|
485
449
|
new MinLength(3),
|
|
486
|
-
new DefaultSuccess(null, {
|
|
450
|
+
new DefaultSuccess(null, {
|
|
451
|
+
getMessage: () => 'This is a success message',
|
|
452
|
+
}),
|
|
487
453
|
]}
|
|
488
454
|
>${lightDom}</${elTag}>
|
|
489
|
-
`)
|
|
490
|
-
);
|
|
455
|
+
`);
|
|
491
456
|
const { _feedbackNode } = getFormControlMembers(el);
|
|
492
|
-
|
|
493
457
|
el.modelValue = 'a';
|
|
494
458
|
await el.updateComplete;
|
|
495
459
|
await el.feedbackComplete;
|
|
496
460
|
expect(_feedbackNode.feedbackData?.[0].message).to.equal('Message for MinLength');
|
|
497
|
-
|
|
498
461
|
el.modelValue = 'abcd';
|
|
499
462
|
await el.updateComplete;
|
|
500
463
|
await el.feedbackComplete;
|
|
501
464
|
expect(_feedbackNode.feedbackData?.[0].message).to.equal('This is a success message');
|
|
502
465
|
});
|
|
503
|
-
|
|
504
466
|
it('does not show success message after fixing error an & field is empty', async () => {
|
|
505
467
|
class ValidateElementCustomTypes extends ValidateMixin(LitElement) {
|
|
506
468
|
static get validationTypes() {
|
|
@@ -509,58 +471,55 @@ export function runValidateMixinFeedbackPart() {
|
|
|
509
471
|
}
|
|
510
472
|
const elTagString = defineCE(ValidateElementCustomTypes);
|
|
511
473
|
const elTag = unsafeStatic(elTagString);
|
|
512
|
-
const el =
|
|
474
|
+
const el =
|
|
475
|
+
/** @type {ValidateElementCustomTypes} */
|
|
513
476
|
await fixture(html`
|
|
514
477
|
<${elTag}
|
|
515
478
|
.submitted=${true}
|
|
516
479
|
.validators=${[
|
|
517
|
-
new MaxLength(3, {
|
|
518
|
-
|
|
480
|
+
new MaxLength(3, {
|
|
481
|
+
getMessage: async () => 'Max length is 3!',
|
|
482
|
+
}),
|
|
483
|
+
new DefaultSuccess(null, {
|
|
484
|
+
getMessage: () => 'This is a success message',
|
|
485
|
+
}),
|
|
519
486
|
]}
|
|
520
487
|
>${lightDom}</${elTag}>
|
|
521
|
-
`)
|
|
522
|
-
);
|
|
488
|
+
`);
|
|
523
489
|
const { _feedbackNode } = getFormControlMembers(el);
|
|
524
|
-
|
|
525
490
|
el.modelValue = 'abcd';
|
|
526
491
|
await el.updateComplete;
|
|
527
492
|
await el.feedbackComplete;
|
|
528
493
|
expect(_feedbackNode.feedbackData?.[0].message).to.equal('Max length is 3!');
|
|
529
|
-
|
|
530
494
|
el.modelValue = '';
|
|
531
495
|
await el.updateComplete;
|
|
532
496
|
await el.feedbackComplete;
|
|
533
497
|
expect(_feedbackNode.feedbackData).to.deep.equal([]);
|
|
534
498
|
});
|
|
535
|
-
|
|
536
499
|
describe('Accessibility', () => {
|
|
537
500
|
it('sets [aria-invalid="true"] to "._inputNode" when there is an error', async () => {
|
|
538
|
-
const el =
|
|
501
|
+
const el =
|
|
502
|
+
/** @type {ValidateElement} */
|
|
539
503
|
await fixture(html`
|
|
540
504
|
<${tag}
|
|
541
505
|
submitted
|
|
542
506
|
.validators=${[new Required()]}
|
|
543
507
|
.modelValue=${'a'}
|
|
544
508
|
>${lightDom}</${tag}>
|
|
545
|
-
`)
|
|
546
|
-
);
|
|
509
|
+
`);
|
|
547
510
|
const { _inputNode } = getFormControlMembers(el);
|
|
548
|
-
|
|
549
511
|
const inputNode = _inputNode;
|
|
550
512
|
expect(inputNode.getAttribute('aria-invalid')).to.equal('false');
|
|
551
|
-
|
|
552
513
|
el.modelValue = '';
|
|
553
514
|
await el.updateComplete;
|
|
554
515
|
await el.feedbackComplete;
|
|
555
516
|
expect(inputNode.getAttribute('aria-invalid')).to.equal('true');
|
|
556
|
-
|
|
557
517
|
el.modelValue = 'a';
|
|
558
518
|
await el.updateComplete;
|
|
559
519
|
await el.feedbackComplete;
|
|
560
520
|
expect(inputNode.getAttribute('aria-invalid')).to.equal('false');
|
|
561
521
|
});
|
|
562
522
|
});
|
|
563
|
-
|
|
564
523
|
describe('FeedbackMessageData', () => {
|
|
565
524
|
it('".getMessage()" gets a reference to formControl, params, modelValue and type', async () => {
|
|
566
525
|
class ValidateElementCustomTypes extends ValidateMixin(LitElement) {
|
|
@@ -568,27 +527,29 @@ export function runValidateMixinFeedbackPart() {
|
|
|
568
527
|
return ['error', 'x'];
|
|
569
528
|
}
|
|
570
529
|
}
|
|
571
|
-
|
|
572
530
|
const elTagString = defineCE(ValidateElementCustomTypes);
|
|
573
531
|
const elTag = unsafeStatic(elTagString);
|
|
574
532
|
let el;
|
|
575
|
-
const constructorValidator = new MinLength(4, {
|
|
576
|
-
|
|
533
|
+
const constructorValidator = new MinLength(4, {
|
|
534
|
+
type: 'x',
|
|
535
|
+
}); // type to prevent duplicates
|
|
536
|
+
const ctorValidator = /** @type {typeof MinLength} */ constructorValidator.constructor;
|
|
577
537
|
const constructorMessageSpy = sinon.spy(ctorValidator, 'getMessage');
|
|
578
|
-
|
|
579
|
-
|
|
538
|
+
el =
|
|
539
|
+
/** @type {ValidateElementCustomTypes} */
|
|
580
540
|
await fixture(html`
|
|
581
541
|
<${elTag}
|
|
582
542
|
.submitted=${true}
|
|
583
543
|
.validators=${[constructorValidator]}
|
|
584
544
|
.modelValue=${'cat'}
|
|
585
545
|
>${lightDom}</${elTag}>
|
|
586
|
-
`)
|
|
587
|
-
);
|
|
546
|
+
`);
|
|
588
547
|
await el.updateComplete;
|
|
589
548
|
await el.feedbackComplete;
|
|
590
549
|
expect(constructorMessageSpy.args[0][0]).to.eql({
|
|
591
|
-
config: {
|
|
550
|
+
config: {
|
|
551
|
+
type: 'x',
|
|
552
|
+
},
|
|
592
553
|
params: 4,
|
|
593
554
|
modelValue: 'cat',
|
|
594
555
|
formControl: el,
|
|
@@ -597,19 +558,19 @@ export function runValidateMixinFeedbackPart() {
|
|
|
597
558
|
name: 'MinLength',
|
|
598
559
|
outcome: true,
|
|
599
560
|
});
|
|
600
|
-
|
|
601
561
|
const instanceMessageSpy = sinon.spy();
|
|
602
|
-
const instanceValidator = new MinLength(4, {
|
|
603
|
-
|
|
604
|
-
|
|
562
|
+
const instanceValidator = new MinLength(4, {
|
|
563
|
+
getMessage: instanceMessageSpy,
|
|
564
|
+
});
|
|
565
|
+
el =
|
|
566
|
+
/** @type {ValidateElementCustomTypes} */
|
|
605
567
|
await fixture(html`
|
|
606
568
|
<${elTag}
|
|
607
569
|
.submitted=${true}
|
|
608
570
|
.validators=${[instanceValidator]}
|
|
609
571
|
.modelValue=${'cat'}
|
|
610
572
|
>${lightDom}</${elTag}>
|
|
611
|
-
`)
|
|
612
|
-
);
|
|
573
|
+
`);
|
|
613
574
|
await el.updateComplete;
|
|
614
575
|
await el.feedbackComplete;
|
|
615
576
|
expect(instanceMessageSpy.args[0][0]).to.eql({
|
|
@@ -625,13 +586,12 @@ export function runValidateMixinFeedbackPart() {
|
|
|
625
586
|
outcome: true,
|
|
626
587
|
});
|
|
627
588
|
});
|
|
628
|
-
|
|
629
589
|
it('".getMessage()" gets .fieldName defined on instance', async () => {
|
|
630
590
|
const constructorValidator = new MinLength(4);
|
|
631
|
-
const ctorValidator = /** @type {typeof MinLength} */
|
|
591
|
+
const ctorValidator = /** @type {typeof MinLength} */ constructorValidator.constructor;
|
|
632
592
|
const spy = sinon.spy(ctorValidator, 'getMessage');
|
|
633
|
-
|
|
634
|
-
|
|
593
|
+
const el =
|
|
594
|
+
/** @type {ValidateElement} */
|
|
635
595
|
await fixture(html`
|
|
636
596
|
<${tag}
|
|
637
597
|
.submitted=${true}
|
|
@@ -643,8 +603,7 @@ export function runValidateMixinFeedbackPart() {
|
|
|
643
603
|
) => resolve('myField'),
|
|
644
604
|
)}
|
|
645
605
|
>${lightDom}</${tag}>
|
|
646
|
-
`)
|
|
647
|
-
);
|
|
606
|
+
`);
|
|
648
607
|
await el.updateComplete;
|
|
649
608
|
await el.feedbackComplete;
|
|
650
609
|
expect(spy.args[0][0]).to.eql({
|
|
@@ -658,16 +617,15 @@ export function runValidateMixinFeedbackPart() {
|
|
|
658
617
|
outcome: true,
|
|
659
618
|
});
|
|
660
619
|
});
|
|
661
|
-
|
|
662
620
|
it('".getMessage()" gets .fieldName defined on Validator config', async () => {
|
|
663
621
|
const constructorValidator = new MinLength(4, {
|
|
664
622
|
// eslint-disable-next-line no-promise-executor-return
|
|
665
|
-
fieldName: new Promise(resolve => resolve('myFieldViaCfg')),
|
|
623
|
+
fieldName: new Promise((resolve) => resolve('myFieldViaCfg')),
|
|
666
624
|
});
|
|
667
|
-
const ctorValidator = /** @type {typeof MinLength} */
|
|
625
|
+
const ctorValidator = /** @type {typeof MinLength} */ constructorValidator.constructor;
|
|
668
626
|
const spy = sinon.spy(ctorValidator, 'getMessage');
|
|
669
|
-
|
|
670
|
-
|
|
627
|
+
const el =
|
|
628
|
+
/** @type {ValidateElement} */
|
|
671
629
|
await fixture(html`
|
|
672
630
|
<${tag}
|
|
673
631
|
.submitted=${true}
|
|
@@ -679,8 +637,7 @@ export function runValidateMixinFeedbackPart() {
|
|
|
679
637
|
) => resolve('myField'),
|
|
680
638
|
)}
|
|
681
639
|
>${lightDom}</${tag}>
|
|
682
|
-
`)
|
|
683
|
-
);
|
|
640
|
+
`);
|
|
684
641
|
await el.updateComplete;
|
|
685
642
|
await el.feedbackComplete;
|
|
686
643
|
|
|
@@ -698,11 +655,9 @@ export function runValidateMixinFeedbackPart() {
|
|
|
698
655
|
outcome: true,
|
|
699
656
|
});
|
|
700
657
|
});
|
|
701
|
-
|
|
702
658
|
it('".getMessage()" gets .outcome, which can be "true" or an enum', async () => {
|
|
703
659
|
class EnumOutComeValidator extends Validator {
|
|
704
660
|
static validatorName = 'EnumOutCome';
|
|
705
|
-
|
|
706
661
|
execute() {
|
|
707
662
|
return 'a-string-instead-of-bool';
|
|
708
663
|
}
|
|
@@ -716,33 +671,29 @@ export function runValidateMixinFeedbackPart() {
|
|
|
716
671
|
'a-string-instead-of-bool': 'Msg based on enum output',
|
|
717
672
|
};
|
|
718
673
|
// @ts-ignore [dynamic-key-access-in-test]
|
|
719
|
-
return results[/** @type {string} */
|
|
674
|
+
return results[/** @type {string} */ outcome];
|
|
720
675
|
}
|
|
721
676
|
}
|
|
722
|
-
|
|
723
677
|
const enumOutComeValidator = new EnumOutComeValidator();
|
|
724
678
|
const spy = sinon.spy(
|
|
725
|
-
/** @type {typeof EnumOutComeValidator} */
|
|
679
|
+
/** @type {typeof EnumOutComeValidator} */ enumOutComeValidator.constructor,
|
|
726
680
|
'getMessage',
|
|
727
681
|
);
|
|
728
|
-
|
|
729
|
-
|
|
682
|
+
const el =
|
|
683
|
+
/** @type {ValidateElement} */
|
|
730
684
|
await fixture(html`
|
|
731
685
|
<${tag}
|
|
732
686
|
.submitted=${true}
|
|
733
687
|
.validators=${[enumOutComeValidator]}
|
|
734
688
|
.modelValue=${'cat'}
|
|
735
689
|
>${lightDom}</${tag}>
|
|
736
|
-
`)
|
|
737
|
-
);
|
|
690
|
+
`);
|
|
738
691
|
await el.updateComplete;
|
|
739
692
|
await el.feedbackComplete;
|
|
740
|
-
|
|
741
693
|
const getMessageArs = spy.args[0][0];
|
|
742
694
|
expect(getMessageArs.outcome).to.equal('a-string-instead-of-bool');
|
|
743
695
|
});
|
|
744
696
|
});
|
|
745
|
-
|
|
746
697
|
it('handles _updateFeedbackComponent with sync and async combinations', async () => {
|
|
747
698
|
/**
|
|
748
699
|
* Problem before, without the Queue system:
|
|
@@ -754,21 +705,19 @@ export function runValidateMixinFeedbackPart() {
|
|
|
754
705
|
* The Queue system solves this by queueing the updateFeedbackComponent tasks and
|
|
755
706
|
* await them one by one.
|
|
756
707
|
*/
|
|
757
|
-
const el =
|
|
708
|
+
const el =
|
|
709
|
+
/** @type {ValidateElement} */
|
|
758
710
|
await fixture(html`
|
|
759
711
|
<${tag}
|
|
760
712
|
.submitted=${true}
|
|
761
713
|
.validators=${[new MinLength(3)]}
|
|
762
714
|
.modelValue=${'1'}
|
|
763
715
|
>${lightDom}</${tag}>
|
|
764
|
-
`)
|
|
765
|
-
);
|
|
716
|
+
`);
|
|
766
717
|
const { _feedbackNode } = getFormControlMembers(el);
|
|
767
|
-
|
|
768
718
|
el.modelValue = '12345';
|
|
769
719
|
await el.updateComplete;
|
|
770
720
|
await el.feedbackComplete;
|
|
771
|
-
|
|
772
721
|
expect(_feedbackNode.feedbackData).to.deep.equal([]);
|
|
773
722
|
});
|
|
774
723
|
});
|