@pure-ds/core 0.6.11 → 0.7.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.
Files changed (93) hide show
  1. package/.cursorrules +38 -1
  2. package/.github/copilot-instructions.md +38 -1
  3. package/custom-elements.json +77 -46
  4. package/dist/types/public/assets/js/pds-ask.d.ts +3 -0
  5. package/dist/types/public/assets/js/pds-ask.d.ts.map +1 -0
  6. package/dist/types/public/assets/js/pds-auto-definer.d.ts +9 -0
  7. package/dist/types/public/assets/js/pds-auto-definer.d.ts.map +1 -0
  8. package/dist/types/public/assets/js/pds-autocomplete.d.ts +68 -0
  9. package/dist/types/public/assets/js/pds-autocomplete.d.ts.map +1 -0
  10. package/dist/types/public/assets/js/pds-enhancers.d.ts +7 -0
  11. package/dist/types/public/assets/js/pds-enhancers.d.ts.map +1 -0
  12. package/dist/types/public/assets/js/pds-manager.d.ts +444 -159
  13. package/dist/types/public/assets/js/pds-manager.d.ts.map +1 -1
  14. package/dist/types/public/assets/js/pds-toast.d.ts +9 -0
  15. package/dist/types/public/assets/js/pds-toast.d.ts.map +1 -0
  16. package/dist/types/public/assets/js/pds.d.ts +4 -3
  17. package/dist/types/public/assets/js/pds.d.ts.map +1 -1
  18. package/dist/types/public/assets/pds/components/pds-drawer.d.ts +1 -143
  19. package/dist/types/public/assets/pds/components/pds-drawer.d.ts.map +1 -1
  20. package/dist/types/public/assets/pds/components/pds-form.d.ts.map +1 -1
  21. package/dist/types/public/assets/pds/components/pds-icon.d.ts.map +1 -1
  22. package/dist/types/public/assets/pds/components/pds-omnibox.d.ts.map +1 -1
  23. package/dist/types/public/assets/pds/components/pds-richtext.d.ts.map +1 -1
  24. package/dist/types/public/assets/pds/components/pds-scrollrow.d.ts +1 -83
  25. package/dist/types/public/assets/pds/components/pds-scrollrow.d.ts.map +1 -1
  26. package/dist/types/public/assets/pds/components/pds-splitpanel.d.ts +1 -89
  27. package/dist/types/public/assets/pds/components/pds-splitpanel.d.ts.map +1 -1
  28. package/dist/types/public/assets/pds/components/pds-theme.d.ts +1 -22
  29. package/dist/types/public/assets/pds/components/pds-theme.d.ts.map +1 -1
  30. package/dist/types/public/assets/pds/components/pds-toaster.d.ts.map +1 -1
  31. package/dist/types/public/assets/pds/components/pds-treeview.d.ts.map +1 -1
  32. package/dist/types/public/assets/pds/components/pds-upload.d.ts.map +1 -1
  33. package/dist/types/src/js/common/ask.d.ts.map +1 -1
  34. package/dist/types/src/js/pds-ask.d.ts +2 -0
  35. package/dist/types/src/js/pds-ask.d.ts.map +1 -0
  36. package/dist/types/src/js/pds-auto-definer.d.ts +2 -0
  37. package/dist/types/src/js/pds-auto-definer.d.ts.map +1 -0
  38. package/dist/types/src/js/pds-autocomplete.d.ts +2 -0
  39. package/dist/types/src/js/pds-autocomplete.d.ts.map +1 -0
  40. package/dist/types/src/js/pds-core/pds-live.d.ts.map +1 -1
  41. package/dist/types/src/js/pds-core/pds-start-helpers.d.ts.map +1 -1
  42. package/dist/types/src/js/pds-enhancers.d.ts +2 -0
  43. package/dist/types/src/js/pds-enhancers.d.ts.map +1 -0
  44. package/dist/types/src/js/pds-live-manager/conversion-service.d.ts.map +1 -1
  45. package/dist/types/src/js/pds-toast.d.ts +2 -0
  46. package/dist/types/src/js/pds-toast.d.ts.map +1 -0
  47. package/dist/types/src/js/pds.d.ts.map +1 -1
  48. package/package.json +6 -4
  49. package/packages/pds-cli/README.md +9 -0
  50. package/packages/pds-cli/bin/pds-static.js +25 -3
  51. package/packages/pds-cli/bin/sync-assets.js +34 -0
  52. package/packages/pds-cli/bin/templates/bootstrap/pds.config.js +1 -5
  53. package/packages/pds-cli/bin/templates/bootstrap/public/index.html +2 -1
  54. package/packages/pds-cli/bin/templates/starter-templates.js +1 -3
  55. package/public/assets/js/app.js +4 -34
  56. package/public/assets/js/pds-ask.js +25 -0
  57. package/public/assets/js/pds-auto-definer.js +1 -0
  58. package/public/assets/js/pds-autocomplete.js +7 -0
  59. package/public/assets/js/pds-enhancers.js +1 -0
  60. package/public/assets/js/pds-manager.js +37 -37
  61. package/public/assets/js/pds-toast.js +1 -0
  62. package/public/assets/js/pds.js +2 -32
  63. package/public/assets/pds/components/pds-calendar.js +2 -2
  64. package/public/assets/pds/components/pds-drawer.js +1 -1
  65. package/public/assets/pds/components/pds-form.js +7 -6
  66. package/public/assets/pds/components/pds-icon.js +12 -9
  67. package/public/assets/pds/components/pds-live-edit.js +5 -8
  68. package/public/assets/pds/components/pds-live-importer.js +2 -1
  69. package/public/assets/pds/components/pds-live-template-canvas.js +2 -1
  70. package/public/assets/pds/components/pds-omnibox.js +11 -1
  71. package/public/assets/pds/components/pds-richtext.js +2 -0
  72. package/public/assets/pds/components/pds-scrollrow.js +5 -1
  73. package/public/assets/pds/components/pds-splitpanel.js +3 -1
  74. package/public/assets/pds/components/pds-theme.js +2 -0
  75. package/public/assets/pds/components/pds-toaster.js +2 -0
  76. package/public/assets/pds/components/pds-treeview.js +2 -0
  77. package/public/assets/pds/components/pds-upload.js +2 -0
  78. package/public/assets/pds/core/pds-ask.js +25 -0
  79. package/public/assets/pds/core/pds-auto-definer.js +1 -0
  80. package/public/assets/pds/core/pds-autocomplete.js +7 -0
  81. package/public/assets/pds/core/pds-enhancers.js +1 -0
  82. package/public/assets/pds/core/pds-manager.js +3646 -0
  83. package/public/assets/pds/core/pds-toast.js +1 -0
  84. package/public/assets/pds/core.js +2 -0
  85. package/public/assets/pds/custom-elements.json +77 -46
  86. package/public/assets/pds/pds-css-complete.json +2 -2
  87. package/public/assets/pds/pds.css-data.json +1 -1
  88. package/public/assets/pds/vscode-custom-data.json +5 -13
  89. package/readme.md +4 -1
  90. package/src/js/pds-core/pds-live.js +3 -0
  91. package/src/js/pds-core/pds-start-helpers.js +5 -1
  92. package/src/js/pds-live-manager/conversion-service.js +1 -2
  93. package/src/js/pds.js +159 -14
