@jirawatpyk/aura-react 5.14.0 → 5.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +13 -0
- package/dist/aura.bundle.js +153 -21
- package/dist/cjs/index.cjs +153 -21
- package/dist/esm/Breadcrumb.js +76 -6
- package/dist/esm/Button.js +6 -2
- package/dist/esm/Checkbox.js +12 -2
- package/dist/esm/FilterBar.js +7 -1
- package/dist/esm/IconButton.js +7 -2
- package/dist/esm/Progress.js +14 -2
- package/dist/esm/Table.js +5 -2
- package/dist/esm/Tabs.js +7 -1
- package/dist/esm/display.js +8 -3
- package/dist/esm/strings.js +4 -0
- package/dist/esm/strings.sv.js +4 -0
- package/dist/esm/strings.th.js +4 -0
- package/dist/index.d.cts +57 -4
- package/dist/index.d.ts +57 -4
- package/dist/locales/sv.cjs +4 -0
- package/dist/locales/sv.d.cts +4 -0
- package/dist/locales/sv.d.ts +4 -0
- package/dist/locales/th.cjs +4 -0
- package/dist/locales/th.d.cts +4 -0
- package/dist/locales/th.d.ts +4 -0
- package/dist/server/index.cjs +20 -3
- package/dist/server/index.d.cts +14 -0
- package/dist/server/index.d.ts +14 -0
- package/dist/server/index.js +20 -3
- package/dist/styles.css +96 -0
- package/dist/styles.layer.css +96 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -186,6 +186,19 @@ DataTable with sort and page in the URL (4.17): `onStateChange={({ sort, page })
|
|
|
186
186
|
- **Time zone**: `timeZone` on AuraProvider, DatePicker, DateRangePicker and Calendar decides "today" (the marker, `min`/`max="today"`, the first month shown); or pass `today` as an ISO date. `todayIn('Asia/Bangkok')` is exported from the root and `/server`.
|
|
187
187
|
- **Toasts** queue past three instead of dropping: six in a row all show, in order, three at a time.
|
|
188
188
|
|
|
189
|
+
## 5.15 — Chamber-OS addenda 14–16, layout
|
|
190
|
+
|
|
191
|
+
- **Table `stackStyle="cards"`** (item 85): below `stackBelow` each row is its own framed card (DataTable's card radius, border, padding and 8px gap), with no frame around them; above it the table is unchanged. The table then sits in one more `div` (`.aura-tbl-cards`), which carries the width query. Table roles, labels and the `card` slots behave as before.
|
|
192
|
+
- **Card `header`** (item 87): free head content in place of `title` and `description` — skeleton bars while the card loads, a status pill above a title you mark up yourself. No heading is added and `title` / `titleId` are ignored; `actions` still sit top-right. Card `header` works from `/server` too.
|
|
193
|
+
- **Progress `secondaryValue`** (item 89): a reserved amount drawn after `value` in the same tone, striped (so it reads without colour), clamped to the end of the track. Screen readers hear "2 of 6 used, 1 reserved" (Thai and Swedish included) unless you pass `valueLabel`.
|
|
194
|
+
- **Tabs `fullWidth` for underline tabs** (item 90): `fullWidth` now works on the default look too, tabs sharing the row equally; `fullWidth="below-sm" | "below-md" | "below-lg"` does it only below that width (either look). Tabs never shrink below their label; too many scroll as before. Underline tabs that already passed `fullWidth` (ignored until now) now fill their row.
|
|
195
|
+
- **FilterBar `controlsLayout="fill"` and `stackBelow="lg"`** (item 92): `fill` gives the filters equal columns across their row (at least 120px each, wrapping when they can't fit) with the count and actions at the end; `stackBelow="lg"` puts the search on its own row up to 1024px (default `md`, 768px).
|
|
196
|
+
- **Card `flushBelow`** (item 93): `'sm' | 'md' | 'lg'` — below that width the card drops its border, surface and shadow (padding kept), for a list whose rows become cards of their own.
|
|
197
|
+
- **Breadcrumb `collapseBelow` and item attributes** (item 94): `collapseBelow="sm" | "md"` shows the first item, "…" and the last below that width, in CSS (the server's HTML is already right); "…" is a button ("Show the full path") that shows the rest and moves focus to the first item it revealed; a new trail (the next page, with the Breadcrumb kept mounted) starts collapsed again. "…" is a 24px target, 44px on touch screens. Each item takes `itemProps` (its `<li>`) and `linkProps` (its link, button or text) — `data-slot`, `data-testid`.
|
|
198
|
+
- **Checkbox `hitArea`** (item 99): `'target'` (24×24, WCAG 2.5.8) or `{ x, y }` px on each side — `{ x: 12, y: 8 }` is 40×32 — for a box without visible text; the box looks the same. A labelled checkbox's whole label is already its target.
|
|
199
|
+
- **`touchHeight` on Button and IconButton** (item 100): 44px tall (IconButton 44×44) below 640px, the size asked for above; the label stays centred. A Drawer's close button takes it through `closeProps={{ touchHeight: true }}`. `buttonClass({ touchHeight: true })` from `/server` gives the same class. Off by default.
|
|
200
|
+
- New strings `progressReserved` and `breadcrumbMore` in every locale; a pack you wrote yourself should add them (the built-in ones for the locale are used otherwise). The CSS budget is 25 kB (was 24).
|
|
201
|
+
|
|
189
202
|
## 5.14 — Chamber-OS addenda 15–16, the small items
|
|
190
203
|
|
|
191
204
|
- **EmptyState `headingLevel={false}`** (item 86): the title is a `<p>`, so an empty state inside a card or list adds nothing to the page's heading outline. EmptyState has no live-region role unless you pass `role`.
|
package/dist/aura.bundle.js
CHANGED
|
@@ -622,8 +622,11 @@ window.Aura = (() => {
|
|
|
622
622
|
"interactive",
|
|
623
623
|
"as",
|
|
624
624
|
"className",
|
|
625
|
-
"titleId"
|
|
625
|
+
"titleId",
|
|
626
|
+
"header",
|
|
627
|
+
"flushBelow"
|
|
626
628
|
]);
|
|
629
|
+
const head = props.header !== void 0 && props.header !== null && props.header !== false;
|
|
627
630
|
return h2(
|
|
628
631
|
props.as || "section",
|
|
629
632
|
Object.assign({}, rest, {
|
|
@@ -632,12 +635,13 @@ window.Aura = (() => {
|
|
|
632
635
|
"aura-card",
|
|
633
636
|
creative && "aura-card--creative",
|
|
634
637
|
props.interactive && "is-interactive",
|
|
638
|
+
props.flushBelow && "aura-card--flush-below-" + props.flushBelow,
|
|
635
639
|
props.className
|
|
636
640
|
),
|
|
637
641
|
/* A titled card is labelled by its title; otherwise the caller's aria-labelledby stays (5.8). */
|
|
638
|
-
"aria-labelledby": props.title && props.titleId ? props.titleId : props["aria-labelledby"]
|
|
642
|
+
"aria-labelledby": !head && props.title && props.titleId ? props.titleId : props["aria-labelledby"]
|
|
639
643
|
}),
|
|
640
|
-
props.title || props.actions ? /* @__PURE__ */ React4.createElement("div", { className: "aura-card__head" }, /* @__PURE__ */ React4.createElement("div", { className: "aura-card__heading" }, props.title ? h2("h" + (props.headingLevel || 3), { className: "aura-card__title", id: props.titleId }, props.title) : null, props.description ? /* @__PURE__ */ React4.createElement("p", { className: "aura-card__desc" }, props.description) : null), props.actions ? /* @__PURE__ */ React4.createElement("div", { className: "aura-card__actions" }, props.actions) : null) : null,
|
|
644
|
+
head || props.title || props.actions ? /* @__PURE__ */ React4.createElement("div", { className: "aura-card__head" }, /* @__PURE__ */ React4.createElement("div", { className: "aura-card__heading" }, head ? props.header : null, !head && props.title ? h2("h" + (props.headingLevel || 3), { className: "aura-card__title", id: props.titleId }, props.title) : null, !head && props.description ? /* @__PURE__ */ React4.createElement("p", { className: "aura-card__desc" }, props.description) : null), props.actions ? /* @__PURE__ */ React4.createElement("div", { className: "aura-card__actions" }, props.actions) : null) : null,
|
|
641
645
|
props.children ? /* @__PURE__ */ React4.createElement("div", { className: "aura-card__body" }, props.children) : null,
|
|
642
646
|
props.footer ? /* @__PURE__ */ React4.createElement("div", { className: "aura-card__foot" }, props.footer) : null
|
|
643
647
|
);
|
|
@@ -772,6 +776,7 @@ window.Aura = (() => {
|
|
|
772
776
|
"aura-btn--" + (opts.variant || "primary"),
|
|
773
777
|
opts.size === "sm" && "aura-btn--sm",
|
|
774
778
|
opts.fullWidth && "aura-btn--full",
|
|
779
|
+
opts.touchHeight && "aura-btn--touch",
|
|
775
780
|
opts.loading && "is-loading",
|
|
776
781
|
opts.className
|
|
777
782
|
);
|
|
@@ -901,6 +906,10 @@ window.Aura = (() => {
|
|
|
901
906
|
pageN: function(p) {
|
|
902
907
|
return "\u0E2B\u0E19\u0E49\u0E32 " + p;
|
|
903
908
|
},
|
|
909
|
+
progressReserved: function(v, r, max) {
|
|
910
|
+
return "\u0E43\u0E0A\u0E49\u0E41\u0E25\u0E49\u0E27 " + n(v) + " \u0E08\u0E32\u0E01 " + n(max) + " \u0E08\u0E2D\u0E07\u0E44\u0E27\u0E49 " + n(r);
|
|
911
|
+
},
|
|
912
|
+
breadcrumbMore: "\u0E41\u0E2A\u0E14\u0E07\u0E40\u0E2A\u0E49\u0E19\u0E17\u0E32\u0E07\u0E17\u0E31\u0E49\u0E07\u0E2B\u0E21\u0E14",
|
|
904
913
|
accepts: function(list, max) {
|
|
905
914
|
return [list, max && "\u0E44\u0E21\u0E48\u0E40\u0E01\u0E34\u0E19 " + max + " \u0E15\u0E48\u0E2D\u0E44\u0E1F\u0E25\u0E4C"].filter(Boolean).join(" \xB7 ");
|
|
906
915
|
}
|
|
@@ -1027,6 +1036,10 @@ window.Aura = (() => {
|
|
|
1027
1036
|
pageN: function(p) {
|
|
1028
1037
|
return "Sida " + p;
|
|
1029
1038
|
},
|
|
1039
|
+
progressReserved: function(v, r, max) {
|
|
1040
|
+
return nsv(v) + " av " + nsv(max) + " anv\xE4nda, " + nsv(r) + " reserverade";
|
|
1041
|
+
},
|
|
1042
|
+
breadcrumbMore: "Visa hela s\xF6kv\xE4gen",
|
|
1030
1043
|
accepts: function(list, max) {
|
|
1031
1044
|
return [list, max && "h\xF6gst " + max + " per fil"].filter(Boolean).join(", ");
|
|
1032
1045
|
}
|
|
@@ -1154,6 +1167,10 @@ window.Aura = (() => {
|
|
|
1154
1167
|
pageN: function(p) {
|
|
1155
1168
|
return "Page " + p;
|
|
1156
1169
|
},
|
|
1170
|
+
progressReserved: function(v, r, max) {
|
|
1171
|
+
return n2(v) + " of " + n2(max) + " used, " + n2(r) + " reserved";
|
|
1172
|
+
},
|
|
1173
|
+
breadcrumbMore: "Show the full path",
|
|
1157
1174
|
accepts: function(list, max) {
|
|
1158
1175
|
return [list, max && "up to " + max + " each"].filter(Boolean).join(", ");
|
|
1159
1176
|
}
|
|
@@ -1220,7 +1237,8 @@ window.Aura = (() => {
|
|
|
1220
1237
|
"linkComponent",
|
|
1221
1238
|
"href",
|
|
1222
1239
|
"fullWidth",
|
|
1223
|
-
"size"
|
|
1240
|
+
"size",
|
|
1241
|
+
"touchHeight"
|
|
1224
1242
|
]);
|
|
1225
1243
|
const Tag3 = disabled ? "a" : Link;
|
|
1226
1244
|
return /* @__PURE__ */ React6.createElement(
|
|
@@ -1236,6 +1254,7 @@ window.Aura = (() => {
|
|
|
1236
1254
|
variant,
|
|
1237
1255
|
size: props.size,
|
|
1238
1256
|
fullWidth: props.fullWidth,
|
|
1257
|
+
touchHeight: props.touchHeight,
|
|
1239
1258
|
className: props.className
|
|
1240
1259
|
}),
|
|
1241
1260
|
onClick: disabled ? void 0 : props.onClick
|
|
@@ -1266,7 +1285,8 @@ window.Aura = (() => {
|
|
|
1266
1285
|
"loading",
|
|
1267
1286
|
"onClick",
|
|
1268
1287
|
"fullWidth",
|
|
1269
|
-
"size"
|
|
1288
|
+
"size",
|
|
1289
|
+
"touchHeight"
|
|
1270
1290
|
]);
|
|
1271
1291
|
return /* @__PURE__ */ React6.createElement(
|
|
1272
1292
|
"button",
|
|
@@ -1278,6 +1298,7 @@ window.Aura = (() => {
|
|
|
1278
1298
|
variant,
|
|
1279
1299
|
size: props.size,
|
|
1280
1300
|
fullWidth: props.fullWidth,
|
|
1301
|
+
touchHeight: props.touchHeight,
|
|
1281
1302
|
loading,
|
|
1282
1303
|
className: props.className
|
|
1283
1304
|
}),
|
|
@@ -1297,7 +1318,7 @@ window.Aura = (() => {
|
|
|
1297
1318
|
// src/IconButton.tsx
|
|
1298
1319
|
var React7 = __toESM(require_react(), 1);
|
|
1299
1320
|
var IconButton = React7.forwardRef(function IconButton2(props, ref) {
|
|
1300
|
-
const rest = omit(props, ["icon", "label", "className", "size", "tone"]);
|
|
1321
|
+
const rest = omit(props, ["icon", "label", "className", "size", "tone", "touchHeight"]);
|
|
1301
1322
|
return /* @__PURE__ */ React7.createElement(
|
|
1302
1323
|
"button",
|
|
1303
1324
|
{
|
|
@@ -1306,7 +1327,12 @@ window.Aura = (() => {
|
|
|
1306
1327
|
type: props.type || "button",
|
|
1307
1328
|
"aria-label": props.label,
|
|
1308
1329
|
title: props.label,
|
|
1309
|
-
className: cx(
|
|
1330
|
+
className: cx(
|
|
1331
|
+
"aura-icon-btn",
|
|
1332
|
+
props.tone === "danger" && "aura-icon-btn--danger",
|
|
1333
|
+
props.touchHeight && "aura-icon-btn--touch",
|
|
1334
|
+
props.className
|
|
1335
|
+
)
|
|
1310
1336
|
},
|
|
1311
1337
|
/* @__PURE__ */ React7.createElement(Icon, { name: props.icon, size: props.size || "sm" })
|
|
1312
1338
|
);
|
|
@@ -1578,7 +1604,8 @@ window.Aura = (() => {
|
|
|
1578
1604
|
"description",
|
|
1579
1605
|
"className",
|
|
1580
1606
|
"tabIndex",
|
|
1581
|
-
"disabled"
|
|
1607
|
+
"disabled",
|
|
1608
|
+
"hitArea"
|
|
1582
1609
|
]);
|
|
1583
1610
|
const text2 = props.children;
|
|
1584
1611
|
const labelled = text2 != null && text2 !== "";
|
|
@@ -1588,10 +1615,19 @@ window.Aura = (() => {
|
|
|
1588
1615
|
"Checkbox `label` is only the accessible name: it is not shown. In 6.0 it will be shown beside the box, like Switch and TextField. For visible text now pass it as children; for a bare box (a table row) add `hideLabel`."
|
|
1589
1616
|
);
|
|
1590
1617
|
const descId = props.description ? (props.id || auto) + "-desc" : void 0;
|
|
1618
|
+
const ha = props.hitArea;
|
|
1619
|
+
const hit = !labelled && ha && ha !== "box" ? ha === "target" ? { x: 4, y: 4 } : ha : null;
|
|
1591
1620
|
return /* @__PURE__ */ React10.createElement(
|
|
1592
1621
|
"label",
|
|
1593
1622
|
{
|
|
1594
|
-
className: cx(
|
|
1623
|
+
className: cx(
|
|
1624
|
+
"aura-check",
|
|
1625
|
+
labelled && "aura-check--labelled",
|
|
1626
|
+
hit && "has-hit",
|
|
1627
|
+
props.disabled && "is-disabled",
|
|
1628
|
+
props.className
|
|
1629
|
+
),
|
|
1630
|
+
style: hit ? { "--aura-check-hit-x": hit.x + "px", "--aura-check-hit-y": hit.y + "px" } : void 0,
|
|
1595
1631
|
onClick: function(e) {
|
|
1596
1632
|
e.stopPropagation();
|
|
1597
1633
|
}
|
|
@@ -4140,7 +4176,13 @@ window.Aura = (() => {
|
|
|
4140
4176
|
ref,
|
|
4141
4177
|
role: "region",
|
|
4142
4178
|
"aria-label": props.label || t.filters,
|
|
4143
|
-
className: cx(
|
|
4179
|
+
className: cx(
|
|
4180
|
+
"aura-filterbar",
|
|
4181
|
+
props.searchGrow && "aura-filterbar--grow",
|
|
4182
|
+
props.controlsLayout === "fill" && "aura-filterbar--fill",
|
|
4183
|
+
props.stackBelow === "lg" && "aura-filterbar--stack-lg",
|
|
4184
|
+
props.className
|
|
4185
|
+
)
|
|
4144
4186
|
},
|
|
4145
4187
|
/* @__PURE__ */ React26.createElement("div", { className: "aura-filterbar__row" }, hasSearch ? /* @__PURE__ */ React26.createElement("div", { className: "aura-input has-icon aura-filterbar__search" }, /* @__PURE__ */ React26.createElement(Icon, { name: /* @__PURE__ */ React26.createElement(IconSearch, null), className: "aura-input__icon" }), /* @__PURE__ */ React26.createElement(
|
|
4146
4188
|
"input",
|
|
@@ -6142,7 +6184,13 @@ window.Aura = (() => {
|
|
|
6142
6184
|
const Link = useLinkComponent(props.linkComponent);
|
|
6143
6185
|
const manual = props.activation === "manual";
|
|
6144
6186
|
const seg = props.variant === "segmented";
|
|
6145
|
-
const
|
|
6187
|
+
const fw = props.fullWidth;
|
|
6188
|
+
const listCls = cx(
|
|
6189
|
+
"aura-tabs__list",
|
|
6190
|
+
seg && "aura-segmented",
|
|
6191
|
+
fw === true && (seg ? "is-full" : "is-fill"),
|
|
6192
|
+
typeof fw === "string" && (seg ? "is-full-" : "is-fill-") + fw
|
|
6193
|
+
);
|
|
6146
6194
|
const tabCls = function(on, extra) {
|
|
6147
6195
|
return cx("aura-tab", on && "is-active", seg && "aura-segmented__option", seg && on && "is-selected", extra);
|
|
6148
6196
|
};
|
|
@@ -6535,13 +6583,83 @@ window.Aura = (() => {
|
|
|
6535
6583
|
const t = useStrings();
|
|
6536
6584
|
const Link = useLinkComponent(props.linkComponent);
|
|
6537
6585
|
const items2 = props.items || [];
|
|
6538
|
-
|
|
6586
|
+
const collapsible = !!props.collapseBelow && items2.length > 2;
|
|
6587
|
+
const trail = items2.map(function(it) {
|
|
6588
|
+
return it.label + "" + (it.href || "");
|
|
6589
|
+
}).join("");
|
|
6590
|
+
const st = React35.useState(null), expanded = st[0] === trail, setExpanded = function() {
|
|
6591
|
+
st[1](trail);
|
|
6592
|
+
};
|
|
6593
|
+
const listRef = React35.useRef(null);
|
|
6594
|
+
const focusNext = React35.useRef(false);
|
|
6595
|
+
React35.useEffect(
|
|
6596
|
+
function() {
|
|
6597
|
+
if (!expanded || !focusNext.current) return;
|
|
6598
|
+
focusNext.current = false;
|
|
6599
|
+
const ol = listRef.current;
|
|
6600
|
+
if (!ol) return;
|
|
6601
|
+
let target = ol.querySelector(".aura-crumbs__middle a, .aura-crumbs__middle button");
|
|
6602
|
+
if (!target) {
|
|
6603
|
+
target = ol.querySelector(".aura-crumbs__middle > *");
|
|
6604
|
+
if (target) target.tabIndex = -1;
|
|
6605
|
+
}
|
|
6606
|
+
if (target) target.focus();
|
|
6607
|
+
},
|
|
6608
|
+
[expanded]
|
|
6609
|
+
);
|
|
6610
|
+
const sep = /* @__PURE__ */ React35.createElement(Icon, { name: /* @__PURE__ */ React35.createElement(IconChevronRight, null), size: 12, className: "aura-crumbs__sep" });
|
|
6611
|
+
const more = collapsible && !expanded ? /* @__PURE__ */ React35.createElement("li", { key: "more", className: "aura-crumbs__more" }, /* @__PURE__ */ React35.createElement(
|
|
6612
|
+
"button",
|
|
6613
|
+
{
|
|
6614
|
+
type: "button",
|
|
6615
|
+
"aria-label": t.breadcrumbMore,
|
|
6616
|
+
onClick: function() {
|
|
6617
|
+
focusNext.current = true;
|
|
6618
|
+
setExpanded();
|
|
6619
|
+
}
|
|
6620
|
+
},
|
|
6621
|
+
"\u2026"
|
|
6622
|
+
), sep) : null;
|
|
6623
|
+
const out = [];
|
|
6624
|
+
items2.forEach(function(it, i) {
|
|
6539
6625
|
const last = i === items2.length - 1;
|
|
6540
|
-
|
|
6541
|
-
|
|
6542
|
-
|
|
6543
|
-
|
|
6544
|
-
|
|
6626
|
+
const lp = it.linkProps || {};
|
|
6627
|
+
const plain = lp;
|
|
6628
|
+
const own = lp.onClick;
|
|
6629
|
+
const click = own || it.onClick ? function(e) {
|
|
6630
|
+
if (own) own(e);
|
|
6631
|
+
if (it.onClick) it.onClick();
|
|
6632
|
+
} : void 0;
|
|
6633
|
+
out.push(
|
|
6634
|
+
/* @__PURE__ */ React35.createElement(
|
|
6635
|
+
"li",
|
|
6636
|
+
{
|
|
6637
|
+
key: i,
|
|
6638
|
+
...it.itemProps,
|
|
6639
|
+
className: cx(it.itemProps && it.itemProps.className, collapsible && !last && i > 0 && "aura-crumbs__middle") || void 0
|
|
6640
|
+
},
|
|
6641
|
+
last ? /* @__PURE__ */ React35.createElement("span", { ...plain, "aria-current": "page", className: cx("aura-crumbs__current", lp.className) }, it.label) : it.href ? /* @__PURE__ */ React35.createElement(Link, { ...lp, href: it.href, onClick: click }, it.label) : it.onClick ? /* @__PURE__ */ React35.createElement("button", { ...lp, type: "button", onClick: click }, it.label) : (
|
|
6642
|
+
/* 5.7: a segment with no page and no action is text, not a button that does nothing. */
|
|
6643
|
+
/* @__PURE__ */ React35.createElement("span", { ...plain, className: cx("aura-crumbs__text", lp.className) }, it.label)
|
|
6644
|
+
),
|
|
6645
|
+
last ? null : sep
|
|
6646
|
+
)
|
|
6647
|
+
);
|
|
6648
|
+
if (i === 0 && more) out.push(more);
|
|
6649
|
+
});
|
|
6650
|
+
return /* @__PURE__ */ React35.createElement(
|
|
6651
|
+
"nav",
|
|
6652
|
+
{
|
|
6653
|
+
ref,
|
|
6654
|
+
"aria-label": props.label || t.breadcrumb,
|
|
6655
|
+
className: cx(
|
|
6656
|
+
"aura-crumbs",
|
|
6657
|
+
collapsible && !expanded && "aura-crumbs--collapse-" + props.collapseBelow,
|
|
6658
|
+
props.className
|
|
6659
|
+
)
|
|
6660
|
+
},
|
|
6661
|
+
/* @__PURE__ */ React35.createElement("ol", { ref: listRef }, out)
|
|
6662
|
+
);
|
|
6545
6663
|
});
|
|
6546
6664
|
|
|
6547
6665
|
// src/Avatar.tsx
|
|
@@ -6862,7 +6980,8 @@ window.Aura = (() => {
|
|
|
6862
6980
|
return out;
|
|
6863
6981
|
}
|
|
6864
6982
|
var Table = React44.forwardRef(function Table2(props, ref) {
|
|
6865
|
-
const { caption, captionHidden, density, stackBelow, align, bordered, className, children, ...rest } = props;
|
|
6983
|
+
const { caption, captionHidden, density, stackBelow, align, bordered, stackStyle, className, children, ...rest } = props;
|
|
6984
|
+
const cards = !!stackBelow && stackStyle === "cards";
|
|
6866
6985
|
const labels = stackBelow ? headerLabels(children) : null;
|
|
6867
6986
|
if (labels && !labels.length)
|
|
6868
6987
|
devWarnOnce(
|
|
@@ -6886,7 +7005,7 @@ window.Aura = (() => {
|
|
|
6886
7005
|
ro.disconnect();
|
|
6887
7006
|
};
|
|
6888
7007
|
}, []);
|
|
6889
|
-
|
|
7008
|
+
const table = /* @__PURE__ */ React44.createElement(
|
|
6890
7009
|
"div",
|
|
6891
7010
|
{
|
|
6892
7011
|
ref: wrap,
|
|
@@ -6905,6 +7024,7 @@ window.Aura = (() => {
|
|
|
6905
7024
|
"aura-tbl",
|
|
6906
7025
|
stackBelow && "aura-tbl--stack-" + stackBelow,
|
|
6907
7026
|
align === "middle" && "aura-tbl--middle",
|
|
7027
|
+
cards && "aura-tbl--cards",
|
|
6908
7028
|
className
|
|
6909
7029
|
),
|
|
6910
7030
|
role: stackBelow ? "table" : void 0,
|
|
@@ -6914,6 +7034,7 @@ window.Aura = (() => {
|
|
|
6914
7034
|
labels ? /* @__PURE__ */ React44.createElement(StackLabels.Provider, { value: labels }, children) : outer ? /* @__PURE__ */ React44.createElement(StackLabels.Provider, { value: null }, children) : children
|
|
6915
7035
|
)
|
|
6916
7036
|
);
|
|
7037
|
+
return cards ? /* @__PURE__ */ React44.createElement("div", { className: "aura-tbl-cards aura-tbl-cards--" + stackBelow }, table) : table;
|
|
6917
7038
|
});
|
|
6918
7039
|
function section(tag, cls) {
|
|
6919
7040
|
const C = React44.forwardRef(function TableSection(props, ref) {
|
|
@@ -8015,9 +8136,13 @@ window.Aura = (() => {
|
|
|
8015
8136
|
// src/Progress.tsx
|
|
8016
8137
|
var React53 = __toESM(require_react(), 1);
|
|
8017
8138
|
var Progress = React53.forwardRef(function Progress2(props, ref) {
|
|
8139
|
+
const t = useStrings();
|
|
8018
8140
|
const auto = uid(), id = props.id || auto;
|
|
8019
8141
|
const max = props.max || 100, det = props.value != null;
|
|
8020
8142
|
const pct = det ? Math.max(0, Math.min(100, props.value / max * 100)) : 0;
|
|
8143
|
+
const sec = det && props.secondaryValue != null && props.secondaryValue > 0 ? props.secondaryValue : 0;
|
|
8144
|
+
const spct = sec ? Math.max(0, Math.min(100 - pct, sec / max * 100)) : 0;
|
|
8145
|
+
const valueText = props.valueLabel != null ? String(props.valueLabel) : sec ? t.progressReserved(props.value, sec, max) : void 0;
|
|
8021
8146
|
const shown = props.valueLabel != null ? props.valueLabel : det ? Math.round(pct) + "%" : null;
|
|
8022
8147
|
return /* @__PURE__ */ React53.createElement(
|
|
8023
8148
|
"div",
|
|
@@ -8041,9 +8166,16 @@ window.Aura = (() => {
|
|
|
8041
8166
|
"aria-valuemin": det ? 0 : void 0,
|
|
8042
8167
|
"aria-valuemax": det ? max : void 0,
|
|
8043
8168
|
"aria-valuenow": det ? props.value : void 0,
|
|
8044
|
-
"aria-valuetext": det
|
|
8169
|
+
"aria-valuetext": det ? valueText : void 0
|
|
8045
8170
|
},
|
|
8046
|
-
/* @__PURE__ */ React53.createElement("span", { className: "aura-progress__bar", style: det ? { width: pct + "%" } : void 0 })
|
|
8171
|
+
/* @__PURE__ */ React53.createElement("span", { className: "aura-progress__bar", style: det ? { width: pct + "%" } : void 0 }),
|
|
8172
|
+
sec ? /* @__PURE__ */ React53.createElement(
|
|
8173
|
+
"span",
|
|
8174
|
+
{
|
|
8175
|
+
className: "aura-progress__bar aura-progress__bar--reserved",
|
|
8176
|
+
style: { left: pct + "%", width: spct + "%" }
|
|
8177
|
+
}
|
|
8178
|
+
) : null
|
|
8047
8179
|
),
|
|
8048
8180
|
props.hint ? /* @__PURE__ */ React53.createElement("p", { className: "aura-progress__hint" }, props.hint) : null
|
|
8049
8181
|
);
|