@salt-ds/core 1.64.1 → 1.65.1
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 +58 -0
- package/css/salt-core.css +252 -5
- package/dist-cjs/avatar/Avatar.css.js +1 -1
- package/dist-cjs/avatar/Avatar.js +12 -2
- package/dist-cjs/avatar/Avatar.js.map +1 -1
- package/dist-cjs/index.js +6 -0
- package/dist-cjs/index.js.map +1 -1
- package/dist-cjs/spinner/Spinner.css.js +1 -1
- package/dist-cjs/spinner/Spinner.js +4 -5
- package/dist-cjs/spinner/Spinner.js.map +1 -1
- package/dist-cjs/spinner/svgSpinners/SpinnerSVG.js +32 -50
- package/dist-cjs/spinner/svgSpinners/SpinnerSVG.js.map +1 -1
- package/dist-cjs/toolbar/Toolbar.css.js +6 -0
- package/dist-cjs/toolbar/Toolbar.css.js.map +1 -0
- package/dist-cjs/toolbar/Toolbar.js +401 -0
- package/dist-cjs/toolbar/Toolbar.js.map +1 -0
- package/dist-cjs/toolbar/ToolbarContent.css.js +6 -0
- package/dist-cjs/toolbar/ToolbarContent.css.js.map +1 -0
- package/dist-cjs/toolbar/ToolbarContent.js +38 -0
- package/dist-cjs/toolbar/ToolbarContent.js.map +1 -0
- package/dist-cjs/toolbar/ToolbarOverflow.css.js +6 -0
- package/dist-cjs/toolbar/ToolbarOverflow.css.js.map +1 -0
- package/dist-cjs/toolbar/ToolbarOverflow.js +712 -0
- package/dist-cjs/toolbar/ToolbarOverflow.js.map +1 -0
- package/dist-cjs/toolbar/ToolbarOverflowFloatingBoundary.js +160 -0
- package/dist-cjs/toolbar/ToolbarOverflowFloatingBoundary.js.map +1 -0
- package/dist-cjs/toolbar/Tooltray.css.js +6 -0
- package/dist-cjs/toolbar/Tooltray.css.js.map +1 -0
- package/dist-cjs/toolbar/Tooltray.js +59 -0
- package/dist-cjs/toolbar/Tooltray.js.map +1 -0
- package/dist-cjs/toolbar/toolbarKeyboardUtils.js +400 -0
- package/dist-cjs/toolbar/toolbarKeyboardUtils.js.map +1 -0
- package/dist-cjs/toolbar/toolbarUtils.js +220 -0
- package/dist-cjs/toolbar/toolbarUtils.js.map +1 -0
- package/dist-cjs/toolbar/useToolbarKeyboardNavigation.js +309 -0
- package/dist-cjs/toolbar/useToolbarKeyboardNavigation.js.map +1 -0
- package/dist-cjs/toolbar/useToolbarOverflow.js +750 -0
- package/dist-cjs/toolbar/useToolbarOverflow.js.map +1 -0
- package/dist-cjs/utils/mergeProps.js +2 -0
- package/dist-cjs/utils/mergeProps.js.map +1 -1
- package/dist-es/avatar/Avatar.css.js +1 -1
- package/dist-es/avatar/Avatar.js +12 -2
- package/dist-es/avatar/Avatar.js.map +1 -1
- package/dist-es/index.js +3 -0
- package/dist-es/index.js.map +1 -1
- package/dist-es/spinner/Spinner.css.js +1 -1
- package/dist-es/spinner/Spinner.js +4 -5
- package/dist-es/spinner/Spinner.js.map +1 -1
- package/dist-es/spinner/svgSpinners/SpinnerSVG.js +32 -50
- package/dist-es/spinner/svgSpinners/SpinnerSVG.js.map +1 -1
- package/dist-es/toolbar/Toolbar.css.js +4 -0
- package/dist-es/toolbar/Toolbar.css.js.map +1 -0
- package/dist-es/toolbar/Toolbar.js +399 -0
- package/dist-es/toolbar/Toolbar.js.map +1 -0
- package/dist-es/toolbar/ToolbarContent.css.js +4 -0
- package/dist-es/toolbar/ToolbarContent.css.js.map +1 -0
- package/dist-es/toolbar/ToolbarContent.js +36 -0
- package/dist-es/toolbar/ToolbarContent.js.map +1 -0
- package/dist-es/toolbar/ToolbarOverflow.css.js +4 -0
- package/dist-es/toolbar/ToolbarOverflow.css.js.map +1 -0
- package/dist-es/toolbar/ToolbarOverflow.js +707 -0
- package/dist-es/toolbar/ToolbarOverflow.js.map +1 -0
- package/dist-es/toolbar/ToolbarOverflowFloatingBoundary.js +154 -0
- package/dist-es/toolbar/ToolbarOverflowFloatingBoundary.js.map +1 -0
- package/dist-es/toolbar/Tooltray.css.js +4 -0
- package/dist-es/toolbar/Tooltray.css.js.map +1 -0
- package/dist-es/toolbar/Tooltray.js +57 -0
- package/dist-es/toolbar/Tooltray.js.map +1 -0
- package/dist-es/toolbar/toolbarKeyboardUtils.js +381 -0
- package/dist-es/toolbar/toolbarKeyboardUtils.js.map +1 -0
- package/dist-es/toolbar/toolbarUtils.js +216 -0
- package/dist-es/toolbar/toolbarUtils.js.map +1 -0
- package/dist-es/toolbar/useToolbarKeyboardNavigation.js +307 -0
- package/dist-es/toolbar/useToolbarKeyboardNavigation.js.map +1 -0
- package/dist-es/toolbar/useToolbarOverflow.js +748 -0
- package/dist-es/toolbar/useToolbarOverflow.js.map +1 -0
- package/dist-es/utils/mergeProps.js +2 -0
- package/dist-es/utils/mergeProps.js.map +1 -1
- package/dist-types/avatar/Avatar.d.ts +5 -0
- package/dist-types/index.d.ts +1 -0
- package/dist-types/spinner/svgSpinners/SpinnerSVG.d.ts +10 -10
- package/dist-types/toolbar/Toolbar.d.ts +12 -0
- package/dist-types/toolbar/ToolbarContent.d.ts +10 -0
- package/dist-types/toolbar/ToolbarOverflow.d.ts +34 -0
- package/dist-types/toolbar/ToolbarOverflowFloatingBoundary.d.ts +16 -0
- package/dist-types/toolbar/Tooltray.d.ts +36 -0
- package/dist-types/toolbar/index.d.ts +3 -0
- package/dist-types/toolbar/toolbarKeyboardUtils.d.ts +39 -0
- package/dist-types/toolbar/toolbarUtils.d.ts +44 -0
- package/dist-types/toolbar/useToolbarKeyboardNavigation.d.ts +42 -0
- package/dist-types/toolbar/useToolbarOverflow.d.ts +38 -0
- package/dist-types/utils/mergeProps.d.ts +4 -0
- package/package.json +2 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,63 @@
|
|
|
1
1
|
# @salt-ds/core
|
|
2
2
|
|
|
3
|
+
## 1.65.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- a41099d: Fixed `compute-scroll-into-view` not being listed as a dependency.
|
|
8
|
+
- 562f2e6: - Refactored `Spinner` so its size and stroke width are driven by CSS density tokens rather than computed in JavaScript. Density changes no longer cause `Spinner` to re-render.
|
|
9
|
+
- Fixed the small `Spinner` rendering at a smaller size than intended in high density.
|
|
10
|
+
|
|
11
|
+
## 1.65.0
|
|
12
|
+
|
|
13
|
+
### Minor Changes
|
|
14
|
+
|
|
15
|
+
- 2516755: Added `Toolbar`, `ToolbarContent`, and `Tooltray` for composing horizontal toolbars with responsive overflow, grouped controls, and keyboard navigation.
|
|
16
|
+
|
|
17
|
+
Renamed from `ToolbarNext`, `ToolbarContentNext`, and `TooltrayNext` in lab.
|
|
18
|
+
|
|
19
|
+
**Basic Toolbar** — place `Tooltray` components directly inside `Toolbar`; use `align="end"` for trailing actions
|
|
20
|
+
|
|
21
|
+
```tsx
|
|
22
|
+
import { Toolbar, Tooltray } from "@salt-ds/core";
|
|
23
|
+
|
|
24
|
+
<Toolbar aria-label="Data controls">
|
|
25
|
+
<Tooltray>{/* controls */}</Tooltray>
|
|
26
|
+
<Tooltray align="end" role="group" aria-label="View and actions">
|
|
27
|
+
{/* controls */}
|
|
28
|
+
</Tooltray>
|
|
29
|
+
</Toolbar>;
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
**Centered Toolbar With Named Overflow** — use `ToolbarContent` when you need explicit start, center, and end regions
|
|
33
|
+
|
|
34
|
+
```tsx
|
|
35
|
+
import { ToolbarContent, Toolbar, Tooltray } from "@salt-ds/core";
|
|
36
|
+
|
|
37
|
+
<Toolbar aria-label="Centered actions">
|
|
38
|
+
<ToolbarContent position="start">
|
|
39
|
+
<Tooltray overflowGroup="filters" overflowLabel="Filters">
|
|
40
|
+
{/* controls */}
|
|
41
|
+
</Tooltray>
|
|
42
|
+
</ToolbarContent>
|
|
43
|
+
<ToolbarContent position="center">
|
|
44
|
+
<Tooltray overflowMode="none" role="group" aria-label="View options">
|
|
45
|
+
{/* controls */}
|
|
46
|
+
</Tooltray>
|
|
47
|
+
</ToolbarContent>
|
|
48
|
+
<ToolbarContent position="end">
|
|
49
|
+
<Tooltray align="end">{/* controls */}</Tooltray>
|
|
50
|
+
</ToolbarContent>
|
|
51
|
+
</Toolbar>;
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
- 027f8c4: Added a `render` prop to `Avatar` so teams can render the avatar root as a custom interactive element such as a button or link.
|
|
55
|
+
|
|
56
|
+
### Patch Changes
|
|
57
|
+
|
|
58
|
+
- 906c94e: Fixed `Avatar` to use the notation text characteristic tokens for `font-family` and `font-weight`, aligning with its existing `font-size` and `line-height` values.
|
|
59
|
+
- 027f8c4: Fixed `mergeProps` discarding the host component's inline `style` when the render element supplied its own `style`. Both `style` objects are now shallow-merged, so CSS custom properties set internally by the component are preserved. Conflicting keys still resolve in favor of the render element's value.
|
|
60
|
+
|
|
3
61
|
## 1.64.1
|
|
4
62
|
|
|
5
63
|
### Patch Changes
|
package/css/salt-core.css
CHANGED
|
@@ -129,13 +129,19 @@
|
|
|
129
129
|
background: var(--saltAvatar-background, var(--avatar-background));
|
|
130
130
|
font-size: var(--avatar-fontSize);
|
|
131
131
|
line-height: var(--saltAvatar-lineHeight, var(--salt-text-notation-lineHeight));
|
|
132
|
-
font-family: var(--salt-text-fontFamily);
|
|
133
|
-
font-weight: var(--salt-text-fontWeight);
|
|
132
|
+
font-family: var(--salt-text-notation-fontFamily);
|
|
133
|
+
font-weight: var(--salt-text-notation-fontWeight);
|
|
134
134
|
width: var(--avatar-container-size);
|
|
135
135
|
min-width: var(--avatar-container-size);
|
|
136
136
|
height: var(--avatar-container-size);
|
|
137
137
|
min-height: var(--avatar-container-size);
|
|
138
138
|
border-radius: var(--saltAvatar-borderRadius, var(--salt-palette-corner-strongest, 50%));
|
|
139
|
+
border: none;
|
|
140
|
+
padding: 0;
|
|
141
|
+
appearance: none;
|
|
142
|
+
-webkit-appearance: none;
|
|
143
|
+
text-decoration: none;
|
|
144
|
+
position: relative;
|
|
139
145
|
display: flex;
|
|
140
146
|
justify-content: center;
|
|
141
147
|
align-items: center;
|
|
@@ -214,6 +220,38 @@
|
|
|
214
220
|
width: 100%;
|
|
215
221
|
height: 100%;
|
|
216
222
|
}
|
|
223
|
+
.saltAvatar:focus-visible {
|
|
224
|
+
outline-offset: var(--salt-spacing-fixed-100);
|
|
225
|
+
}
|
|
226
|
+
button.saltAvatar,
|
|
227
|
+
a.saltAvatar {
|
|
228
|
+
cursor: var(--salt-cursor-hover);
|
|
229
|
+
}
|
|
230
|
+
button.saltAvatar:disabled {
|
|
231
|
+
cursor: var(--salt-cursor-disabled);
|
|
232
|
+
}
|
|
233
|
+
button.saltAvatar::after,
|
|
234
|
+
a.saltAvatar::after {
|
|
235
|
+
content: "";
|
|
236
|
+
position: absolute;
|
|
237
|
+
inset: 0;
|
|
238
|
+
border-radius: inherit;
|
|
239
|
+
pointer-events: none;
|
|
240
|
+
background: transparent;
|
|
241
|
+
}
|
|
242
|
+
.saltAvatar[aria-expanded=true][aria-haspopup=menu]::after,
|
|
243
|
+
.saltAvatar[aria-expanded=true][aria-haspopup=dialog]::after {
|
|
244
|
+
background: var(--salt-overlayable-background-hover);
|
|
245
|
+
}
|
|
246
|
+
@media (hover: hover) {
|
|
247
|
+
button.saltAvatar:hover::after,
|
|
248
|
+
a.saltAvatar:hover::after {
|
|
249
|
+
background: var(--salt-overlayable-background-hover);
|
|
250
|
+
}
|
|
251
|
+
button.saltAvatar:disabled:hover::after {
|
|
252
|
+
background: transparent;
|
|
253
|
+
}
|
|
254
|
+
}
|
|
217
255
|
|
|
218
256
|
/* src/badge/Badge.css */
|
|
219
257
|
.saltBadge {
|
|
@@ -4052,15 +4090,24 @@ a:focus .saltCard-interactable.saltCard-disabled {
|
|
|
4052
4090
|
height: var(--salt-size-base);
|
|
4053
4091
|
width: var(--salt-size-base);
|
|
4054
4092
|
}
|
|
4093
|
+
.saltSpinner-medium .saltSpinner-arc {
|
|
4094
|
+
r: calc((var(--salt-size-base) - var(--spinner-strokeWidth)) / 2);
|
|
4095
|
+
}
|
|
4055
4096
|
.saltSpinner-large {
|
|
4056
4097
|
--spinner-strokeWidth: var(--salt-size-bar);
|
|
4057
4098
|
height: calc(var(--salt-size-base) * 2);
|
|
4058
4099
|
width: calc(var(--salt-size-base) * 2);
|
|
4059
4100
|
}
|
|
4101
|
+
.saltSpinner-large .saltSpinner-arc {
|
|
4102
|
+
r: calc((var(--salt-size-base) * 2 - var(--spinner-strokeWidth)) / 2);
|
|
4103
|
+
}
|
|
4060
4104
|
.saltSpinner-small {
|
|
4061
4105
|
--spinner-strokeWidth: var(--salt-size-fixed-200);
|
|
4062
|
-
height: var(--salt-size-icon);
|
|
4063
|
-
width: var(--salt-size-icon);
|
|
4106
|
+
height: max(var(--salt-size-icon), 12px);
|
|
4107
|
+
width: max(var(--salt-size-icon), 12px);
|
|
4108
|
+
}
|
|
4109
|
+
.saltSpinner-small .saltSpinner-arc {
|
|
4110
|
+
r: calc((max(var(--salt-size-icon), 12px) - var(--spinner-strokeWidth)) / 2);
|
|
4064
4111
|
}
|
|
4065
4112
|
.saltSpinner-spinner {
|
|
4066
4113
|
animation: spinner 0.9s linear infinite;
|
|
@@ -5510,6 +5557,206 @@ label.saltText small,
|
|
|
5510
5557
|
outline-offset: var(--salt-size-fixed-100);
|
|
5511
5558
|
}
|
|
5512
5559
|
|
|
5560
|
+
/* src/toolbar/Toolbar.css */
|
|
5561
|
+
.saltToolbar {
|
|
5562
|
+
box-sizing: border-box;
|
|
5563
|
+
inline-size: 100%;
|
|
5564
|
+
min-width: 0;
|
|
5565
|
+
position: relative;
|
|
5566
|
+
}
|
|
5567
|
+
.saltToolbar-layout {
|
|
5568
|
+
align-items: center;
|
|
5569
|
+
--saltToolbar-band-gap: var(--salt-spacing-100);
|
|
5570
|
+
}
|
|
5571
|
+
.saltToolbar-layout:not([data-centered]) {
|
|
5572
|
+
display: flex;
|
|
5573
|
+
column-gap: var(--saltToolbar-band-gap);
|
|
5574
|
+
}
|
|
5575
|
+
.saltToolbar-layout[data-centered] {
|
|
5576
|
+
display: grid;
|
|
5577
|
+
grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
|
|
5578
|
+
}
|
|
5579
|
+
.saltToolbar-band {
|
|
5580
|
+
display: flex;
|
|
5581
|
+
align-items: center;
|
|
5582
|
+
gap: var(--saltToolbar-band-gap);
|
|
5583
|
+
min-width: 0;
|
|
5584
|
+
}
|
|
5585
|
+
.saltToolbar-layout:not([data-centered]) > .saltToolbar-band[data-band-position=end] {
|
|
5586
|
+
justify-content: flex-end;
|
|
5587
|
+
margin-inline-start: auto;
|
|
5588
|
+
}
|
|
5589
|
+
.saltToolbar-layout[data-centered] > .saltToolbar-band[data-band-position=start] {
|
|
5590
|
+
grid-column: 1;
|
|
5591
|
+
}
|
|
5592
|
+
.saltToolbar-layout[data-centered] > .saltToolbar-band[data-band-position=center] {
|
|
5593
|
+
grid-column: 2;
|
|
5594
|
+
justify-content: center;
|
|
5595
|
+
}
|
|
5596
|
+
.saltToolbar-layout[data-centered] > .saltToolbar-band[data-band-position=end] {
|
|
5597
|
+
grid-column: 3;
|
|
5598
|
+
justify-content: flex-end;
|
|
5599
|
+
}
|
|
5600
|
+
.saltToolbar-fallback {
|
|
5601
|
+
display: flex;
|
|
5602
|
+
align-items: center;
|
|
5603
|
+
gap: var(--salt-spacing-100);
|
|
5604
|
+
}
|
|
5605
|
+
.saltToolbar-layout > * {
|
|
5606
|
+
min-width: 0;
|
|
5607
|
+
}
|
|
5608
|
+
.saltToolbar-primary {
|
|
5609
|
+
--toolbar-background: var(--salt-container-primary-background);
|
|
5610
|
+
--toolbar-borderColor: var(--salt-container-primary-borderColor);
|
|
5611
|
+
}
|
|
5612
|
+
.saltToolbar-secondary {
|
|
5613
|
+
--toolbar-background: var(--salt-container-secondary-background);
|
|
5614
|
+
--toolbar-borderColor: var(--salt-container-secondary-borderColor);
|
|
5615
|
+
}
|
|
5616
|
+
.saltToolbar-tertiary {
|
|
5617
|
+
--toolbar-background: var(--salt-container-tertiary-background);
|
|
5618
|
+
--toolbar-borderColor: var(--salt-container-tertiary-borderColor);
|
|
5619
|
+
}
|
|
5620
|
+
.saltToolbar-bordered {
|
|
5621
|
+
background: var(--saltToolbar-background, var(--toolbar-background));
|
|
5622
|
+
border: var(--salt-size-fixed-100) var(--salt-borderStyle-solid) var(--saltToolbar-borderColor, var(--toolbar-borderColor));
|
|
5623
|
+
border-radius: var(--salt-palette-corner, 0);
|
|
5624
|
+
padding: var(--salt-spacing-100);
|
|
5625
|
+
}
|
|
5626
|
+
.saltToolbar-transparent {
|
|
5627
|
+
background: transparent;
|
|
5628
|
+
border: none;
|
|
5629
|
+
padding: 0;
|
|
5630
|
+
}
|
|
5631
|
+
.saltToolbar-measurements {
|
|
5632
|
+
display: flex;
|
|
5633
|
+
gap: var(--salt-spacing-100);
|
|
5634
|
+
position: absolute;
|
|
5635
|
+
visibility: hidden;
|
|
5636
|
+
pointer-events: none;
|
|
5637
|
+
inset: 0 auto auto 0;
|
|
5638
|
+
block-size: 0;
|
|
5639
|
+
overflow: hidden;
|
|
5640
|
+
}
|
|
5641
|
+
.saltToolbar-measureTrigger {
|
|
5642
|
+
white-space: nowrap;
|
|
5643
|
+
}
|
|
5644
|
+
|
|
5645
|
+
/* src/toolbar/ToolbarContent.css */
|
|
5646
|
+
.saltToolbarContent {
|
|
5647
|
+
display: flex;
|
|
5648
|
+
align-items: center;
|
|
5649
|
+
gap: var(--salt-spacing-100);
|
|
5650
|
+
min-width: 0;
|
|
5651
|
+
flex-shrink: 0;
|
|
5652
|
+
}
|
|
5653
|
+
.saltToolbarContent[data-position=start] {
|
|
5654
|
+
justify-content: flex-start;
|
|
5655
|
+
}
|
|
5656
|
+
.saltToolbarContent[data-position=center] {
|
|
5657
|
+
justify-content: center;
|
|
5658
|
+
}
|
|
5659
|
+
.saltToolbarContent[data-position=end] {
|
|
5660
|
+
justify-content: flex-end;
|
|
5661
|
+
}
|
|
5662
|
+
.saltToolbarContent[data-implicit] > .saltTooltray[data-align=center],
|
|
5663
|
+
.saltToolbarContent[data-implicit] > .saltTooltray[data-align=end] {
|
|
5664
|
+
margin-inline-start: 0;
|
|
5665
|
+
margin-inline-end: 0;
|
|
5666
|
+
}
|
|
5667
|
+
|
|
5668
|
+
/* src/toolbar/ToolbarOverflow.css */
|
|
5669
|
+
.saltToolbarOverflow-content {
|
|
5670
|
+
position: relative;
|
|
5671
|
+
}
|
|
5672
|
+
.saltToolbarOverflow-slot,
|
|
5673
|
+
.saltToolbarOverflow-panelItem {
|
|
5674
|
+
align-items: center;
|
|
5675
|
+
display: flex;
|
|
5676
|
+
flex-shrink: 0;
|
|
5677
|
+
gap: var(--salt-spacing-100);
|
|
5678
|
+
min-width: 0;
|
|
5679
|
+
}
|
|
5680
|
+
.saltToolbarOverflow-slot[data-align=end] {
|
|
5681
|
+
margin-inline-start: auto;
|
|
5682
|
+
}
|
|
5683
|
+
.saltToolbarOverflow-slot[data-align=center] {
|
|
5684
|
+
margin-inline-start: auto;
|
|
5685
|
+
margin-inline-end: auto;
|
|
5686
|
+
}
|
|
5687
|
+
.saltToolbarOverflow-item {
|
|
5688
|
+
align-items: center;
|
|
5689
|
+
display: flex;
|
|
5690
|
+
flex-shrink: 0;
|
|
5691
|
+
min-width: 0;
|
|
5692
|
+
}
|
|
5693
|
+
.saltToolbarOverflow-menu {
|
|
5694
|
+
display: flex;
|
|
5695
|
+
flex-shrink: 0;
|
|
5696
|
+
}
|
|
5697
|
+
.saltToolbarOverflow-itemHost,
|
|
5698
|
+
.saltToolbarOverflow-contentHost {
|
|
5699
|
+
display: contents;
|
|
5700
|
+
}
|
|
5701
|
+
.saltToolbarOverflow-trigger {
|
|
5702
|
+
white-space: nowrap;
|
|
5703
|
+
}
|
|
5704
|
+
.saltToolbarOverflow-panel {
|
|
5705
|
+
background: var(--salt-container-primary-background);
|
|
5706
|
+
border: var(--salt-size-fixed-100) var(--salt-borderStyle-solid) var(--salt-selectable-borderColor-selected);
|
|
5707
|
+
border-radius: var(--salt-palette-corner, 0);
|
|
5708
|
+
box-shadow: var(--salt-overlayable-shadow-popout);
|
|
5709
|
+
box-sizing: border-box;
|
|
5710
|
+
max-width: min(32rem, calc(100vw - var(--salt-spacing-300)));
|
|
5711
|
+
overflow: auto;
|
|
5712
|
+
position: absolute;
|
|
5713
|
+
z-index: var(--salt-zIndex-flyover);
|
|
5714
|
+
}
|
|
5715
|
+
.saltToolbarOverflow-floatingDescendant.saltToolbarOverflow-floatingDescendant {
|
|
5716
|
+
z-index: calc(var(--salt-zIndex-flyover) + var(--salt-zIndex-default));
|
|
5717
|
+
}
|
|
5718
|
+
.saltToolbarOverflow-panelContent {
|
|
5719
|
+
align-items: center;
|
|
5720
|
+
display: flex;
|
|
5721
|
+
flex-wrap: wrap;
|
|
5722
|
+
gap: var(--salt-spacing-100);
|
|
5723
|
+
max-width: inherit;
|
|
5724
|
+
min-width: max-content;
|
|
5725
|
+
padding: var(--salt-spacing-100);
|
|
5726
|
+
}
|
|
5727
|
+
.saltToolbarOverflow-panel .saltTooltray[data-align=center],
|
|
5728
|
+
.saltToolbarOverflow-panel .saltTooltray[data-align=end] {
|
|
5729
|
+
margin-inline-start: 0;
|
|
5730
|
+
margin-inline-end: 0;
|
|
5731
|
+
}
|
|
5732
|
+
.saltToolbarOverflow-panel .saltTooltray > * {
|
|
5733
|
+
inline-size: auto;
|
|
5734
|
+
}
|
|
5735
|
+
.saltToolbarOverflow-content > .saltToolbarOverflow-slot .saltTooltray[data-align=center],
|
|
5736
|
+
.saltToolbarOverflow-content > .saltToolbarOverflow-slot .saltTooltray[data-align=end] {
|
|
5737
|
+
margin-inline-start: 0;
|
|
5738
|
+
margin-inline-end: 0;
|
|
5739
|
+
}
|
|
5740
|
+
|
|
5741
|
+
/* src/toolbar/Tooltray.css */
|
|
5742
|
+
.saltTooltray {
|
|
5743
|
+
display: flex;
|
|
5744
|
+
align-items: center;
|
|
5745
|
+
flex: 0 0 auto;
|
|
5746
|
+
gap: var(--salt-spacing-100);
|
|
5747
|
+
min-width: 0;
|
|
5748
|
+
}
|
|
5749
|
+
.saltTooltray > * {
|
|
5750
|
+
flex-shrink: 0;
|
|
5751
|
+
}
|
|
5752
|
+
.saltTooltray[data-align=end] {
|
|
5753
|
+
margin-inline-start: auto;
|
|
5754
|
+
}
|
|
5755
|
+
.saltTooltray[data-align=center] {
|
|
5756
|
+
margin-inline-start: auto;
|
|
5757
|
+
margin-inline-end: auto;
|
|
5758
|
+
}
|
|
5759
|
+
|
|
5513
5760
|
/* src/tooltip/Tooltip.css */
|
|
5514
5761
|
.saltTooltip {
|
|
5515
5762
|
--tooltip-background: var(--saltTooltip-background, var(--salt-container-primary-background));
|
|
@@ -6494,4 +6741,4 @@ label.saltText small,
|
|
|
6494
6741
|
box-shadow: 0 calc(var(--salt-size-fixed-100) * -1) 0 0 var(--salt-selectable-borderColor-selected), 0 var(--salt-size-fixed-100) 0 0 var(--salt-selectable-borderColor-selected);
|
|
6495
6742
|
}
|
|
6496
6743
|
|
|
6497
|
-
/* src/
|
|
6744
|
+
/* src/e33ddadc-0f4f-47bc-8cf4-c2c50b07ad47.css */
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var css_248z = "/* Default variables applied to the root element */\n.saltAvatar {\n --avatar-size-multiplier: var(--saltAvatar-size-multiplier, 1);\n --avatar-base-size: var(--salt-size-base);\n --avatar-base-fontSize: var(--saltAvatar-fontSize, var(--salt-text-notation-fontSize));\n --avatar-container-size: calc(var(--avatar-base-size) * var(--avatar-size-multiplier));\n --avatar-fontSize: calc(var(--avatar-base-fontSize) * var(--avatar-size-multiplier));\n /* Icon styling */\n --saltIcon-size: calc(var(--avatar-container-size) / 2);\n}\n\n/* Style applied to the root element */\n.saltAvatar {\n color: var(--saltAvatar-foreground, var(--salt-content-bold-foreground));\n background: var(--saltAvatar-background, var(--avatar-background));\n font-size: var(--avatar-fontSize);\n line-height: var(--saltAvatar-lineHeight, var(--salt-text-notation-lineHeight));\n font-family: var(--salt-text-fontFamily);\n font-weight: var(--salt-text-fontWeight);\n width: var(--avatar-container-size);\n min-width: var(--avatar-container-size);\n height: var(--avatar-container-size);\n min-height: var(--avatar-container-size);\n border-radius: var(--saltAvatar-borderRadius, var(--salt-palette-corner-strongest, 50%));\n\n display: flex;\n justify-content: center;\n align-items: center;\n overflow: hidden;\n user-select: none;\n}\n\n.saltAvatar-accent {\n --avatar-background: var(--salt-sentiment-accent-background);\n}\n\n.saltAvatar-category-1 {\n --avatar-background: var(--salt-category-1-bold-background);\n}\n.saltAvatar-category-2 {\n --avatar-background: var(--salt-category-2-bold-background);\n}\n\n.saltAvatar-category-3 {\n --avatar-background: var(--salt-category-3-bold-background);\n}\n\n.saltAvatar-category-4 {\n --avatar-background: var(--salt-category-4-bold-background);\n}\n\n.saltAvatar-category-5 {\n --avatar-background: var(--salt-category-5-bold-background);\n}\n\n.saltAvatar-category-6 {\n --avatar-background: var(--salt-category-6-bold-background);\n}\n\n.saltAvatar-category-7 {\n --avatar-background: var(--salt-category-7-bold-background);\n}\n\n.saltAvatar-category-8 {\n --avatar-background: var(--salt-category-8-bold-background);\n}\n\n.saltAvatar-category-9 {\n --avatar-background: var(--salt-category-9-bold-background);\n}\n\n.saltAvatar-category-10 {\n --avatar-background: var(--salt-category-10-bold-background);\n}\n.saltAvatar-category-11 {\n --avatar-background: var(--salt-category-11-bold-background);\n}\n.saltAvatar-category-12 {\n --avatar-background: var(--salt-category-12-bold-background);\n}\n.saltAvatar-category-13 {\n --avatar-background: var(--salt-category-13-bold-background);\n}\n.saltAvatar-category-14 {\n --avatar-background: var(--salt-category-14-bold-background);\n}\n.saltAvatar-category-15 {\n --avatar-background: var(--salt-category-15-bold-background);\n}\n.saltAvatar-category-16 {\n --avatar-background: var(--salt-category-16-bold-background);\n}\n.saltAvatar-category-17 {\n --avatar-background: var(--salt-category-17-bold-background);\n}\n.saltAvatar-category-18 {\n --avatar-background: var(--salt-category-18-bold-background);\n}\n.saltAvatar-category-19 {\n --avatar-background: var(--salt-category-19-bold-background);\n}\n.saltAvatar-category-20 {\n --avatar-background: var(--salt-category-20-bold-background);\n}\n\n.saltAvatar:has(img),\n.saltAvatar-withImage {\n --avatar-background: none;\n}\n\n/* Style applied to the image/svg element. We specifically allow SVGs as the Avatar image to enable SVGs such as Flags to take up the full Avatar space */\n.saltAvatar > img,\n.saltAvatar > svg:not(.saltIcon) {\n width: 100%;\n height: 100%;\n}\n";
|
|
3
|
+
var css_248z = "/* Default variables applied to the root element */\n.saltAvatar {\n --avatar-size-multiplier: var(--saltAvatar-size-multiplier, 1);\n --avatar-base-size: var(--salt-size-base);\n --avatar-base-fontSize: var(--saltAvatar-fontSize, var(--salt-text-notation-fontSize));\n --avatar-container-size: calc(var(--avatar-base-size) * var(--avatar-size-multiplier));\n --avatar-fontSize: calc(var(--avatar-base-fontSize) * var(--avatar-size-multiplier));\n /* Icon styling */\n --saltIcon-size: calc(var(--avatar-container-size) / 2);\n}\n\n/* Style applied to the root element */\n.saltAvatar {\n color: var(--saltAvatar-foreground, var(--salt-content-bold-foreground));\n background: var(--saltAvatar-background, var(--avatar-background));\n font-size: var(--avatar-fontSize);\n line-height: var(--saltAvatar-lineHeight, var(--salt-text-notation-lineHeight));\n font-family: var(--salt-text-notation-fontFamily);\n font-weight: var(--salt-text-notation-fontWeight);\n width: var(--avatar-container-size);\n min-width: var(--avatar-container-size);\n height: var(--avatar-container-size);\n min-height: var(--avatar-container-size);\n border-radius: var(--saltAvatar-borderRadius, var(--salt-palette-corner-strongest, 50%));\n border: none;\n padding: 0;\n appearance: none;\n -webkit-appearance: none;\n text-decoration: none;\n position: relative;\n\n display: flex;\n justify-content: center;\n align-items: center;\n overflow: hidden;\n user-select: none;\n}\n\n.saltAvatar-accent {\n --avatar-background: var(--salt-sentiment-accent-background);\n}\n\n.saltAvatar-category-1 {\n --avatar-background: var(--salt-category-1-bold-background);\n}\n.saltAvatar-category-2 {\n --avatar-background: var(--salt-category-2-bold-background);\n}\n\n.saltAvatar-category-3 {\n --avatar-background: var(--salt-category-3-bold-background);\n}\n\n.saltAvatar-category-4 {\n --avatar-background: var(--salt-category-4-bold-background);\n}\n\n.saltAvatar-category-5 {\n --avatar-background: var(--salt-category-5-bold-background);\n}\n\n.saltAvatar-category-6 {\n --avatar-background: var(--salt-category-6-bold-background);\n}\n\n.saltAvatar-category-7 {\n --avatar-background: var(--salt-category-7-bold-background);\n}\n\n.saltAvatar-category-8 {\n --avatar-background: var(--salt-category-8-bold-background);\n}\n\n.saltAvatar-category-9 {\n --avatar-background: var(--salt-category-9-bold-background);\n}\n\n.saltAvatar-category-10 {\n --avatar-background: var(--salt-category-10-bold-background);\n}\n.saltAvatar-category-11 {\n --avatar-background: var(--salt-category-11-bold-background);\n}\n.saltAvatar-category-12 {\n --avatar-background: var(--salt-category-12-bold-background);\n}\n.saltAvatar-category-13 {\n --avatar-background: var(--salt-category-13-bold-background);\n}\n.saltAvatar-category-14 {\n --avatar-background: var(--salt-category-14-bold-background);\n}\n.saltAvatar-category-15 {\n --avatar-background: var(--salt-category-15-bold-background);\n}\n.saltAvatar-category-16 {\n --avatar-background: var(--salt-category-16-bold-background);\n}\n.saltAvatar-category-17 {\n --avatar-background: var(--salt-category-17-bold-background);\n}\n.saltAvatar-category-18 {\n --avatar-background: var(--salt-category-18-bold-background);\n}\n.saltAvatar-category-19 {\n --avatar-background: var(--salt-category-19-bold-background);\n}\n.saltAvatar-category-20 {\n --avatar-background: var(--salt-category-20-bold-background);\n}\n\n.saltAvatar:has(img),\n.saltAvatar-withImage {\n --avatar-background: none;\n}\n\n/* Style applied to the image/svg element. We specifically allow SVGs as the Avatar image to enable SVGs such as Flags to take up the full Avatar space */\n.saltAvatar > img,\n.saltAvatar > svg:not(.saltIcon) {\n width: 100%;\n height: 100%;\n}\n\n.saltAvatar:focus-visible {\n outline-offset: var(--salt-spacing-fixed-100);\n}\n\nbutton.saltAvatar,\na.saltAvatar {\n cursor: var(--salt-cursor-hover);\n}\n\nbutton.saltAvatar:disabled {\n cursor: var(--salt-cursor-disabled);\n}\n\nbutton.saltAvatar::after,\na.saltAvatar::after {\n content: \"\";\n position: absolute;\n inset: 0;\n border-radius: inherit;\n pointer-events: none;\n background: transparent;\n}\n\n.saltAvatar[aria-expanded=\"true\"][aria-haspopup=\"menu\"]::after,\n.saltAvatar[aria-expanded=\"true\"][aria-haspopup=\"dialog\"]::after {\n background: var(--salt-overlayable-background-hover);\n}\n\n@media (hover: hover) {\n button.saltAvatar:hover::after,\n a.saltAvatar:hover::after {\n background: var(--salt-overlayable-background-hover);\n }\n\n button.saltAvatar:disabled:hover::after {\n background: transparent;\n }\n}\n";
|
|
4
4
|
|
|
5
5
|
module.exports = css_248z;
|
|
6
6
|
//# sourceMappingURL=Avatar.css.js.map
|
|
@@ -7,6 +7,7 @@ var clsx = require('clsx');
|
|
|
7
7
|
var React = require('react');
|
|
8
8
|
var SemanticIconProvider = require('../semantic-icon-provider/SemanticIconProvider.js');
|
|
9
9
|
var makePrefixer = require('../utils/makePrefixer.js');
|
|
10
|
+
var renderProps = require('../utils/renderProps.js');
|
|
10
11
|
require('../utils/useFloatingUI/useFloatingUI.js');
|
|
11
12
|
require('../utils/useId.js');
|
|
12
13
|
require('../salt-provider/SaltProvider.js');
|
|
@@ -16,6 +17,11 @@ var useAvatarImage = require('./useAvatarImage.js');
|
|
|
16
17
|
|
|
17
18
|
const withBaseName = makePrefixer.makePrefixer("saltAvatar");
|
|
18
19
|
const DEFAULT_AVATAR_SIZE = 2;
|
|
20
|
+
const AvatarAction = React.forwardRef(
|
|
21
|
+
function AvatarAction2(props, ref) {
|
|
22
|
+
return renderProps.renderProps("div", { ...props, ref });
|
|
23
|
+
}
|
|
24
|
+
);
|
|
19
25
|
const defaultNameToInitials = (name) => name == null ? void 0 : name.split(" ").slice(0, 2).map((n) => n[0]).join("").toUpperCase();
|
|
20
26
|
const Avatar = React.forwardRef(function Avatar2({
|
|
21
27
|
className,
|
|
@@ -27,6 +33,7 @@ const Avatar = React.forwardRef(function Avatar2({
|
|
|
27
33
|
size = DEFAULT_AVATAR_SIZE,
|
|
28
34
|
style: styleProp,
|
|
29
35
|
fallbackIcon: fallbackIconProp,
|
|
36
|
+
render,
|
|
30
37
|
...rest
|
|
31
38
|
}, ref) {
|
|
32
39
|
const targetWindow = window.useWindow();
|
|
@@ -50,14 +57,17 @@ const Avatar = React.forwardRef(function Avatar2({
|
|
|
50
57
|
children = childrenProp;
|
|
51
58
|
}
|
|
52
59
|
const avatarInitials = nameToInitials(name);
|
|
53
|
-
const ariaProps = name ? {
|
|
60
|
+
const ariaProps = name ? render ? {
|
|
61
|
+
"aria-label": name
|
|
62
|
+
} : {
|
|
54
63
|
role: "img",
|
|
55
64
|
"aria-label": name
|
|
56
65
|
} : {};
|
|
57
66
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
58
|
-
|
|
67
|
+
AvatarAction,
|
|
59
68
|
{
|
|
60
69
|
ref,
|
|
70
|
+
render,
|
|
61
71
|
style,
|
|
62
72
|
className: clsx.clsx(
|
|
63
73
|
withBaseName(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Avatar.js","sources":["../src/avatar/Avatar.tsx"],"sourcesContent":["import { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport { forwardRef
|
|
1
|
+
{"version":3,"file":"Avatar.js","sources":["../src/avatar/Avatar.tsx"],"sourcesContent":["import { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n type ComponentPropsWithoutRef,\n forwardRef,\n type HTMLAttributes,\n type ReactNode,\n} from \"react\";\nimport { useIcon } from \"../semantic-icon-provider\";\nimport { makePrefixer, type RenderPropsType, renderProps } from \"../utils\";\nimport avatarCss from \"./Avatar.css\";\nimport { useAvatarImage } from \"./useAvatarImage\";\n\nexport type NameToInitials = (name?: string) => string;\n\nexport interface AvatarProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * The name that Avatar represents.\n */\n name?: string;\n /**\n * Defines the function that gets initials. Default is capital first letter of each separate word in name.\n * If a function is not passed or returns undefined, Avatar will default to Icon.\n */\n nameToInitials?: NameToInitials;\n /**\n * Image src of Avatar.\n */\n src?: string;\n /**\n * Multiplier for the base avatar.\n */\n size?: number;\n /**\n * Icon to be used as a default item. Defaults to `UserIcon`.\n */\n fallbackIcon?: ReactNode;\n /**\n * Changes Avatar's color.\n */\n color?:\n | \"accent\"\n | \"category-1\"\n | \"category-2\"\n | \"category-3\"\n | \"category-4\"\n | \"category-5\"\n | \"category-6\"\n | \"category-7\"\n | \"category-8\"\n | \"category-9\"\n | \"category-10\"\n | \"category-11\"\n | \"category-12\"\n | \"category-13\"\n | \"category-14\"\n | \"category-15\"\n | \"category-16\"\n | \"category-17\"\n | \"category-18\"\n | \"category-19\"\n | \"category-20\";\n /**\n * Render prop to enable customization of the avatar root element.\n */\n render?: RenderPropsType[\"render\"];\n}\n\nconst withBaseName = makePrefixer(\"saltAvatar\");\nconst DEFAULT_AVATAR_SIZE = 2; // medium\n\ninterface AvatarActionProps extends ComponentPropsWithoutRef<\"div\"> {\n render?: RenderPropsType[\"render\"];\n}\n\nconst AvatarAction = forwardRef<HTMLDivElement, AvatarActionProps>(\n function AvatarAction(props, ref) {\n return renderProps(\"div\", { ...props, ref });\n },\n);\n\nconst defaultNameToInitials = (name?: string) =>\n name\n ?.split(\" \")\n .slice(0, 2)\n .map((n) => n[0])\n .join(\"\")\n .toUpperCase();\n\nexport const Avatar = forwardRef<HTMLDivElement, AvatarProps>(function Avatar(\n {\n className,\n children: childrenProp,\n color = \"accent\",\n name,\n nameToInitials = defaultNameToInitials,\n src,\n size = DEFAULT_AVATAR_SIZE,\n style: styleProp,\n fallbackIcon: fallbackIconProp,\n render,\n ...rest\n },\n ref,\n) {\n const targetWindow = useWindow();\n const { UserIcon } = useIcon();\n\n const fallbackIcon =\n fallbackIconProp === undefined ? (\n <UserIcon aria-hidden />\n ) : (\n fallbackIconProp\n );\n\n useComponentCssInjection({\n testId: \"salt-avatar\",\n css: avatarCss,\n window: targetWindow,\n });\n\n let children: ReactNode;\n\n const style = {\n ...styleProp,\n \"--saltAvatar-size-multiplier\": `${size}`,\n };\n\n const status = useAvatarImage({ src });\n const hasImgNotFailing = status === \"loaded\";\n if (hasImgNotFailing) {\n children = <img alt=\"\" src={src} />;\n } else if (childrenProp != null) {\n children = childrenProp;\n }\n\n const avatarInitials = nameToInitials(name);\n\n const ariaProps = name\n ? render\n ? {\n \"aria-label\": name,\n }\n : {\n role: \"img\",\n \"aria-label\": name,\n }\n : {};\n\n return (\n <AvatarAction\n ref={ref}\n render={render}\n style={style}\n className={clsx(\n withBaseName(),\n withBaseName(color),\n {\n [withBaseName(\"withImage\")]: hasImgNotFailing,\n },\n className,\n )}\n {...ariaProps}\n {...rest}\n >\n {children || avatarInitials || fallbackIcon}\n </AvatarAction>\n );\n});\n"],"names":["makePrefixer","forwardRef","AvatarAction","renderProps","Avatar","useWindow","useIcon","useComponentCssInjection","avatarCss","useAvatarImage","jsx","clsx"],"mappings":";;;;;;;;;;;;;;;;;AAqEA,MAAM,YAAA,GAAeA,0BAAa,YAAY,CAAA;AAC9C,MAAM,mBAAA,GAAsB,CAAA;AAM5B,MAAM,YAAA,GAAeC,gBAAA;AAAA,EACnB,SAASC,aAAAA,CAAa,KAAA,EAAO,GAAA,EAAK;AAChC,IAAA,OAAOC,wBAAY,KAAA,EAAO,EAAE,GAAG,KAAA,EAAO,KAAK,CAAA;AAAA,EAC7C;AACF,CAAA;AAEA,MAAM,wBAAwB,CAAC,IAAA,KAC7B,IAAA,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CACI,KAAA,CAAM,KACP,KAAA,CAAM,CAAA,EAAG,CAAA,CAAA,CACT,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,CAAE,CAAC,CAAA,CAAA,CACd,KAAK,EAAA,CAAA,CACL,WAAA,EAAA;AAEE,MAAM,MAAA,GAASF,gBAAA,CAAwC,SAASG,OAAAA,CACrE;AAAA,EACE,SAAA;AAAA,EACA,QAAA,EAAU,YAAA;AAAA,EACV,KAAA,GAAQ,QAAA;AAAA,EACR,IAAA;AAAA,EACA,cAAA,GAAiB,qBAAA;AAAA,EACjB,GAAA;AAAA,EACA,IAAA,GAAO,mBAAA;AAAA,EACP,KAAA,EAAO,SAAA;AAAA,EACP,YAAA,EAAc,gBAAA;AAAA,EACd,MAAA;AAAA,EACA,GAAG;AACL,CAAA,EACA,GAAA,EACA;AACA,EAAA,MAAM,eAAeC,gBAAA,EAAU;AAC/B,EAAA,MAAM,EAAE,QAAA,EAAS,GAAIC,4BAAA,EAAQ;AAE7B,EAAA,MAAM,eACJ,gBAAA,KAAqB,MAAA,kCAClB,QAAA,EAAA,EAAS,aAAA,EAAW,MAAC,CAAA,GAEtB,gBAAA;AAGJ,EAAAC,+BAAA,CAAyB;AAAA,IACvB,MAAA,EAAQ,aAAA;AAAA,IACR,GAAA,EAAKC,QAAA;AAAA,IACL,MAAA,EAAQ;AAAA,GACT,CAAA;AAED,EAAA,IAAI,QAAA;AAEJ,EAAA,MAAM,KAAA,GAAQ;AAAA,IACZ,GAAG,SAAA;AAAA,IACH,8BAAA,EAAgC,GAAG,IAAI,CAAA;AAAA,GACzC;AAEA,EAAA,MAAM,MAAA,GAASC,6BAAA,CAAe,EAAE,GAAA,EAAK,CAAA;AACrC,EAAA,MAAM,mBAAmB,MAAA,KAAW,QAAA;AACpC,EAAA,IAAI,gBAAA,EAAkB;AACpB,IAAA,QAAA,mBAAWC,cAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAI,EAAA,EAAG,GAAA,EAAU,CAAA;AAAA,EACnC,CAAA,MAAA,IAAW,gBAAgB,IAAA,EAAM;AAC/B,IAAA,QAAA,GAAW,YAAA;AAAA,EACb;AAEA,EAAA,MAAM,cAAA,GAAiB,eAAe,IAAI,CAAA;AAE1C,EAAA,MAAM,SAAA,GAAY,OACd,MAAA,GACE;AAAA,IACE,YAAA,EAAc;AAAA,GAChB,GACA;AAAA,IACE,IAAA,EAAM,KAAA;AAAA,IACN,YAAA,EAAc;AAAA,MAElB,EAAC;AAEL,EAAA,uBACEA,cAAA;AAAA,IAAC,YAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,MAAA;AAAA,MACA,KAAA;AAAA,MACA,SAAA,EAAWC,SAAA;AAAA,QACT,YAAA,EAAa;AAAA,QACb,aAAa,KAAK,CAAA;AAAA,QAClB;AAAA,UACE,CAAC,YAAA,CAAa,WAAW,CAAC,GAAG;AAAA,SAC/B;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG,SAAA;AAAA,MACH,GAAG,IAAA;AAAA,MAEH,sBAAY,cAAA,IAAkB;AAAA;AAAA,GACjC;AAEJ,CAAC;;;;"}
|
package/dist-cjs/index.js
CHANGED
|
@@ -153,6 +153,9 @@ var ToggleButtonGroupContext = require('./toggle-button-group/ToggleButtonGroupC
|
|
|
153
153
|
var Toggletip = require('./toggletip/Toggletip.js');
|
|
154
154
|
var ToggletipPanel = require('./toggletip/ToggletipPanel.js');
|
|
155
155
|
var ToggletipTrigger = require('./toggletip/ToggletipTrigger.js');
|
|
156
|
+
var Toolbar = require('./toolbar/Toolbar.js');
|
|
157
|
+
var ToolbarContent = require('./toolbar/ToolbarContent.js');
|
|
158
|
+
var Tooltray = require('./toolbar/Tooltray.js');
|
|
156
159
|
var Tooltip = require('./tooltip/Tooltip.js');
|
|
157
160
|
var useTooltip = require('./tooltip/useTooltip.js');
|
|
158
161
|
var Tree = require('./tree/Tree.js');
|
|
@@ -381,6 +384,9 @@ exports.useToggleButtonGroup = ToggleButtonGroupContext.useToggleButtonGroup;
|
|
|
381
384
|
exports.Toggletip = Toggletip.Toggletip;
|
|
382
385
|
exports.ToggletipPanel = ToggletipPanel.ToggletipPanel;
|
|
383
386
|
exports.ToggletipTrigger = ToggletipTrigger.ToggletipTrigger;
|
|
387
|
+
exports.Toolbar = Toolbar.Toolbar;
|
|
388
|
+
exports.ToolbarContent = ToolbarContent.ToolbarContent;
|
|
389
|
+
exports.Tooltray = Tooltray.Tooltray;
|
|
384
390
|
exports.Tooltip = Tooltip.Tooltip;
|
|
385
391
|
exports.useTooltip = useTooltip.useTooltip;
|
|
386
392
|
exports.Tree = Tree.Tree;
|
package/dist-cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var css_248z = "/* Styles applied to the root element */\n.saltSpinner {\n position: relative;\n}\n\n/* Styles applied to the SVG stop elements */\n.saltSpinner-gradientStop {\n stop-color: var(--saltSpinner-gradient-color, var(--salt-sentiment-accent-background));\n}\n\n/* Styles applied when `size=\"medium\"` */\n.saltSpinner-medium {\n --spinner-strokeWidth: var(--salt-size-bar);\n height: var(--salt-size-base);\n width: var(--salt-size-base);\n}\n\n/* Styles applied when `size=\"large\"` */\n.saltSpinner-large {\n --spinner-strokeWidth: var(--salt-size-bar);\n height: calc(var(--salt-size-base) * 2);\n width: calc(var(--salt-size-base) * 2);\n}\n\n/* Styles applied when `size=\"small\"` */\n.saltSpinner-small {\n --spinner-strokeWidth: var(--salt-size-fixed-200);\n height: var(--salt-size-icon);\n width: var(--salt-size-icon);\n}\n\n/* Styles applied to the SVG */\n.saltSpinner-spinner {\n animation: spinner 0.9s linear infinite;\n width: 100%;\n height: 100%;\n position: absolute;\n left: 0;\n top: 0;\n}\n\n@keyframes spinner {\n 0% {\n transform: rotate(0);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n";
|
|
3
|
+
var css_248z = "/* Styles applied to the root element */\n.saltSpinner {\n position: relative;\n}\n\n/* Styles applied to the SVG stop elements */\n.saltSpinner-gradientStop {\n stop-color: var(--saltSpinner-gradient-color, var(--salt-sentiment-accent-background));\n}\n\n/* Styles applied when `size=\"medium\"` */\n.saltSpinner-medium {\n --spinner-strokeWidth: var(--salt-size-bar);\n height: var(--salt-size-base);\n width: var(--salt-size-base);\n}\n.saltSpinner-medium .saltSpinner-arc {\n r: calc((var(--salt-size-base) - var(--spinner-strokeWidth)) / 2);\n}\n\n/* Styles applied when `size=\"large\"` */\n.saltSpinner-large {\n --spinner-strokeWidth: var(--salt-size-bar);\n height: calc(var(--salt-size-base) * 2);\n width: calc(var(--salt-size-base) * 2);\n}\n.saltSpinner-large .saltSpinner-arc {\n r: calc((var(--salt-size-base) * 2 - var(--spinner-strokeWidth)) / 2);\n}\n\n/* Styles applied when `size=\"small\"` */\n.saltSpinner-small {\n --spinner-strokeWidth: var(--salt-size-fixed-200);\n height: max(var(--salt-size-icon), 12px);\n width: max(var(--salt-size-icon), 12px);\n}\n.saltSpinner-small .saltSpinner-arc {\n r: calc((max(var(--salt-size-icon), 12px) - var(--spinner-strokeWidth)) / 2);\n}\n\n/* Styles applied to the SVG */\n.saltSpinner-spinner {\n animation: spinner 0.9s linear infinite;\n width: 100%;\n height: 100%;\n position: absolute;\n left: 0;\n top: 0;\n}\n\n@keyframes spinner {\n 0% {\n transform: rotate(0);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n";
|
|
4
4
|
|
|
5
5
|
module.exports = css_248z;
|
|
6
6
|
//# sourceMappingURL=Spinner.css.js.map
|
|
@@ -8,10 +8,10 @@ var React = require('react');
|
|
|
8
8
|
var useAriaAnnouncer = require('../aria-announcer/useAriaAnnouncer.js');
|
|
9
9
|
require('../aria-announcer/AriaAnnouncerContext.js');
|
|
10
10
|
require('../aria-announcer/AriaAnnouncerProvider.js');
|
|
11
|
-
var SaltProvider = require('../salt-provider/SaltProvider.js');
|
|
12
11
|
var makePrefixer = require('../utils/makePrefixer.js');
|
|
13
12
|
require('../utils/useFloatingUI/useFloatingUI.js');
|
|
14
13
|
var useId = require('../utils/useId.js');
|
|
14
|
+
require('../salt-provider/SaltProvider.js');
|
|
15
15
|
require('../viewport/ViewportProvider.js');
|
|
16
16
|
var Spinner$1 = require('./Spinner.css.js');
|
|
17
17
|
var SpinnerSVG = require('./svgSpinners/SpinnerSVG.js');
|
|
@@ -32,7 +32,7 @@ const Spinner = React.forwardRef(
|
|
|
32
32
|
completionAnnouncement = `finished ${ariaLabel}`,
|
|
33
33
|
disableAnnouncer,
|
|
34
34
|
className,
|
|
35
|
-
size = "medium",
|
|
35
|
+
size: sizeProp = "medium",
|
|
36
36
|
id: idProp,
|
|
37
37
|
...rest
|
|
38
38
|
}, ref) {
|
|
@@ -44,8 +44,7 @@ const Spinner = React.forwardRef(
|
|
|
44
44
|
window: targetWindow
|
|
45
45
|
});
|
|
46
46
|
const { announce } = useAriaAnnouncer.useAriaAnnouncer();
|
|
47
|
-
const
|
|
48
|
-
size = handleSize(size);
|
|
47
|
+
const size = handleSize(sizeProp);
|
|
49
48
|
React.useEffect(() => {
|
|
50
49
|
if (disableAnnouncer) return;
|
|
51
50
|
announce(ariaLabel);
|
|
@@ -83,7 +82,7 @@ const Spinner = React.forwardRef(
|
|
|
83
82
|
ref,
|
|
84
83
|
role: "img",
|
|
85
84
|
...rest,
|
|
86
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(SpinnerSVG.SpinnerSVG, {
|
|
85
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(SpinnerSVG.SpinnerSVG, { id })
|
|
87
86
|
}
|
|
88
87
|
);
|
|
89
88
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Spinner.js","sources":["../src/spinner/Spinner.tsx"],"sourcesContent":["import { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport { forwardRef, type HTMLAttributes, useEffect } from \"react\";\nimport { useAriaAnnouncer } from \"../aria-announcer\";\nimport {
|
|
1
|
+
{"version":3,"file":"Spinner.js","sources":["../src/spinner/Spinner.tsx"],"sourcesContent":["import { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport { forwardRef, type HTMLAttributes, useEffect } from \"react\";\nimport { useAriaAnnouncer } from \"../aria-announcer\";\nimport { makePrefixer, useId } from \"../utils\";\nimport spinnerCss from \"./Spinner.css\";\nimport { SpinnerSVG } from \"./svgSpinners/SpinnerSVG\";\n\n/**\n * Spinner component, provides an indeterminate loading indicator\n *\n * @example\n * <Spinner size=\"small\" | \"medium\" | \"large\" />\n */\n\nexport const SpinnerSizeValues = [\n \"default\",\n \"large\",\n \"small\",\n \"medium\",\n] as const;\n\ntype SpinnerSize = (typeof SpinnerSizeValues)[number];\n\nexport type SpinnerSVGSize = Exclude<SpinnerSize, \"default\">;\n\nconst handleSize = (size: SpinnerSize): SpinnerSVGSize =>\n size === \"default\" ? \"medium\" : size;\n\nconst withBaseName = makePrefixer(\"saltSpinner\");\n\nexport interface SpinnerProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * Determines the interval on which the component will continue to announce the aria-label. Defaults to 5000ms (5s)\n */\n announcerInterval?: number;\n /**\n * * Determines the interval after which the component will stop announcing the aria-label. Defaults to 20000ms (20s)\n */\n announcerTimeout?: number;\n /**\n * The className(s) of the component\n */\n className?: string;\n /**\n * Determines the message to be announced by the component when it unmounts. Set to null if not needed.\n */\n completionAnnouncement?: string | null;\n /**\n * If true, built in aria announcer will be inactive\n */\n disableAnnouncer?: boolean;\n /**\n * The prop for the role attribute of the component\n */\n role?: string;\n /**\n * Determines the size of the spinner. Must be one of: 'default', 'large', 'small', 'medium'.\n */\n size?: SpinnerSize;\n /**\n * The ids of the SvgSpinner components\n */\n id?: string;\n}\n\nexport const Spinner = forwardRef<HTMLDivElement, SpinnerProps>(\n function Spinner(\n {\n \"aria-label\": ariaLabel = \"loading\",\n announcerInterval = 5000,\n announcerTimeout = 20000,\n completionAnnouncement = `finished ${ariaLabel}`,\n disableAnnouncer,\n className,\n size: sizeProp = \"medium\",\n id: idProp,\n ...rest\n },\n ref,\n ) {\n const id = useId(idProp);\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-spinner\",\n css: spinnerCss,\n window: targetWindow,\n });\n\n const { announce } = useAriaAnnouncer();\n\n const size = handleSize(sizeProp);\n\n useEffect(() => {\n if (disableAnnouncer) return;\n\n announce(ariaLabel);\n\n const startTime = Date.now();\n\n const interval =\n announcerInterval > 0 &&\n setInterval(() => {\n if (Date.now() - startTime > announcerTimeout) {\n // The announcer will stop after `announcerTimeout` time\n announce(\n `${ariaLabel} is still in progress, but will no longer announce.`,\n );\n interval && clearInterval(interval);\n return;\n }\n announce(ariaLabel);\n }, announcerInterval);\n\n return () => {\n if (disableAnnouncer) return;\n\n interval && clearInterval(interval);\n if (completionAnnouncement) {\n announce(completionAnnouncement);\n }\n };\n }, [\n announce,\n announcerInterval,\n announcerTimeout,\n ariaLabel,\n completionAnnouncement,\n disableAnnouncer,\n ]);\n\n return (\n <div\n aria-label={ariaLabel}\n className={clsx(withBaseName(), withBaseName(size), className)}\n ref={ref}\n role=\"img\"\n {...rest}\n >\n <SpinnerSVG id={id} />\n </div>\n );\n },\n);\n"],"names":["makePrefixer","forwardRef","Spinner","useId","useWindow","useComponentCssInjection","spinnerCss","useAriaAnnouncer","useEffect","jsx","clsx","SpinnerSVG"],"mappings":";;;;;;;;;;;;;;;;;;AAgBO,MAAM,iBAAA,GAAoB;AAAA,EAC/B,SAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF;AAMA,MAAM,UAAA,GAAa,CAAC,IAAA,KAClB,IAAA,KAAS,YAAY,QAAA,GAAW,IAAA;AAElC,MAAM,YAAA,GAAeA,0BAAa,aAAa,CAAA;AAqCxC,MAAM,OAAA,GAAUC,gBAAA;AAAA,EACrB,SAASC,QAAAA,CACP;AAAA,IACE,cAAc,SAAA,GAAY,SAAA;AAAA,IAC1B,iBAAA,GAAoB,GAAA;AAAA,IACpB,gBAAA,GAAmB,GAAA;AAAA,IACnB,sBAAA,GAAyB,YAAY,SAAS,CAAA,CAAA;AAAA,IAC9C,gBAAA;AAAA,IACA,SAAA;AAAA,IACA,MAAM,QAAA,GAAW,QAAA;AAAA,IACjB,EAAA,EAAI,MAAA;AAAA,IACJ,GAAG;AAAA,KAEL,GAAA,EACA;AACA,IAAA,MAAM,EAAA,GAAKC,YAAM,MAAM,CAAA;AACvB,IAAA,MAAM,eAAeC,gBAAA,EAAU;AAC/B,IAAAC,+BAAA,CAAyB;AAAA,MACvB,MAAA,EAAQ,cAAA;AAAA,MACR,GAAA,EAAKC,SAAA;AAAA,MACL,MAAA,EAAQ;AAAA,KACT,CAAA;AAED,IAAA,MAAM,EAAE,QAAA,EAAS,GAAIC,iCAAA,EAAiB;AAEtC,IAAA,MAAM,IAAA,GAAO,WAAW,QAAQ,CAAA;AAEhC,IAAAC,eAAA,CAAU,MAAM;AACd,MAAA,IAAI,gBAAA,EAAkB;AAEtB,MAAA,QAAA,CAAS,SAAS,CAAA;AAElB,MAAA,MAAM,SAAA,GAAY,KAAK,GAAA,EAAI;AAE3B,MAAA,MAAM,QAAA,GACJ,iBAAA,GAAoB,CAAA,IACpB,WAAA,CAAY,MAAM;AAChB,QAAA,IAAI,IAAA,CAAK,GAAA,EAAI,GAAI,SAAA,GAAY,gBAAA,EAAkB;AAE7C,UAAA,QAAA;AAAA,YACE,GAAG,SAAS,CAAA,mDAAA;AAAA,WACd;AACA,UAAA,QAAA,IAAY,cAAc,QAAQ,CAAA;AAClC,UAAA;AAAA,QACF;AACA,QAAA,QAAA,CAAS,SAAS,CAAA;AAAA,MACpB,GAAG,iBAAiB,CAAA;AAEtB,MAAA,OAAO,MAAM;AACX,QAAA,IAAI,gBAAA,EAAkB;AAEtB,QAAA,QAAA,IAAY,cAAc,QAAQ,CAAA;AAClC,QAAA,IAAI,sBAAA,EAAwB;AAC1B,UAAA,QAAA,CAAS,sBAAsB,CAAA;AAAA,QACjC;AAAA,MACF,CAAA;AAAA,IACF,CAAA,EAAG;AAAA,MACD,QAAA;AAAA,MACA,iBAAA;AAAA,MACA,gBAAA;AAAA,MACA,SAAA;AAAA,MACA,sBAAA;AAAA,MACA;AAAA,KACD,CAAA;AAED,IAAA,uBACEC,cAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,YAAA,EAAY,SAAA;AAAA,QACZ,WAAWC,SAAA,CAAK,YAAA,IAAgB,YAAA,CAAa,IAAI,GAAG,SAAS,CAAA;AAAA,QAC7D,GAAA;AAAA,QACA,IAAA,EAAK,KAAA;AAAA,QACJ,GAAG,IAAA;AAAA,QAEJ,QAAA,kBAAAD,cAAA,CAACE,yBAAW,EAAA,EAAQ;AAAA;AAAA,KACtB;AAAA,EAEJ;AACF;;;;;"}
|