package/.cursorrules CHANGED
@@ -186,7 +186,11 @@ form.addEventListener('pw:submit', async (e) => {
186
186
  });
187
187
  ```
188
188
 
189
- **PDS.toast() is available globally via window.PDS:**
189
+ **PDS.toast() is available from the imported `PDS` runtime:**
190
+
191
+ ```javascript
192
+ import { PDS } from '#pds';
193
+ ```
190
194
 
191
195
  ```javascript
192
196
  // All toast types
@@ -362,6 +366,7 @@ This component uses `import { ... } from "#pds/lit"` and **requires** an import
362
366
  <script type="importmap">
363
367
  {
364
368
  "imports": {
369
+ "#pds": "/assets/pds/core.js",
365
370
  "#pds/lit": "/assets/pds/external/lit.js"
366
371
  }
367
372
  }
@@ -431,6 +436,38 @@ form.getFormData(); // May throw error
431
436
  <span data-label>Enable feature</span>
432
437
  </label>
433
438
 
439
+ <!-- Treeview: lazy node loading -->
440
+ <pds-treeview id="docsTree"></pds-treeview>
441
+
442
+ <script type="module">
443
+ const tree = document.getElementById('docsTree');
444
+ tree.options = {
445
+ // Initial payload can be shallow (e.g., 2 levels)
446
+ source: [
447
+ {
448
+ id: 'docs',
449
+ text: 'Docs',
450
+ hasChildren: true,
451
+ children: [
452
+ { id: 'guides', text: 'Guides', hasChildren: true },
453
+ { id: 'components', text: 'Components', hasChildren: true }
454
+ ]
455
+ }
456
+ ],
457
+ // Fetch children only when a node is expanded
458
+ getChildren: async ({ nodeId }) => {
459
+ const res = await fetch(`/api/tree?parent=${encodeURIComponent(nodeId)}`);
460
+ return res.ok ? res.json() : [];
461
+ }
462
+ };
463
+ </script>
464
+
465
+ **Treeview lazy-loading rules:**
466
+ - Mark expandable nodes with `hasChildren: true` when children are not yet included in the initial `source`.
467
+ - Provide `options.getChildren({ node, nodeId, host, options, settings })` for node-level fetch on first expand.
468
+ - Prefer shallow initial payloads (root + immediate children), then fetch deeper levels as users expand.
469
+ - Use `node-load` and `node-load-error` events for telemetry, loading UX, and retries.
470
+
434
471
  <form data-required>
