@jirawatpyk/aura-react 5.1.0 → 5.1.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.
Files changed (42) hide show
  1. package/dist/aura.bundle.js +418 -148
  2. package/dist/cjs/index.cjs +418 -148
  3. package/dist/esm/AppShell.js +10 -2
  4. package/dist/esm/Avatar.js +4 -3
  5. package/dist/esm/BottomNav.js +2 -1
  6. package/dist/esm/Checkbox.js +3 -2
  7. package/dist/esm/Combobox.js +19 -19
  8. package/dist/esm/Command.js +1 -0
  9. package/dist/esm/DataTable.js +44 -14
  10. package/dist/esm/DatePicker.js +81 -18
  11. package/dist/esm/DropdownMenu.js +12 -0
  12. package/dist/esm/FileUpload.js +15 -0
  13. package/dist/esm/FormErrorSummary.js +19 -4
  14. package/dist/esm/Menu.js +20 -7
  15. package/dist/esm/NumberField.js +3 -1
  16. package/dist/esm/Pagination.js +3 -3
  17. package/dist/esm/Popover.js +11 -1
  18. package/dist/esm/RadioGroup.js +14 -1
  19. package/dist/esm/SideNav.js +2 -1
  20. package/dist/esm/Switch.js +1 -1
  21. package/dist/esm/Table.js +3 -2
  22. package/dist/esm/Tabs.js +11 -7
  23. package/dist/esm/TextField.js +2 -2
  24. package/dist/esm/Textarea.js +2 -2
  25. package/dist/esm/ThemeStyle.js +13 -3
  26. package/dist/esm/Toaster.js +1 -0
  27. package/dist/esm/Tooltip.js +54 -29
  28. package/dist/esm/colorScheme.js +7 -3
  29. package/dist/esm/colorSchemeScript.js +3 -3
  30. package/dist/esm/dates.js +6 -3
  31. package/dist/esm/internal.js +18 -7
  32. package/dist/esm/locale.js +6 -5
  33. package/dist/esm/theme.js +3 -1
  34. package/dist/esm/useModal.js +31 -8
  35. package/dist/index.d.cts +1508 -0
  36. package/dist/index.d.ts +1 -1
  37. package/dist/server/index.cjs +6 -4
  38. package/dist/server/index.d.cts +176 -0
  39. package/dist/server/index.js +6 -4
  40. package/dist/styles.css +19 -3
  41. package/dist/styles.layer.css +19 -3
  42. package/package.json +19 -8
package/dist/esm/theme.js CHANGED
@@ -245,6 +245,8 @@ function createTheme(opts) {
245
245
  }
246
246
  if (s) check("light", "ink", "accent-lime (signal)", 4.5, INK, s[200]);
247
247
  function css(selector) {
248
+ if (selector !== void 0 && /[<{};@\r\n]|\/\*|\*\//.test(selector))
249
+ throw new Error('createTheme: "' + selector + '" is not a plain CSS selector');
248
250
  const light = selector ? selector : ':root, [data-theme="light"]';
249
251
  const dark = selector ? selector + ".dark, .dark " + selector + ", " + selector + '[data-theme="dark"], [data-theme="dark"] ' + selector : '.dark, [data-theme="dark"]';
250
252
  const system = selector ? '[data-theme="system"] ' + selector + ", " + selector + '[data-theme="system"]' : '[data-theme="system"]';
@@ -253,7 +255,7 @@ function createTheme(opts) {
253
255
  return " --aura-" + k + ": " + m[k] + ";";
254
256
  }).join("\n") + "\n}";
255
257
  }
