@illinois-grad/grad-vue 0.1.0 → 1.0.2

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 (40) hide show
  1. package/LICENSE +20 -20
  2. package/README.md +59 -7
  3. package/dist/components/GAlertDialog.vue.d.ts +11 -2
  4. package/dist/components/GAppHeader.vue.d.ts +30 -4
  5. package/dist/components/GButton.vue.d.ts +12 -0
  6. package/dist/components/GClipboard.vue.d.ts +13 -0
  7. package/dist/components/GDetailList.vue.d.ts +35 -0
  8. package/dist/components/GHamburgerMenu.vue.d.ts +15 -0
  9. package/dist/components/GHistoryScroller.vue.d.ts +30 -0
  10. package/dist/components/GModal.vue.d.ts +39 -0
  11. package/dist/components/GOverlay.vue.d.ts +3 -0
  12. package/dist/components/GPopover.vue.d.ts +18 -26
  13. package/dist/components/GProgress.vue.d.ts +13 -4
  14. package/dist/components/GSearch.vue.d.ts +20 -7
  15. package/dist/components/GSelect.vue.d.ts +38 -5
  16. package/dist/components/GSelectButton.vue.d.ts +22 -8
  17. package/dist/components/GSidebar.vue.d.ts +42 -0
  18. package/dist/components/GSidebarMenu.vue.d.ts +39 -0
  19. package/dist/components/GTable.vue.d.ts +74 -0
  20. package/dist/components/GTextInput.vue.d.ts +30 -1
  21. package/dist/components/GThreeWayToggle.vue.d.ts +29 -0
  22. package/dist/components/detail-list/GDetailListItem.vue.d.ts +21 -0
  23. package/dist/components/table/GTableBody.vue.d.ts +36 -0
  24. package/dist/components/table/GTablePagination.vue.d.ts +20 -0
  25. package/dist/components/table/TableColumn.d.ts +35 -0
  26. package/dist/compose/useActiveLink.d.ts +13 -0
  27. package/dist/compose/useFiltering.d.ts +14 -0
  28. package/dist/compose/useOverlayStack.d.ts +20 -6
  29. package/dist/compose/useSidebar.d.ts +12 -0
  30. package/dist/directives/v-gtooltip.d.ts +4 -0
  31. package/dist/grad-vue.css +1 -1
  32. package/dist/grad-vue.d.ts +34 -19
  33. package/dist/grad-vue.js +145 -942
  34. package/dist/grad-vue.js.map +1 -1
  35. package/dist/main-BA2FBasv.js +2427 -0
  36. package/dist/main-BA2FBasv.js.map +1 -0
  37. package/dist/plugin.d.ts +35 -0
  38. package/dist/plugin.js +12 -0
  39. package/dist/plugin.js.map +1 -0
  40. package/package.json +35 -11
