@pure-ds/core 0.7.4 → 0.7.5
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/.cursorrules +21 -0
- package/.github/copilot-instructions.md +21 -0
- package/dist/types/src/js/pds-core/pds-start-helpers.d.ts.map +1 -1
- package/package.json +8 -2
- package/packages/pds-cli/bin/pds-bootstrap.js +1 -1
- package/packages/pds-cli/bin/pds-import.js +1 -1
- package/packages/pds-cli/bin/pds-mcp-eval.js +79 -0
- package/packages/pds-cli/bin/pds-mcp-health.js +128 -0
- package/packages/pds-cli/bin/pds-mcp-server.js +140 -0
- package/packages/pds-cli/bin/pds-setup-mcp.js +72 -0
- package/packages/pds-cli/lib/pds-mcp-core.js +497 -0
- package/packages/pds-cli/lib/pds-mcp-eval-cases.json +72 -0
- package/public/assets/js/app.js +1582 -4
- package/public/assets/js/app.js.map +7 -0
- package/public/assets/js/lit.js +1078 -3
- package/public/assets/js/lit.js.map +7 -0
- package/public/assets/js/pds-ask.js +239 -9
- package/public/assets/js/pds-ask.js.map +7 -0
- package/public/assets/js/pds-autocomplete.js +590 -7
- package/public/assets/js/pds-autocomplete.js.map +7 -0
- package/public/assets/js/pds-enhancers.js +689 -1
- package/public/assets/js/pds-enhancers.js.map +7 -0
- package/public/assets/js/pds-manager.js +15947 -3101
- package/public/assets/js/pds-manager.js.map +7 -0
- package/public/assets/js/pds-toast.js +30 -1
- package/public/assets/js/pds-toast.js.map +7 -0
- package/public/assets/js/pds.js +1442 -2
- package/public/assets/js/pds.js.map +7 -0
- package/public/assets/pds/core/pds-ask.js +239 -9
- package/public/assets/pds/core/pds-autocomplete.js +590 -7
- package/public/assets/pds/core/pds-enhancers.js +689 -1
- package/public/assets/pds/core/pds-manager.js +15947 -3101
- package/public/assets/pds/core/pds-toast.js +30 -1
- package/public/assets/pds/core.js +1442 -2
- package/public/assets/pds/external/lit.js +1078 -3
- package/readme.md +44 -2
- package/src/js/pds-core/pds-start-helpers.js +0 -20
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/js/pds-core/pds-enhancers.js"],
|
|
4
|
+
"sourcesContent": ["/**\n * PDS Enhancers - Single Source of Truth\n *\n * This file defines all progressive enhancements for the Pure Design System.\n * Each enhancer has:\n * - selector: CSS selector to target elements\n * - run: Enhancement function (added at the end)\n */\n\n// ============================================================================\n// ENHANCEMENT RUNTIME DEFINITIONS\n// ============================================================================\n\nconst enhancerDefinitions = [\n { selector: \".accordion\" },\n { selector: \"nav[data-dropdown]\" },\n { selector: \"label[data-toggle]\" },\n { selector: \"label[data-color]\" },\n { selector: 'input[type=\"range\"]' },\n { selector: \"form[data-required]\" },\n { selector: \"fieldset[role=group][data-open]\" },\n { selector: \"[data-clip]\" },\n { selector: \"button, a[class*='btn-']\" },\n];\n\n// ============================================================================\n// ENHANCEMENT RUNTIME FUNCTIONS\n// ============================================================================\n\nfunction enhanceAccordion(elem) {\n if (elem.dataset.enhancedAccordion) return;\n elem.dataset.enhancedAccordion = \"true\";\n\n elem.addEventListener(\n \"toggle\",\n (event) => {\n // Only handle toggle events from direct child details elements\n // to avoid closing parent details when nested accordions are used\n if (event.target.open && event.target.parentElement === elem) {\n elem.querySelectorAll(\":scope > details[open]\").forEach((details) => {\n if (details !== event.target) {\n details.open = false;\n }\n });\n }\n },\n true,\n );\n}\n\nfunction enhanceDropdown(elem) {\n if (elem.dataset.enhancedDropdown) return;\n elem.dataset.enhancedDropdown = \"true\";\n const menu = elem.lastElementChild;\n\n if (!menu) return;\n\n const trigger =\n elem.querySelector(\"[data-dropdown-toggle]\") ||\n elem.querySelector(\"button\");\n\n if (trigger && !trigger.hasAttribute(\"type\")) {\n trigger.setAttribute(\"type\", \"button\");\n }\n\n if (!menu.id) {\n menu.id = `dropdown-${Math.random().toString(36).slice(2, 9)}`;\n }\n\n const isMenu = menu.tagName?.toLowerCase() === \"menu\";\n const VIEWPORT_PADDING = 8;\n if (isMenu && !menu.hasAttribute(\"role\")) {\n menu.setAttribute(\"role\", \"menu\");\n }\n if (!menu.hasAttribute(\"aria-hidden\")) {\n menu.setAttribute(\"aria-hidden\", \"true\");\n }\n\n if (trigger) {\n trigger.setAttribute(\"aria-haspopup\", \"true\");\n trigger.setAttribute(\"aria-controls\", menu.id);\n trigger.setAttribute(\"aria-expanded\", \"false\");\n }\n\n const measureMenuSize = () => {\n const previousStyle = menu.getAttribute(\"style\");\n menu.style.visibility = \"hidden\";\n menu.style.display = \"inline-block\";\n menu.style.pointerEvents = \"none\";\n\n const rect = menu.getBoundingClientRect();\n const width = Math.max(menu.offsetWidth || 0, menu.scrollWidth || 0, rect.width || 0, 1);\n const height = Math.max(\n menu.offsetHeight || 0,\n menu.scrollHeight || 0,\n rect.height || 0,\n 1,\n );\n\n if (previousStyle === null) {\n menu.removeAttribute(\"style\");\n } else {\n menu.setAttribute(\"style\", previousStyle);\n }\n\n return { width, height };\n };\n\n const resolveDirection = () => {\n const mode = (\n elem.getAttribute(\"data-direction\") ||\n elem.getAttribute(\"data-dropdown-direction\") ||\n elem.getAttribute(\"data-mode\") ||\n \"auto\"\n ).toLowerCase();\n if (mode === \"up\" || mode === \"down\") return mode;\n const anchorRect = (trigger || elem).getBoundingClientRect();\n const { height: menuHeight } = measureMenuSize();\n const spaceBelow = Math.max(0, window.innerHeight - anchorRect.bottom);\n const spaceAbove = Math.max(0, anchorRect.top);\n const fitsDown = spaceBelow >= menuHeight;\n const fitsUp = spaceAbove >= menuHeight;\n if (fitsDown && !fitsUp) return \"down\";\n if (fitsUp && !fitsDown) return \"up\";\n if (fitsDown && fitsUp) return \"down\";\n return spaceAbove > spaceBelow ? \"up\" : \"down\";\n };\n\n const resolveAlign = () => {\n const align = (\n elem.getAttribute(\"data-align\") ||\n elem.getAttribute(\"data-dropdown-align\") ||\n \"auto\"\n ).toLowerCase();\n if (\n align === \"left\" ||\n align === \"right\" ||\n align === \"start\" ||\n align === \"end\"\n ) {\n return align === \"start\" ? \"left\" : align === \"end\" ? \"right\" : align;\n }\n const anchorRect = (trigger || elem).getBoundingClientRect();\n const { width: menuWidth } = measureMenuSize();\n const spaceForLeftAligned = Math.max(0, window.innerWidth - anchorRect.left);\n const spaceForRightAligned = Math.max(0, anchorRect.right);\n const fitsLeft = spaceForLeftAligned >= menuWidth;\n const fitsRight = spaceForRightAligned >= menuWidth;\n\n if (fitsLeft && !fitsRight) return \"left\";\n if (fitsRight && !fitsLeft) return \"right\";\n if (fitsLeft && fitsRight) return \"left\";\n return spaceForRightAligned > spaceForLeftAligned ? \"right\" : \"left\";\n };\n\n const readLengthToken = (tokenName, fallback = 8) => {\n const raw = getComputedStyle(elem).getPropertyValue(tokenName).trim();\n if (!raw) return fallback;\n const probe = document.createElement(\"span\");\n probe.style.position = \"fixed\";\n probe.style.visibility = \"hidden\";\n probe.style.pointerEvents = \"none\";\n probe.style.height = raw;\n document.body.appendChild(probe);\n const parsed = Number.parseFloat(getComputedStyle(probe).height);\n probe.remove();\n return Number.isFinite(parsed) ? parsed : fallback;\n };\n\n const clearFloatingMenuPosition = () => {\n menu.style.removeProperty(\"position\");\n menu.style.removeProperty(\"left\");\n menu.style.removeProperty(\"top\");\n menu.style.removeProperty(\"right\");\n menu.style.removeProperty(\"bottom\");\n menu.style.removeProperty(\"margin-top\");\n menu.style.removeProperty(\"margin-bottom\");\n menu.style.removeProperty(\"max-width\");\n menu.style.removeProperty(\"max-inline-size\");\n menu.style.removeProperty(\"max-height\");\n menu.style.removeProperty(\"overflow\");\n };\n\n const reattachFloatingMenu = () => {\n if (menu.getAttribute(\"aria-hidden\") !== \"false\") return;\n clearFloatingMenuPosition();\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n positionFloatingMenu();\n });\n });\n };\n\n const positionFloatingMenu = () => {\n if (menu.getAttribute(\"aria-hidden\") !== \"false\") return;\n const anchorRect = (trigger || elem).getBoundingClientRect();\n const viewport = window.visualViewport;\n const viewportWidth =\n viewport?.width || document.documentElement?.clientWidth || window.innerWidth;\n const viewportHeight =\n viewport?.height || document.documentElement?.clientHeight || window.innerHeight;\n const viewportOffsetLeft = viewport?.offsetLeft || 0;\n const viewportOffsetTop = viewport?.offsetTop || 0;\n const maxMenuWidth = Math.max(1, viewportWidth - VIEWPORT_PADDING * 2);\n const maxMenuHeight = Math.max(1, viewportHeight - VIEWPORT_PADDING * 2);\n\n menu.style.maxWidth = `${Math.round(maxMenuWidth)}px`;\n menu.style.maxInlineSize = `${Math.round(maxMenuWidth)}px`;\n menu.style.maxHeight = `${Math.round(maxMenuHeight)}px`;\n menu.style.overflow = \"auto\";\n\n const { width: menuWidth, height: menuHeight } = measureMenuSize();\n const spacing = readLengthToken(\"--spacing-2\", 8);\n const direction = resolveDirection();\n const align = resolveAlign();\n\n elem.dataset.dropdownDirection = direction;\n elem.dataset.dropdownAlign = align;\n\n let left = align === \"right\" ? anchorRect.right - menuWidth : anchorRect.left;\n if (menuWidth >= maxMenuWidth - 1) {\n left = viewportOffsetLeft + VIEWPORT_PADDING;\n } else {\n left = Math.max(\n viewportOffsetLeft + VIEWPORT_PADDING,\n Math.min(\n left,\n viewportOffsetLeft + viewportWidth - menuWidth - VIEWPORT_PADDING,\n ),\n );\n }\n\n let top =\n direction === \"up\"\n ? anchorRect.top - spacing - menuHeight\n : anchorRect.bottom + spacing;\n top = Math.max(\n viewportOffsetTop + VIEWPORT_PADDING,\n Math.min(\n top,\n viewportOffsetTop + viewportHeight - menuHeight - VIEWPORT_PADDING,\n ),\n );\n\n menu.style.position = \"fixed\";\n menu.style.left = `${Math.round(left)}px`;\n menu.style.top = `${Math.round(top)}px`;\n menu.style.right = \"auto\";\n menu.style.bottom = \"auto\";\n menu.style.marginTop = \"0\";\n menu.style.marginBottom = \"0\";\n };\n\n let repositionHandler = null;\n const bindReposition = () => {\n if (repositionHandler) return;\n repositionHandler = () => positionFloatingMenu();\n window.addEventListener(\"resize\", repositionHandler);\n window.addEventListener(\"scroll\", repositionHandler, true);\n };\n\n const unbindReposition = () => {\n if (!repositionHandler) return;\n window.removeEventListener(\"resize\", repositionHandler);\n window.removeEventListener(\"scroll\", repositionHandler, true);\n repositionHandler = null;\n };\n\n let configChangedHandler = null;\n const bindConfigChanged = () => {\n if (configChangedHandler || typeof document === \"undefined\") return;\n configChangedHandler = () => {\n if (menu.getAttribute(\"aria-hidden\") !== \"false\") return;\n elem.dataset.dropdownDirection = resolveDirection();\n elem.dataset.dropdownAlign = resolveAlign();\n reattachFloatingMenu();\n setTimeout(() => {\n if (menu.getAttribute(\"aria-hidden\") !== \"false\") return;\n reattachFloatingMenu();\n }, 50);\n setTimeout(() => {\n if (menu.getAttribute(\"aria-hidden\") !== \"false\") return;\n reattachFloatingMenu();\n }, 150);\n };\n document.addEventListener(\"pds:config-changed\", configChangedHandler);\n };\n\n const unbindConfigChanged = () => {\n if (!configChangedHandler || typeof document === \"undefined\") return;\n document.removeEventListener(\"pds:config-changed\", configChangedHandler);\n configChangedHandler = null;\n };\n\n // Store click handler reference for cleanup\n let clickHandler = null;\n\n const openMenu = () => {\n elem.dataset.dropdownDirection = resolveDirection();\n elem.dataset.dropdownAlign = resolveAlign();\n menu.setAttribute(\"aria-hidden\", \"false\");\n trigger?.setAttribute(\"aria-expanded\", \"true\");\n bindReposition();\n bindConfigChanged();\n reattachFloatingMenu();\n\n // Add click-outside handler when opening\n if (!clickHandler) {\n clickHandler = (event) => {\n // Use composedPath() to handle Shadow DOM\n const path = event.composedPath ? event.composedPath() : [event.target];\n const clickedInside = path.some((node) => node === elem);\n\n if (!clickedInside) {\n closeMenu();\n }\n };\n // Use a slight delay to avoid closing immediately if this was triggered by a click\n setTimeout(() => {\n document.addEventListener(\"click\", clickHandler);\n }, 0);\n }\n };\n\n const closeMenu = () => {\n menu.setAttribute(\"aria-hidden\", \"true\");\n trigger?.setAttribute(\"aria-expanded\", \"false\");\n unbindReposition();\n unbindConfigChanged();\n clearFloatingMenuPosition();\n\n // Remove click-outside handler when closing\n if (clickHandler) {\n document.removeEventListener(\"click\", clickHandler);\n clickHandler = null;\n }\n };\n\n const toggleMenu = () => {\n if (menu.getAttribute(\"aria-hidden\") === \"false\") {\n closeMenu();\n } else {\n openMenu();\n }\n };\n\n trigger?.addEventListener(\"click\", (event) => {\n event.preventDefault();\n event.stopPropagation();\n toggleMenu();\n });\n\n elem.addEventListener(\"keydown\", (event) => {\n if (event.key === \"Escape\") {\n closeMenu();\n trigger?.focus();\n }\n });\n\n elem.addEventListener(\"focusout\", (event) => {\n // Only close if focus is explicitly moving to an element outside the dropdown\n // Don't close if relatedTarget is null (which happens when clicking non-focusable elements inside)\n // Use composedPath() to handle Shadow DOM properly\n if (event.relatedTarget) {\n const path = event.composedPath ? event.composedPath() : [event.relatedTarget];\n const focusedInside = path.some((node) => node === elem);\n if (!focusedInside) {\n closeMenu();\n }\n }\n });\n}\n\nfunction enhanceToggle(elem) {\n if (elem.dataset.enhancedToggle) return;\n elem.dataset.enhancedToggle = \"true\";\n const checkbox = elem.querySelector('input[type=\"checkbox\"]');\n if (!checkbox) return;\n\n if (!elem.hasAttribute(\"tabindex\")) {\n elem.setAttribute(\"tabindex\", \"0\");\n }\n\n elem.setAttribute(\"role\", \"switch\");\n elem.setAttribute(\"aria-checked\", checkbox.checked ? \"true\" : \"false\");\n\n const toggleSwitch = document.createElement(\"span\");\n toggleSwitch.className = \"toggle-switch\";\n toggleSwitch.setAttribute(\"role\", \"presentation\");\n toggleSwitch.setAttribute(\"aria-hidden\", \"true\");\n const knob = document.createElement(\"span\");\n knob.className = \"toggle-knob\";\n toggleSwitch.appendChild(knob);\n elem.insertBefore(toggleSwitch, checkbox.nextSibling);\n\n const updateAria = () => {\n elem.setAttribute(\"aria-checked\", checkbox.checked ? \"true\" : \"false\");\n };\n\n const toggle = () => {\n if (checkbox.disabled) return;\n checkbox.checked = !checkbox.checked;\n updateAria();\n checkbox.dispatchEvent(new Event(\"change\", { bubbles: true }));\n };\n\n elem.addEventListener(\"click\", (event) => {\n event.preventDefault();\n toggle();\n });\n\n elem.addEventListener(\"keydown\", (event) => {\n if (event.key === \" \" || event.key === \"Enter\") {\n event.preventDefault();\n toggle();\n }\n });\n\n checkbox.addEventListener(\"change\", updateAria);\n}\n\nfunction enhanceColorInput(elem) {\n if (elem.dataset.enhancedColorInput) return;\n\n const input = elem.querySelector('input[type=\"color\"]');\n if (!input) return;\n\n elem.dataset.enhancedColorInput = \"true\";\n\n let control = elem.querySelector(':scope > .color-control');\n let swatch = elem.querySelector(':scope > .color-control > .color-swatch');\n let output = elem.querySelector(':scope > .color-control > output');\n\n if (!control) {\n control = document.createElement(\"span\");\n control.className = \"color-control\";\n input.before(control);\n }\n\n if (!swatch) {\n swatch = document.createElement(\"span\");\n swatch.className = \"color-swatch\";\n control.appendChild(swatch);\n }\n\n if (input.parentElement !== swatch) {\n swatch.appendChild(input);\n }\n\n if (!output) {\n output = document.createElement(\"output\");\n control.appendChild(output);\n }\n\n const sync = () => {\n const isUnset = input.dataset.colorUnset === \"1\";\n\n if (isUnset) {\n output.value = \"\";\n output.textContent = \"not set\";\n control.dataset.value = \"\";\n control.dataset.unset = \"1\";\n swatch.dataset.unset = \"1\";\n return;\n }\n\n output.value = input.value;\n output.textContent = input.value;\n control.dataset.value = input.value;\n delete control.dataset.unset;\n delete swatch.dataset.unset;\n };\n\n sync();\n\n const setResolved = () => {\n if (input.dataset.colorUnset === \"1\") {\n input.dataset.colorUnset = \"0\";\n }\n sync();\n };\n\n input.addEventListener(\"input\", setResolved, { passive: true });\n input.addEventListener(\"change\", setResolved, { passive: true });\n}\n\nfunction enhanceRange(elem) {\n if (elem.dataset.enhancedRange) return;\n\n const wireProgrammaticUpdates = (updateFn) => {\n if (elem.dataset.enhancedRangeProgrammatic) return;\n elem.dataset.enhancedRangeProgrammatic = \"1\";\n\n const descriptor =\n Object.getOwnPropertyDescriptor(Object.getPrototypeOf(elem), \"value\") ||\n Object.getOwnPropertyDescriptor(HTMLInputElement.prototype, \"value\");\n\n if (descriptor?.get && descriptor?.set) {\n Object.defineProperty(elem, \"value\", {\n configurable: true,\n enumerable: descriptor.enumerable,\n get() {\n return descriptor.get.call(this);\n },\n set(nextValue) {\n descriptor.set.call(this, nextValue);\n updateFn();\n },\n });\n }\n\n const attrObserver = new MutationObserver((mutations) => {\n const shouldUpdate = mutations.some((mutation) => {\n const attr = mutation.attributeName;\n return attr === \"value\" || attr === \"min\" || attr === \"max\";\n });\n if (shouldUpdate) updateFn();\n });\n attrObserver.observe(elem, {\n attributes: true,\n attributeFilter: [\"value\", \"min\", \"max\"],\n });\n };\n\n const label = elem.closest(\"label\");\n const hasRangeOutputClass = label?.classList.contains(\"range-output\");\n\n const inputId =\n elem.id || `range-${Math.random().toString(36).substring(2, 11)}`;\n const outputId = `${inputId}-output`;\n elem.id = inputId;\n\n if (hasRangeOutputClass) {\n const labelSpan = label.querySelector(\"span\");\n if (labelSpan && !labelSpan.classList.contains(\"range-output-wrapper\")) {\n const wrapper = document.createElement(\"span\");\n wrapper.className = \"range-output-wrapper\";\n wrapper.style.display = \"flex\";\n wrapper.style.justifyContent = \"space-between\";\n wrapper.style.alignItems = \"center\";\n\n const textSpan = document.createElement(\"span\");\n textSpan.textContent = labelSpan.textContent;\n wrapper.appendChild(textSpan);\n\n const output = document.createElement(\"output\");\n output.id = outputId;\n output.setAttribute(\"for\", inputId);\n output.style.color =\n \"var(--surface-text-secondary, var(--color-text-secondary))\";\n output.style.fontSize = \"0.875rem\";\n output.textContent = elem.value;\n wrapper.appendChild(output);\n\n labelSpan.textContent = \"\";\n labelSpan.appendChild(wrapper);\n\n const updateOutput = () => {\n output.textContent = elem.value;\n };\n elem.addEventListener(\"input\", updateOutput);\n elem.addEventListener(\"change\", updateOutput);\n wireProgrammaticUpdates(updateOutput);\n updateOutput();\n }\n } else {\n let container = elem.closest(\".range-container\");\n if (!container) {\n container = document.createElement(\"div\");\n container.className = \"range-container\";\n elem.parentNode?.insertBefore(container, elem);\n container.appendChild(elem);\n }\n container.style.position = \"relative\";\n\n const bubble = document.createElement(\"output\");\n bubble.id = outputId;\n bubble.setAttribute(\"for\", inputId);\n bubble.className = \"range-bubble\";\n bubble.setAttribute(\"aria-live\", \"polite\");\n container.appendChild(bubble);\n\n const updateBubble = () => {\n const min = parseFloat(elem.min) || 0;\n const max = parseFloat(elem.max) || 100;\n const value = parseFloat(elem.value);\n const pct = (value - min) / (max - min);\n bubble.style.left = `calc(${pct * 100}% )`;\n bubble.textContent = String(value);\n };\n const show = () => bubble.classList.add(\"visible\");\n const hide = () => bubble.classList.remove(\"visible\");\n elem.addEventListener(\"input\", updateBubble);\n elem.addEventListener(\"pointerdown\", show);\n elem.addEventListener(\"pointerup\", hide);\n elem.addEventListener(\"pointerleave\", hide);\n elem.addEventListener(\"focus\", show);\n elem.addEventListener(\"blur\", hide);\n elem.addEventListener(\"change\", updateBubble);\n wireProgrammaticUpdates(updateBubble);\n updateBubble();\n }\n\n elem.dataset.enhancedRange = \"1\";\n}\n\nfunction enhanceRequired(elem) {\n if (elem.dataset.enhancedRequired) return;\n elem.dataset.enhancedRequired = \"true\";\n\n const enhanceRequiredField = (input) => {\n let label;\n if (input.closest(\"[role$=group]\")) {\n // Handles both radiogroup and group\n label = input.closest(\"[role$=group]\").querySelector(\"legend\");\n } else {\n label = input.closest(\"label\");\n }\n if (!label) return;\n\n if (label.querySelector(\".required-asterisk\")) return;\n\n const asterisk = document.createElement(\"span\");\n asterisk.classList.add(\"required-asterisk\");\n asterisk.textContent = \"*\";\n asterisk.style.marginLeft = \"4px\";\n\n const labelText = label.querySelector(\"span, [data-label]\");\n if (labelText) {\n labelText.appendChild(asterisk);\n } else {\n const field = label.querySelector(\"input, select, textarea\");\n if (field) {\n label.insertBefore(asterisk, field);\n } else {\n label.appendChild(asterisk);\n }\n }\n\n const form = input.closest(\"form\");\n if (form && !form.querySelector(\".required-legend\")) {\n const legend = document.createElement(\"small\");\n legend.classList.add(\"required-legend\");\n legend.textContent = \"* Required fields\";\n form.insertBefore(\n legend,\n form.querySelector(\".form-actions\") || form.lastElementChild,\n );\n }\n };\n\n elem.querySelectorAll(\"[required]\").forEach((input) => {\n enhanceRequiredField(input);\n });\n}\n\nfunction enhanceOpenGroup(elem) {\n if (elem.dataset.enhancedOpenGroup) return;\n elem.dataset.enhancedOpenGroup = \"true\";\n\n elem.classList.add(\"flex\", \"flex-wrap\", \"buttons\");\n\n const addInput = document.createElement(\"input\");\n addInput.type = \"text\";\n addInput.placeholder = \"Add item...\";\n addInput.classList.add(\"input-text\", \"input-sm\");\n addInput.style.width = \"auto\";\n\n const getFirstInput = () =>\n elem.querySelector('input[type=\"radio\"], input[type=\"checkbox\"]');\n\n elem.appendChild(addInput);\n addInput.addEventListener(\"keydown\", (event) => {\n if (event.key === \"Enter\" || event.key === \"Tab\") {\n const value = addInput.value.trim();\n if (value) {\n event.preventDefault();\n\n const firstInput = getFirstInput();\n const type = firstInput?.type === \"radio\" ? \"radio\" : \"checkbox\";\n const id = `open-group-${Math.random().toString(36).substring(2, 11)}`;\n const label = document.createElement(\"label\");\n\n const span = document.createElement(\"span\");\n span.setAttribute(\"data-label\", \"\");\n span.textContent = value;\n\n const input = document.createElement(\"input\");\n input.type = type;\n input.name =\n firstInput?.name || elem.getAttribute(\"data-name\") || \"open-group\";\n input.value = value;\n input.id = id;\n\n label.appendChild(span);\n label.appendChild(input);\n\n elem.insertBefore(label, addInput);\n addInput.value = \"\";\n }\n } else if (event.key === \"Backspace\" && addInput.value === \"\") {\n event.preventDefault();\n const labels = elem.querySelectorAll(\"label\");\n if (labels.length > 0) {\n const lastLabel = labels[labels.length - 1];\n lastLabel.remove();\n }\n }\n });\n}\n\nfunction enhanceClip(elem) {\n if (elem.dataset.enhancedClip) return;\n elem.dataset.enhancedClip = \"true\";\n\n if (!elem.hasAttribute(\"tabindex\")) {\n elem.setAttribute(\"tabindex\", \"0\");\n }\n if (!elem.hasAttribute(\"role\")) {\n elem.setAttribute(\"role\", \"button\");\n }\n\n const syncAria = () => {\n const isOpen = elem.getAttribute(\"data-clip-open\") === \"true\";\n elem.setAttribute(\"aria-expanded\", isOpen ? \"true\" : \"false\");\n };\n\n const toggleOpen = () => {\n const isOpen = elem.getAttribute(\"data-clip-open\") === \"true\";\n elem.setAttribute(\"data-clip-open\", isOpen ? \"false\" : \"true\");\n syncAria();\n };\n\n elem.addEventListener(\"click\", (event) => {\n if (event.defaultPrevented) return;\n toggleOpen();\n });\n\n elem.addEventListener(\"keydown\", (event) => {\n if (event.key === \" \" || event.key === \"Enter\") {\n event.preventDefault();\n toggleOpen();\n }\n });\n\n syncAria();\n}\n\nfunction enhanceButtonWorking(elem) {\n if (elem.dataset.enhancedBtnWorking) return;\n elem.dataset.enhancedBtnWorking = \"true\";\n\n let originalIcon = null;\n let addedIcon = false;\n\n const observer = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n if (mutation.attributeName === \"class\") {\n const hasWorking = elem.classList.contains(\"btn-working\");\n const icon = elem.querySelector(\"pds-icon\");\n\n if (hasWorking) {\n if (icon) {\n if (!originalIcon) {\n originalIcon = icon.getAttribute(\"icon\");\n }\n icon.setAttribute(\"icon\", \"circle-notch\");\n } else {\n const newIcon = document.createElement(\"pds-icon\");\n newIcon.setAttribute(\"icon\", \"circle-notch\");\n newIcon.setAttribute(\"size\", \"sm\");\n elem.insertBefore(newIcon, elem.firstChild);\n addedIcon = true;\n }\n } else if (mutation.oldValue?.includes(\"btn-working\")) {\n if (icon) {\n if (addedIcon) {\n icon.remove();\n addedIcon = false;\n } else if (originalIcon) {\n icon.setAttribute(\"icon\", originalIcon);\n originalIcon = null;\n }\n }\n }\n }\n });\n });\n\n observer.observe(elem, {\n attributes: true,\n attributeFilter: [\"class\"],\n attributeOldValue: true,\n });\n}\n\n// ============================================================================\n// EXPORTS\n// ============================================================================\n\n// Map selectors to their run functions\nconst enhancerRunners = new Map([\n [\".accordion\", enhanceAccordion],\n [\"nav[data-dropdown]\", enhanceDropdown],\n [\"label[data-toggle]\", enhanceToggle],\n [\"label[data-color]\", enhanceColorInput],\n ['input[type=\"range\"]', enhanceRange],\n [\"form[data-required]\", enhanceRequired],\n [\"fieldset[role=group][data-open]\", enhanceOpenGroup],\n [\"[data-clip]\", enhanceClip],\n [\"button, a[class*='btn-']\", enhanceButtonWorking],\n]);\n\n/**\n * Complete enhancers with runtime functions.\n * Used by PDS.enhancer() and AutoDefiner at runtime.\n *\n * This is the canonical runtime array of enhancer objects.\n */\nexport const defaultPDSEnhancers = enhancerDefinitions.map((meta) => ({\n ...meta,\n run: enhancerRunners.get(meta.selector) || (() => {}),\n}));\n\n// Metadata lives in pds-enhancers-meta.js (live-mode only).\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|