@gravitee/graphene-core 2.1.0 → 2.2.0-graphene-84-tests.ae35e67
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/USAGE_GUIDE.md +130 -0
- package/dist/ThemeProvider-C_Ea8dI-.js +58 -0
- package/dist/__stories__/fixtures/file-upload.fixture.d.ts +10 -0
- package/dist/__stories__/fixtures/file-upload.fixture.d.ts.map +1 -0
- package/dist/base/Button/Button.harness.d.ts +16 -0
- package/dist/base/Button/Button.harness.d.ts.map +1 -0
- package/dist/base/Checkbox/Checkbox.harness.d.ts +17 -0
- package/dist/base/Checkbox/Checkbox.harness.d.ts.map +1 -0
- package/dist/base/FileUploadInput/FileUploadInput.d.ts +20 -0
- package/dist/base/FileUploadInput/FileUploadInput.d.ts.map +1 -0
- package/dist/base/FileUploadInput/index.d.ts +3 -0
- package/dist/base/FileUploadInput/index.d.ts.map +1 -0
- package/dist/base/Input/Input.harness.d.ts +18 -0
- package/dist/base/Input/Input.harness.d.ts.map +1 -0
- package/dist/base/Progress/Progress.d.ts +5 -0
- package/dist/base/Progress/Progress.d.ts.map +1 -0
- package/dist/base/Progress/index.d.ts +2 -0
- package/dist/base/Progress/index.d.ts.map +1 -0
- package/dist/base/RadioGroup/RadioGroup.harness.d.ts +23 -0
- package/dist/base/RadioGroup/RadioGroup.harness.d.ts.map +1 -0
- package/dist/base/Select/Select.harness.d.ts +19 -0
- package/dist/base/Select/Select.harness.d.ts.map +1 -0
- package/dist/base/Switch/Switch.harness.d.ts +17 -0
- package/dist/base/Switch/Switch.harness.d.ts.map +1 -0
- package/dist/base/Textarea/Textarea.harness.d.ts +17 -0
- package/dist/base/Textarea/Textarea.harness.d.ts.map +1 -0
- package/dist/composed/FileUpload/FileUpload.d.ts +23 -0
- package/dist/composed/FileUpload/FileUpload.d.ts.map +1 -0
- package/dist/composed/FileUpload/FileUploadItem.d.ts +17 -0
- package/dist/composed/FileUpload/FileUploadItem.d.ts.map +1 -0
- package/dist/composed/FileUpload/index.d.ts +5 -0
- package/dist/composed/FileUpload/index.d.ts.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9602 -6844
- package/dist/lib/format.d.ts +2 -0
- package/dist/lib/format.d.ts.map +1 -0
- package/dist/styles/globals.css +1 -1
- package/dist/testing/harnessQuery.d.ts +10 -0
- package/dist/testing/harnessQuery.d.ts.map +1 -0
- package/dist/testing/index.d.ts +18 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +228 -0
- package/dist/testing/renderWithGraphene.d.ts +13 -0
- package/dist/testing/renderWithGraphene.d.ts.map +1 -0
- package/package.json +19 -1
package/USAGE_GUIDE.md
CHANGED
|
@@ -15,6 +15,7 @@ This project uses the Graphene design system (`@gravitee/graphene-core`). Follow
|
|
|
15
15
|
| `@gravitee/graphene-core/icons` | Icon set used by Graphene components. Browse the catalog in Storybook (Overview / Showcase / Icons). |
|
|
16
16
|
| `@gravitee/graphene-core/fonts` | Loads DM Sans via `@fontsource/dm-sans`. Import once in the app entry. |
|
|
17
17
|
| `@gravitee/graphene-core/tailwind-theme` | Constrained Tailwind v4 theme: resets default palette/spacing/type and maps utilities to Graphene tokens. Use only if the app runs Tailwind for its own code. |
|
|
18
|
+
| `@gravitee/graphene-core/testing` | `renderWithGraphene` plus per-component harnesses (`buttonHarness`, `inputHarness`, …) for tests. See the **Testing** section below. |
|
|
18
19
|
| `@gravitee/graphene-core/eslint` / `@gravitee/graphene-core/tsconfig` | Shared tooling configs |
|
|
19
20
|
|
|
20
21
|
## Dependencies (what the host needs)
|
|
@@ -281,6 +282,135 @@ function MyButton({ loading, children, ...props }: MyButtonProps) {
|
|
|
281
282
|
}
|
|
282
283
|
```
|
|
283
284
|
|
|
285
|
+
## Testing
|
|
286
|
+
|
|
287
|
+
Graphene exposes a testing toolkit at `@gravitee/graphene-core/testing` so you can write tests for components that consume Graphene without re-implementing setup or DOM queries. It is built on top of React Testing Library (RTL) — bring your own runner and DOM environment.
|
|
288
|
+
|
|
289
|
+
### Dependencies
|
|
290
|
+
|
|
291
|
+
Install the RTL family in your app's devDependencies:
|
|
292
|
+
|
|
293
|
+
```bash
|
|
294
|
+
yarn add -D @testing-library/react @testing-library/dom @testing-library/user-event
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
Recommended (not required):
|
|
298
|
+
|
|
299
|
+
- **`happy-dom`** — DOM environment for your test runner. Implements `ResizeObserver`, `IntersectionObserver`, `matchMedia`, and `scrollIntoView` natively, all of which are needed by Radix-based primitives (Select, DropdownMenu, Dialog, …). `jsdom` works too but you will need to polyfill those APIs yourself.
|
|
300
|
+
- **`@testing-library/jest-dom`** — extra matchers like `toHaveFocus`, `toBeInTheDocument`. Optional; if you skip it, replace those matchers with plain attribute checks.
|
|
301
|
+
- **MSW** — for mocking HTTP calls. Compose with the harnesses; Graphene does not bundle a network mock.
|
|
302
|
+
|
|
303
|
+
### Vitest setup (typical)
|
|
304
|
+
|
|
305
|
+
```ts
|
|
306
|
+
// vitest.config.ts
|
|
307
|
+
import { defineConfig } from 'vitest/config';
|
|
308
|
+
import react from '@vitejs/plugin-react';
|
|
309
|
+
|
|
310
|
+
export default defineConfig({
|
|
311
|
+
plugins: [react()],
|
|
312
|
+
test: {
|
|
313
|
+
environment: 'happy-dom',
|
|
314
|
+
setupFiles: ['./vitest.setup.ts'],
|
|
315
|
+
},
|
|
316
|
+
});
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
```ts
|
|
320
|
+
// vitest.setup.ts
|
|
321
|
+
import '@testing-library/jest-dom/vitest';
|
|
322
|
+
import { cleanup } from '@testing-library/react';
|
|
323
|
+
import { afterEach } from 'vitest';
|
|
324
|
+
|
|
325
|
+
// happy-dom does not implement the Pointer Capture API; Radix primitives (Select, DropdownMenu, …) call into it on pointer events.
|
|
326
|
+
// Stub as no-ops so user.click() can drive Radix triggers in tests.
|
|
327
|
+
if (typeof Element !== 'undefined' && typeof Element.prototype.hasPointerCapture !== 'function') {
|
|
328
|
+
Element.prototype.hasPointerCapture = () => false;
|
|
329
|
+
Element.prototype.setPointerCapture = () => {};
|
|
330
|
+
Element.prototype.releasePointerCapture = () => {};
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
afterEach(() => {
|
|
334
|
+
cleanup();
|
|
335
|
+
});
|
|
336
|
+
```
|
|
337
|
+
|
|
338
|
+
### Writing tests
|
|
339
|
+
|
|
340
|
+
`renderWithGraphene` mounts your component inside a Graphene `ThemeProvider`. Each interactive primitive has a matching `xHarness({ name?, selector?, within? })` factory you attach **after** the render to interact with it.
|
|
341
|
+
|
|
342
|
+
```tsx
|
|
343
|
+
import { describe, expect, it, vi } from 'vitest';
|
|
344
|
+
import {
|
|
345
|
+
renderWithGraphene,
|
|
346
|
+
buttonHarness,
|
|
347
|
+
inputHarness,
|
|
348
|
+
} from '@gravitee/graphene-core/testing';
|
|
349
|
+
import { LoginForm } from './LoginForm';
|
|
350
|
+
|
|
351
|
+
it('submits credentials', async () => {
|
|
352
|
+
const onSubmit = vi.fn();
|
|
353
|
+
renderWithGraphene(<LoginForm onSubmit={onSubmit} />);
|
|
354
|
+
|
|
355
|
+
await inputHarness({ name: /email/i }).type('me@test.com');
|
|
356
|
+
await inputHarness({ name: /password/i }).type('s3cret');
|
|
357
|
+
await buttonHarness({ name: /log in/i }).click();
|
|
358
|
+
|
|
359
|
+
expect(onSubmit).toHaveBeenCalledWith({ email: 'me@test.com', password: 's3cret' });
|
|
360
|
+
});
|
|
361
|
+
```
|
|
362
|
+
|
|
363
|
+
### Query rules
|
|
364
|
+
|
|
365
|
+
`xHarness({...})` accepts three filters (combined with AND):
|
|
366
|
+
|
|
367
|
+
| Filter | Use |
|
|
368
|
+
| ----------- | ----------------------------------------------------------------------------------------------------------------- |
|
|
369
|
+
| `name` | Accessible name (label, `aria-label`, etc.). **Preferred** — RTL priority #1. |
|
|
370
|
+
| `selector` | CSS selector escape hatch (`#id`, `[data-testid="x"]`, `.foo`). Use when accessible name is ambiguous. |
|
|
371
|
+
| `within` | Restrict the search to a sub-tree (e.g. an `aria-label`-ed `<form>` element). |
|
|
372
|
+
|
|
373
|
+
If zero or more than one element matches when a `selector` is provided, the harness throws a descriptive error.
|
|
374
|
+
|
|
375
|
+
### Available harnesses
|
|
376
|
+
|
|
377
|
+
Every interactive base component exports a matching `xHarness` factory — `Button` → `buttonHarness`, `Input` → `inputHarness`, etc. The current list is whatever `@gravitee/graphene-core/testing` re-exports; IDE autocomplete on that import shows them all. Each harness has a few async actions (`click`, `type`, `select`, `toggle`, …) and synchronous getters (`getValue`, `isChecked`, `isDisabled`, …).
|
|
378
|
+
|
|
379
|
+
Two cases worth remembering:
|
|
380
|
+
|
|
381
|
+
- **`RadioGroup` exposes two harnesses** — `radioGroupHarness` (group-level: `select(value)`, `getValue`, `getOptions`) and `radioHarness` (single radio: `select`, `isSelected`, `getValue`).
|
|
382
|
+
- **Static primitives have no harness** — `Badge`, `Card`, `Skeleton`, `Avatar`, `Spinner`, `Separator`, `Label`, `Kbd`, `Alert`, etc. carry no behavior to drive. Query them directly with RTL's `getByRole` / `getByText`.
|
|
383
|
+
|
|
384
|
+
### Async data — wait before attaching
|
|
385
|
+
|
|
386
|
+
Harness queries throw immediately if the element is not in the DOM yet. For components that fetch data on mount, wait first using RTL's native `findBy*` / `waitFor` and **then** attach the harness:
|
|
387
|
+
|
|
388
|
+
```tsx
|
|
389
|
+
renderWithGraphene(<UserList />);
|
|
390
|
+
|
|
391
|
+
await screen.findByText('Alice'); // wait for the fetch
|
|
392
|
+
await buttonHarness({ name: /edit alice/i }).click(); // safe to attach now
|
|
393
|
+
```
|
|
394
|
+
|
|
395
|
+
Use `findBy*`/`waitFor` for async **outside** the user's action (network, timers). Use `await user.action()` (already built into our actions) for the time it takes a click/type to propagate through React.
|
|
396
|
+
|
|
397
|
+
### Multiple instances — pick the right filter
|
|
398
|
+
|
|
399
|
+
When several Graphene primitives sit in the same screen, use `name` (accessible label) first, then `within` to scope to a fieldset/form/section, and `selector` only as a last resort:
|
|
400
|
+
|
|
401
|
+
```tsx
|
|
402
|
+
// Form group with two buttons
|
|
403
|
+
const submit = buttonHarness({ name: /submit/i });
|
|
404
|
+
const cancel = buttonHarness({ name: /cancel/i });
|
|
405
|
+
|
|
406
|
+
// Two forms with the same field labels
|
|
407
|
+
const editForm = screen.getByRole('form', { name: 'edit' });
|
|
408
|
+
inputHarness({ name: /email/i, within: editForm }).type('new@test.com');
|
|
409
|
+
|
|
410
|
+
// Disambiguate by data-testid (escape hatch)
|
|
411
|
+
buttonHarness({ selector: '[data-testid="row-3-delete"]' }).click();
|
|
412
|
+
```
|
|
413
|
+
|
|
284
414
|
## Common mistakes to avoid
|
|
285
415
|
|
|
286
416
|
- Importing `@gravitee/graphene-core/styles` **before** the app Tailwind entry when using Tier 2 (preflight can override Graphene base styles such as default border color).
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { createContext as e, useCallback as t, useContext as n, useEffect as r, useMemo as i, useState as a } from "react";
|
|
2
|
+
import { jsx as o } from "react/jsx-runtime";
|
|
3
|
+
//#region src/composed/ThemeProvider/ThemeProvider.tsx
|
|
4
|
+
var s = "graphene.theme.mode", c = e(null);
|
|
5
|
+
function l() {
|
|
6
|
+
return typeof window > "u" ? "light" : window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
|
|
7
|
+
}
|
|
8
|
+
function u(e) {
|
|
9
|
+
document.documentElement.classList.toggle("dark", e === "dark");
|
|
10
|
+
}
|
|
11
|
+
function d() {
|
|
12
|
+
if (typeof window > "u") return null;
|
|
13
|
+
try {
|
|
14
|
+
let e = window.localStorage.getItem(s);
|
|
15
|
+
return e === "light" || e === "dark" || e === "system" ? e : null;
|
|
16
|
+
} catch {
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
function f(e) {
|
|
21
|
+
try {
|
|
22
|
+
window.localStorage.setItem(s, e);
|
|
23
|
+
} catch {}
|
|
24
|
+
}
|
|
25
|
+
function p({ children: e, defaultMode: n = "system" }) {
|
|
26
|
+
let [s, p] = a(() => d() ?? n), [m, h] = a(l);
|
|
27
|
+
r(() => {
|
|
28
|
+
if (s !== "system") return;
|
|
29
|
+
let e = window.matchMedia("(prefers-color-scheme: dark)"), t = (e) => h(e.matches ? "dark" : "light");
|
|
30
|
+
return e.addEventListener("change", t), () => e.removeEventListener("change", t);
|
|
31
|
+
}, [s]);
|
|
32
|
+
let g = s === "system" ? m : s;
|
|
33
|
+
r(() => {
|
|
34
|
+
u(g);
|
|
35
|
+
}, [g]);
|
|
36
|
+
let _ = t((e) => {
|
|
37
|
+
p(e), f(e);
|
|
38
|
+
}, []), v = i(() => ({
|
|
39
|
+
mode: s,
|
|
40
|
+
setMode: _,
|
|
41
|
+
resolvedTheme: g
|
|
42
|
+
}), [
|
|
43
|
+
s,
|
|
44
|
+
_,
|
|
45
|
+
g
|
|
46
|
+
]);
|
|
47
|
+
return /* @__PURE__ */ o(c.Provider, {
|
|
48
|
+
value: v,
|
|
49
|
+
children: e
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
function m() {
|
|
53
|
+
let e = n(c);
|
|
54
|
+
if (!e) throw Error("useTheme must be used within a ThemeProvider.");
|
|
55
|
+
return e;
|
|
56
|
+
}
|
|
57
|
+
//#endregion
|
|
58
|
+
export { m as n, p as t };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { FileUploadItemValue } from '../../composed/FileUpload';
|
|
2
|
+
/** One item per FileTypeKind, with mixed statuses (success / uploading / error). */
|
|
3
|
+
export declare const fileUploadGalleryItems: FileUploadItemValue[];
|
|
4
|
+
/** Same files as the gallery, without progress/status (queued / unstarted). */
|
|
5
|
+
export declare const fileUploadGalleryIdleItems: FileUploadItemValue[];
|
|
6
|
+
/** Mid-upload + failed pair. */
|
|
7
|
+
export declare const fileUploadErrorItems: FileUploadItemValue[];
|
|
8
|
+
/** Single completed upload, used by the disabled-state story. */
|
|
9
|
+
export declare const fileUploadDisabledItems: FileUploadItemValue[];
|
|
10
|
+
//# sourceMappingURL=file-upload.fixture.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-upload.fixture.d.ts","sourceRoot":"","sources":["../../../src/__stories__/fixtures/file-upload.fixture.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAC;AAevF,oFAAoF;AACpF,eAAO,MAAM,sBAAsB,EAAE,mBAAmB,EAOvD,CAAC;AAEF,+EAA+E;AAC/E,eAAO,MAAM,0BAA0B,EAAE,mBAAmB,EAO3D,CAAC;AAEF,gCAAgC;AAChC,eAAO,MAAM,oBAAoB,EAAE,mBAAmB,EAGrD,CAAC;AAEF,iEAAiE;AACjE,eAAO,MAAM,uBAAuB,EAAE,mBAAmB,EAExD,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { HarnessQuery } from '../../testing/harnessQuery';
|
|
2
|
+
interface ButtonHarness {
|
|
3
|
+
readonly click: () => Promise<void>;
|
|
4
|
+
readonly hover: () => Promise<void>;
|
|
5
|
+
readonly focus: () => void;
|
|
6
|
+
readonly getElement: () => HTMLElement;
|
|
7
|
+
readonly getText: () => string;
|
|
8
|
+
readonly getVariant: () => string | null;
|
|
9
|
+
readonly getSize: () => string | null;
|
|
10
|
+
readonly isDisabled: () => boolean;
|
|
11
|
+
readonly hasIcon: () => boolean;
|
|
12
|
+
}
|
|
13
|
+
declare function buttonHarness(query?: HarnessQuery): ButtonHarness;
|
|
14
|
+
export { buttonHarness };
|
|
15
|
+
export type { ButtonHarness };
|
|
16
|
+
//# sourceMappingURL=Button.harness.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Button.harness.d.ts","sourceRoot":"","sources":["../../../src/base/Button/Button.harness.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAoB,KAAK,YAAY,EAAE,MAAM,8CAA8C,CAAC;AAEnG,UAAU,aAAa;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,QAAQ,CAAC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,QAAQ,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,WAAW,CAAC;IACvC,QAAQ,CAAC,OAAO,EAAE,MAAM,MAAM,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IACzC,QAAQ,CAAC,OAAO,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IACtC,QAAQ,CAAC,UAAU,EAAE,MAAM,OAAO,CAAC;IACnC,QAAQ,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC;CACjC;AAED,iBAAS,aAAa,CAAC,KAAK,GAAE,YAAiB,GAAG,aAAa,CA2B9D;AAED,OAAO,EAAE,aAAa,EAAE,CAAC;AACzB,YAAY,EAAE,aAAa,EAAE,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { HarnessQuery } from '../../testing/harnessQuery';
|
|
2
|
+
interface CheckboxHarness {
|
|
3
|
+
readonly check: () => Promise<void>;
|
|
4
|
+
readonly uncheck: () => Promise<void>;
|
|
5
|
+
readonly toggle: () => Promise<void>;
|
|
6
|
+
readonly focus: () => void;
|
|
7
|
+
readonly getElement: () => HTMLElement;
|
|
8
|
+
readonly isChecked: () => boolean;
|
|
9
|
+
readonly isIndeterminate: () => boolean;
|
|
10
|
+
readonly isDisabled: () => boolean;
|
|
11
|
+
readonly isRequired: () => boolean;
|
|
12
|
+
readonly isInvalid: () => boolean;
|
|
13
|
+
}
|
|
14
|
+
declare function checkboxHarness(query?: HarnessQuery): CheckboxHarness;
|
|
15
|
+
export { checkboxHarness };
|
|
16
|
+
export type { CheckboxHarness };
|
|
17
|
+
//# sourceMappingURL=Checkbox.harness.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Checkbox.harness.d.ts","sourceRoot":"","sources":["../../../src/base/Checkbox/Checkbox.harness.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAoB,KAAK,YAAY,EAAE,MAAM,8CAA8C,CAAC;AAEnG,UAAU,eAAe;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,QAAQ,CAAC,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,WAAW,CAAC;IACvC,QAAQ,CAAC,SAAS,EAAE,MAAM,OAAO,CAAC;IAClC,QAAQ,CAAC,eAAe,EAAE,MAAM,OAAO,CAAC;IACxC,QAAQ,CAAC,UAAU,EAAE,MAAM,OAAO,CAAC;IACnC,QAAQ,CAAC,UAAU,EAAE,MAAM,OAAO,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,MAAM,OAAO,CAAC;CACnC;AAED,iBAAS,eAAe,CAAC,KAAK,GAAE,YAAiB,GAAG,eAAe,CAiClE;AAED,OAAO,EAAE,eAAe,EAAE,CAAC;AAC3B,YAAY,EAAE,eAAe,EAAE,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Accept, FileRejection } from 'react-dropzone';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
interface FileUploadInputProps extends Omit<React.ComponentProps<'div'>, 'children' | 'onError'> {
|
|
4
|
+
accept?: Accept;
|
|
5
|
+
disabled?: boolean;
|
|
6
|
+
hint?: React.ReactNode;
|
|
7
|
+
icon?: React.ReactNode;
|
|
8
|
+
invalid?: boolean;
|
|
9
|
+
label?: React.ReactNode;
|
|
10
|
+
maxFileSize?: number;
|
|
11
|
+
maxFiles?: number;
|
|
12
|
+
multiple?: boolean;
|
|
13
|
+
onFilesAccepted?: (files: File[]) => void;
|
|
14
|
+
onFilesRejected?: (rejections: FileRejection[]) => void;
|
|
15
|
+
}
|
|
16
|
+
declare function FileUploadInput({ accept, className, disabled, hint, icon, invalid, label, maxFileSize, maxFiles, multiple, onFilesAccepted, onFilesRejected, ...props }: FileUploadInputProps): import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
export { FileUploadInput };
|
|
18
|
+
export type { Accept, FileRejection } from 'react-dropzone';
|
|
19
|
+
export type { FileUploadInputProps };
|
|
20
|
+
//# sourceMappingURL=FileUploadInput.d.ts.map
|
|
@@ -0,0 +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,2CA+CtB;AAED,OAAO,EAAE,eAAe,EAAE,CAAC;AAC3B,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC5D,YAAY,EAAE,oBAAoB,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/base/FileUploadInput/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { HarnessQuery } from '../../testing/harnessQuery';
|
|
2
|
+
interface InputHarness {
|
|
3
|
+
readonly type: (value: string) => Promise<void>;
|
|
4
|
+
readonly clear: () => Promise<void>;
|
|
5
|
+
readonly focus: () => void;
|
|
6
|
+
readonly blur: () => void;
|
|
7
|
+
readonly getElement: () => HTMLInputElement;
|
|
8
|
+
readonly getValue: () => string;
|
|
9
|
+
readonly getType: () => string;
|
|
10
|
+
readonly getPlaceholder: () => string | null;
|
|
11
|
+
readonly isDisabled: () => boolean;
|
|
12
|
+
readonly isRequired: () => boolean;
|
|
13
|
+
readonly isInvalid: () => boolean;
|
|
14
|
+
}
|
|
15
|
+
declare function inputHarness(query?: HarnessQuery): InputHarness;
|
|
16
|
+
export { inputHarness };
|
|
17
|
+
export type { InputHarness };
|
|
18
|
+
//# sourceMappingURL=Input.harness.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Input.harness.d.ts","sourceRoot":"","sources":["../../../src/base/Input/Input.harness.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAoB,KAAK,YAAY,EAAE,MAAM,8CAA8C,CAAC;AAEnG,UAAU,YAAY;IACpB,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,QAAQ,CAAC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,QAAQ,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,gBAAgB,CAAC;IAC5C,QAAQ,CAAC,QAAQ,EAAE,MAAM,MAAM,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,MAAM,CAAC;IAC/B,QAAQ,CAAC,cAAc,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IAC7C,QAAQ,CAAC,UAAU,EAAE,MAAM,OAAO,CAAC;IACnC,QAAQ,CAAC,UAAU,EAAE,MAAM,OAAO,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,MAAM,OAAO,CAAC;CACnC;AAED,iBAAS,YAAY,CAAC,KAAK,GAAE,YAAiB,GAAG,YAAY,CA2C5D;AAED,OAAO,EAAE,YAAY,EAAE,CAAC;AACxB,YAAY,EAAE,YAAY,EAAE,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { Progress as ProgressPrimitive } from 'radix-ui';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
declare function Progress({ className, value, ...props }: React.ComponentProps<typeof ProgressPrimitive.Root>): import("react/jsx-runtime").JSX.Element;
|
|
4
|
+
export { Progress };
|
|
5
|
+
//# sourceMappingURL=Progress.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Progress.d.ts","sourceRoot":"","sources":["../../../src/base/Progress/Progress.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,iBAAiB,EAAE,MAAM,UAAU,CAAC;AACzD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,iBAAS,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,iBAAiB,CAAC,IAAI,CAAC,2CAcpG;AAED,OAAO,EAAE,QAAQ,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/base/Progress/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { HarnessQuery } from '../../testing/harnessQuery';
|
|
2
|
+
interface RadioGroupHarness {
|
|
3
|
+
readonly select: (value: string) => Promise<void>;
|
|
4
|
+
readonly getElement: () => HTMLElement;
|
|
5
|
+
readonly getValue: () => string | null;
|
|
6
|
+
readonly getOptions: () => string[];
|
|
7
|
+
readonly isDisabled: () => boolean;
|
|
8
|
+
readonly isRequired: () => boolean;
|
|
9
|
+
readonly isInvalid: () => boolean;
|
|
10
|
+
}
|
|
11
|
+
interface RadioHarness {
|
|
12
|
+
readonly select: () => Promise<void>;
|
|
13
|
+
readonly focus: () => void;
|
|
14
|
+
readonly getElement: () => HTMLElement;
|
|
15
|
+
readonly getValue: () => string | null;
|
|
16
|
+
readonly isSelected: () => boolean;
|
|
17
|
+
readonly isDisabled: () => boolean;
|
|
18
|
+
}
|
|
19
|
+
declare function radioGroupHarness(query?: HarnessQuery): RadioGroupHarness;
|
|
20
|
+
declare function radioHarness(query?: HarnessQuery): RadioHarness;
|
|
21
|
+
export { radioGroupHarness, radioHarness };
|
|
22
|
+
export type { RadioGroupHarness, RadioHarness };
|
|
23
|
+
//# sourceMappingURL=RadioGroup.harness.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RadioGroup.harness.d.ts","sourceRoot":"","sources":["../../../src/base/RadioGroup/RadioGroup.harness.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAoB,KAAK,YAAY,EAAE,MAAM,8CAA8C,CAAC;AAEnG,UAAU,iBAAiB;IACzB,QAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD,QAAQ,CAAC,UAAU,EAAE,MAAM,WAAW,CAAC;IACvC,QAAQ,CAAC,QAAQ,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IACvC,QAAQ,CAAC,UAAU,EAAE,MAAM,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,UAAU,EAAE,MAAM,OAAO,CAAC;IACnC,QAAQ,CAAC,UAAU,EAAE,MAAM,OAAO,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,MAAM,OAAO,CAAC;CACnC;AAED,UAAU,YAAY;IACpB,QAAQ,CAAC,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,WAAW,CAAC;IACvC,QAAQ,CAAC,QAAQ,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IACvC,QAAQ,CAAC,UAAU,EAAE,MAAM,OAAO,CAAC;IACnC,QAAQ,CAAC,UAAU,EAAE,MAAM,OAAO,CAAC;CACpC;AAMD,iBAAS,iBAAiB,CAAC,KAAK,GAAE,YAAiB,GAAG,iBAAiB,CAuCtE;AAED,iBAAS,YAAY,CAAC,KAAK,GAAE,YAAiB,GAAG,YAAY,CA0B5D;AAED,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,CAAC;AAC3C,YAAY,EAAE,iBAAiB,EAAE,YAAY,EAAE,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { HarnessQuery } from '../../testing/harnessQuery';
|
|
2
|
+
interface SelectHarness {
|
|
3
|
+
readonly open: () => Promise<void>;
|
|
4
|
+
readonly close: () => Promise<void>;
|
|
5
|
+
readonly selectOption: (label: string | RegExp) => Promise<void>;
|
|
6
|
+
readonly focus: () => void;
|
|
7
|
+
readonly getElement: () => HTMLElement;
|
|
8
|
+
readonly getValue: () => string | null;
|
|
9
|
+
readonly getOptions: () => string[];
|
|
10
|
+
readonly getSize: () => string | null;
|
|
11
|
+
readonly isOpen: () => boolean;
|
|
12
|
+
readonly isDisabled: () => boolean;
|
|
13
|
+
readonly isRequired: () => boolean;
|
|
14
|
+
readonly isInvalid: () => boolean;
|
|
15
|
+
}
|
|
16
|
+
declare function selectHarness(query?: HarnessQuery): SelectHarness;
|
|
17
|
+
export { selectHarness };
|
|
18
|
+
export type { SelectHarness };
|
|
19
|
+
//# sourceMappingURL=Select.harness.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Select.harness.d.ts","sourceRoot":"","sources":["../../../src/base/Select/Select.harness.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAoB,KAAK,YAAY,EAAE,MAAM,8CAA8C,CAAC;AAEnG,UAAU,aAAa;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,QAAQ,CAAC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,QAAQ,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACjE,QAAQ,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,WAAW,CAAC;IACvC,QAAQ,CAAC,QAAQ,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IACvC,QAAQ,CAAC,UAAU,EAAE,MAAM,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IACtC,QAAQ,CAAC,MAAM,EAAE,MAAM,OAAO,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,OAAO,CAAC;IACnC,QAAQ,CAAC,UAAU,EAAE,MAAM,OAAO,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,MAAM,OAAO,CAAC;CACnC;AAED,iBAAS,aAAa,CAAC,KAAK,GAAE,YAAiB,GAAG,aAAa,CA4D9D;AAED,OAAO,EAAE,aAAa,EAAE,CAAC;AACzB,YAAY,EAAE,aAAa,EAAE,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { HarnessQuery } from '../../testing/harnessQuery';
|
|
2
|
+
interface SwitchHarness {
|
|
3
|
+
readonly check: () => Promise<void>;
|
|
4
|
+
readonly uncheck: () => Promise<void>;
|
|
5
|
+
readonly toggle: () => Promise<void>;
|
|
6
|
+
readonly focus: () => void;
|
|
7
|
+
readonly getElement: () => HTMLElement;
|
|
8
|
+
readonly getSize: () => string | null;
|
|
9
|
+
readonly isChecked: () => boolean;
|
|
10
|
+
readonly isDisabled: () => boolean;
|
|
11
|
+
readonly isRequired: () => boolean;
|
|
12
|
+
readonly isInvalid: () => boolean;
|
|
13
|
+
}
|
|
14
|
+
declare function switchHarness(query?: HarnessQuery): SwitchHarness;
|
|
15
|
+
export { switchHarness };
|
|
16
|
+
export type { SwitchHarness };
|
|
17
|
+
//# sourceMappingURL=Switch.harness.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Switch.harness.d.ts","sourceRoot":"","sources":["../../../src/base/Switch/Switch.harness.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAoB,KAAK,YAAY,EAAE,MAAM,8CAA8C,CAAC;AAEnG,UAAU,aAAa;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,QAAQ,CAAC,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,WAAW,CAAC;IACvC,QAAQ,CAAC,OAAO,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IACtC,QAAQ,CAAC,SAAS,EAAE,MAAM,OAAO,CAAC;IAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,OAAO,CAAC;IACnC,QAAQ,CAAC,UAAU,EAAE,MAAM,OAAO,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,MAAM,OAAO,CAAC;CACnC;AAED,iBAAS,aAAa,CAAC,KAAK,GAAE,YAAiB,GAAG,aAAa,CAiC9D;AAED,OAAO,EAAE,aAAa,EAAE,CAAC;AACzB,YAAY,EAAE,aAAa,EAAE,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { HarnessQuery } from '../../testing/harnessQuery';
|
|
2
|
+
interface TextareaHarness {
|
|
3
|
+
readonly type: (value: string) => Promise<void>;
|
|
4
|
+
readonly clear: () => Promise<void>;
|
|
5
|
+
readonly focus: () => void;
|
|
6
|
+
readonly blur: () => void;
|
|
7
|
+
readonly getElement: () => HTMLTextAreaElement;
|
|
8
|
+
readonly getValue: () => string;
|
|
9
|
+
readonly getPlaceholder: () => string | null;
|
|
10
|
+
readonly isDisabled: () => boolean;
|
|
11
|
+
readonly isRequired: () => boolean;
|
|
12
|
+
readonly isInvalid: () => boolean;
|
|
13
|
+
}
|
|
14
|
+
declare function textareaHarness(query?: HarnessQuery): TextareaHarness;
|
|
15
|
+
export { textareaHarness };
|
|
16
|
+
export type { TextareaHarness };
|
|
17
|
+
//# sourceMappingURL=Textarea.harness.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Textarea.harness.d.ts","sourceRoot":"","sources":["../../../src/base/Textarea/Textarea.harness.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAoB,KAAK,YAAY,EAAE,MAAM,8CAA8C,CAAC;AAEnG,UAAU,eAAe;IACvB,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,QAAQ,CAAC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,QAAQ,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,mBAAmB,CAAC;IAC/C,QAAQ,CAAC,QAAQ,EAAE,MAAM,MAAM,CAAC;IAChC,QAAQ,CAAC,cAAc,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IAC7C,QAAQ,CAAC,UAAU,EAAE,MAAM,OAAO,CAAC;IACnC,QAAQ,CAAC,UAAU,EAAE,MAAM,OAAO,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,MAAM,OAAO,CAAC;CACnC;AAMD,iBAAS,eAAe,CAAC,KAAK,GAAE,YAAiB,GAAG,eAAe,CAmClE;AAED,OAAO,EAAE,eAAe,EAAE,CAAC;AAC3B,YAAY,EAAE,eAAe,EAAE,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Accept, FileRejection } from '../../base/FileUploadInput';
|
|
2
|
+
import { FileUploadItemValue } from './FileUploadItem';
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
interface FileUploadProps {
|
|
5
|
+
accept?: Accept;
|
|
6
|
+
className?: string;
|
|
7
|
+
disabled?: boolean;
|
|
8
|
+
errors?: string[];
|
|
9
|
+
hint?: React.ReactNode;
|
|
10
|
+
invalid?: boolean;
|
|
11
|
+
items: FileUploadItemValue[];
|
|
12
|
+
label?: React.ReactNode;
|
|
13
|
+
maxFileSize?: number;
|
|
14
|
+
maxFiles?: number;
|
|
15
|
+
multiple?: boolean;
|
|
16
|
+
onFileRemove?: (id: string) => void;
|
|
17
|
+
onFilesAdd?: (files: File[]) => void;
|
|
18
|
+
onFilesReject?: (rejections: FileRejection[]) => void;
|
|
19
|
+
}
|
|
20
|
+
declare function FileUpload({ className, errors, invalid, items, onFileRemove, onFilesAdd, onFilesReject, ...inputProps }: FileUploadProps): import("react/jsx-runtime").JSX.Element;
|
|
21
|
+
export { FileUpload };
|
|
22
|
+
export type { FileUploadProps };
|
|
23
|
+
//# sourceMappingURL=FileUpload.d.ts.map
|
|
@@ -0,0 +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,2CA6BjB;AAED,OAAO,EAAE,UAAU,EAAE,CAAC;AACtB,YAAY,EAAE,eAAe,EAAE,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
type FileUploadStatus = 'error' | 'idle' | 'success' | 'uploading';
|
|
3
|
+
interface FileUploadItemValue {
|
|
4
|
+
error?: string;
|
|
5
|
+
file: File;
|
|
6
|
+
id: string;
|
|
7
|
+
progress?: number;
|
|
8
|
+
status?: FileUploadStatus;
|
|
9
|
+
}
|
|
10
|
+
interface FileUploadItemProps extends Omit<React.ComponentProps<'div'>, 'children' | 'id'> {
|
|
11
|
+
item: FileUploadItemValue;
|
|
12
|
+
onRemove?: (id: string) => void;
|
|
13
|
+
}
|
|
14
|
+
declare function FileUploadItem({ className, item, onRemove, ...props }: FileUploadItemProps): import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
export { FileUploadItem };
|
|
16
|
+
export type { FileUploadItemProps, FileUploadItemValue, FileUploadStatus };
|
|
17
|
+
//# sourceMappingURL=FileUploadItem.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FileUploadItem.d.ts","sourceRoot":"","sources":["../../../src/composed/FileUpload/FileUploadItem.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAS/B,KAAK,gBAAgB,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,WAAW,CAAC;AAEnE,UAAU,mBAAmB;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,IAAI,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,gBAAgB,CAAC;CAC3B;AAED,UAAU,mBAAoB,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IACxF,IAAI,EAAE,mBAAmB,CAAC;IAC1B,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;CACjC;AAiCD,iBAAS,cAAc,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,mBAAmB,2CAkDnF;AAED,OAAO,EAAE,cAAc,EAAE,CAAC;AAC1B,YAAY,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { FileUpload } from './FileUpload';
|
|
2
|
+
export type { FileUploadProps } from './FileUpload';
|
|
3
|
+
export { FileUploadItem } from './FileUploadItem';
|
|
4
|
+
export type { FileUploadItemProps, FileUploadItemValue, FileUploadStatus } from './FileUploadItem';
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/composed/FileUpload/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,YAAY,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -17,6 +17,7 @@ export * from './base/Drawer';
|
|
|
17
17
|
export * from './base/DropdownMenu';
|
|
18
18
|
export * from './base/Empty';
|
|
19
19
|
export * from './base/Field';
|
|
20
|
+
export * from './base/FileUploadInput';
|
|
20
21
|
export * from './base/HoverCard';
|
|
21
22
|
export * from './base/Input';
|
|
22
23
|
export * from './base/InputGroup';
|
|
@@ -25,6 +26,7 @@ export * from './base/Kbd';
|
|
|
25
26
|
export * from './base/Label';
|
|
26
27
|
export * from './base/Pagination';
|
|
27
28
|
export * from './base/Popover';
|
|
29
|
+
export * from './base/Progress';
|
|
28
30
|
export * from './base/RadioGroup';
|
|
29
31
|
export * from './base/Resizable';
|
|
30
32
|
export * from './base/ScrollArea';
|
|
@@ -50,6 +52,7 @@ export * from './composed/DataTable';
|
|
|
50
52
|
export * from './composed/DataTablePagination';
|
|
51
53
|
export * from './composed/DatePicker';
|
|
52
54
|
export * from './composed/FacetedFilter';
|
|
55
|
+
export * from './composed/FileUpload';
|
|
53
56
|
export * from './composed/LayoutSlots';
|
|
54
57
|
export * from './composed/SelectorDropdown';
|
|
55
58
|
export * from './composed/SidebarMode';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAGjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAG/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,OAAO,EACL,sBAAsB,EACtB,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,GAC7B,MAAM,0CAA0C,CAAC;AAClD,cAAc,sBAAsB,CAAC;AACrC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAGjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAG/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,OAAO,EACL,sBAAsB,EACtB,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,GAC7B,MAAM,0CAA0C,CAAC;AAClD,cAAc,sBAAsB,CAAC;AACrC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC"}
|