@@ -0,0 +1,39 @@
1
+ type MenuItem = {
2
+ label: string;
3
+ href?: string;
4
+ to?: string;
5
+ };
6
+ interface Props {
7
+ /**
8
+ * Title and accessible name
9
+ */
10
+ title?: string;
11
+ items: MenuItem[];
12
+ offset?: number;
13
+ spy?: boolean;
14
+ /**
15
+ * Sidebar theme
16
+ */
17
+ theme?: "light" | "dark";
18
+ /**
19
+ * Use compact layout
20
+ */
21
+ compact?: boolean;
22
+ }
23
+ type __VLS_Props = Props;
24
+ type __VLS_ModelProps = {
25
+ modelValue?: string | null;
26
+ };
27
+ type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
28
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
29
+ "update:modelValue": (value: string | null) => any;
30
+ }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
31
+ "onUpdate:modelValue"?: ((value: string | null) => any) | undefined;
32
+ }>, {
33
+ theme: "light" | "dark";
34
+ compact: boolean;
35
+ offset: number;
36
+ spy: boolean;
37
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
38
+ declare const _default: typeof __VLS_export;
39
+ export default _default;
@@ -0,0 +1,74 @@
1
+ import { TableColumn, TableRow } from "./table/TableColumn.ts";
2
+ import { VNode } from "vue";
3
+ import { UseFilteringReturn } from "../compose/useFiltering.ts";
4
+ export interface BulkAction {
5
+ /**
6
+ * Action identifier
7
+ */
8
+ id: string;
9
+ /**
10
+ * Action label
11
+ */
12
+ label: string;
13
+ /**
14
+ * Action theme/color
15
+ */
16
+ theme?: "primary" | "secondary" | "accent" | "danger";
17
+ }
18
+ declare const __VLS_export: <T extends TableRow, C extends TableColumn<T>>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
19
+ props: import("vue").PublicProps & __VLS_PrettifyLocal<({
20
+ /**
21
+ * Accessible label
22
+ */
23
+ label: string;
24
+ data: T[];
25
+ columns: C[];
26
+ resultCount?: number;
27
+ groupBy?: keyof T;
28
+ filtering: UseFilteringReturn<T>;
29
+ groupRender?: (groupValue: any, row: T) => VNode;
30
+ rowClickable?: boolean;
31
+ rowClass?: (row: T) => string | string[] | undefined;
32
+ startIndex: number;
33
+ /**
34
+ * Enable bulk selection with checkboxes
35
+ */
36
+ bulkSelectionEnabled?: boolean;
37
+ /**
38
+ * Array of actions to show in the sticky toolbar when rows are selected
39
+ */
40
+ bulkActions?: BulkAction[];
41
+ } & {
42
+ sortField?: keyof T;
43
+ sortOrder?: 1 | -1;
44
+ filter: Partial<Record<keyof T, any>>;
45
+ selectedRows?: string[];
46
+ }) & {
47
+ "onRow-click"?: ((link: string) => any) | undefined;
48
+ "onUpdate:sortField"?: ((value: keyof T | undefined) => any) | undefined;
49
+ "onUpdate:sortOrder"?: ((value: 1 | -1 | undefined) => any) | undefined;
50
+ "onUpdate:filter"?: ((value: Partial<Record<keyof T, any>>) => any) | undefined;
51
+ "onUpdate:selectedRows"?: ((value: string[]) => any) | undefined;
52
+ "onBulk-action"?: ((actionId: string, selectedKeys: string[]) => any) | undefined;
53
+ }> & (typeof globalThis extends {
54
+ __VLS_PROPS_FALLBACK: infer P;
55
+ } ? P : {});
56
+ expose: (exposed: {}) => void;
57
+ attrs: any;
58
+ slots: {
59
+ pagination?: (props: {}) => any;
60
+ };
61
+ emit: {
62
+ (e: "row-click", link: string): void;
63
+ (e: "bulk-action", actionId: string, selectedKeys: string[]): void;
64
+ } & (((event: "update:sortField", value: keyof T | undefined) => void) & ((event: "update:sortOrder", value: 1 | -1 | undefined) => void) & ((event: "update:filter", value: Partial<Record<keyof T, any>>) => void) & ((event: "update:selectedRows", value: string[]) => void));
65
+ }>) => import("vue").VNode & {
66
+ __ctx?: Awaited<typeof __VLS_setup>;
67
+ };
68
+ declare const _default: typeof __VLS_export;
69
+ export default _default;
70
+ type __VLS_PrettifyLocal<T> = (T extends any ? {
71
+ [K in keyof T]: T[K];
72
+ } : {
73
+ [K in keyof T as K]: T[K];
74
+ }) & {};
@@ -1,14 +1,35 @@
1
1
  type Props = {
2
+ /**
3
+ * Label
4
+ */
5
+ label?: string;
6
+ /**
7
+ * Placeholder text
8
+ */
2
9
  placeholder?: string;
10
+ /**
11
+ * Disabled
12
+ */
3
13
  disabled?: boolean;
14
+ /**
15
+ * Error message
16
+ */
4
17
  error?: string;
18
+ /**
19
+ * Instructions
20
+ */
21
+ instructions?: string;
5
22
  };
6
23
  type __VLS_Props = Props;
7
24
  type __VLS_ModelProps = {
8
25
  modelValue?: string | null;
9
26
  };
10
27
  type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
11
- declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
28
+ declare var __VLS_1: {};
29
+ type __VLS_Slots = {} & {
30
+ instructions?: (props: typeof __VLS_1) => any;
31
+ };
32
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
12
33
  change: (args_0: {
13
34
  was: string | null | undefined;
14
35
  to: string | null;
@@ -21,9 +42,17 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {},
21
42
  }) => any) | undefined;
22
43
  "onUpdate:modelValue"?: ((value: string | null | undefined) => any) | undefined;
