@quaffui/quaff 1.0.0-beta1 → 1.0.0-beta12
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/README.md +2 -0
- package/dist/classes/QScrollObserver.svelte.d.ts +4 -4
- package/dist/classes/QScrollObserver.svelte.js +26 -13
- package/dist/components/avatar/QAvatar.svelte +4 -0
- package/dist/components/avatar/QAvatar.svelte.d.ts +4 -14
- package/dist/components/breadcrumbs/QBreadcrumbs.scss +9 -5
- package/dist/components/breadcrumbs/QBreadcrumbs.svelte +46 -16
- package/dist/components/breadcrumbs/QBreadcrumbs.svelte.d.ts +24 -12
- package/dist/components/breadcrumbs/QBreadcrumbsEl.scss +22 -3
- package/dist/components/breadcrumbs/QBreadcrumbsEl.svelte +50 -38
- package/dist/components/breadcrumbs/QBreadcrumbsEl.svelte.d.ts +4 -14
- package/dist/components/breadcrumbs/props.d.ts +4 -4
- package/dist/components/button/QBtn.scss +3 -1
- package/dist/components/button/QBtn.svelte +38 -22
- package/dist/components/button/QBtn.svelte.d.ts +4 -14
- package/dist/components/button/props.d.ts +9 -2
- package/dist/components/card/QCard.svelte +9 -5
- package/dist/components/card/QCard.svelte.d.ts +4 -14
- package/dist/components/card/QCardActions.svelte +4 -0
- package/dist/components/card/QCardActions.svelte.d.ts +4 -14
- package/dist/components/card/QCardSection.svelte +2 -0
- package/dist/components/card/QCardSection.svelte.d.ts +4 -14
- package/dist/components/checkbox/QCheckbox.svelte +6 -4
- package/dist/components/checkbox/QCheckbox.svelte.d.ts +4 -14
- package/dist/components/checkbox/props.d.ts +1 -1
- package/dist/components/chip/QChip.scss +3 -1
- package/dist/components/chip/QChip.svelte +24 -14
- package/dist/components/chip/QChip.svelte.d.ts +4 -14
- package/dist/components/codeBlock/QCodeBlock.svelte +8 -0
- package/dist/components/codeBlock/QCodeBlock.svelte.d.ts +4 -14
- package/dist/components/dialog/QDialog.scss +17 -0
- package/dist/components/dialog/QDialog.svelte +34 -9
- package/dist/components/dialog/QDialog.svelte.d.ts +8 -21
- package/dist/components/drawer/QDrawer.scss +2 -2
- package/dist/components/drawer/QDrawer.svelte +124 -69
- package/dist/components/drawer/QDrawer.svelte.d.ts +8 -21
- package/dist/components/drawer/props.d.ts +3 -3
- package/dist/components/expansion-item/QExpansionItem.scss +59 -0
- package/dist/components/expansion-item/QExpansionItem.svelte +319 -0
- package/dist/components/expansion-item/QExpansionItem.svelte.d.ts +8 -0
- package/dist/components/expansion-item/docs.d.ts +2 -0
- package/dist/components/expansion-item/docs.js +17 -0
- package/dist/components/expansion-item/props.d.ts +129 -0
- package/dist/components/expansion-item/props.js +1 -0
- package/dist/components/footer/QFooter.scss +1 -1
- package/dist/components/footer/QFooter.svelte +32 -28
- package/dist/components/footer/QFooter.svelte.d.ts +4 -14
- package/dist/components/header/QHeader.scss +1 -1
- package/dist/components/header/QHeader.svelte +41 -33
- package/dist/components/header/QHeader.svelte.d.ts +4 -14
- package/dist/components/icon/QIcon.svelte +6 -4
- package/dist/components/icon/QIcon.svelte.d.ts +4 -14
- package/dist/components/index.d.ts +3 -1
- package/dist/components/index.js +3 -1
- package/dist/components/input/QInput.svelte +139 -17
- package/dist/components/input/QInput.svelte.d.ts +4 -14
- package/dist/components/input/docs.js +2 -2
- package/dist/components/input/mask.d.ts +10 -0
- package/dist/components/input/mask.js +204 -0
- package/dist/components/input/props.d.ts +37 -4
- package/dist/components/layout/QLayout.svelte +248 -93
- package/dist/components/layout/QLayout.svelte.d.ts +67 -15
- package/dist/components/layout/props.d.ts +1 -1
- package/dist/components/list/QItem.scss +7 -4
- package/dist/components/list/QItem.svelte +44 -24
- package/dist/components/list/QItem.svelte.d.ts +17 -13
- package/dist/components/list/QItemSection.scss +24 -3
- package/dist/components/list/QItemSection.svelte +19 -21
- package/dist/components/list/QItemSection.svelte.d.ts +4 -14
- package/dist/components/list/QList.scss +17 -4
- package/dist/components/list/QList.svelte +30 -8
- package/dist/components/list/QList.svelte.d.ts +17 -13
- package/dist/components/list/props.d.ts +3 -3
- package/dist/components/menu/QMenu.scss +37 -0
- package/dist/components/menu/QMenu.svelte +314 -0
- package/dist/components/menu/QMenu.svelte.d.ts +8 -0
- package/dist/components/menu/docs.d.ts +2 -0
- package/dist/components/menu/docs.js +27 -0
- package/dist/components/menu/props.d.ts +48 -0
- package/dist/components/menu/props.js +1 -0
- package/dist/components/progress/QCircularProgress.svelte +17 -14
- package/dist/components/progress/QCircularProgress.svelte.d.ts +4 -14
- package/dist/components/progress/QLinearProgress.svelte +15 -15
- package/dist/components/progress/QLinearProgress.svelte.d.ts +4 -14
- package/dist/components/radio/QRadio.svelte +6 -4
- package/dist/components/radio/QRadio.svelte.d.ts +4 -14
- package/dist/components/radio/props.d.ts +1 -1
- package/dist/components/railbar/QRailbar.scss +1 -1
- package/dist/components/railbar/QRailbar.svelte +36 -35
- package/dist/components/railbar/QRailbar.svelte.d.ts +4 -14
- package/dist/components/select/QSelect.svelte +316 -102
- package/dist/components/select/QSelect.svelte.d.ts +4 -14
- package/dist/components/select/filter.d.ts +13 -0
- package/dist/components/select/filter.js +73 -0
- package/dist/components/select/index.scss +28 -27
- package/dist/components/select/option.d.ts +9 -0
- package/dist/components/select/option.js +59 -0
- package/dist/components/select/props.d.ts +40 -7
- package/dist/components/separator/QSeparator.scss +2 -0
- package/dist/components/separator/QSeparator.svelte +9 -8
- package/dist/components/separator/QSeparator.svelte.d.ts +4 -14
- package/dist/components/switch/QSwitch.scss +12 -6
- package/dist/components/switch/QSwitch.svelte +7 -1
- package/dist/components/switch/QSwitch.svelte.d.ts +4 -14
- package/dist/components/table/QTable.svelte +31 -19
- package/dist/components/table/QTable.svelte.d.ts +4 -14
- package/dist/components/table/index.scss +1 -1
- package/dist/components/tabs/QTab.scss +2 -0
- package/dist/components/tabs/QTab.svelte +19 -22
- package/dist/components/tabs/QTab.svelte.d.ts +4 -14
- package/dist/components/tabs/QTabs.svelte +59 -32
- package/dist/components/tabs/QTabs.svelte.d.ts +18 -18
- package/dist/components/toolbar/QToolbar.svelte +2 -0
- package/dist/components/toolbar/QToolbar.svelte.d.ts +4 -14
- package/dist/components/toolbar/QToolbarTitle.svelte +2 -0
- package/dist/components/toolbar/QToolbarTitle.svelte.d.ts +4 -14
- package/dist/components/tooltip/QTooltip.svelte +48 -38
- package/dist/components/tooltip/QTooltip.svelte.d.ts +29 -17
- package/dist/components/tooltip/QTooltipBase.svelte +18 -8
- package/dist/components/tooltip/QTooltipBase.svelte.d.ts +4 -14
- package/dist/composables/index.d.ts +2 -0
- package/dist/composables/index.js +2 -0
- package/dist/composables/useColor.d.ts +1 -0
- package/dist/composables/useColor.js +19 -0
- package/dist/composables/useRevealScrollObserver.svelte.d.ts +9 -0
- package/dist/composables/useRevealScrollObserver.svelte.js +25 -0
- package/dist/composables/useRouterLink.d.ts +3 -2
- package/dist/composables/useRouterLink.js +2 -2
- package/dist/css/_components.scss +2 -0
- package/dist/css/classes/_grid.scss +12 -1
- package/dist/css/index.css +1 -1
- package/dist/css/mixins/_design.scss +1 -1
- package/dist/css/mixins/_field.scss +3 -2
- package/dist/css/mixins/_table.scss +1 -1
- package/dist/css/mixins/_toolbar.scss +1 -1
- package/dist/css/shared/q-field.scss +7 -6
- package/dist/css/theme/_page.scss +8 -6
- package/dist/css/theme/_reset.scss +2 -1
- package/dist/helpers/clickOutside.js +5 -4
- package/dist/helpers/ripple.js +5 -6
- package/dist/helpers/version.d.ts +1 -1
- package/dist/helpers/version.js +1 -1
- package/dist/{components/private/ContextReseter.svelte → internal/ContextResetter.svelte} +2 -3
- package/dist/internal/ContextResetter.svelte.d.ts +8 -0
- package/dist/{components/private → internal}/QIconSnippet.svelte +2 -2
- package/dist/internal/QIconSnippet.svelte.d.ts +10 -0
- package/dist/utils/context.d.ts +49 -32
- package/dist/utils/context.js +82 -33
- package/dist/utils/dom.d.ts +6 -0
- package/dist/utils/dom.js +33 -0
- package/dist/utils/events.d.ts +0 -24
- package/dist/utils/events.js +0 -24
- package/package.json +44 -38
- package/dist/classes/QContext.svelte.d.ts +0 -42
- package/dist/classes/QContext.svelte.js +0 -63
- package/dist/components/avatar/docs.props.d.ts +0 -3
- package/dist/components/avatar/docs.props.js +0 -87
- package/dist/components/breadcrumbs/docs.props.d.ts +0 -5
- package/dist/components/breadcrumbs/docs.props.js +0 -144
- package/dist/components/button/docs.props.d.ts +0 -3
- package/dist/components/button/docs.props.js +0 -227
- package/dist/components/card/docs.props.d.ts +0 -7
- package/dist/components/card/docs.props.js +0 -89
- package/dist/components/checkbox/docs.props.d.ts +0 -3
- package/dist/components/checkbox/docs.props.js +0 -41
- package/dist/components/chip/docs.props.d.ts +0 -3
- package/dist/components/chip/docs.props.js +0 -137
- package/dist/components/codeBlock/docs.props.d.ts +0 -3
- package/dist/components/codeBlock/docs.props.js +0 -83
- package/dist/components/dialog/docs.props.d.ts +0 -3
- package/dist/components/dialog/docs.props.js +0 -65
- package/dist/components/drawer/docs.props.d.ts +0 -3
- package/dist/components/drawer/docs.props.js +0 -149
- package/dist/components/footer/docs.props.d.ts +0 -3
- package/dist/components/footer/docs.props.js +0 -65
- package/dist/components/header/docs.props.d.ts +0 -7
- package/dist/components/header/docs.props.js +0 -131
- package/dist/components/icon/docs.props.d.ts +0 -3
- package/dist/components/icon/docs.props.js +0 -107
- package/dist/components/input/docs.props.d.ts +0 -3
- package/dist/components/input/docs.props.js +0 -162
- package/dist/components/layout/docs.props.d.ts +0 -3
- package/dist/components/layout/docs.props.js +0 -81
- package/dist/components/list/docs.props.d.ts +0 -11
- package/dist/components/list/docs.props.js +0 -434
- package/dist/components/private/ContextReseter.svelte.d.ts +0 -14
- package/dist/components/private/QApi.svelte +0 -296
- package/dist/components/private/QApi.svelte.d.ts +0 -14
- package/dist/components/private/QDocs.svelte +0 -155
- package/dist/components/private/QDocs.svelte.d.ts +0 -14
- package/dist/components/private/QDocsSection.svelte +0 -62
- package/dist/components/private/QDocsSection.svelte.d.ts +0 -14
- package/dist/components/private/QIconSnippet.svelte.d.ts +0 -14
- package/dist/components/private/index.d.ts +0 -6
- package/dist/components/private/index.js +0 -6
- package/dist/components/progress/docs.props.d.ts +0 -5
- package/dist/components/progress/docs.props.js +0 -314
- package/dist/components/radio/docs.props.d.ts +0 -3
- package/dist/components/radio/docs.props.js +0 -53
- package/dist/components/railbar/docs.props.d.ts +0 -3
- package/dist/components/railbar/docs.props.js +0 -47
- package/dist/components/select/docs.props.d.ts +0 -3
- package/dist/components/select/docs.props.js +0 -198
- package/dist/components/separator/docs.props.d.ts +0 -5
- package/dist/components/separator/docs.props.js +0 -196
- package/dist/components/switch/docs.props.d.ts +0 -3
- package/dist/components/switch/docs.props.js +0 -119
- package/dist/components/table/docs.props.d.ts +0 -3
- package/dist/components/table/docs.props.js +0 -94
- package/dist/components/tabs/docs.props.d.ts +0 -5
- package/dist/components/tabs/docs.props.js +0 -86
- package/dist/components/toolbar/docs.props.d.ts +0 -5
- package/dist/components/toolbar/docs.props.js +0 -68
- package/dist/components/tooltip/docs.props.d.ts +0 -3
- package/dist/components/tooltip/docs.props.js +0 -77
- package/dist/utils/types.json +0 -31
|
@@ -1,12 +1,22 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { QLayoutCtxName } from "../../utils";
|
|
6
|
-
import type { AppbarContext } from "../layout/QLayout.svelte";
|
|
7
|
-
import type { QLayoutProps } from "../layout/props";
|
|
2
|
+
import { onMount } from "svelte";
|
|
3
|
+
import { useRevealScrollObserver } from "../../composables";
|
|
4
|
+
import { headerCtx } from "../layout/QLayout.svelte";
|
|
8
5
|
import type { QHeaderProps } from "./props";
|
|
9
6
|
|
|
7
|
+
// #region: --- Non-reactive variables
|
|
8
|
+
const uid = $props.id();
|
|
9
|
+
// #endregion: --- Non-reactive variables
|
|
10
|
+
|
|
11
|
+
// #region: --- Reactive variables
|
|
12
|
+
let headerEl = $state<HTMLElement>();
|
|
13
|
+
|
|
14
|
+
const headerContext = headerCtx.assertGet(
|
|
15
|
+
"QHeader should be used inside QLayout",
|
|
16
|
+
);
|
|
17
|
+
// #endregion: --- Reactive variables
|
|
18
|
+
|
|
19
|
+
// #region: --- Props
|
|
10
20
|
let {
|
|
11
21
|
elevated = false,
|
|
12
22
|
inset = false,
|
|
@@ -17,41 +27,37 @@
|
|
|
17
27
|
children,
|
|
18
28
|
...props
|
|
19
29
|
}: QHeaderProps = $props();
|
|
30
|
+
// #endregion: --- Props
|
|
20
31
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
32
|
+
// #region: --- Derived values
|
|
33
|
+
const revealObserver = useRevealScrollObserver("header", uid, () => reveal);
|
|
34
|
+
const revealScroll = $derived(revealObserver.scroll);
|
|
24
35
|
|
|
25
|
-
const
|
|
26
|
-
|
|
27
|
-
QLayoutCtxName.view,
|
|
36
|
+
const offset = $derived(
|
|
37
|
+
revealScroll ? revealScroll.position - height : undefined,
|
|
28
38
|
);
|
|
29
|
-
if (!headerContext || !layoutView) {
|
|
30
|
-
throw new Error("QHeader should be used inside QLayout");
|
|
31
|
-
}
|
|
32
39
|
|
|
33
|
-
const scroll = $derived(
|
|
34
|
-
reveal
|
|
35
|
-
? new QScrollObserver(`.q-header--${uid} ~ .q-layout__content`)
|
|
36
|
-
: undefined,
|
|
37
|
-
);
|
|
38
|
-
const offset = $derived(scroll ? scroll.position - height : undefined);
|
|
39
40
|
// Collapse the header `${reavealOffset}px` below the top of layout content when scrolling down
|
|
40
41
|
const collapsed = $derived(
|
|
41
|
-
reveal &&
|
|
42
|
+
reveal && revealScroll?.direction === "down" && offset! - revealOffset > 0,
|
|
42
43
|
);
|
|
43
44
|
|
|
44
|
-
const leftOffset = (
|
|
45
|
-
|
|
45
|
+
const leftOffset = $derived(headerContext.view.charAt(0) === "l");
|
|
46
|
+
|
|
47
|
+
const rightOffset = $derived(headerContext.view.charAt(2) === "r");
|
|
48
|
+
// #endregion: --- Derived values
|
|
46
49
|
|
|
50
|
+
// #region: --- Effects
|
|
47
51
|
$effect.pre(() => {
|
|
48
|
-
|
|
52
|
+
headerCtx.updateEntries({
|
|
49
53
|
height,
|
|
50
54
|
collapsed,
|
|
51
55
|
ready: true,
|
|
52
56
|
});
|
|
53
57
|
});
|
|
58
|
+
// #endregion: --- Effects
|
|
54
59
|
|
|
60
|
+
// #region: --- Lifecycle
|
|
55
61
|
onMount(() => {
|
|
56
62
|
if (headerContext) {
|
|
57
63
|
setTimeout(() => {
|
|
@@ -62,16 +68,18 @@
|
|
|
62
68
|
}
|
|
63
69
|
|
|
64
70
|
return () => {
|
|
65
|
-
if (
|
|
71
|
+
if (headerEl) {
|
|
66
72
|
headerEl.style.transition = "none";
|
|
67
|
-
headerContext.updateEntries({
|
|
68
|
-
height: 0,
|
|
69
|
-
collapsed: false,
|
|
70
|
-
ready: false,
|
|
71
|
-
});
|
|
72
73
|
}
|
|
74
|
+
|
|
75
|
+
headerCtx.updateEntries({
|
|
76
|
+
height: 0,
|
|
77
|
+
collapsed: false,
|
|
78
|
+
ready: false,
|
|
79
|
+
});
|
|
73
80
|
};
|
|
74
81
|
});
|
|
82
|
+
// #endregion: --- Lifecycle
|
|
75
83
|
</script>
|
|
76
84
|
|
|
77
85
|
<header
|
|
@@ -84,8 +92,8 @@
|
|
|
84
92
|
elevated && "q-header--elevated",
|
|
85
93
|
bordered && "q-header--bordered",
|
|
86
94
|
collapsed && "q-header--collapsed",
|
|
87
|
-
leftOffset
|
|
88
|
-
rightOffset
|
|
95
|
+
leftOffset && "q-header--offset-left",
|
|
96
|
+
rightOffset && "q-header--offset-right",
|
|
89
97
|
inset && "q-header--inset",
|
|
90
98
|
]}
|
|
91
99
|
style:--header-height="{height}px"
|
|
@@ -1,14 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
declare const
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
[evt: string]: CustomEvent<any>;
|
|
6
|
-
};
|
|
7
|
-
slots: {};
|
|
8
|
-
};
|
|
9
|
-
type QHeaderProps_ = typeof __propDef.props;
|
|
10
|
-
export { QHeaderProps_ as QHeaderProps };
|
|
11
|
-
export type QHeaderEvents = typeof __propDef.events;
|
|
12
|
-
export type QHeaderSlots = typeof __propDef.slots;
|
|
13
|
-
export default class QHeader extends SvelteComponentTyped<QHeaderProps_, QHeaderEvents, QHeaderSlots> {
|
|
14
|
-
}
|
|
1
|
+
import type { QHeaderProps } from "./props";
|
|
2
|
+
declare const QHeader: import("svelte").Component<QHeaderProps, {}, "">;
|
|
3
|
+
type QHeader = ReturnType<typeof QHeader>;
|
|
4
|
+
export default QHeader;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
-
import { useSize } from "../../composables";
|
|
2
|
+
import { useSize, useColor } from "../../composables";
|
|
3
3
|
import type { QIconProps } from "./props";
|
|
4
4
|
|
|
5
|
+
// #region: --- Props
|
|
5
6
|
let {
|
|
6
7
|
size = "md",
|
|
7
8
|
name,
|
|
@@ -14,12 +15,12 @@
|
|
|
14
15
|
children,
|
|
15
16
|
...props
|
|
16
17
|
}: QIconProps = $props();
|
|
18
|
+
// #endregion: --- Props
|
|
17
19
|
|
|
20
|
+
// #region: --- Derived values
|
|
18
21
|
const qSize = $derived(useSize(size, "q-icon"));
|
|
19
22
|
|
|
20
|
-
const parsedColor = $derived(
|
|
21
|
-
color && `var(--${color.replace("#", "")}, ${color})`,
|
|
22
|
-
);
|
|
23
|
+
const parsedColor = $derived(color && useColor(color));
|
|
23
24
|
|
|
24
25
|
const imgAttrs = $derived({
|
|
25
26
|
alt: "Quaff Image Icon",
|
|
@@ -27,6 +28,7 @@
|
|
|
27
28
|
});
|
|
28
29
|
|
|
29
30
|
const typeClass = $derived(`q-icon--${type}`);
|
|
31
|
+
// #endregion: --- Derived values
|
|
30
32
|
</script>
|
|
31
33
|
|
|
32
34
|
<i
|
|
@@ -1,14 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
declare const
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
[evt: string]: CustomEvent<any>;
|
|
6
|
-
};
|
|
7
|
-
slots: {};
|
|
8
|
-
};
|
|
9
|
-
type QIconProps_ = typeof __propDef.props;
|
|
10
|
-
export { QIconProps_ as QIconProps };
|
|
11
|
-
export type QIconEvents = typeof __propDef.events;
|
|
12
|
-
export type QIconSlots = typeof __propDef.slots;
|
|
13
|
-
export default class QIcon extends SvelteComponentTyped<QIconProps_, QIconEvents, QIconSlots> {
|
|
14
|
-
}
|
|
1
|
+
import type { QIconProps } from "./props";
|
|
2
|
+
declare const QIcon: import("svelte").Component<QIconProps, {}, "">;
|
|
3
|
+
type QIcon = ReturnType<typeof QIcon>;
|
|
4
|
+
export default QIcon;
|
|
@@ -11,6 +11,7 @@ import QCircularProgress from "./progress/QCircularProgress.svelte";
|
|
|
11
11
|
import QCodeBlock from "./codeBlock/QCodeBlock.svelte";
|
|
12
12
|
import QDialog from "./dialog/QDialog.svelte";
|
|
13
13
|
import QDrawer from "./drawer/QDrawer.svelte";
|
|
14
|
+
import QExpansionItem from "./expansion-item/QExpansionItem.svelte";
|
|
14
15
|
import QFooter from "./footer/QFooter.svelte";
|
|
15
16
|
import QHeader from "./header/QHeader.svelte";
|
|
16
17
|
import QIcon from "./icon/QIcon.svelte";
|
|
@@ -21,6 +22,7 @@ import QList from "./list/QList.svelte";
|
|
|
21
22
|
import QItem from "./list/QItem.svelte";
|
|
22
23
|
import QItemSection from "./list/QItemSection.svelte";
|
|
23
24
|
import QLinearProgress from "./progress/QLinearProgress.svelte";
|
|
25
|
+
import QMenu from "./menu/QMenu.svelte";
|
|
24
26
|
import QRadio from "./radio/QRadio.svelte";
|
|
25
27
|
import QRailbar from "./railbar/QRailbar.svelte";
|
|
26
28
|
import QSeparator from "./separator/QSeparator.svelte";
|
|
@@ -31,4 +33,4 @@ import QSwitch from "./switch/QSwitch.svelte";
|
|
|
31
33
|
import QToolbar from "./toolbar/QToolbar.svelte";
|
|
32
34
|
import QToolbarTitle from "./toolbar/QToolbarTitle.svelte";
|
|
33
35
|
import QTooltip from "./tooltip/QTooltip.svelte";
|
|
34
|
-
export { QAvatar, QBreadcrumbs, QBreadcrumbsEl, QBtn, QCard, QCardSection, QCardActions, QCheckbox, QChip, QCircularProgress, QCodeBlock, QDialog, QDrawer, QFooter, QHeader, QIcon, QInput, QSelect, QLayout, QList, QItem, QItemSection, QLinearProgress, QRadio, QRailbar, QSeparator, QTabs, QTab, QTable, QSwitch, QToolbar, QToolbarTitle, QTooltip, };
|
|
36
|
+
export { QAvatar, QBreadcrumbs, QBreadcrumbsEl, QBtn, QCard, QCardSection, QCardActions, QCheckbox, QChip, QCircularProgress, QCodeBlock, QDialog, QDrawer, QExpansionItem, QFooter, QHeader, QIcon, QInput, QSelect, QLayout, QList, QItem, QItemSection, QLinearProgress, QMenu, QRadio, QRailbar, QSeparator, QTabs, QTab, QTable, QSwitch, QToolbar, QToolbarTitle, QTooltip, };
|
package/dist/components/index.js
CHANGED
|
@@ -11,6 +11,7 @@ import QCircularProgress from "./progress/QCircularProgress.svelte";
|
|
|
11
11
|
import QCodeBlock from "./codeBlock/QCodeBlock.svelte";
|
|
12
12
|
import QDialog from "./dialog/QDialog.svelte";
|
|
13
13
|
import QDrawer from "./drawer/QDrawer.svelte";
|
|
14
|
+
import QExpansionItem from "./expansion-item/QExpansionItem.svelte";
|
|
14
15
|
import QFooter from "./footer/QFooter.svelte";
|
|
15
16
|
import QHeader from "./header/QHeader.svelte";
|
|
16
17
|
import QIcon from "./icon/QIcon.svelte";
|
|
@@ -21,6 +22,7 @@ import QList from "./list/QList.svelte";
|
|
|
21
22
|
import QItem from "./list/QItem.svelte";
|
|
22
23
|
import QItemSection from "./list/QItemSection.svelte";
|
|
23
24
|
import QLinearProgress from "./progress/QLinearProgress.svelte";
|
|
25
|
+
import QMenu from "./menu/QMenu.svelte";
|
|
24
26
|
import QRadio from "./radio/QRadio.svelte";
|
|
25
27
|
import QRailbar from "./railbar/QRailbar.svelte";
|
|
26
28
|
import QSeparator from "./separator/QSeparator.svelte";
|
|
@@ -31,4 +33,4 @@ import QSwitch from "./switch/QSwitch.svelte";
|
|
|
31
33
|
import QToolbar from "./toolbar/QToolbar.svelte";
|
|
32
34
|
import QToolbarTitle from "./toolbar/QToolbarTitle.svelte";
|
|
33
35
|
import QTooltip from "./tooltip/QTooltip.svelte";
|
|
34
|
-
export { QAvatar, QBreadcrumbs, QBreadcrumbsEl, QBtn, QCard, QCardSection, QCardActions, QCheckbox, QChip, QCircularProgress, QCodeBlock, QDialog, QDrawer, QFooter, QHeader, QIcon, QInput, QSelect, QLayout, QList, QItem, QItemSection, QLinearProgress, QRadio, QRailbar, QSeparator, QTabs, QTab, QTable, QSwitch, QToolbar, QToolbarTitle, QTooltip, };
|
|
36
|
+
export { QAvatar, QBreadcrumbs, QBreadcrumbsEl, QBtn, QCard, QCardSection, QCardActions, QCheckbox, QChip, QCircularProgress, QCodeBlock, QDialog, QDrawer, QExpansionItem, QFooter, QHeader, QIcon, QInput, QSelect, QLayout, QList, QItem, QItemSection, QLinearProgress, QMenu, QRadio, QRailbar, QSeparator, QTabs, QTab, QTable, QSwitch, QToolbar, QToolbarTitle, QTooltip, };
|
|
@@ -1,17 +1,27 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
-
import type
|
|
2
|
+
import { type QEvent } from "../../utils";
|
|
3
|
+
import {
|
|
4
|
+
deleteMaskedToken,
|
|
5
|
+
maskCaretPosition,
|
|
6
|
+
maskValue,
|
|
7
|
+
unmaskValue,
|
|
8
|
+
} from "./mask";
|
|
9
|
+
import type { QInputProps } from "./props";
|
|
3
10
|
|
|
4
|
-
type QInputFocusEvent = QEvent<FocusEvent,
|
|
11
|
+
type QInputFocusEvent = QEvent<FocusEvent, HTMLInputElement>;
|
|
12
|
+
type QInputInputEvent = QEvent<Event, HTMLInputElement>;
|
|
13
|
+
type QInputKeyboardEvent = QEvent<KeyboardEvent, HTMLInputElement>;
|
|
5
14
|
|
|
15
|
+
// #region: --- Reactive variables
|
|
6
16
|
let focus = $state(false);
|
|
7
17
|
|
|
8
18
|
let snippetPrependWidth = $state(0);
|
|
19
|
+
// #endregion: --- Reactive variables
|
|
9
20
|
|
|
10
|
-
|
|
11
|
-
|
|
21
|
+
// #region: --- Props
|
|
12
22
|
let {
|
|
13
23
|
dense = false,
|
|
14
|
-
|
|
24
|
+
disabled = false,
|
|
15
25
|
error = false,
|
|
16
26
|
errorMessage = undefined,
|
|
17
27
|
filled = false,
|
|
@@ -24,29 +34,136 @@
|
|
|
24
34
|
append = undefined,
|
|
25
35
|
after = undefined,
|
|
26
36
|
value = $bindable(),
|
|
27
|
-
|
|
37
|
+
class: userClass,
|
|
38
|
+
style,
|
|
39
|
+
onfocus,
|
|
40
|
+
onblur,
|
|
41
|
+
placeholder = "",
|
|
42
|
+
tabindex,
|
|
43
|
+
type,
|
|
44
|
+
mask,
|
|
45
|
+
fillMask,
|
|
46
|
+
unmaskedValue = false,
|
|
47
|
+
oninput,
|
|
48
|
+
onkeydown,
|
|
49
|
+
...inputProps
|
|
28
50
|
}: QInputProps = $props();
|
|
51
|
+
// #endregion: --- Props
|
|
52
|
+
|
|
53
|
+
// #region: --- Derived values
|
|
54
|
+
const displayValue = $derived(
|
|
55
|
+
mask ? maskValue(String(value ?? ""), mask, fillMask) : (value ?? ""),
|
|
56
|
+
);
|
|
57
|
+
const hasValue = $derived(
|
|
58
|
+
value !== "" && value !== undefined && value !== null,
|
|
59
|
+
);
|
|
60
|
+
const hasNativePlaceholder = $derived(
|
|
61
|
+
["date", "datetime-local", "month", "time", "week"].includes(String(type)),
|
|
62
|
+
);
|
|
63
|
+
const active = $derived(
|
|
64
|
+
hasValue ||
|
|
65
|
+
focus ||
|
|
66
|
+
!!placeholder ||
|
|
67
|
+
hasNativePlaceholder ||
|
|
68
|
+
(!!mask && fillMask !== undefined),
|
|
69
|
+
);
|
|
70
|
+
const inputType = $derived(mask ? (type ?? "text") : type);
|
|
71
|
+
// #endregion: --- Derived values
|
|
72
|
+
|
|
73
|
+
// #region: --- Functions
|
|
74
|
+
function setCaret(input: HTMLInputElement, position: number) {
|
|
75
|
+
try {
|
|
76
|
+
input.setSelectionRange(position, position);
|
|
77
|
+
} catch {
|
|
78
|
+
// Some native input types do not support text selection.
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
function onInput(e: QInputInputEvent) {
|
|
83
|
+
const input = e.currentTarget;
|
|
84
|
+
|
|
85
|
+
if (!mask) {
|
|
86
|
+
if (type === "number" || type === "range") {
|
|
87
|
+
value = Number.isNaN(input.valueAsNumber) ? "" : input.valueAsNumber;
|
|
88
|
+
} else {
|
|
89
|
+
value = input.value;
|
|
90
|
+
}
|
|
91
|
+
oninput?.(e);
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
const cursor = input.selectionStart ?? input.value.length;
|
|
96
|
+
const previousDisplayLength = String(displayValue).length;
|
|
97
|
+
const masked = maskValue(input.value, mask, fillMask);
|
|
98
|
+
const unmasked = unmaskValue(masked, mask, fillMask);
|
|
99
|
+
const tokenCount =
|
|
100
|
+
fillMask !== undefined &&
|
|
101
|
+
fillMask !== false &&
|
|
102
|
+
cursor > previousDisplayLength
|
|
103
|
+
? unmasked.length
|
|
104
|
+
: unmaskValue(input.value.slice(0, cursor), mask, fillMask).length;
|
|
105
|
+
const nextCaret = maskCaretPosition(tokenCount, mask, masked.length);
|
|
29
106
|
|
|
30
|
-
|
|
107
|
+
input.value = masked;
|
|
108
|
+
value = unmaskedValue ? unmasked : masked;
|
|
109
|
+
setCaret(input, nextCaret);
|
|
110
|
+
queueMicrotask(() => setCaret(input, nextCaret));
|
|
111
|
+
oninput?.(e);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
function onKeydown(e: QInputKeyboardEvent) {
|
|
115
|
+
onkeydown?.(e);
|
|
116
|
+
if (
|
|
117
|
+
e.defaultPrevented ||
|
|
118
|
+
!mask ||
|
|
119
|
+
(e.key !== "Backspace" && e.key !== "Delete")
|
|
120
|
+
) {
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
const input = e.currentTarget;
|
|
125
|
+
const start = input.selectionStart;
|
|
126
|
+
const end = input.selectionEnd;
|
|
127
|
+
if (start === null || end === null || start !== end) {
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
const next = deleteMaskedToken(
|
|
132
|
+
input.value,
|
|
133
|
+
mask,
|
|
134
|
+
start,
|
|
135
|
+
e.key === "Backspace" ? "backward" : "forward",
|
|
136
|
+
fillMask,
|
|
137
|
+
);
|
|
138
|
+
if (!next) {
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
e.preventDefault();
|
|
143
|
+
input.value = next.masked;
|
|
144
|
+
value = next[unmaskedValue ? "unmasked" : "masked"];
|
|
145
|
+
setCaret(input, next.caret);
|
|
146
|
+
queueMicrotask(() => setCaret(input, next.caret));
|
|
147
|
+
}
|
|
31
148
|
|
|
32
149
|
function onFocus(e: QInputFocusEvent) {
|
|
33
150
|
focus = true;
|
|
34
|
-
|
|
151
|
+
onfocus?.(e);
|
|
35
152
|
}
|
|
36
153
|
|
|
37
154
|
function onBlur(e: QInputFocusEvent) {
|
|
38
155
|
focus = false;
|
|
39
|
-
|
|
156
|
+
onblur?.(e);
|
|
40
157
|
}
|
|
158
|
+
// #endregion: --- Functions
|
|
41
159
|
|
|
42
160
|
// q-field here, q-input in classes
|
|
43
161
|
</script>
|
|
44
162
|
|
|
45
163
|
<div
|
|
46
|
-
{...props}
|
|
47
164
|
class={[
|
|
48
165
|
"q-field",
|
|
49
|
-
|
|
166
|
+
userClass,
|
|
50
167
|
"q-input",
|
|
51
168
|
!outlined && !rounded && !filled && "q-field--default",
|
|
52
169
|
outlined && "q-field--outlined",
|
|
@@ -59,11 +176,12 @@
|
|
|
59
176
|
label && "q-field--label",
|
|
60
177
|
!!append && "q-field--snippet-append",
|
|
61
178
|
!!prepend && "q-field--snippet-prepend",
|
|
62
|
-
|
|
179
|
+
disabled && "q-field--disabled",
|
|
63
180
|
error && "q-field--error",
|
|
64
181
|
]}
|
|
182
|
+
{style}
|
|
65
183
|
style:--snippet-prepend-width="{snippetPrependWidth}px"
|
|
66
|
-
aria-disabled={
|
|
184
|
+
aria-disabled={disabled || undefined}
|
|
67
185
|
data-quaff
|
|
68
186
|
>
|
|
69
187
|
{#if before}
|
|
@@ -83,13 +201,17 @@
|
|
|
83
201
|
</div>
|
|
84
202
|
{/if}
|
|
85
203
|
<input
|
|
204
|
+
{...inputProps}
|
|
86
205
|
class="q-field__input"
|
|
87
|
-
|
|
88
|
-
placeholder
|
|
206
|
+
value={displayValue}
|
|
207
|
+
{placeholder}
|
|
208
|
+
type={inputType}
|
|
209
|
+
oninput={onInput}
|
|
210
|
+
onkeydown={onKeydown}
|
|
89
211
|
onfocus={onFocus}
|
|
90
212
|
onblur={onBlur}
|
|
91
|
-
disabled
|
|
92
|
-
tabindex={
|
|
213
|
+
{disabled}
|
|
214
|
+
tabindex={disabled === true ? -1 : (tabindex ?? 0)}
|
|
93
215
|
/>
|
|
94
216
|
<span class="q-field__label">{label}</span>
|
|
95
217
|
|
|
@@ -1,14 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
declare const
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
[evt: string]: CustomEvent<any>;
|
|
6
|
-
};
|
|
7
|
-
slots: {};
|
|
8
|
-
};
|
|
9
|
-
type QInputProps_ = typeof __propDef.props;
|
|
10
|
-
export { QInputProps_ as QInputProps };
|
|
11
|
-
export type QInputEvents = typeof __propDef.events;
|
|
12
|
-
export type QInputSlots = typeof __propDef.slots;
|
|
13
|
-
export default class QInput extends SvelteComponentTyped<QInputProps_, QInputEvents, QInputSlots> {
|
|
14
|
-
}
|
|
1
|
+
import type { QInputProps } from "./props";
|
|
2
|
+
declare const QInput: import("svelte").Component<QInputProps, {}, "value">;
|
|
3
|
+
type QInput = ReturnType<typeof QInput>;
|
|
4
|
+
export default QInput;
|
|
@@ -9,8 +9,8 @@ export const QInputDocs = {
|
|
|
9
9
|
events: [
|
|
10
10
|
{
|
|
11
11
|
name: "input",
|
|
12
|
-
type: "
|
|
13
|
-
description: "
|
|
12
|
+
type: "InputEvent",
|
|
13
|
+
description: "Native input event from the inner input element.",
|
|
14
14
|
},
|
|
15
15
|
],
|
|
16
16
|
},
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export type QInputFillMask = boolean | string;
|
|
2
|
+
export type QMaskDeleteDirection = "backward" | "forward";
|
|
3
|
+
export declare function unmaskValue(value: string, mask: string, fillMask?: QInputFillMask): string;
|
|
4
|
+
export declare function maskValue(value: string, mask: string, fillMask?: QInputFillMask): string;
|
|
5
|
+
export declare function maskCaretPosition(tokenCount: number, mask: string, displayLength: number): number;
|
|
6
|
+
export declare function deleteMaskedToken(value: string, mask: string, caret: number, direction: QMaskDeleteDirection, fillMask?: QInputFillMask): {
|
|
7
|
+
masked: string;
|
|
8
|
+
unmasked: string;
|
|
9
|
+
caret: number;
|
|
10
|
+
} | null;
|