435
472
  <label><span>Email</span><input type="email" required></label>
436
473
  </form>
@@ -186,7 +186,11 @@ form.addEventListener('pw:submit', async (e) => {
186
186
  });
187
187
  ```
188
188
 
189
- **PDS.toast() is available globally via window.PDS:**
189
+ **PDS.toast() is available from the imported `PDS` runtime:**
190
+
191
+ ```javascript
192
+ import { PDS } from '#pds';
193
+ ```
190
194
 
191
195
  ```javascript
192
196
  // All toast types
@@ -362,6 +366,7 @@ This component uses `import { ... } from "#pds/lit"` and **requires** an import
362
366
  <script type="importmap">
363
367
  {
364
368
  "imports": {
369
+ "#pds": "/assets/pds/core.js",
365
370
  "#pds/lit": "/assets/pds/external/lit.js"
366
371
  }
367
372
  }
@@ -431,6 +436,38 @@ form.getFormData(); // May throw error
431
436
  <span data-label>Enable feature</span>
432
437
  </label>
433
438
 
439
+ <!-- Treeview: lazy node loading -->
440
+ <pds-treeview id="docsTree"></pds-treeview>
441
+
442
+ <script type="module">
443
+ const tree = document.getElementById('docsTree');
444
+ tree.options = {
445
+ // Initial payload can be shallow (e.g., 2 levels)
446
+ source: [
447
+ {
448
+ id: 'docs',
449
+ text: 'Docs',
450
+ hasChildren: true,
451
+ children: [
452
+ { id: 'guides', text: 'Guides', hasChildren: true },
453
+ { id: 'components', text: 'Components', hasChildren: true }
454
+ ]
455
+ }
456
+ ],
457
+ // Fetch children only when a node is expanded
458
+ getChildren: async ({ nodeId }) => {
459
+ const res = await fetch(`/api/tree?parent=${encodeURIComponent(nodeId)}`);
460
+ return res.ok ? res.json() : [];
461
+ }
462
+ };
463
+ </script>
464
+
465
+ **Treeview lazy-loading rules:**
466
+ - Mark expandable nodes with `hasChildren: true` when children are not yet included in the initial `source`.
467
+ - Provide `options.getChildren({ node, nodeId, host, options, settings })` for node-level fetch on first expand.
468
+ - Prefer shallow initial payloads (root + immediate children), then fetch deeper levels as users expand.
469
+ - Use `node-load` and `node-load-error` events for telemetry, loading UX, and retries.
470
+
434
471
  <form data-required>
435
472
  <label><span>Email</span><input type="email" required></label>
436
473
  </form>
@@ -1334,6 +1334,34 @@
1334
1334
  "kind": "method",
1335
1335
  "name": "_teardown"
1336
1336
  },
1337
+ {
1338
+ "kind": "method",
1339
+ "name": "_enableInteractiveEditing"
1340
+ },
1341
+ {
1342
+ "kind": "method",
1343
+ "name": "_disableInteractiveEditing",
1344
+ "parameters": [
1345
+ {
1346
+ "name": "options",
1347
+ "default": "{}"
1348
+ }
1349
+ ]
1350
+ },
1351
+ {
1352
+ "kind": "method",
1353
+ "name": "setInteractiveEditingEnabled",
1354
+ "parameters": [
1355
+ {
1356
+ "name": "enabled",
1357
+ "default": "true"
1358
+ }
1359
+ ]
1360
+ },
1361
+ {
1362
+ "kind": "method",
1363
+ "name": "isInteractiveEditingEnabled"
1364
+ },
1337
1365
  {
1338
1366
  "kind": "method",
1339
1367
  "name": "_handleThemeChanged"
@@ -1529,6 +1557,14 @@
1529
1557
  "kind": "method",
1530
1558
  "name": "_buildQuickModeDropdown"
1531
1559
  },