23
44
  }>, {
45
+ label: string;
24
46
  placeholder: string;
25
47
  disabled: boolean;
26
48
  error: string;
49
+ instructions: string;
27
50
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
51
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
28
52
  declare const _default: typeof __VLS_export;
29
53
  export default _default;
54
+ type __VLS_WithSlots<T, S> = T & {
55
+ new (): {
56
+ $slots: S;
57
+ };
58
+ };
@@ -0,0 +1,29 @@
1
+ interface Props {
2
+ /**
3
+ * Accessible label
4
+ */
5
+ label: string;
6
+ describedby?: string;
7
+ /**
8
+ * Error message
9
+ */
10
+ error?: string;
11
+ /**
12
+ * Disabled
13
+ */
14
+ disabled?: boolean;
15
+ }
16
+ type __VLS_Props = Props;
17
+ type __VLS_ModelProps = {
18
+ modelValue?: boolean | null;
19
+ };
20
+ type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
21
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
22
+ change: (...args: any[]) => void;
23
+ "update:modelValue": (value: boolean | null) => void;
24
+ }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
25
+ onChange?: ((...args: any[]) => any) | undefined;
26
+ "onUpdate:modelValue"?: ((value: boolean | null) => any) | undefined;
27
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
28
+ declare const _default: typeof __VLS_export;
29
+ export default _default;
@@ -0,0 +1,21 @@
1
+ interface Props {
2
+ /**
3
+ * Label shown for the item.
4
+ */
5
+ label: string;
6
+ }
7
+ declare var __VLS_1: {}, __VLS_3: {};
8
+ type __VLS_Slots = {} & {
9
+ label?: (props: typeof __VLS_1) => any;
10
+ } & {
11
+ default?: (props: typeof __VLS_3) => any;
12
+ };
13
+ declare const __VLS_base: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
14
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
15
+ declare const _default: typeof __VLS_export;
16
+ export default _default;
17
+ type __VLS_WithSlots<T, S> = T & {
18
+ new (): {
19
+ $slots: S;
20
+ };
21
+ };
@@ -0,0 +1,36 @@
1
+ import { type VNode } from "vue";
2
+ import { TableColumn, TableRow } from "./TableColumn.ts";
3
+ declare const __VLS_export: <T extends TableRow, C extends TableColumn<T>>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
4
+ props: import("vue").PublicProps & __VLS_PrettifyLocal<{
5
+ data: T[];
6
+ groupBy?: keyof T;
7
+ columns: C[];
8
+ groupRender?: (groupValue: any, row: T) => VNode;
9
+ rowClickable?: boolean;
10
+ rowClass?: (row: T) => string | string[] | undefined;
11
+ startIndex: number;
12
+ bulkSelectionEnabled?: boolean;
13
+ selectedRows?: string[];
14
+ } & {
15
+ "onToggle-row"?: ((rowKey: string, shiftKey: boolean) => any) | undefined;
16
+ "onRow-click"?: ((link: string) => any) | undefined;
17
+ }> & (typeof globalThis extends {
18
+ __VLS_PROPS_FALLBACK: infer P;
19
+ } ? P : {});
20
+ expose: (exposed: {}) => void;
21
+ attrs: any;
22
+ slots: {};
23
+ emit: {
24
+ (e: "row-click", link: string): void;
25
+ (e: "toggle-row", rowKey: string, shiftKey: boolean): void;
26
+ };
27
+ }>) => import("vue").VNode & {
28
+ __ctx?: Awaited<typeof __VLS_setup>;
29
+ };
30
+ declare const _default: typeof __VLS_export;
31
+ export default _default;
32
+ type __VLS_PrettifyLocal<T> = (T extends any ? {
33
+ [K in keyof T]: T[K];
34
+ } : {
35
+ [K in keyof T as K]: T[K];
36
+ }) & {};
@@ -0,0 +1,20 @@
1
+ type __VLS_Props = {
2
+ start: number;
3
+ pageSize: number;
4
+ total: number;
5
+ pageSizes?: number[];
6
+ };
7
+ type __VLS_ModelProps = {
8
+ "start"?: number;
9
+ "pageSize"?: number;
10
+ };
11
+ type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
12
+ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
13
+ "update:start": (value: number | undefined) => any;
14
+ "update:pageSize": (value: number | undefined) => any;
15
+ }, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
16
+ "onUpdate:start"?: ((value: number | undefined) => any) | undefined;
17
+ "onUpdate:pageSize"?: ((value: number | undefined) => any) | undefined;
18
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
19
+ declare const _default: typeof __VLS_export;
20
+ export default _default;
@@ -0,0 +1,35 @@
1
+ import { VNode } from "vue";
2
+ export type TableColumnFilter = SelectColumnFilter | MultiSelectColumnFilter | ToggleColumnFilter;
3
+ export interface SelectColumnFilter {
4
+ type: 'select';
5
+ options: Array<{
6
+ label: string;
7
+ value: any;
8
+ }>;
9
+ placeholder?: string;
10
+ }
11
+ export interface MultiSelectColumnFilter {
12
+ type: 'multi-select';
13
+ options: Array<{
14
+ label: string;
15
+ value: any;
16
+ }>;
17
+ placeholder?: string;
18
+ }
19
+ export interface ToggleColumnFilter {
20
+ type: 'toggle';
21
+ label: string;
22
+ description?: string;
23
+ }
24
+ export interface TableColumn<T extends TableRow, K = keyof T> {
25
+ key: K;
26
+ label: string;
27
+ sortable?: boolean;
28
+ filter?: TableColumnFilter;
29
+ display?: (row: T) => string | VNode;
30
+ tdClass?: string | ((row: T) => string);
31
+ trClass?: string | ((row: T) => string);
32
+ }
33
+ export interface TableRow extends Record<string, any> {
34
+ key: string;
35
+ }
@@ -0,0 +1,13 @@
1
+ import { Ref } from "vue";
2
+ /**
3
+ * Monitor a list of elements' intersection with the viewport to update active links.
4
+ *
5
+ * This updates the activeLink store with the active content's ID for use in menus.
6
+ *
7
+ * @param element Children of this element will be observed
8
+ * @param topOffset Offset from the top of the window to consider not visible
9
+ * @param activeId Ref to store the active element ID
10
+ */
11
+ export declare function useActiveLinkContent(element: Ref<HTMLElement | null>, topOffset: number, activeId: Ref<string>): {
12
+ stop: () => void;
13
+ };
@@ -0,0 +1,14 @@
1
+ import { type Ref } from "vue";
2
+ export interface FilteringOptions {
3
+ syncWith?: Ref<{
4
+ [p: string]: string | null | (string | null)[] | undefined;
5
+ }>;
6
+ }
7
+ export interface UseFilteringReturn<T extends Record<string, any> = Record<string, any>> {
8
+ filters: Ref<Partial<T>>;
9
+ isFiltered: Ref<boolean>;
10
+ clearFilters: () => void;
11
+ filteredColumns: Ref<Partial<Record<keyof T, boolean>>>;
12
+ }
13
+ export declare function filtersToQueryParams<T extends Record<string, any>>(filters: T): Record<keyof T, string | string[]>;
14
+ export declare function useFiltering<T extends Record<string, any>>(filters: T, options?: FilteringOptions): UseFilteringReturn<T>;
@@ -1,10 +1,24 @@
1
- export declare function useOverlayStack(modal?: boolean): {
1
+ import { Ref } from "vue";
2
+ export type OverlayStack = {
2
3
  push: () => void;
3
4
  pop: () => void;
4
- isTop: import("vue").ComputedRef<boolean>;
5
- id: string;
5
+ isTop: Ref<boolean>;
6
+ zIndex: Ref<number>;
6
7
  };
7
- export declare function useOverlayStackState(): {
8
- hasModal: import("vue").ComputedRef<boolean>;
9
- hasOverlay: import("vue").ComputedRef<boolean>;
8
+ declare global {
9
+ interface Window {
10
+ _g_overlay_stack_state: {
11
+ stack: Ref<string[]>;
12
+ modalStack: Ref<string[]>;
13
+ scrollLockStack: Ref<string[]>;
14
+ updateBodyScrollLock: () => void;
15
+ };
16
+ }
17
+ }
18
+ export declare function useOverlayStack(id: string, modal?: boolean, lockScroll?: boolean): OverlayStack;
19
+ export type OverlayStackState = {
20
+ hasModal: Ref<boolean>;
21
+ hasOverlay: Ref<boolean>;
22
+ hasScrollLock: Ref<boolean>;
10
23
  };
24
+ export declare function useOverlayStackState(): OverlayStackState;
@@ -0,0 +1,12 @@
1
+ import { Ref } from "vue";
2
+ /**
3
+ * Composable to manage sidebar state and link components together.
4
+ *
5
+ * @param breakpoint Media query string for when the sidebar should be collapsible
6
+ */
7
+ export declare function useSidebar(breakpoint?: Ref<string> | string): {
8
+ id: string;
9
+ open: Ref<boolean, boolean>;
10
+ isCollapsible: Ref<boolean, boolean>;
11
+ toggle: () => boolean;
12
+ };
@@ -0,0 +1,4 @@
1
+ import type { Directive } from "vue";
2
+ export type VGtooltipDirective = Directive<HTMLElement, string>;
3
+ declare const VGtooltip: VGtooltipDirective;
4
+ export default VGtooltip;