@lion/ui 0.20.0-menu-system.0 → 0.20.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/calendar-suites.js +1 -0
- package/collapsible.js +0 -1
- package/components/button/src/LionButton.js +0 -4
- package/components/button/test-suites/LionButton.suite.js +0 -1
- package/components/calendar/src/LionCalendar.js +1 -3
- package/components/calendar/test/lion-calendar.test.js +67 -47
- package/components/calendar/test-suites/LionCalendar.suite.js +79 -0
- package/components/combobox/test/lion-combobox.test.js +0 -1
- package/components/form-core/src/FormatMixin.js +7 -2
- package/components/form-core/src/form-group/FormGroupMixin.js +0 -7
- package/components/form-core/src/registration/FormRegistrarMixin.js +0 -11
- package/components/form-core/test/FormControlMixin.test.js +0 -1
- package/components/form-core/test/FormatMixin.test.js +4 -1
- package/components/form-core/test/validate/Validator.test.js +0 -2
- package/components/form-core/test-suites/FormatMixin.suite.js +242 -65
- package/components/form-core/test-suites/ValidateMixin.suite.js +0 -2
- package/components/form-core/test-suites/ValidateMixinFeedbackPart.suite.js +0 -1
- package/components/input/test/input-integrations.test.js +3 -2
- package/components/input/test/lion-input-integrations.test.js +2 -1
- package/components/input-amount/test/lion-input-amount-integrations.test.js +1 -1
- package/components/input-amount-dropdown/src/LionInputAmountDropdown.js +22 -4
- package/components/input-amount-dropdown/test/lion-input-amount-dropdown-integrations.test.js +22 -0
- package/components/input-amount-dropdown/test-suites/LionInputAmountDropdown.suite.js +59 -3
- package/components/input-date/test/lion-input-date-integrations.test.js +1 -1
- package/components/input-datepicker/src/localizeNamespaceLoader.js +0 -1
- package/components/input-datepicker/test/lion-input-datepicker-integrations.test.js +1 -1
- package/components/input-datepicker/test/lion-input-datepicker.test.js +19 -9
- package/components/input-datepicker/test-suites/LionInputDatepicker.suite.js +35 -0
- package/components/input-email/src/LionInputEmail.js +2 -0
- package/components/input-email/test/lion-input-email-integrations.test.js +1 -1
- package/components/input-email/test/lion-input-email.test.js +6 -0
- package/components/input-file/src/validators.js +31 -1
- package/components/input-file/test/FileValidators.test.js +31 -0
- package/components/input-file/translations/bg.js +1 -0
- package/components/input-file/translations/cs.js +1 -0
- package/components/input-file/translations/de.js +2 -0
- package/components/input-file/translations/en.js +1 -0
- package/components/input-file/translations/es.js +1 -0
- package/components/input-file/translations/fr.js +1 -0
- package/components/input-file/translations/hu.js +1 -0
- package/components/input-file/translations/id.js +1 -0
- package/components/input-file/translations/it.js +1 -0
- package/components/input-file/translations/nl.js +1 -0
- package/components/input-file/translations/pl.js +1 -0
- package/components/input-file/translations/ro.js +1 -0
- package/components/input-file/translations/ru.js +1 -0
- package/components/input-file/translations/sk.js +1 -0
- package/components/input-file/translations/uk.js +1 -0
- package/components/input-file/translations/zh.js +1 -0
- package/components/input-iban/test/lion-input-iban-integrations.test.js +1 -1
- package/components/input-stepper/test-suites/lion-input-stepper.integration.suite.js +2 -2
- package/components/input-tel/src/LionInputTel.js +1 -1
- package/components/input-tel/test-suites/LionInputTel.suite.js +7 -0
- package/components/localize/test/date/formatDate.test.js +0 -1
- package/components/overlays/src/OverlayController.js +110 -278
- package/components/overlays/src/OverlayMixin.js +11 -58
- package/components/overlays/src/OverlaysManager.js +2 -2
- package/components/overlays/src/configurations/visibility-trigger-partials/withHoverInteraction.js +41 -9
- package/components/overlays/src/utils/adopt-styles.js +2 -3
- package/components/overlays/src/utils/get-focusable-elements.js +0 -4
- package/components/overlays/src/utils/is-equal-config.js +6 -10
- package/components/overlays/test/OverlayController.test.js +14 -127
- package/components/overlays/test/utils-tests/is-equal-config.test.js +1 -1
- package/components/overlays/test-suites/OverlayMixin.suite.js +8 -8
- package/components/overlays/test-suites/WithHoverInteraction.suite.js +212 -0
- package/components/overlays/types/ArrowMixinTypes.ts +1 -3
- package/components/overlays/types/OverlayConfig.ts +5 -20
- package/components/overlays/types/OverlayMixinTypes.ts +0 -2
- package/components/select-rich/test/lion-select-rich.test.js +0 -3
- package/components/textarea/test/lion-textarea-integrations.test.js +2 -1
- package/components/tooltip/test/lion-tooltip.test.js +9 -1
- package/custom-elements.json +18086 -30683
- package/dist-types/components/button/src/LionButton.d.ts +0 -1
- package/dist-types/components/button/src/LionButton.d.ts.map +1 -1
- package/dist-types/components/button/test-suites/LionButton.suite.d.ts.map +1 -1
- package/dist-types/components/calendar/src/LionCalendar.d.ts.map +1 -1
- package/dist-types/components/calendar/test/lion-calendar.test.d.ts.map +1 -1
- package/dist-types/components/calendar/test-suites/LionCalendar.suite.d.ts +5 -0
- package/dist-types/components/calendar/test-suites/LionCalendar.suite.d.ts.map +1 -0
- package/dist-types/components/combobox/src/LionCombobox.d.ts +1 -1
- package/dist-types/components/dialog/src/LionDialog.d.ts +2 -6
- package/dist-types/components/dialog/src/LionDialog.d.ts.map +1 -1
- package/dist-types/components/form-core/src/FormatMixin.d.ts.map +1 -1
- package/dist-types/components/form-core/src/form-group/FormGroupMixin.d.ts.map +1 -1
- package/dist-types/components/form-core/src/registration/FormRegistrarMixin.d.ts.map +1 -1
- package/dist-types/components/form-core/test-suites/FormatMixin.suite.d.ts +50 -5
- package/dist-types/components/form-core/test-suites/FormatMixin.suite.d.ts.map +1 -1
- package/dist-types/components/form-core/test-suites/ValidateMixin.suite.d.ts.map +1 -1
- package/dist-types/components/form-core/test-suites/ValidateMixinFeedbackPart.suite.d.ts.map +1 -1
- package/dist-types/components/icon/src/LionIcon.d.ts +2 -2
- package/dist-types/components/input-amount-dropdown/src/LionInputAmountDropdown.d.ts.map +1 -1
- package/dist-types/components/input-amount-dropdown/test/lion-input-amount-dropdown-integrations.test.d.ts +2 -0
- package/dist-types/components/input-amount-dropdown/test/lion-input-amount-dropdown-integrations.test.d.ts.map +1 -0
- package/dist-types/components/input-amount-dropdown/test-suites/LionInputAmountDropdown.suite.d.ts.map +1 -1
- package/dist-types/components/input-datepicker/src/LionInputDatepicker.d.ts +1 -1
- package/dist-types/components/input-datepicker/src/localizeNamespaceLoader.d.ts.map +1 -1
- package/dist-types/components/input-datepicker/test/lion-input-datepicker.test.d.ts.map +1 -1
- package/dist-types/components/input-datepicker/test-suites/LionInputDatepicker.suite.d.ts +7 -0
- package/dist-types/components/input-datepicker/test-suites/LionInputDatepicker.suite.d.ts.map +1 -0
- package/dist-types/components/input-email/src/LionInputEmail.d.ts.map +1 -1
- package/dist-types/components/input-file/src/validators.d.ts +11 -0
- package/dist-types/components/input-file/src/validators.d.ts.map +1 -1
- package/dist-types/components/input-file/translations/bg-BG.d.ts +1 -0
- package/dist-types/components/input-file/translations/bg.d.ts +1 -0
- package/dist-types/components/input-file/translations/cs-CZ.d.ts +1 -0
- package/dist-types/components/input-file/translations/cs.d.ts +1 -0
- package/dist-types/components/input-file/translations/de-DE.d.ts +1 -0
- package/dist-types/components/input-file/translations/de.d.ts +1 -0
- package/dist-types/components/input-file/translations/en-AU.d.ts +1 -0
- package/dist-types/components/input-file/translations/en-GB.d.ts +1 -0
- package/dist-types/components/input-file/translations/en-PH.d.ts +1 -0
- package/dist-types/components/input-file/translations/en-US.d.ts +1 -0
- package/dist-types/components/input-file/translations/en.d.ts +1 -0
- package/dist-types/components/input-file/translations/es-ES.d.ts +1 -0
- package/dist-types/components/input-file/translations/es.d.ts +1 -0
- package/dist-types/components/input-file/translations/fr-BE.d.ts +1 -0
- package/dist-types/components/input-file/translations/fr-FR.d.ts +1 -0
- package/dist-types/components/input-file/translations/fr.d.ts +1 -0
- package/dist-types/components/input-file/translations/hu-HU.d.ts +1 -0
- package/dist-types/components/input-file/translations/hu.d.ts +1 -0
- package/dist-types/components/input-file/translations/id-ID.d.ts +1 -0
- package/dist-types/components/input-file/translations/id.d.ts +1 -0
- package/dist-types/components/input-file/translations/it-IT.d.ts +1 -0
- package/dist-types/components/input-file/translations/it.d.ts +1 -0
- package/dist-types/components/input-file/translations/nl-BE.d.ts +1 -0
- package/dist-types/components/input-file/translations/nl-NL.d.ts +1 -0
- package/dist-types/components/input-file/translations/nl.d.ts +1 -0
- package/dist-types/components/input-file/translations/pl-PL.d.ts +1 -0
- package/dist-types/components/input-file/translations/pl.d.ts +1 -0
- package/dist-types/components/input-file/translations/ro-RO.d.ts +1 -0
- package/dist-types/components/input-file/translations/ro.d.ts +1 -0
- package/dist-types/components/input-file/translations/ru-RU.d.ts +1 -0
- package/dist-types/components/input-file/translations/ru.d.ts +1 -0
- package/dist-types/components/input-file/translations/sk-SK.d.ts +1 -0
- package/dist-types/components/input-file/translations/sk.d.ts +1 -0
- package/dist-types/components/input-file/translations/uk-UA.d.ts +1 -0
- package/dist-types/components/input-file/translations/uk.d.ts +1 -0
- package/dist-types/components/input-file/translations/zh-CN.d.ts +1 -0
- package/dist-types/components/input-file/translations/zh.d.ts +1 -0
- package/dist-types/components/input-tel/src/LionInputTel.d.ts.map +1 -1
- package/dist-types/components/input-tel/test-suites/LionInputTel.suite.d.ts.map +1 -1
- package/dist-types/components/overlays/src/OverlayController.d.ts +12 -24
- 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/configurations/visibility-trigger-partials/withHoverInteraction.d.ts.map +1 -1
- package/dist-types/components/overlays/src/utils/get-focusable-elements.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/test-suites/WithHoverInteraction.suite.d.ts +17 -0
- package/dist-types/components/overlays/test-suites/WithHoverInteraction.suite.d.ts.map +1 -0
- package/dist-types/components/overlays/types/ArrowMixinTypes.d.ts.map +1 -1
- package/dist-types/components/overlays/types/OverlayConfig.d.ts +2 -12
- package/dist-types/components/overlays/types/OverlayConfig.d.ts.map +1 -1
- package/dist-types/components/overlays/types/OverlayMixinTypes.d.ts +0 -1
- package/dist-types/components/overlays/types/OverlayMixinTypes.d.ts.map +1 -1
- package/dist-types/components/select-rich/src/LionSelectRich.d.ts +3 -11
- package/dist-types/components/select-rich/src/LionSelectRich.d.ts.map +1 -1
- package/dist-types/components/tooltip/src/LionTooltip.d.ts +1 -1
- package/dist-types/components/tooltip/test/lion-tooltip.test.d.ts.map +1 -1
- package/dist-types/exports/calendar-suites.d.ts +2 -0
- package/dist-types/exports/calendar-suites.d.ts.map +1 -0
- package/dist-types/exports/input-datepicker-suites.d.ts +2 -0
- package/dist-types/exports/input-datepicker-suites.d.ts.map +1 -0
- package/dist-types/exports/input-file.d.ts +1 -1
- package/dist-types/exports/overlays-test-suites.d.ts +1 -0
- package/dist-types/exports/overlays.d.ts +0 -3
- package/dist-types/exports/overlays.d.ts.map +1 -1
- package/dist-types/tsconfig.tsbuildinfo +1 -1
- package/docs/components/checkbox-group/overview.md +2 -2
- package/docs/components/collapsible/overview.md +1 -1
- package/docs/components/combobox/api-table.md +8 -21
- package/docs/components/combobox/overview.md +1 -1
- package/docs/components/combobox/use-cases.md +1 -1
- package/docs/components/dialog/api-table.md +6 -31
- package/docs/components/dialog/overview.md +1 -1
- package/docs/components/fieldset/overview.md +5 -5
- package/docs/components/form/overview.md +3 -3
- package/docs/components/form/use-cases.md +2 -2
- package/docs/components/icon/use-cases.md +1 -1
- package/docs/components/input/overview.md +1 -1
- package/docs/components/input-amount/overview.md +3 -3
- package/docs/components/input-amount-dropdown/api-table.md +2 -2
- package/docs/components/input-date/overview.md +3 -3
- package/docs/components/input-datepicker/api-table.md +4 -21
- package/docs/components/input-datepicker/overview.md +5 -5
- package/docs/components/input-email/api-table.md +1 -1
- package/docs/components/input-email/overview.md +2 -2
- package/docs/components/input-file/overview.md +1 -1
- package/docs/components/input-file/use-cases.md +18 -0
- package/docs/components/input-iban/overview.md +2 -2
- package/docs/components/input-range/overview.md +2 -2
- package/docs/components/input-stepper/overview.md +1 -1
- package/docs/components/input-tel/api-table.md +1 -1
- package/docs/components/input-tel/overview.md +1 -1
- package/docs/components/input-tel/use-cases.md +6 -6
- package/docs/components/input-tel-dropdown/api-table.md +1 -1
- package/docs/components/input-tel-dropdown/overview.md +1 -1
- package/docs/components/listbox/use-cases.md +1 -1
- package/docs/components/radio-group/overview.md +3 -3
- package/docs/components/select/use-cases.md +1 -1
- package/docs/components/select-rich/api-table.md +5 -21
- package/docs/components/select-rich/use-cases.md +2 -2
- package/docs/components/tabs/examples.md +1 -1
- package/docs/components/tooltip/api-table.md +11 -36
- package/docs/components/tooltip/use-cases.md +34 -1
- package/docs/fundamentals/index.md +4 -4
- package/docs/fundamentals/node-tools/publish-docs/overview.md +3 -3
- package/docs/fundamentals/node-tools/rocket-preset-extend-lion-docs/overview.md +2 -2
- package/docs/fundamentals/rationales/accessibility.md +1 -1
- package/docs/fundamentals/systems/core/SlotMixin.md +1 -1
- package/docs/fundamentals/systems/core/overview.md +1 -1
- package/docs/fundamentals/systems/form/formatting-and-parsing.md +4 -4
- package/docs/fundamentals/systems/form/model-value.md +1 -1
- package/docs/fundamentals/systems/form/overview.md +28 -28
- package/docs/fundamentals/systems/form/validate.md +2 -2
- package/docs/fundamentals/systems/localize/overview.md +4 -4
- package/docs/fundamentals/systems/overlays/api-table.md +34 -36
- package/docs/fundamentals/systems/overlays/configuration.md +2 -2
- package/docs/fundamentals/systems/overlays/overview.md +5 -5
- package/docs/fundamentals/systems/overlays/use-cases.md +2 -2
- package/docs/fundamentals/tools/helpers/overview.md +1 -1
- package/docs/fundamentals/tools/singleton-manager/overview.md +4 -4
- package/docs/guides/how-to/create-a-custom-field.md +5 -5
- package/docs/guides/how-to/create-a-form.md +4 -4
- package/docs/guides/how-to/extend-a-native-input.md +2 -2
- package/docs/guides/how-to/index.md +1 -1
- package/docs/guides/index.md +8 -8
- package/docs/guides/principles/index.md +5 -5
- package/docs/guides/principles/styling.md +1 -1
- package/exports/calendar-suites.js +1 -0
- package/exports/collapsible.js +0 -1
- package/exports/input-datepicker-suites.js +1 -0
- package/exports/input-file.js +5 -1
- package/exports/overlays-test-suites.js +1 -0
- package/exports/overlays.js +0 -6
- package/input-datepicker-suites.js +1 -0
- package/input-file.js +5 -1
- package/overlays-test-suites.js +1 -0
- package/overlays.js +0 -6
- package/package.json +2 -2
- package/components/collapsible/src/DisclosureMixin.js +0 -313
- package/components/collapsible/test-suites/DisclosureMixin.suite.js +0 -30
- package/components/collapsible/types/DisclosureMixinTypes.ts +0 -48
- package/components/menu/CHANGELOG.md +0 -37
- package/components/menu/README.md +0 -335
- package/components/menu/index.js +0 -2
- package/components/menu/lion-menu-overlay.js +0 -3
- package/components/menu/lion-menu.js +0 -3
- package/components/menu/lion-spinbutton.js +0 -3
- package/components/menu/lion-toolbar.js +0 -3
- package/components/menu/lion-tree.js +0 -3
- package/components/menu/package.json +0 -46
- package/components/menu/requirements.temp.md +0 -12
- package/components/menu/src/InteractiveListMixin.js +0 -840
- package/components/menu/src/LionMenu.js +0 -250
- package/components/menu/src/LionMenuHybrid.js +0 -46
- package/components/menu/src/LionMenuOverlay.js +0 -155
- package/components/menu/src/LionSpinbutton.js +0 -213
- package/components/menu/src/LionToolbar.js +0 -94
- package/components/menu/src/LionTree.js +0 -52
- package/components/menu/src/MoreButtonMenuMixin.js +0 -278
- package/components/menu/src/MultiLevelListMixin.js +0 -311
- package/components/menu/src/utils/isInView.js +0 -26
- package/components/menu/src/utils/listItemInteractions.js +0 -124
- package/components/menu/test/InteractiveListMixin.test.js +0 -3
- package/components/menu/test/MoreButtonMenuMixin.test.js +0 -4
- package/components/menu/test/MultiLevelListMixin.test.js +0 -3
- package/components/menu/test/lion-menu-hybrid.test.js +0 -3
- package/components/menu/test/lion-menu.test.js +0 -11
- package/components/menu/test/lion-toolbar.test.js +0 -8
- package/components/menu/test/lion-tree.test.js +0 -7
- package/components/menu/test-helpers/mimicKeyPress.js +0 -9
- package/components/menu/test-suites/InteractiveListMixin.suite.js +0 -454
- package/components/menu/test-suites/LionMenu.suite.js +0 -113
- package/components/menu/test-suites/LionMenuHybrid.suite.js +0 -583
- package/components/menu/test-suites/MoreButtonMenuMixin.suite.js +0 -372
- package/components/menu/test-suites/MultiLevelListMixin.suite.js +0 -303
- package/components/menu/types/InteractiveListMixinTypes.d.ts +0 -84
- package/components/navigation-bar/README.md +0 -1
- package/components/navigation-bar/src/LionNavigationBar.js +0 -439
- package/components/navigation-bar/src/types.js +0 -41
- package/components/overlays/NEXT.md +0 -49
- package/components/overlays/test/withHoverInteraction.test.js +0 -90
- package/dist-types/components/collapsible/src/DisclosureMixin.d.ts +0 -3
- package/dist-types/components/collapsible/src/DisclosureMixin.d.ts.map +0 -1
- package/dist-types/components/collapsible/test-suites/DisclosureMixin.suite.d.ts +0 -2
- package/dist-types/components/collapsible/test-suites/DisclosureMixin.suite.d.ts.map +0 -1
- package/dist-types/components/collapsible/types/DisclosureMixinTypes.d.ts +0 -24
- package/dist-types/components/collapsible/types/DisclosureMixinTypes.d.ts.map +0 -1
- package/dist-types/components/menu/index.d.ts +0 -3
- package/dist-types/components/menu/index.d.ts.map +0 -1
- package/dist-types/components/menu/lion-menu-overlay.d.ts +0 -2
- package/dist-types/components/menu/lion-menu-overlay.d.ts.map +0 -1
- package/dist-types/components/menu/lion-menu.d.ts +0 -2
- package/dist-types/components/menu/lion-menu.d.ts.map +0 -1
- package/dist-types/components/menu/lion-spinbutton.d.ts +0 -2
- package/dist-types/components/menu/lion-spinbutton.d.ts.map +0 -1
- package/dist-types/components/menu/lion-toolbar.d.ts +0 -2
- package/dist-types/components/menu/lion-toolbar.d.ts.map +0 -1
- package/dist-types/components/menu/lion-tree.d.ts +0 -2
- package/dist-types/components/menu/lion-tree.d.ts.map +0 -1
- package/dist-types/components/menu/src/InteractiveListMixin.d.ts +0 -617
- package/dist-types/components/menu/src/InteractiveListMixin.d.ts.map +0 -1
- package/dist-types/components/menu/src/LionMenu.d.ts +0 -635
- package/dist-types/components/menu/src/LionMenu.d.ts.map +0 -1
- package/dist-types/components/menu/src/LionMenuHybrid.d.ts +0 -19
- package/dist-types/components/menu/src/LionMenuHybrid.d.ts.map +0 -1
- package/dist-types/components/menu/src/LionMenuOverlay.d.ts +0 -1015
- package/dist-types/components/menu/src/LionMenuOverlay.d.ts.map +0 -1
- package/dist-types/components/menu/src/LionSpinbutton.d.ts +0 -58
- package/dist-types/components/menu/src/LionSpinbutton.d.ts.map +0 -1
- package/dist-types/components/menu/src/LionToolbar.d.ts +0 -8
- package/dist-types/components/menu/src/LionToolbar.d.ts.map +0 -1
- package/dist-types/components/menu/src/LionTree.d.ts +0 -447
- package/dist-types/components/menu/src/LionTree.d.ts.map +0 -1
- package/dist-types/components/menu/src/MoreButtonMenuMixin.d.ts +0 -39
- package/dist-types/components/menu/src/MoreButtonMenuMixin.d.ts.map +0 -1
- package/dist-types/components/menu/src/MultiLevelListMixin.d.ts +0 -503
- package/dist-types/components/menu/src/MultiLevelListMixin.d.ts.map +0 -1
- package/dist-types/components/menu/src/utils/isInView.d.ts +0 -9
- package/dist-types/components/menu/src/utils/isInView.d.ts.map +0 -1
- package/dist-types/components/menu/src/utils/listItemInteractions.d.ts +0 -48
- package/dist-types/components/menu/src/utils/listItemInteractions.d.ts.map +0 -1
- package/dist-types/components/menu/test/InteractiveListMixin.test.d.ts +0 -2
- package/dist-types/components/menu/test/InteractiveListMixin.test.d.ts.map +0 -1
- package/dist-types/components/menu/test/MoreButtonMenuMixin.test.d.ts +0 -2
- package/dist-types/components/menu/test/MoreButtonMenuMixin.test.d.ts.map +0 -1
- package/dist-types/components/menu/test/MultiLevelListMixin.test.d.ts +0 -2
- package/dist-types/components/menu/test/MultiLevelListMixin.test.d.ts.map +0 -1
- package/dist-types/components/menu/test/lion-menu-hybrid.test.d.ts +0 -2
- package/dist-types/components/menu/test/lion-menu-hybrid.test.d.ts.map +0 -1
- package/dist-types/components/menu/test/lion-menu.test.d.ts +0 -2
- package/dist-types/components/menu/test/lion-menu.test.d.ts.map +0 -1
- package/dist-types/components/menu/test/lion-toolbar.test.d.ts +0 -2
- package/dist-types/components/menu/test/lion-toolbar.test.d.ts.map +0 -1
- package/dist-types/components/menu/test/lion-tree.test.d.ts +0 -2
- package/dist-types/components/menu/test/lion-tree.test.d.ts.map +0 -1
- package/dist-types/components/menu/test-helpers/mimicKeyPress.d.ts +0 -7
- package/dist-types/components/menu/test-helpers/mimicKeyPress.d.ts.map +0 -1
- package/dist-types/components/menu/test-suites/InteractiveListMixin.suite.d.ts +0 -14
- package/dist-types/components/menu/test-suites/InteractiveListMixin.suite.d.ts.map +0 -1
- package/dist-types/components/menu/test-suites/LionMenu.suite.d.ts +0 -9
- package/dist-types/components/menu/test-suites/LionMenu.suite.d.ts.map +0 -1
- package/dist-types/components/menu/test-suites/LionMenuHybrid.suite.d.ts +0 -5
- package/dist-types/components/menu/test-suites/LionMenuHybrid.suite.d.ts.map +0 -1
- package/dist-types/components/menu/test-suites/MoreButtonMenuMixin.suite.d.ts +0 -14
- package/dist-types/components/menu/test-suites/MoreButtonMenuMixin.suite.d.ts.map +0 -1
- package/dist-types/components/menu/test-suites/MultiLevelListMixin.suite.d.ts +0 -11
- package/dist-types/components/menu/test-suites/MultiLevelListMixin.suite.d.ts.map +0 -1
- package/dist-types/components/navigation-bar/src/LionNavigationBar.d.ts +0 -238
- package/dist-types/components/navigation-bar/src/LionNavigationBar.d.ts.map +0 -1
- package/dist-types/components/navigation-bar/src/types.d.ts +0 -85
- package/dist-types/components/navigation-bar/src/types.d.ts.map +0 -1
- package/dist-types/components/overlays/test/withHoverInteraction.test.d.ts +0 -2
- package/dist-types/components/overlays/test/withHoverInteraction.test.d.ts.map +0 -1
- package/dist-types/exports/define/lion-item.d.ts +0 -2
- package/dist-types/exports/define/lion-item.d.ts.map +0 -1
- package/dist-types/exports/define/lion-menu-overlay.d.ts +0 -2
- package/dist-types/exports/define/lion-menu-overlay.d.ts.map +0 -1
- package/dist-types/exports/define/lion-menu.d.ts +0 -2
- package/dist-types/exports/define/lion-menu.d.ts.map +0 -1
- package/dist-types/exports/define/lion-navigation-bar.d.ts +0 -2
- package/dist-types/exports/define/lion-navigation-bar.d.ts.map +0 -1
- package/dist-types/exports/define/lion-toolbar.d.ts +0 -2
- package/dist-types/exports/define/lion-toolbar.d.ts.map +0 -1
- package/dist-types/exports/define/lion-tree.d.ts +0 -2
- package/dist-types/exports/define/lion-tree.d.ts.map +0 -1
- package/dist-types/exports/menu-test-suites.d.ts +0 -4
- package/dist-types/exports/menu-test-suites.d.ts.map +0 -1
- package/dist-types/exports/menu.d.ts +0 -7
- package/dist-types/exports/menu.d.ts.map +0 -1
- package/dist-types/exports/navigation-bar.d.ts +0 -2
- package/dist-types/exports/navigation-bar.d.ts.map +0 -1
- package/docs/components/menu/api-table.md +0 -460
- package/docs/components/menu/applyMenuDemoStyles.js +0 -173
- package/docs/components/menu/extensions.md +0 -262
- package/docs/components/menu/index.md +0 -13
- package/docs/components/menu/overview.md +0 -422
- package/docs/components/menu/use-cases.md +0 -77
- package/exports/define/lion-item.js +0 -3
- package/exports/define/lion-menu-overlay.js +0 -3
- package/exports/define/lion-menu.js +0 -3
- package/exports/define/lion-navigation-bar.js +0 -3
- package/exports/define/lion-toolbar.js +0 -3
- package/exports/define/lion-tree.js +0 -3
- package/exports/menu-test-suites.js +0 -4
- package/exports/menu.js +0 -7
- package/exports/navigation-bar.js +0 -1
- package/menu-test-suites.js +0 -4
- package/menu.js +0 -7
- package/navigation-bar.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { runCalendarSuite } from './components/calendar/test-suites/LionCalendar.suite.js';
|
package/collapsible.js
CHANGED
|
@@ -220,8 +220,4 @@ export class LionButton extends DisabledWithTabIndexMixin(LitElement) {
|
|
|
220
220
|
this.click();
|
|
221
221
|
}
|
|
222
222
|
}
|
|
223
|
-
|
|
224
|
-
// we want to be able to identify LionButtons w/o instanceof (for perf (loose dep) and dual version support),
|
|
225
|
-
// so we use a static property for that that doesn't get renamed by minifiers
|
|
226
|
-
static ['_$isLionButton$'] = true;
|
|
227
223
|
}
|
|
@@ -279,7 +279,6 @@ export function LionButtonSuite({ klass = LionButton } = {}) {
|
|
|
279
279
|
|
|
280
280
|
sameProperties.forEach(property => {
|
|
281
281
|
it(`has same value of the property "${property}" as in native button event`, () => {
|
|
282
|
-
// @ts-ignore - dynamic property access
|
|
283
282
|
expect(lionButtonEvent[property]).to.equal(nativeButtonEvent[property]);
|
|
284
283
|
});
|
|
285
284
|
});
|
|
@@ -298,7 +298,7 @@ export class LionCalendar extends LocalizeMixin(LitElement) {
|
|
|
298
298
|
this.__contentWrapperElement.addEventListener('click', this.__boundClickDateDelegation);
|
|
299
299
|
this.__contentWrapperElement.addEventListener('focus', this.__boundFocusDateDelegation);
|
|
300
300
|
this.__contentWrapperElement.addEventListener('blur', this.__boundBlurDateDelegation);
|
|
301
|
-
this.__contentWrapperElement.addEventListener('
|
|
301
|
+
this.__contentWrapperElement.addEventListener('keyup', this.__boundKeyboardNavigationEvent);
|
|
302
302
|
this.__eventsAdded = true;
|
|
303
303
|
}
|
|
304
304
|
}
|
|
@@ -928,7 +928,6 @@ export class LionCalendar extends LocalizeMixin(LitElement) {
|
|
|
928
928
|
if (type !== 'Date') {
|
|
929
929
|
tmpDate.setDate(1);
|
|
930
930
|
}
|
|
931
|
-
// @ts-ignore - dynamic method access
|
|
932
931
|
tmpDate[`set${type}`](tmpDate[`get${type}`]() + modify);
|
|
933
932
|
// if we've reset the day count,
|
|
934
933
|
// restore day count as best we can
|
|
@@ -936,7 +935,6 @@ export class LionCalendar extends LocalizeMixin(LitElement) {
|
|
|
936
935
|
const maxDays = new Date(tmpDate.getFullYear(), tmpDate.getMonth() + 1, 0).getDate();
|
|
937
936
|
tmpDate.setDate(Math.min(this.centralDate.getDate(), maxDays));
|
|
938
937
|
}
|
|
939
|
-
// @ts-ignore - dynamic property access
|
|
940
938
|
this[dateType] = tmpDate;
|
|
941
939
|
}
|
|
942
940
|
|
|
@@ -4,8 +4,10 @@ import { localizeTearDown } from '@lion/ui/localize-test-helpers.js';
|
|
|
4
4
|
import { expect, fixture as _fixture } from '@open-wc/testing';
|
|
5
5
|
import sinon from 'sinon';
|
|
6
6
|
import '@lion/ui/define/lion-calendar.js';
|
|
7
|
+
import { sendKeys } from '@web/test-runner-commands';
|
|
7
8
|
import { isSameDate } from '@lion/ui/calendar.js';
|
|
8
9
|
import { CalendarObject, DayObject } from '@lion/ui/calendar-test-helpers.js';
|
|
10
|
+
import { runCalendarSuite } from '../test-suites/LionCalendar.suite.js';
|
|
9
11
|
|
|
10
12
|
/**
|
|
11
13
|
* @typedef {import('../src/LionCalendar.js').LionCalendar} LionCalendar
|
|
@@ -13,6 +15,16 @@ import { CalendarObject, DayObject } from '@lion/ui/calendar-test-helpers.js';
|
|
|
13
15
|
*/
|
|
14
16
|
|
|
15
17
|
const fixture = /** @type {(arg: TemplateResult) => Promise<LionCalendar>} */ (_fixture);
|
|
18
|
+
/**
|
|
19
|
+
* @param {HTMLElement} el
|
|
20
|
+
* @returns {HTMLElement | null | undefined}
|
|
21
|
+
*/
|
|
22
|
+
const getSelectedDateEl = el => el?.shadowRoot?.querySelector('.calendar__day-button[selected]');
|
|
23
|
+
/**
|
|
24
|
+
* @param {HTMLElement} el
|
|
25
|
+
* @returns {void}
|
|
26
|
+
*/
|
|
27
|
+
const focusSelectedDate = el => getSelectedDateEl(el)?.focus();
|
|
16
28
|
|
|
17
29
|
describe('<lion-calendar>', () => {
|
|
18
30
|
const localizeManager = getLocalizeManager();
|
|
@@ -294,13 +306,14 @@ describe('<lion-calendar>', () => {
|
|
|
294
306
|
`);
|
|
295
307
|
const elObj = new CalendarObject(el);
|
|
296
308
|
|
|
297
|
-
el
|
|
309
|
+
focusSelectedDate(el);
|
|
310
|
+
await sendKeys({ press: 'ArrowLeft' });
|
|
298
311
|
await el.updateComplete;
|
|
299
312
|
expect(elObj.activeMonth).to.equal('October');
|
|
300
313
|
expect(elObj.activeYear).to.equal('2000');
|
|
301
314
|
expect(elObj.focusedDayObj?.monthday).to.equal(11);
|
|
302
315
|
|
|
303
|
-
|
|
316
|
+
await sendKeys({ press: 'Enter' });
|
|
304
317
|
await el.updateComplete;
|
|
305
318
|
expect(isSameDate(/** @type {Date} */ (el.selectedDate), new Date('2000/10/12'))).to.be.true;
|
|
306
319
|
expect(dateChangedSpy.called).to.equal(false);
|
|
@@ -1120,16 +1133,14 @@ describe('<lion-calendar>', () => {
|
|
|
1120
1133
|
expect(elObj.activeMonth).to.equal('January');
|
|
1121
1134
|
expect(elObj.activeYear).to.equal('2001');
|
|
1122
1135
|
|
|
1123
|
-
el
|
|
1124
|
-
|
|
1125
|
-
|
|
1136
|
+
focusSelectedDate(el);
|
|
1137
|
+
await sendKeys({ press: 'PageUp' });
|
|
1138
|
+
|
|
1126
1139
|
await el.updateComplete;
|
|
1127
1140
|
expect(elObj.activeMonth).to.equal('December');
|
|
1128
1141
|
expect(elObj.activeYear).to.equal('2000');
|
|
1129
1142
|
|
|
1130
|
-
|
|
1131
|
-
new KeyboardEvent('keydown', { key: 'PageDown' }),
|
|
1132
|
-
);
|
|
1143
|
+
await sendKeys({ press: 'PageDown' });
|
|
1133
1144
|
await el.updateComplete;
|
|
1134
1145
|
expect(elObj.activeMonth).to.equal('January');
|
|
1135
1146
|
expect(elObj.activeYear).to.equal('2001');
|
|
@@ -1139,20 +1150,36 @@ describe('<lion-calendar>', () => {
|
|
|
1139
1150
|
const el = await fixture(html`
|
|
1140
1151
|
<lion-calendar .selectedDate="${new Date('2001/01/02')}"></lion-calendar>
|
|
1141
1152
|
`);
|
|
1153
|
+
focusSelectedDate(el);
|
|
1154
|
+
|
|
1142
1155
|
const elObj = new CalendarObject(el);
|
|
1143
1156
|
expect(elObj.activeMonth).to.equal('January');
|
|
1144
1157
|
expect(elObj.activeYear).to.equal('2001');
|
|
1145
1158
|
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
);
|
|
1159
|
+
await sendKeys({
|
|
1160
|
+
down: 'Alt',
|
|
1161
|
+
});
|
|
1162
|
+
await sendKeys({
|
|
1163
|
+
press: 'PageDown',
|
|
1164
|
+
});
|
|
1165
|
+
await sendKeys({
|
|
1166
|
+
up: 'Alt',
|
|
1167
|
+
});
|
|
1168
|
+
|
|
1149
1169
|
await el.updateComplete;
|
|
1170
|
+
focusSelectedDate(el);
|
|
1150
1171
|
expect(elObj.activeMonth).to.equal('January');
|
|
1151
1172
|
expect(elObj.activeYear).to.equal('2002');
|
|
1152
1173
|
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
);
|
|
1174
|
+
await sendKeys({
|
|
1175
|
+
down: 'Alt',
|
|
1176
|
+
});
|
|
1177
|
+
await sendKeys({
|
|
1178
|
+
press: 'PageUp',
|
|
1179
|
+
});
|
|
1180
|
+
await sendKeys({
|
|
1181
|
+
up: 'Alt',
|
|
1182
|
+
});
|
|
1156
1183
|
await el.updateComplete;
|
|
1157
1184
|
expect(elObj.activeMonth).to.equal('January');
|
|
1158
1185
|
expect(elObj.activeYear).to.equal('2001');
|
|
@@ -1165,9 +1192,8 @@ describe('<lion-calendar>', () => {
|
|
|
1165
1192
|
`);
|
|
1166
1193
|
const elObj = new CalendarObject(el);
|
|
1167
1194
|
|
|
1168
|
-
el
|
|
1169
|
-
|
|
1170
|
-
);
|
|
1195
|
+
focusSelectedDate(el);
|
|
1196
|
+
await sendKeys({ press: 'ArrowDown' });
|
|
1171
1197
|
await el.updateComplete;
|
|
1172
1198
|
expect(elObj.focusedDayObj?.monthday).to.equal(2 + 7);
|
|
1173
1199
|
});
|
|
@@ -1178,9 +1204,8 @@ describe('<lion-calendar>', () => {
|
|
|
1178
1204
|
`);
|
|
1179
1205
|
const elObj = new CalendarObject(el);
|
|
1180
1206
|
|
|
1181
|
-
el
|
|
1182
|
-
|
|
1183
|
-
);
|
|
1207
|
+
focusSelectedDate(el);
|
|
1208
|
+
await sendKeys({ press: 'ArrowUp' });
|
|
1184
1209
|
await el.updateComplete;
|
|
1185
1210
|
expect(elObj.focusedDayObj?.monthday).to.equal(26); // of month before
|
|
1186
1211
|
});
|
|
@@ -1192,9 +1217,8 @@ describe('<lion-calendar>', () => {
|
|
|
1192
1217
|
`);
|
|
1193
1218
|
const elObj = new CalendarObject(el);
|
|
1194
1219
|
|
|
1195
|
-
el
|
|
1196
|
-
|
|
1197
|
-
);
|
|
1220
|
+
focusSelectedDate(el);
|
|
1221
|
+
await sendKeys({ press: 'ArrowLeft' });
|
|
1198
1222
|
await el.updateComplete;
|
|
1199
1223
|
expect(elObj.focusedDayObj?.monthday).to.equal(12 - 1);
|
|
1200
1224
|
});
|
|
@@ -1206,9 +1230,8 @@ describe('<lion-calendar>', () => {
|
|
|
1206
1230
|
`);
|
|
1207
1231
|
const elObj = new CalendarObject(el);
|
|
1208
1232
|
|
|
1209
|
-
el
|
|
1210
|
-
|
|
1211
|
-
);
|
|
1233
|
+
focusSelectedDate(el);
|
|
1234
|
+
await sendKeys({ press: 'ArrowRight' });
|
|
1212
1235
|
await el.updateComplete;
|
|
1213
1236
|
expect(elObj.focusedDayObj?.monthday).to.equal(12 + 1);
|
|
1214
1237
|
});
|
|
@@ -1224,9 +1247,8 @@ describe('<lion-calendar>', () => {
|
|
|
1224
1247
|
`);
|
|
1225
1248
|
const elObj = new CalendarObject(el);
|
|
1226
1249
|
|
|
1227
|
-
el
|
|
1228
|
-
|
|
1229
|
-
);
|
|
1250
|
+
focusSelectedDate(el);
|
|
1251
|
+
await sendKeys({ press: 'ArrowRight' });
|
|
1230
1252
|
await el.updateComplete;
|
|
1231
1253
|
expect(elObj.focusedDayObj?.monthday).to.equal(3);
|
|
1232
1254
|
});
|
|
@@ -1238,9 +1260,8 @@ describe('<lion-calendar>', () => {
|
|
|
1238
1260
|
const elObj = new CalendarObject(el);
|
|
1239
1261
|
expect(elObj.centralDayObj?.weekdayNameShort).to.equal('Sat');
|
|
1240
1262
|
|
|
1241
|
-
el
|
|
1242
|
-
|
|
1243
|
-
);
|
|
1263
|
+
focusSelectedDate(el);
|
|
1264
|
+
await sendKeys({ press: 'ArrowRight' });
|
|
1244
1265
|
await el.updateComplete;
|
|
1245
1266
|
expect(elObj.focusedDayObj?.monthday).to.equal(6);
|
|
1246
1267
|
expect(elObj.focusedDayObj?.weekdayNameShort).to.equal('Sun');
|
|
@@ -1253,9 +1274,8 @@ describe('<lion-calendar>', () => {
|
|
|
1253
1274
|
const elObj = new CalendarObject(el);
|
|
1254
1275
|
expect(elObj.centralDayObj?.weekdayNameShort).to.equal('Sun');
|
|
1255
1276
|
|
|
1256
|
-
el
|
|
1257
|
-
|
|
1258
|
-
);
|
|
1277
|
+
focusSelectedDate(el);
|
|
1278
|
+
await sendKeys({ press: 'ArrowLeft' });
|
|
1259
1279
|
await el.updateComplete;
|
|
1260
1280
|
expect(elObj.focusedDayObj?.monthday).to.equal(5);
|
|
1261
1281
|
expect(elObj.focusedDayObj?.weekdayNameShort).to.equal('Sat');
|
|
@@ -1269,9 +1289,8 @@ describe('<lion-calendar>', () => {
|
|
|
1269
1289
|
expect(elObj.activeMonth).to.equal('December');
|
|
1270
1290
|
expect(elObj.activeYear).to.equal('2000');
|
|
1271
1291
|
|
|
1272
|
-
el
|
|
1273
|
-
|
|
1274
|
-
);
|
|
1292
|
+
focusSelectedDate(el);
|
|
1293
|
+
await sendKeys({ press: 'ArrowRight' });
|
|
1275
1294
|
await el.updateComplete;
|
|
1276
1295
|
expect(elObj.activeMonth).to.equal('January');
|
|
1277
1296
|
expect(elObj.activeYear).to.equal('2001');
|
|
@@ -1286,9 +1305,8 @@ describe('<lion-calendar>', () => {
|
|
|
1286
1305
|
expect(elObj.activeMonth).to.equal('January');
|
|
1287
1306
|
expect(elObj.activeYear).to.equal('2001');
|
|
1288
1307
|
|
|
1289
|
-
el
|
|
1290
|
-
|
|
1291
|
-
);
|
|
1308
|
+
focusSelectedDate(el);
|
|
1309
|
+
await sendKeys({ press: 'ArrowLeft' });
|
|
1292
1310
|
await el.updateComplete;
|
|
1293
1311
|
expect(elObj.activeMonth).to.equal('December');
|
|
1294
1312
|
expect(elObj.activeYear).to.equal('2000');
|
|
@@ -1303,9 +1321,8 @@ describe('<lion-calendar>', () => {
|
|
|
1303
1321
|
expect(elObj.activeMonth).to.equal('December');
|
|
1304
1322
|
expect(elObj.activeYear).to.equal('2000');
|
|
1305
1323
|
|
|
1306
|
-
el
|
|
1307
|
-
|
|
1308
|
-
);
|
|
1324
|
+
focusSelectedDate(el);
|
|
1325
|
+
await sendKeys({ press: 'ArrowDown' });
|
|
1309
1326
|
await el.updateComplete;
|
|
1310
1327
|
expect(elObj.activeMonth).to.equal('January');
|
|
1311
1328
|
expect(elObj.activeYear).to.equal('2001');
|
|
@@ -1320,9 +1337,8 @@ describe('<lion-calendar>', () => {
|
|
|
1320
1337
|
expect(elObj.activeMonth).to.equal('January');
|
|
1321
1338
|
expect(elObj.activeYear).to.equal('2001');
|
|
1322
1339
|
|
|
1323
|
-
el
|
|
1324
|
-
|
|
1325
|
-
);
|
|
1340
|
+
focusSelectedDate(el);
|
|
1341
|
+
await sendKeys({ press: 'ArrowUp' });
|
|
1326
1342
|
await el.updateComplete;
|
|
1327
1343
|
expect(elObj.activeMonth).to.equal('December');
|
|
1328
1344
|
expect(elObj.activeYear).to.equal('2000');
|
|
@@ -1659,4 +1675,8 @@ describe('<lion-calendar>', () => {
|
|
|
1659
1675
|
expect(el).not.to.be.displayed;
|
|
1660
1676
|
});
|
|
1661
1677
|
});
|
|
1678
|
+
|
|
1679
|
+
describe('Run suite', () => {
|
|
1680
|
+
runCalendarSuite();
|
|
1681
|
+
});
|
|
1662
1682
|
});
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { LionCalendar } from '@lion/ui/calendar.js';
|
|
2
|
+
import { expect, html, fixture, waitUntil, unsafeStatic, defineCE } from '@open-wc/testing';
|
|
3
|
+
import sinon from 'sinon';
|
|
4
|
+
import '@lion/ui/define/lion-calendar.js';
|
|
5
|
+
import { sendKeys } from '@web/test-runner-commands';
|
|
6
|
+
|
|
7
|
+
export function runCalendarSuite({ klass = LionCalendar } = {}) {
|
|
8
|
+
const tagStringCalendar = defineCE(class extends klass {});
|
|
9
|
+
const tagCalendar = unsafeStatic(tagStringCalendar);
|
|
10
|
+
|
|
11
|
+
it('should fire keyboard press events on keyup and not on keydown', async () => {
|
|
12
|
+
/**
|
|
13
|
+
* This test covers a corner case where `keydown`, `keyup`, and `focus` events happen across different elements.
|
|
14
|
+
*
|
|
15
|
+
* Setup:
|
|
16
|
+
* - There is a dialog invoker button that has a keyup handler.
|
|
17
|
+
* - The dialog invoker button gets focused (important!) and then opens the dialog on click.
|
|
18
|
+
* - The dialog contains lion-calendar.
|
|
19
|
+
* - When a date is selected, the dialog closes.
|
|
20
|
+
*
|
|
21
|
+
* Expected behavior:
|
|
22
|
+
* - The dialog invoker button's `keyup` handler should not run when a date is selected in the calendar.
|
|
23
|
+
*
|
|
24
|
+
* The problem:
|
|
25
|
+
* - Pressing Enter on a date is handled by `keydown` inside `lion-calendar`.
|
|
26
|
+
* - The dialog then closes on `user-selected-date-changed` event.
|
|
27
|
+
* - The browser automatically returns focus to the previously focused element (the dialog invoker button).
|
|
28
|
+
* - The keyup event then fires on the now-focused dialog invoker button, triggering its keyup
|
|
29
|
+
* handler unexpectedly.
|
|
30
|
+
*
|
|
31
|
+
* Fix being verified:
|
|
32
|
+
* - Fire `user-selected-date-changed` on `keyup` instead of `keydown`.
|
|
33
|
+
* - This prevents the dialog invoker button from receiving and handling that `keyup` after the dialog closes.
|
|
34
|
+
*/
|
|
35
|
+
|
|
36
|
+
/** @type {HTMLElement} */
|
|
37
|
+
let el;
|
|
38
|
+
const keyUpSpy = sinon.spy();
|
|
39
|
+
const getDialogEl = () => el.querySelector('dialog');
|
|
40
|
+
const openDialogButtonClickHandler = () => getDialogEl()?.showModal();
|
|
41
|
+
const userSelectedDateChangedHandler = () => getDialogEl()?.close();
|
|
42
|
+
|
|
43
|
+
el = await fixture(html`
|
|
44
|
+
<div>
|
|
45
|
+
<button
|
|
46
|
+
@keyup="${keyUpSpy}"
|
|
47
|
+
@click="${openDialogButtonClickHandler}"
|
|
48
|
+
>
|
|
49
|
+
Open Dialog
|
|
50
|
+
</button>
|
|
51
|
+
<dialog>
|
|
52
|
+
<${tagCalendar}
|
|
53
|
+
.selectedDate="${new Date('2000/10/12')}"
|
|
54
|
+
@user-selected-date-changed="${userSelectedDateChangedHandler}"
|
|
55
|
+
>
|
|
56
|
+
</${tagCalendar}>
|
|
57
|
+
</dialog>
|
|
58
|
+
</div>
|
|
59
|
+
`);
|
|
60
|
+
|
|
61
|
+
const openDialogButton = el.querySelector('button');
|
|
62
|
+
const calendarEl = /** @type {LionCalendar} */ (el.querySelector(tagStringCalendar));
|
|
63
|
+
await calendarEl?.updateComplete;
|
|
64
|
+
|
|
65
|
+
openDialogButton?.focus();
|
|
66
|
+
openDialogButton?.click();
|
|
67
|
+
/**
|
|
68
|
+
* @returns {HTMLElement | null | undefined}
|
|
69
|
+
*/
|
|
70
|
+
const getSelectedDateEl = () =>
|
|
71
|
+
calendarEl?.shadowRoot?.querySelector('.calendar__day-button[selected]');
|
|
72
|
+
await waitUntil(getSelectedDateEl);
|
|
73
|
+
getSelectedDateEl()?.focus();
|
|
74
|
+
await sendKeys({ press: 'ArrowLeft' });
|
|
75
|
+
await sendKeys({ press: 'Enter' });
|
|
76
|
+
|
|
77
|
+
expect(keyUpSpy.called).to.equal(false);
|
|
78
|
+
});
|
|
79
|
+
}
|
|
@@ -3227,7 +3227,6 @@ describe('lion-combobox', () => {
|
|
|
3227
3227
|
const [el, options] = await fruitFixture({ autocomplete: 'both', matchMode: 'all' });
|
|
3228
3228
|
await mimicUserTyping(/** @type {LionCombobox} */ (el), 'choke');
|
|
3229
3229
|
await el.updateComplete;
|
|
3230
|
-
// @ts-ignore - array index access
|
|
3231
3230
|
const labelledElement = options[0].querySelector('span[aria-label="Artichoke"]');
|
|
3232
3231
|
expect(labelledElement).to.not.be.null;
|
|
3233
3232
|
expect(labelledElement.innerText).to.equal('Artichoke');
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
import { dedupeMixin } from '@open-wc/dedupe-mixin';
|
|
4
4
|
|
|
5
|
-
import { ValidateMixin } from './validate/ValidateMixin.js';
|
|
6
5
|
import { FormControlMixin } from './FormControlMixin.js';
|
|
7
6
|
import { Unparseable } from './validate/Unparseable.js';
|
|
7
|
+
import { ValidateMixin } from './validate/ValidateMixin.js';
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* @typedef {import('../types/FormControlMixinTypes.js').ModelValueEventDetails} ModelValueEventDetails
|
|
@@ -89,7 +89,12 @@ const FormatMixinImplementation = superclass =>
|
|
|
89
89
|
requestUpdate(name, oldValue, options) {
|
|
90
90
|
super.requestUpdate(name, oldValue, options);
|
|
91
91
|
|
|
92
|
-
|
|
92
|
+
const didModelValueChange = () =>
|
|
93
|
+
options?.hasChanged
|
|
94
|
+
? options.hasChanged(this.modelValue, oldValue)
|
|
95
|
+
: this.modelValue !== oldValue;
|
|
96
|
+
|
|
97
|
+
if (name === 'modelValue' && didModelValueChange()) {
|
|
93
98
|
this._onModelValueChanged({ modelValue: this.modelValue }, { modelValue: oldValue });
|
|
94
99
|
}
|
|
95
100
|
if (name === 'serializedValue' && this.serializedValue !== oldValue) {
|
|
@@ -352,14 +352,11 @@ const FormGroupMixinImplementation = superclass =>
|
|
|
352
352
|
this.formElements._keys().forEach(name => {
|
|
353
353
|
const elem = this.formElements[name];
|
|
354
354
|
if (elem instanceof FormControlsCollection) {
|
|
355
|
-
// @ts-ignore - dynamic property access
|
|
356
355
|
result[name] = elem.filter(el => _filterFn(el, property)).map(el => el[property]);
|
|
357
356
|
} else if (_filterFn(elem, property)) {
|
|
358
357
|
if (typeof elem._getFromAllFormElements === 'function') {
|
|
359
|
-
// @ts-ignore - dynamic property access
|
|
360
358
|
result[name] = elem._getFromAllFormElements(property);
|
|
361
359
|
} else {
|
|
362
|
-
// @ts-ignore - dynamic property access
|
|
363
360
|
result[name] = elem[property];
|
|
364
361
|
}
|
|
365
362
|
}
|
|
@@ -389,7 +386,6 @@ const FormGroupMixinImplementation = superclass =>
|
|
|
389
386
|
if (Array.isArray(this.formElements[name])) {
|
|
390
387
|
this.formElements[name].forEach(
|
|
391
388
|
(/** @type {FormControl} */ el, /** @type {number} */ index) => {
|
|
392
|
-
// @ts-ignore - dynamic property access
|
|
393
389
|
el[property] = values[name][index]; // eslint-disable-line no-param-reassign
|
|
394
390
|
},
|
|
395
391
|
);
|
|
@@ -397,7 +393,6 @@ const FormGroupMixinImplementation = superclass =>
|
|
|
397
393
|
if (this.formElements[name]) {
|
|
398
394
|
this.formElements[name][property] = values[name];
|
|
399
395
|
} else {
|
|
400
|
-
// @ts-ignore - dynamic property access
|
|
401
396
|
this.__pendingValues[property][name] = values[name];
|
|
402
397
|
}
|
|
403
398
|
});
|
|
@@ -411,7 +406,6 @@ const FormGroupMixinImplementation = superclass =>
|
|
|
411
406
|
_anyFormElementHas(property) {
|
|
412
407
|
return Object.keys(this.formElements).some(name => {
|
|
413
408
|
if (Array.isArray(this.formElements[name])) {
|
|
414
|
-
// @ts-ignore - dynamic property access
|
|
415
409
|
return this.formElements[name].some((/** @type {FormControl} */ el) => !!el[property]);
|
|
416
410
|
}
|
|
417
411
|
return !!this.formElements[name][property];
|
|
@@ -442,7 +436,6 @@ const FormGroupMixinImplementation = superclass =>
|
|
|
442
436
|
_everyFormElementHas(property) {
|
|
443
437
|
return Object.keys(this.formElements).every(name => {
|
|
444
438
|
if (Array.isArray(this.formElements[name])) {
|
|
445
|
-
// @ts-ignore - dynamic property access
|
|
446
439
|
return this.formElements[name].every((/** @type {FormControl} */ el) => !!el[property]);
|
|
447
440
|
}
|
|
448
441
|
return !!this.formElements[name][property];
|
|
@@ -162,21 +162,15 @@ const FormRegistrarMixinImplementation = superclass =>
|
|
|
162
162
|
}
|
|
163
163
|
|
|
164
164
|
if (name.substr(-2) === '[]') {
|
|
165
|
-
// @ts-ignore - dynamic named access to form elements
|
|
166
165
|
if (!Array.isArray(this.formElements[name])) {
|
|
167
|
-
// @ts-ignore
|
|
168
166
|
this.formElements[name] = new FormControlsCollection();
|
|
169
167
|
}
|
|
170
168
|
if (indexToInsertAt > 0) {
|
|
171
|
-
// @ts-ignore
|
|
172
169
|
this.formElements[name].splice(indexToInsertAt, 0, child);
|
|
173
170
|
} else {
|
|
174
|
-
// @ts-ignore
|
|
175
171
|
this.formElements[name].push(child);
|
|
176
172
|
}
|
|
177
|
-
// @ts-ignore
|
|
178
173
|
} else if (!this.formElements[name]) {
|
|
179
|
-
// @ts-ignore
|
|
180
174
|
this.formElements[name] = child;
|
|
181
175
|
} else {
|
|
182
176
|
console.info('Error Node:', child); // eslint-disable-line no-console
|
|
@@ -200,17 +194,12 @@ const FormRegistrarMixinImplementation = superclass =>
|
|
|
200
194
|
// 2. Handle name based object keys
|
|
201
195
|
if (this._isFormOrFieldset) {
|
|
202
196
|
const { name } = child; // FIXME: <-- ElementWithParentFormGroup should become LionFieldWithParentFormGroup so that "name" exists
|
|
203
|
-
// @ts-ignore - dynamic named access to form elements
|
|
204
197
|
if (name.substr(-2) === '[]' && this.formElements[name]) {
|
|
205
|
-
// @ts-ignore
|
|
206
198
|
const idx = this.formElements[name].indexOf(child);
|
|
207
199
|
if (idx > -1) {
|
|
208
|
-
// @ts-ignore
|
|
209
200
|
this.formElements[name].splice(idx, 1);
|
|
210
201
|
}
|
|
211
|
-
// @ts-ignore
|
|
212
202
|
} else if (this.formElements[name]) {
|
|
213
|
-
// @ts-ignore
|
|
214
203
|
delete this.formElements[name];
|
|
215
204
|
}
|
|
216
205
|
}
|
|
@@ -153,7 +153,6 @@ describe('FormControlMixin', () => {
|
|
|
153
153
|
el.shadowRoot?.querySelector('.form-field__label'),
|
|
154
154
|
);
|
|
155
155
|
Object.entries(expectedValues).forEach(([key, val]) => {
|
|
156
|
-
// @ts-ignore - dynamic style property access
|
|
157
156
|
expect(labelStyle[key]).to.equal(val);
|
|
158
157
|
});
|
|
159
158
|
});
|
|
@@ -191,9 +191,7 @@ describe('Validator', () => {
|
|
|
191
191
|
it('adds static ["_$isValidator$"] property as a marker to identify the Validator class across different lion versions (as instanceof cannot be used)', async () => {
|
|
192
192
|
const myValidator = new Validator();
|
|
193
193
|
|
|
194
|
-
// @ts-ignore - static property access
|
|
195
194
|
expect(myValidator.constructor['_$isValidator$']).to.exist;
|
|
196
|
-
// @ts-ignore - static property access
|
|
197
195
|
expect(myValidator.constructor['_$isValidator$']).to.be.true;
|
|
198
196
|
});
|
|
199
197
|
|