@dosgato/dialog 0.0.49 → 0.0.50

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.
@@ -11,7 +11,7 @@ declare const __propDef: {
11
11
  rows?: number | undefined;
12
12
  conditional?: boolean | undefined;
13
13
  required?: boolean | undefined;
14
- use?: HTMLActionEntry<any>[] | undefined;
14
+ use?: HTMLActionEntry[] | undefined;
15
15
  inputelement?: HTMLTextAreaElement | undefined;
16
16
  related?: number | true | undefined;
17
17
  extradescid?: string | undefined;
@@ -13,7 +13,7 @@ declare const __propDef: {
13
13
  maxlength?: number | undefined;
14
14
  conditional?: boolean | undefined;
15
15
  required?: boolean | undefined;
16
- use?: HTMLActionEntry<any>[] | undefined;
16
+ use?: HTMLActionEntry[] | undefined;
17
17
  inputelement?: HTMLInputElement | undefined;
18
18
  related?: number | true | undefined;
19
19
  extradescid?: string | undefined;
@@ -12,7 +12,7 @@ declare const __propDef: {
12
12
  rows?: number | undefined;
13
13
  conditional?: boolean | undefined;
14
14
  required?: boolean | undefined;
15
- use?: HTMLActionEntry<any>[] | undefined;
15
+ use?: HTMLActionEntry[] | undefined;
16
16
  inputelement?: HTMLTextAreaElement | undefined;
17
17
  related?: number | true | undefined;
18
18
  extradescid?: string | undefined;
@@ -25,7 +25,7 @@ declare const __propDef: {
25
25
  onChange: any;
26
26
  onBlur: any;
27
27
  onSelect?: any;
28
- use?: HTMLActionEntry<any>[] | undefined;
28
+ use?: HTMLActionEntry[] | undefined;
29
29
  inputelement?: HTMLInputElement | undefined;
30
30
  };
31
31
  events: {
@@ -56,6 +56,7 @@ interface Item {
56
56
  export interface Folder extends Item {
57
57
  type: 'folder';
58
58
  hasChildren: boolean;
59
+ childCount: number;
59
60
  acceptsUpload: boolean;
60
61
  url: string;
61
62
  }
@@ -18,7 +18,7 @@ export interface IAssetStore {
18
18
  activetype: ChooserType;
19
19
  activesource: number;
20
20
  initialized: boolean;
21
- preview?: AnyUIItem;
21
+ preview?: AnyItem | AnyUIItem;
22
22
  }
23
23
  export interface ChooserStoreOptions<F> {
24
24
  pages?: boolean;
@@ -44,11 +44,11 @@ export declare class ChooserStore<F = any> extends Store<IAssetStore> {
44
44
  setOptions(options: ChooserStoreOptions<F>): void;
45
45
  sources: import("@txstate-mws/svelte-store").DerivedStore<UISource[], IAssetStore>;
46
46
  source: import("@txstate-mws/svelte-store").DerivedStore<UISource | undefined, IAssetStore>;
47
- preview: import("@txstate-mws/svelte-store").DerivedStore<AnyUIItem | undefined, IAssetStore>;
47
+ preview: import("@txstate-mws/svelte-store").DerivedStore<AnyItem | AnyUIItem | undefined, IAssetStore>;
48
48
  getSource(state?: IAssetStore): UISource | undefined;
49
49
  getSourceIndex(name: string, state?: IAssetStore, type?: ChooserType): number;
50
50
  init(options: ChooserStoreOptions<F>): Promise<void>;
51
- setPreview(item?: AnyUIItem): void;
51
+ setPreview(item?: AnyItem | AnyUIItem): void;
52
52
  clearPreview(): void;
53
53
  setSource(name?: string, init?: boolean): void;
54
54
  }
@@ -1,6 +1,6 @@
1
1
  import { Store, derivedStore } from '@txstate-mws/svelte-store';
2
2
  import { tick } from 'svelte';
3
- import { findIndex, isBlank } from 'txstate-utils';
3
+ import { findIndex } from 'txstate-utils';
4
4
  export const CHOOSER_STORE_CONTEXT = {};
5
5
  const nofilter = (x) => true;
6
6
  export function combinePath(path, name) {
@@ -42,7 +42,7 @@ export let item;
42
42
  </div>
43
43
  <div>
44
44
  <dt>Contents:</dt>
45
- <dd>{item.children?.length ?? 0} sub-items</dd>
45
+ <dd>{item.childCount} sub-items</dd>
46
46
  </div>
47
47
  </div>
48
48
  {/if}
@@ -1,8 +1,9 @@
1
1
  import { SvelteComponentTyped } from "svelte";
2
- import { type AnyUIItem, type RawURL } from './ChooserStore';
2
+ import type { AnyItem } from './ChooserAPI';
3
+ import { type RawURL } from './ChooserStore';
3
4
  declare const __propDef: {
4
5
  props: {
5
- item: AnyUIItem | RawURL;
6
+ item: AnyItem | RawURL;
6
7
  };
7
8
  events: {
8
9
  [evt: string]: CustomEvent<any>;
@@ -155,7 +155,7 @@ afterUpdate(() => {
155
155
  .tree-header {
156
156
  display: flex;
157
157
  align-items: center;
158
- background-color: var(--tree-head-bg, #555555);
158
+ background-color: var(--tree-head-bg, #757575);
159
159
  color: var(--tree-head-text, white);
160
160
  position: sticky;
161
161
  top: 0;
@@ -6,7 +6,7 @@ import { modifierKey, ScreenReaderOnly } from '@txstate-mws/svelte-components';
6
6
  import { createEventDispatcher, getContext, onMount } from 'svelte';
7
7
  import { isNotBlank, toArray } from 'txstate-utils';
8
8
  import { Icon } from '..';
9
- import { TREE_STORE_CONTEXT, getHashId } from './treestore';
9
+ import { TREE_STORE_CONTEXT, getHashId, lazyObserver } from './treestore';
10
10
  import LoadIcon from './LoadIcon.svelte';
11
11
  import TreeCell from './TreeCell.svelte';
12
12
  export let headers;
@@ -243,9 +243,13 @@ function onDragLeaveAbove(e) {
243
243
  else
244
244
  dragOverAbove--;
245
245
  }
246
- onMount(() => {
246
+ let display = $focused && $focused.id === item.id;
247
+ onMount(async () => {
247
248
  if ($focused && $focused.id === item.id)
248
249
  nodeelement.scrollIntoView({ block: 'center' });
250
+ nodeelement.addEventListener('lazy', () => { display = true; });
251
+ lazyObserver.observe(nodeelement);
252
+ return () => lazyObserver.unobserve(nodeelement);
249
253
  });
250
254
  $: if ($dragging) {
251
255
  dragOver = 0;
@@ -291,6 +295,7 @@ $: if ($dragging) {
291
295
  on:mousedown={e => { if (e.shiftKey) e.preventDefault() }}
292
296
  on:dblclick={onDblClick}
293
297
  >
298
+ {#if display}
294
299
  <!-- keyboard users have modifier keys, they don't ever focus the checkbox -->
295
300
  <!-- svelte-ignore a11y-click-events-have-key-events -->
296
301
  <div class="checkbox" on:click={onCheckClick}>
@@ -319,6 +324,7 @@ $: if ($dragging) {
319
324
  {#if item.hasChildren && !showChildren}, right arrow to show children{/if}
320
325
  {#if $selected.size > 0}, command-enter to select multiple, shift-enter to select all from last selection{/if}
321
326
  </ScreenReaderOnly>
327
+ {/if}
322
328
  </div>
323
329
  {#if showChildren && item.children}
324
330
  <ul role="group">
@@ -350,6 +356,7 @@ $: if ($dragging) {
350
356
  border-bottom: var(--tree-border, 1px dashed #aaaaaa);
351
357
  width: 100%;
352
358
  overflow: hidden;
359
+ min-height: 2.9em;
353
360
  }
354
361
  :global(.resizing) .tree-node {
355
362
  cursor: col-resize;
@@ -377,7 +384,7 @@ $: if ($dragging) {
377
384
  color: var(--tree-selected-text, inherit);
378
385
  }
379
386
  .tree-node.dragOver {
380
- background-color: var(--tree-droppable, #555555);
387
+ background-color: var(--tree-droppable, #757575);
381
388
  color: var(--tree-droppable-text, white);
382
389
  }
383
390
  .tree-node.dropDisabled {
@@ -391,7 +398,7 @@ $: if ($dragging) {
391
398
  height: 6px;
392
399
  }
393
400
  .drop-above.dragOverAbove {
394
- background-color: var(--tree-droppable, #555555);
401
+ background-color: var(--tree-droppable, #757575);
395
402
  }
396
403
  li {
397
404
  position: relative;
@@ -117,3 +117,4 @@ export declare class TreeStore<T extends TreeItemFromDB> extends ActiveStore<ITr
117
117
  }
118
118
  export declare const hashedIds: Record<string, string>;
119
119
  export declare function getHashId(str: string): string;
120
+ export declare const lazyObserver: IntersectionObserver | undefined;
@@ -345,3 +345,14 @@ export function getHashId(str) {
345
345
  hashedIds[str] ??= hashid(str);
346
346
  return hashedIds[str];
347
347
  }
348
+ const lazyEvent = new CustomEvent('lazy');
349
+ export const lazyObserver = typeof IntersectionObserver !== 'undefined'
350
+ ? new IntersectionObserver((entries) => {
351
+ for (const entry of entries) {
352
+ if (entry.isIntersecting) {
353
+ entry.target.dispatchEvent(lazyEvent);
354
+ lazyObserver.unobserve(entry.target);
355
+ }
356
+ }
357
+ }, { rootMargin: '500px' })
358
+ : undefined;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@dosgato/dialog",
3
3
  "description": "A component library for building forms that edit a JSON document.",
4
- "version": "0.0.49",
4
+ "version": "0.0.50",
5
5
  "scripts": {
6
6
  "prepublishOnly": "svelte-package",
7
7
  "dev": "vite dev --force",
@@ -39,7 +39,7 @@
39
39
  "svelte-preprocess": "^5.0.0",
40
40
  "svelte2tsx": "^0.6.0",
41
41
  "tslib": "^2.3.1",
42
- "typescript": "^4.4.3"
42
+ "typescript": "^5.0.2"
43
43
  },
44
44
  "peerDependencies": {
45
45
  "svelte": "^3.53.1"