foldkit 0.38.0 → 0.39.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/dist/command/index.d.ts +13 -9
- package/dist/command/index.d.ts.map +1 -1
- package/dist/command/index.js +16 -4
- package/dist/command/public.d.ts +2 -2
- package/dist/command/public.d.ts.map +1 -1
- package/dist/command/public.js +1 -1
- package/dist/devtools/overlay.d.ts.map +1 -1
- package/dist/devtools/overlay.js +24 -16
- package/dist/runtime/managedResource.d.ts +1 -1
- package/dist/runtime/managedResource.js +1 -1
- package/dist/runtime/runtime.d.ts.map +1 -1
- package/dist/runtime/runtime.js +2 -2
- package/dist/runtime/subscription.d.ts +3 -3
- package/dist/runtime/subscription.d.ts.map +1 -1
- package/dist/runtime/subscription.js +2 -2
- package/dist/task/dom.d.ts +6 -6
- package/dist/task/dom.js +6 -6
- package/dist/task/inert.d.ts +2 -2
- package/dist/task/inert.js +2 -2
- package/dist/task/scrollLock.d.ts +2 -2
- package/dist/task/scrollLock.js +2 -2
- package/dist/task/time.d.ts +1 -1
- package/dist/task/time.js +1 -1
- package/dist/ui/combobox/multi.d.ts +7 -7
- package/dist/ui/combobox/public.d.ts +1 -1
- package/dist/ui/combobox/shared.d.ts +25 -26
- package/dist/ui/combobox/shared.d.ts.map +1 -1
- package/dist/ui/combobox/shared.js +34 -24
- package/dist/ui/combobox/single.d.ts +7 -7
- package/dist/ui/dialog/index.d.ts +7 -7
- package/dist/ui/dialog/index.d.ts.map +1 -1
- package/dist/ui/dialog/index.js +15 -11
- package/dist/ui/dialog/public.d.ts +1 -1
- package/dist/ui/dialog/public.js +1 -1
- package/dist/ui/disclosure/index.d.ts +4 -4
- package/dist/ui/disclosure/index.d.ts.map +1 -1
- package/dist/ui/disclosure/index.js +6 -5
- package/dist/ui/disclosure/public.d.ts +1 -1
- package/dist/ui/listbox/multi.d.ts +7 -7
- package/dist/ui/listbox/public.d.ts +1 -1
- package/dist/ui/listbox/shared.d.ts +21 -21
- package/dist/ui/listbox/shared.d.ts.map +1 -1
- package/dist/ui/listbox/shared.js +41 -29
- package/dist/ui/listbox/single.d.ts +7 -7
- package/dist/ui/menu/index.d.ts +16 -16
- package/dist/ui/menu/index.d.ts.map +1 -1
- package/dist/ui/menu/index.js +46 -34
- package/dist/ui/popover/index.d.ts +12 -12
- package/dist/ui/popover/index.d.ts.map +1 -1
- package/dist/ui/popover/index.js +34 -25
- package/dist/ui/radioGroup/index.d.ts +4 -4
- package/dist/ui/radioGroup/index.d.ts.map +1 -1
- package/dist/ui/radioGroup/index.js +5 -4
- package/dist/ui/tabs/index.d.ts +2 -2
- package/dist/ui/tabs/index.d.ts.map +1 -1
- package/dist/ui/tabs/index.js +6 -5
- package/package.json +11 -11
- package/LICENSE +0 -21
|
@@ -24,17 +24,17 @@ export declare const PressedPointerOnButton: import("../../schema").CallableTagg
|
|
|
24
24
|
button: typeof S.Number;
|
|
25
25
|
}>;
|
|
26
26
|
/** Sent when the focus-panel command completes after opening the popover. */
|
|
27
|
-
export declare const
|
|
27
|
+
export declare const CompletedFocusPanel: import("../../schema").CallableTaggedStruct<"CompletedFocusPanel", {}>;
|
|
28
28
|
/** Sent when the focus-button command completes after closing. */
|
|
29
|
-
export declare const
|
|
29
|
+
export declare const CompletedFocusButton: import("../../schema").CallableTaggedStruct<"CompletedFocusButton", {}>;
|
|
30
30
|
/** Sent when the scroll lock command completes. */
|
|
31
|
-
export declare const
|
|
31
|
+
export declare const CompletedLockScroll: import("../../schema").CallableTaggedStruct<"CompletedLockScroll", {}>;
|
|
32
32
|
/** Sent when the scroll unlock command completes. */
|
|
33
|
-
export declare const
|
|
33
|
+
export declare const CompletedUnlockScroll: import("../../schema").CallableTaggedStruct<"CompletedUnlockScroll", {}>;
|
|
34
34
|
/** Sent when the inert-others command completes. */
|
|
35
|
-
export declare const
|
|
35
|
+
export declare const CompletedSetupInert: import("../../schema").CallableTaggedStruct<"CompletedSetupInert", {}>;
|
|
36
36
|
/** Sent when the restore-inert command completes. */
|
|
37
|
-
export declare const
|
|
37
|
+
export declare const CompletedTeardownInert: import("../../schema").CallableTaggedStruct<"CompletedTeardownInert", {}>;
|
|
38
38
|
/** Sent when a mouse click on the button is ignored because pointer-down already handled the toggle. */
|
|
39
39
|
export declare const IgnoredMouseClick: import("../../schema").CallableTaggedStruct<"IgnoredMouseClick", {}>;
|
|
40
40
|
/** Sent when a Space key-up is captured to prevent page scrolling. */
|
|
@@ -51,12 +51,12 @@ export declare const Message: S.Union<[
|
|
|
51
51
|
typeof Closed,
|
|
52
52
|
typeof ClosedByTab,
|
|
53
53
|
typeof PressedPointerOnButton,
|
|
54
|
-
typeof
|
|
55
|
-
typeof
|
|
56
|
-
typeof
|
|
57
|
-
typeof
|
|
58
|
-
typeof
|
|
59
|
-
typeof
|
|
54
|
+
typeof CompletedFocusPanel,
|
|
55
|
+
typeof CompletedFocusButton,
|
|
56
|
+
typeof CompletedLockScroll,
|
|
57
|
+
typeof CompletedUnlockScroll,
|
|
58
|
+
typeof CompletedSetupInert,
|
|
59
|
+
typeof CompletedTeardownInert,
|
|
60
60
|
typeof IgnoredMouseClick,
|
|
61
61
|
typeof SuppressedSpaceScroll,
|
|
62
62
|
typeof AdvancedTransitionFrame,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/popover/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/popover/index.ts"],"names":[],"mappings":"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"}
|
package/dist/ui/popover/index.js
CHANGED
|
@@ -30,17 +30,17 @@ export const PressedPointerOnButton = m('PressedPointerOnButton', {
|
|
|
30
30
|
button: S.Number,
|
|
31
31
|
});
|
|
32
32
|
/** Sent when the focus-panel command completes after opening the popover. */
|
|
33
|
-
export const
|
|
33
|
+
export const CompletedFocusPanel = m('CompletedFocusPanel');
|
|
34
34
|
/** Sent when the focus-button command completes after closing. */
|
|
35
|
-
export const
|
|
35
|
+
export const CompletedFocusButton = m('CompletedFocusButton');
|
|
36
36
|
/** Sent when the scroll lock command completes. */
|
|
37
|
-
export const
|
|
37
|
+
export const CompletedLockScroll = m('CompletedLockScroll');
|
|
38
38
|
/** Sent when the scroll unlock command completes. */
|
|
39
|
-
export const
|
|
39
|
+
export const CompletedUnlockScroll = m('CompletedUnlockScroll');
|
|
40
40
|
/** Sent when the inert-others command completes. */
|
|
41
|
-
export const
|
|
41
|
+
export const CompletedSetupInert = m('CompletedSetupInert');
|
|
42
42
|
/** Sent when the restore-inert command completes. */
|
|
43
|
-
export const
|
|
43
|
+
export const CompletedTeardownInert = m('CompletedTeardownInert');
|
|
44
44
|
/** Sent when a mouse click on the button is ignored because pointer-down already handled the toggle. */
|
|
45
45
|
export const IgnoredMouseClick = m('IgnoredMouseClick');
|
|
46
46
|
/** Sent when a Space key-up is captured to prevent page scrolling. */
|
|
@@ -52,7 +52,7 @@ export const EndedTransition = m('EndedTransition');
|
|
|
52
52
|
/** Sent internally when the popover button moves in the viewport during a leave transition, cancelling the animation. */
|
|
53
53
|
export const DetectedButtonMovement = m('DetectedButtonMovement');
|
|
54
54
|
/** Union of all messages the popover component can produce. */
|
|
55
|
-
export const Message = S.Union(Opened, Closed, ClosedByTab, PressedPointerOnButton,
|
|
55
|
+
export const Message = S.Union(Opened, Closed, ClosedByTab, PressedPointerOnButton, CompletedFocusPanel, CompletedFocusButton, CompletedLockScroll, CompletedUnlockScroll, CompletedSetupInert, CompletedTeardownInert, IgnoredMouseClick, SuppressedSpaceScroll, AdvancedTransitionFrame, EndedTransition, DetectedButtonMovement);
|
|
56
56
|
// INIT
|
|
57
57
|
const LEFT_MOUSE_BUTTON = 0;
|
|
58
58
|
/** Creates an initial popover model from a config. Defaults to closed. */
|
|
@@ -73,16 +73,25 @@ const closedModel = (model) => evo(model, {
|
|
|
73
73
|
const buttonSelector = (id) => `#${id}-button`;
|
|
74
74
|
const panelSelector = (id) => `#${id}-panel`;
|
|
75
75
|
const withUpdateReturn = M.withReturnType();
|
|
76
|
+
const RequestFrame = Command.define('RequestFrame');
|
|
77
|
+
const LockScroll = Command.define('LockScroll');
|
|
78
|
+
const UnlockScroll = Command.define('UnlockScroll');
|
|
79
|
+
const InertOthers = Command.define('InertOthers');
|
|
80
|
+
const RestoreInert = Command.define('RestoreInert');
|
|
81
|
+
const FocusPanel = Command.define('FocusPanel');
|
|
82
|
+
const FocusButton = Command.define('FocusButton');
|
|
83
|
+
const WaitForTransitions = Command.define('WaitForTransitions');
|
|
84
|
+
const DetectMovementOrTransitionEnd = Command.define('DetectMovementOrTransitionEnd');
|
|
76
85
|
/** Processes a popover message and returns the next model and commands. */
|
|
77
86
|
export const update = (model, message) => {
|
|
78
|
-
const maybeNextFrame = OptionExt.when(model.isAnimated, Task.nextFrame.pipe(Effect.as(AdvancedTransitionFrame())
|
|
79
|
-
const maybeLockScroll = OptionExt.when(model.isModal, Task.lockScroll.pipe(Effect.as(
|
|
80
|
-
const maybeUnlockScroll = OptionExt.when(model.isModal, Task.unlockScroll.pipe(Effect.as(
|
|
81
|
-
const maybeInertOthers = OptionExt.when(model.isModal, Task.inertOthers(model.id, [
|
|
87
|
+
const maybeNextFrame = OptionExt.when(model.isAnimated, RequestFrame(Task.nextFrame.pipe(Effect.as(AdvancedTransitionFrame()))));
|
|
88
|
+
const maybeLockScroll = OptionExt.when(model.isModal, LockScroll(Task.lockScroll.pipe(Effect.as(CompletedLockScroll()))));
|
|
89
|
+
const maybeUnlockScroll = OptionExt.when(model.isModal, UnlockScroll(Task.unlockScroll.pipe(Effect.as(CompletedUnlockScroll()))));
|
|
90
|
+
const maybeInertOthers = OptionExt.when(model.isModal, InertOthers(Task.inertOthers(model.id, [
|
|
82
91
|
buttonSelector(model.id),
|
|
83
92
|
panelSelector(model.id),
|
|
84
|
-
]).pipe(Effect.as(
|
|
85
|
-
const maybeRestoreInert = OptionExt.when(model.isModal, Task.restoreInert(model.id).pipe(Effect.as(
|
|
93
|
+
]).pipe(Effect.as(CompletedSetupInert()))));
|
|
94
|
+
const maybeRestoreInert = OptionExt.when(model.isModal, RestoreInert(Task.restoreInert(model.id).pipe(Effect.as(CompletedTeardownInert()))));
|
|
86
95
|
return M.value(message).pipe(withUpdateReturn, M.tagsExhaustive({
|
|
87
96
|
Opened: () => {
|
|
88
97
|
const nextModel = evo(model, {
|
|
@@ -91,7 +100,7 @@ export const update = (model, message) => {
|
|
|
91
100
|
});
|
|
92
101
|
return [
|
|
93
102
|
nextModel,
|
|
94
|
-
pipe(Array.getSomes([maybeNextFrame, maybeLockScroll, maybeInertOthers]), Array.prepend(Task.focus(panelSelector(model.id)).pipe(Effect.ignore, Effect.as(
|
|
103
|
+
pipe(Array.getSomes([maybeNextFrame, maybeLockScroll, maybeInertOthers]), Array.prepend(FocusPanel(Task.focus(panelSelector(model.id)).pipe(Effect.ignore, Effect.as(CompletedFocusPanel()))))),
|
|
95
104
|
];
|
|
96
105
|
},
|
|
97
106
|
Closed: () => [
|
|
@@ -100,7 +109,7 @@ export const update = (model, message) => {
|
|
|
100
109
|
maybeNextFrame,
|
|
101
110
|
maybeUnlockScroll,
|
|
102
111
|
maybeRestoreInert,
|
|
103
|
-
]), Array.prepend(Task.focus(buttonSelector(model.id)).pipe(Effect.ignore, Effect.as(
|
|
112
|
+
]), Array.prepend(FocusButton(Task.focus(buttonSelector(model.id)).pipe(Effect.ignore, Effect.as(CompletedFocusButton()))))),
|
|
104
113
|
],
|
|
105
114
|
ClosedByTab: () => [
|
|
106
115
|
closedModel(model),
|
|
@@ -120,7 +129,7 @@ export const update = (model, message) => {
|
|
|
120
129
|
maybeNextFrame,
|
|
121
130
|
maybeUnlockScroll,
|
|
122
131
|
maybeRestoreInert,
|
|
123
|
-
]), Array.prepend(Task.focus(buttonSelector(model.id)).pipe(Effect.ignore, Effect.as(
|
|
132
|
+
]), Array.prepend(FocusButton(Task.focus(buttonSelector(model.id)).pipe(Effect.ignore, Effect.as(CompletedFocusButton()))))),
|
|
124
133
|
];
|
|
125
134
|
}
|
|
126
135
|
const nextModel = evo(withPointerType, {
|
|
@@ -129,18 +138,18 @@ export const update = (model, message) => {
|
|
|
129
138
|
});
|
|
130
139
|
return [
|
|
131
140
|
nextModel,
|
|
132
|
-
pipe(Array.getSomes([maybeNextFrame, maybeLockScroll, maybeInertOthers]), Array.prepend(Task.focus(panelSelector(model.id)).pipe(Effect.ignore, Effect.as(
|
|
141
|
+
pipe(Array.getSomes([maybeNextFrame, maybeLockScroll, maybeInertOthers]), Array.prepend(FocusPanel(Task.focus(panelSelector(model.id)).pipe(Effect.ignore, Effect.as(CompletedFocusPanel()))))),
|
|
133
142
|
];
|
|
134
143
|
},
|
|
135
144
|
AdvancedTransitionFrame: () => M.value(model.transitionState).pipe(withUpdateReturn, M.when('EnterStart', () => [
|
|
136
145
|
evo(model, { transitionState: () => 'EnterAnimating' }),
|
|
137
146
|
[
|
|
138
|
-
Task.waitForTransitions(panelSelector(model.id)).pipe(Effect.as(EndedTransition())
|
|
147
|
+
WaitForTransitions(Task.waitForTransitions(panelSelector(model.id)).pipe(Effect.as(EndedTransition()))),
|
|
139
148
|
],
|
|
140
149
|
]), M.when('LeaveStart', () => [
|
|
141
150
|
evo(model, { transitionState: () => 'LeaveAnimating' }),
|
|
142
151
|
[
|
|
143
|
-
Effect.raceFirst(Task.detectElementMovement(buttonSelector(model.id)).pipe(Effect.as(DetectedButtonMovement())), Task.waitForTransitions(panelSelector(model.id)).pipe(Effect.as(EndedTransition())))
|
|
152
|
+
DetectMovementOrTransitionEnd(Effect.raceFirst(Task.detectElementMovement(buttonSelector(model.id)).pipe(Effect.as(DetectedButtonMovement())), Task.waitForTransitions(panelSelector(model.id)).pipe(Effect.as(EndedTransition())))),
|
|
144
153
|
],
|
|
145
154
|
]), M.orElse(() => [model, []])),
|
|
146
155
|
EndedTransition: () => M.value(model.transitionState).pipe(withUpdateReturn, M.whenOr('EnterAnimating', 'LeaveAnimating', () => [
|
|
@@ -151,12 +160,12 @@ export const update = (model, message) => {
|
|
|
151
160
|
evo(model, { transitionState: () => 'Idle' }),
|
|
152
161
|
[],
|
|
153
162
|
]), M.orElse(() => [model, []])),
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
163
|
+
CompletedFocusPanel: () => [model, []],
|
|
164
|
+
CompletedFocusButton: () => [model, []],
|
|
165
|
+
CompletedLockScroll: () => [model, []],
|
|
166
|
+
CompletedUnlockScroll: () => [model, []],
|
|
167
|
+
CompletedSetupInert: () => [model, []],
|
|
168
|
+
CompletedTeardownInert: () => [model, []],
|
|
160
169
|
IgnoredMouseClick: () => [model, []],
|
|
161
170
|
SuppressedSpaceScroll: () => [model, []],
|
|
162
171
|
}));
|
|
@@ -17,14 +17,14 @@ export declare const SelectedOption: import("../../schema").CallableTaggedStruct
|
|
|
17
17
|
index: typeof S.Number;
|
|
18
18
|
}>;
|
|
19
19
|
/** Sent when the focus-option command completes. */
|
|
20
|
-
export declare const
|
|
20
|
+
export declare const CompletedFocusOption: import("../../schema").CallableTaggedStruct<"CompletedFocusOption", {}>;
|
|
21
21
|
/** Union of all messages the radio group component can produce. */
|
|
22
22
|
export declare const Message: S.Union<[
|
|
23
23
|
typeof SelectedOption,
|
|
24
|
-
typeof
|
|
24
|
+
typeof CompletedFocusOption
|
|
25
25
|
]>;
|
|
26
26
|
export type SelectedOption = typeof SelectedOption.Type;
|
|
27
|
-
export type
|
|
27
|
+
export type CompletedFocusOption = typeof CompletedFocusOption.Type;
|
|
28
28
|
export type Message = typeof Message.Type;
|
|
29
29
|
/** Configuration for creating a radio group model with `init`. */
|
|
30
30
|
export type InitConfig = Readonly<{
|
|
@@ -58,7 +58,7 @@ export type NarrowedSelectedOption<RadioOption extends string> = Readonly<{
|
|
|
58
58
|
/** Configuration for rendering a radio group with `view`. */
|
|
59
59
|
export type ViewConfig<Message, RadioOption extends string> = Readonly<{
|
|
60
60
|
model: Model;
|
|
61
|
-
toMessage: (message: NarrowedSelectedOption<RadioOption> |
|
|
61
|
+
toMessage: (message: NarrowedSelectedOption<RadioOption> | CompletedFocusOption) => Message;
|
|
62
62
|
options: ReadonlyArray<RadioOption>;
|
|
63
63
|
optionToConfig: (option: RadioOption, context: Readonly<{
|
|
64
64
|
isSelected: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/radioGroup/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,MAAM,IAAI,CAAC,EAGZ,MAAM,QAAQ,CAAA;AAEf,OAAO,KAAK,OAAO,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,IAAI,EAAoB,MAAM,YAAY,CAAA;AAQxE,+FAA+F;AAC/F,eAAO,MAAM,WAAW,uCAAsC,CAAA;AAC9D,MAAM,MAAM,WAAW,GAAG,OAAO,WAAW,CAAC,IAAI,CAAA;AAEjD,iGAAiG;AACjG,eAAO,MAAM,KAAK;;;;EAIhB,CAAA;AAEF,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,IAAI,CAAA;AAIrC,6EAA6E;AAC7E,eAAO,MAAM,cAAc;;;EAGzB,CAAA;AACF,oDAAoD;AACpD,eAAO,MAAM,oBAAoB,yEAA4B,CAAA;AAE7D,mEAAmE;AACnE,eAAO,MAAM,OAAO,EAAE,CAAC,CAAC,KAAK,CAC3B;IAAC,OAAO,cAAc;IAAE,OAAO,oBAAoB;CAAC,CACL,CAAA;AAEjD,MAAM,MAAM,cAAc,GAAG,OAAO,cAAc,CAAC,IAAI,CAAA;AACvD,MAAM,MAAM,oBAAoB,GAAG,OAAO,oBAAoB,CAAC,IAAI,CAAA;AAEnE,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAIzC,kEAAkE;AAClE,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,WAAW,CAAC,EAAE,WAAW,CAAA;CAC1B,CAAC,CAAA;AAEF,6GAA6G;AAC7G,eAAO,MAAM,IAAI,GAAI,QAAQ,UAAU,KAAG,KAIxC,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/radioGroup/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,9 +21,9 @@ export const SelectedOption = m('SelectedOption', {
|
|
|
21
21
|
index: S.Number,
|
|
22
22
|
});
|
|
23
23
|
/** Sent when the focus-option command completes. */
|
|
24
|
-
export const
|
|
24
|
+
export const CompletedFocusOption = m('CompletedFocusOption');
|
|
25
25
|
/** Union of all messages the radio group component can produce. */
|
|
26
|
-
export const Message = S.Union(SelectedOption,
|
|
26
|
+
export const Message = S.Union(SelectedOption, CompletedFocusOption);
|
|
27
27
|
/** Creates an initial radio group model from a config. Defaults to no selection and vertical orientation. */
|
|
28
28
|
export const init = (config) => ({
|
|
29
29
|
id: config.id,
|
|
@@ -32,6 +32,7 @@ export const init = (config) => ({
|
|
|
32
32
|
});
|
|
33
33
|
// UPDATE
|
|
34
34
|
const optionId = (id, index) => `${id}-option-${index}`;
|
|
35
|
+
const FocusOption = Command.define('FocusOption');
|
|
35
36
|
/** Processes a radio group message and returns the next model and commands. */
|
|
36
37
|
export const update = (model, message) => M.value(message).pipe(M.withReturnType(), M.tagsExhaustive({
|
|
37
38
|
SelectedOption: ({ value, index }) => {
|
|
@@ -39,11 +40,11 @@ export const update = (model, message) => M.value(message).pipe(M.withReturnType
|
|
|
39
40
|
return [
|
|
40
41
|
evo(model, { selectedValue: () => Option.some(value) }),
|
|
41
42
|
[
|
|
42
|
-
Task.focus(selector).pipe(Effect.ignore, Effect.as(
|
|
43
|
+
FocusOption(Task.focus(selector).pipe(Effect.ignore, Effect.as(CompletedFocusOption()))),
|
|
43
44
|
],
|
|
44
45
|
];
|
|
45
46
|
},
|
|
46
|
-
|
|
47
|
+
CompletedFocusOption: () => [model, []],
|
|
47
48
|
}));
|
|
48
49
|
const labelId = (id, index) => `${id}-option-${index}-label`;
|
|
49
50
|
const descriptionId = (id, index) => `${id}-option-${index}-description`;
|
package/dist/ui/tabs/index.d.ts
CHANGED
|
@@ -25,12 +25,12 @@ export declare const TabFocused: import("../../schema").CallableTaggedStruct<"Ta
|
|
|
25
25
|
index: typeof S.Number;
|
|
26
26
|
}>;
|
|
27
27
|
/** Sent when the focus-tab command completes. */
|
|
28
|
-
export declare const
|
|
28
|
+
export declare const CompletedFocusTab: import("../../schema").CallableTaggedStruct<"CompletedFocusTab", {}>;
|
|
29
29
|
/** Union of all messages the tabs component can produce. */
|
|
30
30
|
export declare const Message: S.Union<[
|
|
31
31
|
typeof TabSelected,
|
|
32
32
|
typeof TabFocused,
|
|
33
|
-
typeof
|
|
33
|
+
typeof CompletedFocusTab
|
|
34
34
|
]>;
|
|
35
35
|
export type TabSelected = typeof TabSelected.Type;
|
|
36
36
|
export type TabFocused = typeof TabFocused.Type;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/tabs/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,MAAM,IAAI,CAAC,EAGZ,MAAM,QAAQ,CAAA;AAEf,OAAO,KAAK,OAAO,MAAM,eAAe,CAAA;AACxC,OAAO,EACL,KAAK,SAAS,EACd,KAAK,IAAI,EACT,KAAK,OAAO,EAGb,MAAM,YAAY,CAAA;AAMnB,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAI1E,yFAAyF;AACzF,eAAO,MAAM,WAAW,uCAAsC,CAAA;AAC9D,MAAM,MAAM,WAAW,GAAG,OAAO,WAAW,CAAC,IAAI,CAAA;AAEjD,yGAAyG;AACzG,eAAO,MAAM,cAAc,oCAAmC,CAAA;AAC9D,MAAM,MAAM,cAAc,GAAG,OAAO,cAAc,CAAC,IAAI,CAAA;AAEvD,kGAAkG;AAClG,eAAO,MAAM,KAAK;;;;;EAKhB,CAAA;AAEF,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,IAAI,CAAA;AAIrC,sGAAsG;AACtG,eAAO,MAAM,WAAW;;EAAwC,CAAA;AAChE,wFAAwF;AACxF,eAAO,MAAM,UAAU;;EAAuC,CAAA;AAC9D,iDAAiD;AACjD,eAAO,MAAM,iBAAiB,sEAAyB,CAAA;AAEvD,4DAA4D;AAC5D,eAAO,MAAM,OAAO,EAAE,CAAC,CAAC,KAAK,CAC3B;IAAC,OAAO,WAAW;IAAE,OAAO,UAAU;IAAE,OAAO,iBAAiB;CAAC,CACZ,CAAA;AAEvD,MAAM,MAAM,WAAW,GAAG,OAAO,WAAW,CAAC,IAAI,CAAA;AACjD,MAAM,MAAM,UAAU,GAAG,OAAO,UAAU,CAAC,IAAI,CAAA;AAE/C,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAIzC,2DAA2D;AAC3D,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,cAAc,CAAC,EAAE,cAAc,CAAA;CAChC,CAAC,CAAA;AAEF,mGAAmG;AACnG,eAAO,MAAM,IAAI,GAAI,QAAQ,UAAU,KAAG,KASzC,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/tabs/index.ts"],"names":[],"mappings":"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"}
|
package/dist/ui/tabs/index.js
CHANGED
|
@@ -24,9 +24,9 @@ export const TabSelected = m('TabSelected', { index: S.Number });
|
|
|
24
24
|
/** Sent when a tab receives keyboard focus in `Manual` mode without being activated. */
|
|
25
25
|
export const TabFocused = m('TabFocused', { index: S.Number });
|
|
26
26
|
/** Sent when the focus-tab command completes. */
|
|
27
|
-
export const
|
|
27
|
+
export const CompletedFocusTab = m('CompletedFocusTab');
|
|
28
28
|
/** Union of all messages the tabs component can produce. */
|
|
29
|
-
export const Message = S.Union(TabSelected, TabFocused,
|
|
29
|
+
export const Message = S.Union(TabSelected, TabFocused, CompletedFocusTab);
|
|
30
30
|
/** Creates an initial tabs model from a config. Defaults to first tab and automatic activation. */
|
|
31
31
|
export const init = (config) => {
|
|
32
32
|
const activeIndex = config.activeIndex ?? 0;
|
|
@@ -38,6 +38,7 @@ export const init = (config) => {
|
|
|
38
38
|
};
|
|
39
39
|
};
|
|
40
40
|
// UPDATE
|
|
41
|
+
const FocusTab = Command.define('FocusTab');
|
|
41
42
|
/** Processes a tabs message and returns the next model and commands. */
|
|
42
43
|
export const update = (model, message) => M.value(message).pipe(M.withReturnType(), M.tagsExhaustive({
|
|
43
44
|
TabSelected: ({ index }) => {
|
|
@@ -48,7 +49,7 @@ export const update = (model, message) => M.value(message).pipe(M.withReturnType
|
|
|
48
49
|
focusedIndex: () => index,
|
|
49
50
|
}),
|
|
50
51
|
[
|
|
51
|
-
Task.focus(tabSelector).pipe(Effect.ignore, Effect.as(
|
|
52
|
+
FocusTab(Task.focus(tabSelector).pipe(Effect.ignore, Effect.as(CompletedFocusTab()))),
|
|
52
53
|
],
|
|
53
54
|
];
|
|
54
55
|
},
|
|
@@ -57,11 +58,11 @@ export const update = (model, message) => M.value(message).pipe(M.withReturnType
|
|
|
57
58
|
return [
|
|
58
59
|
evo(model, { focusedIndex: () => index }),
|
|
59
60
|
[
|
|
60
|
-
Task.focus(tabSelector).pipe(Effect.ignore, Effect.as(
|
|
61
|
+
FocusTab(Task.focus(tabSelector).pipe(Effect.ignore, Effect.as(CompletedFocusTab()))),
|
|
61
62
|
],
|
|
62
63
|
];
|
|
63
64
|
},
|
|
64
|
-
|
|
65
|
+
CompletedFocusTab: () => [model, []],
|
|
65
66
|
}));
|
|
66
67
|
const tabPanelId = (id, index) => `${id}-panel-${index}`;
|
|
67
68
|
const tabId = (id, index) => `${id}-tab-${index}`;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "foldkit",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.39.0",
|
|
4
4
|
"description": "A frontend framework for TypeScript, built on Effect, using The Elm Architecture",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -131,6 +131,15 @@
|
|
|
131
131
|
"files": [
|
|
132
132
|
"dist"
|
|
133
133
|
],
|
|
134
|
+
"scripts": {
|
|
135
|
+
"clean": "rimraf dist *.tsbuildinfo",
|
|
136
|
+
"build": "pnpm run clean && node scripts/inline-css.js && tsc -b",
|
|
137
|
+
"watch": "node scripts/inline-css.js && tsc -b --watch",
|
|
138
|
+
"lint": "eslint src --ignore-pattern '**/*.test.ts'",
|
|
139
|
+
"typecheck": "node scripts/inline-css.js && tsc -b --noEmit",
|
|
140
|
+
"test": "vitest run",
|
|
141
|
+
"docs": "typedoc"
|
|
142
|
+
},
|
|
134
143
|
"peerDependencies": {
|
|
135
144
|
"@effect/platform-browser": "^0.74.0",
|
|
136
145
|
"effect": "^3.18.2"
|
|
@@ -167,14 +176,5 @@
|
|
|
167
176
|
},
|
|
168
177
|
"engines": {
|
|
169
178
|
"node": ">=18.0.0"
|
|
170
|
-
},
|
|
171
|
-
"scripts": {
|
|
172
|
-
"clean": "rimraf dist *.tsbuildinfo",
|
|
173
|
-
"build": "pnpm run clean && node scripts/inline-css.js && tsc -b",
|
|
174
|
-
"watch": "node scripts/inline-css.js && tsc -b --watch",
|
|
175
|
-
"lint": "eslint src --ignore-pattern '**/*.test.ts'",
|
|
176
|
-
"typecheck": "node scripts/inline-css.js && tsc -b --noEmit",
|
|
177
|
-
"test": "vitest run",
|
|
178
|
-
"docs": "typedoc"
|
|
179
179
|
}
|
|
180
|
-
}
|
|
180
|
+
}
|
package/LICENSE
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2025 Devin Jameson
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|