@furystack/shades-common-components 13.5.0 → 15.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 +109 -0
- package/README.md +3 -3
- package/esm/components/accordion/accordion-item.d.ts.map +1 -1
- package/esm/components/accordion/accordion-item.js +7 -10
- package/esm/components/accordion/accordion-item.js.map +1 -1
- package/esm/components/accordion/accordion.d.ts +7 -0
- package/esm/components/accordion/accordion.d.ts.map +1 -1
- package/esm/components/accordion/accordion.js +5 -2
- package/esm/components/accordion/accordion.js.map +1 -1
- package/esm/components/accordion/accordion.spec.js +91 -50
- package/esm/components/accordion/accordion.spec.js.map +1 -1
- package/esm/components/alert.js +1 -1
- package/esm/components/alert.js.map +1 -1
- package/esm/components/app-bar-link.js +1 -1
- package/esm/components/app-bar-link.js.map +1 -1
- package/esm/components/app-bar.js +1 -1
- package/esm/components/app-bar.js.map +1 -1
- package/esm/components/avatar.js +1 -1
- package/esm/components/avatar.js.map +1 -1
- package/esm/components/badge.js +1 -1
- package/esm/components/badge.js.map +1 -1
- package/esm/components/breadcrumb.js +1 -1
- package/esm/components/breadcrumb.js.map +1 -1
- package/esm/components/breadcrumb.spec.js +3 -3
- package/esm/components/breadcrumb.spec.js.map +1 -1
- package/esm/components/button-group.js +4 -4
- package/esm/components/button-group.js.map +1 -1
- package/esm/components/button.js +1 -1
- package/esm/components/button.js.map +1 -1
- package/esm/components/button.spec.js +1 -1
- package/esm/components/button.spec.js.map +1 -1
- package/esm/components/cache-view.js +1 -1
- package/esm/components/cache-view.js.map +1 -1
- package/esm/components/cache-view.spec.js +2 -2
- package/esm/components/cache-view.spec.js.map +1 -1
- package/esm/components/card.js +5 -5
- package/esm/components/card.js.map +1 -1
- package/esm/components/carousel.js +2 -2
- package/esm/components/carousel.js.map +1 -1
- package/esm/components/chip.d.ts.map +1 -1
- package/esm/components/chip.js +5 -3
- package/esm/components/chip.js.map +1 -1
- package/esm/components/chip.spec.js +42 -0
- package/esm/components/chip.spec.js.map +1 -1
- package/esm/components/circular-progress.d.ts +2 -4
- package/esm/components/circular-progress.d.ts.map +1 -1
- package/esm/components/circular-progress.js +3 -6
- package/esm/components/circular-progress.js.map +1 -1
- package/esm/components/circular-progress.spec.js +19 -14
- package/esm/components/circular-progress.spec.js.map +1 -1
- package/esm/components/command-palette/command-palette-input.js +1 -1
- package/esm/components/command-palette/command-palette-input.js.map +1 -1
- package/esm/components/command-palette/command-palette-suggestion-list.js +1 -1
- package/esm/components/command-palette/command-palette-suggestion-list.js.map +1 -1
- package/esm/components/command-palette/command-palette-suggestion-list.spec.js +1 -1
- package/esm/components/command-palette/command-palette-suggestion-list.spec.js.map +1 -1
- package/esm/components/command-palette/index.d.ts.map +1 -1
- package/esm/components/command-palette/index.js +15 -2
- package/esm/components/command-palette/index.js.map +1 -1
- package/esm/components/command-palette/index.spec.js +78 -33
- package/esm/components/command-palette/index.spec.js.map +1 -1
- package/esm/components/context-menu/context-menu-item.js +1 -1
- package/esm/components/context-menu/context-menu-item.js.map +1 -1
- package/esm/components/context-menu/context-menu.js +1 -1
- package/esm/components/context-menu/context-menu.js.map +1 -1
- package/esm/components/data-grid/body.js +1 -1
- package/esm/components/data-grid/body.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 +19 -3
- package/esm/components/data-grid/data-grid-row.js.map +1 -1
- package/esm/components/data-grid/data-grid.d.ts +12 -2
- package/esm/components/data-grid/data-grid.d.ts.map +1 -1
- package/esm/components/data-grid/data-grid.js +33 -13
- package/esm/components/data-grid/data-grid.js.map +1 -1
- package/esm/components/data-grid/data-grid.spec.js +170 -90
- package/esm/components/data-grid/data-grid.spec.js.map +1 -1
- package/esm/components/data-grid/filters/boolean-filter.d.ts +2 -2
- package/esm/components/data-grid/filters/boolean-filter.d.ts.map +1 -1
- package/esm/components/data-grid/filters/boolean-filter.js +4 -4
- package/esm/components/data-grid/filters/boolean-filter.js.map +1 -1
- package/esm/components/data-grid/filters/boolean-filter.spec.js +18 -17
- package/esm/components/data-grid/filters/boolean-filter.spec.js.map +1 -1
- package/esm/components/data-grid/filters/date-filter.d.ts +2 -2
- package/esm/components/data-grid/filters/date-filter.d.ts.map +1 -1
- package/esm/components/data-grid/filters/date-filter.js +6 -6
- package/esm/components/data-grid/filters/date-filter.js.map +1 -1
- package/esm/components/data-grid/filters/date-filter.spec.js +26 -21
- package/esm/components/data-grid/filters/date-filter.spec.js.map +1 -1
- package/esm/components/data-grid/filters/enum-filter.d.ts +2 -2
- package/esm/components/data-grid/filters/enum-filter.d.ts.map +1 -1
- package/esm/components/data-grid/filters/enum-filter.js +5 -5
- package/esm/components/data-grid/filters/enum-filter.js.map +1 -1
- package/esm/components/data-grid/filters/enum-filter.spec.js +21 -19
- package/esm/components/data-grid/filters/enum-filter.spec.js.map +1 -1
- package/esm/components/data-grid/filters/filter-dropdown.js +1 -1
- package/esm/components/data-grid/filters/filter-dropdown.js.map +1 -1
- package/esm/components/data-grid/filters/number-filter.d.ts +2 -2
- package/esm/components/data-grid/filters/number-filter.d.ts.map +1 -1
- package/esm/components/data-grid/filters/number-filter.js +5 -5
- package/esm/components/data-grid/filters/number-filter.js.map +1 -1
- package/esm/components/data-grid/filters/number-filter.spec.js +23 -21
- package/esm/components/data-grid/filters/number-filter.spec.js.map +1 -1
- package/esm/components/data-grid/filters/string-filter.d.ts +2 -2
- package/esm/components/data-grid/filters/string-filter.d.ts.map +1 -1
- package/esm/components/data-grid/filters/string-filter.js +5 -5
- package/esm/components/data-grid/filters/string-filter.js.map +1 -1
- package/esm/components/data-grid/filters/string-filter.spec.js +21 -19
- package/esm/components/data-grid/filters/string-filter.spec.js.map +1 -1
- package/esm/components/data-grid/footer.d.ts +2 -2
- package/esm/components/data-grid/footer.d.ts.map +1 -1
- package/esm/components/data-grid/footer.js +8 -13
- package/esm/components/data-grid/footer.js.map +1 -1
- package/esm/components/data-grid/footer.spec.js +38 -27
- package/esm/components/data-grid/footer.spec.js.map +1 -1
- package/esm/components/data-grid/header.d.ts +6 -6
- package/esm/components/data-grid/header.d.ts.map +1 -1
- package/esm/components/data-grid/header.js +16 -17
- package/esm/components/data-grid/header.js.map +1 -1
- package/esm/components/data-grid/header.spec.js +66 -60
- package/esm/components/data-grid/header.spec.js.map +1 -1
- package/esm/components/data-grid/selection-cell.d.ts.map +1 -1
- package/esm/components/data-grid/selection-cell.js +2 -2
- package/esm/components/data-grid/selection-cell.js.map +1 -1
- package/esm/components/dialog.d.ts +11 -0
- package/esm/components/dialog.d.ts.map +1 -1
- package/esm/components/dialog.js +3 -3
- package/esm/components/dialog.js.map +1 -1
- package/esm/components/dialog.spec.js +54 -2
- package/esm/components/dialog.spec.js.map +1 -1
- package/esm/components/divider.js +1 -1
- package/esm/components/divider.js.map +1 -1
- package/esm/components/drawer/drawer-toggle-button.js +1 -1
- package/esm/components/drawer/drawer-toggle-button.js.map +1 -1
- package/esm/components/drawer/index.js +1 -1
- package/esm/components/drawer/index.js.map +1 -1
- package/esm/components/dropdown.d.ts.map +1 -1
- package/esm/components/dropdown.js +2 -2
- package/esm/components/dropdown.js.map +1 -1
- package/esm/components/dropdown.spec.js +8 -0
- package/esm/components/dropdown.spec.js.map +1 -1
- package/esm/components/fab.js +1 -1
- package/esm/components/fab.js.map +1 -1
- package/esm/components/form.js +1 -1
- package/esm/components/form.js.map +1 -1
- package/esm/components/grid.js +1 -1
- package/esm/components/grid.js.map +1 -1
- package/esm/components/icons/icon.js +1 -1
- package/esm/components/icons/icon.js.map +1 -1
- package/esm/components/image.d.ts.map +1 -1
- package/esm/components/image.js +17 -8
- package/esm/components/image.js.map +1 -1
- package/esm/components/image.spec.js +60 -0
- package/esm/components/image.spec.js.map +1 -1
- package/esm/components/inputs/autocomplete.js +1 -1
- package/esm/components/inputs/autocomplete.js.map +1 -1
- package/esm/components/inputs/checkbox.d.ts.map +1 -1
- package/esm/components/inputs/checkbox.js +2 -1
- package/esm/components/inputs/checkbox.js.map +1 -1
- package/esm/components/inputs/checkbox.spec.js +1 -1
- package/esm/components/inputs/checkbox.spec.js.map +1 -1
- package/esm/components/inputs/input-number.js +1 -1
- package/esm/components/inputs/input-number.js.map +1 -1
- package/esm/components/inputs/input-number.spec.js +1 -1
- package/esm/components/inputs/input-number.spec.js.map +1 -1
- package/esm/components/inputs/input.js +1 -1
- package/esm/components/inputs/input.js.map +1 -1
- package/esm/components/inputs/input.spec.js +1 -1
- package/esm/components/inputs/input.spec.js.map +1 -1
- package/esm/components/inputs/radio-group.js +1 -1
- package/esm/components/inputs/radio-group.js.map +1 -1
- package/esm/components/inputs/radio-group.spec.js +1 -1
- package/esm/components/inputs/radio-group.spec.js.map +1 -1
- package/esm/components/inputs/radio.d.ts.map +1 -1
- package/esm/components/inputs/radio.js +2 -1
- package/esm/components/inputs/radio.js.map +1 -1
- package/esm/components/inputs/radio.spec.js +1 -1
- package/esm/components/inputs/radio.spec.js.map +1 -1
- package/esm/components/inputs/select.js +1 -1
- package/esm/components/inputs/select.js.map +1 -1
- package/esm/components/inputs/slider.d.ts.map +1 -1
- package/esm/components/inputs/slider.js +2 -1
- package/esm/components/inputs/slider.js.map +1 -1
- package/esm/components/inputs/switch.d.ts.map +1 -1
- package/esm/components/inputs/switch.js +2 -1
- package/esm/components/inputs/switch.js.map +1 -1
- package/esm/components/inputs/switch.spec.js +1 -1
- package/esm/components/inputs/switch.spec.js.map +1 -1
- package/esm/components/inputs/text-area.js +1 -1
- package/esm/components/inputs/text-area.js.map +1 -1
- package/esm/components/inputs/text-area.spec.js +1 -1
- package/esm/components/inputs/text-area.spec.js.map +1 -1
- package/esm/components/linear-progress.d.ts +2 -4
- package/esm/components/linear-progress.d.ts.map +1 -1
- package/esm/components/linear-progress.js +3 -6
- package/esm/components/linear-progress.js.map +1 -1
- package/esm/components/linear-progress.spec.js +21 -18
- package/esm/components/linear-progress.spec.js.map +1 -1
- package/esm/components/list/list-item.d.ts.map +1 -1
- package/esm/components/list/list-item.js +22 -6
- package/esm/components/list/list-item.js.map +1 -1
- package/esm/components/list/list.d.ts +7 -0
- package/esm/components/list/list.d.ts.map +1 -1
- package/esm/components/list/list.js +29 -9
- package/esm/components/list/list.js.map +1 -1
- package/esm/components/list/list.spec.js +117 -23
- package/esm/components/list/list.spec.js.map +1 -1
- package/esm/components/loader.js +1 -1
- package/esm/components/loader.js.map +1 -1
- package/esm/components/loader.spec.js +1 -1
- package/esm/components/loader.spec.js.map +1 -1
- package/esm/components/markdown/markdown-display.d.ts.map +1 -1
- package/esm/components/markdown/markdown-display.js +12 -2
- package/esm/components/markdown/markdown-display.js.map +1 -1
- package/esm/components/markdown/markdown-display.spec.js +98 -1
- package/esm/components/markdown/markdown-display.spec.js.map +1 -1
- package/esm/components/markdown/markdown-editor.js +1 -1
- package/esm/components/markdown/markdown-editor.js.map +1 -1
- package/esm/components/markdown/markdown-editor.spec.js +88 -1
- package/esm/components/markdown/markdown-editor.spec.js.map +1 -1
- package/esm/components/markdown/markdown-input.js +1 -1
- package/esm/components/markdown/markdown-input.js.map +1 -1
- package/esm/components/markdown/markdown-input.spec.js +1 -1
- package/esm/components/markdown/markdown-input.spec.js.map +1 -1
- package/esm/components/menu/menu.js +2 -2
- package/esm/components/menu/menu.js.map +1 -1
- package/esm/components/modal.d.ts +10 -0
- package/esm/components/modal.d.ts.map +1 -1
- package/esm/components/modal.js +25 -5
- package/esm/components/modal.js.map +1 -1
- package/esm/components/modal.spec.js +89 -4
- package/esm/components/modal.spec.js.map +1 -1
- package/esm/components/noty-list.js +2 -2
- package/esm/components/noty-list.js.map +1 -1
- package/esm/components/page-container/index.js +1 -1
- package/esm/components/page-container/index.js.map +1 -1
- package/esm/components/page-container/page-header.js +1 -1
- package/esm/components/page-container/page-header.js.map +1 -1
- package/esm/components/page-layout/index.js +2 -2
- package/esm/components/page-layout/index.js.map +1 -1
- package/esm/components/page-layout/index.spec.js +14 -0
- package/esm/components/page-layout/index.spec.js.map +1 -1
- package/esm/components/pagination.js +1 -1
- package/esm/components/pagination.js.map +1 -1
- package/esm/components/paper.js +1 -1
- package/esm/components/paper.js.map +1 -1
- package/esm/components/rating.d.ts.map +1 -1
- package/esm/components/rating.js +29 -22
- package/esm/components/rating.js.map +1 -1
- package/esm/components/rating.spec.js +152 -5
- package/esm/components/rating.spec.js.map +1 -1
- package/esm/components/result.js +1 -1
- package/esm/components/result.js.map +1 -1
- package/esm/components/skeleton.js +1 -1
- package/esm/components/skeleton.js.map +1 -1
- package/esm/components/suggest/index.d.ts.map +1 -1
- package/esm/components/suggest/index.js +15 -2
- package/esm/components/suggest/index.js.map +1 -1
- package/esm/components/suggest/index.spec.js +99 -44
- package/esm/components/suggest/index.spec.js.map +1 -1
- package/esm/components/suggest/suggest-input.js +1 -1
- package/esm/components/suggest/suggest-input.js.map +1 -1
- package/esm/components/suggest/suggest-input.spec.js +1 -1
- package/esm/components/suggest/suggest-input.spec.js.map +1 -1
- package/esm/components/suggest/suggestion-list.js +1 -1
- package/esm/components/suggest/suggestion-list.js.map +1 -1
- package/esm/components/suggest/suggestion-list.spec.js +1 -1
- package/esm/components/suggest/suggestion-list.spec.js.map +1 -1
- package/esm/components/tabs.d.ts.map +1 -1
- package/esm/components/tabs.js +6 -2
- package/esm/components/tabs.js.map +1 -1
- package/esm/components/timeline.js +2 -2
- package/esm/components/timeline.js.map +1 -1
- package/esm/components/tooltip.js +1 -1
- package/esm/components/tooltip.js.map +1 -1
- package/esm/components/tree/tree-item.d.ts.map +1 -1
- package/esm/components/tree/tree-item.js +19 -6
- package/esm/components/tree/tree-item.js.map +1 -1
- package/esm/components/tree/tree.d.ts +7 -0
- package/esm/components/tree/tree.d.ts.map +1 -1
- package/esm/components/tree/tree.js +13 -4
- package/esm/components/tree/tree.js.map +1 -1
- package/esm/components/tree/tree.spec.js +64 -2
- package/esm/components/tree/tree.spec.js.map +1 -1
- package/esm/components/typography.js +1 -1
- package/esm/components/typography.js.map +1 -1
- package/esm/components/wizard/index.js +1 -1
- package/esm/components/wizard/index.js.map +1 -1
- package/esm/components/wizard/index.spec.js +3 -3
- package/esm/components/wizard/index.spec.js.map +1 -1
- package/esm/services/collection-service.d.ts +9 -0
- package/esm/services/collection-service.d.ts.map +1 -1
- package/esm/services/collection-service.js +33 -11
- package/esm/services/collection-service.js.map +1 -1
- package/esm/services/collection-service.spec.js +33 -24
- package/esm/services/collection-service.spec.js.map +1 -1
- package/esm/services/css-variable-theme.d.ts +7 -0
- package/esm/services/css-variable-theme.d.ts.map +1 -1
- package/esm/services/css-variable-theme.js +23 -0
- package/esm/services/css-variable-theme.js.map +1 -1
- package/esm/services/css-variable-theme.spec.js +1 -0
- package/esm/services/css-variable-theme.spec.js.map +1 -1
- package/esm/services/list-service.d.ts +9 -0
- package/esm/services/list-service.d.ts.map +1 -1
- package/esm/services/list-service.js +13 -13
- package/esm/services/list-service.js.map +1 -1
- package/esm/services/list-service.spec.js +13 -33
- package/esm/services/list-service.spec.js.map +1 -1
- package/esm/services/theme-provider-service.d.ts +3 -0
- 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.map +1 -1
- package/esm/services/tree-service.js +5 -9
- package/esm/services/tree-service.js.map +1 -1
- package/esm/services/tree-service.spec.js +12 -9
- package/esm/services/tree-service.spec.js.map +1 -1
- package/esm/themes/architect-theme.d.ts +1 -0
- package/esm/themes/architect-theme.d.ts.map +1 -1
- package/esm/themes/architect-theme.js +1 -0
- package/esm/themes/architect-theme.js.map +1 -1
- package/esm/themes/auditore-theme.d.ts +1 -0
- package/esm/themes/auditore-theme.d.ts.map +1 -1
- package/esm/themes/auditore-theme.js +1 -0
- package/esm/themes/auditore-theme.js.map +1 -1
- package/esm/themes/black-mesa-theme.d.ts +1 -0
- package/esm/themes/black-mesa-theme.d.ts.map +1 -1
- package/esm/themes/black-mesa-theme.js +1 -0
- package/esm/themes/black-mesa-theme.js.map +1 -1
- package/esm/themes/chieftain-theme.d.ts +1 -0
- package/esm/themes/chieftain-theme.d.ts.map +1 -1
- package/esm/themes/chieftain-theme.js +1 -0
- package/esm/themes/chieftain-theme.js.map +1 -1
- package/esm/themes/default-dark-theme.d.ts +1 -0
- package/esm/themes/default-dark-theme.d.ts.map +1 -1
- package/esm/themes/default-dark-theme.js +1 -0
- package/esm/themes/default-dark-theme.js.map +1 -1
- package/esm/themes/default-light-theme.d.ts +1 -0
- package/esm/themes/default-light-theme.d.ts.map +1 -1
- package/esm/themes/default-light-theme.js +1 -0
- package/esm/themes/default-light-theme.js.map +1 -1
- package/esm/themes/dragonborn-theme.d.ts +1 -0
- package/esm/themes/dragonborn-theme.d.ts.map +1 -1
- package/esm/themes/dragonborn-theme.js +1 -0
- package/esm/themes/dragonborn-theme.js.map +1 -1
- package/esm/themes/hawkins-theme.d.ts +1 -0
- package/esm/themes/hawkins-theme.d.ts.map +1 -1
- package/esm/themes/hawkins-theme.js +1 -0
- package/esm/themes/hawkins-theme.js.map +1 -1
- package/esm/themes/jedi-theme.d.ts +1 -0
- package/esm/themes/jedi-theme.d.ts.map +1 -1
- package/esm/themes/jedi-theme.js +1 -0
- package/esm/themes/jedi-theme.js.map +1 -1
- package/esm/themes/neon-runner-theme.d.ts +1 -0
- package/esm/themes/neon-runner-theme.d.ts.map +1 -1
- package/esm/themes/neon-runner-theme.js +1 -0
- package/esm/themes/neon-runner-theme.js.map +1 -1
- package/esm/themes/paladin-theme.d.ts +1 -0
- package/esm/themes/paladin-theme.d.ts.map +1 -1
- package/esm/themes/paladin-theme.js +1 -0
- package/esm/themes/paladin-theme.js.map +1 -1
- package/esm/themes/plumber-theme.d.ts +1 -0
- package/esm/themes/plumber-theme.d.ts.map +1 -1
- package/esm/themes/plumber-theme.js +1 -0
- package/esm/themes/plumber-theme.js.map +1 -1
- package/esm/themes/replicant-theme.d.ts +1 -0
- package/esm/themes/replicant-theme.d.ts.map +1 -1
- package/esm/themes/replicant-theme.js +1 -0
- package/esm/themes/replicant-theme.js.map +1 -1
- package/esm/themes/sandworm-theme.d.ts +1 -0
- package/esm/themes/sandworm-theme.d.ts.map +1 -1
- package/esm/themes/sandworm-theme.js +1 -0
- package/esm/themes/sandworm-theme.js.map +1 -1
- package/esm/themes/shadow-broker-theme.d.ts +1 -0
- package/esm/themes/shadow-broker-theme.d.ts.map +1 -1
- package/esm/themes/shadow-broker-theme.js +1 -0
- package/esm/themes/shadow-broker-theme.js.map +1 -1
- package/esm/themes/sith-theme.d.ts +1 -0
- package/esm/themes/sith-theme.d.ts.map +1 -1
- package/esm/themes/sith-theme.js +1 -0
- package/esm/themes/sith-theme.js.map +1 -1
- package/esm/themes/vault-dweller-theme.d.ts +1 -0
- package/esm/themes/vault-dweller-theme.d.ts.map +1 -1
- package/esm/themes/vault-dweller-theme.js +1 -0
- package/esm/themes/vault-dweller-theme.js.map +1 -1
- package/esm/themes/wild-hunt-theme.d.ts +1 -0
- package/esm/themes/wild-hunt-theme.d.ts.map +1 -1
- package/esm/themes/wild-hunt-theme.js +1 -0
- package/esm/themes/wild-hunt-theme.js.map +1 -1
- package/esm/themes/xenomorph-theme.d.ts +1 -0
- package/esm/themes/xenomorph-theme.d.ts.map +1 -1
- package/esm/themes/xenomorph-theme.js +1 -0
- package/esm/themes/xenomorph-theme.js.map +1 -1
- package/package.json +3 -3
- package/src/components/accordion/accordion-item.tsx +10 -15
- package/src/components/accordion/accordion.spec.tsx +134 -79
- package/src/components/accordion/accordion.tsx +14 -2
- package/src/components/alert.tsx +1 -1
- package/src/components/app-bar-link.tsx +1 -1
- package/src/components/app-bar.tsx +1 -1
- package/src/components/avatar.tsx +1 -1
- package/src/components/badge.tsx +1 -1
- package/src/components/breadcrumb.spec.tsx +3 -3
- package/src/components/breadcrumb.tsx +1 -1
- package/src/components/button-group.tsx +4 -4
- package/src/components/button.spec.tsx +1 -1
- package/src/components/button.tsx +1 -1
- package/src/components/cache-view.spec.tsx +2 -2
- package/src/components/cache-view.tsx +3 -3
- package/src/components/card.tsx +5 -5
- package/src/components/carousel.tsx +2 -2
- package/src/components/chip.spec.tsx +64 -0
- package/src/components/chip.tsx +5 -2
- package/src/components/circular-progress.spec.tsx +20 -14
- package/src/components/circular-progress.tsx +5 -11
- package/src/components/command-palette/command-palette-input.tsx +1 -1
- package/src/components/command-palette/command-palette-suggestion-list.spec.tsx +1 -1
- package/src/components/command-palette/command-palette-suggestion-list.tsx +1 -1
- package/src/components/command-palette/index.spec.tsx +95 -33
- package/src/components/command-palette/index.tsx +16 -4
- package/src/components/context-menu/context-menu-item.tsx +1 -1
- package/src/components/context-menu/context-menu.tsx +1 -1
- package/src/components/data-grid/body.tsx +1 -1
- package/src/components/data-grid/data-grid-row.tsx +21 -3
- package/src/components/data-grid/data-grid.spec.tsx +246 -92
- package/src/components/data-grid/data-grid.tsx +52 -21
- package/src/components/data-grid/filters/boolean-filter.spec.tsx +29 -18
- package/src/components/data-grid/filters/boolean-filter.tsx +6 -6
- package/src/components/data-grid/filters/date-filter.spec.tsx +35 -22
- package/src/components/data-grid/filters/date-filter.tsx +8 -8
- package/src/components/data-grid/filters/enum-filter.spec.tsx +35 -20
- package/src/components/data-grid/filters/enum-filter.tsx +7 -7
- package/src/components/data-grid/filters/filter-dropdown.tsx +1 -1
- package/src/components/data-grid/filters/number-filter.spec.tsx +32 -22
- package/src/components/data-grid/filters/number-filter.tsx +7 -7
- package/src/components/data-grid/filters/string-filter.spec.tsx +32 -20
- package/src/components/data-grid/filters/string-filter.tsx +7 -7
- package/src/components/data-grid/footer.spec.tsx +79 -31
- package/src/components/data-grid/footer.tsx +10 -15
- package/src/components/data-grid/header.spec.tsx +152 -68
- package/src/components/data-grid/header.tsx +64 -27
- package/src/components/data-grid/selection-cell.tsx +2 -1
- package/src/components/dialog.spec.tsx +77 -2
- package/src/components/dialog.tsx +15 -2
- package/src/components/divider.tsx +1 -1
- package/src/components/drawer/drawer-toggle-button.tsx +1 -1
- package/src/components/drawer/index.tsx +1 -1
- package/src/components/dropdown.spec.tsx +9 -0
- package/src/components/dropdown.tsx +2 -1
- package/src/components/fab.tsx +1 -1
- package/src/components/form.tsx +1 -1
- package/src/components/grid.tsx +1 -1
- package/src/components/icons/icon.tsx +1 -1
- package/src/components/image.spec.tsx +82 -0
- package/src/components/image.tsx +18 -9
- package/src/components/inputs/autocomplete.tsx +1 -1
- package/src/components/inputs/checkbox.spec.tsx +1 -1
- package/src/components/inputs/checkbox.tsx +2 -1
- package/src/components/inputs/input-number.spec.tsx +1 -1
- package/src/components/inputs/input-number.tsx +1 -1
- package/src/components/inputs/input.spec.tsx +1 -1
- package/src/components/inputs/input.tsx +1 -1
- package/src/components/inputs/radio-group.spec.tsx +1 -1
- package/src/components/inputs/radio-group.tsx +1 -1
- package/src/components/inputs/radio.spec.tsx +1 -1
- package/src/components/inputs/radio.tsx +2 -1
- package/src/components/inputs/select.tsx +1 -1
- package/src/components/inputs/slider.tsx +2 -1
- package/src/components/inputs/switch.spec.tsx +1 -1
- package/src/components/inputs/switch.tsx +2 -1
- package/src/components/inputs/text-area.spec.tsx +1 -1
- package/src/components/inputs/text-area.tsx +1 -1
- package/src/components/linear-progress.spec.tsx +22 -18
- package/src/components/linear-progress.tsx +5 -11
- package/src/components/list/list-item.tsx +23 -5
- package/src/components/list/list.spec.tsx +165 -32
- package/src/components/list/list.tsx +38 -11
- package/src/components/loader.spec.tsx +1 -1
- package/src/components/loader.tsx +1 -1
- package/src/components/markdown/markdown-display.spec.tsx +133 -1
- package/src/components/markdown/markdown-display.tsx +13 -2
- package/src/components/markdown/markdown-editor.spec.tsx +124 -1
- package/src/components/markdown/markdown-editor.tsx +1 -1
- package/src/components/markdown/markdown-input.spec.tsx +1 -1
- package/src/components/markdown/markdown-input.tsx +1 -1
- package/src/components/menu/menu.tsx +2 -2
- package/src/components/modal.spec.tsx +127 -4
- package/src/components/modal.tsx +42 -4
- package/src/components/noty-list.tsx +2 -2
- package/src/components/page-container/index.tsx +1 -1
- package/src/components/page-container/page-header.tsx +1 -1
- package/src/components/page-layout/index.spec.tsx +20 -0
- package/src/components/page-layout/index.tsx +2 -2
- package/src/components/pagination.tsx +1 -1
- package/src/components/paper.tsx +1 -1
- package/src/components/rating.spec.tsx +200 -5
- package/src/components/rating.tsx +29 -23
- package/src/components/result.tsx +1 -1
- package/src/components/skeleton.tsx +1 -1
- package/src/components/suggest/index.spec.tsx +148 -44
- package/src/components/suggest/index.tsx +16 -3
- package/src/components/suggest/suggest-input.spec.tsx +1 -1
- package/src/components/suggest/suggest-input.tsx +1 -1
- package/src/components/suggest/suggestion-list.spec.tsx +1 -1
- package/src/components/suggest/suggestion-list.tsx +1 -1
- package/src/components/tabs.tsx +6 -2
- package/src/components/timeline.tsx +2 -2
- package/src/components/tooltip.tsx +1 -1
- package/src/components/tree/tree-item.tsx +20 -5
- package/src/components/tree/tree.spec.tsx +101 -2
- package/src/components/tree/tree.tsx +22 -4
- package/src/components/typography.tsx +1 -1
- package/src/components/wizard/index.spec.tsx +3 -3
- package/src/components/wizard/index.tsx +1 -1
- package/src/services/collection-service.spec.ts +33 -24
- package/src/services/collection-service.ts +35 -13
- package/src/services/css-variable-theme.spec.ts +1 -0
- package/src/services/css-variable-theme.ts +25 -0
- package/src/services/list-service.spec.ts +13 -42
- package/src/services/list-service.ts +15 -13
- package/src/services/theme-provider-service.ts +2 -0
- package/src/services/tree-service.spec.ts +12 -9
- package/src/services/tree-service.ts +5 -8
- package/src/themes/architect-theme.ts +1 -0
- package/src/themes/auditore-theme.ts +1 -0
- package/src/themes/black-mesa-theme.ts +1 -0
- package/src/themes/chieftain-theme.ts +1 -0
- package/src/themes/default-dark-theme.ts +1 -0
- package/src/themes/default-light-theme.ts +1 -0
- package/src/themes/dragonborn-theme.ts +1 -0
- package/src/themes/hawkins-theme.ts +1 -0
- package/src/themes/jedi-theme.ts +1 -0
- package/src/themes/neon-runner-theme.ts +1 -0
- package/src/themes/paladin-theme.ts +1 -0
- package/src/themes/plumber-theme.ts +1 -0
- package/src/themes/replicant-theme.ts +1 -0
- package/src/themes/sandworm-theme.ts +1 -0
- package/src/themes/shadow-broker-theme.ts +1 -0
- package/src/themes/sith-theme.ts +1 -0
- package/src/themes/vault-dweller-theme.ts +1 -0
- package/src/themes/wild-hunt-theme.ts +1 -0
- package/src/themes/xenomorph-theme.ts +1 -0
|
@@ -76,7 +76,7 @@ describe('Button', () => {
|
|
|
76
76
|
const root = document.getElementById('root')!
|
|
77
77
|
|
|
78
78
|
const TestComponent = Shade<{ variant?: 'contained' | 'outlined' }>({
|
|
79
|
-
|
|
79
|
+
customElementName: 'button-test-variant-wrapper',
|
|
80
80
|
render: ({ props }) => <Button variant={props.variant}>Test</Button>,
|
|
81
81
|
})
|
|
82
82
|
|
|
@@ -7,12 +7,12 @@ import { describe, expect, it, vi } from 'vitest'
|
|
|
7
7
|
import { CacheView } from './cache-view.js'
|
|
8
8
|
|
|
9
9
|
const TestContent = Shade<{ data: CacheWithValue<string> }>({
|
|
10
|
-
|
|
10
|
+
customElementName: 'test-cache-content',
|
|
11
11
|
render: ({ props }) => <span className="content-value">{props.data.value}</span>,
|
|
12
12
|
})
|
|
13
13
|
|
|
14
14
|
const TestContentWithLabel = Shade<{ data: CacheWithValue<string>; label: string }>({
|
|
15
|
-
|
|
15
|
+
customElementName: 'test-cache-content-with-label',
|
|
16
16
|
render: ({ props }) => (
|
|
17
17
|
<span className="content-value">
|
|
18
18
|
{props.label}: {props.data.value}
|
|
@@ -58,7 +58,7 @@ const getDefaultErrorUi = (error: unknown, retry: () => void): JSX.Element =>
|
|
|
58
58
|
* @example
|
|
59
59
|
* ```tsx
|
|
60
60
|
* const MyContent = Shade<{ data: CacheWithValue<User> }>({
|
|
61
|
-
*
|
|
61
|
+
* customElementName: 'my-content',
|
|
62
62
|
* render: ({ props }) => <div>{props.data.value.name}</div>,
|
|
63
63
|
* })
|
|
64
64
|
*
|
|
@@ -66,7 +66,7 @@ const getDefaultErrorUi = (error: unknown, retry: () => void): JSX.Element =>
|
|
|
66
66
|
*
|
|
67
67
|
* // With custom content props
|
|
68
68
|
* const MyContentWithLabel = Shade<{ data: CacheWithValue<User>; label: string }>({
|
|
69
|
-
*
|
|
69
|
+
* customElementName: 'my-content-with-label',
|
|
70
70
|
* render: ({ props }) => <div>{props.label}: {props.data.value.name}</div>,
|
|
71
71
|
* })
|
|
72
72
|
*
|
|
@@ -85,7 +85,7 @@ type InternalCacheViewProps = {
|
|
|
85
85
|
}
|
|
86
86
|
|
|
87
87
|
export const CacheView = Shade<InternalCacheViewProps>({
|
|
88
|
-
|
|
88
|
+
customElementName: 'shade-cache-view',
|
|
89
89
|
css: {
|
|
90
90
|
fontFamily: cssVariableTheme.typography.fontFamily,
|
|
91
91
|
},
|
package/src/components/card.tsx
CHANGED
|
@@ -21,7 +21,7 @@ export type CardProps = PartialElement<HTMLElement> & {
|
|
|
21
21
|
* Compose with CardHeader, CardContent, CardMedia, and CardActions for structured layouts.
|
|
22
22
|
*/
|
|
23
23
|
export const Card = Shade<CardProps>({
|
|
24
|
-
|
|
24
|
+
customElementName: 'shade-card',
|
|
25
25
|
css: {
|
|
26
26
|
display: 'flex',
|
|
27
27
|
fontFamily: cssVariableTheme.typography.fontFamily,
|
|
@@ -102,7 +102,7 @@ export type CardHeaderProps = PartialElement<HTMLElement> & {
|
|
|
102
102
|
* Displays a title, optional subheader, avatar, and action area at the top of a Card.
|
|
103
103
|
*/
|
|
104
104
|
export const CardHeader = Shade<CardHeaderProps>({
|
|
105
|
-
|
|
105
|
+
customElementName: 'shade-card-header',
|
|
106
106
|
css: {
|
|
107
107
|
display: 'flex',
|
|
108
108
|
alignItems: 'center',
|
|
@@ -174,7 +174,7 @@ export type CardContentProps = PartialElement<HTMLElement>
|
|
|
174
174
|
* Provides padded content area within a Card.
|
|
175
175
|
*/
|
|
176
176
|
export const CardContent = Shade<CardContentProps>({
|
|
177
|
-
|
|
177
|
+
customElementName: 'shade-card-content',
|
|
178
178
|
css: {
|
|
179
179
|
display: 'block',
|
|
180
180
|
padding: `0 ${cssVariableTheme.spacing.md} ${cssVariableTheme.spacing.md}`,
|
|
@@ -208,7 +208,7 @@ export type CardMediaProps = PartialElement<HTMLElement> & {
|
|
|
208
208
|
* Displays an image or media element within a Card.
|
|
209
209
|
*/
|
|
210
210
|
export const CardMedia = Shade<CardMediaProps>({
|
|
211
|
-
|
|
211
|
+
customElementName: 'shade-card-media',
|
|
212
212
|
css: {
|
|
213
213
|
display: 'block',
|
|
214
214
|
overflow: 'hidden',
|
|
@@ -242,7 +242,7 @@ export type CardActionsProps = PartialElement<HTMLElement> & {
|
|
|
242
242
|
* Provides a row of actions (buttons, links) at the bottom of a Card.
|
|
243
243
|
*/
|
|
244
244
|
export const CardActions = Shade<CardActionsProps>({
|
|
245
|
-
|
|
245
|
+
customElementName: 'shade-card-actions',
|
|
246
246
|
css: {
|
|
247
247
|
display: 'flex',
|
|
248
248
|
alignItems: 'center',
|
|
@@ -34,7 +34,7 @@ const TRANSITION_MS = 400
|
|
|
34
34
|
* keyboard navigation, and swipe gestures.
|
|
35
35
|
*/
|
|
36
36
|
export const Carousel = Shade<CarouselProps>({
|
|
37
|
-
|
|
37
|
+
customElementName: 'shade-carousel',
|
|
38
38
|
css: {
|
|
39
39
|
display: 'block',
|
|
40
40
|
position: 'relative',
|
|
@@ -200,7 +200,7 @@ export const Carousel = Shade<CarouselProps>({
|
|
|
200
200
|
'data-vertical': vertical ? '' : undefined,
|
|
201
201
|
role: 'region',
|
|
202
202
|
'aria-roledescription': 'carousel',
|
|
203
|
-
|
|
203
|
+
tabIndex: 0,
|
|
204
204
|
...(style ? { style: style as Record<string, string> } : {}),
|
|
205
205
|
})
|
|
206
206
|
|
|
@@ -140,6 +140,70 @@ describe('Chip', () => {
|
|
|
140
140
|
expect(chip.hasAttribute('data-clickable')).toBe(true)
|
|
141
141
|
})
|
|
142
142
|
|
|
143
|
+
it('should be focusable when clickable', async () => {
|
|
144
|
+
const el = (
|
|
145
|
+
<div>
|
|
146
|
+
<Chip clickable>Clickable</Chip>
|
|
147
|
+
</div>
|
|
148
|
+
)
|
|
149
|
+
const chip = el.firstElementChild as JSX.Element
|
|
150
|
+
chip.updateComponent()
|
|
151
|
+
await flushUpdates()
|
|
152
|
+
expect(chip.getAttribute('tabindex')).toBe('0')
|
|
153
|
+
})
|
|
154
|
+
|
|
155
|
+
it('should be focusable when onclick handler is provided', async () => {
|
|
156
|
+
const el = (
|
|
157
|
+
<div>
|
|
158
|
+
<Chip onclick={() => {}}>Click Handler</Chip>
|
|
159
|
+
</div>
|
|
160
|
+
)
|
|
161
|
+
const chip = el.firstElementChild as JSX.Element
|
|
162
|
+
chip.updateComponent()
|
|
163
|
+
await flushUpdates()
|
|
164
|
+
expect(chip.getAttribute('tabindex')).toBe('0')
|
|
165
|
+
})
|
|
166
|
+
|
|
167
|
+
it('should not be focusable when clickable but disabled', async () => {
|
|
168
|
+
const el = (
|
|
169
|
+
<div>
|
|
170
|
+
<Chip clickable disabled>
|
|
171
|
+
Disabled Clickable
|
|
172
|
+
</Chip>
|
|
173
|
+
</div>
|
|
174
|
+
)
|
|
175
|
+
const chip = el.firstElementChild as JSX.Element
|
|
176
|
+
chip.updateComponent()
|
|
177
|
+
await flushUpdates()
|
|
178
|
+
expect(chip.hasAttribute('tabindex')).toBe(false)
|
|
179
|
+
})
|
|
180
|
+
|
|
181
|
+
it('should not be focusable when not clickable', async () => {
|
|
182
|
+
const el = (
|
|
183
|
+
<div>
|
|
184
|
+
<Chip>Not Clickable</Chip>
|
|
185
|
+
</div>
|
|
186
|
+
)
|
|
187
|
+
const chip = el.firstElementChild as JSX.Element
|
|
188
|
+
chip.updateComponent()
|
|
189
|
+
await flushUpdates()
|
|
190
|
+
expect(chip.hasAttribute('tabindex')).toBe(false)
|
|
191
|
+
})
|
|
192
|
+
|
|
193
|
+
it('should have a focusable delete button', async () => {
|
|
194
|
+
const onDelete = vi.fn()
|
|
195
|
+
const el = (
|
|
196
|
+
<div>
|
|
197
|
+
<Chip onDelete={onDelete}>Deletable</Chip>
|
|
198
|
+
</div>
|
|
199
|
+
)
|
|
200
|
+
const chip = el.firstElementChild as JSX.Element
|
|
201
|
+
chip.updateComponent()
|
|
202
|
+
await flushUpdates()
|
|
203
|
+
const deleteBtn = chip.querySelector('.chip-delete') as HTMLElement
|
|
204
|
+
expect(deleteBtn.getAttribute('tabindex')).toBe('0')
|
|
205
|
+
})
|
|
206
|
+
|
|
143
207
|
it('should set CSS custom properties for palette color', async () => {
|
|
144
208
|
const el = (
|
|
145
209
|
<div>
|
package/src/components/chip.tsx
CHANGED
|
@@ -25,7 +25,7 @@ const defaultColors = {
|
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
export const Chip = Shade<ChipProps>({
|
|
28
|
-
|
|
28
|
+
customElementName: 'shade-chip',
|
|
29
29
|
css: {
|
|
30
30
|
display: 'inline-flex',
|
|
31
31
|
alignItems: 'center',
|
|
@@ -152,11 +152,13 @@ export const Chip = Shade<ChipProps>({
|
|
|
152
152
|
const { variant, color, size, disabled, clickable, onDelete, style, ...rest } = props
|
|
153
153
|
|
|
154
154
|
const colors = color ? paletteFullColors[color] : defaultColors
|
|
155
|
+
const isClickable = clickable || rest.onclick
|
|
155
156
|
useHostProps({
|
|
156
157
|
'data-variant': variant || undefined,
|
|
157
158
|
'data-size': size === 'small' ? 'small' : undefined,
|
|
158
159
|
'data-disabled': disabled ? '' : undefined,
|
|
159
|
-
'data-clickable':
|
|
160
|
+
'data-clickable': isClickable ? '' : undefined,
|
|
161
|
+
tabIndex: isClickable && !disabled ? 0 : undefined,
|
|
160
162
|
style: {
|
|
161
163
|
'--chip-color-main': colors.main,
|
|
162
164
|
'--chip-color-main-contrast': colors.mainContrast,
|
|
@@ -174,6 +176,7 @@ export const Chip = Shade<ChipProps>({
|
|
|
174
176
|
<span
|
|
175
177
|
className="chip-delete"
|
|
176
178
|
role="button"
|
|
179
|
+
tabIndex={0}
|
|
177
180
|
onclick={(ev: MouseEvent) => {
|
|
178
181
|
ev.stopPropagation()
|
|
179
182
|
onDelete(ev)
|
|
@@ -1,10 +1,18 @@
|
|
|
1
1
|
import { Injector } from '@furystack/inject'
|
|
2
|
-
import { createComponent, initializeShadeRoot } from '@furystack/shades'
|
|
2
|
+
import { createComponent, initializeShadeRoot, Shade } from '@furystack/shades'
|
|
3
3
|
import { ObservableValue, 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 { CircularProgress } from './circular-progress.js'
|
|
7
7
|
|
|
8
|
+
const CircularWrapper = Shade<{ obs: ObservableValue<number> }>({
|
|
9
|
+
customElementName: 'test-circular-progress-wrapper',
|
|
10
|
+
render: ({ props, useObservable }) => {
|
|
11
|
+
const [value] = useObservable('value', props.obs)
|
|
12
|
+
return <CircularProgress variant="determinate" value={value} />
|
|
13
|
+
},
|
|
14
|
+
})
|
|
15
|
+
|
|
8
16
|
describe('CircularProgress', () => {
|
|
9
17
|
let originalAnimate: typeof Element.prototype.animate
|
|
10
18
|
|
|
@@ -35,7 +43,7 @@ describe('CircularProgress', () => {
|
|
|
35
43
|
vi.restoreAllMocks()
|
|
36
44
|
})
|
|
37
45
|
|
|
38
|
-
it('should render
|
|
46
|
+
it('should render as custom element', async () => {
|
|
39
47
|
await usingAsync(new Injector(), async (injector) => {
|
|
40
48
|
const rootElement = document.getElementById('root') as HTMLDivElement
|
|
41
49
|
|
|
@@ -147,12 +155,11 @@ describe('CircularProgress', () => {
|
|
|
147
155
|
it('should set aria-valuenow for determinate variant', async () => {
|
|
148
156
|
await usingAsync(new Injector(), async (injector) => {
|
|
149
157
|
const rootElement = document.getElementById('root') as HTMLDivElement
|
|
150
|
-
const value = new ObservableValue(50)
|
|
151
158
|
|
|
152
159
|
initializeShadeRoot({
|
|
153
160
|
injector,
|
|
154
161
|
rootElement,
|
|
155
|
-
jsxElement: <CircularProgress variant="determinate" value={
|
|
162
|
+
jsxElement: <CircularProgress variant="determinate" value={50} />,
|
|
156
163
|
})
|
|
157
164
|
|
|
158
165
|
await sleepAsync(50)
|
|
@@ -167,12 +174,11 @@ describe('CircularProgress', () => {
|
|
|
167
174
|
it('should clamp value to 0-100 range', async () => {
|
|
168
175
|
await usingAsync(new Injector(), async (injector) => {
|
|
169
176
|
const rootElement = document.getElementById('root') as HTMLDivElement
|
|
170
|
-
const value = new ObservableValue(150)
|
|
171
177
|
|
|
172
178
|
initializeShadeRoot({
|
|
173
179
|
injector,
|
|
174
180
|
rootElement,
|
|
175
|
-
jsxElement: <CircularProgress variant="determinate" value={
|
|
181
|
+
jsxElement: <CircularProgress variant="determinate" value={150} />,
|
|
176
182
|
})
|
|
177
183
|
|
|
178
184
|
await sleepAsync(50)
|
|
@@ -182,15 +188,15 @@ describe('CircularProgress', () => {
|
|
|
182
188
|
})
|
|
183
189
|
})
|
|
184
190
|
|
|
185
|
-
it('should update stroke-dashoffset when
|
|
191
|
+
it('should update stroke-dashoffset when value prop changes', async () => {
|
|
186
192
|
await usingAsync(new Injector(), async (injector) => {
|
|
187
193
|
const rootElement = document.getElementById('root') as HTMLDivElement
|
|
188
|
-
const
|
|
194
|
+
const obs = new ObservableValue(0)
|
|
189
195
|
|
|
190
196
|
initializeShadeRoot({
|
|
191
197
|
injector,
|
|
192
198
|
rootElement,
|
|
193
|
-
jsxElement: <
|
|
199
|
+
jsxElement: <CircularWrapper obs={obs} />,
|
|
194
200
|
})
|
|
195
201
|
|
|
196
202
|
await sleepAsync(50)
|
|
@@ -198,7 +204,7 @@ describe('CircularProgress', () => {
|
|
|
198
204
|
const circle = document.querySelector('shade-circular-progress .progress-circle') as SVGCircleElement
|
|
199
205
|
const initialOffset = circle.style.strokeDashoffset
|
|
200
206
|
|
|
201
|
-
|
|
207
|
+
obs.setValue(75)
|
|
202
208
|
await sleepAsync(50)
|
|
203
209
|
|
|
204
210
|
const updatedOffset = circle.style.strokeDashoffset
|
|
@@ -206,15 +212,15 @@ describe('CircularProgress', () => {
|
|
|
206
212
|
})
|
|
207
213
|
})
|
|
208
214
|
|
|
209
|
-
it('should update aria-valuenow when
|
|
215
|
+
it('should update aria-valuenow when value prop changes', async () => {
|
|
210
216
|
await usingAsync(new Injector(), async (injector) => {
|
|
211
217
|
const rootElement = document.getElementById('root') as HTMLDivElement
|
|
212
|
-
const
|
|
218
|
+
const obs = new ObservableValue(20)
|
|
213
219
|
|
|
214
220
|
initializeShadeRoot({
|
|
215
221
|
injector,
|
|
216
222
|
rootElement,
|
|
217
|
-
jsxElement: <
|
|
223
|
+
jsxElement: <CircularWrapper obs={obs} />,
|
|
218
224
|
})
|
|
219
225
|
|
|
220
226
|
await sleepAsync(50)
|
|
@@ -222,7 +228,7 @@ describe('CircularProgress', () => {
|
|
|
222
228
|
const el = document.querySelector('shade-circular-progress') as HTMLElement
|
|
223
229
|
expect(el.getAttribute('aria-valuenow')).toBe('20')
|
|
224
230
|
|
|
225
|
-
|
|
231
|
+
obs.setValue(85)
|
|
226
232
|
await sleepAsync(50)
|
|
227
233
|
|
|
228
234
|
expect(el.getAttribute('aria-valuenow')).toBe('85')
|
|
@@ -1,15 +1,13 @@
|
|
|
1
1
|
import { Shade, createComponent } from '@furystack/shades'
|
|
2
|
-
import type { ObservableValue } from '@furystack/utils'
|
|
3
2
|
import { cssVariableTheme } from '../services/css-variable-theme.js'
|
|
4
3
|
import type { Palette } from '../services/theme-provider-service.js'
|
|
5
4
|
import { ThemeProviderService } from '../services/theme-provider-service.js'
|
|
6
5
|
|
|
7
6
|
export type CircularProgressProps = {
|
|
8
7
|
/**
|
|
9
|
-
*
|
|
10
|
-
* The component subscribes internally and updates the arc without re-rendering.
|
|
8
|
+
* A progress value (0–100). Used when variant is 'determinate'.
|
|
11
9
|
*/
|
|
12
|
-
value?:
|
|
10
|
+
value?: number
|
|
13
11
|
/**
|
|
14
12
|
* The variant of the progress indicator.
|
|
15
13
|
* - 'determinate': shows a fixed arc based on `value`
|
|
@@ -41,7 +39,7 @@ const DEFAULT_THICKNESS = 3.6
|
|
|
41
39
|
const clampValue = (v: number) => Math.max(0, Math.min(100, v))
|
|
42
40
|
|
|
43
41
|
export const CircularProgress = Shade<CircularProgressProps>({
|
|
44
|
-
|
|
42
|
+
customElementName: 'shade-circular-progress',
|
|
45
43
|
css: {
|
|
46
44
|
display: 'inline-flex',
|
|
47
45
|
fontFamily: cssVariableTheme.typography.fontFamily,
|
|
@@ -65,10 +63,10 @@ export const CircularProgress = Shade<CircularProgressProps>({
|
|
|
65
63
|
transition: `stroke-dashoffset ${cssVariableTheme.transitions.duration.normal} ${cssVariableTheme.transitions.easing.easeInOut}`,
|
|
66
64
|
},
|
|
67
65
|
},
|
|
68
|
-
render: ({ props, injector,
|
|
66
|
+
render: ({ props, injector, useHostProps }) => {
|
|
69
67
|
const themeProvider = injector.getInstance(ThemeProviderService)
|
|
70
68
|
const variant = props.variant || 'indeterminate'
|
|
71
|
-
const value = clampValue(props.value
|
|
69
|
+
const value = clampValue(props.value ?? 0)
|
|
72
70
|
const size = props.size ?? DEFAULT_SIZE
|
|
73
71
|
const thickness = props.thickness ?? DEFAULT_THICKNESS
|
|
74
72
|
const indeterminate = variant === 'indeterminate'
|
|
@@ -76,10 +74,6 @@ export const CircularProgress = Shade<CircularProgressProps>({
|
|
|
76
74
|
const radius = (SVG_SIZE - thickness) / 2
|
|
77
75
|
const circumference = 2 * Math.PI * radius
|
|
78
76
|
|
|
79
|
-
if (variant === 'determinate' && props.value) {
|
|
80
|
-
useObservable('ariaValue', props.value)
|
|
81
|
-
}
|
|
82
|
-
|
|
83
77
|
const color = themeProvider.theme.palette[props.color || 'primary'].main
|
|
84
78
|
useHostProps({
|
|
85
79
|
role: 'progressbar',
|
|
@@ -3,7 +3,7 @@ import { cssVariableTheme } from '../../services/css-variable-theme.js'
|
|
|
3
3
|
import type { CommandPaletteManager } from './command-palette-manager.js'
|
|
4
4
|
|
|
5
5
|
export const CommandPaletteInput = Shade<{ manager: CommandPaletteManager }>({
|
|
6
|
-
|
|
6
|
+
customElementName: 'shades-command-palette-input',
|
|
7
7
|
css: {
|
|
8
8
|
width: '100%',
|
|
9
9
|
fontFamily: cssVariableTheme.typography.fontFamily,
|
|
@@ -54,7 +54,7 @@ describe('CommandPaletteSuggestionList', () => {
|
|
|
54
54
|
onSelected: vi.fn(),
|
|
55
55
|
})
|
|
56
56
|
|
|
57
|
-
it('should render
|
|
57
|
+
it('should render as custom element', async () => {
|
|
58
58
|
await usingAsync(new Injector(), async (injector) => {
|
|
59
59
|
await usingAsync(createManager(), async (manager) => {
|
|
60
60
|
const rootElement = document.getElementById('root') as HTMLDivElement
|
|
@@ -4,7 +4,7 @@ import { promisifyAnimation } from '../../utils/promisify-animation.js'
|
|
|
4
4
|
import type { CommandPaletteManager } from './command-palette-manager.js'
|
|
5
5
|
|
|
6
6
|
export const CommandPaletteSuggestionList = Shade<{ manager: CommandPaletteManager; fullScreenSuggestions?: boolean }>({
|
|
7
|
-
|
|
7
|
+
customElementName: 'shade-command-palette-suggestion-list',
|
|
8
8
|
css: {
|
|
9
9
|
fontFamily: cssVariableTheme.typography.fontFamily,
|
|
10
10
|
'& .suggestion-items-container': {
|