@box/blueprint-web 9.11.0 → 9.12.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/lib-esm/combobox/combobox.js +3 -0
- package/lib-esm/combobox-group/types.d.ts +1 -1
- package/lib-esm/index.css +36 -25
- package/lib-esm/select/select.d.ts +2 -3
- package/lib-esm/select/select.js +23 -9
- package/lib-esm/select/select.module.js +1 -1
- package/lib-esm/select/types.d.ts +28 -1
- package/package.json +2 -2
|
@@ -7,7 +7,7 @@ export interface ComboboxGroupProps {
|
|
|
7
7
|
label: string;
|
|
8
8
|
hideLabel?: boolean;
|
|
9
9
|
}
|
|
10
|
-
export interface ComboboxGroupSelectProps extends SelectProps {
|
|
10
|
+
export interface ComboboxGroupSelectProps extends Omit<SelectProps, 'disabled'> {
|
|
11
11
|
disabled?: never;
|
|
12
12
|
error?: boolean;
|
|
13
13
|
label: never;
|
package/lib-esm/index.css
CHANGED
|
@@ -1809,7 +1809,7 @@
|
|
|
1809
1809
|
--blueprint-select-border-error-left-width:none;
|
|
1810
1810
|
}
|
|
1811
1811
|
|
|
1812
|
-
.bp_select_module_container--
|
|
1812
|
+
.bp_select_module_container--b9515{
|
|
1813
1813
|
display:flex;
|
|
1814
1814
|
flex-direction:column;
|
|
1815
1815
|
font-family:Lato, -apple-system, BlinkMacSystemFont, "San Francisco", "Segoe UI", Roboto, "Helvetica Neue", sans-serif;
|
|
@@ -1821,15 +1821,15 @@
|
|
|
1821
1821
|
text-decoration:none;
|
|
1822
1822
|
text-transform:none;
|
|
1823
1823
|
}
|
|
1824
|
-
.bp_select_module_container--
|
|
1824
|
+
.bp_select_module_container--b9515.bp_select_module_disabled--b9515{
|
|
1825
1825
|
opacity:60%;
|
|
1826
1826
|
}
|
|
1827
|
-
.bp_select_module_container--
|
|
1827
|
+
.bp_select_module_container--b9515 .bp_select_module_label--b9515{
|
|
1828
1828
|
flex:0 0 fit-content;
|
|
1829
1829
|
font-weight:700;
|
|
1830
1830
|
overflow-wrap:break-word;
|
|
1831
1831
|
}
|
|
1832
|
-
.bp_select_module_container--
|
|
1832
|
+
.bp_select_module_container--b9515 .bp_select_module_label--b9515,.bp_select_module_container--b9515 .bp_select_module_triggerBtn--b9515{
|
|
1833
1833
|
color:var(--text-text-on-light);
|
|
1834
1834
|
font-family:Lato, -apple-system, BlinkMacSystemFont, "San Francisco", "Segoe UI", Roboto, "Helvetica Neue", sans-serif;
|
|
1835
1835
|
font-size:.875rem;
|
|
@@ -1838,7 +1838,7 @@
|
|
|
1838
1838
|
text-decoration:none;
|
|
1839
1839
|
text-transform:none;
|
|
1840
1840
|
}
|
|
1841
|
-
.bp_select_module_container--
|
|
1841
|
+
.bp_select_module_container--b9515 .bp_select_module_triggerBtn--b9515{
|
|
1842
1842
|
align-items:center;
|
|
1843
1843
|
background-color:var(--surface-dropdown-surface);
|
|
1844
1844
|
border-bottom:var(--blueprint-select-border-bottom-width, var(--border-1)) solid var(--border-dropdown-border);
|
|
@@ -1859,47 +1859,58 @@
|
|
|
1859
1859
|
text-align:start;
|
|
1860
1860
|
width:100%;
|
|
1861
1861
|
}
|
|
1862
|
-
.bp_select_module_container--
|
|
1862
|
+
.bp_select_module_container--b9515 .bp_select_module_triggerBtn--b9515 span:first-child{
|
|
1863
1863
|
overflow:hidden;
|
|
1864
1864
|
text-overflow:ellipsis;
|
|
1865
1865
|
white-space:nowrap;
|
|
1866
1866
|
}
|
|
1867
|
-
.bp_select_module_container--
|
|
1867
|
+
.bp_select_module_container--b9515 .bp_select_module_triggerBtn--b9515:disabled{
|
|
1868
1868
|
cursor:default;
|
|
1869
1869
|
}
|
|
1870
|
-
.bp_select_module_container--
|
|
1870
|
+
.bp_select_module_container--b9515 .bp_select_module_triggerBtn--b9515.bp_select_module_readonly--b9515:not(:disabled){
|
|
1871
|
+
background-color:var(--gray-02);
|
|
1872
|
+
box-shadow:none;
|
|
1873
|
+
color:var(--text-text-on-light-secondary);
|
|
1874
|
+
cursor:default;
|
|
1875
|
+
}
|
|
1876
|
+
.bp_select_module_container--b9515 .bp_select_module_triggerBtn--b9515:not(.bp_select_module_readonly--b9515):not(:disabled).bp_select_module_error--b9515,.bp_select_module_container--b9515 .bp_select_module_triggerBtn--b9515:not(.bp_select_module_readonly--b9515):not(:disabled)[aria-invalid=true]{
|
|
1871
1877
|
background-color:var(--surface-dropdown-surface-error);
|
|
1872
1878
|
border-bottom:var(--blueprint-select-border-error-bottom-width, var(--border-2)) solid var(--border-dropdown-border-error);
|
|
1873
1879
|
border-left:var(--blueprint-select-border-error-left-width, var(--border-2)) solid var(--border-dropdown-border-error);
|
|
1874
1880
|
border-right:var(--blueprint-select-border-error-right-width, var(--border-2)) solid var(--border-dropdown-border-error);
|
|
1875
1881
|
border-top:var(--blueprint-select-border-error-top-width, var(--border-2)) solid var(--border-dropdown-border-error);
|
|
1876
1882
|
}
|
|
1877
|
-
.bp_select_module_container--
|
|
1883
|
+
.bp_select_module_container--b9515 .bp_select_module_triggerBtn--b9515:not(.bp_select_module_readonly--b9515):focus,.bp_select_module_container--b9515 .bp_select_module_triggerBtn--b9515:not(.bp_select_module_readonly--b9515):not(:disabled).bp_select_module_error--b9515:focus,.bp_select_module_container--b9515 .bp_select_module_triggerBtn--b9515:not(.bp_select_module_readonly--b9515):not(:disabled)[aria-invalid=true]:focus{
|
|
1878
1884
|
background-color:var(--surface-dropdown-surface-focus);
|
|
1879
1885
|
border:var(--border-2), solid, var(--outline-focus-on-light);
|
|
1880
1886
|
}
|
|
1881
|
-
.bp_select_module_container--
|
|
1887
|
+
.bp_select_module_container--b9515 .bp_select_module_triggerBtn--b9515:not(.bp_select_module_readonly--b9515):not(:disabled):not(:focus):not(.bp_select_module_error--b9515):not([aria-invalid]):hover{
|
|
1882
1888
|
background-color:var(--surface-dropdown-surface-hover);
|
|
1883
1889
|
border-color:var(--border-dropdown-border-hover);
|
|
1884
1890
|
}
|
|
1885
|
-
.bp_select_module_container--
|
|
1891
|
+
.bp_select_module_container--b9515 .bp_select_module_triggerBtn--b9515 .bp_select_module_iconWrapper--b9515{
|
|
1886
1892
|
flex-shrink:0;
|
|
1887
1893
|
-webkit-user-select:none;
|
|
1888
1894
|
user-select:none;
|
|
1889
1895
|
}
|
|
1890
|
-
.bp_select_module_container--
|
|
1896
|
+
.bp_select_module_container--b9515 .bp_select_module_triggerBtn--b9515 .bp_select_module_iconCaret--b9515{
|
|
1891
1897
|
display:block;
|
|
1892
1898
|
height:var(--size-2);
|
|
1893
1899
|
width:var(--size-2);
|
|
1894
1900
|
}
|
|
1895
|
-
.bp_select_module_container--
|
|
1901
|
+
.bp_select_module_container--b9515 .bp_select_module_triggerBtn--b9515 .bp_select_module_iconCaret--b9515 path{
|
|
1896
1902
|
fill:var(--icon-icon-on-light);
|
|
1897
1903
|
}
|
|
1898
|
-
.bp_select_module_container--
|
|
1904
|
+
.bp_select_module_container--b9515 .bp_select_module_triggerBtn--b9515 .bp_select_module_iconPencilCrossed--b9515{
|
|
1905
|
+
display:block;
|
|
1906
|
+
height:var(--size-4);
|
|
1907
|
+
width:var(--size-4);
|
|
1908
|
+
}
|
|
1909
|
+
.bp_select_module_container--b9515 .bp_select_module_triggerBtn--b9515[data-state=open] .bp_select_module_icon--b9515{
|
|
1899
1910
|
transform:rotate(180deg);
|
|
1900
1911
|
}
|
|
1901
1912
|
|
|
1902
|
-
.bp_select_module_content--
|
|
1913
|
+
.bp_select_module_content--b9515{
|
|
1903
1914
|
background-color:var(--surface-menu-surface);
|
|
1904
1915
|
border:var(--border-1) solid var(--border-card-border);
|
|
1905
1916
|
border-radius:var(--radius-3);
|
|
@@ -1917,11 +1928,11 @@
|
|
|
1917
1928
|
text-transform:none;
|
|
1918
1929
|
z-index:380;
|
|
1919
1930
|
}
|
|
1920
|
-
.bp_select_module_content--
|
|
1931
|
+
.bp_select_module_content--b9515 .bp_select_module_viewport--b9515{
|
|
1921
1932
|
padding-block:var(--space-3);
|
|
1922
1933
|
padding-inline:var(--space-3);
|
|
1923
1934
|
}
|
|
1924
|
-
.bp_select_module_content--
|
|
1935
|
+
.bp_select_module_content--b9515 .bp_select_module_viewport--b9515 .bp_select_module_option--b9515{
|
|
1925
1936
|
border:var(--border-2) solid #0000;
|
|
1926
1937
|
border-radius:var(--radius-3);
|
|
1927
1938
|
cursor:pointer;
|
|
@@ -1936,25 +1947,25 @@
|
|
|
1936
1947
|
-webkit-user-select:none;
|
|
1937
1948
|
user-select:none;
|
|
1938
1949
|
}
|
|
1939
|
-
.bp_select_module_content--
|
|
1950
|
+
.bp_select_module_content--b9515 .bp_select_module_viewport--b9515 .bp_select_module_option--b9515[data-disabled]{
|
|
1940
1951
|
opacity:60%;
|
|
1941
1952
|
pointer-events:none;
|
|
1942
1953
|
}
|
|
1943
|
-
.bp_select_module_content--
|
|
1954
|
+
.bp_select_module_content--b9515 .bp_select_module_viewport--b9515 .bp_select_module_option--b9515[data-highlighted]{
|
|
1944
1955
|
background-color:var(--surface-menu-surface-focus);
|
|
1945
1956
|
border:var(--border-2) solid var(--outline-focus-on-light);
|
|
1946
1957
|
}
|
|
1947
|
-
.bp_select_module_content--
|
|
1958
|
+
.bp_select_module_content--b9515 .bp_select_module_viewport--b9515 .bp_select_module_option--b9515:hover{
|
|
1948
1959
|
background-color:var(--surface-menu-surface-hover);
|
|
1949
1960
|
}
|
|
1950
|
-
.bp_select_module_content--
|
|
1961
|
+
.bp_select_module_content--b9515 .bp_select_module_viewport--b9515 .bp_select_module_option--b9515 span:first-child{
|
|
1951
1962
|
overflow:hidden;
|
|
1952
1963
|
overflow-wrap:break-word;
|
|
1953
1964
|
}
|
|
1954
|
-
.bp_select_module_content--
|
|
1965
|
+
.bp_select_module_content--b9515 .bp_select_module_viewport--b9515 .bp_select_module_option--b9515 .bp_select_module_secondaryText--b9515{
|
|
1955
1966
|
color:var(--text-text-on-light-secondary);
|
|
1956
1967
|
}
|
|
1957
|
-
.bp_select_module_content--
|
|
1968
|
+
.bp_select_module_content--b9515 .bp_select_module_viewport--b9515 .bp_select_module_option--b9515 .bp_select_module_indicator--b9515{
|
|
1958
1969
|
align-items:center;
|
|
1959
1970
|
display:flex;
|
|
1960
1971
|
height:var(--size-9);
|
|
@@ -1963,10 +1974,10 @@
|
|
|
1963
1974
|
position:absolute;
|
|
1964
1975
|
top:0;
|
|
1965
1976
|
}
|
|
1966
|
-
.bp_select_module_content--
|
|
1977
|
+
.bp_select_module_content--b9515 .bp_select_module_viewport--b9515 .bp_select_module_option--b9515 .bp_select_module_indicator--b9515 path{
|
|
1967
1978
|
fill:var(--icon-icon-on-light);
|
|
1968
1979
|
}
|
|
1969
|
-
.bp_select_module_content--
|
|
1980
|
+
.bp_select_module_content--b9515 .bp_select_module_viewport--b9515 .bp_select_module_separator--b9515{
|
|
1970
1981
|
background-color:var(--border-divider-border);
|
|
1971
1982
|
flex-shrink:0;
|
|
1972
1983
|
height:var(--border-1);
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { type SelectContentProps, type SelectOptionProps } from './types';
|
|
1
|
+
import { type SelectContentProps, type SelectOptionProps, type SelectProps } from './types';
|
|
3
2
|
/**
|
|
4
3
|
* The root component that contains all the parts of a select.
|
|
5
4
|
*
|
|
@@ -19,7 +18,7 @@ import { type SelectContentProps, type SelectOptionProps } from './types';
|
|
|
19
18
|
* <Select.Option text="Option 4" value="option-4" />
|
|
20
19
|
* </Select>
|
|
21
20
|
*/
|
|
22
|
-
export declare const Select: import("react").ForwardRefExoticComponent<
|
|
21
|
+
export declare const Select: import("react").ForwardRefExoticComponent<SelectProps & import("react").RefAttributes<HTMLButtonElement>> & {
|
|
23
22
|
/**
|
|
24
23
|
* The component that pops out when the select is open.
|
|
25
24
|
*/
|
package/lib-esm/select/select.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Caret, Checkmark } from '@box/blueprint-web-assets/icons/Fill';
|
|
1
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
|
+
import { PencilCrossed, Caret, Checkmark } from '@box/blueprint-web-assets/icons/Fill';
|
|
3
3
|
import * as ScrollArea from '@radix-ui/react-scroll-area';
|
|
4
4
|
import * as SelectPrimitive from '@radix-ui/react-select';
|
|
5
5
|
import clsx from 'clsx';
|
|
6
6
|
import { forwardRef, useCallback } from 'react';
|
|
7
7
|
import { InlineError } from '../primitives/inline-error/inline-error.js';
|
|
8
|
+
import { Text } from '../text/text.js';
|
|
8
9
|
import { useLabelable } from '../util-components/labelable/useLabelable.js';
|
|
9
10
|
import { useUniqueId } from '../utils/useUniqueId.js';
|
|
10
11
|
import styles from './select.module.js';
|
|
@@ -27,6 +28,8 @@ const Root = /*#__PURE__*/forwardRef((props, forwardedRef) => {
|
|
|
27
28
|
onOpenChange,
|
|
28
29
|
name,
|
|
29
30
|
disabled,
|
|
31
|
+
readonly,
|
|
32
|
+
subText,
|
|
30
33
|
required,
|
|
31
34
|
id,
|
|
32
35
|
// RadixSelectTrigger props
|
|
@@ -38,7 +41,9 @@ const Root = /*#__PURE__*/forwardRef((props, forwardedRef) => {
|
|
|
38
41
|
const isSelectDefaultOpen = defaultOpen && !disabled;
|
|
39
42
|
const isSelectOpen = open && !disabled;
|
|
40
43
|
const handleOnChange = isOpen => {
|
|
41
|
-
|
|
44
|
+
if (!readonly) {
|
|
45
|
+
onOpenChange?.(isOpen);
|
|
46
|
+
}
|
|
42
47
|
};
|
|
43
48
|
const selectProps = {
|
|
44
49
|
name,
|
|
@@ -46,8 +51,8 @@ const Root = /*#__PURE__*/forwardRef((props, forwardedRef) => {
|
|
|
46
51
|
required,
|
|
47
52
|
value,
|
|
48
53
|
defaultValue,
|
|
49
|
-
defaultOpen: isSelectDefaultOpen,
|
|
50
|
-
open: isSelectOpen,
|
|
54
|
+
defaultOpen: !readonly && isSelectDefaultOpen,
|
|
55
|
+
open: !readonly && isSelectOpen,
|
|
51
56
|
onValueChange,
|
|
52
57
|
onOpenChange: handleOnChange
|
|
53
58
|
};
|
|
@@ -56,6 +61,11 @@ const Root = /*#__PURE__*/forwardRef((props, forwardedRef) => {
|
|
|
56
61
|
const ariaDescribedBy = clsx(triggerProps['aria-describedby'], {
|
|
57
62
|
[inlineErrorId]: hasError
|
|
58
63
|
});
|
|
64
|
+
const icon = readonly ? jsx(PencilCrossed, {
|
|
65
|
+
className: styles.iconPencilCrossed
|
|
66
|
+
}) : jsx(Caret, {
|
|
67
|
+
className: styles.iconCaret
|
|
68
|
+
});
|
|
59
69
|
return jsxs("div", {
|
|
60
70
|
className: clsx(styles.container, {
|
|
61
71
|
[styles.disabled]: disabled
|
|
@@ -72,23 +82,27 @@ const Root = /*#__PURE__*/forwardRef((props, forwardedRef) => {
|
|
|
72
82
|
...(hasError && {
|
|
73
83
|
'aria-invalid': 'true'
|
|
74
84
|
}),
|
|
85
|
+
"aria-readonly": readonly ? 'true' : undefined,
|
|
75
86
|
className: clsx(styles.triggerBtn, {
|
|
76
|
-
[styles.error]: hasError
|
|
87
|
+
[styles.error]: hasError,
|
|
88
|
+
[styles.readonly]: readonly
|
|
77
89
|
}),
|
|
78
90
|
id: selectId,
|
|
79
91
|
children: [jsx(SelectPrimitive.Value, {
|
|
80
92
|
placeholder: placeholder
|
|
81
93
|
}), jsx(SelectPrimitive.Icon, {
|
|
82
94
|
className: styles.iconWrapper,
|
|
83
|
-
children:
|
|
84
|
-
className: styles.icon
|
|
85
|
-
})
|
|
95
|
+
children: icon
|
|
86
96
|
})]
|
|
87
97
|
}), children]
|
|
88
98
|
}), jsx(InlineError, {
|
|
89
99
|
className: styles.inlineError,
|
|
90
100
|
id: inlineErrorId,
|
|
91
101
|
children: error
|
|
102
|
+
}), readonly && subText && jsx(Text, {
|
|
103
|
+
as: "p",
|
|
104
|
+
color: "textOnLightSecondary",
|
|
105
|
+
children: subText
|
|
92
106
|
})]
|
|
93
107
|
});
|
|
94
108
|
});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import '../index.css';
|
|
2
|
-
var styles = {"container":"bp_select_module_container--
|
|
2
|
+
var styles = {"container":"bp_select_module_container--b9515","disabled":"bp_select_module_disabled--b9515","label":"bp_select_module_label--b9515","triggerBtn":"bp_select_module_triggerBtn--b9515","readonly":"bp_select_module_readonly--b9515","error":"bp_select_module_error--b9515","iconWrapper":"bp_select_module_iconWrapper--b9515","iconCaret":"bp_select_module_iconCaret--b9515","iconPencilCrossed":"bp_select_module_iconPencilCrossed--b9515","icon":"bp_select_module_icon--b9515","content":"bp_select_module_content--b9515","viewport":"bp_select_module_viewport--b9515","option":"bp_select_module_option--b9515","secondaryText":"bp_select_module_secondaryText--b9515","indicator":"bp_select_module_indicator--b9515","separator":"bp_select_module_separator--b9515"};
|
|
3
3
|
|
|
4
4
|
export { styles as default };
|
|
@@ -43,6 +43,14 @@ export interface ExtraProps extends Labelable {
|
|
|
43
43
|
* When `true`, prevents the user from interacting with select.
|
|
44
44
|
*/
|
|
45
45
|
disabled?: RadixSelectProps['disabled'];
|
|
46
|
+
/**
|
|
47
|
+
* When `true`, prevents the user from interacting with select but can be read by the user.
|
|
48
|
+
*/
|
|
49
|
+
readonly?: boolean;
|
|
50
|
+
/**
|
|
51
|
+
* Readonly subText to inform the user about the Select field.
|
|
52
|
+
*/
|
|
53
|
+
subText?: string;
|
|
46
54
|
/**
|
|
47
55
|
* When `true`, indicates that the user must select a value before the owning form can be submitted.
|
|
48
56
|
*/
|
|
@@ -62,7 +70,25 @@ export interface ExtraProps extends Labelable {
|
|
|
62
70
|
*/
|
|
63
71
|
error?: React.ReactNode;
|
|
64
72
|
}
|
|
65
|
-
|
|
73
|
+
type SelectState = {
|
|
74
|
+
disabled?: boolean;
|
|
75
|
+
} | {
|
|
76
|
+
readonly?: boolean;
|
|
77
|
+
} | {
|
|
78
|
+
disabled: false;
|
|
79
|
+
readonly: true;
|
|
80
|
+
} | {
|
|
81
|
+
disabled: true;
|
|
82
|
+
readonly: false;
|
|
83
|
+
} | {
|
|
84
|
+
disabled: false;
|
|
85
|
+
readonly: false;
|
|
86
|
+
} | {
|
|
87
|
+
disabled?: false;
|
|
88
|
+
readonly: true;
|
|
89
|
+
subText?: string;
|
|
90
|
+
};
|
|
91
|
+
export type SelectProps = Modify<RadixSelectTriggerProps, ExtraProps & SelectState>;
|
|
66
92
|
export interface SelectContentProps extends React.ComponentPropsWithRef<'div'> {
|
|
67
93
|
/**
|
|
68
94
|
* Pass the select options and separators using `<Select.Option />` and `<Select.Separator />`.
|
|
@@ -104,3 +130,4 @@ export interface SelectOptionProps extends React.ComponentPropsWithRef<'div'> {
|
|
|
104
130
|
*/
|
|
105
131
|
secondaryText?: string;
|
|
106
132
|
}
|
|
133
|
+
export {};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@box/blueprint-web",
|
|
3
|
-
"version": "9.
|
|
3
|
+
"version": "9.12.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE",
|
|
6
6
|
"publishConfig": {
|
|
@@ -63,7 +63,7 @@
|
|
|
63
63
|
"react-stately": "^3.31.1",
|
|
64
64
|
"tsx": "^4.16.5"
|
|
65
65
|
},
|
|
66
|
-
"gitHead": "
|
|
66
|
+
"gitHead": "cde15b83e37a0f08119cd81fab817af5e8556166",
|
|
67
67
|
"module": "lib-esm/index.js",
|
|
68
68
|
"main": "lib-esm/index.js",
|
|
69
69
|
"exports": {
|