@gravitee/graphene-core 2.42.1 → 2.43.0-renovate-react.07a6489

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.
@@ -2,6 +2,7 @@ import { Accept, FileRejection } from 'react-dropzone';
2
2
  import * as React from 'react';
3
3
  interface FileUploadInputProps extends Omit<React.ComponentProps<'div'>, 'children' | 'onError'> {
4
4
  accept?: Accept;
5
+ describedById?: string;
5
6
  disabled?: boolean;
6
7
  hint?: React.ReactNode;
7
8
  icon?: React.ReactNode;
@@ -12,8 +13,9 @@ interface FileUploadInputProps extends Omit<React.ComponentProps<'div'>, 'childr
12
13
  multiple?: boolean;
13
14
  onFilesAccepted?: (files: File[]) => void;
14
15
  onFilesRejected?: (rejections: FileRejection[]) => void;
16
+ triggerLabel?: React.ReactNode;
15
17
  }
16
- declare function FileUploadInput({ accept, className, disabled, hint, icon, invalid, label, maxFileSize, maxFiles, multiple, onFilesAccepted, onFilesRejected, ...props }: FileUploadInputProps): React.JSX.Element;
18
+ declare function FileUploadInput({ accept, className, describedById, disabled, hint, icon, invalid, label, maxFileSize, maxFiles, multiple, onFilesAccepted, onFilesRejected, triggerLabel, ...props }: FileUploadInputProps): React.JSX.Element;
17
19
  export { FileUploadInput };
18
20
  export type { Accept, FileRejection } from 'react-dropzone';
19
21
  export type { FileUploadInputProps };
