@furystack/shades-common-components 11.0.0 → 12.0.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/CHANGELOG.md +430 -0
- package/esm/components/accordion/accordion-item.d.ts +31 -0
- package/esm/components/accordion/accordion-item.d.ts.map +1 -0
- package/esm/components/accordion/accordion-item.js +147 -0
- package/esm/components/accordion/accordion-item.js.map +1 -0
- package/esm/components/accordion/accordion.d.ts +27 -0
- package/esm/components/accordion/accordion.d.ts.map +1 -0
- package/esm/components/accordion/accordion.js +39 -0
- package/esm/components/accordion/accordion.js.map +1 -0
- package/esm/components/accordion/accordion.spec.d.ts +2 -0
- package/esm/components/accordion/accordion.spec.d.ts.map +1 -0
- package/esm/components/accordion/accordion.spec.js +284 -0
- package/esm/components/accordion/accordion.spec.js.map +1 -0
- package/esm/components/accordion/index.d.ts +3 -0
- package/esm/components/accordion/index.d.ts.map +1 -0
- package/esm/components/accordion/index.js +3 -0
- package/esm/components/accordion/index.js.map +1 -0
- package/esm/components/alert.d.ts +21 -0
- package/esm/components/alert.d.ts.map +1 -0
- package/esm/components/alert.js +131 -0
- package/esm/components/alert.js.map +1 -0
- package/esm/components/alert.spec.d.ts +2 -0
- package/esm/components/alert.spec.d.ts.map +1 -0
- package/esm/components/alert.spec.js +177 -0
- package/esm/components/alert.spec.js.map +1 -0
- package/esm/components/app-bar-link.d.ts +22 -2
- package/esm/components/app-bar-link.d.ts.map +1 -1
- package/esm/components/app-bar-link.js +20 -7
- package/esm/components/app-bar-link.js.map +1 -1
- package/esm/components/app-bar-link.spec.js +22 -19
- package/esm/components/app-bar-link.spec.js.map +1 -1
- package/esm/components/app-bar.d.ts +2 -0
- package/esm/components/app-bar.d.ts.map +1 -1
- package/esm/components/app-bar.js +16 -11
- package/esm/components/app-bar.js.map +1 -1
- package/esm/components/app-bar.spec.js +67 -52
- package/esm/components/app-bar.spec.js.map +1 -1
- package/esm/components/avatar.d.ts +2 -0
- package/esm/components/avatar.d.ts.map +1 -1
- package/esm/components/avatar.js +40 -37
- package/esm/components/avatar.js.map +1 -1
- package/esm/components/badge.d.ts +35 -0
- package/esm/components/badge.d.ts.map +1 -0
- package/esm/components/badge.js +68 -0
- package/esm/components/badge.js.map +1 -0
- package/esm/components/badge.spec.d.ts +2 -0
- package/esm/components/badge.spec.d.ts.map +1 -0
- package/esm/components/badge.spec.js +157 -0
- package/esm/components/badge.spec.js.map +1 -0
- package/esm/components/breadcrumb.d.ts +103 -0
- package/esm/components/breadcrumb.d.ts.map +1 -0
- package/esm/components/breadcrumb.js +121 -0
- package/esm/components/breadcrumb.js.map +1 -0
- package/esm/components/breadcrumb.spec.d.ts +2 -0
- package/esm/components/breadcrumb.spec.d.ts.map +1 -0
- package/esm/components/breadcrumb.spec.js +251 -0
- package/esm/components/breadcrumb.spec.js.map +1 -0
- package/esm/components/button-group.d.ts +85 -0
- package/esm/components/button-group.d.ts.map +1 -0
- package/esm/components/button-group.js +290 -0
- package/esm/components/button-group.js.map +1 -0
- package/esm/components/button-group.spec.d.ts +2 -0
- package/esm/components/button-group.spec.d.ts.map +1 -0
- package/esm/components/button-group.spec.js +502 -0
- package/esm/components/button-group.spec.js.map +1 -0
- package/esm/components/button.d.ts +44 -2
- package/esm/components/button.d.ts.map +1 -1
- package/esm/components/button.js +82 -73
- package/esm/components/button.js.map +1 -1
- package/esm/components/button.spec.js +205 -50
- package/esm/components/button.spec.js.map +1 -1
- package/esm/components/card.d.ts +117 -0
- package/esm/components/card.d.ts.map +1 -0
- package/esm/components/card.js +181 -0
- package/esm/components/card.js.map +1 -0
- package/esm/components/card.spec.d.ts +2 -0
- package/esm/components/card.spec.d.ts.map +1 -0
- package/esm/components/card.spec.js +278 -0
- package/esm/components/card.spec.js.map +1 -0
- package/esm/components/carousel.d.ts +50 -0
- package/esm/components/carousel.d.ts.map +1 -0
- package/esm/components/carousel.js +263 -0
- package/esm/components/carousel.js.map +1 -0
- package/esm/components/carousel.spec.d.ts +2 -0
- package/esm/components/carousel.spec.d.ts.map +1 -0
- package/esm/components/carousel.spec.js +677 -0
- package/esm/components/carousel.spec.js.map +1 -0
- package/esm/components/chip.d.ts +23 -0
- package/esm/components/chip.d.ts.map +1 -0
- package/esm/components/chip.js +139 -0
- package/esm/components/chip.js.map +1 -0
- package/esm/components/chip.spec.d.ts +2 -0
- package/esm/components/chip.spec.d.ts.map +1 -0
- package/esm/components/chip.spec.js +142 -0
- package/esm/components/chip.spec.js.map +1 -0
- package/esm/components/circular-progress.d.ts +37 -0
- package/esm/components/circular-progress.d.ts.map +1 -0
- package/esm/components/circular-progress.js +84 -0
- package/esm/components/circular-progress.js.map +1 -0
- package/esm/components/circular-progress.spec.d.ts +2 -0
- package/esm/components/circular-progress.spec.d.ts.map +1 -0
- package/esm/components/circular-progress.spec.js +228 -0
- package/esm/components/circular-progress.spec.js.map +1 -0
- package/esm/components/command-palette/command-palette-input.d.ts +3 -0
- package/esm/components/command-palette/command-palette-input.d.ts.map +1 -1
- package/esm/components/command-palette/command-palette-input.js +17 -9
- package/esm/components/command-palette/command-palette-input.js.map +1 -1
- package/esm/components/command-palette/command-palette-input.spec.js +172 -161
- package/esm/components/command-palette/command-palette-input.spec.js.map +1 -1
- package/esm/components/command-palette/command-palette-manager.spec.js +130 -114
- package/esm/components/command-palette/command-palette-manager.spec.js.map +1 -1
- package/esm/components/command-palette/command-palette-suggestion-list.d.ts +2 -0
- package/esm/components/command-palette/command-palette-suggestion-list.d.ts.map +1 -1
- package/esm/components/command-palette/command-palette-suggestion-list.js +20 -20
- package/esm/components/command-palette/command-palette-suggestion-list.js.map +1 -1
- package/esm/components/command-palette/command-palette-suggestion-list.spec.js +296 -278
- package/esm/components/command-palette/command-palette-suggestion-list.spec.js.map +1 -1
- package/esm/components/command-palette/index.d.ts +2 -0
- package/esm/components/command-palette/index.d.ts.map +1 -1
- package/esm/components/command-palette/index.js +25 -94
- package/esm/components/command-palette/index.js.map +1 -1
- package/esm/components/command-palette/index.spec.js +12 -12
- package/esm/components/command-palette/index.spec.js.map +1 -1
- package/esm/components/context-menu/context-menu-item.d.ts +9 -0
- package/esm/components/context-menu/context-menu-item.d.ts.map +1 -0
- package/esm/components/context-menu/context-menu-item.js +56 -0
- package/esm/components/context-menu/context-menu-item.js.map +1 -0
- package/esm/components/context-menu/context-menu-manager.d.ts +52 -0
- package/esm/components/context-menu/context-menu-manager.d.ts.map +1 -0
- package/esm/components/context-menu/context-menu-manager.js +128 -0
- package/esm/components/context-menu/context-menu-manager.js.map +1 -0
- package/esm/components/context-menu/context-menu-manager.spec.d.ts +2 -0
- package/esm/components/context-menu/context-menu-manager.spec.d.ts.map +1 -0
- package/esm/components/context-menu/context-menu-manager.spec.js +332 -0
- package/esm/components/context-menu/context-menu-manager.spec.js.map +1 -0
- package/esm/components/context-menu/context-menu.d.ts +8 -0
- package/esm/components/context-menu/context-menu.d.ts.map +1 -0
- package/esm/components/context-menu/context-menu.js +79 -0
- package/esm/components/context-menu/context-menu.js.map +1 -0
- package/esm/components/context-menu/context-menu.spec.d.ts +2 -0
- package/esm/components/context-menu/context-menu.spec.d.ts.map +1 -0
- package/esm/components/context-menu/context-menu.spec.js +282 -0
- package/esm/components/context-menu/context-menu.spec.js.map +1 -0
- package/esm/components/context-menu/index.d.ts +4 -0
- package/esm/components/context-menu/index.d.ts.map +1 -0
- package/esm/components/context-menu/index.js +4 -0
- package/esm/components/context-menu/index.js.map +1 -0
- package/esm/components/data-grid/body.spec.js +194 -184
- package/esm/components/data-grid/body.spec.js.map +1 -1
- package/esm/components/data-grid/data-grid-row.d.ts.map +1 -1
- package/esm/components/data-grid/data-grid-row.js +66 -54
- package/esm/components/data-grid/data-grid-row.js.map +1 -1
- package/esm/components/data-grid/data-grid-row.spec.js +127 -95
- package/esm/components/data-grid/data-grid-row.spec.js.map +1 -1
- package/esm/components/data-grid/data-grid.d.ts.map +1 -1
- package/esm/components/data-grid/data-grid.js +17 -16
- package/esm/components/data-grid/data-grid.js.map +1 -1
- package/esm/components/data-grid/data-grid.spec.js +454 -429
- package/esm/components/data-grid/data-grid.spec.js.map +1 -1
- package/esm/components/data-grid/footer.spec.js +215 -203
- package/esm/components/data-grid/footer.spec.js.map +1 -1
- package/esm/components/data-grid/header.d.ts +3 -1
- package/esm/components/data-grid/header.d.ts.map +1 -1
- package/esm/components/data-grid/header.js +42 -30
- package/esm/components/data-grid/header.js.map +1 -1
- package/esm/components/data-grid/header.spec.js +330 -307
- package/esm/components/data-grid/header.spec.js.map +1 -1
- package/esm/components/data-grid/selection-cell.d.ts +2 -0
- package/esm/components/data-grid/selection-cell.d.ts.map +1 -1
- package/esm/components/data-grid/selection-cell.js +2 -7
- package/esm/components/data-grid/selection-cell.js.map +1 -1
- package/esm/components/data-grid/selection-cell.spec.js +45 -36
- package/esm/components/data-grid/selection-cell.spec.js.map +1 -1
- package/esm/components/dialog.d.ts +46 -0
- package/esm/components/dialog.d.ts.map +1 -0
- package/esm/components/dialog.js +178 -0
- package/esm/components/dialog.js.map +1 -0
- package/esm/components/dialog.spec.d.ts +2 -0
- package/esm/components/dialog.spec.d.ts.map +1 -0
- package/esm/components/dialog.spec.js +113 -0
- package/esm/components/dialog.spec.js.map +1 -0
- package/esm/components/divider.d.ts +22 -0
- package/esm/components/divider.d.ts.map +1 -0
- package/esm/components/divider.js +113 -0
- package/esm/components/divider.js.map +1 -0
- package/esm/components/divider.spec.d.ts +2 -0
- package/esm/components/divider.spec.d.ts.map +1 -0
- package/esm/components/divider.spec.js +136 -0
- package/esm/components/divider.spec.js.map +1 -0
- package/esm/components/drawer/drawer-toggle-button.d.ts +36 -0
- package/esm/components/drawer/drawer-toggle-button.d.ts.map +1 -0
- package/esm/components/drawer/drawer-toggle-button.js +94 -0
- package/esm/components/drawer/drawer-toggle-button.js.map +1 -0
- package/esm/components/drawer/drawer-toggle-button.spec.d.ts +2 -0
- package/esm/components/drawer/drawer-toggle-button.spec.d.ts.map +1 -0
- package/esm/components/drawer/drawer-toggle-button.spec.js +306 -0
- package/esm/components/drawer/drawer-toggle-button.spec.js.map +1 -0
- package/esm/components/drawer/index.d.ts +56 -0
- package/esm/components/drawer/index.d.ts.map +1 -0
- package/esm/components/drawer/index.js +172 -0
- package/esm/components/drawer/index.js.map +1 -0
- package/esm/components/drawer/index.spec.d.ts +2 -0
- package/esm/components/drawer/index.spec.d.ts.map +1 -0
- package/esm/components/drawer/index.spec.js +538 -0
- package/esm/components/drawer/index.spec.js.map +1 -0
- package/esm/components/dropdown.d.ts +15 -0
- package/esm/components/dropdown.d.ts.map +1 -0
- package/esm/components/dropdown.js +262 -0
- package/esm/components/dropdown.js.map +1 -0
- package/esm/components/dropdown.spec.d.ts +2 -0
- package/esm/components/dropdown.spec.d.ts.map +1 -0
- package/esm/components/dropdown.spec.js +372 -0
- package/esm/components/dropdown.spec.js.map +1 -0
- package/esm/components/fab.d.ts +10 -1
- package/esm/components/fab.d.ts.map +1 -1
- package/esm/components/fab.js +24 -8
- package/esm/components/fab.js.map +1 -1
- package/esm/components/fab.spec.js +50 -39
- package/esm/components/fab.spec.js.map +1 -1
- package/esm/components/form.d.ts.map +1 -1
- package/esm/components/form.js +9 -7
- package/esm/components/form.js.map +1 -1
- package/esm/components/form.spec.js +209 -199
- package/esm/components/form.spec.js.map +1 -1
- package/esm/components/grid.js +10 -10
- package/esm/components/grid.js.map +1 -1
- package/esm/components/grid.spec.js +109 -85
- package/esm/components/grid.spec.js.map +1 -1
- package/esm/components/icons/icon-definitions.d.ts +140 -0
- package/esm/components/icons/icon-definitions.d.ts.map +1 -0
- package/esm/components/icons/icon-definitions.js +432 -0
- package/esm/components/icons/icon-definitions.js.map +1 -0
- package/esm/components/icons/icon-definitions.spec.d.ts +2 -0
- package/esm/components/icons/icon-definitions.spec.d.ts.map +1 -0
- package/esm/components/icons/icon-definitions.spec.js +59 -0
- package/esm/components/icons/icon-definitions.spec.js.map +1 -0
- package/esm/components/icons/icon-types.d.ts +48 -0
- package/esm/components/icons/icon-types.d.ts.map +1 -0
- package/esm/components/icons/icon-types.js +2 -0
- package/esm/components/icons/icon-types.js.map +1 -0
- package/esm/components/icons/icon.d.ts +56 -0
- package/esm/components/icons/icon.d.ts.map +1 -0
- package/esm/components/icons/icon.js +61 -0
- package/esm/components/icons/icon.js.map +1 -0
- package/esm/components/icons/icon.spec.d.ts +2 -0
- package/esm/components/icons/icon.spec.d.ts.map +1 -0
- package/esm/components/icons/icon.spec.js +224 -0
- package/esm/components/icons/icon.spec.js.map +1 -0
- package/esm/components/icons/index.d.ts +5 -0
- package/esm/components/icons/index.d.ts.map +1 -0
- package/esm/components/icons/index.js +3 -0
- package/esm/components/icons/index.js.map +1 -0
- package/esm/components/image.d.ts +62 -0
- package/esm/components/image.d.ts.map +1 -0
- package/esm/components/image.js +348 -0
- package/esm/components/image.js.map +1 -0
- package/esm/components/image.spec.d.ts +2 -0
- package/esm/components/image.spec.d.ts.map +1 -0
- package/esm/components/image.spec.js +542 -0
- package/esm/components/image.spec.js.map +1 -0
- package/esm/components/index.d.ts +32 -4
- package/esm/components/index.d.ts.map +1 -1
- package/esm/components/index.js +32 -4
- package/esm/components/index.js.map +1 -1
- package/esm/components/inputs/autocomplete.d.ts +2 -0
- package/esm/components/inputs/autocomplete.d.ts.map +1 -1
- package/esm/components/inputs/autocomplete.js +10 -6
- package/esm/components/inputs/autocomplete.js.map +1 -1
- package/esm/components/inputs/autocomplete.spec.js +10 -1
- package/esm/components/inputs/autocomplete.spec.js.map +1 -1
- package/esm/components/inputs/checkbox.d.ts +50 -0
- package/esm/components/inputs/checkbox.d.ts.map +1 -0
- package/esm/components/inputs/checkbox.js +126 -0
- package/esm/components/inputs/checkbox.js.map +1 -0
- package/esm/components/inputs/checkbox.spec.d.ts +2 -0
- package/esm/components/inputs/checkbox.spec.d.ts.map +1 -0
- package/esm/components/inputs/checkbox.spec.js +287 -0
- package/esm/components/inputs/checkbox.spec.js.map +1 -0
- package/esm/components/inputs/index.d.ts +7 -0
- package/esm/components/inputs/index.d.ts.map +1 -1
- package/esm/components/inputs/index.js +7 -0
- package/esm/components/inputs/index.js.map +1 -1
- package/esm/components/inputs/input-number.d.ts +79 -0
- package/esm/components/inputs/input-number.d.ts.map +1 -0
- package/esm/components/inputs/input-number.js +232 -0
- package/esm/components/inputs/input-number.js.map +1 -0
- package/esm/components/inputs/input-number.spec.d.ts +2 -0
- package/esm/components/inputs/input-number.spec.d.ts.map +1 -0
- package/esm/components/inputs/input-number.spec.js +516 -0
- package/esm/components/inputs/input-number.spec.js.map +1 -0
- package/esm/components/inputs/input.d.ts +2 -1
- package/esm/components/inputs/input.d.ts.map +1 -1
- package/esm/components/inputs/input.js +86 -116
- package/esm/components/inputs/input.js.map +1 -1
- package/esm/components/inputs/input.spec.js +461 -427
- package/esm/components/inputs/input.spec.js.map +1 -1
- package/esm/components/inputs/radio-group.d.ts +38 -0
- package/esm/components/inputs/radio-group.d.ts.map +1 -0
- package/esm/components/inputs/radio-group.js +58 -0
- package/esm/components/inputs/radio-group.js.map +1 -0
- package/esm/components/inputs/radio-group.spec.d.ts +2 -0
- package/esm/components/inputs/radio-group.spec.d.ts.map +1 -0
- package/esm/components/inputs/radio-group.spec.js +201 -0
- package/esm/components/inputs/radio-group.spec.js.map +1 -0
- package/esm/components/inputs/radio.d.ts +42 -0
- package/esm/components/inputs/radio.d.ts.map +1 -0
- package/esm/components/inputs/radio.js +134 -0
- package/esm/components/inputs/radio.js.map +1 -0
- package/esm/components/inputs/radio.spec.d.ts +2 -0
- package/esm/components/inputs/radio.spec.d.ts.map +1 -0
- package/esm/components/inputs/radio.spec.js +211 -0
- package/esm/components/inputs/radio.spec.js.map +1 -0
- package/esm/components/inputs/select.d.ts +67 -0
- package/esm/components/inputs/select.d.ts.map +1 -0
- package/esm/components/inputs/select.js +581 -0
- package/esm/components/inputs/select.js.map +1 -0
- package/esm/components/inputs/select.spec.d.ts +2 -0
- package/esm/components/inputs/select.spec.d.ts.map +1 -0
- package/esm/components/inputs/select.spec.js +1009 -0
- package/esm/components/inputs/select.spec.js.map +1 -0
- package/esm/components/inputs/slider.d.ts +66 -0
- package/esm/components/inputs/slider.d.ts.map +1 -0
- package/esm/components/inputs/slider.js +526 -0
- package/esm/components/inputs/slider.js.map +1 -0
- package/esm/components/inputs/slider.spec.d.ts +2 -0
- package/esm/components/inputs/slider.spec.d.ts.map +1 -0
- package/esm/components/inputs/slider.spec.js +812 -0
- package/esm/components/inputs/slider.spec.js.map +1 -0
- package/esm/components/inputs/switch.d.ts +50 -0
- package/esm/components/inputs/switch.d.ts.map +1 -0
- package/esm/components/inputs/switch.js +138 -0
- package/esm/components/inputs/switch.js.map +1 -0
- package/esm/components/inputs/switch.spec.d.ts +2 -0
- package/esm/components/inputs/switch.spec.d.ts.map +1 -0
- package/esm/components/inputs/switch.spec.js +313 -0
- package/esm/components/inputs/switch.spec.js.map +1 -0
- package/esm/components/inputs/text-area.d.ts +2 -0
- package/esm/components/inputs/text-area.d.ts.map +1 -1
- package/esm/components/inputs/text-area.js +13 -21
- package/esm/components/inputs/text-area.js.map +1 -1
- package/esm/components/inputs/text-area.spec.js +171 -156
- package/esm/components/inputs/text-area.spec.js.map +1 -1
- package/esm/components/linear-progress.d.ts +32 -0
- package/esm/components/linear-progress.d.ts.map +1 -0
- package/esm/components/linear-progress.js +79 -0
- package/esm/components/linear-progress.js.map +1 -0
- package/esm/components/linear-progress.spec.d.ts +2 -0
- package/esm/components/linear-progress.spec.d.ts.map +1 -0
- package/esm/components/linear-progress.spec.js +251 -0
- package/esm/components/linear-progress.spec.js.map +1 -0
- package/esm/components/list/index.d.ts +3 -0
- package/esm/components/list/index.d.ts.map +1 -0
- package/esm/components/list/index.js +3 -0
- package/esm/components/list/index.js.map +1 -0
- package/esm/components/list/list-item.d.ts +13 -0
- package/esm/components/list/list-item.d.ts.map +1 -0
- package/esm/components/list/list-item.js +81 -0
- package/esm/components/list/list-item.js.map +1 -0
- package/esm/components/list/list.d.ts +18 -0
- package/esm/components/list/list.d.ts.map +1 -0
- package/esm/components/list/list.js +42 -0
- package/esm/components/list/list.js.map +1 -0
- package/esm/components/list/list.spec.d.ts +2 -0
- package/esm/components/list/list.spec.d.ts.map +1 -0
- package/esm/components/list/list.spec.js +540 -0
- package/esm/components/list/list.spec.js.map +1 -0
- package/esm/components/loader.d.ts +2 -0
- package/esm/components/loader.d.ts.map +1 -1
- package/esm/components/loader.js +18 -10
- package/esm/components/loader.js.map +1 -1
- package/esm/components/loader.spec.js +191 -175
- package/esm/components/loader.spec.js.map +1 -1
- package/esm/components/menu/index.d.ts +3 -0
- package/esm/components/menu/index.d.ts.map +1 -0
- package/esm/components/menu/index.js +3 -0
- package/esm/components/menu/index.js.map +1 -0
- package/esm/components/menu/menu-types.d.ts +27 -0
- package/esm/components/menu/menu-types.d.ts.map +1 -0
- package/esm/components/menu/menu-types.js +22 -0
- package/esm/components/menu/menu-types.js.map +1 -0
- package/esm/components/menu/menu-types.spec.d.ts +2 -0
- package/esm/components/menu/menu-types.spec.d.ts.map +1 -0
- package/esm/components/menu/menu-types.spec.js +103 -0
- package/esm/components/menu/menu-types.spec.js.map +1 -0
- package/esm/components/menu/menu.d.ts +17 -0
- package/esm/components/menu/menu.d.ts.map +1 -0
- package/esm/components/menu/menu.js +240 -0
- package/esm/components/menu/menu.js.map +1 -0
- package/esm/components/menu/menu.spec.d.ts +2 -0
- package/esm/components/menu/menu.spec.d.ts.map +1 -0
- package/esm/components/menu/menu.spec.js +427 -0
- package/esm/components/menu/menu.spec.js.map +1 -0
- package/esm/components/modal.d.ts +3 -2
- package/esm/components/modal.d.ts.map +1 -1
- package/esm/components/modal.js +8 -5
- package/esm/components/modal.js.map +1 -1
- package/esm/components/modal.spec.js +50 -43
- package/esm/components/modal.spec.js.map +1 -1
- package/esm/components/noty-list.d.ts +4 -0
- package/esm/components/noty-list.d.ts.map +1 -1
- package/esm/components/noty-list.js +65 -53
- package/esm/components/noty-list.js.map +1 -1
- package/esm/components/noty-list.spec.js +71 -68
- package/esm/components/noty-list.spec.js.map +1 -1
- package/esm/components/page-container/index.d.ts +54 -0
- package/esm/components/page-container/index.d.ts.map +1 -0
- package/esm/components/page-container/index.js +63 -0
- package/esm/components/page-container/index.js.map +1 -0
- package/esm/components/page-container/index.spec.d.ts +2 -0
- package/esm/components/page-container/index.spec.d.ts.map +1 -0
- package/esm/components/page-container/index.spec.js +217 -0
- package/esm/components/page-container/index.spec.js.map +1 -0
- package/esm/components/page-container/page-header.d.ts +57 -0
- package/esm/components/page-container/page-header.d.ts.map +1 -0
- package/esm/components/page-container/page-header.js +93 -0
- package/esm/components/page-container/page-header.js.map +1 -0
- package/esm/components/page-container/page-header.spec.d.ts +2 -0
- package/esm/components/page-container/page-header.spec.d.ts.map +1 -0
- package/esm/components/page-container/page-header.spec.js +230 -0
- package/esm/components/page-container/page-header.spec.js.map +1 -0
- package/esm/components/page-layout/index.d.ts +83 -0
- package/esm/components/page-layout/index.d.ts.map +1 -0
- package/esm/components/page-layout/index.js +288 -0
- package/esm/components/page-layout/index.js.map +1 -0
- package/esm/components/page-layout/index.spec.d.ts +2 -0
- package/esm/components/page-layout/index.spec.d.ts.map +1 -0
- package/esm/components/page-layout/index.spec.js +637 -0
- package/esm/components/page-layout/index.spec.js.map +1 -0
- package/esm/components/pagination.d.ts +43 -0
- package/esm/components/pagination.d.ts.map +1 -0
- package/esm/components/pagination.js +165 -0
- package/esm/components/pagination.js.map +1 -0
- package/esm/components/pagination.spec.d.ts +2 -0
- package/esm/components/pagination.spec.d.ts.map +1 -0
- package/esm/components/pagination.spec.js +195 -0
- package/esm/components/pagination.spec.js.map +1 -0
- package/esm/components/paper.d.ts +3 -1
- package/esm/components/paper.d.ts.map +1 -1
- package/esm/components/paper.js +11 -9
- package/esm/components/paper.js.map +1 -1
- package/esm/components/paper.spec.js +26 -18
- package/esm/components/paper.spec.js.map +1 -1
- package/esm/components/rating.d.ts +62 -0
- package/esm/components/rating.d.ts.map +1 -0
- package/esm/components/rating.js +201 -0
- package/esm/components/rating.js.map +1 -0
- package/esm/components/rating.spec.d.ts +2 -0
- package/esm/components/rating.spec.d.ts.map +1 -0
- package/esm/components/rating.spec.js +663 -0
- package/esm/components/rating.spec.js.map +1 -0
- package/esm/components/result.d.ts +37 -0
- package/esm/components/result.d.ts.map +1 -0
- package/esm/components/result.js +109 -0
- package/esm/components/result.js.map +1 -0
- package/esm/components/result.spec.d.ts +2 -0
- package/esm/components/result.spec.d.ts.map +1 -0
- package/esm/components/result.spec.js +159 -0
- package/esm/components/result.spec.js.map +1 -0
- package/esm/components/searchable-input-styles.d.ts +8 -0
- package/esm/components/searchable-input-styles.d.ts.map +1 -0
- package/esm/components/searchable-input-styles.js +71 -0
- package/esm/components/searchable-input-styles.js.map +1 -0
- package/esm/components/skeleton.d.ts +2 -0
- package/esm/components/skeleton.d.ts.map +1 -1
- package/esm/components/skeleton.js +19 -6
- package/esm/components/skeleton.js.map +1 -1
- package/esm/components/skeleton.spec.js +103 -95
- package/esm/components/skeleton.spec.js.map +1 -1
- package/esm/components/styles.d.ts.map +1 -1
- package/esm/components/styles.js +14 -13
- package/esm/components/styles.js.map +1 -1
- package/esm/components/styles.spec.js +27 -26
- package/esm/components/styles.spec.js.map +1 -1
- package/esm/components/suggest/index.d.ts.map +1 -1
- package/esm/components/suggest/index.js +24 -85
- package/esm/components/suggest/index.js.map +1 -1
- package/esm/components/suggest/index.spec.js +402 -378
- package/esm/components/suggest/index.spec.js.map +1 -1
- package/esm/components/suggest/suggest-input.d.ts +2 -0
- package/esm/components/suggest/suggest-input.d.ts.map +1 -1
- package/esm/components/suggest/suggest-input.js +10 -8
- package/esm/components/suggest/suggest-input.js.map +1 -1
- package/esm/components/suggest/suggest-input.spec.js +83 -71
- package/esm/components/suggest/suggest-input.spec.js.map +1 -1
- package/esm/components/suggest/suggest-manager.spec.js +102 -92
- package/esm/components/suggest/suggest-manager.spec.js.map +1 -1
- package/esm/components/suggest/suggestion-list.d.ts.map +1 -1
- package/esm/components/suggest/suggestion-list.js +21 -22
- package/esm/components/suggest/suggestion-list.js.map +1 -1
- package/esm/components/suggest/suggestion-list.spec.js +165 -146
- package/esm/components/suggest/suggestion-list.spec.js.map +1 -1
- package/esm/components/tabs.d.ts +18 -2
- package/esm/components/tabs.d.ts.map +1 -1
- package/esm/components/tabs.js +154 -14
- package/esm/components/tabs.js.map +1 -1
- package/esm/components/tabs.spec.js +295 -7
- package/esm/components/tabs.spec.js.map +1 -1
- package/esm/components/timeline.d.ts +53 -0
- package/esm/components/timeline.d.ts.map +1 -0
- package/esm/components/timeline.js +162 -0
- package/esm/components/timeline.js.map +1 -0
- package/esm/components/timeline.spec.d.ts +2 -0
- package/esm/components/timeline.spec.d.ts.map +1 -0
- package/esm/components/timeline.spec.js +209 -0
- package/esm/components/timeline.spec.js.map +1 -0
- package/esm/components/tooltip.d.ts +25 -0
- package/esm/components/tooltip.d.ts.map +1 -0
- package/esm/components/tooltip.js +113 -0
- package/esm/components/tooltip.js.map +1 -0
- package/esm/components/tooltip.spec.d.ts +2 -0
- package/esm/components/tooltip.spec.d.ts.map +1 -0
- package/esm/components/tooltip.spec.js +152 -0
- package/esm/components/tooltip.spec.js.map +1 -0
- package/esm/components/tree/index.d.ts +3 -0
- package/esm/components/tree/index.d.ts.map +1 -0
- package/esm/components/tree/index.js +3 -0
- package/esm/components/tree/index.js.map +1 -0
- package/esm/components/tree/tree-item.d.ts +14 -0
- package/esm/components/tree/tree-item.d.ts.map +1 -0
- package/esm/components/tree/tree-item.js +118 -0
- package/esm/components/tree/tree-item.js.map +1 -0
- package/esm/components/tree/tree.d.ts +20 -0
- package/esm/components/tree/tree.d.ts.map +1 -0
- package/esm/components/tree/tree.js +66 -0
- package/esm/components/tree/tree.js.map +1 -0
- package/esm/components/tree/tree.spec.d.ts +2 -0
- package/esm/components/tree/tree.spec.d.ts.map +1 -0
- package/esm/components/tree/tree.spec.js +427 -0
- package/esm/components/tree/tree.spec.js.map +1 -0
- package/esm/components/typography.d.ts +48 -0
- package/esm/components/typography.d.ts.map +1 -0
- package/esm/components/typography.js +223 -0
- package/esm/components/typography.js.map +1 -0
- package/esm/components/typography.spec.d.ts +2 -0
- package/esm/components/typography.spec.d.ts.map +1 -0
- package/esm/components/typography.spec.js +199 -0
- package/esm/components/typography.spec.js.map +1 -0
- package/esm/components/wizard/index.d.ts +2 -0
- package/esm/components/wizard/index.d.ts.map +1 -1
- package/esm/components/wizard/index.spec.js +70 -56
- package/esm/components/wizard/index.spec.js.map +1 -1
- package/esm/services/click-away-service.d.ts +5 -2
- package/esm/services/click-away-service.d.ts.map +1 -1
- package/esm/services/click-away-service.js +7 -1
- package/esm/services/click-away-service.js.map +1 -1
- package/esm/services/css-variable-theme.d.ts +167 -1
- package/esm/services/css-variable-theme.d.ts.map +1 -1
- package/esm/services/css-variable-theme.js +102 -0
- package/esm/services/css-variable-theme.js.map +1 -1
- package/esm/services/css-variable-theme.spec.js +131 -1
- package/esm/services/css-variable-theme.spec.js.map +1 -1
- package/esm/services/default-dark-theme.d.ts +107 -2
- package/esm/services/default-dark-theme.d.ts.map +1 -1
- package/esm/services/default-dark-theme.js +87 -1
- package/esm/services/default-dark-theme.js.map +1 -1
- package/esm/services/default-light-theme.d.ts +107 -2
- package/esm/services/default-light-theme.d.ts.map +1 -1
- package/esm/services/default-light-theme.js +86 -0
- package/esm/services/default-light-theme.js.map +1 -1
- package/esm/services/index.d.ts +6 -2
- package/esm/services/index.d.ts.map +1 -1
- package/esm/services/index.js +6 -2
- package/esm/services/index.js.map +1 -1
- package/esm/services/layout-service.d.ts +217 -0
- package/esm/services/layout-service.d.ts.map +1 -0
- package/esm/services/layout-service.js +331 -0
- package/esm/services/layout-service.js.map +1 -0
- package/esm/services/layout-service.spec.d.ts +2 -0
- package/esm/services/layout-service.spec.d.ts.map +1 -0
- package/esm/services/layout-service.spec.js +425 -0
- package/esm/services/layout-service.spec.js.map +1 -0
- package/esm/services/list-service.d.ts +31 -0
- package/esm/services/list-service.d.ts.map +1 -0
- package/esm/services/list-service.js +149 -0
- package/esm/services/list-service.js.map +1 -0
- package/esm/services/list-service.spec.d.ts +2 -0
- package/esm/services/list-service.spec.d.ts.map +1 -0
- package/esm/services/list-service.spec.js +254 -0
- package/esm/services/list-service.spec.js.map +1 -0
- package/esm/services/palette-css-vars.d.ts +12 -0
- package/esm/services/palette-css-vars.d.ts.map +1 -0
- package/esm/services/palette-css-vars.js +44 -0
- package/esm/services/palette-css-vars.js.map +1 -0
- package/esm/services/theme-provider-service.d.ts +387 -2
- package/esm/services/theme-provider-service.d.ts.map +1 -1
- package/esm/services/theme-provider-service.js.map +1 -1
- package/esm/services/tree-service.d.ts +61 -0
- package/esm/services/tree-service.d.ts.map +1 -0
- package/esm/services/tree-service.js +149 -0
- package/esm/services/tree-service.js.map +1 -0
- package/esm/services/tree-service.spec.d.ts +2 -0
- package/esm/services/tree-service.spec.d.ts.map +1 -0
- package/esm/services/tree-service.spec.js +307 -0
- package/esm/services/tree-service.spec.js.map +1 -0
- package/esm/utils/promisify-animation.d.ts.map +1 -1
- package/esm/utils/promisify-animation.js +6 -1
- package/esm/utils/promisify-animation.js.map +1 -1
- package/package.json +4 -4
- package/src/components/accordion/accordion-item.tsx +197 -0
- package/src/components/accordion/accordion.spec.tsx +418 -0
- package/src/components/accordion/accordion.tsx +50 -0
- package/src/components/accordion/index.ts +2 -0
- package/src/components/alert.spec.tsx +256 -0
- package/src/components/alert.tsx +186 -0
- package/src/components/app-bar-link.spec.tsx +22 -19
- package/src/components/app-bar-link.tsx +29 -10
- package/src/components/app-bar.spec.tsx +73 -58
- package/src/components/app-bar.tsx +19 -12
- package/src/components/avatar.tsx +46 -47
- package/src/components/badge.spec.tsx +228 -0
- package/src/components/badge.tsx +104 -0
- package/src/components/breadcrumb.spec.tsx +396 -0
- package/src/components/breadcrumb.tsx +188 -0
- package/src/components/button-group.spec.tsx +611 -0
- package/src/components/button-group.tsx +423 -0
- package/src/components/button.spec.tsx +257 -67
- package/src/components/button.tsx +130 -80
- package/src/components/card.spec.tsx +389 -0
- package/src/components/card.tsx +261 -0
- package/src/components/carousel.spec.tsx +894 -0
- package/src/components/carousel.tsx +376 -0
- package/src/components/chip.spec.tsx +200 -0
- package/src/components/chip.tsx +188 -0
- package/src/components/circular-progress.spec.tsx +289 -0
- package/src/components/circular-progress.tsx +145 -0
- package/src/components/command-palette/command-palette-input.spec.tsx +209 -198
- package/src/components/command-palette/command-palette-input.tsx +25 -9
- package/src/components/command-palette/command-palette-manager.spec.ts +132 -117
- package/src/components/command-palette/command-palette-suggestion-list.spec.tsx +348 -330
- package/src/components/command-palette/command-palette-suggestion-list.tsx +22 -20
- package/src/components/command-palette/index.spec.tsx +12 -12
- package/src/components/command-palette/index.tsx +25 -102
- package/src/components/context-menu/context-menu-item.tsx +85 -0
- package/src/components/context-menu/context-menu-manager.spec.ts +478 -0
- package/src/components/context-menu/context-menu-manager.ts +148 -0
- package/src/components/context-menu/context-menu.spec.tsx +352 -0
- package/src/components/context-menu/context-menu.tsx +116 -0
- package/src/components/context-menu/index.ts +3 -0
- package/src/components/data-grid/body.spec.tsx +292 -278
- package/src/components/data-grid/data-grid-row.spec.tsx +165 -140
- package/src/components/data-grid/data-grid-row.tsx +72 -55
- package/src/components/data-grid/data-grid.spec.tsx +743 -718
- package/src/components/data-grid/data-grid.tsx +19 -15
- package/src/components/data-grid/footer.spec.tsx +249 -237
- package/src/components/data-grid/header.spec.tsx +374 -351
- package/src/components/data-grid/header.tsx +58 -39
- package/src/components/data-grid/selection-cell.spec.tsx +46 -45
- package/src/components/data-grid/selection-cell.tsx +2 -6
- package/src/components/dialog.spec.tsx +135 -0
- package/src/components/dialog.tsx +277 -0
- package/src/components/divider.spec.tsx +197 -0
- package/src/components/divider.tsx +147 -0
- package/src/components/drawer/drawer-toggle-button.spec.tsx +374 -0
- package/src/components/drawer/drawer-toggle-button.tsx +124 -0
- package/src/components/drawer/index.spec.tsx +748 -0
- package/src/components/drawer/index.tsx +227 -0
- package/src/components/dropdown.spec.tsx +445 -0
- package/src/components/dropdown.tsx +343 -0
- package/src/components/fab.spec.tsx +51 -40
- package/src/components/fab.tsx +32 -9
- package/src/components/form.spec.tsx +303 -293
- package/src/components/form.tsx +10 -7
- package/src/components/grid.spec.tsx +276 -183
- package/src/components/grid.tsx +10 -10
- package/src/components/icons/icon-definitions.spec.ts +68 -0
- package/src/components/icons/icon-definitions.ts +509 -0
- package/src/components/icons/icon-types.ts +48 -0
- package/src/components/icons/icon.spec.tsx +314 -0
- package/src/components/icons/icon.tsx +111 -0
- package/src/components/icons/index.ts +4 -0
- package/src/components/image.spec.tsx +748 -0
- package/src/components/image.tsx +520 -0
- package/src/components/index.ts +32 -4
- package/src/components/inputs/autocomplete.spec.tsx +10 -1
- package/src/components/inputs/autocomplete.tsx +13 -7
- package/src/components/inputs/checkbox.spec.tsx +377 -0
- package/src/components/inputs/checkbox.tsx +198 -0
- package/src/components/inputs/index.ts +7 -0
- package/src/components/inputs/input-number.spec.tsx +686 -0
- package/src/components/inputs/input-number.tsx +387 -0
- package/src/components/inputs/input.spec.tsx +544 -508
- package/src/components/inputs/input.tsx +91 -132
- package/src/components/inputs/radio-group.spec.tsx +281 -0
- package/src/components/inputs/radio-group.tsx +108 -0
- package/src/components/inputs/radio.spec.tsx +273 -0
- package/src/components/inputs/radio.tsx +199 -0
- package/src/components/inputs/select.spec.tsx +1237 -0
- package/src/components/inputs/select.tsx +775 -0
- package/src/components/inputs/slider.spec.tsx +1020 -0
- package/src/components/inputs/slider.tsx +696 -0
- package/src/components/inputs/switch.spec.tsx +410 -0
- package/src/components/inputs/switch.tsx +218 -0
- package/src/components/inputs/text-area.spec.tsx +186 -171
- package/src/components/inputs/text-area.tsx +13 -19
- package/src/components/linear-progress.spec.tsx +320 -0
- package/src/components/linear-progress.tsx +127 -0
- package/src/components/list/index.ts +2 -0
- package/src/components/list/list-item.tsx +106 -0
- package/src/components/list/list.spec.tsx +817 -0
- package/src/components/list/list.tsx +92 -0
- package/src/components/loader.spec.tsx +220 -204
- package/src/components/loader.tsx +17 -9
- package/src/components/menu/index.ts +2 -0
- package/src/components/menu/menu-types.spec.ts +122 -0
- package/src/components/menu/menu-types.ts +43 -0
- package/src/components/menu/menu.spec.tsx +483 -0
- package/src/components/menu/menu.tsx +326 -0
- package/src/components/modal.spec.tsx +65 -55
- package/src/components/modal.tsx +9 -6
- package/src/components/noty-list.spec.tsx +78 -75
- package/src/components/noty-list.tsx +76 -68
- package/src/components/page-container/index.spec.tsx +274 -0
- package/src/components/page-container/index.tsx +82 -0
- package/src/components/page-container/page-header.spec.tsx +308 -0
- package/src/components/page-container/page-header.tsx +127 -0
- package/src/components/page-layout/index.spec.tsx +882 -0
- package/src/components/page-layout/index.tsx +392 -0
- package/src/components/pagination.spec.tsx +275 -0
- package/src/components/pagination.tsx +249 -0
- package/src/components/paper.spec.tsx +26 -18
- package/src/components/paper.tsx +12 -10
- package/src/components/rating.spec.tsx +866 -0
- package/src/components/rating.tsx +286 -0
- package/src/components/result.spec.tsx +221 -0
- package/src/components/result.tsx +155 -0
- package/src/components/searchable-input-styles.ts +81 -0
- package/src/components/skeleton.spec.tsx +126 -118
- package/src/components/skeleton.tsx +23 -6
- package/src/components/styles.spec.ts +27 -28
- package/src/components/styles.tsx +15 -13
- package/src/components/suggest/index.spec.tsx +611 -587
- package/src/components/suggest/index.tsx +28 -95
- package/src/components/suggest/suggest-input.spec.tsx +95 -81
- package/src/components/suggest/suggest-input.tsx +9 -7
- package/src/components/suggest/suggest-manager.spec.ts +103 -93
- package/src/components/suggest/suggestion-list.spec.tsx +194 -173
- package/src/components/suggest/suggestion-list.tsx +23 -22
- package/src/components/tabs.spec.tsx +369 -7
- package/src/components/tabs.tsx +221 -18
- package/src/components/timeline.spec.tsx +294 -0
- package/src/components/timeline.tsx +221 -0
- package/src/components/tooltip.spec.tsx +223 -0
- package/src/components/tooltip.tsx +155 -0
- package/src/components/tree/index.ts +2 -0
- package/src/components/tree/tree-item.tsx +161 -0
- package/src/components/tree/tree.spec.tsx +677 -0
- package/src/components/tree/tree.tsx +111 -0
- package/src/components/typography.spec.tsx +235 -0
- package/src/components/typography.tsx +292 -0
- package/src/components/wizard/index.spec.tsx +77 -68
- package/src/services/click-away-service.ts +9 -3
- package/src/services/css-variable-theme.spec.ts +169 -1
- package/src/services/css-variable-theme.ts +107 -2
- package/src/services/default-dark-theme.ts +89 -3
- package/src/services/default-light-theme.ts +88 -2
- package/src/services/index.ts +6 -2
- package/src/services/layout-service.spec.ts +535 -0
- package/src/services/layout-service.ts +391 -0
- package/src/services/list-service.spec.ts +364 -0
- package/src/services/list-service.ts +169 -0
- package/src/services/palette-css-vars.ts +46 -0
- package/src/services/theme-provider-service.ts +246 -1
- package/src/services/tree-service.spec.ts +428 -0
- package/src/services/tree-service.ts +179 -0
- package/src/utils/promisify-animation.ts +7 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Injector } from '@furystack/inject'
|
|
2
2
|
import { createComponent, initializeShadeRoot } from '@furystack/shades'
|
|
3
|
-
import { sleepAsync } from '@furystack/utils'
|
|
3
|
+
import { sleepAsync, usingAsync } from '@furystack/utils'
|
|
4
4
|
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
|
|
5
5
|
import { ThemeProviderService } from '../../services/theme-provider-service.js'
|
|
6
6
|
import { Form, FormService } from '../form.js'
|
|
@@ -17,792 +17,828 @@ describe('Input', () => {
|
|
|
17
17
|
})
|
|
18
18
|
|
|
19
19
|
it('should render with shadow DOM', async () => {
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
await usingAsync(new Injector(), async (injector) => {
|
|
21
|
+
const rootElement = document.getElementById('root') as HTMLDivElement
|
|
22
22
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
23
|
+
initializeShadeRoot({
|
|
24
|
+
injector,
|
|
25
|
+
rootElement,
|
|
26
|
+
jsxElement: <Input />,
|
|
27
|
+
})
|
|
28
28
|
|
|
29
|
-
|
|
29
|
+
await sleepAsync(50)
|
|
30
30
|
|
|
31
|
-
|
|
32
|
-
|
|
31
|
+
const input = document.querySelector('shade-input')
|
|
32
|
+
expect(input).not.toBeNull()
|
|
33
|
+
})
|
|
33
34
|
})
|
|
34
35
|
|
|
35
36
|
it('should render the inner input element', async () => {
|
|
36
|
-
|
|
37
|
-
|
|
37
|
+
await usingAsync(new Injector(), async (injector) => {
|
|
38
|
+
const rootElement = document.getElementById('root') as HTMLDivElement
|
|
38
39
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
40
|
+
initializeShadeRoot({
|
|
41
|
+
injector,
|
|
42
|
+
rootElement,
|
|
43
|
+
jsxElement: <Input name="testField" />,
|
|
44
|
+
})
|
|
44
45
|
|
|
45
|
-
|
|
46
|
+
await sleepAsync(50)
|
|
46
47
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
48
|
+
const input = document.querySelector('shade-input input') as HTMLInputElement
|
|
49
|
+
expect(input).not.toBeNull()
|
|
50
|
+
expect(input.name).toBe('testField')
|
|
51
|
+
})
|
|
50
52
|
})
|
|
51
53
|
|
|
52
54
|
it('should render the label title', async () => {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
+
await usingAsync(new Injector(), async (injector) => {
|
|
56
|
+
const rootElement = document.getElementById('root') as HTMLDivElement
|
|
55
57
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
58
|
+
initializeShadeRoot({
|
|
59
|
+
injector,
|
|
60
|
+
rootElement,
|
|
61
|
+
jsxElement: <Input labelTitle="Test Label" />,
|
|
62
|
+
})
|
|
61
63
|
|
|
62
|
-
|
|
64
|
+
await sleepAsync(50)
|
|
63
65
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
66
|
+
const label = document.querySelector('shade-input label') as HTMLLabelElement
|
|
67
|
+
expect(label).not.toBeNull()
|
|
68
|
+
expect(label.textContent).toContain('Test Label')
|
|
69
|
+
})
|
|
67
70
|
})
|
|
68
71
|
|
|
69
72
|
describe('variants', () => {
|
|
70
73
|
it('should set data-variant attribute for outlined variant', async () => {
|
|
71
|
-
|
|
72
|
-
|
|
74
|
+
await usingAsync(new Injector(), async (injector) => {
|
|
75
|
+
const rootElement = document.getElementById('root') as HTMLDivElement
|
|
73
76
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
77
|
+
initializeShadeRoot({
|
|
78
|
+
injector,
|
|
79
|
+
rootElement,
|
|
80
|
+
jsxElement: <Input variant="outlined" />,
|
|
81
|
+
})
|
|
79
82
|
|
|
80
|
-
|
|
83
|
+
await sleepAsync(50)
|
|
81
84
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
+
const input = document.querySelector('shade-input') as HTMLElement
|
|
86
|
+
expect(input).not.toBeNull()
|
|
87
|
+
expect(input.getAttribute('data-variant')).toBe('outlined')
|
|
88
|
+
})
|
|
85
89
|
})
|
|
86
90
|
|
|
87
91
|
it('should set data-variant attribute for contained variant', async () => {
|
|
88
|
-
|
|
89
|
-
|
|
92
|
+
await usingAsync(new Injector(), async (injector) => {
|
|
93
|
+
const rootElement = document.getElementById('root') as HTMLDivElement
|
|
90
94
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
95
|
+
initializeShadeRoot({
|
|
96
|
+
injector,
|
|
97
|
+
rootElement,
|
|
98
|
+
jsxElement: <Input variant="contained" />,
|
|
99
|
+
})
|
|
96
100
|
|
|
97
|
-
|
|
101
|
+
await sleepAsync(50)
|
|
98
102
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
103
|
+
const input = document.querySelector('shade-input') as HTMLElement
|
|
104
|
+
expect(input).not.toBeNull()
|
|
105
|
+
expect(input.getAttribute('data-variant')).toBe('contained')
|
|
106
|
+
})
|
|
102
107
|
})
|
|
103
108
|
|
|
104
109
|
it('should not have data-variant when variant is not specified', async () => {
|
|
105
|
-
|
|
106
|
-
|
|
110
|
+
await usingAsync(new Injector(), async (injector) => {
|
|
111
|
+
const rootElement = document.getElementById('root') as HTMLDivElement
|
|
107
112
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
+
initializeShadeRoot({
|
|
114
|
+
injector,
|
|
115
|
+
rootElement,
|
|
116
|
+
jsxElement: <Input />,
|
|
117
|
+
})
|
|
113
118
|
|
|
114
|
-
|
|
119
|
+
await sleepAsync(50)
|
|
115
120
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
121
|
+
const input = document.querySelector('shade-input') as HTMLElement
|
|
122
|
+
expect(input).not.toBeNull()
|
|
123
|
+
expect(input.hasAttribute('data-variant')).toBe(false)
|
|
124
|
+
})
|
|
119
125
|
})
|
|
120
126
|
})
|
|
121
127
|
|
|
122
128
|
describe('disabled state', () => {
|
|
123
129
|
it('should set data-disabled attribute when disabled', async () => {
|
|
124
|
-
|
|
125
|
-
|
|
130
|
+
await usingAsync(new Injector(), async (injector) => {
|
|
131
|
+
const rootElement = document.getElementById('root') as HTMLDivElement
|
|
126
132
|
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
133
|
+
initializeShadeRoot({
|
|
134
|
+
injector,
|
|
135
|
+
rootElement,
|
|
136
|
+
jsxElement: <Input disabled />,
|
|
137
|
+
})
|
|
132
138
|
|
|
133
|
-
|
|
139
|
+
await sleepAsync(50)
|
|
134
140
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
141
|
+
const input = document.querySelector('shade-input') as HTMLElement
|
|
142
|
+
expect(input).not.toBeNull()
|
|
143
|
+
expect(input.hasAttribute('data-disabled')).toBe(true)
|
|
144
|
+
})
|
|
138
145
|
})
|
|
139
146
|
|
|
140
147
|
it('should not have data-disabled attribute when not disabled', async () => {
|
|
141
|
-
|
|
142
|
-
|
|
148
|
+
await usingAsync(new Injector(), async (injector) => {
|
|
149
|
+
const rootElement = document.getElementById('root') as HTMLDivElement
|
|
143
150
|
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
151
|
+
initializeShadeRoot({
|
|
152
|
+
injector,
|
|
153
|
+
rootElement,
|
|
154
|
+
jsxElement: <Input disabled={false} />,
|
|
155
|
+
})
|
|
149
156
|
|
|
150
|
-
|
|
157
|
+
await sleepAsync(50)
|
|
151
158
|
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
159
|
+
const input = document.querySelector('shade-input') as HTMLElement
|
|
160
|
+
expect(input).not.toBeNull()
|
|
161
|
+
expect(input.hasAttribute('data-disabled')).toBe(false)
|
|
162
|
+
})
|
|
155
163
|
})
|
|
156
164
|
})
|
|
157
165
|
|
|
158
166
|
describe('validation', () => {
|
|
159
167
|
it('should call custom validation callback', async () => {
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
168
|
+
await usingAsync(new Injector(), async (injector) => {
|
|
169
|
+
const rootElement = document.getElementById('root') as HTMLDivElement
|
|
170
|
+
const getValidationResult = vi.fn().mockReturnValue({ isValid: true })
|
|
163
171
|
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
172
|
+
initializeShadeRoot({
|
|
173
|
+
injector,
|
|
174
|
+
rootElement,
|
|
175
|
+
jsxElement: <Input name="email" getValidationResult={getValidationResult} />,
|
|
176
|
+
})
|
|
169
177
|
|
|
170
|
-
|
|
178
|
+
await sleepAsync(50)
|
|
171
179
|
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
180
|
+
const input = document.querySelector('shade-input input') as HTMLInputElement
|
|
181
|
+
input.value = 'test@example.com'
|
|
182
|
+
input.dispatchEvent(new Event('change', { bubbles: true }))
|
|
175
183
|
|
|
176
|
-
|
|
184
|
+
await sleepAsync(50)
|
|
177
185
|
|
|
178
|
-
|
|
186
|
+
expect(getValidationResult).toHaveBeenCalled()
|
|
187
|
+
})
|
|
179
188
|
})
|
|
180
189
|
|
|
181
190
|
it('should set data-invalid when validation fails', async () => {
|
|
182
|
-
|
|
183
|
-
|
|
191
|
+
await usingAsync(new Injector(), async (injector) => {
|
|
192
|
+
const rootElement = document.getElementById('root') as HTMLDivElement
|
|
184
193
|
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
194
|
+
initializeShadeRoot({
|
|
195
|
+
injector,
|
|
196
|
+
rootElement,
|
|
197
|
+
jsxElement: (
|
|
198
|
+
<Input
|
|
199
|
+
name="email"
|
|
200
|
+
getValidationResult={() => ({ isValid: false, message: 'Invalid email' })}
|
|
201
|
+
value="invalid"
|
|
202
|
+
/>
|
|
203
|
+
),
|
|
204
|
+
})
|
|
196
205
|
|
|
197
|
-
|
|
206
|
+
await sleepAsync(50)
|
|
198
207
|
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
208
|
+
const inputWrapper = document.querySelector('shade-input') as HTMLElement
|
|
209
|
+
const input = inputWrapper.querySelector('input') as HTMLInputElement
|
|
210
|
+
input.value = 'invalid'
|
|
211
|
+
input.dispatchEvent(new Event('change', { bubbles: true }))
|
|
203
212
|
|
|
204
|
-
|
|
213
|
+
await sleepAsync(50)
|
|
205
214
|
|
|
206
|
-
|
|
215
|
+
expect(inputWrapper.hasAttribute('data-invalid')).toBe(true)
|
|
216
|
+
})
|
|
207
217
|
})
|
|
208
218
|
|
|
209
219
|
it('should not have data-invalid when validation passes', async () => {
|
|
210
|
-
|
|
211
|
-
|
|
220
|
+
await usingAsync(new Injector(), async (injector) => {
|
|
221
|
+
const rootElement = document.getElementById('root') as HTMLDivElement
|
|
212
222
|
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
223
|
+
initializeShadeRoot({
|
|
224
|
+
injector,
|
|
225
|
+
rootElement,
|
|
226
|
+
jsxElement: <Input name="email" getValidationResult={() => ({ isValid: true })} value="valid@email.com" />,
|
|
227
|
+
})
|
|
218
228
|
|
|
219
|
-
|
|
229
|
+
await sleepAsync(50)
|
|
220
230
|
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
231
|
+
const inputWrapper = document.querySelector('shade-input') as HTMLElement
|
|
232
|
+
const input = inputWrapper.querySelector('input') as HTMLInputElement
|
|
233
|
+
input.value = 'valid@email.com'
|
|
234
|
+
input.dispatchEvent(new Event('change', { bubbles: true }))
|
|
225
235
|
|
|
226
|
-
|
|
236
|
+
await sleepAsync(50)
|
|
227
237
|
|
|
228
|
-
|
|
238
|
+
expect(inputWrapper.hasAttribute('data-invalid')).toBe(false)
|
|
239
|
+
})
|
|
229
240
|
})
|
|
230
241
|
|
|
231
242
|
it('should display validation message in helper text when validation fails', async () => {
|
|
232
|
-
|
|
233
|
-
|
|
243
|
+
await usingAsync(new Injector(), async (injector) => {
|
|
244
|
+
const rootElement = document.getElementById('root') as HTMLDivElement
|
|
234
245
|
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
246
|
+
initializeShadeRoot({
|
|
247
|
+
injector,
|
|
248
|
+
rootElement,
|
|
249
|
+
jsxElement: (
|
|
250
|
+
<Input name="email" getValidationResult={() => ({ isValid: false, message: 'Email is required' })} />
|
|
251
|
+
),
|
|
252
|
+
})
|
|
242
253
|
|
|
243
|
-
|
|
254
|
+
await sleepAsync(50)
|
|
244
255
|
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
256
|
+
const inputWrapper = document.querySelector('shade-input') as HTMLElement
|
|
257
|
+
const input = inputWrapper.querySelector('input') as HTMLInputElement
|
|
258
|
+
input.value = ''
|
|
259
|
+
input.dispatchEvent(new Event('change', { bubbles: true }))
|
|
249
260
|
|
|
250
|
-
|
|
261
|
+
await sleepAsync(50)
|
|
251
262
|
|
|
252
|
-
|
|
253
|
-
|
|
263
|
+
const helperText = inputWrapper.querySelector('.helperText') as HTMLElement
|
|
264
|
+
expect(helperText.textContent).toBe('Email is required')
|
|
265
|
+
})
|
|
254
266
|
})
|
|
255
267
|
|
|
256
268
|
it('should show default validation message for required field', async () => {
|
|
257
|
-
|
|
258
|
-
|
|
269
|
+
await usingAsync(new Injector(), async (injector) => {
|
|
270
|
+
const rootElement = document.getElementById('root') as HTMLDivElement
|
|
259
271
|
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
272
|
+
initializeShadeRoot({
|
|
273
|
+
injector,
|
|
274
|
+
rootElement,
|
|
275
|
+
jsxElement: <Input name="field" required />,
|
|
276
|
+
})
|
|
265
277
|
|
|
266
|
-
|
|
278
|
+
await sleepAsync(50)
|
|
267
279
|
|
|
268
|
-
|
|
269
|
-
|
|
280
|
+
const inputWrapper = document.querySelector('shade-input') as HTMLElement
|
|
281
|
+
const input = inputWrapper.querySelector('input') as HTMLInputElement
|
|
270
282
|
|
|
271
|
-
|
|
272
|
-
|
|
283
|
+
const invalidEvent = new Event('invalid', { bubbles: true, cancelable: true })
|
|
284
|
+
input.dispatchEvent(invalidEvent)
|
|
273
285
|
|
|
274
|
-
|
|
286
|
+
await sleepAsync(50)
|
|
275
287
|
|
|
276
|
-
|
|
277
|
-
|
|
288
|
+
const helperText = inputWrapper.querySelector('.helperText') as HTMLElement
|
|
289
|
+
expect(helperText.textContent).toBe('Value is required')
|
|
290
|
+
})
|
|
278
291
|
})
|
|
279
292
|
})
|
|
280
293
|
|
|
281
294
|
describe('helper text', () => {
|
|
282
295
|
it('should render custom helper text', async () => {
|
|
283
|
-
|
|
284
|
-
|
|
296
|
+
await usingAsync(new Injector(), async (injector) => {
|
|
297
|
+
const rootElement = document.getElementById('root') as HTMLDivElement
|
|
285
298
|
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
299
|
+
initializeShadeRoot({
|
|
300
|
+
injector,
|
|
301
|
+
rootElement,
|
|
302
|
+
jsxElement: <Input name="email" getHelperText={() => 'Enter your email address'} />,
|
|
303
|
+
})
|
|
291
304
|
|
|
292
|
-
|
|
305
|
+
await sleepAsync(50)
|
|
293
306
|
|
|
294
|
-
|
|
295
|
-
|
|
307
|
+
const inputWrapper = document.querySelector('shade-input') as HTMLElement
|
|
308
|
+
const helperText = inputWrapper.querySelector('.helperText') as HTMLElement
|
|
296
309
|
|
|
297
|
-
|
|
310
|
+
expect(helperText.textContent).toBe('Enter your email address')
|
|
311
|
+
})
|
|
298
312
|
})
|
|
299
313
|
|
|
300
314
|
it('should call getHelperText with state and validation result when validation passes', async () => {
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
315
|
+
await usingAsync(new Injector(), async (injector) => {
|
|
316
|
+
const rootElement = document.getElementById('root') as HTMLDivElement
|
|
317
|
+
const getHelperText = vi.fn().mockReturnValue('Helper text')
|
|
304
318
|
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
319
|
+
initializeShadeRoot({
|
|
320
|
+
injector,
|
|
321
|
+
rootElement,
|
|
322
|
+
jsxElement: (
|
|
323
|
+
<Input name="email" getHelperText={getHelperText} getValidationResult={() => ({ isValid: true })} />
|
|
324
|
+
),
|
|
325
|
+
})
|
|
312
326
|
|
|
313
|
-
|
|
327
|
+
await sleepAsync(50)
|
|
314
328
|
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
329
|
+
const input = document.querySelector('shade-input input') as HTMLInputElement
|
|
330
|
+
input.value = 'test'
|
|
331
|
+
input.dispatchEvent(new Event('change', { bubbles: true }))
|
|
318
332
|
|
|
319
|
-
|
|
333
|
+
await sleepAsync(50)
|
|
320
334
|
|
|
321
|
-
|
|
335
|
+
expect(getHelperText).toHaveBeenCalled()
|
|
322
336
|
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
337
|
+
const { calls } = getHelperText.mock
|
|
338
|
+
const callWithValidation = calls.find(
|
|
339
|
+
(call: Array<{ validationResult?: unknown }>) => call[0].validationResult !== undefined,
|
|
340
|
+
)
|
|
341
|
+
expect(callWithValidation).toBeDefined()
|
|
342
|
+
expect((callWithValidation as [{ validationResult: unknown; state: unknown }])[0].validationResult).toEqual({
|
|
343
|
+
isValid: true,
|
|
344
|
+
})
|
|
345
|
+
expect((callWithValidation as [{ validationResult: unknown; state: unknown }])[0].state).toBeDefined()
|
|
330
346
|
})
|
|
331
|
-
expect((callWithValidation as [{ validationResult: unknown; state: unknown }])[0].state).toBeDefined()
|
|
332
347
|
})
|
|
333
348
|
|
|
334
349
|
it('should use validation message instead of getHelperText when validation fails with message', async () => {
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
+
await usingAsync(new Injector(), async (injector) => {
|
|
351
|
+
const rootElement = document.getElementById('root') as HTMLDivElement
|
|
352
|
+
const getHelperText = vi.fn().mockReturnValue('Fallback helper')
|
|
353
|
+
|
|
354
|
+
initializeShadeRoot({
|
|
355
|
+
injector,
|
|
356
|
+
rootElement,
|
|
357
|
+
jsxElement: (
|
|
358
|
+
<Input
|
|
359
|
+
name="email"
|
|
360
|
+
getHelperText={getHelperText}
|
|
361
|
+
getValidationResult={() => ({ isValid: false, message: 'Validation error message' })}
|
|
362
|
+
/>
|
|
363
|
+
),
|
|
364
|
+
})
|
|
350
365
|
|
|
351
|
-
|
|
366
|
+
await sleepAsync(50)
|
|
352
367
|
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
368
|
+
const input = document.querySelector('shade-input input') as HTMLInputElement
|
|
369
|
+
input.value = 'test'
|
|
370
|
+
input.dispatchEvent(new Event('change', { bubbles: true }))
|
|
356
371
|
|
|
357
|
-
|
|
372
|
+
await sleepAsync(50)
|
|
358
373
|
|
|
359
|
-
|
|
360
|
-
|
|
374
|
+
const inputWrapper = document.querySelector('shade-input') as HTMLElement
|
|
375
|
+
const helperText = inputWrapper.querySelector('.helperText') as HTMLElement
|
|
361
376
|
|
|
362
|
-
|
|
377
|
+
expect(helperText.textContent).toBe('Validation error message')
|
|
378
|
+
})
|
|
363
379
|
})
|
|
364
380
|
})
|
|
365
381
|
|
|
366
382
|
describe('icons', () => {
|
|
367
383
|
it('should render start icon when getStartIcon is provided', async () => {
|
|
368
|
-
|
|
369
|
-
|
|
384
|
+
await usingAsync(new Injector(), async (injector) => {
|
|
385
|
+
const rootElement = document.getElementById('root') as HTMLDivElement
|
|
370
386
|
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
387
|
+
initializeShadeRoot({
|
|
388
|
+
injector,
|
|
389
|
+
rootElement,
|
|
390
|
+
jsxElement: <Input name="search" getStartIcon={() => '🔍'} />,
|
|
391
|
+
})
|
|
376
392
|
|
|
377
|
-
|
|
393
|
+
await sleepAsync(50)
|
|
378
394
|
|
|
379
|
-
|
|
380
|
-
|
|
395
|
+
const inputWrapper = document.querySelector('shade-input') as HTMLElement
|
|
396
|
+
const startIcon = inputWrapper.querySelector('.startIcon') as HTMLElement
|
|
381
397
|
|
|
382
|
-
|
|
383
|
-
|
|
398
|
+
expect(startIcon).not.toBeNull()
|
|
399
|
+
expect(startIcon.textContent).toBe('🔍')
|
|
400
|
+
})
|
|
384
401
|
})
|
|
385
402
|
|
|
386
403
|
it('should render end icon when getEndIcon is provided', async () => {
|
|
387
|
-
|
|
388
|
-
|
|
404
|
+
await usingAsync(new Injector(), async (injector) => {
|
|
405
|
+
const rootElement = document.getElementById('root') as HTMLDivElement
|
|
389
406
|
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
407
|
+
initializeShadeRoot({
|
|
408
|
+
injector,
|
|
409
|
+
rootElement,
|
|
410
|
+
jsxElement: <Input name="password" getEndIcon={() => '👁️'} />,
|
|
411
|
+
})
|
|
395
412
|
|
|
396
|
-
|
|
413
|
+
await sleepAsync(50)
|
|
397
414
|
|
|
398
|
-
|
|
399
|
-
|
|
415
|
+
const inputWrapper = document.querySelector('shade-input') as HTMLElement
|
|
416
|
+
const endIcon = inputWrapper.querySelector('.endIcon') as HTMLElement
|
|
400
417
|
|
|
401
|
-
|
|
402
|
-
|
|
418
|
+
expect(endIcon).not.toBeNull()
|
|
419
|
+
expect(endIcon.textContent).toBe('👁️')
|
|
420
|
+
})
|
|
403
421
|
})
|
|
404
422
|
|
|
405
423
|
it('should not render icon container when getStartIcon is not provided', async () => {
|
|
406
|
-
|
|
407
|
-
|
|
424
|
+
await usingAsync(new Injector(), async (injector) => {
|
|
425
|
+
const rootElement = document.getElementById('root') as HTMLDivElement
|
|
408
426
|
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
427
|
+
initializeShadeRoot({
|
|
428
|
+
injector,
|
|
429
|
+
rootElement,
|
|
430
|
+
jsxElement: <Input name="field" />,
|
|
431
|
+
})
|
|
414
432
|
|
|
415
|
-
|
|
433
|
+
await sleepAsync(50)
|
|
416
434
|
|
|
417
|
-
|
|
418
|
-
|
|
435
|
+
const inputWrapper = document.querySelector('shade-input') as HTMLElement
|
|
436
|
+
const startIcon = inputWrapper.querySelector('.startIcon')
|
|
419
437
|
|
|
420
|
-
|
|
438
|
+
expect(startIcon).toBeNull()
|
|
439
|
+
})
|
|
421
440
|
})
|
|
422
441
|
|
|
423
442
|
it('should update icons on state change', async () => {
|
|
424
|
-
|
|
425
|
-
|
|
443
|
+
await usingAsync(new Injector(), async (injector) => {
|
|
444
|
+
const rootElement = document.getElementById('root') as HTMLDivElement
|
|
426
445
|
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
446
|
+
initializeShadeRoot({
|
|
447
|
+
injector,
|
|
448
|
+
rootElement,
|
|
449
|
+
jsxElement: <Input name="field" getEndIcon={({ state }) => (state.focused ? '✓' : '○')} />,
|
|
450
|
+
})
|
|
432
451
|
|
|
433
|
-
|
|
452
|
+
await sleepAsync(50)
|
|
434
453
|
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
454
|
+
const inputWrapper = document.querySelector('shade-input') as HTMLElement
|
|
455
|
+
const input = inputWrapper.querySelector('input') as HTMLInputElement
|
|
456
|
+
const endIcon = inputWrapper.querySelector('.endIcon') as HTMLElement
|
|
438
457
|
|
|
439
|
-
|
|
458
|
+
expect(endIcon.textContent).toBe('○')
|
|
440
459
|
|
|
441
|
-
|
|
442
|
-
|
|
460
|
+
input.dispatchEvent(new FocusEvent('focus'))
|
|
461
|
+
await sleepAsync(50)
|
|
443
462
|
|
|
444
|
-
|
|
463
|
+
expect(endIcon.textContent).toBe('✓')
|
|
464
|
+
})
|
|
445
465
|
})
|
|
446
466
|
})
|
|
447
467
|
|
|
448
468
|
describe('theme integration', () => {
|
|
449
469
|
it('should set CSS color variables from theme', async () => {
|
|
450
|
-
|
|
451
|
-
|
|
470
|
+
await usingAsync(new Injector(), async (injector) => {
|
|
471
|
+
const rootElement = document.getElementById('root') as HTMLDivElement
|
|
452
472
|
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
473
|
+
initializeShadeRoot({
|
|
474
|
+
injector,
|
|
475
|
+
rootElement,
|
|
476
|
+
jsxElement: <Input name="field" />,
|
|
477
|
+
})
|
|
458
478
|
|
|
459
|
-
|
|
479
|
+
await sleepAsync(50)
|
|
460
480
|
|
|
461
|
-
|
|
481
|
+
const inputWrapper = document.querySelector('shade-input') as HTMLElement
|
|
462
482
|
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
483
|
+
const themeService = injector.getInstance(ThemeProviderService)
|
|
484
|
+
expect(inputWrapper.style.getPropertyValue('--input-primary-color')).toBe(
|
|
485
|
+
themeService.theme.palette.primary.main,
|
|
486
|
+
)
|
|
487
|
+
expect(inputWrapper.style.getPropertyValue('--input-error-color')).toBe(themeService.theme.palette.error.main)
|
|
488
|
+
})
|
|
466
489
|
})
|
|
467
490
|
|
|
468
491
|
it('should use custom color from defaultColor prop', async () => {
|
|
469
|
-
|
|
470
|
-
|
|
492
|
+
await usingAsync(new Injector(), async (injector) => {
|
|
493
|
+
const rootElement = document.getElementById('root') as HTMLDivElement
|
|
471
494
|
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
495
|
+
initializeShadeRoot({
|
|
496
|
+
injector,
|
|
497
|
+
rootElement,
|
|
498
|
+
jsxElement: <Input name="field" defaultColor="secondary" />,
|
|
499
|
+
})
|
|
477
500
|
|
|
478
|
-
|
|
501
|
+
await sleepAsync(50)
|
|
479
502
|
|
|
480
|
-
|
|
503
|
+
const inputWrapper = document.querySelector('shade-input') as HTMLElement
|
|
481
504
|
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
505
|
+
const themeService = injector.getInstance(ThemeProviderService)
|
|
506
|
+
expect(inputWrapper.style.getPropertyValue('--input-primary-color')).toBe(
|
|
507
|
+
themeService.theme.palette.secondary.main,
|
|
508
|
+
)
|
|
509
|
+
})
|
|
486
510
|
})
|
|
487
511
|
})
|
|
488
512
|
|
|
489
513
|
describe('callbacks', () => {
|
|
490
514
|
it('should call onTextChange when input value changes', async () => {
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
515
|
+
await usingAsync(new Injector(), async (injector) => {
|
|
516
|
+
const rootElement = document.getElementById('root') as HTMLDivElement
|
|
517
|
+
const onTextChange = vi.fn()
|
|
494
518
|
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
519
|
+
initializeShadeRoot({
|
|
520
|
+
injector,
|
|
521
|
+
rootElement,
|
|
522
|
+
jsxElement: <Input name="field" onTextChange={onTextChange} />,
|
|
523
|
+
})
|
|
500
524
|
|
|
501
|
-
|
|
525
|
+
await sleepAsync(50)
|
|
502
526
|
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
527
|
+
const input = document.querySelector('shade-input input') as HTMLInputElement
|
|
528
|
+
input.value = 'new value'
|
|
529
|
+
input.dispatchEvent(new Event('change', { bubbles: true }))
|
|
506
530
|
|
|
507
|
-
|
|
531
|
+
await sleepAsync(50)
|
|
508
532
|
|
|
509
|
-
|
|
533
|
+
expect(onTextChange).toHaveBeenCalledWith('new value')
|
|
534
|
+
})
|
|
510
535
|
})
|
|
511
536
|
|
|
512
537
|
it('should call onchange when input value changes', async () => {
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
538
|
+
await usingAsync(new Injector(), async (injector) => {
|
|
539
|
+
const rootElement = document.getElementById('root') as HTMLDivElement
|
|
540
|
+
const onchange = vi.fn()
|
|
516
541
|
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
542
|
+
initializeShadeRoot({
|
|
543
|
+
injector,
|
|
544
|
+
rootElement,
|
|
545
|
+
jsxElement: <Input name="field" onchange={onchange} />,
|
|
546
|
+
})
|
|
522
547
|
|
|
523
|
-
|
|
548
|
+
await sleepAsync(50)
|
|
524
549
|
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
550
|
+
const input = document.querySelector('shade-input input') as HTMLInputElement
|
|
551
|
+
input.value = 'test'
|
|
552
|
+
input.dispatchEvent(new Event('change', { bubbles: true }))
|
|
528
553
|
|
|
529
|
-
|
|
554
|
+
await sleepAsync(50)
|
|
530
555
|
|
|
531
|
-
|
|
556
|
+
expect(onchange).toHaveBeenCalled()
|
|
557
|
+
})
|
|
532
558
|
})
|
|
533
559
|
})
|
|
534
560
|
|
|
535
561
|
describe('focus and blur', () => {
|
|
536
562
|
it('should update state on focus', async () => {
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
563
|
+
await usingAsync(new Injector(), async (injector) => {
|
|
564
|
+
const rootElement = document.getElementById('root') as HTMLDivElement
|
|
565
|
+
const getEndIcon = vi.fn().mockReturnValue('icon')
|
|
540
566
|
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
567
|
+
initializeShadeRoot({
|
|
568
|
+
injector,
|
|
569
|
+
rootElement,
|
|
570
|
+
jsxElement: <Input name="field" getEndIcon={getEndIcon} />,
|
|
571
|
+
})
|
|
546
572
|
|
|
547
|
-
|
|
573
|
+
await sleepAsync(50)
|
|
548
574
|
|
|
549
|
-
|
|
550
|
-
|
|
575
|
+
const input = document.querySelector('shade-input input') as HTMLInputElement
|
|
576
|
+
input.dispatchEvent(new FocusEvent('focus'))
|
|
551
577
|
|
|
552
|
-
|
|
578
|
+
await sleepAsync(50)
|
|
553
579
|
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
580
|
+
expect(getEndIcon).toHaveBeenLastCalledWith(
|
|
581
|
+
expect.objectContaining({
|
|
582
|
+
state: expect.objectContaining({
|
|
583
|
+
focused: true,
|
|
584
|
+
}) as unknown,
|
|
585
|
+
}),
|
|
586
|
+
)
|
|
587
|
+
})
|
|
561
588
|
})
|
|
562
589
|
|
|
563
590
|
it('should update state on blur', async () => {
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
591
|
+
await usingAsync(new Injector(), async (injector) => {
|
|
592
|
+
const rootElement = document.getElementById('root') as HTMLDivElement
|
|
593
|
+
const getEndIcon = vi.fn().mockReturnValue('icon')
|
|
567
594
|
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
595
|
+
initializeShadeRoot({
|
|
596
|
+
injector,
|
|
597
|
+
rootElement,
|
|
598
|
+
jsxElement: <Input name="field" getEndIcon={getEndIcon} />,
|
|
599
|
+
})
|
|
573
600
|
|
|
574
|
-
|
|
601
|
+
await sleepAsync(50)
|
|
575
602
|
|
|
576
|
-
|
|
603
|
+
const input = document.querySelector('shade-input input') as HTMLInputElement
|
|
577
604
|
|
|
578
|
-
|
|
579
|
-
|
|
605
|
+
input.dispatchEvent(new FocusEvent('focus'))
|
|
606
|
+
await sleepAsync(50)
|
|
580
607
|
|
|
581
|
-
|
|
582
|
-
|
|
608
|
+
input.dispatchEvent(new FocusEvent('blur'))
|
|
609
|
+
await sleepAsync(50)
|
|
583
610
|
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
611
|
+
expect(getEndIcon).toHaveBeenLastCalledWith(
|
|
612
|
+
expect.objectContaining({
|
|
613
|
+
state: expect.objectContaining({
|
|
614
|
+
focused: false,
|
|
615
|
+
}) as unknown,
|
|
616
|
+
}),
|
|
617
|
+
)
|
|
618
|
+
})
|
|
591
619
|
})
|
|
592
620
|
})
|
|
593
621
|
|
|
594
622
|
describe('autofocus', () => {
|
|
595
623
|
it('should set initial focused state based on autofocus prop', async () => {
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
624
|
+
await usingAsync(new Injector(), async (injector) => {
|
|
625
|
+
const rootElement = document.getElementById('root') as HTMLDivElement
|
|
626
|
+
const getEndIcon = vi.fn().mockReturnValue('icon')
|
|
599
627
|
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
628
|
+
initializeShadeRoot({
|
|
629
|
+
injector,
|
|
630
|
+
rootElement,
|
|
631
|
+
jsxElement: <Input name="field" autofocus getEndIcon={getEndIcon} />,
|
|
632
|
+
})
|
|
605
633
|
|
|
606
|
-
|
|
634
|
+
await sleepAsync(50)
|
|
607
635
|
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
636
|
+
expect(getEndIcon).toHaveBeenCalledWith(
|
|
637
|
+
expect.objectContaining({
|
|
638
|
+
state: expect.objectContaining({
|
|
639
|
+
focused: true,
|
|
640
|
+
}) as unknown,
|
|
641
|
+
}),
|
|
642
|
+
)
|
|
643
|
+
})
|
|
615
644
|
})
|
|
616
645
|
})
|
|
617
646
|
|
|
618
647
|
describe('FormService integration', () => {
|
|
619
648
|
it('should register input with FormService when inside a Form', async () => {
|
|
620
|
-
|
|
621
|
-
|
|
649
|
+
await usingAsync(new Injector(), async (injector) => {
|
|
650
|
+
const rootElement = document.getElementById('root') as HTMLDivElement
|
|
622
651
|
|
|
623
|
-
|
|
652
|
+
type TestFormData = { email: string }
|
|
624
653
|
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
654
|
+
initializeShadeRoot({
|
|
655
|
+
injector,
|
|
656
|
+
rootElement,
|
|
657
|
+
jsxElement: (
|
|
658
|
+
<Form<TestFormData> onSubmit={() => {}} validate={(_data): _data is TestFormData => true}>
|
|
659
|
+
<Input name="email" labelTitle="Email" />
|
|
660
|
+
</Form>
|
|
661
|
+
),
|
|
662
|
+
})
|
|
634
663
|
|
|
635
|
-
|
|
664
|
+
await sleepAsync(50)
|
|
636
665
|
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
666
|
+
const form = document.querySelector('form[is="shade-form"]') as HTMLFormElement
|
|
667
|
+
const formInjector = (form as unknown as { injector: Injector }).injector
|
|
668
|
+
const formService = formInjector.getInstance(FormService)
|
|
640
669
|
|
|
641
|
-
|
|
670
|
+
expect(formService.inputs.size).toBe(1)
|
|
671
|
+
})
|
|
642
672
|
})
|
|
643
673
|
|
|
644
674
|
it('should update FormService field state on validation', async () => {
|
|
645
|
-
|
|
646
|
-
|
|
675
|
+
await usingAsync(new Injector(), async (injector) => {
|
|
676
|
+
const rootElement = document.getElementById('root') as HTMLDivElement
|
|
647
677
|
|
|
648
|
-
|
|
678
|
+
type TestFormData = { email: string }
|
|
649
679
|
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
680
|
+
initializeShadeRoot({
|
|
681
|
+
injector,
|
|
682
|
+
rootElement,
|
|
683
|
+
jsxElement: (
|
|
684
|
+
<Form<TestFormData> onSubmit={() => {}} validate={(_data): _data is TestFormData => true}>
|
|
685
|
+
<Input
|
|
686
|
+
name="email"
|
|
687
|
+
labelTitle="Email"
|
|
688
|
+
getValidationResult={({ state }) => {
|
|
689
|
+
if (state.value.includes('@')) {
|
|
690
|
+
return { isValid: true }
|
|
691
|
+
}
|
|
692
|
+
return { isValid: false, message: 'Invalid email format' }
|
|
693
|
+
}}
|
|
694
|
+
/>
|
|
695
|
+
</Form>
|
|
696
|
+
),
|
|
697
|
+
})
|
|
668
698
|
|
|
669
|
-
|
|
699
|
+
await sleepAsync(50)
|
|
670
700
|
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
701
|
+
const form = document.querySelector('form[is="shade-form"]') as HTMLFormElement
|
|
702
|
+
const inputWrapper = form.querySelector('shade-input') as HTMLElement
|
|
703
|
+
const input = inputWrapper.querySelector('input') as HTMLInputElement
|
|
674
704
|
|
|
675
|
-
|
|
676
|
-
|
|
705
|
+
input.value = 'invalid'
|
|
706
|
+
input.dispatchEvent(new Event('change', { bubbles: true }))
|
|
677
707
|
|
|
678
|
-
|
|
708
|
+
await sleepAsync(50)
|
|
679
709
|
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
710
|
+
const formInjector = (form as unknown as { injector: Injector }).injector
|
|
711
|
+
const formService = formInjector.getInstance(FormService)
|
|
712
|
+
const fieldErrors = formService.fieldErrors.getValue()
|
|
683
713
|
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
714
|
+
expect(fieldErrors.email).toBeDefined()
|
|
715
|
+
expect(fieldErrors.email?.validationResult).toEqual({
|
|
716
|
+
isValid: false,
|
|
717
|
+
message: 'Invalid email format',
|
|
718
|
+
})
|
|
688
719
|
})
|
|
689
720
|
})
|
|
690
721
|
|
|
691
722
|
it('should unregister input from FormService on cleanup', async () => {
|
|
692
|
-
|
|
693
|
-
|
|
723
|
+
await usingAsync(new Injector(), async (injector) => {
|
|
724
|
+
const rootElement = document.getElementById('root') as HTMLDivElement
|
|
694
725
|
|
|
695
|
-
|
|
726
|
+
type TestFormData = { email: string }
|
|
696
727
|
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
728
|
+
initializeShadeRoot({
|
|
729
|
+
injector,
|
|
730
|
+
rootElement,
|
|
731
|
+
jsxElement: (
|
|
732
|
+
<Form<TestFormData> onSubmit={() => {}} validate={(_data): _data is TestFormData => true}>
|
|
733
|
+
<Input name="email" labelTitle="Email" />
|
|
734
|
+
</Form>
|
|
735
|
+
),
|
|
736
|
+
})
|
|
706
737
|
|
|
707
|
-
|
|
738
|
+
await sleepAsync(50)
|
|
708
739
|
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
740
|
+
const form = document.querySelector('form[is="shade-form"]') as HTMLFormElement
|
|
741
|
+
const formInjector = (form as unknown as { injector: Injector }).injector
|
|
742
|
+
const formService = formInjector.getInstance(FormService)
|
|
712
743
|
|
|
713
|
-
|
|
744
|
+
expect(formService.inputs.size).toBe(1)
|
|
714
745
|
|
|
715
|
-
|
|
746
|
+
rootElement.innerHTML = ''
|
|
716
747
|
|
|
717
|
-
|
|
748
|
+
await sleepAsync(50)
|
|
749
|
+
})
|
|
718
750
|
})
|
|
719
751
|
})
|
|
720
752
|
|
|
721
753
|
describe('default validation messages', () => {
|
|
722
754
|
it('should show message for typeMismatch', async () => {
|
|
723
|
-
|
|
724
|
-
|
|
755
|
+
await usingAsync(new Injector(), async (injector) => {
|
|
756
|
+
const rootElement = document.getElementById('root') as HTMLDivElement
|
|
725
757
|
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
758
|
+
initializeShadeRoot({
|
|
759
|
+
injector,
|
|
760
|
+
rootElement,
|
|
761
|
+
jsxElement: <Input name="email" type="email" />,
|
|
762
|
+
})
|
|
731
763
|
|
|
732
|
-
|
|
764
|
+
await sleepAsync(50)
|
|
733
765
|
|
|
734
|
-
|
|
735
|
-
|
|
766
|
+
const inputWrapper = document.querySelector('shade-input') as HTMLElement
|
|
767
|
+
const input = inputWrapper.querySelector('input') as HTMLInputElement
|
|
736
768
|
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
769
|
+
input.value = 'not-an-email'
|
|
770
|
+
const invalidEvent = new Event('invalid', { bubbles: true, cancelable: true })
|
|
771
|
+
input.dispatchEvent(invalidEvent)
|
|
740
772
|
|
|
741
|
-
|
|
773
|
+
await sleepAsync(50)
|
|
742
774
|
|
|
743
|
-
|
|
744
|
-
|
|
775
|
+
const helperText = inputWrapper.querySelector('.helperText') as HTMLElement
|
|
776
|
+
expect(helperText.textContent).toBe('Value is not valid')
|
|
777
|
+
})
|
|
745
778
|
})
|
|
746
779
|
|
|
747
780
|
it('should handle pattern mismatch validation', async () => {
|
|
748
|
-
|
|
749
|
-
|
|
781
|
+
await usingAsync(new Injector(), async (injector) => {
|
|
782
|
+
const rootElement = document.getElementById('root') as HTMLDivElement
|
|
750
783
|
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
784
|
+
initializeShadeRoot({
|
|
785
|
+
injector,
|
|
786
|
+
rootElement,
|
|
787
|
+
jsxElement: <Input name="code" pattern="[A-Z]{3}" />,
|
|
788
|
+
})
|
|
756
789
|
|
|
757
|
-
|
|
790
|
+
await sleepAsync(50)
|
|
758
791
|
|
|
759
|
-
|
|
760
|
-
|
|
792
|
+
const inputWrapper = document.querySelector('shade-input') as HTMLElement
|
|
793
|
+
const input = inputWrapper.querySelector('input') as HTMLInputElement
|
|
761
794
|
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
795
|
+
input.value = '123'
|
|
796
|
+
const invalidEvent = new Event('invalid', { bubbles: true, cancelable: true })
|
|
797
|
+
input.dispatchEvent(invalidEvent)
|
|
765
798
|
|
|
766
|
-
|
|
799
|
+
await sleepAsync(50)
|
|
767
800
|
|
|
768
|
-
|
|
769
|
-
|
|
801
|
+
const helperText = inputWrapper.querySelector('.helperText') as HTMLElement
|
|
802
|
+
expect(helperText.textContent).toBe('Value does not match the pattern')
|
|
803
|
+
})
|
|
770
804
|
})
|
|
771
805
|
})
|
|
772
806
|
|
|
773
807
|
describe('value handling', () => {
|
|
774
808
|
it('should use initial value prop', async () => {
|
|
775
|
-
|
|
776
|
-
|
|
809
|
+
await usingAsync(new Injector(), async (injector) => {
|
|
810
|
+
const rootElement = document.getElementById('root') as HTMLDivElement
|
|
777
811
|
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
812
|
+
initializeShadeRoot({
|
|
813
|
+
injector,
|
|
814
|
+
rootElement,
|
|
815
|
+
jsxElement: <Input name="field" value="initial value" />,
|
|
816
|
+
})
|
|
783
817
|
|
|
784
|
-
|
|
818
|
+
await sleepAsync(50)
|
|
785
819
|
|
|
786
|
-
|
|
787
|
-
|
|
820
|
+
const input = document.querySelector('shade-input input') as HTMLInputElement
|
|
821
|
+
expect(input.value).toBe('initial value')
|
|
822
|
+
})
|
|
788
823
|
})
|
|
789
824
|
})
|
|
790
825
|
|
|
791
826
|
describe('labelProps', () => {
|
|
792
827
|
it('should pass labelProps to the label element', async () => {
|
|
793
|
-
|
|
794
|
-
|
|
828
|
+
await usingAsync(new Injector(), async (injector) => {
|
|
829
|
+
const rootElement = document.getElementById('root') as HTMLDivElement
|
|
795
830
|
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
831
|
+
initializeShadeRoot({
|
|
832
|
+
injector,
|
|
833
|
+
rootElement,
|
|
834
|
+
jsxElement: <Input name="field" labelProps={{ className: 'custom-label' }} />,
|
|
835
|
+
})
|
|
801
836
|
|
|
802
|
-
|
|
837
|
+
await sleepAsync(50)
|
|
803
838
|
|
|
804
|
-
|
|
805
|
-
|
|
839
|
+
const label = document.querySelector('shade-input label') as HTMLLabelElement
|
|
840
|
+
expect(label.className).toContain('custom-label')
|
|
841
|
+
})
|
|
806
842
|
})
|
|
807
843
|
})
|
|
808
844
|
})
|