@pure-ds/core 0.5.60 → 0.6.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.
Files changed (43) hide show
  1. package/dist/types/packages/pds-configurator/src/pds-home-content.d.ts +375 -0
  2. package/dist/types/packages/pds-configurator/src/pds-home-content.d.ts.map +1 -0
  3. package/dist/types/packages/pds-configurator/src/pds-home.d.ts +2 -0
  4. package/dist/types/packages/pds-configurator/src/pds-home.d.ts.map +1 -0
  5. package/dist/types/pds.config.d.ts +4 -8
  6. package/dist/types/pds.config.d.ts.map +1 -1
  7. package/dist/types/pds.d.ts +3 -1
  8. package/dist/types/public/assets/js/pds-manager.d.ts.map +1 -1
  9. package/dist/types/public/assets/js/pds.d.ts.map +1 -1
  10. package/dist/types/public/assets/pds/components/pds-live-edit.d.ts +150 -0
  11. package/dist/types/public/assets/pds/components/pds-live-edit.d.ts.map +1 -0
  12. package/dist/types/public/assets/pds/components/pds-omnibox.d.ts +2 -0
  13. package/dist/types/public/assets/pds/components/pds-omnibox.d.ts.map +1 -1
  14. package/dist/types/public/assets/pds/components/pds-richtext.d.ts.map +1 -1
  15. package/dist/types/public/assets/pds/components/pds-theme.d.ts +5 -0
  16. package/dist/types/public/assets/pds/components/pds-theme.d.ts.map +1 -1
  17. package/dist/types/src/js/pds-core/pds-config.d.ts +457 -0
  18. package/dist/types/src/js/pds-core/pds-config.d.ts.map +1 -1
  19. package/dist/types/src/js/pds-core/pds-enhancers.d.ts.map +1 -1
  20. package/dist/types/src/js/pds-core/pds-live.d.ts.map +1 -1
  21. package/dist/types/src/js/pds-core/pds-ontology.d.ts.map +1 -1
  22. package/dist/types/src/js/pds-core/pds-start-helpers.d.ts.map +1 -1
  23. package/dist/types/src/js/pds-core/pds-theme-utils.d.ts +6 -0
  24. package/dist/types/src/js/pds-core/pds-theme-utils.d.ts.map +1 -0
  25. package/dist/types/src/js/pds.d.ts.map +1 -1
  26. package/package.json +1 -4
  27. package/packages/pds-cli/bin/templates/bootstrap/pds.config.js +9 -2
  28. package/public/assets/js/app.js +106 -5636
  29. package/public/assets/js/pds-manager.js +156 -156
  30. package/public/assets/js/pds.js +7 -7
  31. package/public/assets/pds/components/pds-live-edit.js +1555 -0
  32. package/public/assets/pds/components/pds-omnibox.js +558 -369
  33. package/public/assets/pds/components/pds-richtext.js +57 -7
  34. package/public/assets/pds/components/pds-theme.js +58 -0
  35. package/readme.md +2 -2
  36. package/src/js/pds-core/pds-config.js +705 -1
  37. package/src/js/pds-core/pds-enhancers.js +61 -4
  38. package/src/js/pds-core/pds-live.js +545 -437
  39. package/src/js/pds-core/pds-ontology.js +8 -0
  40. package/src/js/pds-core/pds-start-helpers.js +15 -0
  41. package/src/js/pds-core/pds-theme-utils.js +33 -0
  42. package/src/js/pds.d.ts +3 -1
  43. package/src/js/pds.js +22 -0
@@ -77,16 +77,55 @@ function enhanceDropdown(elem) {
77
77
  }
78
78
 
79
79
  const resolveDirection = () => {
80
- const mode = (elem.getAttribute("data-mode") || "auto").toLowerCase();
80
+ const mode = (
81
+ elem.getAttribute("data-direction") ||
82
+ elem.getAttribute("data-dropdown-direction") ||
83
+ elem.getAttribute("data-mode") ||
84
+ "auto"
85
+ ).toLowerCase();
81
86
  if (mode === "up" || mode === "down") return mode;
82
87
  const rect = elem.getBoundingClientRect();
88
+ const menuRect = menu?.getBoundingClientRect?.() || { height: 0 };
89
+ const menuHeight = Math.max(
90
+ menu?.offsetHeight || 0,
91
+ menu?.scrollHeight || 0,
92
+ menuRect.height || 0,
93
+ 200
94
+ );
83
95
  const spaceBelow = Math.max(0, window.innerHeight - rect.bottom);
84
96
  const spaceAbove = Math.max(0, rect.top);
97
+ if (spaceBelow >= menuHeight) return "down";
98
+ if (spaceAbove >= menuHeight) return "up";
85
99
  return spaceAbove > spaceBelow ? "up" : "down";
86
100
  };
87
101
 
102
+ const resolveAlign = () => {
103
+ const align = (
104
+ elem.getAttribute("data-align") ||
105
+ elem.getAttribute("data-dropdown-align") ||
106
+ "auto"
107
+ ).toLowerCase();
108
+ if (align === "left" || align === "right" || align === "start" || align === "end") {
109
+ return align === "start" ? "left" : align === "end" ? "right" : align;
110
+ }
111
+ const rect = elem.getBoundingClientRect();
112
+ const menuRect = menu?.getBoundingClientRect?.() || { width: 0 };
113
+ const menuWidth = Math.max(
114
+ menu?.offsetWidth || 0,
115
+ menu?.scrollWidth || 0,
116
+ menuRect.width || 0,
117
+ 240
118
+ );
119
+ const spaceRight = Math.max(0, window.innerWidth - rect.left);
120
+ const spaceLeft = Math.max(0, rect.right);
121
+ if (spaceRight >= menuWidth) return "left";
122
+ if (spaceLeft >= menuWidth) return "right";
123
+ return spaceLeft > spaceRight ? "right" : "left";
124
+ };
125
+
88
126
  const openMenu = () => {
89
127
  elem.dataset.dropdownDirection = resolveDirection();
128
+ elem.dataset.dropdownAlign = resolveAlign();
90
129
  menu.setAttribute("aria-hidden", "false");
91
130
  trigger?.setAttribute("aria-expanded", "true");
92
131
  };
@@ -264,16 +303,34 @@ function enhanceRequired(elem) {
264
303
  elem.dataset.enhancedRequired = "true";
265
304
 
266
305
  const enhanceRequiredField = (input) => {
267
-
268
- const label = input.closest("label");
306
+ let label;
307
+ if(input.closest("[role$=group]")) { // Handles both radiogroup and group
308
+ label = input.closest("[role$=group]").querySelector("legend");
309
+ }
310
+ else{
311
+ label = input.closest("label");
312
+ }
269
313
  if (!label) return;
314
+
315
+
270
316
  if (label.querySelector(".required-asterisk")) return;
271
317
 
272
318
  const asterisk = document.createElement("span");
273
319
  asterisk.classList.add("required-asterisk");
274
320
  asterisk.textContent = "*";
275
321
  asterisk.style.marginLeft = "4px";
276
- label.querySelector("span").appendChild(asterisk);
322
+
323
+ const labelText = label.querySelector("span, [data-label]");
324
+ if (labelText) {
325
+ labelText.appendChild(asterisk);
326
+ } else {
327
+ const field = label.querySelector("input, select, textarea");
328
+ if (field) {
329
+ label.insertBefore(asterisk, field);
330
+ } else {
331
+ label.appendChild(asterisk);
332
+ }
333
+ }
277
334
 
278
335
  const form = input.closest("form");
279
336
  if (form && !form.querySelector(".required-legend")) {