foldkit 0.89.0 → 0.90.1
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 +19 -10
- package/dist/command/index.d.ts.map +1 -1
- package/dist/command/index.js +3 -11
- package/dist/devTools/overlay.d.ts +3 -3
- package/dist/devTools/overlay.d.ts.map +1 -1
- package/dist/devTools/overlay.js +209 -171
- package/dist/devTools/protocol.d.ts +77 -19
- package/dist/devTools/protocol.d.ts.map +1 -1
- package/dist/devTools/protocol.js +10 -5
- package/dist/devTools/serialize.d.ts +8 -2
- package/dist/devTools/serialize.d.ts.map +1 -1
- package/dist/devTools/serialize.js +11 -2
- package/dist/devTools/store.d.ts +9 -5
- package/dist/devTools/store.d.ts.map +1 -1
- package/dist/devTools/store.js +13 -13
- package/dist/devTools/webSocketBridge.d.ts.map +1 -1
- package/dist/devTools/webSocketBridge.js +2 -2
- package/dist/html/index.d.ts +12 -0
- package/dist/html/index.d.ts.map +1 -1
- package/dist/html/index.js +20 -4
- package/dist/mount/index.d.ts +64 -21
- package/dist/mount/index.d.ts.map +1 -1
- package/dist/mount/index.js +43 -32
- package/dist/mount/public.d.ts +1 -1
- package/dist/mount/public.d.ts.map +1 -1
- package/dist/runtime/crashUI.js +30 -30
- package/dist/runtime/runtime.d.ts.map +1 -1
- package/dist/runtime/runtime.js +4 -4
- package/dist/test/apps/bubbling.js +4 -4
- package/dist/test/apps/disabledButton.js +10 -10
- package/dist/test/apps/fileUpload.d.ts.map +1 -1
- package/dist/test/apps/fileUpload.js +13 -13
- package/dist/test/apps/interactions.d.ts.map +1 -1
- package/dist/test/apps/interactions.js +15 -15
- package/dist/test/apps/keypress.js +8 -8
- package/dist/test/apps/login.d.ts.map +1 -1
- package/dist/test/apps/login.js +32 -24
- package/dist/test/apps/logoutButton.d.ts.map +1 -1
- package/dist/test/apps/logoutButton.js +2 -2
- package/dist/test/apps/mountPanel.d.ts +19 -3
- package/dist/test/apps/mountPanel.d.ts.map +1 -1
- package/dist/test/apps/mountPanel.js +41 -20
- package/dist/test/apps/multiRole.js +3 -3
- package/dist/test/apps/pointer.d.ts.map +1 -1
- package/dist/test/apps/pointer.js +11 -11
- package/dist/test/apps/resumeUpload.d.ts.map +1 -1
- package/dist/test/apps/resumeUpload.js +8 -8
- package/dist/test/internal.d.ts +50 -20
- package/dist/test/internal.d.ts.map +1 -1
- package/dist/test/internal.js +65 -74
- package/dist/test/scene.d.ts +7 -7
- package/dist/test/scene.d.ts.map +1 -1
- package/dist/test/scene.js +42 -37
- package/dist/test/story.d.ts.map +1 -1
- package/dist/test/story.js +2 -2
- package/dist/ui/anchor.d.ts +12 -8
- package/dist/ui/anchor.d.ts.map +1 -1
- package/dist/ui/anchor.js +41 -16
- package/dist/ui/animation/index.js +24 -24
- package/dist/ui/button/index.d.ts.map +1 -1
- package/dist/ui/button/index.js +6 -6
- package/dist/ui/calendar/index.d.ts.map +1 -1
- package/dist/ui/calendar/index.js +101 -99
- package/dist/ui/checkbox/index.d.ts.map +1 -1
- package/dist/ui/checkbox/index.js +15 -15
- package/dist/ui/combobox/multi.d.ts +1 -7
- package/dist/ui/combobox/multi.d.ts.map +1 -1
- package/dist/ui/combobox/shared.d.ts +14 -5
- package/dist/ui/combobox/shared.d.ts.map +1 -1
- package/dist/ui/combobox/shared.js +137 -125
- package/dist/ui/combobox/single.d.ts +1 -7
- package/dist/ui/combobox/single.d.ts.map +1 -1
- package/dist/ui/datePicker/index.js +4 -4
- package/dist/ui/dialog/index.d.ts.map +1 -1
- package/dist/ui/dialog/index.js +27 -27
- package/dist/ui/disclosure/index.d.ts.map +1 -1
- package/dist/ui/disclosure/index.js +24 -22
- package/dist/ui/dragAndDrop/index.d.ts.map +1 -1
- package/dist/ui/dragAndDrop/index.js +15 -15
- package/dist/ui/fieldset/index.js +6 -6
- package/dist/ui/fileDrop/index.d.ts +2 -2
- package/dist/ui/fileDrop/index.d.ts.map +1 -1
- package/dist/ui/fileDrop/index.js +16 -16
- package/dist/ui/input/index.d.ts.map +1 -1
- package/dist/ui/input/index.js +15 -13
- package/dist/ui/listbox/multi.d.ts +1 -7
- package/dist/ui/listbox/multi.d.ts.map +1 -1
- package/dist/ui/listbox/shared.d.ts +12 -3
- package/dist/ui/listbox/shared.d.ts.map +1 -1
- package/dist/ui/listbox/shared.js +91 -89
- package/dist/ui/listbox/single.d.ts +1 -7
- package/dist/ui/listbox/single.d.ts.map +1 -1
- package/dist/ui/menu/index.d.ts +12 -3
- package/dist/ui/menu/index.d.ts.map +1 -1
- package/dist/ui/menu/index.js +75 -77
- package/dist/ui/popover/index.d.ts +13 -3
- package/dist/ui/popover/index.d.ts.map +1 -1
- package/dist/ui/popover/index.js +62 -53
- package/dist/ui/radioGroup/index.d.ts.map +1 -1
- package/dist/ui/radioGroup/index.js +20 -20
- package/dist/ui/select/index.d.ts.map +1 -1
- package/dist/ui/select/index.js +13 -11
- package/dist/ui/slider/index.d.ts.map +1 -1
- package/dist/ui/slider/index.js +26 -26
- package/dist/ui/switch/index.d.ts.map +1 -1
- package/dist/ui/switch/index.js +14 -14
- package/dist/ui/tabs/index.d.ts.map +1 -1
- package/dist/ui/tabs/index.js +40 -36
- package/dist/ui/textarea/index.d.ts.map +1 -1
- package/dist/ui/textarea/index.js +15 -13
- package/dist/ui/toast/index.d.ts.map +1 -1
- package/dist/ui/toast/index.js +27 -27
- package/dist/ui/tooltip/index.d.ts +11 -2
- package/dist/ui/tooltip/index.d.ts.map +1 -1
- package/dist/ui/tooltip/index.js +33 -33
- package/dist/ui/virtualList/index.d.ts.map +1 -1
- package/dist/ui/virtualList/index.js +18 -15
- package/package.json +1 -1
package/dist/ui/tooltip/index.js
CHANGED
|
@@ -5,7 +5,7 @@ import { createLazy, html, } from '../../html/index.js';
|
|
|
5
5
|
import { m } from '../../message/index.js';
|
|
6
6
|
import * as Mount from '../../mount/index.js';
|
|
7
7
|
import { evo } from '../../struct/index.js';
|
|
8
|
-
import { anchorSetup } from '../anchor.js';
|
|
8
|
+
import { AnchorConfig, anchorSetup } from '../anchor.js';
|
|
9
9
|
// MODEL
|
|
10
10
|
/** Schema for the tooltip component's state. `isOpen` is visibility; `isHovered` tracks pointer on trigger; `isFocused` tracks tooltip-affirming focus on the trigger (focus arriving without a preceding mouse press — keyboard, touch, or pen; mouse-click-induced focus is excluded since it doesn't affirm the user wants the tooltip visible); `isDismissed` suppresses re-opening after the user dismissed the tooltip (via Escape or left-click) until they disengage (leave or blur). `showDelay` is the hover-to-show duration. `maybeLastPointerType` records the most recent pointer type that pressed the trigger, so a mouse-click-induced focus can be distinguished from other focus. */
|
|
11
11
|
export const Model = S.Struct({
|
|
@@ -78,7 +78,14 @@ export const ShowAfterDelay = Command.define('ShowAfterDelay', { delay: S.Durati
|
|
|
78
78
|
/** The anchor-positioning Mount this Tooltip renders on its panel. Exposed so
|
|
79
79
|
* Scene tests can call `Scene.Mount.resolve(AnchorTooltip, CompletedAnchorTooltip())`
|
|
80
80
|
* to acknowledge the mount produced by the rendered panel. */
|
|
81
|
-
export const AnchorTooltip = Mount.define('AnchorTooltip', CompletedAnchorTooltip)
|
|
81
|
+
export const AnchorTooltip = Mount.define('AnchorTooltip', { buttonId: S.String, anchor: AnchorConfig }, CompletedAnchorTooltip)(({ buttonId, anchor }) => (element) => Effect.sync(() => {
|
|
82
|
+
const cleanup = anchorSetup({
|
|
83
|
+
buttonId,
|
|
84
|
+
anchor,
|
|
85
|
+
interceptTab: false,
|
|
86
|
+
})(element);
|
|
87
|
+
return { message: CompletedAnchorTooltip(), cleanup };
|
|
88
|
+
}));
|
|
82
89
|
/** Processes a tooltip message and returns the next model and commands. */
|
|
83
90
|
export const update = (model, message) => M.value(message).pipe(withUpdateReturn, M.tagsExhaustive({
|
|
84
91
|
EnteredTrigger: () => {
|
|
@@ -189,63 +196,56 @@ export const update = (model, message) => M.value(message).pipe(withUpdateReturn
|
|
|
189
196
|
export const setShowDelay = (model, showDelay) => update(model, ChangedShowDelay({ showDelay: Duration.fromInputUnsafe(showDelay) }));
|
|
190
197
|
/** Renders a headless tooltip with an anchored non-interactive panel. Shows on hover (after delay) or focus (from keyboard, touch, or pen; mouse-click focus is excluded); hides on leave, blur, Escape, or left-click of the trigger. Uses `role="tooltip"` and links the trigger via `aria-describedby`. */
|
|
191
198
|
export const view = (config) => {
|
|
192
|
-
const
|
|
199
|
+
const h = html();
|
|
193
200
|
const { model: { id, isOpen }, toParentMessage, anchor, triggerContent, triggerClassName, triggerAttributes = [], content, panelClassName, panelAttributes = [], isDisabled, className, attributes = [], } = config;
|
|
194
201
|
const handleTriggerKeyDown = (key) => M.value(key).pipe(M.when('Escape', () => OptionExt.when(isOpen, toParentMessage(PressedEscape()))), M.orElse(() => Option.none()));
|
|
195
202
|
const handleTriggerPointerDown = (pointerType, button) => Option.some(toParentMessage(PressedPointerOnTrigger({ pointerType, button })));
|
|
196
203
|
const resolvedTriggerAttributes = [
|
|
197
|
-
Id(`${id}-trigger`),
|
|
198
|
-
Type('button'),
|
|
199
|
-
AriaDescribedBy(`${id}-panel`),
|
|
200
|
-
...(isOpen ? [DataAttribute('open', '')] : []),
|
|
204
|
+
h.Id(`${id}-trigger`),
|
|
205
|
+
h.Type('button'),
|
|
206
|
+
h.AriaDescribedBy(`${id}-panel`),
|
|
207
|
+
...(isOpen ? [h.DataAttribute('open', '')] : []),
|
|
201
208
|
...(isDisabled
|
|
202
|
-
? [AriaDisabled(true), DataAttribute('disabled', '')]
|
|
209
|
+
? [h.AriaDisabled(true), h.DataAttribute('disabled', '')]
|
|
203
210
|
: [
|
|
204
|
-
OnMouseEnter(toParentMessage(EnteredTrigger())),
|
|
205
|
-
OnMouseLeave(toParentMessage(LeftTrigger())),
|
|
206
|
-
OnFocus(toParentMessage(FocusedTrigger())),
|
|
207
|
-
OnBlur(toParentMessage(BlurredTrigger())),
|
|
208
|
-
OnKeyDownPreventDefault(handleTriggerKeyDown),
|
|
209
|
-
OnPointerDown(handleTriggerPointerDown),
|
|
211
|
+
h.OnMouseEnter(toParentMessage(EnteredTrigger())),
|
|
212
|
+
h.OnMouseLeave(toParentMessage(LeftTrigger())),
|
|
213
|
+
h.OnFocus(toParentMessage(FocusedTrigger())),
|
|
214
|
+
h.OnBlur(toParentMessage(BlurredTrigger())),
|
|
215
|
+
h.OnKeyDownPreventDefault(handleTriggerKeyDown),
|
|
216
|
+
h.OnPointerDown(handleTriggerPointerDown),
|
|
210
217
|
]),
|
|
211
|
-
...(triggerClassName ? [Class(triggerClassName)] : []),
|
|
218
|
+
...(triggerClassName ? [h.Class(triggerClassName)] : []),
|
|
212
219
|
...triggerAttributes,
|
|
213
220
|
];
|
|
214
|
-
const anchorTooltip = Mount.mapMessage(AnchorTooltip(
|
|
215
|
-
const cleanup = anchorSetup({
|
|
216
|
-
buttonId: `${id}-trigger`,
|
|
217
|
-
anchor,
|
|
218
|
-
interceptTab: false,
|
|
219
|
-
})(items);
|
|
220
|
-
return { message: CompletedAnchorTooltip(), cleanup };
|
|
221
|
-
})), toParentMessage);
|
|
221
|
+
const anchorTooltip = Mount.mapMessage(AnchorTooltip({ buttonId: `${id}-trigger`, anchor }), toParentMessage);
|
|
222
222
|
const anchorAttributes = [
|
|
223
|
-
Style({
|
|
223
|
+
h.Style({
|
|
224
224
|
position: 'absolute',
|
|
225
225
|
margin: '0',
|
|
226
226
|
visibility: 'hidden',
|
|
227
227
|
pointerEvents: 'none',
|
|
228
228
|
}),
|
|
229
|
-
OnMount(anchorTooltip),
|
|
229
|
+
h.OnMount(anchorTooltip),
|
|
230
230
|
];
|
|
231
231
|
const resolvedPanelAttributes = [
|
|
232
|
-
Id(`${id}-panel`),
|
|
233
|
-
Role('tooltip'),
|
|
232
|
+
h.Id(`${id}-panel`),
|
|
233
|
+
h.Role('tooltip'),
|
|
234
234
|
...anchorAttributes,
|
|
235
|
-
...(isOpen ? [DataAttribute('open', '')] : []),
|
|
236
|
-
...(panelClassName ? [Class(panelClassName)] : []),
|
|
235
|
+
...(isOpen ? [h.DataAttribute('open', '')] : []),
|
|
236
|
+
...(panelClassName ? [h.Class(panelClassName)] : []),
|
|
237
237
|
...panelAttributes,
|
|
238
238
|
];
|
|
239
239
|
const wrapperAttributes = [
|
|
240
|
-
...(className ? [Class(className)] : []),
|
|
240
|
+
...(className ? [h.Class(className)] : []),
|
|
241
241
|
...attributes,
|
|
242
242
|
];
|
|
243
|
-
return div(wrapperAttributes, [
|
|
244
|
-
keyed('button')(`${id}-trigger`, resolvedTriggerAttributes, [
|
|
243
|
+
return h.div(wrapperAttributes, [
|
|
244
|
+
h.keyed('button')(`${id}-trigger`, resolvedTriggerAttributes, [
|
|
245
245
|
triggerContent,
|
|
246
246
|
]),
|
|
247
247
|
...(isOpen
|
|
248
|
-
? [keyed('div')(`${id}-panel`, resolvedPanelAttributes, [content])]
|
|
248
|
+
? [h.keyed('div')(`${id}-panel`, resolvedPanelAttributes, [content])]
|
|
249
249
|
: []),
|
|
250
250
|
]);
|
|
251
251
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/virtualList/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,MAAM,EAGN,MAAM,EAEN,MAAM,IAAI,CAAC,EAGZ,MAAM,QAAQ,CAAA;AAEf,OAAO,KAAK,OAAO,MAAM,wBAAwB,CAAA;AACjD,OAAO,EACL,KAAK,SAAS,EACd,KAAK,IAAI,EACT,KAAK,OAAO,EAGb,MAAM,qBAAqB,CAAA;AA6B5B;0DAC0D;AAC1D,eAAO,MAAM,KAAK;;;;;;;;;;;;EAOhB,CAAA;AAEF,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,IAAI,CAAA;AAIrC;kCACkC;AAClC,eAAO,MAAM,iBAAiB;;EAE5B,CAAA;AACF;uCACuC;AACvC,eAAO,MAAM,iBAAiB;;EAE5B,CAAA;AACF;8DAC8D;AAC9D,eAAO,MAAM,oBAAoB;;EAE/B,CAAA;AAEF,oEAAoE;AACpE,eAAO,MAAM,OAAO,EAAE,CAAC,CAAC,KAAK,CAC3B;IACE,OAAO,iBAAiB;IACxB,OAAO,iBAAiB;IACxB,OAAO,oBAAoB;CAC5B,CACsE,CAAA;AAEzE,MAAM,MAAM,iBAAiB,GAAG,OAAO,iBAAiB,CAAC,IAAI,CAAA;AAC7D,MAAM,MAAM,iBAAiB,GAAG,OAAO,iBAAiB,CAAC,IAAI,CAAA;AAE7D,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAIzC,mEAAmE;AACnE,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,WAAW,EAAE,MAAM,CAAA;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B,CAAC,CAAA;AAEF;;kBAEkB;AAClB,eAAO,MAAM,IAAI,GAAI,QAAQ,UAAU,KAAG,KAOxC,CAAA;AAIF,eAAO,MAAM,WAAW;;;;;;;iBAYvB,CAAA;AAED,gFAAgF;AAChF,eAAO,MAAM,MAAM,GACjB,OAAO,KAAK,EACZ,SAAS,OAAO,KACf,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAmDxD,CAAA;AAuBH;;;;;;;;;;;;;;;+BAe+B;AAC/B,eAAO,MAAM,aAAa,GACxB,OAAO,KAAK,EACZ,OAAO,MAAM,KACZ,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CACE,CAAA;AAE7D;;;;;;;;;;;;mCAYmC;AACnC,eAAO,MAAM,qBAAqB,GAAI,IAAI,EACxC,OAAO,KAAK,EACZ,OAAO,aAAa,CAAC,IAAI,CAAC,EAC1B,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,EACxD,OAAO,MAAM,KACZ,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAQ1D,CAAA;AAID;;oDAEoD;AACpD,MAAM,MAAM,aAAa,GAAG,QAAQ,CAAC;IACnC,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,eAAe,EAAE,MAAM,CAAA;IACvB,kBAAkB,EAAE,MAAM,CAAA;CAC3B,CAAC,CAAA;AAoBF;;;;;;;;yCAQyC;AACzC,eAAO,MAAM,aAAa,GACxB,OAAO,KAAK,EACZ,WAAW,MAAM,EACjB,UAAU,MAAM,KACf,MAAM,CAAC,MAAM,CAAC,aAAa,CA2B3B,CAAA;AAEH;;;;;;;;;;4EAU4E;AAC5E,eAAO,MAAM,qBAAqB,GAAI,IAAI,EACxC,OAAO,KAAK,EACZ,OAAO,aAAa,CAAC,IAAI,CAAC,EAC1B,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,EACxD,UAAU,MAAM,KACf,MAAM,CAAC,MAAM,CAAC,aAAa,CAkD3B,CAAA;AAOH;uBACuB;AACvB,eAAO,MAAM,gBAAgB;;;;EAI3B,CAAA;AAEF;;;;;;;;;;;;mEAYmE;AACnE,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAmHxB,CAAA;AAMF;;;;;;4CAM4C;AAC5C,MAAM,MAAM,UAAU,CAAC,aAAa,EAAE,IAAI,IAAI,QAAQ,CAAC;IACrD,KAAK,EAAE,KAAK,CAAA;IACZ,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,CAAA;IAC1B,SAAS,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAA;IAChD,UAAU,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAC/C;;;;;;0EAMsE;IACtE,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAA;IACzD;;;2CAGuC;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAA;CACrD,CAAC,CAAA;AAEF;;;;;;;;;;;;;;;;uCAgBuC;AACvC,eAAO,MAAM,IAAI,GAAI,aAAa,EAAE,IAAI,EACtC,QAAQ,UAAU,CAAC,aAAa,EAAE,IAAI,CAAC,KACtC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/virtualList/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -357,22 +357,22 @@ const DEFAULT_OVERSCAN = 5;
|
|
|
357
357
|
* size and each row's position within it, rather than the much smaller
|
|
358
358
|
* count of currently mounted rows. */
|
|
359
359
|
export const view = (config) => {
|
|
360
|
-
const
|
|
360
|
+
const h = html();
|
|
361
361
|
const { model, items, itemToKey, itemToView, itemToRowHeightPx, overscan = DEFAULT_OVERSCAN, rowElement = 'li', className, attributes = [], } = config;
|
|
362
362
|
const containerAttributes = [
|
|
363
|
-
Id(model.id),
|
|
364
|
-
Role('list'),
|
|
365
|
-
DataAttribute('virtual-list-id', model.id),
|
|
366
|
-
Style({
|
|
363
|
+
h.Id(model.id),
|
|
364
|
+
h.Role('list'),
|
|
365
|
+
h.DataAttribute('virtual-list-id', model.id),
|
|
366
|
+
h.Style({
|
|
367
367
|
overflow: 'auto',
|
|
368
368
|
'list-style': 'none',
|
|
369
369
|
margin: '0',
|
|
370
370
|
padding: '0',
|
|
371
371
|
}),
|
|
372
|
-
...(className !== undefined ? [Class(className)] : []),
|
|
372
|
+
...(className !== undefined ? [h.Class(className)] : []),
|
|
373
373
|
...attributes,
|
|
374
374
|
];
|
|
375
|
-
const renderContainer = (children) => keyed('ul')(model.id, containerAttributes, children);
|
|
375
|
+
const renderContainer = (children) => h.keyed('ul')(model.id, containerAttributes, children);
|
|
376
376
|
const maybeWindow = itemToRowHeightPx !== undefined
|
|
377
377
|
? visibleWindowVariable(model, items, itemToRowHeightPx, overscan)
|
|
378
378
|
: visibleWindow(model, items.length, overscan);
|
|
@@ -383,16 +383,19 @@ export const view = (config) => {
|
|
|
383
383
|
onNone: () => renderContainer([]),
|
|
384
384
|
onSome: ({ startIndex, endIndex, topSpacerHeight, bottomSpacerHeight }) => {
|
|
385
385
|
const visibleItems = items.slice(startIndex, endIndex);
|
|
386
|
-
const topSpacer = keyed('li')(`${model.id}-top-spacer`, [Role('presentation'), Style({ height: `${topSpacerHeight}px` })], []);
|
|
387
|
-
const bottomSpacer = keyed('li')(`${model.id}-bottom-spacer`, [
|
|
386
|
+
const topSpacer = h.keyed('li')(`${model.id}-top-spacer`, [h.Role('presentation'), h.Style({ height: `${topSpacerHeight}px` })], []);
|
|
387
|
+
const bottomSpacer = h.keyed('li')(`${model.id}-bottom-spacer`, [
|
|
388
|
+
h.Role('presentation'),
|
|
389
|
+
h.Style({ height: `${bottomSpacerHeight}px` }),
|
|
390
|
+
], []);
|
|
388
391
|
const renderedRows = Array.map(visibleItems, (item, sliceIndex) => {
|
|
389
392
|
const dataIndex = startIndex + sliceIndex;
|
|
390
|
-
return keyed(rowElement)(itemToKey(item, dataIndex), [
|
|
391
|
-
Role('listitem'),
|
|
392
|
-
DataAttribute('virtual-list-item-index', String(dataIndex)),
|
|
393
|
-
AriaSetsize(items.length),
|
|
394
|
-
AriaPosinset(dataIndex + 1),
|
|
395
|
-
Style({
|
|
393
|
+
return h.keyed(rowElement)(itemToKey(item, dataIndex), [
|
|
394
|
+
h.Role('listitem'),
|
|
395
|
+
h.DataAttribute('virtual-list-item-index', String(dataIndex)),
|
|
396
|
+
h.AriaSetsize(items.length),
|
|
397
|
+
h.AriaPosinset(dataIndex + 1),
|
|
398
|
+
h.Style({
|
|
396
399
|
height: `${rowHeightFor(item, dataIndex)}px`,
|
|
397
400
|
display: 'grid',
|
|
398
401
|
}),
|