256
- return "/* AURA theme" + (o.name ? ' "' + o.name + '"' : "") + ": brand " + o.brand + (o.signal ? ", signal " + o.signal : "") + (o.primary === "brand" ? ", brand primary buttons" : "") + ". Load after aura.css. Generated by createTheme. */\n" + block(light, L) + "\n" + block(dark, D) + "\n@media (prefers-color-scheme: dark) {\n" + block(system, D) + "\n}\n";
258
+ return "/* AURA theme" + (o.name ? ' "' + String(o.name).replace(/[*/<>\\]/g, "") + '"' : "") + ": brand " + o.brand + (o.signal ? ", signal " + o.signal : "") + (o.primary === "brand" ? ", brand primary buttons" : "") + ". Load after aura.css. Generated by createTheme. */\n" + block(light, L) + "\n" + block(dark, D) + "\n@media (prefers-color-scheme: dark) {\n" + block(system, D) + "\n}\n";
257
259
  }
258
260
  return {
259
261
  name: o.name || null,
@@ -1,6 +1,29 @@
1
1
  'use client';
2
2
  import * as React from "react";
3
3
  import { FOCUSABLE, useMounted } from "./internal.js";
4
+ let locks = 0, savedOverflow = "";
5
+ function lockScroll() {
6
+ const body = document.body;
7
+ if (locks === 0) savedOverflow = body.style.overflow;
8
+ locks++;
9
+ body.style.overflow = "hidden";
10
+ let done = false;
11
+ return function() {
12
+ if (done) return;
13
+ done = true;
14
+ locks--;
15
+ if (locks === 0) body.style.overflow = savedOverflow;
16
+ };
17
+ }
18
+ function tabbable(el) {
19
+ const all = Array.prototype.filter.call(el.querySelectorAll(FOCUSABLE), function(c) {
20
+ return c.tabIndex >= 0;
21
+ });
22
+ const shown = all.filter(function(c) {
23
+ return c.getClientRects().length > 0;
24
+ });
25
+ return shown.length ? shown : all;
26
+ }
4
27
  function useModal(open, ref, opts) {
5
28
  const mounted = useMounted();
6
29
  const prev = React.useRef(null);
@@ -9,8 +32,7 @@ function useModal(open, ref, opts) {
9
32
  function() {
10
33
  if (!open || !mounted) return;
11
34
  prev.current = document.activeElement;
12
- const body = document.body, overflow = body.style.overflow;
13
- body.style.overflow = "hidden";
35
+ const unlock = lockScroll();
14
36
  const el = ref.current;
15
37
  const firstIn = function(scope) {
16
38
  if (!scope || !el) return null;
@@ -25,7 +47,7 @@ function useModal(open, ref, opts) {
25
47
  const target = el && (el.querySelector("[data-autofocus]") || firstIn(o.bodySelector) || firstIn(o.footSelector) || el);
26
48
  if (target && o.autoFocus !== false) target.focus();
27
49
  return function() {
28
- body.style.overflow = overflow;
50
+ unlock();
29
51
  if (prev.current && prev.current.focus) prev.current.focus();
30
52
  };
31
53
  },
@@ -37,17 +59,18 @@ function useModal(open, ref, opts) {
37
59
  if (o.onEscape) o.onEscape();
38
60
  return;
39
61
  }
40
- if (e.key !== "Tab" || !ref.current) return;
41
- const list = Array.prototype.slice.call(ref.current.querySelectorAll(FOCUSABLE));
62
+ if (e.key !== "Tab" || !ref.current || e.defaultPrevented) return;
63
+ if (!ref.current.contains(e.target)) return;
64
+ const list = tabbable(ref.current);
42
65
  if (!list.length) {
43
66
  e.preventDefault();
44
67
  return;
45
68
  }
46
- const first = list[0], last = list[list.length - 1];
47
- if (e.shiftKey && (document.activeElement === first || document.activeElement === ref.current)) {
69
+ const first = list[0], last = list[list.length - 1], active = document.activeElement, stray = active === ref.current;
70
+ if (e.shiftKey && (active === first || stray)) {
48
71
  e.preventDefault();
49
72
  last.focus();
50
- } else if (!e.shiftKey && document.activeElement === last) {
73
+ } else if (!e.shiftKey && (active === last || stray)) {
51
74
  e.preventDefault();
52
75
  first.focus();
53
76
  }