fds-vue-core 8.3.2 → 8.4.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/components.d.ts +2 -0
- package/dist/components/FdsDrawer/FdsDrawer.vue.d.ts +35 -0
- package/dist/components/FdsDrawer/types.d.ts +11 -0
- package/dist/composables/useRouteFilters.d.ts +73 -0
- package/dist/fds-vue-core.cjs.js +757 -228
- package/dist/fds-vue-core.cjs.js.map +1 -1
- package/dist/fds-vue-core.css +1 -1
- package/dist/fds-vue-core.es.js +758 -229
- package/dist/fds-vue-core.es.js.map +1 -1
- package/dist/index.d.ts +6 -2
- package/dist/slot-styles.css +40 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +8 -4
- package/src/components/FdsDrawer/FdsDrawer.stories.ts +155 -0
- package/src/components/FdsDrawer/FdsDrawer.vue +283 -0
- package/src/components/FdsDrawer/types.ts +12 -0
- package/src/composables/useRouteFilters.spec.ts +157 -0
- package/src/composables/useRouteFilters.ts +500 -0
- package/src/index.ts +26 -0
- package/src/lang/en.json +1 -0
- package/src/lang/sv.json +1 -0
- package/src/slot-styles.css +40 -0
- package/src/style.css +45 -1
package/components.d.ts
CHANGED
|
@@ -16,6 +16,7 @@ import type { FdsCopyButtonProps } from './dist/components/Buttons/FdsButtonCopy
|
|
|
16
16
|
import type { FdsButtonDownloadProps } from './dist/components/Buttons/FdsButtonDownload/types'
|
|
17
17
|
import type { FdsIconButtonProps } from './dist/components/Buttons/FdsButtonIcon/types'
|
|
18
18
|
import type { FdsIconProps } from './dist/components/FdsIcon/types'
|
|
19
|
+
import type { FdsDrawerProps } from './dist/components/FdsDrawer/types'
|
|
19
20
|
import type { FdsModalProps } from './dist/components/FdsModal/types'
|
|
20
21
|
import type { FdsPaginationProps } from './dist/components/FdsPagination/types'
|
|
21
22
|
import type { FdsPopoverProps } from './dist/components/FdsPopover/types'
|
|
@@ -77,6 +78,7 @@ declare module 'vue' {
|
|
|
77
78
|
FdsSticker: DefineComponent<FdsStickerProps>
|
|
78
79
|
FdsTabs: DefineComponent<FdsTabsProps>
|
|
79
80
|
FdsTabsItem: DefineComponent<FdsTabsItemProps>
|
|
81
|
+
FdsDrawer: DefineComponent<FdsDrawerProps>
|
|
80
82
|
FdsModal: DefineComponent<FdsModalProps>
|
|
81
83
|
FdsPagination: DefineComponent<FdsPaginationProps>
|
|
82
84
|
FdsPopover: DefineComponent<FdsPopoverProps>
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { Slot } from 'vue';
|
|
2
|
+
import { FdsDrawerProps } from './types';
|
|
3
|
+
declare function __VLS_template(): {
|
|
4
|
+
attrs: Partial<{}>;
|
|
5
|
+
slots: Readonly<{
|
|
6
|
+
default?: Slot;
|
|
7
|
+
}> & {
|
|
8
|
+
default?: Slot;
|
|
9
|
+
};
|
|
10
|
+
refs: {};
|
|
11
|
+
rootEl: any;
|
|
12
|
+
};
|
|
13
|
+
type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
|
|
14
|
+
declare const __VLS_component: import('vue').DefineComponent<FdsDrawerProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
|
|
15
|
+
close: () => any;
|
|
16
|
+
"update:open": (value: boolean) => any;
|
|
17
|
+
}, string, import('vue').PublicProps, Readonly<FdsDrawerProps> & Readonly<{
|
|
18
|
+
onClose?: (() => any) | undefined;
|
|
19
|
+
"onUpdate:open"?: ((value: boolean) => any) | undefined;
|
|
20
|
+
}>, {
|
|
21
|
+
size: "sm" | "md" | "lg" | "xl";
|
|
22
|
+
dataTestid: string;
|
|
23
|
+
heading: string;
|
|
24
|
+
open: boolean;
|
|
25
|
+
strict: boolean;
|
|
26
|
+
lockScroll: boolean;
|
|
27
|
+
info: "valid" | "invalid" | "warning";
|
|
28
|
+
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|
|
29
|
+
declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
|
|
30
|
+
export default _default;
|
|
31
|
+
type __VLS_WithTemplateSlots<T, S> = T & {
|
|
32
|
+
new (): {
|
|
33
|
+
$slots: S;
|
|
34
|
+
};
|
|
35
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { HTMLAttributes } from 'vue';
|
|
2
|
+
export interface FdsDrawerProps extends /* @vue-ignore */ HTMLAttributes {
|
|
3
|
+
open?: boolean;
|
|
4
|
+
heading?: string;
|
|
5
|
+
size?: 'sm' | 'md' | 'lg' | 'xl';
|
|
6
|
+
strict?: boolean;
|
|
7
|
+
lockScroll?: boolean;
|
|
8
|
+
info?: 'valid' | 'invalid' | 'warning';
|
|
9
|
+
dataTestid?: string;
|
|
10
|
+
onClose?: (value: boolean) => void;
|
|
11
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { Ref } from 'vue';
|
|
2
|
+
import { LocationQuery, LocationQueryRaw } from 'vue-router';
|
|
3
|
+
export type RouteFilterValue = string | number | boolean | string[];
|
|
4
|
+
export type RouteFilterRecord = Record<string, RouteFilterValue>;
|
|
5
|
+
export interface RouteSortDefault {
|
|
6
|
+
field?: string;
|
|
7
|
+
dir?: 'asc' | 'desc' | '';
|
|
8
|
+
}
|
|
9
|
+
export interface UseRouteFiltersSchema<F extends RouteFilterRecord, D extends RouteFilterRecord> {
|
|
10
|
+
filter: F;
|
|
11
|
+
draft?: D;
|
|
12
|
+
sort?: RouteSortDefault;
|
|
13
|
+
search?: string;
|
|
14
|
+
page?: number;
|
|
15
|
+
}
|
|
16
|
+
export type RouteFilterState<F extends RouteFilterRecord> = {
|
|
17
|
+
[K in keyof F]: F[K] extends string[] ? string[] : F[K];
|
|
18
|
+
};
|
|
19
|
+
export interface RouteSort {
|
|
20
|
+
/** Current sort value, e.g. `'-created'`, `'+name'`, or `''` */
|
|
21
|
+
readonly value: string;
|
|
22
|
+
/** Current field being sorted (without sign prefix) */
|
|
23
|
+
readonly field: string;
|
|
24
|
+
/** Current direction */
|
|
25
|
+
readonly dir: 'asc' | 'desc' | '';
|
|
26
|
+
/**
|
|
27
|
+
* Toggle sort for `field`.
|
|
28
|
+
* - none / other field → desc (`-field`)
|
|
29
|
+
* - `-field` → asc (`+field`)
|
|
30
|
+
* - `+field` → none (`''`)
|
|
31
|
+
*/
|
|
32
|
+
toggle: (field: string) => void;
|
|
33
|
+
set: (field: string, dir: 'asc' | 'desc') => void;
|
|
34
|
+
clear: () => void;
|
|
35
|
+
/** Icon hint for table header */
|
|
36
|
+
iconFor: (field: string) => 'ascending' | 'descending' | 'sort';
|
|
37
|
+
}
|
|
38
|
+
export interface RouteDraftControl<D extends RouteFilterRecord> {
|
|
39
|
+
/** Reactive draft state — edit directly without .value */
|
|
40
|
+
readonly state: RouteFilterState<D>;
|
|
41
|
+
/** Copy active filter values into draft (call before opening modal) */
|
|
42
|
+
open: () => void;
|
|
43
|
+
/** Apply draft values to active filter (call on save) */
|
|
44
|
+
apply: () => void;
|
|
45
|
+
/** Discard draft changes (call on cancel) */
|
|
46
|
+
cancel: () => void;
|
|
47
|
+
/** Reset draft to schema defaults */
|
|
48
|
+
reset: () => void;
|
|
49
|
+
}
|
|
50
|
+
export interface UseRouteFiltersReturn<F extends RouteFilterRecord, D extends RouteFilterRecord> {
|
|
51
|
+
/** Reactive filter state — read/write directly without .value */
|
|
52
|
+
filter: RouteFilterState<F>;
|
|
53
|
+
/** Draft state + controls (only when `draft` was provided in schema) */
|
|
54
|
+
draft: RouteDraftControl<D>;
|
|
55
|
+
/** Sort controls */
|
|
56
|
+
sort: RouteSort;
|
|
57
|
+
/** Reactive search ref (for v-model on input) */
|
|
58
|
+
search: Ref<string>;
|
|
59
|
+
/** Reactive page ref (for v-model / pagination) */
|
|
60
|
+
page: Ref<number>;
|
|
61
|
+
/** Reset filter, search, page and sort to defaults */
|
|
62
|
+
reset: () => Promise<void>;
|
|
63
|
+
/** Clear all schema-managed query params */
|
|
64
|
+
clear: () => Promise<void>;
|
|
65
|
+
}
|
|
66
|
+
export declare function useRouteFilters<F extends RouteFilterRecord, D extends RouteFilterRecord = RouteFilterRecord>(schema: UseRouteFiltersSchema<F, D>): UseRouteFiltersReturn<F, D>;
|
|
67
|
+
/** @deprecated Use `useRouteFilters` with the new schema API instead */
|
|
68
|
+
export type RouteFilterSchema = RouteFilterRecord;
|
|
69
|
+
/** @deprecated */
|
|
70
|
+
export declare const parseRouteFiltersFromQuery: <T extends RouteFilterRecord>(query: LocationQuery, defaults: T) => RouteFilterState<T>;
|
|
71
|
+
/** @deprecated */
|
|
72
|
+
export declare const serializeRouteFiltersToQuery: <T extends RouteFilterRecord>(state: RouteFilterState<T>, defaults: T) => LocationQueryRaw;
|
|
73
|
+
export type { RouteFilterRecord as RouteFilterRefs };
|