@furystack/shades-common-components 13.4.1 → 14.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 +85 -0
- package/README.md +3 -3
- package/esm/components/accordion/accordion-item.js +1 -1
- package/esm/components/accordion/accordion-item.js.map +1 -1
- package/esm/components/accordion/accordion.js +1 -1
- package/esm/components/accordion/accordion.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 +1 -1
- package/esm/components/carousel.js.map +1 -1
- package/esm/components/chip.js +1 -1
- package/esm/components/chip.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.js +1 -1
- package/esm/components/command-palette/index.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.js +1 -1
- package/esm/components/data-grid/data-grid-row.js.map +1 -1
- package/esm/components/data-grid/data-grid.d.ts +5 -2
- package/esm/components/data-grid/data-grid.d.ts.map +1 -1
- package/esm/components/data-grid/data-grid.js +5 -3
- package/esm/components/data-grid/data-grid.js.map +1 -1
- package/esm/components/data-grid/data-grid.spec.js +60 -60
- 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.js +1 -1
- package/esm/components/data-grid/selection-cell.js.map +1 -1
- package/esm/components/dialog.js +1 -1
- package/esm/components/dialog.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.js +1 -1
- package/esm/components/dropdown.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.js +2 -2
- package/esm/components/image.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.js +1 -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.js +1 -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.js +1 -1
- package/esm/components/inputs/slider.js.map +1 -1
- package/esm/components/inputs/switch.js +1 -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.js +1 -1
- package/esm/components/list/list-item.js.map +1 -1
- package/esm/components/list/list.js +1 -1
- package/esm/components/list/list.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.js +1 -1
- package/esm/components/markdown/markdown-display.js.map +1 -1
- package/esm/components/markdown/markdown-display.spec.js +1 -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 +1 -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 +1 -1
- package/esm/components/menu/menu.js.map +1 -1
- package/esm/components/modal.js +1 -1
- package/esm/components/modal.js.map +1 -1
- package/esm/components/modal.spec.js +3 -3
- 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.d.ts.map +1 -1
- package/esm/components/page-container/index.js +2 -2
- package/esm/components/page-container/index.js.map +1 -1
- package/esm/components/page-container/index.spec.js +5 -4
- package/esm/components/page-container/index.spec.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.d.ts +6 -0
- package/esm/components/page-layout/index.d.ts.map +1 -1
- package/esm/components/page-layout/index.js +29 -14
- package/esm/components/page-layout/index.js.map +1 -1
- package/esm/components/page-layout/index.spec.js +119 -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.js +1 -1
- package/esm/components/rating.js.map +1 -1
- package/esm/components/rating.spec.js +1 -1
- 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.js +1 -1
- package/esm/components/suggest/index.js.map +1 -1
- package/esm/components/suggest/index.spec.js +1 -1
- 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.js +2 -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.js +1 -1
- package/esm/components/tree/tree-item.js.map +1 -1
- package/esm/components/tree/tree.js +1 -1
- package/esm/components/tree/tree.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/package.json +3 -3
- package/src/components/accordion/accordion-item.tsx +1 -1
- package/src/components/accordion/accordion.tsx +1 -1
- 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 +1 -1
- package/src/components/chip.tsx +1 -1
- 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.tsx +1 -1
- 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 +1 -1
- package/src/components/data-grid/data-grid.spec.tsx +62 -36
- package/src/components/data-grid/data-grid.tsx +14 -8
- 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 +1 -1
- package/src/components/dialog.tsx +1 -1
- 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.tsx +1 -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.tsx +2 -2
- package/src/components/inputs/autocomplete.tsx +1 -1
- package/src/components/inputs/checkbox.spec.tsx +1 -1
- package/src/components/inputs/checkbox.tsx +1 -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 +1 -1
- package/src/components/inputs/select.tsx +1 -1
- package/src/components/inputs/slider.tsx +1 -1
- package/src/components/inputs/switch.spec.tsx +1 -1
- package/src/components/inputs/switch.tsx +1 -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 +1 -1
- package/src/components/list/list.tsx +1 -1
- package/src/components/loader.spec.tsx +1 -1
- package/src/components/loader.tsx +1 -1
- package/src/components/markdown/markdown-display.spec.tsx +1 -1
- package/src/components/markdown/markdown-display.tsx +1 -1
- package/src/components/markdown/markdown-editor.spec.tsx +1 -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 +1 -1
- package/src/components/modal.spec.tsx +3 -3
- package/src/components/modal.tsx +1 -1
- package/src/components/noty-list.tsx +2 -2
- package/src/components/page-container/index.spec.tsx +5 -4
- package/src/components/page-container/index.tsx +8 -2
- package/src/components/page-container/page-header.tsx +1 -1
- package/src/components/page-layout/index.spec.tsx +173 -0
- package/src/components/page-layout/index.tsx +36 -14
- package/src/components/pagination.tsx +1 -1
- package/src/components/paper.tsx +1 -1
- package/src/components/rating.spec.tsx +1 -1
- package/src/components/rating.tsx +1 -1
- package/src/components/result.tsx +1 -1
- package/src/components/skeleton.tsx +1 -1
- package/src/components/suggest/index.spec.tsx +1 -1
- package/src/components/suggest/index.tsx +1 -1
- 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 +2 -2
- package/src/components/timeline.tsx +2 -2
- package/src/components/tooltip.tsx +1 -1
- package/src/components/tree/tree-item.tsx +1 -1
- package/src/components/tree/tree.tsx +1 -1
- 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/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',
|
package/src/components/chip.tsx
CHANGED
|
@@ -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': {
|
|
@@ -23,7 +23,7 @@ export interface CommandPaletteProps {
|
|
|
23
23
|
}
|
|
24
24
|
|
|
25
25
|
export const CommandPalette = Shade<CommandPaletteProps>({
|
|
26
|
-
|
|
26
|
+
customElementName: 'shade-command-palette',
|
|
27
27
|
css: {
|
|
28
28
|
...searchableInputStyles,
|
|
29
29
|
fontFamily: cssVariableTheme.typography.fontFamily,
|
|
@@ -11,7 +11,7 @@ export type ContextMenuItemProps<T> = {
|
|
|
11
11
|
|
|
12
12
|
export const ContextMenuItemComponent: <T>(props: ContextMenuItemProps<T>, children: ChildrenList) => JSX.Element<any> =
|
|
13
13
|
Shade<ContextMenuItemProps<any>>({
|
|
14
|
-
|
|
14
|
+
customElementName: 'shade-context-menu-item',
|
|
15
15
|
css: {
|
|
16
16
|
display: 'flex',
|
|
17
17
|
fontFamily: cssVariableTheme.typography.fontFamily,
|
|
@@ -12,7 +12,7 @@ export type ContextMenuProps<T> = {
|
|
|
12
12
|
export const ContextMenu: <T>(props: ContextMenuProps<T>, children: ChildrenList) => JSX.Element<any> = Shade<
|
|
13
13
|
ContextMenuProps<any>
|
|
14
14
|
>({
|
|
15
|
-
|
|
15
|
+
customElementName: 'shade-context-menu',
|
|
16
16
|
css: {
|
|
17
17
|
fontFamily: cssVariableTheme.typography.fontFamily,
|
|
18
18
|
'& .context-menu-backdrop': {
|
|
@@ -24,7 +24,7 @@ export const DataGridBody: <T, Column extends string>(
|
|
|
24
24
|
props: DataGridBodyProps<T, Column>,
|
|
25
25
|
children: ChildrenList,
|
|
26
26
|
) => JSX.Element<any> = Shade({
|
|
27
|
-
|
|
27
|
+
customElementName: 'shade-data-grid-body',
|
|
28
28
|
elementBase: HTMLTableSectionElement,
|
|
29
29
|
elementBaseName: 'tbody',
|
|
30
30
|
css: {
|
|
@@ -21,7 +21,7 @@ export const DataGridRow: <T, Column extends string>(
|
|
|
21
21
|
props: DataGridRowProps<T, Column>,
|
|
22
22
|
children: ChildrenList,
|
|
23
23
|
) => JSX.Element<any> = Shade({
|
|
24
|
-
|
|
24
|
+
customElementName: 'shades-data-grid-row',
|
|
25
25
|
css: {
|
|
26
26
|
display: 'table-row',
|
|
27
27
|
fontFamily: cssVariableTheme.typography.fontFamily,
|