@svelte-thing/primitives 0.0.1 → 0.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.
- package/dist/{chunk-D7D4PA-g.mjs → _virtual/_rolldown/runtime.mjs} +1 -1
- package/dist/button/createButton.svelte.d.mts +9 -0
- package/dist/button/createButton.svelte.mjs +6 -0
- package/dist/button/index.d.mts +1 -8
- package/dist/button/index.mjs +1 -5
- package/dist/{index-C-ME1Tk9.d.mts → field/date/createPicker.svelte.d.mts} +1 -1
- package/dist/field/date/createPicker.svelte.mjs +27 -0
- package/dist/field/date/index.d.mts +1 -1
- package/dist/field/date/index.mjs +1 -26
- package/dist/{index-CA_POIj_.d.mts → field/error/createError.svelte.d.mts} +1 -1
- package/dist/field/error/createError.svelte.mjs +10 -0
- package/dist/field/error/index.d.mts +1 -1
- package/dist/field/error/index.mjs +1 -9
- package/dist/field/index.d.mts +10 -9
- package/dist/field/index.mjs +16 -9
- package/dist/{createInput.svelte-DTz79zNF.d.mts → field/input/createInput.svelte.d.mts} +1 -1
- package/dist/{createInput.svelte-DzcT9u1t.mjs → field/input/createInput.svelte.mjs} +2 -2
- package/dist/field/input/index.d.mts +1 -1
- package/dist/field/input/index.mjs +1 -1
- package/dist/{index-OI9KlY5x.d.mts → field/label/createLabel.svelte.d.mts} +1 -1
- package/dist/field/label/createLabel.svelte.mjs +15 -0
- package/dist/field/label/index.d.mts +1 -1
- package/dist/field/label/index.mjs +1 -14
- package/dist/field/password/context.d.mts +6 -0
- package/dist/field/password/context.mjs +5 -0
- package/dist/field/password/createPassword.svelte.d.mts +15 -0
- package/dist/field/password/createPassword.svelte.mjs +25 -0
- package/dist/field/password/createShow.svelte.d.mts +9 -0
- package/dist/field/password/createShow.svelte.mjs +35 -0
- package/dist/field/password/index.d.mts +3 -1
- package/dist/field/password/index.mjs +3 -60
- package/dist/field/root/context.d.mts +6 -0
- package/dist/{context-D77KIx26.mjs → field/root/context.mjs} +1 -1
- package/dist/{index-BLb5EVhG.d.mts → field/root/createRoot.svelte.d.mts} +1 -4
- package/dist/field/root/createRoot.svelte.mjs +79 -0
- package/dist/field/root/index.d.mts +2 -1
- package/dist/field/root/index.mjs +2 -78
- package/dist/index.d.mts +2 -2
- package/dist/index.mjs +2 -2
- package/dist/menu/index.d.mts +5 -4
- package/dist/menu/index.mjs +9 -5
- package/dist/menu/item/createItem.svelte.d.mts +14 -0
- package/dist/menu/item/createItem.svelte.mjs +86 -0
- package/dist/menu/item/index.d.mts +1 -13
- package/dist/menu/item/index.mjs +1 -85
- package/dist/menu/popup/createPopup.svelte.d.mts +19 -0
- package/dist/menu/popup/createPopup.svelte.mjs +121 -0
- package/dist/menu/popup/index.d.mts +1 -18
- package/dist/menu/popup/index.mjs +1 -120
- package/dist/menu/root/context.d.mts +6 -0
- package/dist/{context-BJAwVB1S.mjs → menu/root/context.mjs} +1 -1
- package/dist/menu/root/createRoot.svelte.d.mts +25 -0
- package/dist/menu/root/createRoot.svelte.mjs +69 -0
- package/dist/menu/root/index.d.mts +2 -27
- package/dist/menu/root/index.mjs +2 -68
- package/dist/menu/trigger/createTrigger.svelte.d.mts +13 -0
- package/dist/menu/trigger/createTrigger.svelte.mjs +27 -0
- package/dist/menu/trigger/index.d.mts +1 -12
- package/dist/menu/trigger/index.mjs +1 -26
- package/dist/pagination/content/createContent.svelte.d.mts +9 -0
- package/dist/pagination/content/createContent.svelte.mjs +6 -0
- package/dist/pagination/content/index.d.mts +1 -8
- package/dist/pagination/content/index.mjs +1 -5
- package/dist/pagination/ellipsis/createEllipsis.svelte.d.mts +9 -0
- package/dist/pagination/ellipsis/createEllipsis.svelte.mjs +6 -0
- package/dist/pagination/ellipsis/index.d.mts +1 -8
- package/dist/pagination/ellipsis/index.mjs +1 -5
- package/dist/pagination/index.d.mts +5 -5
- package/dist/pagination/index.mjs +5 -5
- package/dist/pagination/item/createItem.svelte.d.mts +9 -0
- package/dist/pagination/item/createItem.svelte.mjs +6 -0
- package/dist/pagination/item/index.d.mts +1 -8
- package/dist/pagination/item/index.mjs +1 -5
- package/dist/pagination/link/createLink.svelte.d.mts +13 -0
- package/dist/pagination/link/createLink.svelte.mjs +13 -0
- package/dist/pagination/link/index.d.mts +1 -12
- package/dist/pagination/link/index.mjs +1 -12
- package/dist/pagination/root/createRoot.svelte.d.mts +9 -0
- package/dist/pagination/root/createRoot.svelte.mjs +9 -0
- package/dist/pagination/root/index.d.mts +1 -8
- package/dist/pagination/root/index.mjs +1 -8
- package/dist/tab/index.d.mts +8 -9
- package/dist/tab/index.mjs +15 -9
- package/dist/{index-07sbgO0w.d.mts → tab/indicator/createIndicator.svelte.d.mts} +1 -1
- package/dist/tab/indicator/createIndicator.svelte.mjs +42 -0
- package/dist/tab/indicator/index.d.mts +1 -1
- package/dist/tab/indicator/index.mjs +1 -41
- package/dist/{index-CbchmhrC.d.mts → tab/list/createList.svelte.d.mts} +1 -1
- package/dist/tab/list/createList.svelte.mjs +20 -0
- package/dist/tab/list/index.d.mts +1 -1
- package/dist/tab/list/index.mjs +1 -19
- package/dist/{index-D2vzMU8o.d.mts → tab/panel/createPanel.svelte.d.mts} +1 -1
- package/dist/tab/panel/createPanel.svelte.mjs +28 -0
- package/dist/tab/panel/index.d.mts +1 -1
- package/dist/tab/panel/index.mjs +1 -27
- package/dist/tab/root/context.d.mts +6 -0
- package/dist/{context-DwEoOJU2.mjs → tab/root/context.mjs} +1 -1
- package/dist/{index-j-8eH9nJ.d.mts → tab/root/createRoot.svelte.d.mts} +1 -4
- package/dist/tab/root/createRoot.svelte.mjs +57 -0
- package/dist/tab/root/index.d.mts +2 -1
- package/dist/tab/root/index.mjs +2 -56
- package/dist/{index-DAHEDQQS.d.mts → tab/title/createTitle.svelte.d.mts} +1 -1
- package/dist/tab/title/createTitle.svelte.mjs +18 -0
- package/dist/tab/title/index.d.mts +1 -1
- package/dist/tab/title/index.mjs +1 -17
- package/dist/{index-B-PBb_8h.d.mts → tab/trigger/createTrigger.svelte.d.mts} +1 -1
- package/dist/tab/trigger/createTrigger.svelte.mjs +94 -0
- package/dist/tab/trigger/index.d.mts +1 -1
- package/dist/tab/trigger/index.mjs +1 -93
- package/dist/table/index.d.mts +2 -1
- package/dist/table/index.mjs +3 -1
- package/dist/table/row/context.d.mts +6 -0
- package/dist/table/row/context.mjs +5 -0
- package/dist/table/row/createRow.svelte.d.mts +14 -0
- package/dist/table/row/createRow.svelte.mjs +14 -0
- package/dist/table/row/index.d.mts +2 -16
- package/dist/table/row/index.mjs +2 -16
- package/package.json +1 -1
- package/dist/index-BVVgDSdq.d.mts +0 -1
- package/dist/index-Boej-mdy.d.mts +0 -25
|
@@ -1,42 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { createAttachmentKey } from "svelte/attachments";
|
|
3
|
-
//#region src/tab/indicator/createIndicator.svelte.ts
|
|
4
|
-
function createIndicator() {
|
|
5
|
-
const root = getRoot();
|
|
6
|
-
const tabListSelector = $derived(`[data-tabs-list][id="${root.id}-list"]`);
|
|
7
|
-
const id = $derived(`${root.id}-indicator`);
|
|
8
|
-
const indicatorSelector = $derived(`[data-tabs-indicator][id="${id}"]`);
|
|
9
|
-
let resizeTick = $state(0);
|
|
10
|
-
return { props: {
|
|
11
|
-
"data-tabs-indicator": "",
|
|
12
|
-
get id() {
|
|
13
|
-
return id;
|
|
14
|
-
},
|
|
15
|
-
[createAttachmentKey()](element) {
|
|
16
|
-
const tabList = element.closest(tabListSelector);
|
|
17
|
-
if (!tabList) return;
|
|
18
|
-
const observer = new ResizeObserver(() => {
|
|
19
|
-
resizeTick += 1;
|
|
20
|
-
});
|
|
21
|
-
observer.observe(tabList);
|
|
22
|
-
return () => {
|
|
23
|
-
observer.disconnect();
|
|
24
|
-
};
|
|
25
|
-
},
|
|
26
|
-
get style() {
|
|
27
|
-
if (typeof document === "undefined") return;
|
|
28
|
-
const { value, direction, id } = root;
|
|
29
|
-
const tabList = document.querySelector(indicatorSelector)?.closest(tabListSelector) ?? null;
|
|
30
|
-
const selectedTab = tabList?.querySelector(`[data-tabs-trigger][id="${id}-trigger-${value}"]`);
|
|
31
|
-
if (!tabList || value === null || !selectedTab) return;
|
|
32
|
-
const rect = selectedTab.getBoundingClientRect();
|
|
33
|
-
const width = Math.floor(rect.width);
|
|
34
|
-
const height = Math.floor(rect.height);
|
|
35
|
-
const right = direction === "ltr" ? tabList.scrollWidth - selectedTab.offsetLeft - width - tabList.clientLeft : selectedTab.offsetLeft - tabList.clientLeft;
|
|
36
|
-
const bottom = tabList.scrollHeight - selectedTab.offsetTop - height - tabList.clientTop;
|
|
37
|
-
return `--active-tab-left: ${selectedTab.offsetLeft - tabList.clientLeft}px;--active-tab-top: ${selectedTab.offsetTop - tabList.clientTop}px;--active-tab-width: ${width}px;--active-tab-height: ${height}px;--active-tab-right: ${right}px;--active-tab-bottom: ${bottom}px;`;
|
|
38
|
-
}
|
|
39
|
-
} };
|
|
40
|
-
}
|
|
41
|
-
//#endregion
|
|
1
|
+
import { createIndicator } from "./createIndicator.svelte.mjs";
|
|
42
2
|
export { createIndicator };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { getRoot } from "../root/context.mjs";
|
|
2
|
+
//#region src/tab/list/createList.svelte.ts
|
|
3
|
+
function createList() {
|
|
4
|
+
const root = getRoot();
|
|
5
|
+
return { props: {
|
|
6
|
+
get id() {
|
|
7
|
+
return `${root.id}-list`;
|
|
8
|
+
},
|
|
9
|
+
get "aria-labelledby"() {
|
|
10
|
+
return root.hasTitle ? `${root.id}-title` : void 0;
|
|
11
|
+
},
|
|
12
|
+
get "data-orientation"() {
|
|
13
|
+
return root.orientation;
|
|
14
|
+
},
|
|
15
|
+
"data-tabs-list": "",
|
|
16
|
+
role: "tablist"
|
|
17
|
+
} };
|
|
18
|
+
}
|
|
19
|
+
//#endregion
|
|
20
|
+
export { createList };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ListState, createList } from "./createList.svelte.mjs";
|
|
2
2
|
export { ListState, createList };
|
package/dist/tab/list/index.mjs
CHANGED
|
@@ -1,20 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
//#region src/tab/list/createList.svelte.ts
|
|
3
|
-
function createList() {
|
|
4
|
-
const root = getRoot();
|
|
5
|
-
return { props: {
|
|
6
|
-
get id() {
|
|
7
|
-
return `${root.id}-list`;
|
|
8
|
-
},
|
|
9
|
-
get "aria-labelledby"() {
|
|
10
|
-
return root.hasTitle ? `${root.id}-title` : void 0;
|
|
11
|
-
},
|
|
12
|
-
get "data-orientation"() {
|
|
13
|
-
return root.orientation;
|
|
14
|
-
},
|
|
15
|
-
"data-tabs-list": "",
|
|
16
|
-
role: "tablist"
|
|
17
|
-
} };
|
|
18
|
-
}
|
|
19
|
-
//#endregion
|
|
1
|
+
import { createList } from "./createList.svelte.mjs";
|
|
20
2
|
export { createList };
|
|
@@ -10,4 +10,4 @@ interface PanelState {
|
|
|
10
10
|
}
|
|
11
11
|
declare function createPanel<T extends CreatePanelProps>(props: Exact<CreatePanelProps, T>): PanelState;
|
|
12
12
|
//#endregion
|
|
13
|
-
export { PanelState
|
|
13
|
+
export { CreatePanelProps, PanelState, createPanel };
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { getRoot } from "../root/context.mjs";
|
|
2
|
+
//#region src/tab/panel/createPanel.svelte.ts
|
|
3
|
+
function createPanel(props) {
|
|
4
|
+
const root = getRoot();
|
|
5
|
+
const isSelected = $derived(root.panel === props.value);
|
|
6
|
+
return { props: {
|
|
7
|
+
get "aria-labelledby"() {
|
|
8
|
+
return `${root.id}-trigger-${props.value}`;
|
|
9
|
+
},
|
|
10
|
+
get "data-orientation"() {
|
|
11
|
+
return root.orientation;
|
|
12
|
+
},
|
|
13
|
+
get "data-hidden"() {
|
|
14
|
+
return isSelected ? void 0 : "";
|
|
15
|
+
},
|
|
16
|
+
get hidden() {
|
|
17
|
+
return isSelected ? void 0 : "";
|
|
18
|
+
},
|
|
19
|
+
get id() {
|
|
20
|
+
return `${root.id}-panel-${props.value}`;
|
|
21
|
+
},
|
|
22
|
+
"data-tab-panel": "",
|
|
23
|
+
role: "tabpanel",
|
|
24
|
+
tabindex: 0
|
|
25
|
+
} };
|
|
26
|
+
}
|
|
27
|
+
//#endregion
|
|
28
|
+
export { createPanel };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CreatePanelProps, PanelState, createPanel } from "./createPanel.svelte.mjs";
|
|
2
2
|
export { CreatePanelProps, PanelState, createPanel };
|
package/dist/tab/panel/index.mjs
CHANGED
|
@@ -1,28 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
//#region src/tab/panel/createPanel.svelte.ts
|
|
3
|
-
function createPanel(props) {
|
|
4
|
-
const root = getRoot();
|
|
5
|
-
const isSelected = $derived(root.panel === props.value);
|
|
6
|
-
return { props: {
|
|
7
|
-
get "aria-labelledby"() {
|
|
8
|
-
return `${root.id}-trigger-${props.value}`;
|
|
9
|
-
},
|
|
10
|
-
get "data-orientation"() {
|
|
11
|
-
return root.orientation;
|
|
12
|
-
},
|
|
13
|
-
get "data-hidden"() {
|
|
14
|
-
return isSelected ? void 0 : "";
|
|
15
|
-
},
|
|
16
|
-
get hidden() {
|
|
17
|
-
return isSelected ? void 0 : "";
|
|
18
|
-
},
|
|
19
|
-
get id() {
|
|
20
|
-
return `${root.id}-panel-${props.value}`;
|
|
21
|
-
},
|
|
22
|
-
"data-tab-panel": "",
|
|
23
|
-
role: "tabpanel",
|
|
24
|
-
tabindex: 0
|
|
25
|
-
} };
|
|
26
|
-
}
|
|
27
|
-
//#endregion
|
|
1
|
+
import { createPanel } from "./createPanel.svelte.mjs";
|
|
28
2
|
export { createPanel };
|
|
@@ -23,7 +23,4 @@ interface RootState {
|
|
|
23
23
|
}
|
|
24
24
|
declare function createRoot<T extends CreateRootProps>(props: Exact<CreateRootProps, T>): RootState;
|
|
25
25
|
//#endregion
|
|
26
|
-
|
|
27
|
-
declare const getRoot: () => RootState, setRoot: (context: RootState) => RootState;
|
|
28
|
-
//#endregion
|
|
29
|
-
export { Orientation as a, createRoot as c, Direction as i, setRoot as n, RootState as o, CreateRootProps as r, TValue as s, getRoot as t };
|
|
26
|
+
export { CreateRootProps, Direction, Orientation, RootState, TValue, createRoot };
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { setRoot } from "./context.mjs";
|
|
2
|
+
import { uid } from "uid";
|
|
3
|
+
//#region src/tab/root/createRoot.svelte.ts
|
|
4
|
+
function createRoot(props) {
|
|
5
|
+
const activateOnFocus = $derived(props.activateOnFocus ?? true);
|
|
6
|
+
const direction = $derived(props.direction ?? "ltr");
|
|
7
|
+
const id = $derived(uid());
|
|
8
|
+
const orientation = $derived(props.orientation ?? "horizontal");
|
|
9
|
+
let hasTitle = $state(false);
|
|
10
|
+
let value = $derived(props.value ?? null);
|
|
11
|
+
let panel = $derived(props.value ?? null);
|
|
12
|
+
const root = {
|
|
13
|
+
get activateOnFocus() {
|
|
14
|
+
return activateOnFocus;
|
|
15
|
+
},
|
|
16
|
+
get direction() {
|
|
17
|
+
return direction;
|
|
18
|
+
},
|
|
19
|
+
get hasTitle() {
|
|
20
|
+
return hasTitle;
|
|
21
|
+
},
|
|
22
|
+
set hasTitle(h) {
|
|
23
|
+
hasTitle = h;
|
|
24
|
+
},
|
|
25
|
+
get id() {
|
|
26
|
+
return id;
|
|
27
|
+
},
|
|
28
|
+
get orientation() {
|
|
29
|
+
return orientation;
|
|
30
|
+
},
|
|
31
|
+
get panel() {
|
|
32
|
+
return panel;
|
|
33
|
+
},
|
|
34
|
+
set panel(p) {
|
|
35
|
+
panel = p;
|
|
36
|
+
},
|
|
37
|
+
get value() {
|
|
38
|
+
return value;
|
|
39
|
+
},
|
|
40
|
+
set value(v) {
|
|
41
|
+
value = v;
|
|
42
|
+
},
|
|
43
|
+
props: {
|
|
44
|
+
get "data-orientation"() {
|
|
45
|
+
return orientation;
|
|
46
|
+
},
|
|
47
|
+
get id() {
|
|
48
|
+
return id;
|
|
49
|
+
},
|
|
50
|
+
"data-tab-root": ""
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
setRoot(root);
|
|
54
|
+
return root;
|
|
55
|
+
}
|
|
56
|
+
//#endregion
|
|
57
|
+
export { createRoot };
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CreateRootProps, Direction, Orientation, RootState, TValue, createRoot } from "./createRoot.svelte.mjs";
|
|
2
|
+
import { getRoot, setRoot } from "./context.mjs";
|
|
2
3
|
export { CreateRootProps, Direction, Orientation, RootState, TValue, createRoot, getRoot, setRoot };
|
package/dist/tab/root/index.mjs
CHANGED
|
@@ -1,57 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
//#region src/tab/root/createRoot.svelte.ts
|
|
4
|
-
function createRoot(props) {
|
|
5
|
-
const activateOnFocus = $derived(props.activateOnFocus ?? true);
|
|
6
|
-
const direction = $derived(props.direction ?? "ltr");
|
|
7
|
-
const id = $derived(uid());
|
|
8
|
-
const orientation = $derived(props.orientation ?? "horizontal");
|
|
9
|
-
let hasTitle = $state(false);
|
|
10
|
-
let value = $derived(props.value ?? null);
|
|
11
|
-
let panel = $derived(props.value ?? null);
|
|
12
|
-
const root = {
|
|
13
|
-
get activateOnFocus() {
|
|
14
|
-
return activateOnFocus;
|
|
15
|
-
},
|
|
16
|
-
get direction() {
|
|
17
|
-
return direction;
|
|
18
|
-
},
|
|
19
|
-
get hasTitle() {
|
|
20
|
-
return hasTitle;
|
|
21
|
-
},
|
|
22
|
-
set hasTitle(h) {
|
|
23
|
-
hasTitle = h;
|
|
24
|
-
},
|
|
25
|
-
get id() {
|
|
26
|
-
return id;
|
|
27
|
-
},
|
|
28
|
-
get orientation() {
|
|
29
|
-
return orientation;
|
|
30
|
-
},
|
|
31
|
-
get panel() {
|
|
32
|
-
return panel;
|
|
33
|
-
},
|
|
34
|
-
set panel(p) {
|
|
35
|
-
panel = p;
|
|
36
|
-
},
|
|
37
|
-
get value() {
|
|
38
|
-
return value;
|
|
39
|
-
},
|
|
40
|
-
set value(v) {
|
|
41
|
-
value = v;
|
|
42
|
-
},
|
|
43
|
-
props: {
|
|
44
|
-
get "data-orientation"() {
|
|
45
|
-
return orientation;
|
|
46
|
-
},
|
|
47
|
-
get id() {
|
|
48
|
-
return id;
|
|
49
|
-
},
|
|
50
|
-
"data-tab-root": ""
|
|
51
|
-
}
|
|
52
|
-
};
|
|
53
|
-
setRoot(root);
|
|
54
|
-
return root;
|
|
55
|
-
}
|
|
56
|
-
//#endregion
|
|
1
|
+
import { getRoot, setRoot } from "./context.mjs";
|
|
2
|
+
import { createRoot } from "./createRoot.svelte.mjs";
|
|
57
3
|
export { createRoot, getRoot, setRoot };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { getRoot } from "../root/context.mjs";
|
|
2
|
+
import { onDestroy } from "svelte";
|
|
3
|
+
//#region src/tab/title/createTitle.svelte.ts
|
|
4
|
+
function createTitle() {
|
|
5
|
+
const root = getRoot();
|
|
6
|
+
root.hasTitle = true;
|
|
7
|
+
onDestroy(() => {
|
|
8
|
+
root.hasTitle = false;
|
|
9
|
+
});
|
|
10
|
+
return { props: {
|
|
11
|
+
get id() {
|
|
12
|
+
return `${root.id}-title`;
|
|
13
|
+
},
|
|
14
|
+
"data-tab-title": ""
|
|
15
|
+
} };
|
|
16
|
+
}
|
|
17
|
+
//#endregion
|
|
18
|
+
export { createTitle };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { TitleState, createTitle } from "./createTitle.svelte.mjs";
|
|
2
2
|
export { TitleState, createTitle };
|
package/dist/tab/title/index.mjs
CHANGED
|
@@ -1,18 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { onDestroy } from "svelte";
|
|
3
|
-
//#region src/tab/title/createTitle.svelte.ts
|
|
4
|
-
function createTitle() {
|
|
5
|
-
const root = getRoot();
|
|
6
|
-
root.hasTitle = true;
|
|
7
|
-
onDestroy(() => {
|
|
8
|
-
root.hasTitle = false;
|
|
9
|
-
});
|
|
10
|
-
return { props: {
|
|
11
|
-
get id() {
|
|
12
|
-
return `${root.id}-title`;
|
|
13
|
-
},
|
|
14
|
-
"data-tab-title": ""
|
|
15
|
-
} };
|
|
16
|
-
}
|
|
17
|
-
//#endregion
|
|
1
|
+
import { createTitle } from "./createTitle.svelte.mjs";
|
|
18
2
|
export { createTitle };
|
|
@@ -11,4 +11,4 @@ interface TriggerState {
|
|
|
11
11
|
}
|
|
12
12
|
declare function createTrigger<T extends CreateTriggerProps>(props: Exact<CreateTriggerProps, T>): TriggerState;
|
|
13
13
|
//#endregion
|
|
14
|
-
export { TriggerState
|
|
14
|
+
export { CreateTriggerProps, TriggerState, createTrigger };
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { getRoot } from "../root/context.mjs";
|
|
2
|
+
//#region src/tab/trigger/createTrigger.svelte.ts
|
|
3
|
+
function createTrigger(props) {
|
|
4
|
+
const root = getRoot();
|
|
5
|
+
const isSelected = $derived(root.value === props.value);
|
|
6
|
+
if (root.value === null) {
|
|
7
|
+
root.value = props.value;
|
|
8
|
+
root.panel = props.value;
|
|
9
|
+
}
|
|
10
|
+
return { props: {
|
|
11
|
+
get "aria-controls"() {
|
|
12
|
+
return `${root.id}-panel-${props.value}`;
|
|
13
|
+
},
|
|
14
|
+
get "aria-selected"() {
|
|
15
|
+
return isSelected;
|
|
16
|
+
},
|
|
17
|
+
get "data-disabled"() {
|
|
18
|
+
return props.disabled ? true : void 0;
|
|
19
|
+
},
|
|
20
|
+
get "data-orientation"() {
|
|
21
|
+
return root.orientation;
|
|
22
|
+
},
|
|
23
|
+
get "data-root-id"() {
|
|
24
|
+
return root.id;
|
|
25
|
+
},
|
|
26
|
+
get "data-selected"() {
|
|
27
|
+
return isSelected ? "" : void 0;
|
|
28
|
+
},
|
|
29
|
+
get "data-value"() {
|
|
30
|
+
return props.value;
|
|
31
|
+
},
|
|
32
|
+
get id() {
|
|
33
|
+
return `${root.id}-trigger-${props.value}`;
|
|
34
|
+
},
|
|
35
|
+
get tabindex() {
|
|
36
|
+
return isSelected ? void 0 : -1;
|
|
37
|
+
},
|
|
38
|
+
"data-tabs-trigger": "",
|
|
39
|
+
type: "button",
|
|
40
|
+
role: "tab",
|
|
41
|
+
onclick(event) {
|
|
42
|
+
root.value = props.value;
|
|
43
|
+
root.panel = props.value;
|
|
44
|
+
event.currentTarget.focus();
|
|
45
|
+
},
|
|
46
|
+
onkeydown(event) {
|
|
47
|
+
if (event.ctrlKey || event.metaKey || event.altKey || event.shiftKey) return;
|
|
48
|
+
let preventDefault = false;
|
|
49
|
+
let pendingValue = null;
|
|
50
|
+
const button = event.currentTarget;
|
|
51
|
+
const triggers = [...document.querySelectorAll(`[data-tabs-trigger][data-root-id="${root.id}"]:not([data-disabled])`)];
|
|
52
|
+
const currentIndex = triggers.indexOf(button);
|
|
53
|
+
const nextKeyName = root.orientation === "horizontal" ? "ArrowRight" : "ArrowDown";
|
|
54
|
+
const previousKeyName = root.orientation === "horizontal" ? "ArrowLeft" : "ArrowUp";
|
|
55
|
+
switch (event.key) {
|
|
56
|
+
case previousKeyName: {
|
|
57
|
+
const nextIndex = currentIndex === 0 ? triggers.length - 1 : currentIndex - 1;
|
|
58
|
+
pendingValue = triggers[nextIndex]?.dataset.value ?? null;
|
|
59
|
+
triggers[nextIndex]?.focus();
|
|
60
|
+
preventDefault = true;
|
|
61
|
+
break;
|
|
62
|
+
}
|
|
63
|
+
case nextKeyName: {
|
|
64
|
+
const nextIndex = (currentIndex + 1) % triggers.length;
|
|
65
|
+
pendingValue = triggers[nextIndex]?.dataset.value ?? null;
|
|
66
|
+
triggers[nextIndex]?.focus();
|
|
67
|
+
preventDefault = true;
|
|
68
|
+
break;
|
|
69
|
+
}
|
|
70
|
+
case "Home":
|
|
71
|
+
pendingValue = triggers[0]?.dataset.value ?? null;
|
|
72
|
+
triggers[0]?.focus();
|
|
73
|
+
preventDefault = true;
|
|
74
|
+
break;
|
|
75
|
+
case "End":
|
|
76
|
+
pendingValue = triggers.at(-1)?.dataset.value ?? null;
|
|
77
|
+
triggers.at(-1)?.focus();
|
|
78
|
+
preventDefault = true;
|
|
79
|
+
break;
|
|
80
|
+
default: break;
|
|
81
|
+
}
|
|
82
|
+
if (pendingValue !== null) {
|
|
83
|
+
root.value = pendingValue;
|
|
84
|
+
if (root.activateOnFocus) root.panel = pendingValue;
|
|
85
|
+
}
|
|
86
|
+
if (preventDefault) {
|
|
87
|
+
event.stopPropagation();
|
|
88
|
+
event.preventDefault();
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
} };
|
|
92
|
+
}
|
|
93
|
+
//#endregion
|
|
94
|
+
export { createTrigger };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CreateTriggerProps, TriggerState, createTrigger } from "./createTrigger.svelte.mjs";
|
|
2
2
|
export { CreateTriggerProps, TriggerState, createTrigger };
|
|
@@ -1,94 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
//#region src/tab/trigger/createTrigger.svelte.ts
|
|
3
|
-
function createTrigger(props) {
|
|
4
|
-
const root = getRoot();
|
|
5
|
-
const isSelected = $derived(root.value === props.value);
|
|
6
|
-
if (root.value === null) {
|
|
7
|
-
root.value = props.value;
|
|
8
|
-
root.panel = props.value;
|
|
9
|
-
}
|
|
10
|
-
return { props: {
|
|
11
|
-
get "aria-controls"() {
|
|
12
|
-
return `${root.id}-panel-${props.value}`;
|
|
13
|
-
},
|
|
14
|
-
get "aria-selected"() {
|
|
15
|
-
return isSelected;
|
|
16
|
-
},
|
|
17
|
-
get "data-disabled"() {
|
|
18
|
-
return props.disabled ? true : void 0;
|
|
19
|
-
},
|
|
20
|
-
get "data-orientation"() {
|
|
21
|
-
return root.orientation;
|
|
22
|
-
},
|
|
23
|
-
get "data-root-id"() {
|
|
24
|
-
return root.id;
|
|
25
|
-
},
|
|
26
|
-
get "data-selected"() {
|
|
27
|
-
return isSelected ? "" : void 0;
|
|
28
|
-
},
|
|
29
|
-
get "data-value"() {
|
|
30
|
-
return props.value;
|
|
31
|
-
},
|
|
32
|
-
get id() {
|
|
33
|
-
return `${root.id}-trigger-${props.value}`;
|
|
34
|
-
},
|
|
35
|
-
get tabindex() {
|
|
36
|
-
return isSelected ? void 0 : -1;
|
|
37
|
-
},
|
|
38
|
-
"data-tabs-trigger": "",
|
|
39
|
-
type: "button",
|
|
40
|
-
role: "tab",
|
|
41
|
-
onclick(event) {
|
|
42
|
-
root.value = props.value;
|
|
43
|
-
root.panel = props.value;
|
|
44
|
-
event.currentTarget.focus();
|
|
45
|
-
},
|
|
46
|
-
onkeydown(event) {
|
|
47
|
-
if (event.ctrlKey || event.metaKey || event.altKey || event.shiftKey) return;
|
|
48
|
-
let preventDefault = false;
|
|
49
|
-
let pendingValue = null;
|
|
50
|
-
const button = event.currentTarget;
|
|
51
|
-
const triggers = [...document.querySelectorAll(`[data-tabs-trigger][data-root-id="${root.id}"]:not([data-disabled])`)];
|
|
52
|
-
const currentIndex = triggers.indexOf(button);
|
|
53
|
-
const nextKeyName = root.orientation === "horizontal" ? "ArrowRight" : "ArrowDown";
|
|
54
|
-
const previousKeyName = root.orientation === "horizontal" ? "ArrowLeft" : "ArrowUp";
|
|
55
|
-
switch (event.key) {
|
|
56
|
-
case previousKeyName: {
|
|
57
|
-
const nextIndex = currentIndex === 0 ? triggers.length - 1 : currentIndex - 1;
|
|
58
|
-
pendingValue = triggers[nextIndex]?.dataset.value ?? null;
|
|
59
|
-
triggers[nextIndex]?.focus();
|
|
60
|
-
preventDefault = true;
|
|
61
|
-
break;
|
|
62
|
-
}
|
|
63
|
-
case nextKeyName: {
|
|
64
|
-
const nextIndex = (currentIndex + 1) % triggers.length;
|
|
65
|
-
pendingValue = triggers[nextIndex]?.dataset.value ?? null;
|
|
66
|
-
triggers[nextIndex]?.focus();
|
|
67
|
-
preventDefault = true;
|
|
68
|
-
break;
|
|
69
|
-
}
|
|
70
|
-
case "Home":
|
|
71
|
-
pendingValue = triggers[0]?.dataset.value ?? null;
|
|
72
|
-
triggers[0]?.focus();
|
|
73
|
-
preventDefault = true;
|
|
74
|
-
break;
|
|
75
|
-
case "End":
|
|
76
|
-
pendingValue = triggers.at(-1)?.dataset.value ?? null;
|
|
77
|
-
triggers.at(-1)?.focus();
|
|
78
|
-
preventDefault = true;
|
|
79
|
-
break;
|
|
80
|
-
default: break;
|
|
81
|
-
}
|
|
82
|
-
if (pendingValue !== null) {
|
|
83
|
-
root.value = pendingValue;
|
|
84
|
-
if (root.activateOnFocus) root.panel = pendingValue;
|
|
85
|
-
}
|
|
86
|
-
if (preventDefault) {
|
|
87
|
-
event.stopPropagation();
|
|
88
|
-
event.preventDefault();
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
} };
|
|
92
|
-
}
|
|
93
|
-
//#endregion
|
|
1
|
+
import { createTrigger } from "./createTrigger.svelte.mjs";
|
|
94
2
|
export { createTrigger };
|
package/dist/table/index.d.mts
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
import { CreateRowProps, RowState, createRow
|
|
1
|
+
import { CreateRowProps, RowState, createRow } from "./row/createRow.svelte.mjs";
|
|
2
|
+
import { getRow, setRow } from "./row/context.mjs";
|
|
2
3
|
export { CreateRowProps, RowState, createRow, getRow, setRow };
|
package/dist/table/index.mjs
CHANGED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Exact } from "@svelte-thing/type-utils";
|
|
2
|
+
import { HTMLAttributes } from "svelte/elements";
|
|
3
|
+
|
|
4
|
+
//#region src/table/row/createRow.svelte.d.ts
|
|
5
|
+
interface CreateRowProps {
|
|
6
|
+
href: string | undefined;
|
|
7
|
+
}
|
|
8
|
+
interface RowState {
|
|
9
|
+
href: string | undefined;
|
|
10
|
+
props: HTMLAttributes<HTMLElement>;
|
|
11
|
+
}
|
|
12
|
+
declare function createRow<T extends CreateRowProps>(props: Exact<CreateRowProps, T>): RowState;
|
|
13
|
+
//#endregion
|
|
14
|
+
export { CreateRowProps, RowState, createRow };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { setRow } from "./context.mjs";
|
|
2
|
+
//#region src/table/row/createRow.svelte.ts
|
|
3
|
+
function createRow(props) {
|
|
4
|
+
const row = {
|
|
5
|
+
get href() {
|
|
6
|
+
return props.href;
|
|
7
|
+
},
|
|
8
|
+
props: {}
|
|
9
|
+
};
|
|
10
|
+
setRow(row);
|
|
11
|
+
return row;
|
|
12
|
+
}
|
|
13
|
+
//#endregion
|
|
14
|
+
export { createRow };
|
|
@@ -1,17 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
//#region src/table/row/createRow.svelte.d.ts
|
|
5
|
-
interface CreateRowProps {
|
|
6
|
-
href: string | undefined;
|
|
7
|
-
}
|
|
8
|
-
interface RowState {
|
|
9
|
-
href: string | undefined;
|
|
10
|
-
props: HTMLAttributes<HTMLElement>;
|
|
11
|
-
}
|
|
12
|
-
declare function createRow<T extends CreateRowProps>(props: Exact<CreateRowProps, T>): RowState;
|
|
13
|
-
//#endregion
|
|
14
|
-
//#region src/table/row/context.d.ts
|
|
15
|
-
declare const getRow: () => RowState, setRow: (context: RowState) => RowState;
|
|
16
|
-
//#endregion
|
|
1
|
+
import { CreateRowProps, RowState, createRow } from "./createRow.svelte.mjs";
|
|
2
|
+
import { getRow, setRow } from "./context.mjs";
|
|
17
3
|
export { CreateRowProps, RowState, createRow, getRow, setRow };
|