@@ -1 +1 @@
1
- {"version":3,"file":"FileUploadInput.d.ts","sourceRoot":"","sources":["../../../src/base/FileUploadInput/FileUploadInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,aAAa,EAAe,MAAM,gBAAgB,CAAC;AAM9E,UAAU,oBAAqB,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IAC9F,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC;IAC1C,eAAe,CAAC,EAAE,CAAC,UAAU,EAAE,aAAa,EAAE,KAAK,IAAI,CAAC;CACzD;AAqBD,iBAAS,eAAe,CAAC,EACvB,MAAM,EACN,SAAS,EACT,QAAQ,EACR,IAAI,EACJ,IAAI,EACJ,OAAO,EACP,KAAK,EACL,WAAW,EACX,QAAY,EACZ,QAAgB,EAChB,eAAe,EACf,eAAe,EACf,GAAG,KAAK,EACT,EAAE,oBAAoB,qBA+CtB;AAED,OAAO,EAAE,eAAe,EAAE,CAAC;AAC3B,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC5D,YAAY,EAAE,oBAAoB,EAAE,CAAC"}
1
+ {"version":3,"file":"FileUploadInput.d.ts","sourceRoot":"","sources":["../../../src/base/FileUploadInput/FileUploadInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,aAAa,EAAe,MAAM,gBAAgB,CAAC;AAO9E,UAAU,oBAAqB,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IAC9F,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC;IAC1C,eAAe,CAAC,EAAE,CAAC,UAAU,EAAE,aAAa,EAAE,KAAK,IAAI,CAAC;IACxD,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAChC;AAqBD,iBAAS,eAAe,CAAC,EACvB,MAAM,EACN,SAAS,EACT,aAAa,EACb,QAAQ,EACR,IAAI,EACJ,IAAI,EACJ,OAAO,EACP,KAAK,EACL,WAAW,EACX,QAAY,EACZ,QAAgB,EAChB,eAAe,EACf,eAAe,EACf,YAA4B,EAC5B,GAAG,KAAK,EACT,EAAE,oBAAoB,qBAgFtB;AAED,OAAO,EAAE,eAAe,EAAE,CAAC;AAC3B,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC5D,YAAY,EAAE,oBAAoB,EAAE,CAAC"}
@@ -1,7 +1,7 @@
1
- import { Accept, FileRejection } from '../../base/FileUploadInput';
1
+ import { Accept, FileRejection, FileUploadInputProps } from '../../base/FileUploadInput';
2
2
  import { FileUploadItemValue } from './FileUploadItem';
3
3
  import * as React from 'react';
4
- interface FileUploadProps {
4
+ interface FileUploadProps extends Pick<FileUploadInputProps, 'icon' | 'triggerLabel'> {
5
5
  accept?: Accept;
6
6
  className?: string;
7
7
  disabled?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"FileUpload.d.ts","sourceRoot":"","sources":["../../../src/composed/FileUpload/FileUpload.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,aAAa,EAAmB,MAAM,8CAA8C,CAAC;AAEhH,OAAO,EAAkB,KAAK,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAE5E,UAAU,eAAe;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,mBAAmB,EAAE,CAAC;IAC7B,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC;IACrC,aAAa,CAAC,EAAE,CAAC,UAAU,EAAE,aAAa,EAAE,KAAK,IAAI,CAAC;CACvD;AAED,iBAAS,UAAU,CAAC,EAClB,SAAS,EACT,MAAM,EACN,OAAO,EACP,KAAK,EACL,YAAY,EACZ,UAAU,EACV,aAAa,EACb,GAAG,UAAU,EACd,EAAE,eAAe,qBA6BjB;AAED,OAAO,EAAE,UAAU,EAAE,CAAC;AACtB,YAAY,EAAE,eAAe,EAAE,CAAC"}
1
+ {"version":3,"file":"FileUpload.d.ts","sourceRoot":"","sources":["../../../src/composed/FileUpload/FileUpload.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EACL,KAAK,MAAM,EACX,KAAK,aAAa,EAElB,KAAK,oBAAoB,EAC1B,MAAM,8CAA8C,CAAC;AAEtD,OAAO,EAAkB,KAAK,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAE5E,UAAU,eAAgB,SAAQ,IAAI,CAAC,oBAAoB,EAAE,MAAM,GAAG,cAAc,CAAC;IACnF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,mBAAmB,EAAE,CAAC;IAC7B,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC;IACrC,aAAa,CAAC,EAAE,CAAC,UAAU,EAAE,aAAa,EAAE,KAAK,IAAI,CAAC;CACvD;AAED,iBAAS,UAAU,CAAC,EAClB,SAAS,EACT,MAAM,EACN,OAAO,EACP,KAAK,EACL,YAAY,EACZ,UAAU,EACV,aAAa,EACb,GAAG,UAAU,EACd,EAAE,eAAe,qBA4EjB;AAED,OAAO,EAAE,UAAU,EAAE,CAAC;AACtB,YAAY,EAAE,eAAe,EAAE,CAAC"}
package/dist/index.js CHANGED
@@ -23203,42 +23203,61 @@ function gB({ maxFiles: e, maxFileSize: t, multiple: n }) {
23203
23203
  let r = [];
23204
23204
  return n && e !== void 0 && e > 1 && r.push(`Max ${e} files`), t !== void 0 && r.push(`Up to ${hB(t)}`), r.length > 0 ? r.join(" · ") : null;
23205
23205
  }
23206
- function _B({ accept: e, className: t, disabled: n, hint: r, icon: i, invalid: a, label: o, maxFileSize: s, maxFiles: c = 1, multiple: l = !1, onFilesAccepted: u, onFilesRejected: d, ...f }) {
23207
- let { getInputProps: p, getRootProps: m, isDragActive: h, isDragReject: g } = fB({
23206
+ function _B({ accept: e, className: t, describedById: n, disabled: r, hint: i, icon: a, invalid: o, label: s, maxFileSize: c, maxFiles: l = 1, multiple: u = !1, onFilesAccepted: d, onFilesRejected: f, triggerLabel: p = "Choose file", ...m }) {
23207
+ let { getInputProps: h, getRootProps: g, isDragActive: _, isDragReject: v, open: y } = fB({
23208
23208
  accept: e,
23209
- disabled: n,
23210
- maxFiles: c,
23211
- maxSize: s,
23212
- multiple: l,
23213
- onDropAccepted: u,
23214
- onDropRejected: d
23215
- }), _ = k.useId(), v = n ? "disabled" : a || g ? "reject" : h ? "active" : "idle", y = r === null ? null : r ?? gB({
23216
- maxFiles: c,
23217
- maxFileSize: s,
23218
- multiple: l
23219
- }), x = o === void 0 ? "Choose file to upload" : o;
23209
+ disabled: r,
23210
+ maxFiles: l,
23211
+ maxSize: c,
23212
+ multiple: u,
23213
+ noKeyboard: !0,
23214
+ onDropAccepted: d,
23215
+ onDropRejected: f
23216
+ }), x = k.useId(), S = k.useId(), C = r ? "disabled" : o || v ? "reject" : _ ? "active" : "idle", w = i === null ? null : i ?? gB({
23217
+ maxFiles: l,
23218
+ maxFileSize: c,
23219
+ multiple: u
23220
+ }), T = s === void 0 ? "Choose file to upload" : s, E = [n, w ? S : void 0].filter(Boolean).join(" ") || void 0;
23220
23221
  return /* @__PURE__ */ U("div", {
23221
- ...f,
23222
- ...m(),
23222
+ ...m,
23223
+ ...g(),
23223
23224
  "data-slot": "file-upload-input",
23224
- "data-state": v,
23225
- "aria-disabled": n ? !0 : void 0,
23226
- "aria-invalid": a || g ? !0 : void 0,
23227
- className: q("flex cursor-pointer flex-col items-center justify-center gap-3 rounded-xl border border-dashed border-input bg-background px-6 py-10 text-center transition-colors outline-none", "focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50", "data-active:border-ring data-active:bg-accent/40", "data-[state=reject]:border-destructive", "data-[state=disabled]:pointer-events-none data-[state=disabled]:cursor-not-allowed data-[state=disabled]:opacity-50", t),
23225
+ "data-state": C,
23226
+ "aria-disabled": r ? !0 : void 0,
23227
+ "aria-invalid": o || v ? !0 : void 0,
23228
+ className: q("flex cursor-pointer flex-col items-center justify-center gap-3 rounded-xl border border-dashed border-input bg-background px-6 py-10 text-center transition-colors outline-none", "data-active:border-ring data-active:bg-accent/40", "data-[state=reject]:border-destructive", "data-[state=disabled]:pointer-events-none data-[state=disabled]:cursor-not-allowed data-[state=disabled]:opacity-50", t),
23228
23229
  children: [
23229
- /* @__PURE__ */ H("input", { ...p(x ? { "aria-labelledby": _ } : { "aria-label": "Upload file" }) }),
23230
+ /* @__PURE__ */ H("input", { ...h({
23231
+ ...T ? { "aria-labelledby": x } : { "aria-label": "Choose file to upload" },
23232
+ "aria-describedby": E,
23233
+ "aria-invalid": o || v ? !0 : void 0
23234
+ }) }),
23230
23235
  /* @__PURE__ */ H("div", {
23231
23236
  "aria-hidden": "true",
23232
- className: q("flex items-center justify-center text-muted-foreground", x === null && y === null && "h-full w-full"),
23233
- children: i ?? /* @__PURE__ */ H(b, { className: "size-8" })
23237
+ className: q("flex items-center justify-center text-muted-foreground", T === null && w === null && "h-full w-full"),
23238
+ children: a ?? /* @__PURE__ */ H(b, { className: "size-8" })
23234
23239
  }),
23235
- x ? /* @__PURE__ */ H(fR, {
23236
- id: _,
23237
- children: x
23240
+ T ? /* @__PURE__ */ H(fR, {
23241
+ id: x,
23242
+ children: T
23238
23243
  }) : null,
23239
- y ? /* @__PURE__ */ H("div", {
23244
+ w ? /* @__PURE__ */ H("div", {
23245
+ id: S,
23240
23246
  className: "text-xs text-muted-foreground",
23241
- children: y
23247
+ children: w
23248
+ }) : null,
23249
+ p ? /* @__PURE__ */ H(hb, {
23250
+ type: "button",
23251
+ variant: "outline",
23252
+ size: "sm",
23253
+ disabled: r,
23254
+ "aria-describedby": E,
23255
+ "aria-invalid": o || v ? !0 : void 0,
23256
+ "data-slot": "file-upload-trigger",
23257
+ onClick: (e) => {
23258
+ e.stopPropagation(), y();
23259
+ },
23260
+ children: p
23242
23261
  }) : null
23243
23262
  ]
23244
23263
  });
@@ -30439,29 +30458,48 @@ function NJ({ className: e, item: t, onRemove: n, ...r }) {
30439
30458
  //#endregion
30440
30459
  //#region src/composed/FileUpload/FileUpload.tsx
30441
30460
  function PJ({ className: e, errors: t, invalid: n, items: r, onFileRemove: i, onFilesAdd: a, onFilesReject: o, ...s }) {
30442
- let c = t !== void 0 && t.length > 0;
30461
+ let c = k.useRef(null), l = k.useId(), [u, d] = k.useState(""), f = t !== void 0 && t.length > 0, p = (e) => {
30462
+ e.length === 1 ? d(`Added ${e[0].name}`) : e.length > 1 && d(`Added ${e.length} files`), a?.(e);
30463
+ }, m = (e) => {
30464
+ e.length === 1 ? d(`${e[0].file.name} rejected`) : e.length > 1 && d(`${e.length} files rejected`), o?.(e);
30465
+ }, h = (e) => {
30466
+ let t = r.findIndex((t) => t.id === e), n = r[t];
30467
+ n && d(`Removed ${n.file.name}`);
30468
+ let a = r[t + 1] ?? r[t - 1];
30469
+ requestAnimationFrame(a ? () => {
30470
+ Array.from(c.current?.querySelectorAll("[data-file-upload-item-id]") ?? []).find((e) => e.getAttribute("data-file-upload-item-id") === a.id)?.querySelector("button")?.focus();
30471
+ } : () => c.current?.querySelector("[data-slot=\"file-upload-trigger\"]")?.focus()), i?.(e);
30472
+ };
30443
30473
  return /* @__PURE__ */ U("div", {
30474
+ ref: c,
30444
30475
  "data-slot": "file-upload",
30445
30476
  className: q("flex flex-col gap-3", e),
30446
30477
  children: [
30447
30478
  /* @__PURE__ */ H(_B, {
30448
30479
  ...s,
30449
- invalid: n || c,
30450
- onFilesAccepted: a,
30451
- onFilesRejected: o
30480
+ invalid: n || f,
30481
+ describedById: f ? l : void 0,
30482
+ onFilesAccepted: p,
30483
+ onFilesRejected: m
30452
30484
  }),
30453
- c ? /* @__PURE__ */ H("ul", {
30454
- role: "alert",
30455
- className: "flex flex-col gap-1 text-xs text-destructive",
30456
- children: t.map((e, t) => /* @__PURE__ */ H("li", { children: e }, t))
30485
+ f ? /* @__PURE__ */ H(CR, {
30486
+ id: l,
30487
+ errors: t.map((e) => ({ message: e }))
30457
30488
  }) : null,
30458
30489
  r.length > 0 ? /* @__PURE__ */ H("ul", {
30459
30490
  className: "flex flex-col gap-2",
30460
30491
  children: r.map((e) => /* @__PURE__ */ H("li", { children: /* @__PURE__ */ H(NJ, {
30461
30492
  item: e,
30462
- onRemove: i
30493
+ onRemove: h,
30494
+ "data-file-upload-item-id": e.id
30463
30495
  }) }, e.id))
30464
- }) : null
30496
+ }) : null,
30497
+ /* @__PURE__ */ H("div", {
30498
+ role: "status",
30499
+ "aria-live": "polite",
30500
+ className: "sr-only",
30501
+ children: u
30502
+ })
30465
30503
  ]
30466
30504
  });
30467
30505
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gravitee/graphene-core",
3
- "version": "2.42.1",
3
+ "version": "2.43.0-renovate-react.07a6489",
4
4
  "type": "module",
5
5
  "description": "Gravitee's Graphene design system: accessible React components, design tokens, icons, and shared ESLint/TypeScript configs. Built on shadcn/ui and Tailwind.",
6
6
  "keywords": [
@@ -91,6 +91,7 @@
91
91
  },
92
92
  "peerDependencies": {
93
93
  "@fontsource/dm-sans": ">=5.0.0",
94
+ "@gravitee/graphene-core": "2.43.0-renovate-react.07a6489",
94
95
  "@tanstack/react-table": "^8.0.0",
95
96
  "@testing-library/dom": ">=10.0.0",
96
97
  "@testing-library/react": ">=16.0.0",