@astryxdesign/core 0.1.3 → 0.1.4-canary.02643db
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 +51 -0
- package/dist/Button/Button.d.ts.map +1 -1
- package/dist/Button/Button.js +29 -8
- package/dist/Calendar/Calendar.d.ts.map +1 -1
- package/dist/Calendar/Calendar.js +49 -20
- package/dist/Calendar/dayCellUtils.d.ts +67 -5
- package/dist/Calendar/dayCellUtils.d.ts.map +1 -1
- package/dist/Calendar/dayCellUtils.js +139 -18
- package/dist/CheckboxInput/CheckboxInput.d.ts +6 -1
- package/dist/CheckboxInput/CheckboxInput.d.ts.map +1 -1
- package/dist/CheckboxInput/CheckboxInput.js +7 -1
- package/dist/Code/Code.d.ts +15 -1
- package/dist/Code/Code.d.ts.map +1 -1
- package/dist/Code/Code.js +32 -2
- package/dist/Code/index.d.ts +1 -1
- package/dist/Code/index.d.ts.map +1 -1
- package/dist/CodeBlock/index.d.ts +1 -1
- package/dist/CodeBlock/index.d.ts.map +1 -1
- package/dist/CommandPalette/CommandPaletteEmpty.d.ts +1 -1
- package/dist/CommandPalette/CommandPaletteEmpty.d.ts.map +1 -1
- package/dist/CommandPalette/CommandPaletteEmpty.js +24 -4
- package/dist/ContextMenu/ContextMenu.d.ts +9 -1
- package/dist/ContextMenu/ContextMenu.d.ts.map +1 -1
- package/dist/ContextMenu/ContextMenu.js +6 -3
- package/dist/DateRangeInput/DateRangeInput.js +2 -2
- package/dist/DateTimeInput/DateTimeInput.d.ts +0 -5
- package/dist/DateTimeInput/DateTimeInput.d.ts.map +1 -1
- package/dist/Divider/Divider.d.ts +0 -22
- package/dist/Divider/Divider.d.ts.map +1 -1
- package/dist/Markdown/parser.d.ts +7 -0
- package/dist/Markdown/parser.d.ts.map +1 -1
- package/dist/Markdown/parser.js +300 -6
- package/dist/MultiSelector/MultiSelector.d.ts +7 -1
- package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
- package/dist/MultiSelector/MultiSelector.js +10 -1
- package/dist/RadioList/RadioList.d.ts +7 -1
- package/dist/RadioList/RadioList.d.ts.map +1 -1
- package/dist/RadioList/RadioList.js +3 -1
- package/dist/RadioList/RadioListItem.d.ts.map +1 -1
- package/dist/RadioList/RadioListItem.js +6 -1
- package/dist/Selector/Selector.d.ts +6 -0
- package/dist/Selector/Selector.d.ts.map +1 -1
- package/dist/Selector/Selector.js +9 -0
- package/dist/Slider/Slider.d.ts +6 -0
- package/dist/Slider/Slider.d.ts.map +1 -1
- package/dist/Slider/Slider.js +10 -1
- package/dist/Spinner/Spinner.d.ts.map +1 -1
- package/dist/Spinner/Spinner.js +1 -1
- package/dist/Switch/Switch.d.ts +6 -1
- package/dist/Switch/Switch.d.ts.map +1 -1
- package/dist/Switch/Switch.js +7 -1
- package/dist/Table/BaseTable.d.ts.map +1 -1
- package/dist/Table/BaseTable.js +8 -1
- package/dist/Table/TableCell.d.ts.map +1 -1
- package/dist/Table/TableCell.js +73 -4
- package/dist/Table/index.d.ts +2 -0
- package/dist/Table/index.d.ts.map +1 -1
- package/dist/Table/index.js +1 -0
- package/dist/Table/plugins/rowExpansion/index.d.ts +3 -0
- package/dist/Table/plugins/rowExpansion/index.d.ts.map +1 -0
- package/dist/Table/plugins/rowExpansion/index.js +3 -0
- package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts +90 -0
- package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts.map +1 -0
- package/dist/Table/plugins/rowExpansion/useTableRowExpansion.js +398 -0
- package/dist/Table/tableContextMenu.d.ts +5 -1
- package/dist/Table/tableContextMenu.d.ts.map +1 -1
- package/dist/Table/tableContextMenu.js +10 -3
- package/dist/Text/Text.d.ts +1 -1
- package/dist/Text/Text.d.ts.map +1 -1
- package/dist/Text/Text.js +4 -3
- package/dist/Text/text.stylex.d.ts +35 -0
- package/dist/Text/text.stylex.d.ts.map +1 -1
- package/dist/Text/text.stylex.js +52 -1
- package/dist/Tokenizer/Tokenizer.d.ts +6 -1
- package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
- package/dist/Tokenizer/Tokenizer.js +10 -1
- package/dist/astryx.css +16 -0
- package/dist/astryx.umd.js +51 -49
- package/dist/astryx.umd.js.map +4 -4
- package/dist/docs-types.d.ts +12 -0
- package/dist/docs-types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/AspectRatio/AspectRatio.doc.mjs +1 -1
- package/src/Avatar/Avatar.doc.mjs +2 -2
- package/src/Button/Button.tsx +39 -6
- package/src/ButtonGroup/ButtonGroup.doc.mjs +1 -1
- package/src/Calendar/Calendar.test.tsx +106 -0
- package/src/Calendar/Calendar.tsx +59 -22
- package/src/Calendar/dayCellUtils.test.ts +306 -1
- package/src/Calendar/dayCellUtils.ts +206 -13
- package/src/Card/Card.doc.mjs +1 -1
- package/src/Chat/useChatNewMessages.test.tsx +4 -4
- package/src/CheckboxInput/CheckboxInput.doc.mjs +9 -1
- package/src/CheckboxInput/CheckboxInput.test.tsx +36 -0
- package/src/CheckboxInput/CheckboxInput.tsx +11 -0
- package/src/CheckboxList/CheckboxList.doc.mjs +1 -1
- package/src/Code/Code.test.tsx +54 -0
- package/src/Code/Code.tsx +48 -4
- package/src/Code/index.ts +1 -1
- package/src/CodeBlock/index.ts +1 -1
- package/src/CommandPalette/CommandPaletteEmpty.tsx +15 -1
- package/src/ContextMenu/ContextMenu.tsx +17 -1
- package/src/DateInput/DateInput.doc.mjs +6 -1
- package/src/DateRangeInput/DateRangeInput.doc.mjs +1 -1
- package/src/DateRangeInput/DateRangeInput.tsx +2 -2
- package/src/DateTimeInput/DateTimeInput.doc.mjs +1 -1
- package/src/DateTimeInput/DateTimeInput.tsx +1 -6
- package/src/Divider/Divider.tsx +1 -23
- package/src/DropdownMenu/DropdownMenu.test.tsx +5 -3
- package/src/EmptyState/EmptyState.doc.mjs +1 -1
- package/src/Field/Field.doc.mjs +1 -1
- package/src/FileInput/FileInput.doc.mjs +1 -1
- package/src/FormLayout/__snapshots__/FormLayout.test.tsx.snap +0 -3
- package/src/Grid/Grid.doc.mjs +3 -3
- package/src/Layout/__tests__/edgeCompensation.test.tsx +72 -0
- package/src/Markdown/Markdown.test.tsx +23 -0
- package/src/Markdown/incremental.test.ts +36 -0
- package/src/Markdown/parser.test.ts +210 -0
- package/src/Markdown/parser.ts +301 -6
- package/src/MobileNav/MobileNav.doc.mjs +20 -0
- package/src/MultiSelector/MultiSelector.doc.mjs +14 -1
- package/src/MultiSelector/MultiSelector.test.tsx +33 -0
- package/src/MultiSelector/MultiSelector.tsx +20 -0
- package/src/PowerSearch/PowerSearch.doc.mjs +2 -2
- package/src/RadioList/RadioList.doc.mjs +7 -1
- package/src/RadioList/RadioList.test.tsx +46 -0
- package/src/RadioList/RadioList.tsx +10 -1
- package/src/RadioList/RadioListItem.tsx +4 -0
- package/src/Section/Section.test.tsx +4 -10
- package/src/SegmentedControl/SegmentedControl.doc.mjs +1 -1
- package/src/Selector/Selector.doc.mjs +12 -1
- package/src/Selector/Selector.test.tsx +30 -0
- package/src/Selector/Selector.tsx +18 -0
- package/src/Slider/Slider.doc.mjs +14 -2
- package/src/Slider/Slider.test.tsx +30 -0
- package/src/Slider/Slider.tsx +20 -0
- package/src/Spinner/Spinner.tsx +1 -0
- package/src/Switch/Switch.doc.mjs +14 -2
- package/src/Switch/Switch.test.tsx +38 -0
- package/src/Switch/Switch.tsx +12 -0
- package/src/TabList/TabList.doc.mjs +3 -3
- package/src/Table/BaseTable.tsx +9 -1
- package/src/Table/Table.test.tsx +23 -0
- package/src/Table/TableCell.tsx +87 -8
- package/src/Table/index.ts +5 -0
- package/src/Table/plugins/rowExpansion/index.ts +7 -0
- package/src/Table/plugins/rowExpansion/useTableRowExpansion.test.tsx +155 -0
- package/src/Table/plugins/rowExpansion/useTableRowExpansion.tsx +590 -0
- package/src/Table/tableContextMenu.test.tsx +27 -3
- package/src/Table/tableContextMenu.tsx +20 -2
- package/src/Table/useTablePagination.doc.mjs +4 -1
- package/src/Table/useTableRowExpansion.doc.mjs +80 -0
- package/src/Table/useTableSortable.doc.mjs +4 -1
- package/src/Text/Text.doc.mjs +2 -2
- package/src/Text/Text.test.tsx +11 -0
- package/src/Text/Text.tsx +4 -2
- package/src/Text/text.stylex.ts +41 -0
- package/src/TextArea/TextArea.doc.mjs +1 -1
- package/src/TextInput/TextInput.doc.mjs +1 -1
- package/src/TimeInput/TimeInput.doc.mjs +11 -6
- package/src/Tokenizer/Tokenizer.doc.mjs +14 -2
- package/src/Tokenizer/Tokenizer.test.tsx +33 -0
- package/src/Tokenizer/Tokenizer.tsx +19 -0
- package/src/Toolbar/Toolbar.test.tsx +1 -1
- package/src/Typeahead/BaseTypeahead.doc.mjs +10 -0
- package/src/Typeahead/Typeahead.doc.mjs +6 -1
- package/src/docs-types.ts +12 -0
- package/src/hooks/useKeyboardHint.doc.mjs +6 -6
|
@@ -0,0 +1,398 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
'use client';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* @file useTableRowExpansion.tsx
|
|
7
|
+
* @input React, StyleX, Icon, Table types
|
|
8
|
+
* @output Exports useTableRowExpansion hook + config/state types
|
|
9
|
+
* @position Row-expansion plugin; consumed by Table via plugins prop
|
|
10
|
+
*
|
|
11
|
+
* SYNC: When modified, update these files to stay in sync:
|
|
12
|
+
* - /packages/core/src/Table/index.ts (exports)
|
|
13
|
+
*/
|
|
14
|
+
import { useCallback, useMemo, useRef } from 'react';
|
|
15
|
+
import * as stylex from '@stylexjs/stylex';
|
|
16
|
+
import "../../../theme/tokens.stylex.js";
|
|
17
|
+
import { spacingVars, colorVars, radiusVars } from "../../../theme/tokens.stylex.js";
|
|
18
|
+
import { Icon } from "../../../Icon/index.js";
|
|
19
|
+
import { resolveContextActions } from "../../tableContextMenu.js";
|
|
20
|
+
|
|
21
|
+
// =============================================================================
|
|
22
|
+
// Config
|
|
23
|
+
// =============================================================================
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Configuration for useTableRowExpansion (inherited-columns mode).
|
|
27
|
+
*
|
|
28
|
+
* Child rows use the same columns as their parents, with indentation on the
|
|
29
|
+
* first content column. The consumer provides a **flat** data array (use
|
|
30
|
+
* {@link useTableRowExpansionState} to flatten a tree) and a `getDepth`
|
|
31
|
+
* function so the plugin knows each row's nesting level.
|
|
32
|
+
*/
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Configuration for {@link useTableRowExpansionState}.
|
|
36
|
+
*
|
|
37
|
+
* Mirrors the shape of {@link useTableSelectionState}: you own the
|
|
38
|
+
* `expandedKeys` set (via `useState`), and the hook derives everything the
|
|
39
|
+
* plugin needs — the flattened `data`, per-row depth, expand/collapse
|
|
40
|
+
* handlers, and the expand-all toggle state.
|
|
41
|
+
*/
|
|
42
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
43
|
+
/**
|
|
44
|
+
* Manages row-expansion state and derives the config for
|
|
45
|
+
* {@link useTableRowExpansion}. This is the recommended entry point — it
|
|
46
|
+
* removes the boilerplate of flattening the tree, tracking depth, and
|
|
47
|
+
* computing the expand-all state.
|
|
48
|
+
*
|
|
49
|
+
* @example
|
|
50
|
+
* ```tsx
|
|
51
|
+
* const [expandedKeys, setExpandedKeys] = useState<Set<string>>(new Set());
|
|
52
|
+
* const {data, expansionConfig} = useTableRowExpansionState({
|
|
53
|
+
* baseData: tree,
|
|
54
|
+
* getChildren: item => item.children ?? [],
|
|
55
|
+
* getRowKey: item => item.id,
|
|
56
|
+
* expandedKeys,
|
|
57
|
+
* setExpandedKeys,
|
|
58
|
+
* });
|
|
59
|
+
* const expansion = useTableRowExpansion(expansionConfig);
|
|
60
|
+
* <Table data={data} columns={columns} idKey="id" plugins={{expansion}} />;
|
|
61
|
+
* ```
|
|
62
|
+
*/
|
|
63
|
+
export function useTableRowExpansionState({
|
|
64
|
+
baseData,
|
|
65
|
+
getChildren,
|
|
66
|
+
getRowKey,
|
|
67
|
+
getIsItemExpandable,
|
|
68
|
+
expandedKeys,
|
|
69
|
+
setExpandedKeys
|
|
70
|
+
}) {
|
|
71
|
+
const isExpandable = useCallback(item => getIsItemExpandable ? getIsItemExpandable(item) : getChildren(item).length > 0, [getIsItemExpandable, getChildren]);
|
|
72
|
+
const depthMap = useMemo(() => {
|
|
73
|
+
const map = new Map();
|
|
74
|
+
function walk(items, depth) {
|
|
75
|
+
for (const item of items) {
|
|
76
|
+
const key = getRowKey(item);
|
|
77
|
+
map.set(key, depth);
|
|
78
|
+
if (expandedKeys.has(key)) {
|
|
79
|
+
walk(getChildren(item), depth + 1);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
walk(baseData, 0);
|
|
84
|
+
return map;
|
|
85
|
+
}, [baseData, getChildren, getRowKey, expandedKeys]);
|
|
86
|
+
const data = useMemo(() => {
|
|
87
|
+
const result = [];
|
|
88
|
+
function walk(items) {
|
|
89
|
+
for (const item of items) {
|
|
90
|
+
result.push(item);
|
|
91
|
+
const key = getRowKey(item);
|
|
92
|
+
if (expandedKeys.has(key)) {
|
|
93
|
+
walk(getChildren(item));
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
walk(baseData);
|
|
98
|
+
return result;
|
|
99
|
+
}, [baseData, getChildren, getRowKey, expandedKeys]);
|
|
100
|
+
|
|
101
|
+
// Every expandable key across the whole tree (drives expand-all).
|
|
102
|
+
const allExpandableKeys = useMemo(() => {
|
|
103
|
+
const keys = [];
|
|
104
|
+
function walk(items) {
|
|
105
|
+
for (const item of items) {
|
|
106
|
+
if (isExpandable(item)) {
|
|
107
|
+
keys.push(getRowKey(item));
|
|
108
|
+
walk(getChildren(item));
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
walk(baseData);
|
|
113
|
+
return keys;
|
|
114
|
+
}, [baseData, getChildren, getRowKey, isExpandable]);
|
|
115
|
+
const getDepth = useCallback(item => depthMap.get(getRowKey(item)) ?? 0, [depthMap, getRowKey]);
|
|
116
|
+
const onToggle = useCallback(key => {
|
|
117
|
+
setExpandedKeys(prev => {
|
|
118
|
+
const next = new Set(prev);
|
|
119
|
+
if (next.has(key)) {
|
|
120
|
+
next.delete(key);
|
|
121
|
+
} else {
|
|
122
|
+
next.add(key);
|
|
123
|
+
}
|
|
124
|
+
return next;
|
|
125
|
+
});
|
|
126
|
+
}, [setExpandedKeys]);
|
|
127
|
+
const isAllExpanded = useMemo(() => {
|
|
128
|
+
if (allExpandableKeys.length === 0) {
|
|
129
|
+
return false;
|
|
130
|
+
}
|
|
131
|
+
const expandedCount = allExpandableKeys.filter(k => expandedKeys.has(k)).length;
|
|
132
|
+
if (expandedCount === 0) {
|
|
133
|
+
return false;
|
|
134
|
+
}
|
|
135
|
+
if (expandedCount === allExpandableKeys.length) {
|
|
136
|
+
return true;
|
|
137
|
+
}
|
|
138
|
+
return 'indeterminate';
|
|
139
|
+
}, [allExpandableKeys, expandedKeys]);
|
|
140
|
+
const onToggleExpandAll = useCallback(expand => {
|
|
141
|
+
setExpandedKeys(expand ? new Set(allExpandableKeys) : new Set());
|
|
142
|
+
}, [setExpandedKeys, allExpandableKeys]);
|
|
143
|
+
const expansionConfig = useMemo(() => ({
|
|
144
|
+
expandedKeys,
|
|
145
|
+
onToggle,
|
|
146
|
+
getRowKey,
|
|
147
|
+
getChildren,
|
|
148
|
+
getDepth,
|
|
149
|
+
getIsItemExpandable,
|
|
150
|
+
isAllExpanded,
|
|
151
|
+
onToggleExpandAll
|
|
152
|
+
}), [expandedKeys, onToggle, getRowKey, getChildren, getDepth, getIsItemExpandable, isAllExpanded, onToggleExpandAll]);
|
|
153
|
+
return {
|
|
154
|
+
data,
|
|
155
|
+
expansionConfig
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
// =============================================================================
|
|
160
|
+
// Styles
|
|
161
|
+
// =============================================================================
|
|
162
|
+
|
|
163
|
+
const EXPANSION_COLUMN_WIDTH = {
|
|
164
|
+
type: 'pixel',
|
|
165
|
+
value: 40
|
|
166
|
+
};
|
|
167
|
+
|
|
168
|
+
/** Indentation applied per depth level, in pixels. */
|
|
169
|
+
const INDENT_PER_DEPTH = 24;
|
|
170
|
+
const _temp = {
|
|
171
|
+
kZCmMZ: "xnvo3vl",
|
|
172
|
+
"$$css": true
|
|
173
|
+
};
|
|
174
|
+
const expansionStyles = {
|
|
175
|
+
indentedCell: {
|
|
176
|
+
k1xSpc: "x78zum5",
|
|
177
|
+
kGNEyG: "x6s0dn4",
|
|
178
|
+
kOIVth: "xzye2dw",
|
|
179
|
+
$$css: true
|
|
180
|
+
},
|
|
181
|
+
indent: px => [_temp, {
|
|
182
|
+
"--x-paddingInlineStart": (val => typeof val === "number" ? val + "px" : val != null ? val : undefined)(`${px}px`)
|
|
183
|
+
}],
|
|
184
|
+
clickableRow: {
|
|
185
|
+
kkrTdU: "x1ypdohk",
|
|
186
|
+
$$css: true
|
|
187
|
+
}
|
|
188
|
+
};
|
|
189
|
+
|
|
190
|
+
// =============================================================================
|
|
191
|
+
// Chevron
|
|
192
|
+
// =============================================================================
|
|
193
|
+
|
|
194
|
+
function ExpansionChevron({
|
|
195
|
+
isExpanded,
|
|
196
|
+
onToggle,
|
|
197
|
+
ariaLabel
|
|
198
|
+
}) {
|
|
199
|
+
return /*#__PURE__*/_jsx("button", {
|
|
200
|
+
type: "button",
|
|
201
|
+
...{
|
|
202
|
+
className: "x3nfvp2 x6s0dn4 xl56j7k xvy4d1p xxk0z11 xx3sua9 x1ypdohk xv9yike xefglzl xx6bhzk x1717udv x2lah0s x1ilzqfv x1cqbx0l"
|
|
203
|
+
},
|
|
204
|
+
onClick: e => {
|
|
205
|
+
e.stopPropagation();
|
|
206
|
+
onToggle();
|
|
207
|
+
},
|
|
208
|
+
"aria-label": ariaLabel,
|
|
209
|
+
"aria-expanded": isExpanded,
|
|
210
|
+
children: /*#__PURE__*/_jsx("span", {
|
|
211
|
+
...{
|
|
212
|
+
0: {
|
|
213
|
+
className: "x3nfvp2 x11xpdln xx6bhzk"
|
|
214
|
+
},
|
|
215
|
+
1: {
|
|
216
|
+
className: "x3nfvp2 x11xpdln xx6bhzk x1iffjtl"
|
|
217
|
+
}
|
|
218
|
+
}[!!isExpanded << 0],
|
|
219
|
+
children: /*#__PURE__*/_jsx(Icon, {
|
|
220
|
+
icon: "chevronRight",
|
|
221
|
+
size: "xsm"
|
|
222
|
+
})
|
|
223
|
+
})
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
// =============================================================================
|
|
228
|
+
// Hook
|
|
229
|
+
// =============================================================================
|
|
230
|
+
|
|
231
|
+
export function useTableRowExpansion(config) {
|
|
232
|
+
const {
|
|
233
|
+
expandedKeys,
|
|
234
|
+
onToggle,
|
|
235
|
+
getRowKey,
|
|
236
|
+
getChildren,
|
|
237
|
+
getDepth,
|
|
238
|
+
getIsItemExpandable,
|
|
239
|
+
hasRowClickExpansion = false,
|
|
240
|
+
isAllExpanded,
|
|
241
|
+
onToggleExpandAll
|
|
242
|
+
} = config;
|
|
243
|
+
|
|
244
|
+
// Track the first non-plugin column key for indentation.
|
|
245
|
+
const firstUserColumnKeyRef = useRef(null);
|
|
246
|
+
const expansionColumn = useMemo(() => ({
|
|
247
|
+
key: '__expansion',
|
|
248
|
+
header: '',
|
|
249
|
+
width: EXPANSION_COLUMN_WIDTH,
|
|
250
|
+
resizable: false,
|
|
251
|
+
renderCell: item => {
|
|
252
|
+
// Child rows (depth > 0) show their chevron inline in the first user
|
|
253
|
+
// column instead — don't double up here.
|
|
254
|
+
const depth = getDepth ? getDepth(item) : 0;
|
|
255
|
+
if (depth > 0) {
|
|
256
|
+
return null;
|
|
257
|
+
}
|
|
258
|
+
const key = getRowKey(item);
|
|
259
|
+
const expandable = getIsItemExpandable ? getIsItemExpandable(item) : getChildren(item).length > 0;
|
|
260
|
+
if (!expandable) {
|
|
261
|
+
return null;
|
|
262
|
+
}
|
|
263
|
+
const isExpanded = expandedKeys.has(key);
|
|
264
|
+
return /*#__PURE__*/_jsx(ExpansionChevron, {
|
|
265
|
+
isExpanded: isExpanded,
|
|
266
|
+
onToggle: () => onToggle(key),
|
|
267
|
+
ariaLabel: isExpanded ? 'Collapse row' : 'Expand row'
|
|
268
|
+
});
|
|
269
|
+
}
|
|
270
|
+
}), [expandedKeys, onToggle, getRowKey, getChildren, getIsItemExpandable, getDepth]);
|
|
271
|
+
return useMemo(() => ({
|
|
272
|
+
transformColumns(columns) {
|
|
273
|
+
// Track the first user column for indentation.
|
|
274
|
+
const firstUserCol = columns.find(c => !c.key.startsWith('__'));
|
|
275
|
+
firstUserColumnKeyRef.current = firstUserCol?.key ?? null;
|
|
276
|
+
|
|
277
|
+
// Wrap the first user column's renderCell to add depth indentation +
|
|
278
|
+
// an inline chevron for child rows. This is the inherited-columns
|
|
279
|
+
// pattern: child rows use the same columns but indent their first
|
|
280
|
+
// content cell.
|
|
281
|
+
const wrappedColumns = columns.map(col => {
|
|
282
|
+
if (col.key !== firstUserColumnKeyRef.current) {
|
|
283
|
+
return col;
|
|
284
|
+
}
|
|
285
|
+
const originalRenderCell = col.renderCell;
|
|
286
|
+
return {
|
|
287
|
+
...col,
|
|
288
|
+
renderCell: item => {
|
|
289
|
+
const depth = getDepth ? getDepth(item) : 0;
|
|
290
|
+
const originalContent = originalRenderCell ? originalRenderCell(item) : String(item[col.key] ?? '');
|
|
291
|
+
if (depth === 0) {
|
|
292
|
+
return originalContent;
|
|
293
|
+
}
|
|
294
|
+
const indent = (depth - 1) * INDENT_PER_DEPTH;
|
|
295
|
+
const key = getRowKey(item);
|
|
296
|
+
const isExpanded = expandedKeys.has(key);
|
|
297
|
+
const expandable = getIsItemExpandable ? getIsItemExpandable(item) : getChildren(item).length > 0;
|
|
298
|
+
const chevron = expandable ? /*#__PURE__*/_jsx(ExpansionChevron, {
|
|
299
|
+
isExpanded: isExpanded,
|
|
300
|
+
onToggle: () => onToggle(key),
|
|
301
|
+
ariaLabel: isExpanded ? 'Collapse row' : 'Expand row'
|
|
302
|
+
}) : /*#__PURE__*/_jsx("span", {
|
|
303
|
+
...{
|
|
304
|
+
className: "x1rg5ohu xvy4d1p xxk0z11 x2lah0s"
|
|
305
|
+
}
|
|
306
|
+
});
|
|
307
|
+
return /*#__PURE__*/_jsxs("div", {
|
|
308
|
+
...stylex.props(expansionStyles.indentedCell, indent > 0 && expansionStyles.indent(indent)),
|
|
309
|
+
children: [chevron, originalContent]
|
|
310
|
+
});
|
|
311
|
+
}
|
|
312
|
+
};
|
|
313
|
+
});
|
|
314
|
+
return [expansionColumn, ...wrappedColumns];
|
|
315
|
+
},
|
|
316
|
+
transformHeaderCell(props, column) {
|
|
317
|
+
if (column.key !== '__expansion') {
|
|
318
|
+
return props;
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
// Show expand-all toggle when the consumer provides the state + callback.
|
|
322
|
+
if (isAllExpanded !== undefined && onToggleExpandAll) {
|
|
323
|
+
const allExpanded = isAllExpanded === true;
|
|
324
|
+
return {
|
|
325
|
+
...props,
|
|
326
|
+
content: /*#__PURE__*/_jsx("button", {
|
|
327
|
+
type: "button",
|
|
328
|
+
...{
|
|
329
|
+
className: "x3nfvp2 x6s0dn4 xl56j7k xvy4d1p xxk0z11 xx3sua9 x1ypdohk xv9yike xefglzl xx6bhzk x1717udv x2lah0s x1ilzqfv x1cqbx0l"
|
|
330
|
+
},
|
|
331
|
+
onClick: () => onToggleExpandAll(!allExpanded),
|
|
332
|
+
"aria-label": allExpanded ? 'Collapse all rows' : 'Expand all rows',
|
|
333
|
+
children: /*#__PURE__*/_jsx("span", {
|
|
334
|
+
...{
|
|
335
|
+
0: {
|
|
336
|
+
className: "x3nfvp2 x11xpdln xx6bhzk"
|
|
337
|
+
},
|
|
338
|
+
1: {
|
|
339
|
+
className: "x3nfvp2 x11xpdln xx6bhzk x1iffjtl"
|
|
340
|
+
}
|
|
341
|
+
}[!!allExpanded << 0],
|
|
342
|
+
children: /*#__PURE__*/_jsx(Icon, {
|
|
343
|
+
icon: "chevronRight",
|
|
344
|
+
size: "xsm"
|
|
345
|
+
})
|
|
346
|
+
})
|
|
347
|
+
})
|
|
348
|
+
};
|
|
349
|
+
}
|
|
350
|
+
return {
|
|
351
|
+
...props,
|
|
352
|
+
content: null
|
|
353
|
+
};
|
|
354
|
+
},
|
|
355
|
+
transformBodyCell(props, column, item) {
|
|
356
|
+
// Contribute "Expand/Collapse row" context-menu action on every cell
|
|
357
|
+
// so right-clicking anywhere in the row shows the option.
|
|
358
|
+
const expandable = getIsItemExpandable ? getIsItemExpandable(item) : getChildren(item).length > 0;
|
|
359
|
+
if (!expandable) {
|
|
360
|
+
return props;
|
|
361
|
+
}
|
|
362
|
+
const key = getRowKey(item);
|
|
363
|
+
const isExpanded = expandedKeys.has(key);
|
|
364
|
+
return {
|
|
365
|
+
...props,
|
|
366
|
+
contextMenuActions: () => [...resolveContextActions(props.contextMenuActions), {
|
|
367
|
+
id: 'row-expansion-toggle',
|
|
368
|
+
group: 'row-expansion',
|
|
369
|
+
label: isExpanded ? 'Collapse row' : 'Expand row',
|
|
370
|
+
icon: /*#__PURE__*/_jsx(Icon, {
|
|
371
|
+
icon: isExpanded ? 'chevronDown' : 'chevronRight',
|
|
372
|
+
size: "xsm",
|
|
373
|
+
"aria-hidden": true
|
|
374
|
+
}),
|
|
375
|
+
onSelect: () => onToggle(key)
|
|
376
|
+
}]
|
|
377
|
+
};
|
|
378
|
+
},
|
|
379
|
+
transformBodyRow(props, item) {
|
|
380
|
+
if (!hasRowClickExpansion) {
|
|
381
|
+
return props;
|
|
382
|
+
}
|
|
383
|
+
const expandable = getIsItemExpandable ? getIsItemExpandable(item) : getChildren(item).length > 0;
|
|
384
|
+
if (!expandable) {
|
|
385
|
+
return props;
|
|
386
|
+
}
|
|
387
|
+
const key = getRowKey(item);
|
|
388
|
+
return {
|
|
389
|
+
...props,
|
|
390
|
+
htmlProps: {
|
|
391
|
+
...props.htmlProps,
|
|
392
|
+
onClick: () => onToggle(key)
|
|
393
|
+
},
|
|
394
|
+
styles: [...props.styles, expansionStyles.clickableRow]
|
|
395
|
+
};
|
|
396
|
+
}
|
|
397
|
+
}), [expandedKeys, getRowKey, onToggle, getChildren, getDepth, getIsItemExpandable, hasRowClickExpansion, isAllExpanded, onToggleExpandAll, expansionColumn]);
|
|
398
|
+
}
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
* - /packages/core/src/Table/types.ts (TableContextAction)
|
|
10
10
|
*/
|
|
11
11
|
import { type ReactNode } from 'react';
|
|
12
|
+
import type { StyleXStyles } from '../theme/types';
|
|
12
13
|
import type { TableContextAction, TableContextActions } from './types';
|
|
13
14
|
/**
|
|
14
15
|
* Resolve a `contextMenuActions` value (array or getter) to a plain array.
|
|
@@ -28,6 +29,9 @@ export declare function resolveContextActions(actions: TableContextActions | und
|
|
|
28
29
|
* context menu rendering the aggregated `actions`. Accepts a static array or a
|
|
29
30
|
* getter (resolved lazily on open). When there are no actions the element is
|
|
30
31
|
* returned untouched so the native browser menu passes through.
|
|
32
|
+
*
|
|
33
|
+
* `triggerXstyle` styles the right-click target wrapper. Cells pass a fill +
|
|
34
|
+
* padding style so the entire cell (padding included) opens the menu.
|
|
31
35
|
*/
|
|
32
|
-
export declare function wrapInTableContextMenu(element: ReactNode, actions: TableContextActions | undefined): ReactNode;
|
|
36
|
+
export declare function wrapInTableContextMenu(element: ReactNode, actions: TableContextActions | undefined, triggerXstyle?: StyleXStyles | StyleXStyles[]): ReactNode;
|
|
33
37
|
//# sourceMappingURL=tableContextMenu.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tableContextMenu.d.ts","sourceRoot":"","sources":["../../src/Table/tableContextMenu.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;GASG;AAEH,OAAO,EAAW,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAG/C,OAAO,KAAK,EAAC,kBAAkB,EAAE,mBAAmB,EAAC,MAAM,SAAS,CAAC;AAErE;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,mBAAmB,GAAG,SAAS,GACvC,kBAAkB,EAAE,CAKtB;
|
|
1
|
+
{"version":3,"file":"tableContextMenu.d.ts","sourceRoot":"","sources":["../../src/Table/tableContextMenu.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;GASG;AAEH,OAAO,EAAW,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAG/C,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAC,kBAAkB,EAAE,mBAAmB,EAAC,MAAM,SAAS,CAAC;AAErE;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,mBAAmB,GAAG,SAAS,GACvC,kBAAkB,EAAE,CAKtB;AAmFD;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,SAAS,EAClB,OAAO,EAAE,mBAAmB,GAAG,SAAS,EACxC,aAAa,CAAC,EAAE,YAAY,GAAG,YAAY,EAAE,GAC5C,SAAS,CAuBX"}
|
|
@@ -93,11 +93,13 @@ function toContextMenuOptions(actions) {
|
|
|
93
93
|
*/
|
|
94
94
|
function LazyTableContextMenu({
|
|
95
95
|
element,
|
|
96
|
-
getActions
|
|
96
|
+
getActions,
|
|
97
|
+
triggerXstyle
|
|
97
98
|
}) {
|
|
98
99
|
const [options, setOptions] = useState(null);
|
|
99
100
|
return /*#__PURE__*/_jsx(ContextMenu, {
|
|
100
101
|
items: options ?? [],
|
|
102
|
+
triggerXstyle: triggerXstyle,
|
|
101
103
|
onOpenChange: open => {
|
|
102
104
|
// Resolve actions when opening; clear on close so state derived later
|
|
103
105
|
// (e.g. current sort direction) is always fresh next open.
|
|
@@ -112,13 +114,17 @@ function LazyTableContextMenu({
|
|
|
112
114
|
* context menu rendering the aggregated `actions`. Accepts a static array or a
|
|
113
115
|
* getter (resolved lazily on open). When there are no actions the element is
|
|
114
116
|
* returned untouched so the native browser menu passes through.
|
|
117
|
+
*
|
|
118
|
+
* `triggerXstyle` styles the right-click target wrapper. Cells pass a fill +
|
|
119
|
+
* padding style so the entire cell (padding included) opens the menu.
|
|
115
120
|
*/
|
|
116
|
-
export function wrapInTableContextMenu(element, actions) {
|
|
121
|
+
export function wrapInTableContextMenu(element, actions, triggerXstyle) {
|
|
117
122
|
// Getter form → resolve lazily on open.
|
|
118
123
|
if (typeof actions === 'function') {
|
|
119
124
|
return /*#__PURE__*/_jsx(LazyTableContextMenu, {
|
|
120
125
|
element: element,
|
|
121
|
-
getActions: actions
|
|
126
|
+
getActions: actions,
|
|
127
|
+
triggerXstyle: triggerXstyle
|
|
122
128
|
});
|
|
123
129
|
}
|
|
124
130
|
if (!actions || actions.length === 0) {
|
|
@@ -128,6 +134,7 @@ export function wrapInTableContextMenu(element, actions) {
|
|
|
128
134
|
// when the user arrow-keys into the menu.
|
|
129
135
|
return /*#__PURE__*/_jsx(ContextMenu, {
|
|
130
136
|
items: toContextMenuOptions(actions),
|
|
137
|
+
triggerXstyle: triggerXstyle,
|
|
131
138
|
children: element
|
|
132
139
|
});
|
|
133
140
|
}
|
package/dist/Text/Text.d.ts
CHANGED
|
@@ -119,7 +119,7 @@ export interface TextProps extends Omit<BaseProps, 'children'> {
|
|
|
119
119
|
* <Text type="body" maxLines={2}>Clamped text</Text>
|
|
120
120
|
* ```
|
|
121
121
|
*/
|
|
122
|
-
export declare function Text({ type, size
|
|
122
|
+
export declare function Text({ type, size, color, weight, display, maxLines, hasTruncateTooltip, wordBreak, textWrap, justify, hasCapsize, hasStrikethrough, hasTabularNumbers, xstyle, className, style, as: Component, children, ref, ...props }: TextProps): import("react").JSX.Element;
|
|
123
123
|
export declare namespace Text {
|
|
124
124
|
var displayName: string;
|
|
125
125
|
}
|
package/dist/Text/Text.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Text.d.ts","sourceRoot":"","sources":["../../src/Text/Text.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAyB,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAE7D,OAAO,KAAK,EACV,QAAQ,EAER,QAAQ,EACR,SAAS,EACT,UAAU,EACV,WAAW,EACX,WAAW,EACX,SAAS,EACT,QAAQ,EACT,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"Text.d.ts","sourceRoot":"","sources":["../../src/Text/Text.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAyB,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAE7D,OAAO,KAAK,EACV,QAAQ,EAER,QAAQ,EACR,SAAS,EACT,UAAU,EACV,WAAW,EACX,WAAW,EACX,SAAS,EACT,QAAQ,EACT,MAAM,gBAAgB,CAAC;AAkBxB,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,UAAU,CAAC;AAE7C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAO5C,YAAY,EAAC,QAAQ,EAAE,QAAQ,EAAC,CAAC;AAEjC,MAAM,WAAW,SAAU,SAAQ,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC;IAC5D,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC7B;;;OAGG;IACH,IAAI,CAAC,EAAE,QAAQ,CAAC;IAEhB;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,QAAQ,CAAC;IAEhB;;;;OAIG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAElB;;OAEG;IACH,MAAM,CAAC,EAAE,UAAU,CAAC;IAEpB;;;;OAIG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;;;;OAMG;IACH,kBAAkB,CAAC,EAAE,OAAO,GAAG,cAAc,CAAC;IAE9C;;;OAGG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB;;OAEG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAEpB;;;;OAIG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;IAEpB;;;;OAIG;IACH,EAAE,CAAC,EAAE,MAAM,GAAG,GAAG,GAAG,KAAK,GAAG,OAAO,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;CAC1D;AA2BD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,IAAI,CAAC,EACnB,IAAa,EACb,IAAI,EACJ,KAAK,EACL,MAAM,EACN,OAAkB,EAClB,QAAY,EACZ,kBAAyB,EACzB,SAAS,EACT,QAAQ,EACR,OAAiB,EACjB,UAAkB,EAClB,gBAAwB,EACxB,iBAAyB,EACzB,MAAM,EACN,SAAS,EACT,KAAK,EACL,EAAE,EAAE,SAAkB,EACtB,QAAQ,EACR,GAAG,EACH,GAAG,KAAK,EACT,EAAE,SAAS,+BAmFX;yBAxGe,IAAI"}
|
package/dist/Text/Text.js
CHANGED
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
*/
|
|
18
18
|
import { lazy, Suspense, useRef } from 'react';
|
|
19
19
|
import * as stylex from '@stylexjs/stylex';
|
|
20
|
-
import { colorStyles, defaultWeightByTypeStyles, sizeByTypeStyles, weightStyles, displayStyles, justifyStyles, truncationStyles, wordBreakStyles, textWrapStyles, capsizeStyles, decorationStyles, tabularNumbersStyle, truncationTooltipStyles } from "./text.stylex.js";
|
|
20
|
+
import { colorStyles, defaultWeightByTypeStyles, sizeStyles, sizeByTypeStyles, weightStyles, displayStyles, justifyStyles, truncationStyles, wordBreakStyles, textWrapStyles, capsizeStyles, decorationStyles, tabularNumbersStyle, truncationTooltipStyles } from "./text.stylex.js";
|
|
21
21
|
import { useTruncation } from "./useTruncation.js";
|
|
22
22
|
import { mergeProps, mergeRefs } from "../utils/index.js";
|
|
23
23
|
import { themeProps } from "../utils/themeProps.js";
|
|
@@ -67,7 +67,7 @@ function resolveStyleType(type) {
|
|
|
67
67
|
*/
|
|
68
68
|
export function Text({
|
|
69
69
|
type = 'body',
|
|
70
|
-
size
|
|
70
|
+
size,
|
|
71
71
|
color,
|
|
72
72
|
weight,
|
|
73
73
|
display = 'inline',
|
|
@@ -120,8 +120,9 @@ export function Text({
|
|
|
120
120
|
ref: mergeRefs(ref, truncation.ref, textRef),
|
|
121
121
|
...mergeProps(themeProps('text', {
|
|
122
122
|
type,
|
|
123
|
+
size,
|
|
123
124
|
color: resolvedColor
|
|
124
|
-
}), stylex.props(colorStyles[resolvedColor], sizeByTypeStyles[styleType], defaultWeightByTypeStyles[styleType], weight && weightStyles[weight],
|
|
125
|
+
}), stylex.props(colorStyles[resolvedColor], sizeByTypeStyles[styleType], size && sizeStyles[size], defaultWeightByTypeStyles[styleType], weight && weightStyles[weight],
|
|
125
126
|
// Display: use truncation styles when maxLines > 0
|
|
126
127
|
maxLines === 1 ? truncationStyles.singleLine : maxLines > 1 ? truncationStyles.multiLine : displayStyles[resolvedDisplay],
|
|
127
128
|
// Word break when truncating
|
|
@@ -110,6 +110,41 @@ export declare const sizeByTypeStyles: Readonly<{
|
|
|
110
110
|
readonly lineHeight: stylex.StyleXClassNameFor<"lineHeight", "inherit">;
|
|
111
111
|
}>;
|
|
112
112
|
}>;
|
|
113
|
+
export declare const sizeStyles: Readonly<{
|
|
114
|
+
readonly '4xs': Readonly<{
|
|
115
|
+
readonly fontSize: stylex.StyleXClassNameFor<"fontSize", "0.375rem">;
|
|
116
|
+
}>;
|
|
117
|
+
readonly '3xs': Readonly<{
|
|
118
|
+
readonly fontSize: stylex.StyleXClassNameFor<"fontSize", "0.4375rem">;
|
|
119
|
+
}>;
|
|
120
|
+
readonly '2xs': Readonly<{
|
|
121
|
+
readonly fontSize: stylex.StyleXClassNameFor<"fontSize", "0.5rem">;
|
|
122
|
+
}>;
|
|
123
|
+
readonly xsm: Readonly<{
|
|
124
|
+
readonly fontSize: stylex.StyleXClassNameFor<"fontSize", "0.625rem">;
|
|
125
|
+
}>;
|
|
126
|
+
readonly sm: Readonly<{
|
|
127
|
+
readonly fontSize: stylex.StyleXClassNameFor<"fontSize", "0.75rem">;
|
|
128
|
+
}>;
|
|
129
|
+
readonly base: Readonly<{
|
|
130
|
+
readonly fontSize: stylex.StyleXClassNameFor<"fontSize", "0.875rem">;
|
|
131
|
+
}>;
|
|
132
|
+
readonly lg: Readonly<{
|
|
133
|
+
readonly fontSize: stylex.StyleXClassNameFor<"fontSize", "1.0625rem">;
|
|
134
|
+
}>;
|
|
135
|
+
readonly xl: Readonly<{
|
|
136
|
+
readonly fontSize: stylex.StyleXClassNameFor<"fontSize", "1.25rem">;
|
|
137
|
+
}>;
|
|
138
|
+
readonly '2xl': Readonly<{
|
|
139
|
+
readonly fontSize: stylex.StyleXClassNameFor<"fontSize", "1.5rem">;
|
|
140
|
+
}>;
|
|
141
|
+
readonly '3xl': Readonly<{
|
|
142
|
+
readonly fontSize: stylex.StyleXClassNameFor<"fontSize", "1.8125rem">;
|
|
143
|
+
}>;
|
|
144
|
+
readonly '4xl': Readonly<{
|
|
145
|
+
readonly fontSize: stylex.StyleXClassNameFor<"fontSize", "2.1875rem">;
|
|
146
|
+
}>;
|
|
147
|
+
}>;
|
|
113
148
|
export declare const sizeByLevelStyles: Readonly<{
|
|
114
149
|
readonly 1: Readonly<{
|
|
115
150
|
readonly fontSize: stylex.StyleXClassNameFor<"fontSize", "var(--font-size-2xl)">;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"text.stylex.d.ts","sourceRoot":"","sources":["../../src/Text/text.stylex.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AAEH,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"text.stylex.d.ts","sourceRoot":"","sources":["../../src/Text/text.stylex.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AAEH,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAa3C,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;EAmBtB,CAAC;AAMH,eAAO,MAAM,YAAY;;;;;;;;;;;;;EAavB,CAAC;AAMH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4BpC,CAAC;AAWH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsC3B,CAAC;AAMH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkCrB,CAAC;AASH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+B5B,CAAC;AAMH,eAAO,MAAM,aAAa;;;;;;;EAOxB,CAAC;AAMH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;EAe3B,CAAC;AAMH,eAAO,MAAM,eAAe;;;;;;;;EAQ1B,CAAC;AAMH,eAAO,MAAM,cAAc;;;;;;;;;;;;;EAazB,CAAC;AAMH,eAAO,MAAM,aAAa;;;;;;EAMxB,CAAC;AAMH,eAAO,MAAM,gBAAgB;;;;EAI3B,CAAC;AAMH,eAAO,MAAM,mBAAmB;;;;EAI9B,CAAC;AAMH,eAAO,MAAM,aAAa;;;;;;;;;;EAUxB,CAAC;AAMH,eAAO,MAAM,uBAAuB;;;;;EAKlC,CAAC"}
|
package/dist/Text/text.stylex.js
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
|
|
13
13
|
import * as stylex from '@stylexjs/stylex';
|
|
14
14
|
import "../theme/tokens.stylex.js";
|
|
15
|
-
import { colorVars, fontWeightVars, typeScaleVars, typographyVars } from "../theme/tokens.stylex.js";
|
|
15
|
+
import { colorVars, fontWeightVars, textSizeVars, typeScaleVars, typographyVars } from "../theme/tokens.stylex.js";
|
|
16
16
|
|
|
17
17
|
// =============================================================================
|
|
18
18
|
// Color Styles
|
|
@@ -169,6 +169,57 @@ export const sizeByTypeStyles = {
|
|
|
169
169
|
}
|
|
170
170
|
};
|
|
171
171
|
|
|
172
|
+
// =============================================================================
|
|
173
|
+
// Explicit Size Override
|
|
174
|
+
// =============================================================================
|
|
175
|
+
|
|
176
|
+
export const sizeStyles = {
|
|
177
|
+
"4xs": {
|
|
178
|
+
kGuDYH: "xxc45ev",
|
|
179
|
+
$$css: true
|
|
180
|
+
},
|
|
181
|
+
"3xs": {
|
|
182
|
+
kGuDYH: "x10p7juq",
|
|
183
|
+
$$css: true
|
|
184
|
+
},
|
|
185
|
+
"2xs": {
|
|
186
|
+
kGuDYH: "x16a80zy",
|
|
187
|
+
$$css: true
|
|
188
|
+
},
|
|
189
|
+
xsm: {
|
|
190
|
+
kGuDYH: "x51wmvv",
|
|
191
|
+
$$css: true
|
|
192
|
+
},
|
|
193
|
+
sm: {
|
|
194
|
+
kGuDYH: "x1eqnyfr",
|
|
195
|
+
$$css: true
|
|
196
|
+
},
|
|
197
|
+
base: {
|
|
198
|
+
kGuDYH: "x1j29vfg",
|
|
199
|
+
$$css: true
|
|
200
|
+
},
|
|
201
|
+
lg: {
|
|
202
|
+
kGuDYH: "xc7cgfe",
|
|
203
|
+
$$css: true
|
|
204
|
+
},
|
|
205
|
+
xl: {
|
|
206
|
+
kGuDYH: "x1wqms48",
|
|
207
|
+
$$css: true
|
|
208
|
+
},
|
|
209
|
+
"2xl": {
|
|
210
|
+
kGuDYH: "xhs0kqb",
|
|
211
|
+
$$css: true
|
|
212
|
+
},
|
|
213
|
+
"3xl": {
|
|
214
|
+
kGuDYH: "x10srzze",
|
|
215
|
+
$$css: true
|
|
216
|
+
},
|
|
217
|
+
"4xl": {
|
|
218
|
+
kGuDYH: "xqcvi3d",
|
|
219
|
+
$$css: true
|
|
220
|
+
}
|
|
221
|
+
};
|
|
222
|
+
|
|
172
223
|
// =============================================================================
|
|
173
224
|
// Baseline Size/Leading by Heading Level (from type-scale tokens)
|
|
174
225
|
//
|
|
@@ -79,6 +79,11 @@ export interface TokenizerProps<T extends SearchableItem> extends Omit<BaseProps
|
|
|
79
79
|
searchSource: SearchSource<T>;
|
|
80
80
|
/** Currently selected items. */
|
|
81
81
|
value: T[];
|
|
82
|
+
/**
|
|
83
|
+
* The HTML name attribute for form submissions. When set, hidden inputs
|
|
84
|
+
* carry one entry per selected item's id under this name.
|
|
85
|
+
*/
|
|
86
|
+
htmlName?: string;
|
|
82
87
|
/** Callback when selection changes. Includes change metadata. */
|
|
83
88
|
onChange: (items: T[], change: TokenizerChange<T>) => void;
|
|
84
89
|
/** Render function for dropdown items. Default: TypeaheadItem. */
|
|
@@ -189,7 +194,7 @@ export interface TokenizerProps<T extends SearchableItem> extends Omit<BaseProps
|
|
|
189
194
|
* />
|
|
190
195
|
* ```
|
|
191
196
|
*/
|
|
192
|
-
export declare function Tokenizer<T extends SearchableItem>({ label, isLabelHidden, description, isRequired, isOptional, status, startIcon, labelTooltip, searchSource, value, onChange, renderItem, renderToken, maxEntries, placeholder, hasEntriesOnFocus, maxMenuItems, emptySearchResultsText, isDisabled, disabledMessage, hasClear, endContent, hasAutoFocus, size: sizeProp, tokenOverflowBehavior, debounceMs, hasCreate, onChangeQuery, onFocus, onBlur, width, xstyle, className, style, 'data-testid': testId, ref, handleRef, }: TokenizerProps<T>): React.JSX.Element;
|
|
197
|
+
export declare function Tokenizer<T extends SearchableItem>({ label, isLabelHidden, description, isRequired, isOptional, status, startIcon, labelTooltip, searchSource, value, onChange, renderItem, renderToken, maxEntries, placeholder, hasEntriesOnFocus, maxMenuItems, emptySearchResultsText, isDisabled, htmlName, disabledMessage, hasClear, endContent, hasAutoFocus, size: sizeProp, tokenOverflowBehavior, debounceMs, hasCreate, onChangeQuery, onFocus, onBlur, width, xstyle, className, style, 'data-testid': testId, ref, handleRef, }: TokenizerProps<T>): React.JSX.Element;
|
|
193
198
|
export declare namespace Tokenizer {
|
|
194
199
|
var displayName: string;
|
|
195
200
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tokenizer.d.ts","sourceRoot":"","sources":["../../src/Tokenizer/Tokenizer.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,EAOZ,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;AAG9C,OAAO,EAGL,KAAK,WAAW,EAKjB,MAAM,UAAU,CAAC;AAElB,OAAO,EAAiB,KAAK,QAAQ,EAAC,MAAM,SAAS,CAAC;AAUtD,OAAO,KAAK,EAAC,cAAc,EAAE,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAKrE,YAAY,EACV,WAAW,IAAI,eAAe,EAC9B,eAAe,IAAI,mBAAmB,GACvC,MAAM,UAAU,CAAC;AAMlB;;GAEG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,cAAc,IAChD;IAAC,IAAI,EAAE,CAAC,CAAC;IAAC,IAAI,EAAE,KAAK,CAAA;CAAC,GACtB;IAAC,IAAI,EAAE,CAAC,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAA;CAAC,GACzB;IAAC,IAAI,EAAE,CAAC,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAA;CAAC,GACzB;IAAC,IAAI,EAAE,SAAS,CAAA;CAAC,CAAC;AAEtB,MAAM,MAAM,aAAa,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE/C;;;;;GAKG;AACH,MAAM,MAAM,yBAAyB,GACjC,MAAM,GACN,iBAAiB,GACjB,gBAAgB,CAAC;AAErB;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,iCAAiC;IACjC,KAAK,IAAI,IAAI,CAAC;IACd,gCAAgC;IAChC,IAAI,IAAI,IAAI,CAAC;CACd;AAED,MAAM,WAAW,cAAc,CAAC,CAAC,SAAS,cAAc,CAAE,SAAQ,IAAI,CACpE,SAAS,CAAC,cAAc,CAAC,EACzB,UAAU,CACX;IACC,mCAAmC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,8CAA8C;IAC9C,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,mBAAmB;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qCAAqC;IACrC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,qCAAqC;IACrC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,yBAAyB;IACzB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;;OAGG;IACH,SAAS,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IACjC;;;;OAIG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,qBAAqB;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qCAAqC;IACrC,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IAC9B,gCAAgC;IAChC,KAAK,EAAE,CAAC,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"Tokenizer.d.ts","sourceRoot":"","sources":["../../src/Tokenizer/Tokenizer.tsx"],"names":[],"mappings":"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"}
|