@cognivo/components 0.8.0 → 0.8.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.
- package/dist/chunks/focus-trap-vlQwKK-3.js +82 -0
- package/dist/chunks/focus-trap-vlQwKK-3.js.map +1 -0
- package/dist/chunks/{premium.css-9I4kHrsl.js → premium.css-DHekUEUt.js} +25 -25
- package/dist/chunks/{premium.css-9I4kHrsl.js.map → premium.css-DHekUEUt.js.map} +1 -1
- package/dist/cognivo.min.js +3375 -5270
- package/dist/cognivo.min.js.map +1 -1
- package/dist/components/ai-ab-test/ai-ab-test.js +1 -1
- package/dist/components/ai-accessibility-report/ai-accessibility-report.d.ts.map +1 -1
- package/dist/components/ai-accessibility-report/ai-accessibility-report.js +14 -13
- package/dist/components/ai-accessibility-report/ai-accessibility-report.js.map +1 -1
- package/dist/components/ai-action-preview/ai-action-preview.d.ts.map +1 -1
- package/dist/components/ai-action-preview/ai-action-preview.js +15 -14
- package/dist/components/ai-action-preview/ai-action-preview.js.map +1 -1
- package/dist/components/ai-agent-card/ai-agent-card.js +1 -1
- package/dist/components/ai-agent-steps/ai-agent-steps.d.ts +8 -21
- package/dist/components/ai-agent-steps/ai-agent-steps.d.ts.map +1 -1
- package/dist/components/ai-agent-steps/ai-agent-steps.js +85 -139
- package/dist/components/ai-agent-steps/ai-agent-steps.js.map +1 -1
- package/dist/components/ai-alert-card/ai-alert-card.js +5 -5
- package/dist/components/ai-alert-card/ai-alert-card.js.map +1 -1
- package/dist/components/ai-analytics-chart/ai-analytics-chart.d.ts +0 -13
- package/dist/components/ai-analytics-chart/ai-analytics-chart.d.ts.map +1 -1
- package/dist/components/ai-analytics-chart/ai-analytics-chart.js +75 -125
- package/dist/components/ai-analytics-chart/ai-analytics-chart.js.map +1 -1
- package/dist/components/ai-annotation/ai-annotation.js +2 -2
- package/dist/components/ai-annotation/ai-annotation.js.map +1 -1
- package/dist/components/ai-api-key-manager/ai-api-key-manager.d.ts +0 -9
- package/dist/components/ai-api-key-manager/ai-api-key-manager.d.ts.map +1 -1
- package/dist/components/ai-api-key-manager/ai-api-key-manager.js +115 -276
- package/dist/components/ai-api-key-manager/ai-api-key-manager.js.map +1 -1
- package/dist/components/ai-app-sidebar/ai-app-sidebar.js +13 -13
- package/dist/components/ai-app-sidebar/ai-app-sidebar.js.map +1 -1
- package/dist/components/ai-assistant-widget/ai-assistant-widget.d.ts.map +1 -1
- package/dist/components/ai-assistant-widget/ai-assistant-widget.js +5 -2
- package/dist/components/ai-assistant-widget/ai-assistant-widget.js.map +1 -1
- package/dist/components/ai-audio-player/ai-audio-player.d.ts.map +1 -1
- package/dist/components/ai-audio-player/ai-audio-player.js +23 -19
- package/dist/components/ai-audio-player/ai-audio-player.js.map +1 -1
- package/dist/components/ai-avatar/ai-avatar.js +1 -1
- package/dist/components/ai-badge/ai-badge.js +1 -1
- package/dist/components/ai-batch-progress/ai-batch-progress.js +6 -6
- package/dist/components/ai-batch-progress/ai-batch-progress.js.map +1 -1
- package/dist/components/ai-cache-indicator/ai-cache-indicator.d.ts +0 -13
- package/dist/components/ai-cache-indicator/ai-cache-indicator.d.ts.map +1 -1
- package/dist/components/ai-cache-indicator/ai-cache-indicator.js +90 -185
- package/dist/components/ai-cache-indicator/ai-cache-indicator.js.map +1 -1
- package/dist/components/ai-capture-flow/ai-capture-flow.js +21 -21
- package/dist/components/ai-capture-flow/ai-capture-flow.js.map +1 -1
- package/dist/components/ai-changelog/ai-changelog.js +26 -26
- package/dist/components/ai-changelog/ai-changelog.js.map +1 -1
- package/dist/components/ai-chart-summary/ai-chart-summary.d.ts +0 -6
- package/dist/components/ai-chart-summary/ai-chart-summary.d.ts.map +1 -1
- package/dist/components/ai-chart-summary/ai-chart-summary.js +100 -103
- package/dist/components/ai-chart-summary/ai-chart-summary.js.map +1 -1
- package/dist/components/ai-chat/ai-chat.d.ts.map +1 -1
- package/dist/components/ai-chat/ai-chat.js +9 -3
- package/dist/components/ai-chat/ai-chat.js.map +1 -1
- package/dist/components/ai-citation/ai-citation.d.ts +0 -6
- package/dist/components/ai-citation/ai-citation.d.ts.map +1 -1
- package/dist/components/ai-citation/ai-citation.js +64 -90
- package/dist/components/ai-citation/ai-citation.js.map +1 -1
- package/dist/components/ai-collaborative-editor/ai-collaborative-editor.d.ts +1 -27
- package/dist/components/ai-collaborative-editor/ai-collaborative-editor.d.ts.map +1 -1
- package/dist/components/ai-collaborative-editor/ai-collaborative-editor.js +114 -260
- package/dist/components/ai-collaborative-editor/ai-collaborative-editor.js.map +1 -1
- package/dist/components/ai-command-palette/ai-command-palette.js +1 -1
- package/dist/components/ai-confidence-badge/ai-confidence-badge.d.ts +11 -9
- package/dist/components/ai-confidence-badge/ai-confidence-badge.d.ts.map +1 -1
- package/dist/components/ai-confidence-badge/ai-confidence-badge.js +183 -101
- package/dist/components/ai-confidence-badge/ai-confidence-badge.js.map +1 -1
- package/dist/components/ai-confidence-slider/ai-confidence-slider.js +27 -27
- package/dist/components/ai-confidence-slider/ai-confidence-slider.js.map +1 -1
- package/dist/components/ai-consent-manager/ai-consent-manager.js +2 -2
- package/dist/components/ai-consent-manager/ai-consent-manager.js.map +1 -1
- package/dist/components/ai-context-window/ai-context-window.js +19 -19
- package/dist/components/ai-context-window/ai-context-window.js.map +1 -1
- package/dist/components/ai-copy-button/ai-copy-button.js +4 -4
- package/dist/components/ai-copy-button/ai-copy-button.js.map +1 -1
- package/dist/components/ai-cost-dashboard/ai-cost-dashboard.js +14 -14
- package/dist/components/ai-cost-dashboard/ai-cost-dashboard.js.map +1 -1
- package/dist/components/ai-data-card/ai-data-card.js +2 -2
- package/dist/components/ai-data-card/ai-data-card.js.map +1 -1
- package/dist/components/ai-data-lineage/ai-data-lineage.js +6 -6
- package/dist/components/ai-data-lineage/ai-data-lineage.js.map +1 -1
- package/dist/components/ai-data-preview/ai-data-preview.d.ts +0 -7
- package/dist/components/ai-data-preview/ai-data-preview.d.ts.map +1 -1
- package/dist/components/ai-data-preview/ai-data-preview.js +130 -267
- package/dist/components/ai-data-preview/ai-data-preview.js.map +1 -1
- package/dist/components/ai-data-table/ai-data-table.js +9 -9
- package/dist/components/ai-data-table/ai-data-table.js.map +1 -1
- package/dist/components/ai-debug-console/ai-debug-console.d.ts +1 -13
- package/dist/components/ai-debug-console/ai-debug-console.d.ts.map +1 -1
- package/dist/components/ai-debug-console/ai-debug-console.js +134 -340
- package/dist/components/ai-debug-console/ai-debug-console.js.map +1 -1
- package/dist/components/ai-detection-canvas/ai-detection-canvas.js +2 -2
- package/dist/components/ai-detection-canvas/ai-detection-canvas.js.map +1 -1
- package/dist/components/ai-diff-panel/ai-diff-panel.js +1 -1
- package/dist/components/ai-embedding-viz/ai-embedding-viz.js +4 -4
- package/dist/components/ai-embedding-viz/ai-embedding-viz.js.map +1 -1
- package/dist/components/ai-empty-state/ai-empty-state.js +1 -1
- package/dist/components/ai-error-boundary/ai-error-boundary.d.ts.map +1 -1
- package/dist/components/ai-error-boundary/ai-error-boundary.js +26 -21
- package/dist/components/ai-error-boundary/ai-error-boundary.js.map +1 -1
- package/dist/components/ai-eval-scorecard/ai-eval-scorecard.js +5 -5
- package/dist/components/ai-eval-scorecard/ai-eval-scorecard.js.map +1 -1
- package/dist/components/ai-feature-flag/ai-feature-flag.d.ts +0 -14
- package/dist/components/ai-feature-flag/ai-feature-flag.d.ts.map +1 -1
- package/dist/components/ai-feature-flag/ai-feature-flag.js +181 -322
- package/dist/components/ai-feature-flag/ai-feature-flag.js.map +1 -1
- package/dist/components/ai-feedback/ai-feedback.d.ts.map +1 -1
- package/dist/components/ai-feedback/ai-feedback.js +10 -5
- package/dist/components/ai-feedback/ai-feedback.js.map +1 -1
- package/dist/components/ai-file-upload/ai-file-upload.js +1 -1
- package/dist/components/ai-form-generator/ai-form-generator.js +1 -1
- package/dist/components/ai-guardrail/ai-guardrail.js +2 -2
- package/dist/components/ai-guardrail/ai-guardrail.js.map +1 -1
- package/dist/components/ai-heatmap/ai-heatmap.js +1 -1
- package/dist/components/ai-insight-card/ai-insight-card.js +4 -4
- package/dist/components/ai-insight-card/ai-insight-card.js.map +1 -1
- package/dist/components/ai-json-viewer/ai-json-viewer.js +13 -13
- package/dist/components/ai-json-viewer/ai-json-viewer.js.map +1 -1
- package/dist/components/ai-keyboard-shortcuts/ai-keyboard-shortcuts.js +24 -24
- package/dist/components/ai-keyboard-shortcuts/ai-keyboard-shortcuts.js.map +1 -1
- package/dist/components/ai-kpi-grid/ai-kpi-grid.js +2 -2
- package/dist/components/ai-kpi-grid/ai-kpi-grid.js.map +1 -1
- package/dist/components/ai-labeling-board/ai-labeling-board.js +11 -11
- package/dist/components/ai-labeling-board/ai-labeling-board.js.map +1 -1
- package/dist/components/ai-memory-panel/ai-memory-panel.js +7 -7
- package/dist/components/ai-memory-panel/ai-memory-panel.js.map +1 -1
- package/dist/components/ai-model-comparison/ai-model-comparison.js +2 -2
- package/dist/components/ai-model-comparison/ai-model-comparison.js.map +1 -1
- package/dist/components/ai-model-selector/ai-model-selector.js +7 -7
- package/dist/components/ai-model-selector/ai-model-selector.js.map +1 -1
- package/dist/components/ai-notification-center/ai-notification-center.js +27 -27
- package/dist/components/ai-notification-center/ai-notification-center.js.map +1 -1
- package/dist/components/ai-onboarding/ai-onboarding.js +5 -5
- package/dist/components/ai-onboarding/ai-onboarding.js.map +1 -1
- package/dist/components/ai-permission-gate/ai-permission-gate.js +1 -1
- package/dist/components/ai-personalization-dash/ai-personalization-dash.js +1 -1
- package/dist/components/ai-presence/ai-presence.js +25 -25
- package/dist/components/ai-presence/ai-presence.js.map +1 -1
- package/dist/components/ai-progress-steps/ai-progress-steps.js +11 -11
- package/dist/components/ai-progress-steps/ai-progress-steps.js.map +1 -1
- package/dist/components/ai-prompt-editor/ai-prompt-editor.js +1 -1
- package/dist/components/ai-prompt-template/ai-prompt-template.js +29 -29
- package/dist/components/ai-prompt-template/ai-prompt-template.js.map +1 -1
- package/dist/components/ai-rag-panel/ai-rag-panel.js +4 -4
- package/dist/components/ai-rag-panel/ai-rag-panel.js.map +1 -1
- package/dist/components/ai-reasoning-tree/ai-reasoning-tree.js +16 -16
- package/dist/components/ai-reasoning-tree/ai-reasoning-tree.js.map +1 -1
- package/dist/components/ai-result-panel/ai-result-panel.js +1 -1
- package/dist/components/ai-reveal-animation/ai-reveal-animation.js +3 -3
- package/dist/components/ai-reveal-animation/ai-reveal-animation.js.map +1 -1
- package/dist/components/ai-reward-signal/ai-reward-signal.js +1 -1
- package/dist/components/ai-rich-message/ai-rich-message.d.ts.map +1 -1
- package/dist/components/ai-rich-message/ai-rich-message.js +37 -30
- package/dist/components/ai-rich-message/ai-rich-message.js.map +1 -1
- package/dist/components/ai-scenario-panel/ai-scenario-panel.js +10 -10
- package/dist/components/ai-scenario-panel/ai-scenario-panel.js.map +1 -1
- package/dist/components/ai-search/ai-search.js +1 -1
- package/dist/components/ai-segmentation-viewer/ai-segmentation-viewer.js +3 -3
- package/dist/components/ai-segmentation-viewer/ai-segmentation-viewer.js.map +1 -1
- package/dist/components/ai-sidebar/ai-sidebar.js +1 -1
- package/dist/components/ai-similarity-card/ai-similarity-card.js +1 -1
- package/dist/components/ai-source-graph/ai-source-graph.js +2 -2
- package/dist/components/ai-source-graph/ai-source-graph.js.map +1 -1
- package/dist/components/ai-status-page/ai-status-page.js +15 -15
- package/dist/components/ai-status-page/ai-status-page.js.map +1 -1
- package/dist/components/ai-streaming-text/ai-streaming-text.js +1 -1
- package/dist/components/ai-test-runner/ai-test-runner.d.ts +0 -8
- package/dist/components/ai-test-runner/ai-test-runner.d.ts.map +1 -1
- package/dist/components/ai-test-runner/ai-test-runner.js +100 -257
- package/dist/components/ai-test-runner/ai-test-runner.js.map +1 -1
- package/dist/components/ai-thinking/ai-thinking.js +1 -1
- package/dist/components/ai-timeline/ai-timeline.js +2 -2
- package/dist/components/ai-timeline/ai-timeline.js.map +1 -1
- package/dist/components/ai-token-tracker/ai-token-tracker.js +3 -3
- package/dist/components/ai-token-tracker/ai-token-tracker.js.map +1 -1
- package/dist/components/ai-tool-card-resolver/ai-tool-card-resolver.js +23 -23
- package/dist/components/ai-tool-card-resolver/ai-tool-card-resolver.js.map +1 -1
- package/dist/components/ai-tool-indicator/ai-tool-indicator.js +3 -3
- package/dist/components/ai-tool-indicator/ai-tool-indicator.js.map +1 -1
- package/dist/components/ai-transform-slider/ai-transform-slider.js +1 -1
- package/dist/components/ai-translation-panel/ai-translation-panel.js +2 -2
- package/dist/components/ai-translation-panel/ai-translation-panel.js.map +1 -1
- package/dist/components/ai-usage-meter/ai-usage-meter.js +1 -1
- package/dist/components/ai-validation-checklist/ai-validation-checklist.d.ts +1 -11
- package/dist/components/ai-validation-checklist/ai-validation-checklist.d.ts.map +1 -1
- package/dist/components/ai-validation-checklist/ai-validation-checklist.js +133 -187
- package/dist/components/ai-validation-checklist/ai-validation-checklist.js.map +1 -1
- package/dist/components/ai-version-selector/ai-version-selector.d.ts +0 -4
- package/dist/components/ai-version-selector/ai-version-selector.d.ts.map +1 -1
- package/dist/components/ai-version-selector/ai-version-selector.js +189 -210
- package/dist/components/ai-version-selector/ai-version-selector.js.map +1 -1
- package/dist/components/ai-voice-panel/ai-voice-panel.js +28 -28
- package/dist/components/ai-voice-panel/ai-voice-panel.js.map +1 -1
- package/dist/components/ai-webhook-config/ai-webhook-config.d.ts +0 -17
- package/dist/components/ai-webhook-config/ai-webhook-config.d.ts.map +1 -1
- package/dist/components/ai-webhook-config/ai-webhook-config.js +281 -221
- package/dist/components/ai-webhook-config/ai-webhook-config.js.map +1 -1
- package/dist/components/ai-workflow-builder/ai-workflow-builder.js +2 -2
- package/dist/components/ai-workflow-builder/ai-workflow-builder.js.map +1 -1
- package/dist/components/bias-anchoring/bias-anchoring.js +1 -1
- package/dist/components/bias-authority/bias-authority.js +1 -1
- package/dist/components/bias-commitment/bias-commitment.js +1 -1
- package/dist/components/bias-reciprocity/bias-reciprocity.js +1 -1
- package/dist/components/bias-scarcity/bias-scarcity.js +1 -1
- package/dist/components/bias-social-proof/bias-social-proof.js +1 -1
- package/dist/components/cg-accordion/cg-accordion.d.ts.map +1 -1
- package/dist/components/cg-accordion/cg-accordion.js +51 -43
- package/dist/components/cg-accordion/cg-accordion.js.map +1 -1
- package/dist/components/cg-alert-dialog/cg-alert-dialog.js +18 -18
- package/dist/components/cg-alert-dialog/cg-alert-dialog.js.map +1 -1
- package/dist/components/cg-aspect-ratio/cg-aspect-ratio.d.ts.map +1 -1
- package/dist/components/cg-aspect-ratio/cg-aspect-ratio.js +25 -21
- package/dist/components/cg-aspect-ratio/cg-aspect-ratio.js.map +1 -1
- package/dist/components/cg-autocomplete/cg-autocomplete.d.ts +1 -0
- package/dist/components/cg-autocomplete/cg-autocomplete.d.ts.map +1 -1
- package/dist/components/cg-autocomplete/cg-autocomplete.js +59 -43
- package/dist/components/cg-autocomplete/cg-autocomplete.js.map +1 -1
- package/dist/components/cg-avatar/cg-avatar.d.ts.map +1 -1
- package/dist/components/cg-avatar/cg-avatar.js +24 -24
- package/dist/components/cg-avatar/cg-avatar.js.map +1 -1
- package/dist/components/cg-avatar-group/cg-avatar-group.d.ts.map +1 -1
- package/dist/components/cg-avatar-group/cg-avatar-group.js +18 -12
- package/dist/components/cg-avatar-group/cg-avatar-group.js.map +1 -1
- package/dist/components/cg-badge/cg-badge.d.ts.map +1 -1
- package/dist/components/cg-badge/cg-badge.js +26 -20
- package/dist/components/cg-badge/cg-badge.js.map +1 -1
- package/dist/components/cg-badge-group/cg-badge-group.d.ts +0 -1
- package/dist/components/cg-badge-group/cg-badge-group.d.ts.map +1 -1
- package/dist/components/cg-badge-group/cg-badge-group.js +31 -29
- package/dist/components/cg-badge-group/cg-badge-group.js.map +1 -1
- package/dist/components/cg-breadcrumbs/cg-breadcrumbs.js +21 -21
- package/dist/components/cg-breadcrumbs/cg-breadcrumbs.js.map +1 -1
- package/dist/components/cg-button/cg-button.d.ts +5 -71
- package/dist/components/cg-button/cg-button.d.ts.map +1 -1
- package/dist/components/cg-button/cg-button.js +63 -172
- package/dist/components/cg-button/cg-button.js.map +1 -1
- package/dist/components/cg-button-group/cg-button-group.d.ts +2 -0
- package/dist/components/cg-button-group/cg-button-group.d.ts.map +1 -1
- package/dist/components/cg-button-group/cg-button-group.js +43 -29
- package/dist/components/cg-button-group/cg-button-group.js.map +1 -1
- package/dist/components/cg-calendar/cg-calendar.d.ts +4 -0
- package/dist/components/cg-calendar/cg-calendar.d.ts.map +1 -1
- package/dist/components/cg-calendar/cg-calendar.js +28 -12
- package/dist/components/cg-calendar/cg-calendar.js.map +1 -1
- package/dist/components/cg-callout/cg-callout.d.ts.map +1 -1
- package/dist/components/cg-callout/cg-callout.js +49 -48
- package/dist/components/cg-callout/cg-callout.js.map +1 -1
- package/dist/components/cg-card/cg-card.d.ts +9 -22
- package/dist/components/cg-card/cg-card.d.ts.map +1 -1
- package/dist/components/cg-card/cg-card.js +28 -56
- package/dist/components/cg-card/cg-card.js.map +1 -1
- package/dist/components/cg-carousel/cg-carousel.d.ts.map +1 -1
- package/dist/components/cg-carousel/cg-carousel.js +19 -13
- package/dist/components/cg-carousel/cg-carousel.js.map +1 -1
- package/dist/components/cg-chart/cg-chart.d.ts.map +1 -1
- package/dist/components/cg-chart/cg-chart.js +63 -58
- package/dist/components/cg-chart/cg-chart.js.map +1 -1
- package/dist/components/cg-checkbox/cg-checkbox.d.ts +0 -6
- package/dist/components/cg-checkbox/cg-checkbox.d.ts.map +1 -1
- package/dist/components/cg-checkbox/cg-checkbox.js +51 -51
- package/dist/components/cg-checkbox/cg-checkbox.js.map +1 -1
- package/dist/components/cg-chip/cg-chip.js +31 -31
- package/dist/components/cg-chip/cg-chip.js.map +1 -1
- package/dist/components/cg-code-block/cg-code-block.d.ts.map +1 -1
- package/dist/components/cg-code-block/cg-code-block.js +36 -34
- package/dist/components/cg-code-block/cg-code-block.js.map +1 -1
- package/dist/components/cg-collapsible/cg-collapsible.d.ts.map +1 -1
- package/dist/components/cg-collapsible/cg-collapsible.js +23 -18
- package/dist/components/cg-collapsible/cg-collapsible.js.map +1 -1
- package/dist/components/cg-color-picker/cg-color-picker.d.ts +3 -0
- package/dist/components/cg-color-picker/cg-color-picker.d.ts.map +1 -1
- package/dist/components/cg-color-picker/cg-color-picker.js +189 -91
- package/dist/components/cg-color-picker/cg-color-picker.js.map +1 -1
- package/dist/components/cg-combobox/cg-combobox.d.ts.map +1 -1
- package/dist/components/cg-combobox/cg-combobox.js +13 -6
- package/dist/components/cg-combobox/cg-combobox.js.map +1 -1
- package/dist/components/cg-command/cg-command.d.ts.map +1 -1
- package/dist/components/cg-command/cg-command.js +52 -45
- package/dist/components/cg-command/cg-command.js.map +1 -1
- package/dist/components/cg-context-menu/cg-context-menu.js +1 -1
- package/dist/components/cg-date-picker/cg-date-picker.d.ts.map +1 -1
- package/dist/components/cg-date-picker/cg-date-picker.js +36 -34
- package/dist/components/cg-date-picker/cg-date-picker.js.map +1 -1
- package/dist/components/cg-date-range-picker/cg-date-range-picker.d.ts +2 -0
- package/dist/components/cg-date-range-picker/cg-date-range-picker.d.ts.map +1 -1
- package/dist/components/cg-date-range-picker/cg-date-range-picker.js +12 -8
- package/dist/components/cg-date-range-picker/cg-date-range-picker.js.map +1 -1
- package/dist/components/cg-date-time-picker/cg-date-time-picker.d.ts.map +1 -1
- package/dist/components/cg-date-time-picker/cg-date-time-picker.js +3 -1
- package/dist/components/cg-date-time-picker/cg-date-time-picker.js.map +1 -1
- package/dist/components/cg-drawer/cg-drawer.js +3 -3
- package/dist/components/cg-drawer/cg-drawer.js.map +1 -1
- package/dist/components/cg-dropdown/cg-dropdown.d.ts.map +1 -1
- package/dist/components/cg-dropdown/cg-dropdown.js +1 -2
- package/dist/components/cg-dropdown/cg-dropdown.js.map +1 -1
- package/dist/components/cg-empty-state/cg-empty-state.d.ts +3 -24
- package/dist/components/cg-empty-state/cg-empty-state.d.ts.map +1 -1
- package/dist/components/cg-empty-state/cg-empty-state.js +51 -74
- package/dist/components/cg-empty-state/cg-empty-state.js.map +1 -1
- package/dist/components/cg-file-input/cg-file-input.d.ts.map +1 -1
- package/dist/components/cg-file-input/cg-file-input.js +9 -10
- package/dist/components/cg-file-input/cg-file-input.js.map +1 -1
- package/dist/components/cg-focus-scope/cg-focus-scope.js +1 -1
- package/dist/components/cg-follow-up/cg-follow-up.d.ts.map +1 -1
- package/dist/components/cg-follow-up/cg-follow-up.js +6 -7
- package/dist/components/cg-follow-up/cg-follow-up.js.map +1 -1
- package/dist/components/cg-form/cg-form.js +17 -17
- package/dist/components/cg-form/cg-form.js.map +1 -1
- package/dist/components/cg-hover-card/cg-hover-card.d.ts +1 -0
- package/dist/components/cg-hover-card/cg-hover-card.d.ts.map +1 -1
- package/dist/components/cg-hover-card/cg-hover-card.js +37 -32
- package/dist/components/cg-hover-card/cg-hover-card.js.map +1 -1
- package/dist/components/cg-icon/cg-icon.d.ts.map +1 -1
- package/dist/components/cg-icon/cg-icon.js +44 -37
- package/dist/components/cg-icon/cg-icon.js.map +1 -1
- package/dist/components/cg-image/cg-image.js +2 -2
- package/dist/components/cg-image/cg-image.js.map +1 -1
- package/dist/components/cg-image-block/cg-image-block.js +3 -3
- package/dist/components/cg-image-block/cg-image-block.js.map +1 -1
- package/dist/components/cg-image-gallery/cg-image-gallery.js +20 -20
- package/dist/components/cg-image-gallery/cg-image-gallery.js.map +1 -1
- package/dist/components/cg-input/cg-input.js +3 -3
- package/dist/components/cg-input/cg-input.js.map +1 -1
- package/dist/components/cg-kbd/cg-kbd.d.ts.map +1 -1
- package/dist/components/cg-kbd/cg-kbd.js +26 -24
- package/dist/components/cg-kbd/cg-kbd.js.map +1 -1
- package/dist/components/cg-label/cg-label.d.ts +4 -1
- package/dist/components/cg-label/cg-label.d.ts.map +1 -1
- package/dist/components/cg-label/cg-label.js +44 -41
- package/dist/components/cg-label/cg-label.js.map +1 -1
- package/dist/components/cg-link/cg-link.js +23 -23
- package/dist/components/cg-link/cg-link.js.map +1 -1
- package/dist/components/cg-list/cg-list.js +5 -5
- package/dist/components/cg-list/cg-list.js.map +1 -1
- package/dist/components/cg-listbox/cg-listbox.d.ts.map +1 -1
- package/dist/components/cg-listbox/cg-listbox.js +46 -40
- package/dist/components/cg-listbox/cg-listbox.js.map +1 -1
- package/dist/components/cg-markdown/cg-markdown.d.ts +2 -0
- package/dist/components/cg-markdown/cg-markdown.d.ts.map +1 -1
- package/dist/components/cg-markdown/cg-markdown.js +171 -121
- package/dist/components/cg-markdown/cg-markdown.js.map +1 -1
- package/dist/components/cg-menubar/cg-menubar.d.ts +6 -0
- package/dist/components/cg-menubar/cg-menubar.d.ts.map +1 -1
- package/dist/components/cg-menubar/cg-menubar.js +59 -47
- package/dist/components/cg-menubar/cg-menubar.js.map +1 -1
- package/dist/components/cg-meter/cg-meter.d.ts.map +1 -1
- package/dist/components/cg-meter/cg-meter.js +76 -76
- package/dist/components/cg-meter/cg-meter.js.map +1 -1
- package/dist/components/cg-metric-card/cg-metric-card.d.ts.map +1 -1
- package/dist/components/cg-metric-card/cg-metric-card.js +65 -68
- package/dist/components/cg-metric-card/cg-metric-card.js.map +1 -1
- package/dist/components/cg-modal/cg-modal.d.ts +3 -0
- package/dist/components/cg-modal/cg-modal.d.ts.map +1 -1
- package/dist/components/cg-modal/cg-modal.js +82 -83
- package/dist/components/cg-modal/cg-modal.js.map +1 -1
- package/dist/components/cg-navbar/cg-navbar.d.ts +1 -1
- package/dist/components/cg-navbar/cg-navbar.d.ts.map +1 -1
- package/dist/components/cg-navbar/cg-navbar.js +64 -55
- package/dist/components/cg-navbar/cg-navbar.js.map +1 -1
- package/dist/components/cg-navigation-menu/cg-navigation-menu.d.ts +3 -0
- package/dist/components/cg-navigation-menu/cg-navigation-menu.d.ts.map +1 -1
- package/dist/components/cg-navigation-menu/cg-navigation-menu.js +38 -26
- package/dist/components/cg-navigation-menu/cg-navigation-menu.js.map +1 -1
- package/dist/components/cg-number-input/cg-number-input.d.ts +1 -0
- package/dist/components/cg-number-input/cg-number-input.d.ts.map +1 -1
- package/dist/components/cg-number-input/cg-number-input.js +90 -77
- package/dist/components/cg-number-input/cg-number-input.js.map +1 -1
- package/dist/components/cg-otp-input/cg-otp-input.d.ts.map +1 -1
- package/dist/components/cg-otp-input/cg-otp-input.js +70 -60
- package/dist/components/cg-otp-input/cg-otp-input.js.map +1 -1
- package/dist/components/cg-pagination/cg-pagination.d.ts +2 -0
- package/dist/components/cg-pagination/cg-pagination.d.ts.map +1 -1
- package/dist/components/cg-pagination/cg-pagination.js +50 -49
- package/dist/components/cg-pagination/cg-pagination.js.map +1 -1
- package/dist/components/cg-password-input/cg-password-input.d.ts.map +1 -1
- package/dist/components/cg-password-input/cg-password-input.js +42 -34
- package/dist/components/cg-password-input/cg-password-input.js.map +1 -1
- package/dist/components/cg-phone-input/cg-phone-input.d.ts.map +1 -1
- package/dist/components/cg-phone-input/cg-phone-input.js +18 -14
- package/dist/components/cg-phone-input/cg-phone-input.js.map +1 -1
- package/dist/components/cg-popover/cg-popover.d.ts +12 -2
- package/dist/components/cg-popover/cg-popover.d.ts.map +1 -1
- package/dist/components/cg-popover/cg-popover.js +90 -63
- package/dist/components/cg-popover/cg-popover.js.map +1 -1
- package/dist/components/cg-portal/cg-portal.d.ts.map +1 -1
- package/dist/components/cg-portal/cg-portal.js +42 -41
- package/dist/components/cg-portal/cg-portal.js.map +1 -1
- package/dist/components/cg-progress-bar/cg-progress-bar.d.ts.map +1 -1
- package/dist/components/cg-progress-bar/cg-progress-bar.js +25 -25
- package/dist/components/cg-progress-bar/cg-progress-bar.js.map +1 -1
- package/dist/components/cg-radio/cg-radio.d.ts +10 -0
- package/dist/components/cg-radio/cg-radio.d.ts.map +1 -1
- package/dist/components/cg-radio/cg-radio.js +59 -48
- package/dist/components/cg-radio/cg-radio.js.map +1 -1
- package/dist/components/cg-radio-group/cg-radio-group.d.ts +6 -0
- package/dist/components/cg-radio-group/cg-radio-group.d.ts.map +1 -1
- package/dist/components/cg-radio-group/cg-radio-group.js +50 -37
- package/dist/components/cg-radio-group/cg-radio-group.js.map +1 -1
- package/dist/components/cg-rating/cg-rating.d.ts.map +1 -1
- package/dist/components/cg-rating/cg-rating.js +56 -54
- package/dist/components/cg-rating/cg-rating.js.map +1 -1
- package/dist/components/cg-resizable/cg-resizable.d.ts +4 -1
- package/dist/components/cg-resizable/cg-resizable.d.ts.map +1 -1
- package/dist/components/cg-resizable/cg-resizable.js +45 -35
- package/dist/components/cg-resizable/cg-resizable.js.map +1 -1
- package/dist/components/cg-scroll-area/cg-scroll-area.d.ts +8 -0
- package/dist/components/cg-scroll-area/cg-scroll-area.d.ts.map +1 -1
- package/dist/components/cg-scroll-area/cg-scroll-area.js +64 -21
- package/dist/components/cg-scroll-area/cg-scroll-area.js.map +1 -1
- package/dist/components/cg-segmented-control/cg-segmented-control.d.ts +4 -0
- package/dist/components/cg-segmented-control/cg-segmented-control.d.ts.map +1 -1
- package/dist/components/cg-segmented-control/cg-segmented-control.js +75 -39
- package/dist/components/cg-segmented-control/cg-segmented-control.js.map +1 -1
- package/dist/components/cg-select/cg-select.d.ts +4 -2
- package/dist/components/cg-select/cg-select.d.ts.map +1 -1
- package/dist/components/cg-select/cg-select.js +96 -58
- package/dist/components/cg-select/cg-select.js.map +1 -1
- package/dist/components/cg-separator/cg-separator.d.ts +1 -2
- package/dist/components/cg-separator/cg-separator.d.ts.map +1 -1
- package/dist/components/cg-separator/cg-separator.js +5 -8
- package/dist/components/cg-separator/cg-separator.js.map +1 -1
- package/dist/components/cg-sheet/cg-sheet.d.ts +4 -0
- package/dist/components/cg-sheet/cg-sheet.d.ts.map +1 -1
- package/dist/components/cg-sheet/cg-sheet.js +80 -43
- package/dist/components/cg-sheet/cg-sheet.js.map +1 -1
- package/dist/components/cg-sidebar/cg-sidebar.d.ts.map +1 -1
- package/dist/components/cg-sidebar/cg-sidebar.js +82 -19
- package/dist/components/cg-sidebar/cg-sidebar.js.map +1 -1
- package/dist/components/cg-skeleton/cg-skeleton.d.ts +7 -1
- package/dist/components/cg-skeleton/cg-skeleton.d.ts.map +1 -1
- package/dist/components/cg-skeleton/cg-skeleton.js +61 -63
- package/dist/components/cg-skeleton/cg-skeleton.js.map +1 -1
- package/dist/components/cg-slider/cg-slider.d.ts.map +1 -1
- package/dist/components/cg-slider/cg-slider.js +80 -73
- package/dist/components/cg-slider/cg-slider.js.map +1 -1
- package/dist/components/cg-spinner/cg-spinner.d.ts.map +1 -1
- package/dist/components/cg-spinner/cg-spinner.js +10 -19
- package/dist/components/cg-spinner/cg-spinner.js.map +1 -1
- package/dist/components/cg-split-button/cg-split-button.d.ts.map +1 -1
- package/dist/components/cg-split-button/cg-split-button.js +64 -50
- package/dist/components/cg-split-button/cg-split-button.js.map +1 -1
- package/dist/components/cg-stack/cg-stack.js +1 -1
- package/dist/components/cg-steps/cg-steps.js +1 -1
- package/dist/components/cg-switch/cg-switch.d.ts +3 -0
- package/dist/components/cg-switch/cg-switch.d.ts.map +1 -1
- package/dist/components/cg-switch/cg-switch.js +39 -47
- package/dist/components/cg-switch/cg-switch.js.map +1 -1
- package/dist/components/cg-table/cg-table.d.ts +0 -7
- package/dist/components/cg-table/cg-table.d.ts.map +1 -1
- package/dist/components/cg-table/cg-table.js +50 -47
- package/dist/components/cg-table/cg-table.js.map +1 -1
- package/dist/components/cg-tabs/cg-tabs.js +1 -1
- package/dist/components/cg-tag-input/cg-tag-input.js +1 -1
- package/dist/components/cg-text/cg-text.js +1 -1
- package/dist/components/cg-textarea/cg-textarea.js +1 -1
- package/dist/components/cg-time-picker/cg-time-picker.js +1 -1
- package/dist/components/cg-toaster/cg-toaster.js +3 -3
- package/dist/components/cg-toaster/cg-toaster.js.map +1 -1
- package/dist/components/cg-toggle/cg-toggle.js +1 -1
- package/dist/components/cg-toggle-group/cg-toggle-group.js +1 -1
- package/dist/components/cg-tree-view/cg-tree-view.js +1 -1
- package/dist/foundation.d.ts +0 -16
- package/dist/foundation.d.ts.map +1 -1
- package/dist/foundation.js +174 -206
- package/dist/foundation.js.map +1 -1
- package/dist/index.d.ts +1 -17
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +100 -132
- package/dist/index.js.map +1 -1
- package/dist/utils/focus-trap.d.ts +19 -2
- package/dist/utils/focus-trap.d.ts.map +1 -1
- package/package.json +6 -810
- package/dist/chunks/focus-trap-BdRNhSPD.js +0 -53
- package/dist/chunks/focus-trap-BdRNhSPD.js.map +0 -1
- package/dist/components/cg-app-shell/cg-app-shell.d.ts +0 -54
- package/dist/components/cg-app-shell/cg-app-shell.d.ts.map +0 -1
- package/dist/components/cg-app-shell/cg-app-shell.js +0 -135
- package/dist/components/cg-app-shell/cg-app-shell.js.map +0 -1
- package/dist/components/cg-auth-shell/cg-auth-shell.d.ts +0 -61
- package/dist/components/cg-auth-shell/cg-auth-shell.d.ts.map +0 -1
- package/dist/components/cg-auth-shell/cg-auth-shell.js +0 -163
- package/dist/components/cg-auth-shell/cg-auth-shell.js.map +0 -1
- package/dist/components/cg-definition-list/cg-definition-list.d.ts +0 -99
- package/dist/components/cg-definition-list/cg-definition-list.d.ts.map +0 -1
- package/dist/components/cg-definition-list/cg-definition-list.js +0 -332
- package/dist/components/cg-definition-list/cg-definition-list.js.map +0 -1
- package/dist/components/cg-draggable/cg-draggable.d.ts +0 -53
- package/dist/components/cg-draggable/cg-draggable.d.ts.map +0 -1
- package/dist/components/cg-draggable/cg-draggable.js +0 -136
- package/dist/components/cg-draggable/cg-draggable.js.map +0 -1
- package/dist/components/cg-droppable/cg-droppable.d.ts +0 -57
- package/dist/components/cg-droppable/cg-droppable.d.ts.map +0 -1
- package/dist/components/cg-droppable/cg-droppable.js +0 -114
- package/dist/components/cg-droppable/cg-droppable.js.map +0 -1
- package/dist/components/cg-filter-bar/cg-filter-bar.d.ts +0 -50
- package/dist/components/cg-filter-bar/cg-filter-bar.d.ts.map +0 -1
- package/dist/components/cg-filter-bar/cg-filter-bar.js +0 -115
- package/dist/components/cg-filter-bar/cg-filter-bar.js.map +0 -1
- package/dist/components/cg-filter-chip/cg-filter-chip.d.ts +0 -55
- package/dist/components/cg-filter-chip/cg-filter-chip.d.ts.map +0 -1
- package/dist/components/cg-filter-chip/cg-filter-chip.js +0 -213
- package/dist/components/cg-filter-chip/cg-filter-chip.js.map +0 -1
- package/dist/components/cg-kanban/cg-kanban.d.ts +0 -44
- package/dist/components/cg-kanban/cg-kanban.d.ts.map +0 -1
- package/dist/components/cg-kanban/cg-kanban.js +0 -86
- package/dist/components/cg-kanban/cg-kanban.js.map +0 -1
- package/dist/components/cg-kanban-column/cg-kanban-column.d.ts +0 -58
- package/dist/components/cg-kanban-column/cg-kanban-column.d.ts.map +0 -1
- package/dist/components/cg-kanban-column/cg-kanban-column.js +0 -144
- package/dist/components/cg-kanban-column/cg-kanban-column.js.map +0 -1
- package/dist/components/cg-mfa-prompt/cg-mfa-prompt.d.ts +0 -77
- package/dist/components/cg-mfa-prompt/cg-mfa-prompt.d.ts.map +0 -1
- package/dist/components/cg-mfa-prompt/cg-mfa-prompt.js +0 -245
- package/dist/components/cg-mfa-prompt/cg-mfa-prompt.js.map +0 -1
- package/dist/components/cg-search-input/cg-search-input.d.ts +0 -62
- package/dist/components/cg-search-input/cg-search-input.d.ts.map +0 -1
- package/dist/components/cg-search-input/cg-search-input.js +0 -106
- package/dist/components/cg-search-input/cg-search-input.js.map +0 -1
- package/dist/components/cg-sortable/cg-sortable.d.ts +0 -72
- package/dist/components/cg-sortable/cg-sortable.d.ts.map +0 -1
- package/dist/components/cg-sortable/cg-sortable.js +0 -177
- package/dist/components/cg-sortable/cg-sortable.js.map +0 -1
- package/dist/components/cg-theme/cg-theme.d.ts +0 -82
- package/dist/components/cg-theme/cg-theme.d.ts.map +0 -1
- package/dist/components/cg-theme/cg-theme.js +0 -91
- package/dist/components/cg-theme/cg-theme.js.map +0 -1
- package/dist/components/cg-theme-editor/cg-theme-editor.d.ts +0 -98
- package/dist/components/cg-theme-editor/cg-theme-editor.d.ts.map +0 -1
- package/dist/components/cg-theme-editor/cg-theme-editor.js +0 -341
- package/dist/components/cg-theme-editor/cg-theme-editor.js.map +0 -1
- package/dist/components/cg-timeline/cg-timeline.d.ts +0 -70
- package/dist/components/cg-timeline/cg-timeline.d.ts.map +0 -1
- package/dist/components/cg-timeline/cg-timeline.js +0 -131
- package/dist/components/cg-timeline/cg-timeline.js.map +0 -1
- package/dist/components/cg-timeline-event/cg-timeline-event.d.ts +0 -59
- package/dist/components/cg-timeline-event/cg-timeline-event.d.ts.map +0 -1
- package/dist/components/cg-timeline-event/cg-timeline-event.js +0 -190
- package/dist/components/cg-timeline-event/cg-timeline-event.js.map +0 -1
- package/dist/utils/drag-manager.d.ts +0 -40
- package/dist/utils/drag-manager.d.ts.map +0 -1
|
@@ -1,91 +1,112 @@
|
|
|
1
|
-
import { css as g, LitElement as
|
|
2
|
-
import { property as
|
|
3
|
-
import { h as f, r as
|
|
4
|
-
import { b
|
|
1
|
+
import { css as g, LitElement as v, nothing as c, html as d } from "lit";
|
|
2
|
+
import { property as i, state as h, query as u, customElement as m } from "lit/decorators.js";
|
|
3
|
+
import { h as f, r as _ } from "../../chunks/premium.css-DHekUEUt.js";
|
|
4
|
+
import { b, a as w } from "../../chunks/floating-DfsaYJnh.js";
|
|
5
5
|
import { b as y } from "../../chunks/outside-click-CP1P1fK3.js";
|
|
6
|
-
import { F as E } from "../../chunks/focus-trap-
|
|
7
|
-
var C = Object.defineProperty, O = Object.getOwnPropertyDescriptor, o = (
|
|
8
|
-
for (var a =
|
|
9
|
-
(
|
|
10
|
-
return
|
|
6
|
+
import { F as E } from "../../chunks/focus-trap-vlQwKK-3.js";
|
|
7
|
+
var C = Object.defineProperty, O = Object.getOwnPropertyDescriptor, o = (e, r, n, s) => {
|
|
8
|
+
for (var a = s > 1 ? void 0 : s ? O(r, n) : r, p = e.length - 1, l; p >= 0; p--)
|
|
9
|
+
(l = e[p]) && (a = (s ? l(r, n, a) : l(a)) || a);
|
|
10
|
+
return s && a && C(r, n, a), a;
|
|
11
11
|
};
|
|
12
|
-
let
|
|
12
|
+
let t = class extends v {
|
|
13
13
|
constructor() {
|
|
14
|
-
super(...arguments), this.open = !1, this.placement = "bottom", this.offset = 8, this.arrow = !0, this.trigger = "click", this.closable = !0, this.size = "md", this.rounded = "md", this._actualSide = "bottom", this._arrowOffset = 0, this._focusTrap = new E(), this._cleanupAutoUpdate = null, this._disposeOutsideClick = null;
|
|
14
|
+
super(...arguments), this.open = !1, this.label = "", this.placement = "bottom", this.offset = 8, this.arrow = !0, this.trigger = "click", this.closable = !0, this.size = "md", this.rounded = "md", this._actualSide = "bottom", this._arrowOffset = 0, this._focusTrap = new E(), this._cleanupAutoUpdate = null, this._disposeOutsideClick = null, this._hoverOpenTimer = 0, this._hoverCloseTimer = 0, this._hoverEscListener = null;
|
|
15
15
|
}
|
|
16
16
|
disconnectedCallback() {
|
|
17
|
-
super.disconnectedCallback(), this._cleanupAutoUpdate?.(), this._disposeOutsideClick?.(), this._disposeOutsideClick = null, this._focusTrap.deactivate();
|
|
17
|
+
super.disconnectedCallback(), this._cleanupAutoUpdate?.(), this._disposeOutsideClick?.(), this._disposeOutsideClick = null, this._focusTrap.deactivate(), clearTimeout(this._hoverOpenTimer), clearTimeout(this._hoverCloseTimer), this._disposeHoverEsc();
|
|
18
18
|
}
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
_disposeHoverEsc() {
|
|
20
|
+
this._hoverEscListener && (document.removeEventListener("keydown", this._hoverEscListener), this._hoverEscListener = null);
|
|
21
|
+
}
|
|
22
|
+
updated(e) {
|
|
23
|
+
e.has("open") && (this._slottedTrigger()?.setAttribute("aria-expanded", String(this.open)), this.open ? this._onOpen() : e.get("open") === !0 && this._onClose());
|
|
24
|
+
}
|
|
25
|
+
_slottedTrigger() {
|
|
26
|
+
return this.shadowRoot?.querySelector("slot:not([name])")?.assignedElements()[0] ?? null;
|
|
27
|
+
}
|
|
28
|
+
/** ARIA popup state lives on the slotted trigger — a role-less wrapper
|
|
29
|
+
* div is invisible to assistive tech. */
|
|
30
|
+
_onTriggerSlotChange() {
|
|
31
|
+
const e = this._slottedTrigger();
|
|
32
|
+
e && (e.setAttribute("aria-haspopup", "dialog"), e.setAttribute("aria-expanded", String(this.open)));
|
|
21
33
|
}
|
|
22
34
|
_onOpen() {
|
|
23
35
|
this.dispatchEvent(new CustomEvent("cg-popover-open", { bubbles: !0, composed: !0 })), requestAnimationFrame(() => {
|
|
24
|
-
!this._triggerEl || !this._popoverEl || (this._cleanupAutoUpdate =
|
|
36
|
+
!this._triggerEl || !this._popoverEl || (this._cleanupAutoUpdate = b(this._triggerEl, this._popoverEl, () => this._updatePosition()));
|
|
25
37
|
}), this.closable && (this._disposeOutsideClick?.(), this._disposeOutsideClick = y(this, () => {
|
|
26
38
|
this.open = !1;
|
|
27
|
-
})), requestAnimationFrame(() => {
|
|
39
|
+
})), this.trigger !== "hover" ? requestAnimationFrame(() => {
|
|
28
40
|
this._popoverEl && this._focusTrap.activate(this._popoverEl, {
|
|
29
41
|
onEscape: this.closable ? () => {
|
|
30
42
|
this.open = !1;
|
|
31
43
|
} : void 0
|
|
32
44
|
});
|
|
33
|
-
})
|
|
45
|
+
}) : this.closable && (this._disposeHoverEsc(), this._hoverEscListener = (e) => {
|
|
46
|
+
e.key === "Escape" && (this.open = !1);
|
|
47
|
+
}, document.addEventListener("keydown", this._hoverEscListener));
|
|
34
48
|
}
|
|
35
49
|
_onClose() {
|
|
36
|
-
this.dispatchEvent(new CustomEvent("cg-popover-close", { bubbles: !0, composed: !0 })), this._cleanupAutoUpdate?.(), this._cleanupAutoUpdate = null, this._disposeOutsideClick?.(), this._disposeOutsideClick = null, this._focusTrap.deactivate();
|
|
50
|
+
this.dispatchEvent(new CustomEvent("cg-popover-close", { bubbles: !0, composed: !0 })), this._cleanupAutoUpdate?.(), this._cleanupAutoUpdate = null, this._disposeOutsideClick?.(), this._disposeOutsideClick = null, this._focusTrap.deactivate(), this._disposeHoverEsc();
|
|
37
51
|
}
|
|
38
52
|
_updatePosition() {
|
|
39
53
|
if (!this._triggerEl || !this._popoverEl) return;
|
|
40
|
-
const
|
|
54
|
+
const e = this._triggerEl.getBoundingClientRect(), r = w(this._triggerEl, this._popoverEl, {
|
|
41
55
|
placement: this.placement,
|
|
42
56
|
offset: this.offset,
|
|
43
57
|
flip: !0,
|
|
44
58
|
shift: !0
|
|
45
59
|
});
|
|
46
60
|
if (this._actualSide = r.placement.split("-")[0], this._actualSide === "top" || this._actualSide === "bottom") {
|
|
47
|
-
const
|
|
48
|
-
this._arrowOffset =
|
|
61
|
+
const s = e.left + e.width / 2;
|
|
62
|
+
this._arrowOffset = s - r.x;
|
|
49
63
|
} else {
|
|
50
|
-
const
|
|
51
|
-
this._arrowOffset =
|
|
64
|
+
const s = e.top + e.height / 2;
|
|
65
|
+
this._arrowOffset = s - r.y;
|
|
52
66
|
}
|
|
53
67
|
}
|
|
54
68
|
_handleTriggerClick() {
|
|
55
69
|
this.trigger === "click" && (this.open = !this.open);
|
|
56
70
|
}
|
|
57
|
-
|
|
58
|
-
this.trigger === "hover" && (this.
|
|
71
|
+
_scheduleOpen() {
|
|
72
|
+
this.trigger === "hover" && (clearTimeout(this._hoverCloseTimer), this._hoverOpenTimer = window.setTimeout(() => {
|
|
73
|
+
this.open = !0;
|
|
74
|
+
}, 80));
|
|
59
75
|
}
|
|
60
|
-
|
|
61
|
-
this.trigger === "hover" && (this.
|
|
76
|
+
_scheduleClose() {
|
|
77
|
+
this.trigger === "hover" && (clearTimeout(this._hoverOpenTimer), this._hoverCloseTimer = window.setTimeout(() => {
|
|
78
|
+
this.open = !1;
|
|
79
|
+
}, 150));
|
|
62
80
|
}
|
|
63
81
|
render() {
|
|
64
82
|
const r = this._actualSide === "top" || this._actualSide === "bottom" ? `left: ${this._arrowOffset}px; margin-left: calc(var(--cg-component-popover-arrow-size) / -2);` : `top: ${this._arrowOffset}px; margin-top: calc(var(--cg-component-popover-arrow-size) / -2);`;
|
|
65
|
-
return
|
|
83
|
+
return d`
|
|
66
84
|
<div
|
|
67
85
|
class="trigger"
|
|
68
86
|
@click=${this._handleTriggerClick}
|
|
69
|
-
@mouseenter=${this.
|
|
70
|
-
@mouseleave=${this.
|
|
71
|
-
|
|
72
|
-
|
|
87
|
+
@mouseenter=${this._scheduleOpen}
|
|
88
|
+
@mouseleave=${this._scheduleClose}
|
|
89
|
+
@focusin=${this._scheduleOpen}
|
|
90
|
+
@focusout=${this._scheduleClose}
|
|
73
91
|
>
|
|
74
|
-
<slot></slot>
|
|
92
|
+
<slot @slotchange=${this._onTriggerSlotChange}></slot>
|
|
75
93
|
</div>
|
|
76
94
|
<div
|
|
77
95
|
class="popover"
|
|
78
96
|
role="dialog"
|
|
79
97
|
aria-modal="false"
|
|
98
|
+
aria-label=${this.label || c}
|
|
80
99
|
data-side=${this._actualSide}
|
|
100
|
+
@mouseenter=${this._scheduleOpen}
|
|
101
|
+
@mouseleave=${this._scheduleClose}
|
|
81
102
|
>
|
|
82
|
-
${this.arrow ?
|
|
103
|
+
${this.arrow ? d`<span class="arrow" data-side=${this._actualSide} style=${r}></span>` : c}
|
|
83
104
|
<slot name="content"></slot>
|
|
84
105
|
</div>
|
|
85
106
|
`;
|
|
86
107
|
}
|
|
87
108
|
};
|
|
88
|
-
|
|
109
|
+
t.styles = [f, _, g`
|
|
89
110
|
:host {
|
|
90
111
|
display: inline-block;
|
|
91
112
|
position: relative;
|
|
@@ -108,15 +129,18 @@ e.styles = [f, b, g`
|
|
|
108
129
|
color: var(--cg-color-surface-container-text);
|
|
109
130
|
box-shadow: var(--cg-elevation-3);
|
|
110
131
|
opacity: 0;
|
|
132
|
+
visibility: hidden;
|
|
111
133
|
transform: scale(0.96) translateY(var(--cg-spacing-4));
|
|
112
134
|
pointer-events: none;
|
|
113
135
|
transition:
|
|
114
136
|
opacity var(--cg-transition-duration-fast) var(--cg-transition-easing-default),
|
|
115
|
-
transform var(--cg-transition-duration-default) var(--cg-transition-easing-ease-out)
|
|
137
|
+
transform var(--cg-transition-duration-default) var(--cg-transition-easing-ease-out),
|
|
138
|
+
visibility var(--cg-transition-duration-fast) var(--cg-transition-easing-default);
|
|
116
139
|
}
|
|
117
140
|
|
|
118
141
|
:host([open]) .popover {
|
|
119
142
|
opacity: 1;
|
|
143
|
+
visibility: visible;
|
|
120
144
|
transform: scale(1) translateY(0);
|
|
121
145
|
pointer-events: auto;
|
|
122
146
|
}
|
|
@@ -171,45 +195,48 @@ e.styles = [f, b, g`
|
|
|
171
195
|
}
|
|
172
196
|
`];
|
|
173
197
|
o([
|
|
174
|
-
|
|
175
|
-
],
|
|
198
|
+
i({ type: Boolean, reflect: !0 })
|
|
199
|
+
], t.prototype, "open", 2);
|
|
200
|
+
o([
|
|
201
|
+
i()
|
|
202
|
+
], t.prototype, "label", 2);
|
|
176
203
|
o([
|
|
177
|
-
|
|
178
|
-
],
|
|
204
|
+
i()
|
|
205
|
+
], t.prototype, "placement", 2);
|
|
179
206
|
o([
|
|
180
|
-
|
|
181
|
-
],
|
|
207
|
+
i({ type: Number })
|
|
208
|
+
], t.prototype, "offset", 2);
|
|
182
209
|
o([
|
|
183
|
-
|
|
184
|
-
],
|
|
210
|
+
i({ type: Boolean })
|
|
211
|
+
], t.prototype, "arrow", 2);
|
|
185
212
|
o([
|
|
186
|
-
|
|
187
|
-
],
|
|
213
|
+
i()
|
|
214
|
+
], t.prototype, "trigger", 2);
|
|
188
215
|
o([
|
|
189
|
-
|
|
190
|
-
],
|
|
216
|
+
i({ type: Boolean })
|
|
217
|
+
], t.prototype, "closable", 2);
|
|
191
218
|
o([
|
|
192
|
-
|
|
193
|
-
],
|
|
219
|
+
i({ reflect: !0 })
|
|
220
|
+
], t.prototype, "size", 2);
|
|
194
221
|
o([
|
|
195
|
-
|
|
196
|
-
],
|
|
222
|
+
i({ reflect: !0 })
|
|
223
|
+
], t.prototype, "rounded", 2);
|
|
197
224
|
o([
|
|
198
|
-
|
|
199
|
-
],
|
|
225
|
+
h()
|
|
226
|
+
], t.prototype, "_actualSide", 2);
|
|
200
227
|
o([
|
|
201
|
-
|
|
202
|
-
],
|
|
228
|
+
h()
|
|
229
|
+
], t.prototype, "_arrowOffset", 2);
|
|
203
230
|
o([
|
|
204
|
-
|
|
205
|
-
],
|
|
231
|
+
u(".popover")
|
|
232
|
+
], t.prototype, "_popoverEl", 2);
|
|
206
233
|
o([
|
|
207
|
-
|
|
208
|
-
],
|
|
209
|
-
|
|
234
|
+
u(".trigger")
|
|
235
|
+
], t.prototype, "_triggerEl", 2);
|
|
236
|
+
t = o([
|
|
210
237
|
m("cg-popover")
|
|
211
|
-
],
|
|
238
|
+
], t);
|
|
212
239
|
export {
|
|
213
|
-
|
|
240
|
+
t as CgPopover
|
|
214
241
|
};
|
|
215
242
|
//# sourceMappingURL=cg-popover.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cg-popover.js","sources":["../../../src/components/cg-popover/cg-popover.ts"],"sourcesContent":["import { LitElement, html, css, nothing } from 'lit';\nimport { customElement, property, state, query } from 'lit/decorators.js';\nimport { hostBlock, reducedMotion } from '../../styles/index.js';\nimport { applyFloatingPosition, autoUpdate, type Placement } from '../../utils/floating.js';\nimport { bindOutsideClick } from '../../utils/outside-click.js';\nimport { FocusTrap } from '../../utils/focus-trap.js';\n\n/**\n * @element cg-popover\n * Floating content container with click/hover triggers, smart placement, and focus management.\n *\n * @example\n * ```html\n * <cg-popover placement=\"bottom-start\" trigger=\"click\">\n * <cg-button>Filters</cg-button>\n * <div slot=\"content\">Filter panel content</div>\n * </cg-popover>\n * ```\n *\n * @slot - Trigger element\n * @slot content - Popover content\n *\n * @fires {CustomEvent} cg-popover-open - When the popover opens\n * @fires {CustomEvent} cg-popover-close - When the popover closes\n */\n@customElement('cg-popover')\nexport class CgPopover extends LitElement {\n static override styles = [hostBlock, reducedMotion, css`\n :host {\n display: inline-block;\n position: relative;\n }\n\n .trigger {\n display: inline-flex;\n cursor: pointer;\n }\n\n .popover {\n position: fixed;\n z-index: var(--cg-z-index-500);\n min-width: var(--cg-spacing-160);\n max-width: var(--cg-component-popover-max-width);\n padding: var(--cg-component-popover-padding);\n background: var(--cg-color-modal-container-background);\n border: var(--cg-border-width-50) solid var(--cg-color-modal-container-border);\n border-radius: var(--cg-component-popover-radius);\n color: var(--cg-color-surface-container-text);\n box-shadow: var(--cg-elevation-3);\n opacity: 0;\n transform: scale(0.96) translateY(var(--cg-spacing-4));\n pointer-events: none;\n transition:\n opacity var(--cg-transition-duration-fast) var(--cg-transition-easing-default),\n transform var(--cg-transition-duration-default) var(--cg-transition-easing-ease-out);\n }\n\n :host([open]) .popover {\n opacity: 1;\n transform: scale(1) translateY(0);\n pointer-events: auto;\n }\n\n /* Transform origin based on placement side */\n .popover[data-side=\"top\"] { transform-origin: bottom; }\n .popover[data-side=\"bottom\"] { transform-origin: top; }\n .popover[data-side=\"left\"] { transform-origin: right; }\n .popover[data-side=\"right\"] { transform-origin: left; }\n\n /* Size variants */\n :host([size=\"sm\"]) .popover { max-width: var(--cg-spacing-256); }\n :host([size=\"md\"]) .popover { max-width: var(--cg-component-popover-max-width); }\n :host([size=\"lg\"]) .popover { max-width: var(--cg-spacing-480); }\n\n /* Rounded variants */\n :host([rounded=\"none\"]) .popover { border-radius: var(--cg-border-radius-none); }\n :host([rounded=\"sm\"]) .popover { border-radius: var(--cg-border-radius-50); }\n :host([rounded=\"md\"]) .popover { border-radius: var(--cg-border-radius-100); }\n :host([rounded=\"lg\"]) .popover { border-radius: var(--cg-border-radius-150); }\n :host([rounded=\"full\"]) .popover { border-radius: var(--cg-border-radius-full); }\n\n /* Arrow */\n .arrow {\n position: absolute;\n width: var(--cg-component-popover-arrow-size);\n height: var(--cg-component-popover-arrow-size);\n background: var(--cg-color-modal-container-background);\n border: var(--cg-border-width-50) solid var(--cg-color-modal-container-border);\n transform: rotate(45deg);\n pointer-events: none;\n }\n .arrow[data-side=\"top\"] {\n bottom: calc(var(--cg-component-popover-arrow-size) / -2 - var(--cg-border-width-50));\n border-top: none;\n border-left: none;\n }\n .arrow[data-side=\"bottom\"] {\n top: calc(var(--cg-component-popover-arrow-size) / -2 - var(--cg-border-width-50));\n border-bottom: none;\n border-right: none;\n }\n .arrow[data-side=\"left\"] {\n right: calc(var(--cg-component-popover-arrow-size) / -2 - var(--cg-border-width-50));\n border-left: none;\n border-bottom: none;\n }\n .arrow[data-side=\"right\"] {\n left: calc(var(--cg-component-popover-arrow-size) / -2 - var(--cg-border-width-50));\n border-right: none;\n border-top: none;\n }\n `];\n\n @property({ type: Boolean, reflect: true }) open = false;\n @property() placement: Placement = 'bottom';\n @property({ type: Number }) offset = 8;\n @property({ type: Boolean }) arrow = true;\n @property() trigger: 'click' | 'hover' | 'manual' = 'click';\n @property({ type: Boolean }) closable = true;\n @property({ reflect: true }) size: 'sm' | 'md' | 'lg' = 'md';\n @property({ reflect: true }) rounded: 'none' | 'sm' | 'md' | 'lg' | 'full' = 'md';\n\n @state() private _actualSide: 'top' | 'bottom' | 'left' | 'right' = 'bottom';\n @state() private _arrowOffset = 0;\n\n @query('.popover') private _popoverEl!: HTMLElement;\n @query('.trigger') private _triggerEl!: HTMLElement;\n\n private _focusTrap = new FocusTrap();\n private _cleanupAutoUpdate: (() => void) | null = null;\n private _disposeOutsideClick: (() => void) | null = null;\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this._cleanupAutoUpdate?.();\n this._disposeOutsideClick?.();\n this._disposeOutsideClick = null;\n this._focusTrap.deactivate();\n }\n\n override updated(changed: Map<string, unknown>): void {\n if (changed.has('open')) {\n if (this.open) this._onOpen();\n else this._onClose();\n }\n }\n\n private _onOpen(): void {\n this.dispatchEvent(new CustomEvent('cg-popover-open', { bubbles: true, composed: true }));\n\n // Start auto-positioning\n requestAnimationFrame(() => {\n if (!this._triggerEl || !this._popoverEl) return;\n this._cleanupAutoUpdate = autoUpdate(this._triggerEl, this._popoverEl, () => this._updatePosition());\n });\n\n // Outside click to close\n if (this.closable) {\n this._disposeOutsideClick?.();\n this._disposeOutsideClick = bindOutsideClick(this, () => { this.open = false; });\n }\n\n // Focus trap\n requestAnimationFrame(() => {\n if (this._popoverEl) {\n this._focusTrap.activate(this._popoverEl, {\n onEscape: this.closable ? () => { this.open = false; } : undefined,\n });\n }\n });\n }\n\n private _onClose(): void {\n this.dispatchEvent(new CustomEvent('cg-popover-close', { bubbles: true, composed: true }));\n this._cleanupAutoUpdate?.();\n this._cleanupAutoUpdate = null;\n this._disposeOutsideClick?.();\n this._disposeOutsideClick = null;\n this._focusTrap.deactivate();\n }\n\n private _updatePosition(): void {\n if (!this._triggerEl || !this._popoverEl) return;\n const triggerRect = this._triggerEl.getBoundingClientRect();\n const result = applyFloatingPosition(this._triggerEl, this._popoverEl, {\n placement: this.placement, offset: this.offset, flip: true, shift: true,\n });\n this._actualSide = result.placement.split('-')[0] as 'top' | 'bottom' | 'left' | 'right';\n\n // Compute arrow offset\n const isVertical = this._actualSide === 'top' || this._actualSide === 'bottom';\n if (isVertical) {\n const triggerCenter = triggerRect.left + triggerRect.width / 2;\n this._arrowOffset = triggerCenter - result.x;\n } else {\n const triggerCenter = triggerRect.top + triggerRect.height / 2;\n this._arrowOffset = triggerCenter - result.y;\n }\n }\n\n private _handleTriggerClick(): void {\n if (this.trigger !== 'click') return;\n this.open = !this.open;\n }\n\n private _handleTriggerMouseEnter(): void {\n if (this.trigger !== 'hover') return;\n this.open = true;\n }\n\n private _handleTriggerMouseLeave(): void {\n if (this.trigger !== 'hover') return;\n this.open = false;\n }\n\n override render() {\n const isVertical = this._actualSide === 'top' || this._actualSide === 'bottom';\n const arrowStyle = isVertical\n ? `left: ${this._arrowOffset}px; margin-left: calc(var(--cg-component-popover-arrow-size) / -2);`\n : `top: ${this._arrowOffset}px; margin-top: calc(var(--cg-component-popover-arrow-size) / -2);`;\n\n return html`\n <div\n class=\"trigger\"\n @click=${this._handleTriggerClick}\n @mouseenter=${this._handleTriggerMouseEnter}\n @mouseleave=${this._handleTriggerMouseLeave}\n aria-haspopup=\"dialog\"\n aria-expanded=${this.open ? 'true' : 'false'}\n >\n <slot></slot>\n </div>\n <div\n class=\"popover\"\n role=\"dialog\"\n aria-modal=\"false\"\n data-side=${this._actualSide}\n >\n ${this.arrow ? html`<span class=\"arrow\" data-side=${this._actualSide} style=${arrowStyle}></span>` : nothing}\n <slot name=\"content\"></slot>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'cg-popover': CgPopover;\n }\n}\n"],"names":["CgPopover","LitElement","FocusTrap","changed","autoUpdate","bindOutsideClick","triggerRect","result","applyFloatingPosition","triggerCenter","arrowStyle","html","nothing","hostBlock","reducedMotion","css","__decorateClass","property","state","query","customElement"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cg-popover.js","sources":["../../../src/components/cg-popover/cg-popover.ts"],"sourcesContent":["import { LitElement, html, css, nothing } from 'lit';\nimport { customElement, property, state, query } from 'lit/decorators.js';\nimport { hostBlock, reducedMotion } from '../../styles/index.js';\nimport { applyFloatingPosition, autoUpdate, type Placement } from '../../utils/floating.js';\nimport { bindOutsideClick } from '../../utils/outside-click.js';\nimport { FocusTrap } from '../../utils/focus-trap.js';\n\n/**\n * @element cg-popover\n * Floating content container with click/hover triggers, smart placement, and focus management.\n *\n * @example\n * ```html\n * <cg-popover placement=\"bottom-start\" trigger=\"click\">\n * <cg-button>Filters</cg-button>\n * <div slot=\"content\">Filter panel content</div>\n * </cg-popover>\n * ```\n *\n * @slot - Trigger element\n * @slot content - Popover content\n *\n * @fires {CustomEvent} cg-popover-open - When the popover opens\n * @fires {CustomEvent} cg-popover-close - When the popover closes\n */\n@customElement('cg-popover')\nexport class CgPopover extends LitElement {\n static override styles = [hostBlock, reducedMotion, css`\n :host {\n display: inline-block;\n position: relative;\n }\n\n .trigger {\n display: inline-flex;\n cursor: pointer;\n }\n\n .popover {\n position: fixed;\n z-index: var(--cg-z-index-500);\n min-width: var(--cg-spacing-160);\n max-width: var(--cg-component-popover-max-width);\n padding: var(--cg-component-popover-padding);\n background: var(--cg-color-modal-container-background);\n border: var(--cg-border-width-50) solid var(--cg-color-modal-container-border);\n border-radius: var(--cg-component-popover-radius);\n color: var(--cg-color-surface-container-text);\n box-shadow: var(--cg-elevation-3);\n opacity: 0;\n visibility: hidden;\n transform: scale(0.96) translateY(var(--cg-spacing-4));\n pointer-events: none;\n transition:\n opacity var(--cg-transition-duration-fast) var(--cg-transition-easing-default),\n transform var(--cg-transition-duration-default) var(--cg-transition-easing-ease-out),\n visibility var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n\n :host([open]) .popover {\n opacity: 1;\n visibility: visible;\n transform: scale(1) translateY(0);\n pointer-events: auto;\n }\n\n /* Transform origin based on placement side */\n .popover[data-side=\"top\"] { transform-origin: bottom; }\n .popover[data-side=\"bottom\"] { transform-origin: top; }\n .popover[data-side=\"left\"] { transform-origin: right; }\n .popover[data-side=\"right\"] { transform-origin: left; }\n\n /* Size variants */\n :host([size=\"sm\"]) .popover { max-width: var(--cg-spacing-256); }\n :host([size=\"md\"]) .popover { max-width: var(--cg-component-popover-max-width); }\n :host([size=\"lg\"]) .popover { max-width: var(--cg-spacing-480); }\n\n /* Rounded variants */\n :host([rounded=\"none\"]) .popover { border-radius: var(--cg-border-radius-none); }\n :host([rounded=\"sm\"]) .popover { border-radius: var(--cg-border-radius-50); }\n :host([rounded=\"md\"]) .popover { border-radius: var(--cg-border-radius-100); }\n :host([rounded=\"lg\"]) .popover { border-radius: var(--cg-border-radius-150); }\n :host([rounded=\"full\"]) .popover { border-radius: var(--cg-border-radius-full); }\n\n /* Arrow */\n .arrow {\n position: absolute;\n width: var(--cg-component-popover-arrow-size);\n height: var(--cg-component-popover-arrow-size);\n background: var(--cg-color-modal-container-background);\n border: var(--cg-border-width-50) solid var(--cg-color-modal-container-border);\n transform: rotate(45deg);\n pointer-events: none;\n }\n .arrow[data-side=\"top\"] {\n bottom: calc(var(--cg-component-popover-arrow-size) / -2 - var(--cg-border-width-50));\n border-top: none;\n border-left: none;\n }\n .arrow[data-side=\"bottom\"] {\n top: calc(var(--cg-component-popover-arrow-size) / -2 - var(--cg-border-width-50));\n border-bottom: none;\n border-right: none;\n }\n .arrow[data-side=\"left\"] {\n right: calc(var(--cg-component-popover-arrow-size) / -2 - var(--cg-border-width-50));\n border-left: none;\n border-bottom: none;\n }\n .arrow[data-side=\"right\"] {\n left: calc(var(--cg-component-popover-arrow-size) / -2 - var(--cg-border-width-50));\n border-right: none;\n border-top: none;\n }\n `];\n\n @property({ type: Boolean, reflect: true }) open = false;\n /** Accessible name for the popover dialog (required for WCAG 4.1.2). */\n @property() label = '';\n @property() placement: Placement = 'bottom';\n @property({ type: Number }) offset = 8;\n @property({ type: Boolean }) arrow = true;\n @property() trigger: 'click' | 'hover' | 'manual' = 'click';\n @property({ type: Boolean }) closable = true;\n @property({ reflect: true }) size: 'sm' | 'md' | 'lg' = 'md';\n @property({ reflect: true }) rounded: 'none' | 'sm' | 'md' | 'lg' | 'full' = 'md';\n\n @state() private _actualSide: 'top' | 'bottom' | 'left' | 'right' = 'bottom';\n @state() private _arrowOffset = 0;\n\n @query('.popover') private _popoverEl!: HTMLElement;\n @query('.trigger') private _triggerEl!: HTMLElement;\n\n private _focusTrap = new FocusTrap();\n private _cleanupAutoUpdate: (() => void) | null = null;\n private _disposeOutsideClick: (() => void) | null = null;\n private _hoverOpenTimer = 0;\n private _hoverCloseTimer = 0;\n private _hoverEscListener: ((e: KeyboardEvent) => void) | null = null;\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this._cleanupAutoUpdate?.();\n this._disposeOutsideClick?.();\n this._disposeOutsideClick = null;\n this._focusTrap.deactivate();\n clearTimeout(this._hoverOpenTimer);\n clearTimeout(this._hoverCloseTimer);\n this._disposeHoverEsc();\n }\n\n private _disposeHoverEsc(): void {\n if (this._hoverEscListener) {\n document.removeEventListener('keydown', this._hoverEscListener);\n this._hoverEscListener = null;\n }\n }\n\n override updated(changed: Map<string, unknown>): void {\n if (changed.has('open')) {\n this._slottedTrigger()?.setAttribute('aria-expanded', String(this.open));\n if (this.open) this._onOpen();\n else if (changed.get('open') === true) this._onClose();\n }\n }\n\n private _slottedTrigger(): Element | null {\n const slot = this.shadowRoot?.querySelector<HTMLSlotElement>('slot:not([name])');\n return slot?.assignedElements()[0] ?? null;\n }\n\n /** ARIA popup state lives on the slotted trigger — a role-less wrapper\n * div is invisible to assistive tech. */\n private _onTriggerSlotChange(): void {\n const el = this._slottedTrigger();\n if (el) {\n el.setAttribute('aria-haspopup', 'dialog');\n el.setAttribute('aria-expanded', String(this.open));\n }\n }\n\n private _onOpen(): void {\n this.dispatchEvent(new CustomEvent('cg-popover-open', { bubbles: true, composed: true }));\n\n // Start auto-positioning\n requestAnimationFrame(() => {\n if (!this._triggerEl || !this._popoverEl) return;\n this._cleanupAutoUpdate = autoUpdate(this._triggerEl, this._popoverEl, () => this._updatePosition());\n });\n\n // Outside click to close\n if (this.closable) {\n this._disposeOutsideClick?.();\n this._disposeOutsideClick = bindOutsideClick(this, () => { this.open = false; });\n }\n\n // Focus trap — but never in hover mode: activate() steals keyboard focus\n // on mere mouseover and deactivate() yanks it back on mouseleave.\n if (this.trigger !== 'hover') {\n requestAnimationFrame(() => {\n if (this._popoverEl) {\n this._focusTrap.activate(this._popoverEl, {\n onEscape: this.closable ? () => { this.open = false; } : undefined,\n });\n }\n });\n } else if (this.closable) {\n // WCAG 1.4.13: hover content must be dismissable without pointer moves.\n this._disposeHoverEsc();\n this._hoverEscListener = (e: KeyboardEvent) => { if (e.key === 'Escape') this.open = false; };\n document.addEventListener('keydown', this._hoverEscListener);\n }\n }\n\n private _onClose(): void {\n this.dispatchEvent(new CustomEvent('cg-popover-close', { bubbles: true, composed: true }));\n this._cleanupAutoUpdate?.();\n this._cleanupAutoUpdate = null;\n this._disposeOutsideClick?.();\n this._disposeOutsideClick = null;\n this._focusTrap.deactivate();\n this._disposeHoverEsc();\n }\n\n private _updatePosition(): void {\n if (!this._triggerEl || !this._popoverEl) return;\n const triggerRect = this._triggerEl.getBoundingClientRect();\n const result = applyFloatingPosition(this._triggerEl, this._popoverEl, {\n placement: this.placement, offset: this.offset, flip: true, shift: true,\n });\n this._actualSide = result.placement.split('-')[0] as 'top' | 'bottom' | 'left' | 'right';\n\n // Compute arrow offset\n const isVertical = this._actualSide === 'top' || this._actualSide === 'bottom';\n if (isVertical) {\n const triggerCenter = triggerRect.left + triggerRect.width / 2;\n this._arrowOffset = triggerCenter - result.x;\n } else {\n const triggerCenter = triggerRect.top + triggerRect.height / 2;\n this._arrowOffset = triggerCenter - result.y;\n }\n }\n\n private _handleTriggerClick(): void {\n if (this.trigger !== 'click') return;\n this.open = !this.open;\n }\n\n private _scheduleOpen(): void {\n if (this.trigger !== 'hover') return;\n clearTimeout(this._hoverCloseTimer);\n this._hoverOpenTimer = window.setTimeout(() => { this.open = true; }, 80);\n }\n\n private _scheduleClose(): void {\n if (this.trigger !== 'hover') return;\n clearTimeout(this._hoverOpenTimer);\n // Delay so the pointer can cross the gap into the popover (WCAG 1.4.13)\n this._hoverCloseTimer = window.setTimeout(() => { this.open = false; }, 150);\n }\n\n override render() {\n const isVertical = this._actualSide === 'top' || this._actualSide === 'bottom';\n const arrowStyle = isVertical\n ? `left: ${this._arrowOffset}px; margin-left: calc(var(--cg-component-popover-arrow-size) / -2);`\n : `top: ${this._arrowOffset}px; margin-top: calc(var(--cg-component-popover-arrow-size) / -2);`;\n\n return html`\n <div\n class=\"trigger\"\n @click=${this._handleTriggerClick}\n @mouseenter=${this._scheduleOpen}\n @mouseleave=${this._scheduleClose}\n @focusin=${this._scheduleOpen}\n @focusout=${this._scheduleClose}\n >\n <slot @slotchange=${this._onTriggerSlotChange}></slot>\n </div>\n <div\n class=\"popover\"\n role=\"dialog\"\n aria-modal=\"false\"\n aria-label=${this.label || nothing}\n data-side=${this._actualSide}\n @mouseenter=${this._scheduleOpen}\n @mouseleave=${this._scheduleClose}\n >\n ${this.arrow ? html`<span class=\"arrow\" data-side=${this._actualSide} style=${arrowStyle}></span>` : nothing}\n <slot name=\"content\"></slot>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'cg-popover': CgPopover;\n }\n}\n"],"names":["CgPopover","LitElement","FocusTrap","changed","el","autoUpdate","bindOutsideClick","triggerRect","result","applyFloatingPosition","triggerCenter","arrowStyle","html","nothing","hostBlock","reducedMotion","css","__decorateClass","property","state","query","customElement"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cg-portal.d.ts","sourceRoot":"","sources":["../../../src/components/cg-portal/cg-portal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAG5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AACH,qBACa,QAAS,SAAQ,UAAU;IACtC,OAAgB,MAAM,0BAEpB;IAEU,MAAM,EAAE,MAAM,GAAG,WAAW,CAAM;IACjB,QAAQ,UAAS;IAE9C,OAAO,CAAC,UAAU,CAA4B;IAC9C,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,SAAS,CAAiC;IAEzC,iBAAiB,IAAI,IAAI;IAMzB,oBAAoB,IAAI,IAAI;IAK5B,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAUrD,OAAO,CAAC,cAAc;IAqBtB,OAAO,CAAC,MAAM;
|
|
1
|
+
{"version":3,"file":"cg-portal.d.ts","sourceRoot":"","sources":["../../../src/components/cg-portal/cg-portal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAG5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AACH,qBACa,QAAS,SAAQ,UAAU;IACtC,OAAgB,MAAM,0BAEpB;IAEU,MAAM,EAAE,MAAM,GAAG,WAAW,CAAM;IACjB,QAAQ,UAAS;IAE9C,OAAO,CAAC,UAAU,CAA4B;IAC9C,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,SAAS,CAAiC;IAEzC,iBAAiB,IAAI,IAAI;IAMzB,oBAAoB,IAAI,IAAI;IAK5B,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAUrD,OAAO,CAAC,cAAc;IAqBtB,OAAO,CAAC,MAAM;IAwCd,OAAO,CAAC,QAAQ;IA2BP,MAAM;CAGhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,WAAW,EAAE,QAAQ,CAAC;KACvB;CACF"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { css as
|
|
1
|
+
import { css as h, LitElement as d, html as u } from "lit";
|
|
2
2
|
import { property as l, customElement as p } from "lit/decorators.js";
|
|
3
|
-
var m = Object.defineProperty, _ = Object.getOwnPropertyDescriptor,
|
|
4
|
-
for (var
|
|
5
|
-
(
|
|
6
|
-
return
|
|
3
|
+
var m = Object.defineProperty, _ = Object.getOwnPropertyDescriptor, a = (t, e, o, n) => {
|
|
4
|
+
for (var s = n > 1 ? void 0 : n ? _(e, o) : e, i = t.length - 1, c; i >= 0; i--)
|
|
5
|
+
(c = t[i]) && (s = (n ? c(e, o, s) : c(s)) || s);
|
|
6
|
+
return n && s && m(e, o, s), s;
|
|
7
7
|
};
|
|
8
|
-
let
|
|
8
|
+
let r = class extends d {
|
|
9
9
|
constructor() {
|
|
10
10
|
super(...arguments), this.target = "", this.disabled = !1, this._container = null, this._moved = [], this._observer = null;
|
|
11
11
|
}
|
|
@@ -15,45 +15,46 @@ let s = class extends h {
|
|
|
15
15
|
disconnectedCallback() {
|
|
16
16
|
super.disconnectedCallback(), this._unmount();
|
|
17
17
|
}
|
|
18
|
-
updated(
|
|
19
|
-
!
|
|
18
|
+
updated(t) {
|
|
19
|
+
!t.has("target") && !t.has("disabled") || this._resolveTarget() === this._container || (this._unmount(), this._mount());
|
|
20
20
|
}
|
|
21
21
|
_resolveTarget() {
|
|
22
22
|
if (this.disabled) return this;
|
|
23
|
-
const
|
|
24
|
-
if (
|
|
25
|
-
if (typeof
|
|
26
|
-
const
|
|
27
|
-
if (
|
|
23
|
+
const t = this.target;
|
|
24
|
+
if (t instanceof HTMLElement) return t;
|
|
25
|
+
if (typeof t == "string" && t) {
|
|
26
|
+
const e = document.querySelector(t);
|
|
27
|
+
if (e instanceof HTMLElement) return e;
|
|
28
28
|
(typeof process > "u" || process.env.NODE_ENV !== "production") && console.warn(
|
|
29
|
-
`[cg-portal] target selector "${
|
|
29
|
+
`[cg-portal] target selector "${t}" did not match any element. Falling back to document.body. (querySelector can't pierce shadow roots — pass an HTMLElement reference via the property if needed.)`
|
|
30
30
|
);
|
|
31
31
|
}
|
|
32
32
|
return document.body;
|
|
33
33
|
}
|
|
34
34
|
_mount() {
|
|
35
|
-
if (this.isConnected
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
this.
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
}
|
|
49
|
-
}
|
|
35
|
+
if (this._observer || !this.isConnected || (this._container = this._resolveTarget(), this._container === this)) return;
|
|
36
|
+
this._moved = Array.from(this.childNodes);
|
|
37
|
+
const t = document.activeElement, e = t !== null && this._moved.some((o) => o === t || o.contains(t));
|
|
38
|
+
for (const o of this._moved)
|
|
39
|
+
this._container.appendChild(o);
|
|
40
|
+
e && t.focus(), this._observer = new MutationObserver((o) => {
|
|
41
|
+
for (const n of o)
|
|
42
|
+
n.addedNodes.forEach((s) => {
|
|
43
|
+
this._container && s.parentNode === this && (this._container.appendChild(s), this._moved.push(s));
|
|
44
|
+
});
|
|
45
|
+
}), this._observer.observe(this, { childList: !0 }), this.dispatchEvent(new CustomEvent("cg-portal-mount", {
|
|
46
|
+
bubbles: !0,
|
|
47
|
+
composed: !0,
|
|
48
|
+
detail: { container: this._container }
|
|
49
|
+
}));
|
|
50
50
|
}
|
|
51
51
|
_unmount() {
|
|
52
|
-
const
|
|
52
|
+
const t = this._container && this._container !== this;
|
|
53
53
|
this._observer?.disconnect(), this._observer = null;
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
54
|
+
const e = document.activeElement, o = e !== null && this._moved.some((n) => n === e || n.contains(e));
|
|
55
|
+
for (const n of this._moved)
|
|
56
|
+
n.parentNode === this._container && this.appendChild(n);
|
|
57
|
+
o && e.focus(), this._moved = [], this._container = null, t && this.dispatchEvent(new CustomEvent("cg-portal-unmount", {
|
|
57
58
|
bubbles: !0,
|
|
58
59
|
composed: !0
|
|
59
60
|
}));
|
|
@@ -62,19 +63,19 @@ let s = class extends h {
|
|
|
62
63
|
return u`<slot></slot>`;
|
|
63
64
|
}
|
|
64
65
|
};
|
|
65
|
-
|
|
66
|
+
r.styles = h`
|
|
66
67
|
:host { display: contents; }
|
|
67
68
|
`;
|
|
68
|
-
|
|
69
|
+
a([
|
|
69
70
|
l()
|
|
70
|
-
],
|
|
71
|
-
|
|
71
|
+
], r.prototype, "target", 2);
|
|
72
|
+
a([
|
|
72
73
|
l({ type: Boolean })
|
|
73
|
-
],
|
|
74
|
-
|
|
74
|
+
], r.prototype, "disabled", 2);
|
|
75
|
+
r = a([
|
|
75
76
|
p("cg-portal")
|
|
76
|
-
],
|
|
77
|
+
], r);
|
|
77
78
|
export {
|
|
78
|
-
|
|
79
|
+
r as CgPortal
|
|
79
80
|
};
|
|
80
81
|
//# sourceMappingURL=cg-portal.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cg-portal.js","sources":["../../../src/components/cg-portal/cg-portal.ts"],"sourcesContent":["import { LitElement, html, css } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\n\n/**\n * @element cg-portal\n * Teleports its slotted children into a different DOM location (default:\n * `document.body`). Useful for popovers, modals, tooltips, or anything that\n * needs to escape a clipping ancestor / stacking context.\n *\n * **Style scope caveat:** teleported children leave the consumer's scoped-CSS\n * context. They inherit only global styles + any styles applied at the new\n * location. Wrap them in your own design-token surface (`cg-card`, etc.) if\n * you need consistent chrome.\n *\n * **Shadow-root target limitation:** when `target` is a CSS selector string,\n * resolution uses `document.querySelector` — which cannot pierce shadow\n * roots. To target an element inside a shadow root, pass it directly via the\n * property: `el.target = shadowRootEl.querySelector('#mount')`.\n *\n * **Missing-target behavior:** if a string `target` doesn't match any element\n * at mount time, the component falls back to `document.body` and emits a\n * `console.warn` in development (Vite/Astro `import.meta.env.DEV`). It does\n * NOT retry. If you need late-resolving targets, render a `<cg-portal>`\n * conditionally once the target element is mounted.\n *\n * **SSR-safe:** all DOM access happens inside `connectedCallback` and\n * `updated()`. No browser globals are touched at module load or in field\n * initializers, so server rendering won't crash on it.\n *\n * @example\n * ```html\n * <!-- Default: teleports to document.body -->\n * <cg-portal>\n * <my-modal></my-modal>\n * </cg-portal>\n *\n * <!-- Custom target by selector -->\n * <cg-portal target=\"#modal-root\">\n * <div>Teleported content</div>\n * </cg-portal>\n *\n * <!-- Conditionally render in place (SSR / no-portal mode) -->\n * <cg-portal disabled>\n * <my-modal></my-modal>\n * </cg-portal>\n * ```\n *\n * @slot - Children to be moved into the target element.\n *\n * @fires {CustomEvent<{ container: HTMLElement }>} cg-portal-mount - Children\n * have been teleported. `detail.container` is the destination element.\n * @fires {CustomEvent} cg-portal-unmount - Children have been returned to the\n * host (target change, disabled toggle, or component disconnect).\n */\n@customElement('cg-portal')\nexport class CgPortal extends LitElement {\n static override styles = css`\n :host { display: contents; }\n `;\n\n @property() target: string | HTMLElement = '';\n @property({ type: Boolean }) disabled = false;\n\n private _container: HTMLElement | null = null;\n private _moved: Node[] = [];\n private _observer: MutationObserver | null = null;\n\n override connectedCallback(): void {\n super.connectedCallback();\n // Wait a microtask so that slotted light-DOM children are parsed.\n queueMicrotask(() => this._mount());\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this._unmount();\n }\n\n override updated(changed: Map<string, unknown>): void {\n if (!changed.has('target') && !changed.has('disabled')) return;\n // Avoid the unmount/remount cycle when the resolved target hasn't\n // actually changed — same selector string, same disabled flag, etc.\n const next = this._resolveTarget();\n if (next === this._container) return;\n this._unmount();\n this._mount();\n }\n\n private _resolveTarget(): HTMLElement {\n if (this.disabled) return this;\n const t = this.target;\n if (t instanceof HTMLElement) return t;\n if (typeof t === 'string' && t) {\n const el = document.querySelector(t);\n if (el instanceof HTMLElement) return el;\n // Selector didn't match — fall back to document.body and warn in dev.\n // Note: querySelector can't pierce shadow roots; pass an element via the\n // property if your target lives inside one.\n if (typeof process === 'undefined' || process.env.NODE_ENV !== 'production') {\n console.warn(\n `[cg-portal] target selector \"${t}\" did not match any element. ` +\n `Falling back to document.body. (querySelector can't pierce shadow ` +\n `roots — pass an HTMLElement reference via the property if needed.)`\n );\n }\n }\n return document.body;\n }\n\n private _mount(): void {\n if (!this.isConnected) return;\n this._container = this._resolveTarget();\n if (this._container === this) return;\n\n this._moved = Array.from(this.childNodes);\n for (const node of this._moved) {\n this._container.appendChild(node);\n }\n\n // Watch for new children added to this host and forward them.\n this._observer = new MutationObserver((mutations) => {\n for (const m of mutations) {\n m.addedNodes.forEach((node) => {\n if (this._container && node.parentNode === this) {\n this._container.appendChild(node);\n this._moved.push(node);\n }\n });\n }\n });\n this._observer.observe(this, { childList: true });\n\n this.dispatchEvent(new CustomEvent('cg-portal-mount', {\n bubbles: true,\n composed: true,\n detail: { container: this._container },\n }));\n }\n\n private _unmount(): void {\n const hadContainer = this._container && this._container !== this;\n this._observer?.disconnect();\n this._observer = null;\n // Return moved children back to host so they are not lost on re-mount,\n // target change, or disable toggle.\n for (const node of this._moved) {\n if (node.parentNode
|
|
1
|
+
{"version":3,"file":"cg-portal.js","sources":["../../../src/components/cg-portal/cg-portal.ts"],"sourcesContent":["import { LitElement, html, css } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\n\n/**\n * @element cg-portal\n * Teleports its slotted children into a different DOM location (default:\n * `document.body`). Useful for popovers, modals, tooltips, or anything that\n * needs to escape a clipping ancestor / stacking context.\n *\n * **Style scope caveat:** teleported children leave the consumer's scoped-CSS\n * context. They inherit only global styles + any styles applied at the new\n * location. Wrap them in your own design-token surface (`cg-card`, etc.) if\n * you need consistent chrome.\n *\n * **Shadow-root target limitation:** when `target` is a CSS selector string,\n * resolution uses `document.querySelector` — which cannot pierce shadow\n * roots. To target an element inside a shadow root, pass it directly via the\n * property: `el.target = shadowRootEl.querySelector('#mount')`.\n *\n * **Missing-target behavior:** if a string `target` doesn't match any element\n * at mount time, the component falls back to `document.body` and emits a\n * `console.warn` in development (Vite/Astro `import.meta.env.DEV`). It does\n * NOT retry. If you need late-resolving targets, render a `<cg-portal>`\n * conditionally once the target element is mounted.\n *\n * **SSR-safe:** all DOM access happens inside `connectedCallback` and\n * `updated()`. No browser globals are touched at module load or in field\n * initializers, so server rendering won't crash on it.\n *\n * @example\n * ```html\n * <!-- Default: teleports to document.body -->\n * <cg-portal>\n * <my-modal></my-modal>\n * </cg-portal>\n *\n * <!-- Custom target by selector -->\n * <cg-portal target=\"#modal-root\">\n * <div>Teleported content</div>\n * </cg-portal>\n *\n * <!-- Conditionally render in place (SSR / no-portal mode) -->\n * <cg-portal disabled>\n * <my-modal></my-modal>\n * </cg-portal>\n * ```\n *\n * @slot - Children to be moved into the target element.\n *\n * @fires {CustomEvent<{ container: HTMLElement }>} cg-portal-mount - Children\n * have been teleported. `detail.container` is the destination element.\n * @fires {CustomEvent} cg-portal-unmount - Children have been returned to the\n * host (target change, disabled toggle, or component disconnect).\n */\n@customElement('cg-portal')\nexport class CgPortal extends LitElement {\n static override styles = css`\n :host { display: contents; }\n `;\n\n @property() target: string | HTMLElement = '';\n @property({ type: Boolean }) disabled = false;\n\n private _container: HTMLElement | null = null;\n private _moved: Node[] = [];\n private _observer: MutationObserver | null = null;\n\n override connectedCallback(): void {\n super.connectedCallback();\n // Wait a microtask so that slotted light-DOM children are parsed.\n queueMicrotask(() => this._mount());\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this._unmount();\n }\n\n override updated(changed: Map<string, unknown>): void {\n if (!changed.has('target') && !changed.has('disabled')) return;\n // Avoid the unmount/remount cycle when the resolved target hasn't\n // actually changed — same selector string, same disabled flag, etc.\n const next = this._resolveTarget();\n if (next === this._container) return;\n this._unmount();\n this._mount();\n }\n\n private _resolveTarget(): HTMLElement {\n if (this.disabled) return this;\n const t = this.target;\n if (t instanceof HTMLElement) return t;\n if (typeof t === 'string' && t) {\n const el = document.querySelector(t);\n if (el instanceof HTMLElement) return el;\n // Selector didn't match — fall back to document.body and warn in dev.\n // Note: querySelector can't pierce shadow roots; pass an element via the\n // property if your target lives inside one.\n if (typeof process === 'undefined' || process.env.NODE_ENV !== 'production') {\n console.warn(\n `[cg-portal] target selector \"${t}\" did not match any element. ` +\n `Falling back to document.body. (querySelector can't pierce shadow ` +\n `roots — pass an HTMLElement reference via the property if needed.)`\n );\n }\n }\n return document.body;\n }\n\n private _mount(): void {\n // Re-entrancy guard: _observer is non-null iff we are currently mounted\n // to an external container (the disabled path never sets it, and\n // _unmount() nulls it). Prevents the queued connectedCallback mount from\n // double-firing after the first updated()-driven mount.\n if (this._observer) return;\n if (!this.isConnected) return;\n this._container = this._resolveTarget();\n if (this._container === this) return;\n\n this._moved = Array.from(this.childNodes);\n const active = document.activeElement as HTMLElement | null;\n const hadFocus =\n active !== null &&\n this._moved.some((n) => n === active || n.contains(active));\n for (const node of this._moved) {\n this._container.appendChild(node);\n }\n if (hadFocus) active!.focus();\n\n // Watch for new children added to this host and forward them.\n this._observer = new MutationObserver((mutations) => {\n for (const m of mutations) {\n m.addedNodes.forEach((node) => {\n if (this._container && node.parentNode === this) {\n this._container.appendChild(node);\n this._moved.push(node);\n }\n });\n }\n });\n this._observer.observe(this, { childList: true });\n\n this.dispatchEvent(new CustomEvent('cg-portal-mount', {\n bubbles: true,\n composed: true,\n detail: { container: this._container },\n }));\n }\n\n private _unmount(): void {\n const hadContainer = this._container && this._container !== this;\n this._observer?.disconnect();\n this._observer = null;\n // Return moved children back to host so they are not lost on re-mount,\n // target change, or disable toggle. appendChild atomically detaches from\n // the container and works even while the host is disconnected, so\n // children survive framework reparenting (disconnect + reconnect).\n // Nodes the consumer already removed or reparented are left alone.\n const active = document.activeElement as HTMLElement | null;\n const hadFocus =\n active !== null &&\n this._moved.some((n) => n === active || n.contains(active));\n for (const node of this._moved) {\n if (node.parentNode === this._container) this.appendChild(node);\n }\n if (hadFocus) active!.focus();\n this._moved = [];\n this._container = null;\n if (hadContainer) {\n this.dispatchEvent(new CustomEvent('cg-portal-unmount', {\n bubbles: true,\n composed: true,\n }));\n }\n }\n\n override render() {\n return html`<slot></slot>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'cg-portal': CgPortal;\n }\n}\n"],"names":["CgPortal","LitElement","changed","el","active","hadFocus","n","node","mutations","m","hadContainer","html","css","__decorateClass","property","customElement"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cg-progress-bar.d.ts","sourceRoot":"","sources":["../../../src/components/cg-progress-bar/cg-progress-bar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAsB,MAAM,KAAK,CAAC;AAIrD;;;;;;;;;;;;;;;GAeG;AACH,qBACa,aAAc,SAAQ,UAAU;IAC3C,OAAgB,MAAM,
|
|
1
|
+
{"version":3,"file":"cg-progress-bar.d.ts","sourceRoot":"","sources":["../../../src/components/cg-progress-bar/cg-progress-bar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAsB,MAAM,KAAK,CAAC;AAIrD;;;;;;;;;;;;;;;GAeG;AACH,qBACa,aAAc,SAAQ,UAAU;IAC3C,OAAgB,MAAM,4BA8JnB;IAEH,2BAA2B;IACC,KAAK,SAAK;IAEtC,+BAA+B;IACH,KAAK,SAAM;IAEvC,uCAAuC;IACX,WAAW,SAAM;IAE7C,4BAA4B;IACC,SAAS,UAAS;IAE/C,iFAAiF;IACrD,WAAW,SAAM;IAE7C,gEAAgE;IACpC,MAAM,SAAK;IAEvC,sCAAsC;IACV,QAAQ,SAAM;IAE1C,sCAAsC;IACV,QAAQ,SAAM;IAEC,OAAO,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAa;IACjE,aAAa,UAAS;IACvB,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAQ;IAC/B,OAAO,UAAS;IAChB,QAAQ,UAAS;IAE7D,OAAO,KAAK,aAAa,GAExB;IAED,OAAO,KAAK,cAAc,GAEzB;IAED,OAAO,KAAK,aAAa,GAGxB;IAEQ,MAAM;CA2ChB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,iBAAiB,EAAE,aAAa,CAAC;KAClC;CACF"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { css as
|
|
2
|
-
import { property as a, customElement as
|
|
3
|
-
import { h as
|
|
4
|
-
var v = Object.defineProperty, b = Object.getOwnPropertyDescriptor, e = (l,
|
|
5
|
-
for (var i = c > 1 ? void 0 : c ? b(
|
|
6
|
-
(d = l[p]) && (i = (c ? d(
|
|
7
|
-
return c && i && v(
|
|
1
|
+
import { css as g, LitElement as u, nothing as r, html as s } from "lit";
|
|
2
|
+
import { property as a, customElement as h } from "lit/decorators.js";
|
|
3
|
+
import { h as f, r as m } from "../../chunks/premium.css-DHekUEUt.js";
|
|
4
|
+
var v = Object.defineProperty, b = Object.getOwnPropertyDescriptor, e = (l, n, o, c) => {
|
|
5
|
+
for (var i = c > 1 ? void 0 : c ? b(n, o) : n, p = l.length - 1, d; p >= 0; p--)
|
|
6
|
+
(d = l[p]) && (i = (c ? d(n, o, i) : d(i)) || i);
|
|
7
|
+
return c && i && v(n, o, i), i;
|
|
8
8
|
};
|
|
9
|
-
let t = class extends
|
|
9
|
+
let t = class extends u {
|
|
10
10
|
constructor() {
|
|
11
11
|
super(...arguments), this.value = 0, this.label = "", this.description = "", this.showValue = !1, this.formatValue = "", this.buffer = 0, this.minLabel = "", this.maxLabel = "", this.variant = "default", this.indeterminate = !1, this.size = "md", this.striped = !1, this.animated = !1;
|
|
12
12
|
}
|
|
@@ -20,15 +20,15 @@ let t = class extends g {
|
|
|
20
20
|
return this.formatValue ? this.formatValue : `${this._clampedValue}%`;
|
|
21
21
|
}
|
|
22
22
|
render() {
|
|
23
|
-
const l = this.label || this.description || (this.showValue || this.formatValue) && !this.indeterminate,
|
|
24
|
-
return
|
|
25
|
-
${l ?
|
|
23
|
+
const l = this.label || this.description || (this.showValue || this.formatValue) && !this.indeterminate, n = this.minLabel || this.maxLabel, o = this.buffer > 0 && !this.indeterminate;
|
|
24
|
+
return s`
|
|
25
|
+
${l ? s`
|
|
26
26
|
<div class="header">
|
|
27
27
|
<div class="header-left">
|
|
28
|
-
${this.label ?
|
|
29
|
-
${this.description ?
|
|
28
|
+
${this.label ? s`<span class="label">${this.label}</span>` : r}
|
|
29
|
+
${this.description ? s`<span class="description">${this.description}</span>` : r}
|
|
30
30
|
</div>
|
|
31
|
-
${(this.showValue || this.formatValue) && !this.indeterminate ?
|
|
31
|
+
${(this.showValue || this.formatValue) && !this.indeterminate ? s`
|
|
32
32
|
<span class="value-text">${this._displayValue}</span>
|
|
33
33
|
` : r}
|
|
34
34
|
</div>
|
|
@@ -40,9 +40,10 @@ let t = class extends g {
|
|
|
40
40
|
aria-valuemin="0"
|
|
41
41
|
aria-valuemax="100"
|
|
42
42
|
aria-label="${this.label || "Progress"}"
|
|
43
|
+
aria-valuetext=${this.formatValue && !this.indeterminate ? this.formatValue : r}
|
|
43
44
|
aria-busy="${this.indeterminate}"
|
|
44
45
|
>
|
|
45
|
-
${o ?
|
|
46
|
+
${o ? s`
|
|
46
47
|
<div class="buffer" style="width: ${this._clampedBuffer}%"></div>
|
|
47
48
|
` : r}
|
|
48
49
|
<div
|
|
@@ -50,7 +51,7 @@ let t = class extends g {
|
|
|
50
51
|
style="${this.indeterminate ? "" : `width: ${this._clampedValue}%`}"
|
|
51
52
|
></div>
|
|
52
53
|
</div>
|
|
53
|
-
${
|
|
54
|
+
${n ? s`
|
|
54
55
|
<div class="range-labels">
|
|
55
56
|
<span>${this.minLabel}</span>
|
|
56
57
|
<span>${this.maxLabel}</span>
|
|
@@ -59,7 +60,7 @@ let t = class extends g {
|
|
|
59
60
|
`;
|
|
60
61
|
}
|
|
61
62
|
};
|
|
62
|
-
t.styles = [
|
|
63
|
+
t.styles = [f, m, g`
|
|
63
64
|
:host {
|
|
64
65
|
width: 100%;
|
|
65
66
|
}
|
|
@@ -120,9 +121,12 @@ t.styles = [u, f, h`
|
|
|
120
121
|
height: 100%;
|
|
121
122
|
border-radius: var(--cg-component-progress-radius);
|
|
122
123
|
background: var(--cg-color-loading-spinner-primary);
|
|
123
|
-
opacity:
|
|
124
|
+
opacity: var(--cg-opacity-25);
|
|
124
125
|
transition: width var(--cg-transition-duration-slow) var(--cg-transition-easing-default);
|
|
125
126
|
}
|
|
127
|
+
:host([variant="success"]) .buffer { background: var(--cg-color-status-success-text-default); }
|
|
128
|
+
:host([variant="warning"]) .buffer { background: var(--cg-color-status-warning-text-default); }
|
|
129
|
+
:host([variant="danger"]) .buffer { background: var(--cg-color-status-error-text-default); }
|
|
126
130
|
|
|
127
131
|
/* ── Fill bar ── */
|
|
128
132
|
.fill {
|
|
@@ -162,7 +166,7 @@ t.styles = [u, f, h`
|
|
|
162
166
|
transparent 75%,
|
|
163
167
|
transparent
|
|
164
168
|
);
|
|
165
|
-
background-size:
|
|
169
|
+
background-size: var(--cg-spacing-20) var(--cg-spacing-20);
|
|
166
170
|
}
|
|
167
171
|
|
|
168
172
|
/* ── Animated stripes ── */
|
|
@@ -172,7 +176,7 @@ t.styles = [u, f, h`
|
|
|
172
176
|
|
|
173
177
|
@keyframes stripe-move {
|
|
174
178
|
from { background-position: 0 0; }
|
|
175
|
-
to { background-position:
|
|
179
|
+
to { background-position: var(--cg-spacing-20) 0; }
|
|
176
180
|
}
|
|
177
181
|
|
|
178
182
|
/* ── Indeterminate ── */
|
|
@@ -204,10 +208,6 @@ t.styles = [u, f, h`
|
|
|
204
208
|
|
|
205
209
|
/* Reduced motion */
|
|
206
210
|
@media (prefers-reduced-motion: reduce) {
|
|
207
|
-
.fill::before {
|
|
208
|
-
animation: none !important;
|
|
209
|
-
background: none !important;
|
|
210
|
-
}
|
|
211
211
|
:host([animated]) .fill::after {
|
|
212
212
|
animation: none !important;
|
|
213
213
|
}
|
|
@@ -259,7 +259,7 @@ e([
|
|
|
259
259
|
a({ type: Boolean, reflect: !0 })
|
|
260
260
|
], t.prototype, "animated", 2);
|
|
261
261
|
t = e([
|
|
262
|
-
|
|
262
|
+
h("cg-progress-bar")
|
|
263
263
|
], t);
|
|
264
264
|
export {
|
|
265
265
|
t as CgProgressBar
|