@carlonicora/nextjs-jsonapi 1.18.0 → 1.19.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.
- package/dist/{BlockNoteEditor-6TWTNHNZ.mjs → BlockNoteEditor-BQ5WWVUF.mjs} +2 -2
- package/dist/{BlockNoteEditor-C3WWGGT6.js → BlockNoteEditor-IZR6TESC.js} +6 -6
- package/dist/{BlockNoteEditor-C3WWGGT6.js.map → BlockNoteEditor-IZR6TESC.js.map} +1 -1
- package/dist/{chunk-6U6QCSJK.js → chunk-FB535VUS.js} +39 -22
- package/dist/chunk-FB535VUS.js.map +1 -0
- package/dist/{chunk-UZDAPWJG.mjs → chunk-MVNVXOC6.mjs} +39 -22
- package/dist/chunk-MVNVXOC6.mjs.map +1 -0
- package/dist/client/index.js +2 -2
- package/dist/client/index.mjs +1 -1
- package/dist/components/index.js +2 -2
- package/dist/components/index.mjs +1 -1
- package/dist/contexts/index.js +2 -2
- package/dist/contexts/index.mjs +1 -1
- package/dist/scripts/generate-web-module/generator.d.ts.map +1 -1
- package/dist/scripts/generate-web-module/generator.js +5 -71
- package/dist/scripts/generate-web-module/generator.js.map +1 -1
- package/dist/scripts/generate-web-module/templates/components/selector.template.d.ts.map +1 -1
- package/dist/scripts/generate-web-module/templates/components/selector.template.js +1 -0
- package/dist/scripts/generate-web-module/templates/components/selector.template.js.map +1 -1
- package/dist/scripts/generate-web-module/templates/index.d.ts +0 -8
- package/dist/scripts/generate-web-module/templates/index.d.ts.map +1 -1
- package/dist/scripts/generate-web-module/templates/index.js +1 -18
- package/dist/scripts/generate-web-module/templates/index.js.map +1 -1
- package/package.json +1 -1
- package/scripts/generate-web-module/generator.ts +23 -111
- package/scripts/generate-web-module/templates/components/selector.template.ts +1 -0
- package/scripts/generate-web-module/templates/index.ts +0 -10
- package/src/features/role/components/forms/UserRoleAdd.tsx +1 -1
- package/src/features/user/components/forms/UserSelector.tsx +5 -1
- package/src/features/user/components/lists/UserListInAdd.tsx +1 -1
- package/src/features/user/components/widgets/UserSearchPopover.tsx +5 -1
- package/src/hooks/useDataListRetriever.ts +1 -0
- package/src/shadcnui/custom/multi-select.tsx +58 -55
- package/dist/chunk-6U6QCSJK.js.map +0 -1
- package/dist/chunk-UZDAPWJG.mjs.map +0 -1
- package/dist/scripts/generate-web-module/templates/project/bootstrapper.template.d.ts +0 -7
- package/dist/scripts/generate-web-module/templates/project/bootstrapper.template.d.ts.map +0 -1
- package/dist/scripts/generate-web-module/templates/project/bootstrapper.template.js +0 -141
- package/dist/scripts/generate-web-module/templates/project/bootstrapper.template.js.map +0 -1
- package/dist/scripts/generate-web-module/templates/project/env.template.d.ts +0 -7
- package/dist/scripts/generate-web-module/templates/project/env.template.d.ts.map +0 -1
- package/dist/scripts/generate-web-module/templates/project/env.template.js +0 -110
- package/dist/scripts/generate-web-module/templates/project/env.template.js.map +0 -1
- package/dist/scripts/generate-web-module/templates/project/main-layout.template.d.ts +0 -7
- package/dist/scripts/generate-web-module/templates/project/main-layout.template.d.ts.map +0 -1
- package/dist/scripts/generate-web-module/templates/project/main-layout.template.js +0 -101
- package/dist/scripts/generate-web-module/templates/project/main-layout.template.js.map +0 -1
- package/dist/scripts/generate-web-module/templates/project/middleware-env.template.d.ts +0 -7
- package/dist/scripts/generate-web-module/templates/project/middleware-env.template.d.ts.map +0 -1
- package/dist/scripts/generate-web-module/templates/project/middleware-env.template.js +0 -66
- package/dist/scripts/generate-web-module/templates/project/middleware-env.template.js.map +0 -1
- package/dist/scripts/generate-web-module/templates/project/settings-container.template.d.ts +0 -7
- package/dist/scripts/generate-web-module/templates/project/settings-container.template.d.ts.map +0 -1
- package/dist/scripts/generate-web-module/templates/project/settings-container.template.js +0 -257
- package/dist/scripts/generate-web-module/templates/project/settings-container.template.js.map +0 -1
- package/dist/scripts/generate-web-module/templates/project/settings-context.template.d.ts +0 -7
- package/dist/scripts/generate-web-module/templates/project/settings-context.template.d.ts.map +0 -1
- package/dist/scripts/generate-web-module/templates/project/settings-context.template.js +0 -124
- package/dist/scripts/generate-web-module/templates/project/settings-context.template.js.map +0 -1
- package/dist/scripts/generate-web-module/templates/project/settings-module-page.template.d.ts +0 -7
- package/dist/scripts/generate-web-module/templates/project/settings-module-page.template.d.ts.map +0 -1
- package/dist/scripts/generate-web-module/templates/project/settings-module-page.template.js +0 -78
- package/dist/scripts/generate-web-module/templates/project/settings-module-page.template.js.map +0 -1
- package/dist/scripts/generate-web-module/templates/project/settings-page.template.d.ts +0 -7
- package/dist/scripts/generate-web-module/templates/project/settings-page.template.d.ts.map +0 -1
- package/dist/scripts/generate-web-module/templates/project/settings-page.template.js +0 -75
- package/dist/scripts/generate-web-module/templates/project/settings-page.template.js.map +0 -1
- package/scripts/generate-web-module/templates/project/bootstrapper.template.ts +0 -108
- package/scripts/generate-web-module/templates/project/env.template.ts +0 -77
- package/scripts/generate-web-module/templates/project/main-layout.template.tsx +0 -68
- package/scripts/generate-web-module/templates/project/middleware-env.template.ts +0 -33
- package/scripts/generate-web-module/templates/project/settings-container.template.tsx +0 -224
- package/scripts/generate-web-module/templates/project/settings-context.template.tsx +0 -91
- package/scripts/generate-web-module/templates/project/settings-module-page.template.tsx +0 -45
- package/scripts/generate-web-module/templates/project/settings-page.template.tsx +0 -42
- /package/dist/{BlockNoteEditor-6TWTNHNZ.mjs.map → BlockNoteEditor-BQ5WWVUF.mjs.map} +0 -0
|
@@ -113,7 +113,7 @@ export function UserRoleAdd({ user, refresh }: UserRoleAddProps) {
|
|
|
113
113
|
<CommandEmpty>{t(`generic.search.no_results`, { type: t(`types.roles`, { count: 1 }) })}</CommandEmpty>
|
|
114
114
|
{roles.map((role: RoleInterface) => (
|
|
115
115
|
<CommandItem
|
|
116
|
-
className="cursor-pointer"
|
|
116
|
+
className="cursor-pointer hover:bg-muted data-selected:hover:bg-muted bg-transparent data-selected:bg-transparent"
|
|
117
117
|
key={role.id}
|
|
118
118
|
onSelect={() => addUserToRole(role)}
|
|
119
119
|
onClick={() => addUserToRole(role)}
|
|
@@ -167,7 +167,11 @@ export function UserSelector({ id, form, label, placeholder, onChange, isRequire
|
|
|
167
167
|
{data.data &&
|
|
168
168
|
data.data.length > 0 &&
|
|
169
169
|
(data.data as UserInterface[]).map((user: UserInterface) => (
|
|
170
|
-
<CommandItem
|
|
170
|
+
<CommandItem
|
|
171
|
+
className="cursor-pointer hover:bg-muted data-selected:hover:bg-muted bg-transparent data-selected:bg-transparent"
|
|
172
|
+
key={user.id}
|
|
173
|
+
onSelect={() => setUser(user)}
|
|
174
|
+
>
|
|
171
175
|
<UserAvatar user={user} className={`mr-2 h-4 w-4`} />
|
|
172
176
|
<span className="">{user.name}</span>
|
|
173
177
|
</CommandItem>
|
|
@@ -26,7 +26,7 @@ export function UserListInAdd({ data, existingUsers, setSelectedUser, setLevelOp
|
|
|
26
26
|
return (
|
|
27
27
|
<React.Fragment key={user.id}>
|
|
28
28
|
<CommandItem
|
|
29
|
-
className="cursor-pointer"
|
|
29
|
+
className="cursor-pointer hover:bg-muted data-selected:hover:bg-muted bg-transparent data-selected:bg-transparent"
|
|
30
30
|
key={user.id}
|
|
31
31
|
onClick={(e) => {
|
|
32
32
|
setSelectedUser(user);
|
|
@@ -69,7 +69,11 @@ export const UserSearchPopover = ({ children, onSelect, align = "start", classNa
|
|
|
69
69
|
<CommandList>
|
|
70
70
|
{users.length > 0 ? (
|
|
71
71
|
users.map((user) => (
|
|
72
|
-
<CommandItem
|
|
72
|
+
<CommandItem
|
|
73
|
+
key={user.id}
|
|
74
|
+
className="cursor-pointer hover:bg-muted data-selected:hover:bg-muted bg-transparent data-selected:bg-transparent"
|
|
75
|
+
onSelect={() => handleSelectUser(user.id)}
|
|
76
|
+
>
|
|
73
77
|
<UserAvatar user={user} className="mr-2 h-4 w-4" showLink={false} />
|
|
74
78
|
<span>{user.name}</span>
|
|
75
79
|
</CommandItem>
|
|
@@ -316,6 +316,7 @@ export function useDataListRetriever<T>(params: {
|
|
|
316
316
|
const refresh = useCallback(async () => {
|
|
317
317
|
setNextPage(undefined);
|
|
318
318
|
setPreviousPage(undefined);
|
|
319
|
+
setData(undefined); // Clear stale data immediately before fetching new data
|
|
319
320
|
fetchData({ isRefresh: true });
|
|
320
321
|
}, [fetchData]);
|
|
321
322
|
|
|
@@ -4,6 +4,7 @@ import { cva, type VariantProps } from "class-variance-authority";
|
|
|
4
4
|
import { CheckIcon, ChevronDown, WandSparkles, XCircle, XIcon } from "lucide-react";
|
|
5
5
|
import * as React from "react";
|
|
6
6
|
|
|
7
|
+
import { cn } from "../../utils/cn";
|
|
7
8
|
import { Badge } from "../ui/badge";
|
|
8
9
|
import {
|
|
9
10
|
Command,
|
|
@@ -16,7 +17,6 @@ import {
|
|
|
16
17
|
} from "../ui/command";
|
|
17
18
|
import { Popover, PopoverContent, PopoverTrigger } from "../ui/popover";
|
|
18
19
|
import { Separator } from "../ui/separator";
|
|
19
|
-
import { cn } from "../../utils/cn";
|
|
20
20
|
|
|
21
21
|
/**
|
|
22
22
|
* Variants for the multi-select component to handle different styles.
|
|
@@ -43,8 +43,7 @@ const multiSelectVariants = cva(
|
|
|
43
43
|
* Props for MultiSelect component
|
|
44
44
|
*/
|
|
45
45
|
interface MultiSelectProps
|
|
46
|
-
extends React.ButtonHTMLAttributes<HTMLButtonElement>,
|
|
47
|
-
VariantProps<typeof multiSelectVariants> {
|
|
46
|
+
extends React.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof multiSelectVariants> {
|
|
48
47
|
/**
|
|
49
48
|
* An array of option objects to be displayed in the multi-select component.
|
|
50
49
|
* Each option object has a label, value, and an optional icon.
|
|
@@ -223,68 +222,68 @@ export const MultiSelect = React.forwardRef<HTMLButtonElement, MultiSelectProps>
|
|
|
223
222
|
className,
|
|
224
223
|
)}
|
|
225
224
|
>
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
<Badge
|
|
234
|
-
key={value}
|
|
235
|
-
className={cn(isAnimating ? "animate-bounce" : "", multiSelectVariants({ variant }))}
|
|
236
|
-
style={{ animationDuration: `${animation}s` }}
|
|
237
|
-
>
|
|
238
|
-
{IconComponent && <IconComponent className="mr-2 h-4 w-4" />}
|
|
239
|
-
{option?.label}
|
|
240
|
-
<XCircle
|
|
241
|
-
className="ml-2 h-4 w-4 cursor-pointer"
|
|
242
|
-
onClick={(event) => {
|
|
243
|
-
event.stopPropagation();
|
|
244
|
-
toggleOption(value);
|
|
245
|
-
}}
|
|
246
|
-
/>
|
|
247
|
-
</Badge>
|
|
248
|
-
);
|
|
249
|
-
})}
|
|
250
|
-
{selectedValues.length > maxCount && (
|
|
225
|
+
{selectedValues.length > 0 ? (
|
|
226
|
+
<div className="flex w-full items-center justify-between">
|
|
227
|
+
<div className="flex flex-wrap items-center">
|
|
228
|
+
{selectedValues.slice(0, maxCount).map((value) => {
|
|
229
|
+
const option = options.find((o) => o.value === value);
|
|
230
|
+
const IconComponent = option?.icon;
|
|
231
|
+
return (
|
|
251
232
|
<Badge
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
isAnimating ? "animate-bounce" : "",
|
|
255
|
-
multiSelectVariants({ variant }),
|
|
256
|
-
)}
|
|
233
|
+
key={value}
|
|
234
|
+
className={cn(isAnimating ? "animate-bounce" : "", multiSelectVariants({ variant }))}
|
|
257
235
|
style={{ animationDuration: `${animation}s` }}
|
|
258
236
|
>
|
|
259
|
-
{
|
|
237
|
+
{IconComponent && <IconComponent className="mr-2 h-4 w-4" />}
|
|
238
|
+
{option?.label}
|
|
260
239
|
<XCircle
|
|
261
240
|
className="ml-2 h-4 w-4 cursor-pointer"
|
|
262
241
|
onClick={(event) => {
|
|
263
242
|
event.stopPropagation();
|
|
264
|
-
|
|
243
|
+
toggleOption(value);
|
|
265
244
|
}}
|
|
266
245
|
/>
|
|
267
246
|
</Badge>
|
|
268
|
-
)
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
<
|
|
272
|
-
className=
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
}
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
247
|
+
);
|
|
248
|
+
})}
|
|
249
|
+
{selectedValues.length > maxCount && (
|
|
250
|
+
<Badge
|
|
251
|
+
className={cn(
|
|
252
|
+
"text-foreground border-foreground/1 bg-transparent hover:bg-transparent",
|
|
253
|
+
isAnimating ? "animate-bounce" : "",
|
|
254
|
+
multiSelectVariants({ variant }),
|
|
255
|
+
)}
|
|
256
|
+
style={{ animationDuration: `${animation}s` }}
|
|
257
|
+
>
|
|
258
|
+
{`+ ${selectedValues.length - maxCount} more`}
|
|
259
|
+
<XCircle
|
|
260
|
+
className="ml-2 h-4 w-4 cursor-pointer"
|
|
261
|
+
onClick={(event) => {
|
|
262
|
+
event.stopPropagation();
|
|
263
|
+
clearExtraOptions();
|
|
264
|
+
}}
|
|
265
|
+
/>
|
|
266
|
+
</Badge>
|
|
267
|
+
)}
|
|
281
268
|
</div>
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
269
|
+
<div className="flex items-center justify-between">
|
|
270
|
+
<XIcon
|
|
271
|
+
className="text-muted-foreground mx-2 h-4 cursor-pointer"
|
|
272
|
+
onClick={(event) => {
|
|
273
|
+
event.stopPropagation();
|
|
274
|
+
handleClear();
|
|
275
|
+
}}
|
|
276
|
+
/>
|
|
277
|
+
<Separator orientation="vertical" className="flex h-full min-h-6" />
|
|
285
278
|
<ChevronDown className="text-muted-foreground mx-2 h-4 cursor-pointer" />
|
|
286
279
|
</div>
|
|
287
|
-
|
|
280
|
+
</div>
|
|
281
|
+
) : (
|
|
282
|
+
<div className="mx-auto flex w-full items-center justify-between">
|
|
283
|
+
<span className="text-muted-foreground mx-3 text-sm">{placeholder}</span>
|
|
284
|
+
<ChevronDown className="text-muted-foreground mx-2 h-4 cursor-pointer" />
|
|
285
|
+
</div>
|
|
286
|
+
)}
|
|
288
287
|
</PopoverTrigger>
|
|
289
288
|
<PopoverContent className="w-auto p-0" align="start">
|
|
290
289
|
<Command>
|
|
@@ -297,7 +296,11 @@ export const MultiSelect = React.forwardRef<HTMLButtonElement, MultiSelectProps>
|
|
|
297
296
|
<CommandList>
|
|
298
297
|
<CommandEmpty>No results found.</CommandEmpty>
|
|
299
298
|
<CommandGroup>
|
|
300
|
-
<CommandItem
|
|
299
|
+
<CommandItem
|
|
300
|
+
key="all"
|
|
301
|
+
onSelect={toggleAll}
|
|
302
|
+
className="cursor-pointer hover:bg-muted data-selected:hover:bg-muted bg-transparent data-selected:bg-transparent"
|
|
303
|
+
>
|
|
301
304
|
<div
|
|
302
305
|
className={cn(
|
|
303
306
|
"border-primary mr-2 flex h-4 w-4 items-center justify-center rounded-sm border",
|
|
@@ -316,7 +319,7 @@ export const MultiSelect = React.forwardRef<HTMLButtonElement, MultiSelectProps>
|
|
|
316
319
|
<CommandItem
|
|
317
320
|
key={option.value}
|
|
318
321
|
onSelect={() => toggleOption(option.value)}
|
|
319
|
-
className="cursor-pointer"
|
|
322
|
+
className="cursor-pointer hover:bg-muted data-selected:hover:bg-muted bg-transparent data-selected:bg-transparent"
|
|
320
323
|
>
|
|
321
324
|
<div
|
|
322
325
|
className={cn(
|
|
@@ -345,7 +348,7 @@ export const MultiSelect = React.forwardRef<HTMLButtonElement, MultiSelectProps>
|
|
|
345
348
|
)}
|
|
346
349
|
<CommandItem
|
|
347
350
|
onSelect={() => setIsPopoverOpen(false)}
|
|
348
|
-
className="max-w-full flex-1 cursor-pointer justify-center"
|
|
351
|
+
className="max-w-full flex-1 cursor-pointer justify-center hover:bg-muted data-selected:hover:bg-muted bg-transparent data-selected:bg-transparent"
|
|
349
352
|
>
|
|
350
353
|
Close
|
|
351
354
|
</CommandItem>
|