1560
+ {
1561
+ "kind": "method",
1562
+ "name": "_buildQuickModeContent"
1563
+ },
1564
+ {
1565
+ "kind": "method",
1566
+ "name": "createSharedQuickModeMenuItem"
1567
+ },
1532
1568
  {
1533
1569
  "kind": "method",
1534
1570
  "name": "_openDrawer",
@@ -1563,6 +1599,14 @@
1563
1599
  }
1564
1600
  ]
1565
1601
  },
1602
+ {
1603
+ "kind": "method",
1604
+ "name": "openDesignSettings"
1605
+ },
1606
+ {
1607
+ "kind": "method",
1608
+ "name": "resetConfig"
1609
+ },
1566
1610
  {
1567
1611
  "kind": "method",
1568
1612
  "name": "openImportDetailsFromToast",
@@ -1741,6 +1785,22 @@
1741
1785
  "text": "null"
1742
1786
  },
1743
1787
  "default": "null"
1788
+ },
1789
+ {
1790
+ "kind": "field",
1791
+ "name": "_interactiveEditingEnabled",
1792
+ "type": {
1793
+ "text": "boolean"
1794
+ },
1795
+ "default": "true"
1796
+ },
1797
+ {
1798
+ "kind": "field",
1799
+ "name": "_interactionListenersAttached",
1800
+ "type": {
1801
+ "text": "boolean"
1802
+ },
1803
+ "default": "false"
1744
1804
  }
1745
1805
  ],
1746
1806
  "events": [
@@ -1897,7 +1957,7 @@
1897
1957
  "name": "_persistImportHistory",
1898
1958
  "parameters": [
1899
1959
  {
1900
- "name": "{ sourceType, result }"
1960
+ "name": "{ sourceType, importMode, result }"
1901
1961
  }
1902
1962
  ]
1903
1963
  },
@@ -1928,6 +1988,9 @@
1928
1988
  },
1929
1989
  {
1930
1990
  "name": "fileName"
1991
+ },
1992
+ {
1993
+ "name": "importMode"
1931
1994
  }
1932
1995
  ]
1933
1996
  },
@@ -1990,6 +2053,14 @@
1990
2053
  },
1991
2054
  "default": "\"\""
1992
2055
  },
2056
+ {
2057
+ "kind": "field",
2058
+ "name": "_selectedImportMode",
2059
+ "type": {
2060
+ "text": "string"
2061
+ },
2062
+ "default": "\"convert-only\""
2063
+ },
1993
2064
  {
1994
2065
  "kind": "field",
1995
2066
  "name": "_isImporting",
@@ -2632,32 +2703,8 @@
2632
2703
  "declarations": [
2633
2704
  {
2634
2705
  "kind": "class",
2635
- "description": "Horizontal scrolling row with optional heading and snap alignment controls.",
2706
+ "description": "",
2636
2707
  "name": "PdsScrollrow",
2637
- "cssParts": [
2638
- {
2639
- "description": "The scrollable container element",
2640
- "name": "viewport"
2641
- },
2642
- {
2643
- "description": "The previous/left scroll navigation button",
2644
- "name": "prev"
2645
- },
2646
- {
2647
- "description": "The next/right scroll navigation button",
2648
- "name": "next"
2649
- }
2650
- ],
2651
- "slots": [
2652
- {
2653
- "description": "Scrollable tile content",
2654
- "name": "default"
2655
- },
2656
- {
2657
- "description": "Optional heading content rendered in the component header",
2658
- "name": "heading"
2659
- }
2660
- ],
2661
2708
  "members": [
2662
2709
  {
2663
2710
  "kind": "field",
@@ -2747,32 +2794,16 @@
2747
2794
  ],
2748
2795
  "attributes": [
2749
2796
  {
2750
- "name": "label",
2751
- "type": {
2752
- "text": "string"
2753
- },
2754
- "description": "Accessible label for the scroll region; also used as fallback heading copy"
2797
+ "name": "label"
2755
2798
  },
2756
2799
  {
2757
- "name": "snap",
2758
- "type": {
2759
- "text": "\"start\"|\"center\""
2760
- },
2761
- "description": "Snap alignment for tiles when scrolling (default: start)"
2800
+ "name": "snap"
2762
2801
  },
2763
2802
  {
2764
- "name": "tile-min",
2765
- "type": {
2766
- "text": "string"
2767
- },
2768
- "description": "Minimum tile width (CSS length, e.g. \"250px\")"
2803
+ "name": "tile-min"
2769
2804
  },
2770
2805
  {
2771
- "name": "tile-max",
2772
- "type": {
2773
- "text": "string"
2774
- },
2775
- "description": "Maximum tile width (CSS length, e.g. \"360px\")"
2806
+ "name": "tile-max"
2776
2807
  }
2777
2808
  ],
2778
2809
  "superclass": {
@@ -0,0 +1,3 @@
1
+ export { E as ask };
2
+ declare function E(n: any, e?: {}): Promise<any>;
3
+ //# sourceMappingURL=pds-ask.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pds-ask.d.ts","sourceRoot":"","sources":["../../../../../public/assets/js/pds-ask.js"],"names":[],"mappings":";AAAokE,iDAwBt3C"}
@@ -0,0 +1,9 @@
1
+ export { M as AutoDefiner };
2
+ declare var M: {
3
+ new (i?: {}): {};
4
+ define(...i: any[]): Promise<{
5
+ tag: any;
6
+ status: string;
7
+ }[]>;
8
+ };
9
+ //# sourceMappingURL=pds-auto-definer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pds-auto-definer.d.ts","sourceRoot":"","sources":["../../../../../public/assets/js/pds-auto-definer.js"],"names":[],"mappings":";AAA62B;;;;;;EAAgwG"}
@@ -0,0 +1,68 @@
1
+ export { f as AutoComplete };
2
+ declare var f: {
3
+ new (t: any, e: any, s: any): {
4
+ settings: any;
5
+ container: any;
6
+ input: any;
7
+ categories: any;
8
+ caches: Map<any, any>;
9
+ on(t: any, e: any): /*elided*/ any;
10
+ attach(): void;
11
+ resultsDiv: HTMLDivElement;
12
+ controller(): {
13
+ show: any;
14
+ hide: any;
15
+ clear: any;
16
+ empty: () => void;
17
+ };
18
+ internalController(): {
19
+ show: any;
20
+ hide: any;
21
+ clear: any;
22
+ empty: () => void;
23
+ };
24
+ moveResult(t: any): void;
25
+ rowIndex: any;
26
+ getSelectedDiv(): Element;
27
+ selectResult(t: any): void;
28
+ resultClicked: boolean;
29
+ tabWindow: Window;
30
+ setText(t: any): void;
31
+ resultClick(t: any): void;
32
+ blurHandler(): void;
33
+ clear(): void;
34
+ cacheTmr: NodeJS.Timeout;
35
+ show(): void;
36
+ getViewBounds(): {
37
+ rect: any;
38
+ suggestedDirection: string;
39
+ };
40
+ hide(): void;
41
+ empty(): void;
42
+ inputHandler(t: any): void;
43
+ keyDownHandler(t: any): void;
44
+ keyUpHandler(t: any): void;
45
+ focusHandler(t: any): void;
46
+ suggest(t: any, e: any): void;
47
+ sort(t: any, e: any): any;
48
+ resultsHandler(t: any, e: any): void;
49
+ results: any;
50
+ acItems: NodeListOf<Element>;
51
+ handleImageOrIcon(t: any): any;
52
+ formatResultItem(t: any, e: any, s: any): any;
53
+ highlight(t: any, e: any): any;
54
+ getItems(t: any, e: any): Promise<any>;
55
+ aborter: AbortController;
56
+ aborterSignal: AbortSignal;
57
+ items(t: any): Promise<any[]>;
58
+ formatSearch(t: any, e: any): any;
59
+ createQueryParam(t: any): string;
60
+ isMatch(t: any, e: any): any;
61
+ addEventListener(type: string, callback: EventListenerOrEventListenerObject | null, options?: AddEventListenerOptions | boolean): void;
62
+ dispatchEvent(event: Event): boolean;
63
+ removeEventListener(type: string, callback: EventListenerOrEventListenerObject | null, options?: EventListenerOptions | boolean): void;
64
+ };
65
+ connect(t: any, e: any): any;
66
+ textFilter(t: any, e: any): (s: any) => any;
67
+ };
68
+ //# sourceMappingURL=pds-autocomplete.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pds-autocomplete.d.ts","sourceRoot":"","sources":["../../../../../public/assets/js/pds-autocomplete.js"],"names":[],"mappings":";AACwc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iCAKqxE,MAAC;EAAkM"}
@@ -0,0 +1,7 @@
1
+ export { J as defaultPDSEnhancers };
2
+ declare var J: {
3
+ run: typeof W;
4
+ selector: string;
5
+ }[];
6
+ declare function W(t: any): void;
7
+ //# sourceMappingURL=pds-enhancers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pds-enhancers.d.ts","sourceRoot":"","sources":["../../../../../public/assets/js/pds-enhancers.js"],"names":[],"mappings":";AAAmpZ;;;IAAoD;AAA15Y,iCAAqP"}