@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,104 +1,106 @@
|
|
|
1
|
-
import { css as
|
|
2
|
-
import { property as n, state as
|
|
3
|
-
import { a as
|
|
4
|
-
var y = Object.defineProperty, w = Object.getOwnPropertyDescriptor, o = (
|
|
5
|
-
for (var a = i > 1 ? void 0 : i ? w(r,
|
|
6
|
-
(h =
|
|
7
|
-
return i && a && y(r,
|
|
1
|
+
import { css as d, LitElement as v, nothing as c, html as u } from "lit";
|
|
2
|
+
import { property as n, state as g, customElement as f } from "lit/decorators.js";
|
|
3
|
+
import { a as p, r as m } from "../../chunks/premium.css-DHekUEUt.js";
|
|
4
|
+
var y = Object.defineProperty, w = Object.getOwnPropertyDescriptor, o = (t, r, e, i) => {
|
|
5
|
+
for (var a = i > 1 ? void 0 : i ? w(r, e) : r, l = t.length - 1, h; l >= 0; l--)
|
|
6
|
+
(h = t[l]) && (a = (i ? h(r, e, a) : h(a)) || a);
|
|
7
|
+
return i && a && y(r, e, a), a;
|
|
8
8
|
};
|
|
9
|
-
let s = class extends
|
|
9
|
+
let s = class extends v {
|
|
10
10
|
constructor() {
|
|
11
11
|
super(), this.value = 0, this.max = 5, this.precision = 1, this.readonly = !1, this.disabled = !1, this.size = "md", this.name = "", this._hoverValue = 0, typeof this.attachInternals == "function" && (this._internals = this.attachInternals());
|
|
12
12
|
}
|
|
13
|
-
updated(
|
|
14
|
-
|
|
13
|
+
updated(t) {
|
|
14
|
+
t.has("value") && this._internals?.setFormValue(String(this.value));
|
|
15
15
|
}
|
|
16
16
|
_displayValue() {
|
|
17
17
|
return this._hoverValue || this.value;
|
|
18
18
|
}
|
|
19
|
-
_getFillType(
|
|
20
|
-
const r = this._displayValue(),
|
|
21
|
-
return r >=
|
|
19
|
+
_getFillType(t) {
|
|
20
|
+
const r = this._displayValue(), e = t + 1;
|
|
21
|
+
return r >= e ? "full" : r >= e - 0.5 && this.precision === 0.5 ? "half" : "empty";
|
|
22
22
|
}
|
|
23
|
-
_handleClick(
|
|
23
|
+
_handleClick(t, r) {
|
|
24
24
|
if (this.readonly || this.disabled) return;
|
|
25
|
-
let
|
|
25
|
+
let e = t + 1;
|
|
26
26
|
if (this.precision === 0.5) {
|
|
27
27
|
const a = r.currentTarget.getBoundingClientRect();
|
|
28
|
-
r.clientX - a.left < a.width / 2 && (
|
|
28
|
+
r.clientX - a.left < a.width / 2 && (e = t + 0.5);
|
|
29
29
|
}
|
|
30
|
-
|
|
31
|
-
detail: { value:
|
|
30
|
+
e === this.value && (e = 0), this.value = e, this.dispatchEvent(new CustomEvent("cg-rating-change", {
|
|
31
|
+
detail: { value: e },
|
|
32
32
|
bubbles: !0,
|
|
33
33
|
composed: !0
|
|
34
34
|
}));
|
|
35
35
|
}
|
|
36
|
-
_handleMouseMove(
|
|
36
|
+
_handleMouseMove(t, r) {
|
|
37
37
|
if (!(this.readonly || this.disabled))
|
|
38
38
|
if (this.precision === 0.5) {
|
|
39
39
|
const i = r.currentTarget.getBoundingClientRect(), a = r.clientX - i.left < i.width / 2;
|
|
40
|
-
this._hoverValue =
|
|
40
|
+
this._hoverValue = t + (a ? 0.5 : 1);
|
|
41
41
|
} else
|
|
42
|
-
this._hoverValue =
|
|
42
|
+
this._hoverValue = t + 1;
|
|
43
43
|
}
|
|
44
44
|
_handleMouseLeave() {
|
|
45
45
|
this._hoverValue = 0;
|
|
46
46
|
}
|
|
47
|
-
_handleKeydown(
|
|
47
|
+
_handleKeydown(t) {
|
|
48
48
|
if (this.readonly || this.disabled) return;
|
|
49
49
|
const r = this.precision;
|
|
50
|
-
let
|
|
51
|
-
if (
|
|
52
|
-
|
|
53
|
-
else if (
|
|
54
|
-
|
|
55
|
-
else if (
|
|
56
|
-
|
|
57
|
-
else if (
|
|
58
|
-
|
|
50
|
+
let e = this.value;
|
|
51
|
+
if (t.key === "ArrowRight" || t.key === "ArrowUp")
|
|
52
|
+
t.preventDefault(), e = Math.min(this.max, this.value + r);
|
|
53
|
+
else if (t.key === "ArrowLeft" || t.key === "ArrowDown")
|
|
54
|
+
t.preventDefault(), e = Math.max(0, this.value - r);
|
|
55
|
+
else if (t.key === "Home")
|
|
56
|
+
t.preventDefault(), e = 0;
|
|
57
|
+
else if (t.key === "End")
|
|
58
|
+
t.preventDefault(), e = this.max;
|
|
59
59
|
else
|
|
60
60
|
return;
|
|
61
|
-
|
|
62
|
-
detail: { value:
|
|
61
|
+
e !== this.value && (this.value = e, this.dispatchEvent(new CustomEvent("cg-rating-change", {
|
|
62
|
+
detail: { value: e },
|
|
63
63
|
bubbles: !0,
|
|
64
64
|
composed: !0
|
|
65
65
|
})));
|
|
66
66
|
}
|
|
67
67
|
render() {
|
|
68
|
-
const
|
|
68
|
+
const t = "M12 2l2.5 7.5h7.5l-6 4.5 2.5 7.5-6.5-4.5-6.5 4.5 2.5-7.5-6-4.5h7.5z";
|
|
69
69
|
return u`
|
|
70
70
|
<div
|
|
71
71
|
class="rating"
|
|
72
|
-
role="
|
|
73
|
-
tabindex
|
|
74
|
-
aria-label
|
|
72
|
+
role="slider"
|
|
73
|
+
tabindex=${this.disabled ? "-1" : "0"}
|
|
74
|
+
aria-label="Rating"
|
|
75
75
|
aria-valuenow=${this.value}
|
|
76
76
|
aria-valuemin="0"
|
|
77
77
|
aria-valuemax=${this.max}
|
|
78
|
+
aria-valuetext=${`${this.value} of ${this.max} stars`}
|
|
79
|
+
aria-disabled=${this.disabled ? "true" : c}
|
|
80
|
+
aria-readonly=${this.readonly ? "true" : c}
|
|
78
81
|
@keydown=${this._handleKeydown}
|
|
79
82
|
@mouseleave=${this._handleMouseLeave}
|
|
80
83
|
>
|
|
81
|
-
${Array.from({ length: this.max }, (r,
|
|
82
|
-
const i = this._getFillType(
|
|
84
|
+
${Array.from({ length: this.max }, (r, e) => {
|
|
85
|
+
const i = this._getFillType(e);
|
|
83
86
|
return u`
|
|
84
87
|
<div
|
|
85
88
|
class="star"
|
|
86
89
|
data-filled=${i}
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
@
|
|
90
|
-
@mousemove=${(a) => this._handleMouseMove(t, a)}
|
|
90
|
+
aria-hidden="true"
|
|
91
|
+
@click=${(a) => this._handleClick(e, a)}
|
|
92
|
+
@mousemove=${(a) => this._handleMouseMove(e, a)}
|
|
91
93
|
>
|
|
92
94
|
<svg viewBox="0 0 24 24" fill=${i === "full" ? "currentColor" : "none"} stroke="currentColor" stroke-width="1.5" stroke-linejoin="round">
|
|
93
|
-
<path d=${
|
|
95
|
+
<path d=${t}/>
|
|
94
96
|
</svg>
|
|
95
97
|
${i === "half" ? u`
|
|
96
98
|
<div class="half">
|
|
97
99
|
<svg viewBox="0 0 24 24" fill="currentColor" stroke="currentColor" stroke-width="1.5" stroke-linejoin="round">
|
|
98
|
-
<path d=${
|
|
100
|
+
<path d=${t}/>
|
|
99
101
|
</svg>
|
|
100
102
|
</div>
|
|
101
|
-
` :
|
|
103
|
+
` : c}
|
|
102
104
|
</div>
|
|
103
105
|
`;
|
|
104
106
|
})}
|
|
@@ -106,7 +108,7 @@ let s = class extends d {
|
|
|
106
108
|
`;
|
|
107
109
|
}
|
|
108
110
|
};
|
|
109
|
-
s.styles = [
|
|
111
|
+
s.styles = [p, m, d`
|
|
110
112
|
:host {
|
|
111
113
|
display: inline-flex;
|
|
112
114
|
}
|
|
@@ -123,13 +125,13 @@ s.styles = [g, m, c`
|
|
|
123
125
|
width: var(--cg-component-rating-size-md);
|
|
124
126
|
height: var(--cg-component-rating-size-md);
|
|
125
127
|
cursor: pointer;
|
|
126
|
-
color: var(--cg-color-surface-container-
|
|
128
|
+
color: var(--cg-color-surface-container-outlined);
|
|
127
129
|
transition:
|
|
128
130
|
color var(--cg-transition-duration-fast) var(--cg-transition-easing-default),
|
|
129
131
|
transform var(--cg-transition-duration-fast) var(--cg-transition-easing-spring);
|
|
130
132
|
}
|
|
131
133
|
.star:hover { transform: scale(1.15); }
|
|
132
|
-
.star:active { transform: scale(
|
|
134
|
+
.star:active { transform: scale(var(--cg-interaction-press-scale)); }
|
|
133
135
|
.star[data-filled="full"] { color: var(--cg-color-status-warning-text-default); }
|
|
134
136
|
.star[data-filled="half"] { color: var(--cg-color-status-warning-text-default); }
|
|
135
137
|
|
|
@@ -157,13 +159,13 @@ s.styles = [g, m, c`
|
|
|
157
159
|
|
|
158
160
|
:host([readonly]) .star { cursor: default; }
|
|
159
161
|
:host([readonly]) .star:hover { transform: none; }
|
|
160
|
-
:host([disabled]) .rating { opacity:
|
|
162
|
+
:host([disabled]) .rating { opacity: var(--cg-opacity-50); pointer-events: none; }
|
|
161
163
|
|
|
162
164
|
.rating:focus-visible {
|
|
163
165
|
outline: none;
|
|
164
166
|
box-shadow:
|
|
165
|
-
0 0 0
|
|
166
|
-
0 0 0
|
|
167
|
+
0 0 0 var(--cg-focus-ring-offset) var(--cg-color-focus-ring-offset),
|
|
168
|
+
0 0 0 calc(var(--cg-focus-ring-offset) + var(--cg-focus-ring-width)) var(--cg-color-focus-ring);
|
|
167
169
|
border-radius: var(--cg-border-radius-50);
|
|
168
170
|
}
|
|
169
171
|
`];
|
|
@@ -190,10 +192,10 @@ o([
|
|
|
190
192
|
n()
|
|
191
193
|
], s.prototype, "name", 2);
|
|
192
194
|
o([
|
|
193
|
-
|
|
195
|
+
g()
|
|
194
196
|
], s.prototype, "_hoverValue", 2);
|
|
195
197
|
s = o([
|
|
196
|
-
|
|
198
|
+
f("cg-rating")
|
|
197
199
|
], s);
|
|
198
200
|
export {
|
|
199
201
|
s as CgRating
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cg-rating.js","sources":["../../../src/components/cg-rating/cg-rating.ts"],"sourcesContent":["import { LitElement, html, css, nothing } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { hostBase, reducedMotion } from '../../styles/index.js';\n\n/**\n * @element cg-rating\n * Star rating input with keyboard navigation, half-star precision, and clear.\n *\n * @example\n * ```html\n * <cg-rating value=\"4\" max=\"5\"></cg-rating>\n * <cg-rating value=\"3.5\" precision=\"0.5\"></cg-rating>\n * ```\n *\n * @fires {CustomEvent<{value: number}>} cg-rating-change\n */\n@customElement('cg-rating')\nexport class CgRating extends LitElement {\n static override styles = [hostBase, reducedMotion, css`\n :host {\n display: inline-flex;\n }\n\n .rating {\n display: inline-flex;\n align-items: center;\n gap: var(--cg-component-rating-gap);\n outline: none;\n }\n\n .star {\n position: relative;\n width: var(--cg-component-rating-size-md);\n height: var(--cg-component-rating-size-md);\n cursor: pointer;\n color: var(--cg-color-surface-container-border);\n transition:\n color var(--cg-transition-duration-fast) var(--cg-transition-easing-default),\n transform var(--cg-transition-duration-fast) var(--cg-transition-easing-spring);\n }\n .star:hover { transform: scale(1.15); }\n .star:active { transform: scale(0.95); }\n .star[data-filled=\"full\"] { color: var(--cg-color-status-warning-text-default); }\n .star[data-filled=\"half\"] { color: var(--cg-color-status-warning-text-default); }\n\n .star svg { width: 100%; height: 100%; }\n\n .star .half {\n position: absolute;\n top: 0;\n left: 0;\n width: 50%;\n height: 100%;\n overflow: hidden;\n }\n .star .half svg { width: 200%; }\n\n /* Sizes */\n :host([size=\"sm\"]) .star {\n width: var(--cg-component-rating-size-sm);\n height: var(--cg-component-rating-size-sm);\n }\n :host([size=\"lg\"]) .star {\n width: var(--cg-component-rating-size-lg);\n height: var(--cg-component-rating-size-lg);\n }\n\n :host([readonly]) .star { cursor: default; }\n :host([readonly]) .star:hover { transform: none; }\n :host([disabled]) .rating { opacity: 0.45; pointer-events: none; }\n\n .rating:focus-visible {\n outline: none;\n box-shadow:\n 0 0 0 2px var(--cg-color-focus-ring-offset),\n 0 0 0 4px var(--cg-color-focus-ring);\n border-radius: var(--cg-border-radius-50);\n }\n `];\n\n static formAssociated = true;\n private _internals?: ElementInternals;\n\n constructor() {\n super();\n if (typeof this.attachInternals === 'function') {\n this._internals = this.attachInternals();\n }\n }\n\n @property({ type: Number }) value = 0;\n @property({ type: Number }) max = 5;\n @property({ type: Number }) precision: 0.5 | 1 = 1;\n @property({ type: Boolean, reflect: true }) readonly = false;\n @property({ type: Boolean, reflect: true }) disabled = false;\n @property({ reflect: true }) size: 'sm' | 'md' | 'lg' = 'md';\n @property() name = '';\n\n @state() private _hoverValue = 0;\n\n override updated(changed: Map<string, unknown>): void {\n if (changed.has('value')) {\n this._internals?.setFormValue(String(this.value));\n }\n }\n\n private _displayValue(): number {\n return this._hoverValue || this.value;\n }\n\n private _getFillType(starIndex: number): 'full' | 'half' | 'empty' {\n const display = this._displayValue();\n const starValue = starIndex + 1;\n if (display >= starValue) return 'full';\n if (display >= starValue - 0.5 && this.precision === 0.5) return 'half';\n return 'empty';\n }\n\n private _handleClick(starIndex: number, e: MouseEvent): void {\n if (this.readonly || this.disabled) return;\n let newValue = starIndex + 1;\n if (this.precision === 0.5) {\n const target = e.currentTarget as HTMLElement;\n const rect = target.getBoundingClientRect();\n const half = e.clientX - rect.left < rect.width / 2;\n if (half) newValue = starIndex + 0.5;\n }\n // Clear on click of same value\n if (newValue === this.value) newValue = 0;\n this.value = newValue;\n this.dispatchEvent(new CustomEvent('cg-rating-change', {\n detail: { value: newValue },\n bubbles: true,\n composed: true,\n }));\n }\n\n private _handleMouseMove(starIndex: number, e: MouseEvent): void {\n if (this.readonly || this.disabled) return;\n if (this.precision === 0.5) {\n const target = e.currentTarget as HTMLElement;\n const rect = target.getBoundingClientRect();\n const half = e.clientX - rect.left < rect.width / 2;\n this._hoverValue = starIndex + (half ? 0.5 : 1);\n } else {\n this._hoverValue = starIndex + 1;\n }\n }\n\n private _handleMouseLeave(): void {\n this._hoverValue = 0;\n }\n\n private _handleKeydown(e: KeyboardEvent): void {\n if (this.readonly || this.disabled) return;\n const step = this.precision;\n let newValue = this.value;\n if (e.key === 'ArrowRight' || e.key === 'ArrowUp') {\n e.preventDefault();\n newValue = Math.min(this.max, this.value + step);\n } else if (e.key === 'ArrowLeft' || e.key === 'ArrowDown') {\n e.preventDefault();\n newValue = Math.max(0, this.value - step);\n } else if (e.key === 'Home') {\n e.preventDefault();\n newValue = 0;\n } else if (e.key === 'End') {\n e.preventDefault();\n newValue = this.max;\n } else {\n return;\n }\n if (newValue !== this.value) {\n this.value = newValue;\n this.dispatchEvent(new CustomEvent('cg-rating-change', {\n detail: { value: newValue },\n bubbles: true,\n composed: true,\n }));\n }\n }\n\n override render() {\n const starPath = 'M12 2l2.5 7.5h7.5l-6 4.5 2.5 7.5-6.5-4.5-6.5 4.5 2.5-7.5-6-4.5h7.5z';\n return html`\n <div\n class=\"rating\"\n role=\"radiogroup\"\n tabindex=\"0\"\n aria-label=${`Rated ${this.value} of ${this.max}`}\n aria-valuenow=${this.value}\n aria-valuemin=\"0\"\n aria-valuemax=${this.max}\n @keydown=${this._handleKeydown}\n @mouseleave=${this._handleMouseLeave}\n >\n ${Array.from({ length: this.max }, (_, i) => {\n const fill = this._getFillType(i);\n return html`\n <div\n class=\"star\"\n data-filled=${fill}\n role=\"radio\"\n aria-checked=${i + 1 <= this.value ? 'true' : 'false'}\n @click=${(e: MouseEvent) => this._handleClick(i, e)}\n @mousemove=${(e: MouseEvent) => this._handleMouseMove(i, e)}\n >\n <svg viewBox=\"0 0 24 24\" fill=${fill === 'full' ? 'currentColor' : 'none'} stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linejoin=\"round\">\n <path d=${starPath}/>\n </svg>\n ${fill === 'half' ? html`\n <div class=\"half\">\n <svg viewBox=\"0 0 24 24\" fill=\"currentColor\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linejoin=\"round\">\n <path d=${starPath}/>\n </svg>\n </div>\n ` : nothing}\n </div>\n `;\n })}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'cg-rating': CgRating;\n }\n}\n"],"names":["CgRating","LitElement","changed","starIndex","display","starValue","e","newValue","rect","half","step","starPath","html","_","i","fill","nothing","hostBase","reducedMotion","css","__decorateClass","property","state","customElement"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cg-rating.js","sources":["../../../src/components/cg-rating/cg-rating.ts"],"sourcesContent":["import { LitElement, html, css, nothing } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { hostBase, reducedMotion } from '../../styles/index.js';\n\n/**\n * @element cg-rating\n * Star rating input with keyboard navigation, half-star precision, and clear.\n *\n * @example\n * ```html\n * <cg-rating value=\"4\" max=\"5\"></cg-rating>\n * <cg-rating value=\"3.5\" precision=\"0.5\"></cg-rating>\n * ```\n *\n * @fires {CustomEvent<{value: number}>} cg-rating-change\n */\n@customElement('cg-rating')\nexport class CgRating extends LitElement {\n static override styles = [hostBase, reducedMotion, css`\n :host {\n display: inline-flex;\n }\n\n .rating {\n display: inline-flex;\n align-items: center;\n gap: var(--cg-component-rating-gap);\n outline: none;\n }\n\n .star {\n position: relative;\n width: var(--cg-component-rating-size-md);\n height: var(--cg-component-rating-size-md);\n cursor: pointer;\n color: var(--cg-color-surface-container-outlined);\n transition:\n color var(--cg-transition-duration-fast) var(--cg-transition-easing-default),\n transform var(--cg-transition-duration-fast) var(--cg-transition-easing-spring);\n }\n .star:hover { transform: scale(1.15); }\n .star:active { transform: scale(var(--cg-interaction-press-scale)); }\n .star[data-filled=\"full\"] { color: var(--cg-color-status-warning-text-default); }\n .star[data-filled=\"half\"] { color: var(--cg-color-status-warning-text-default); }\n\n .star svg { width: 100%; height: 100%; }\n\n .star .half {\n position: absolute;\n top: 0;\n left: 0;\n width: 50%;\n height: 100%;\n overflow: hidden;\n }\n .star .half svg { width: 200%; }\n\n /* Sizes */\n :host([size=\"sm\"]) .star {\n width: var(--cg-component-rating-size-sm);\n height: var(--cg-component-rating-size-sm);\n }\n :host([size=\"lg\"]) .star {\n width: var(--cg-component-rating-size-lg);\n height: var(--cg-component-rating-size-lg);\n }\n\n :host([readonly]) .star { cursor: default; }\n :host([readonly]) .star:hover { transform: none; }\n :host([disabled]) .rating { opacity: var(--cg-opacity-50); pointer-events: none; }\n\n .rating:focus-visible {\n outline: none;\n box-shadow:\n 0 0 0 var(--cg-focus-ring-offset) var(--cg-color-focus-ring-offset),\n 0 0 0 calc(var(--cg-focus-ring-offset) + var(--cg-focus-ring-width)) var(--cg-color-focus-ring);\n border-radius: var(--cg-border-radius-50);\n }\n `];\n\n static formAssociated = true;\n private _internals?: ElementInternals;\n\n constructor() {\n super();\n if (typeof this.attachInternals === 'function') {\n this._internals = this.attachInternals();\n }\n }\n\n @property({ type: Number }) value = 0;\n @property({ type: Number }) max = 5;\n @property({ type: Number }) precision: 0.5 | 1 = 1;\n @property({ type: Boolean, reflect: true }) readonly = false;\n @property({ type: Boolean, reflect: true }) disabled = false;\n @property({ reflect: true }) size: 'sm' | 'md' | 'lg' = 'md';\n @property() name = '';\n\n @state() private _hoverValue = 0;\n\n override updated(changed: Map<string, unknown>): void {\n if (changed.has('value')) {\n this._internals?.setFormValue(String(this.value));\n }\n }\n\n private _displayValue(): number {\n return this._hoverValue || this.value;\n }\n\n private _getFillType(starIndex: number): 'full' | 'half' | 'empty' {\n const display = this._displayValue();\n const starValue = starIndex + 1;\n if (display >= starValue) return 'full';\n if (display >= starValue - 0.5 && this.precision === 0.5) return 'half';\n return 'empty';\n }\n\n private _handleClick(starIndex: number, e: MouseEvent): void {\n if (this.readonly || this.disabled) return;\n let newValue = starIndex + 1;\n if (this.precision === 0.5) {\n const target = e.currentTarget as HTMLElement;\n const rect = target.getBoundingClientRect();\n const half = e.clientX - rect.left < rect.width / 2;\n if (half) newValue = starIndex + 0.5;\n }\n // Clear on click of same value\n if (newValue === this.value) newValue = 0;\n this.value = newValue;\n this.dispatchEvent(new CustomEvent('cg-rating-change', {\n detail: { value: newValue },\n bubbles: true,\n composed: true,\n }));\n }\n\n private _handleMouseMove(starIndex: number, e: MouseEvent): void {\n if (this.readonly || this.disabled) return;\n if (this.precision === 0.5) {\n const target = e.currentTarget as HTMLElement;\n const rect = target.getBoundingClientRect();\n const half = e.clientX - rect.left < rect.width / 2;\n this._hoverValue = starIndex + (half ? 0.5 : 1);\n } else {\n this._hoverValue = starIndex + 1;\n }\n }\n\n private _handleMouseLeave(): void {\n this._hoverValue = 0;\n }\n\n private _handleKeydown(e: KeyboardEvent): void {\n if (this.readonly || this.disabled) return;\n const step = this.precision;\n let newValue = this.value;\n if (e.key === 'ArrowRight' || e.key === 'ArrowUp') {\n e.preventDefault();\n newValue = Math.min(this.max, this.value + step);\n } else if (e.key === 'ArrowLeft' || e.key === 'ArrowDown') {\n e.preventDefault();\n newValue = Math.max(0, this.value - step);\n } else if (e.key === 'Home') {\n e.preventDefault();\n newValue = 0;\n } else if (e.key === 'End') {\n e.preventDefault();\n newValue = this.max;\n } else {\n return;\n }\n if (newValue !== this.value) {\n this.value = newValue;\n this.dispatchEvent(new CustomEvent('cg-rating-change', {\n detail: { value: newValue },\n bubbles: true,\n composed: true,\n }));\n }\n }\n\n override render() {\n const starPath = 'M12 2l2.5 7.5h7.5l-6 4.5 2.5 7.5-6.5-4.5-6.5 4.5 2.5-7.5-6-4.5h7.5z';\n return html`\n <div\n class=\"rating\"\n role=\"slider\"\n tabindex=${this.disabled ? '-1' : '0'}\n aria-label=\"Rating\"\n aria-valuenow=${this.value}\n aria-valuemin=\"0\"\n aria-valuemax=${this.max}\n aria-valuetext=${`${this.value} of ${this.max} stars`}\n aria-disabled=${this.disabled ? 'true' : nothing}\n aria-readonly=${this.readonly ? 'true' : nothing}\n @keydown=${this._handleKeydown}\n @mouseleave=${this._handleMouseLeave}\n >\n ${Array.from({ length: this.max }, (_, i) => {\n const fill = this._getFillType(i);\n return html`\n <div\n class=\"star\"\n data-filled=${fill}\n aria-hidden=\"true\"\n @click=${(e: MouseEvent) => this._handleClick(i, e)}\n @mousemove=${(e: MouseEvent) => this._handleMouseMove(i, e)}\n >\n <svg viewBox=\"0 0 24 24\" fill=${fill === 'full' ? 'currentColor' : 'none'} stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linejoin=\"round\">\n <path d=${starPath}/>\n </svg>\n ${fill === 'half' ? html`\n <div class=\"half\">\n <svg viewBox=\"0 0 24 24\" fill=\"currentColor\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linejoin=\"round\">\n <path d=${starPath}/>\n </svg>\n </div>\n ` : nothing}\n </div>\n `;\n })}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'cg-rating': CgRating;\n }\n}\n"],"names":["CgRating","LitElement","changed","starIndex","display","starValue","e","newValue","rect","half","step","starPath","html","nothing","_","i","fill","hostBase","reducedMotion","css","__decorateClass","property","state","customElement"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { LitElement } from 'lit';
|
|
1
|
+
import { LitElement, PropertyValues } from 'lit';
|
|
2
2
|
/**
|
|
3
3
|
* @element cg-resizable
|
|
4
4
|
* Two-pane split container with a draggable handle.
|
|
@@ -14,7 +14,10 @@ export declare class CgResizable extends LitElement {
|
|
|
14
14
|
defaultSize: number;
|
|
15
15
|
min: number;
|
|
16
16
|
max: number;
|
|
17
|
+
/** Accessible name for the resize handle (window-splitter pattern). */
|
|
18
|
+
handleLabel: string;
|
|
17
19
|
private _size;
|
|
20
|
+
protected willUpdate(changed: PropertyValues<this>): void;
|
|
18
21
|
private _activeMove;
|
|
19
22
|
private _activeUp;
|
|
20
23
|
connectedCallback(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cg-resizable.d.ts","sourceRoot":"","sources":["../../../src/components/cg-resizable/cg-resizable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"cg-resizable.d.ts","sourceRoot":"","sources":["../../../src/components/cg-resizable/cg-resizable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAIjE;;;;;;;;GAQG;AACH,qBACa,WAAY,SAAQ,UAAU;IACzC,OAAgB,MAAM,4BA8HnB;IAE0B,SAAS,EAAE,YAAY,GAAG,UAAU,CAAgB;IACrD,WAAW,SAAO;IAClB,GAAG,SAAO;IACV,GAAG,SAAO;IACtC,uEAAuE;IAC9B,WAAW,SAAkB;IAE7D,OAAO,CAAC,KAAK,CAAO;cAEV,UAAU,CAAC,OAAO,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAMlE,OAAO,CAAC,WAAW,CAA6C;IAChE,OAAO,CAAC,SAAS,CAA6B;IAErC,iBAAiB,IAAI,IAAI;IAKzB,oBAAoB,IAAI,IAAI;IASrC,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,QAAQ;IAWhB,OAAO,CAAC,cAAc;IA+BtB,OAAO,CAAC,UAAU;IAmCT,MAAM;CA0BhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,cAAc,EAAE,WAAW,CAAC;KAC7B;CACF"}
|
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
import { css as h, LitElement as v, html as g } from "lit";
|
|
2
2
|
import { property as l, state as u, customElement as p } from "lit/decorators.js";
|
|
3
|
-
import { h as b, r as f } from "../../chunks/premium.css-
|
|
4
|
-
var m = Object.defineProperty, w = Object.getOwnPropertyDescriptor,
|
|
5
|
-
for (var r =
|
|
6
|
-
(
|
|
7
|
-
return
|
|
3
|
+
import { h as b, r as f } from "../../chunks/premium.css-DHekUEUt.js";
|
|
4
|
+
var m = Object.defineProperty, w = Object.getOwnPropertyDescriptor, c = (e, t, o, i) => {
|
|
5
|
+
for (var r = i > 1 ? void 0 : i ? w(t, o) : t, a = e.length - 1, s; a >= 0; a--)
|
|
6
|
+
(s = e[a]) && (r = (i ? s(t, o, r) : s(r)) || r);
|
|
7
|
+
return i && r && m(t, o, r), r;
|
|
8
8
|
};
|
|
9
9
|
let n = class extends v {
|
|
10
10
|
constructor() {
|
|
11
|
-
super(...arguments), this.direction = "horizontal", this.defaultSize = 0.5, this.min = 0.1, this.max = 0.9, this._size = 0.5, this._activeMove = null, this._activeUp = null;
|
|
11
|
+
super(...arguments), this.direction = "horizontal", this.defaultSize = 0.5, this.min = 0.1, this.max = 0.9, this.handleLabel = "Resize panes", this._size = 0.5, this._activeMove = null, this._activeUp = null;
|
|
12
|
+
}
|
|
13
|
+
willUpdate(e) {
|
|
14
|
+
(e.has("min") || e.has("max")) && (this._size = this._clamp(this._size));
|
|
12
15
|
}
|
|
13
16
|
connectedCallback() {
|
|
14
17
|
super.connectedCallback(), this._size = this._clamp(this.defaultSize);
|
|
@@ -29,15 +32,17 @@ let n = class extends v {
|
|
|
29
32
|
}
|
|
30
33
|
_onPointerDown(e) {
|
|
31
34
|
e.preventDefault();
|
|
32
|
-
const t = e.currentTarget
|
|
33
|
-
t.
|
|
34
|
-
const o =
|
|
35
|
-
|
|
35
|
+
const t = e.currentTarget;
|
|
36
|
+
t.focus();
|
|
37
|
+
const o = e.pointerId;
|
|
38
|
+
t.setPointerCapture?.(o), t.setAttribute("data-dragging", "");
|
|
39
|
+
const i = this.getBoundingClientRect(), r = (s) => {
|
|
40
|
+
const d = this.direction === "horizontal" ? (s.clientX - i.left) / i.width : (s.clientY - i.top) / i.height;
|
|
36
41
|
this._setSize(d);
|
|
37
42
|
}, a = () => {
|
|
38
43
|
window.removeEventListener("pointermove", r), window.removeEventListener("pointerup", a), window.removeEventListener("pointercancel", a);
|
|
39
44
|
try {
|
|
40
|
-
t.releasePointerCapture?.(
|
|
45
|
+
t.releasePointerCapture?.(o);
|
|
41
46
|
} catch {
|
|
42
47
|
}
|
|
43
48
|
t.removeAttribute("data-dragging"), this._activeMove = null, this._activeUp = null;
|
|
@@ -45,13 +50,13 @@ let n = class extends v {
|
|
|
45
50
|
this._activeMove = r, this._activeUp = a, window.addEventListener("pointermove", r), window.addEventListener("pointerup", a), window.addEventListener("pointercancel", a);
|
|
46
51
|
}
|
|
47
52
|
_onKeydown(e) {
|
|
48
|
-
const
|
|
53
|
+
const o = e.shiftKey ? 0.1 : 0.05, i = this.direction === "horizontal", r = i ? "ArrowLeft" : "ArrowUp", a = i ? "ArrowRight" : "ArrowDown";
|
|
49
54
|
switch (e.key) {
|
|
50
55
|
case r:
|
|
51
|
-
e.preventDefault(), this._setSize(this._size -
|
|
56
|
+
e.preventDefault(), this._setSize(this._size - o);
|
|
52
57
|
break;
|
|
53
58
|
case a:
|
|
54
|
-
e.preventDefault(), this._setSize(this._size +
|
|
59
|
+
e.preventDefault(), this._setSize(this._size + o);
|
|
55
60
|
break;
|
|
56
61
|
case "PageUp":
|
|
57
62
|
e.preventDefault(), this._setSize(this._size - 0.1);
|
|
@@ -68,13 +73,14 @@ let n = class extends v {
|
|
|
68
73
|
}
|
|
69
74
|
}
|
|
70
75
|
render() {
|
|
71
|
-
const e = this.direction === "horizontal", t = e ? `width: ${this._size * 100}%; height: 100%;` : `height: ${this._size * 100}%; width: 100%;`,
|
|
76
|
+
const e = this.direction === "horizontal", t = e ? `width: ${this._size * 100}%; height: 100%;` : `height: ${this._size * 100}%; width: 100%;`, o = e ? `width: ${(1 - this._size) * 100}%; height: 100%;` : `height: ${(1 - this._size) * 100}%; width: 100%;`;
|
|
72
77
|
return g`
|
|
73
78
|
<div class="pane" style=${t}><slot name="start"></slot></div>
|
|
74
79
|
<div
|
|
75
80
|
class="handle"
|
|
76
81
|
role="separator"
|
|
77
82
|
tabindex="0"
|
|
83
|
+
aria-label=${this.handleLabel}
|
|
78
84
|
aria-orientation=${e ? "vertical" : "horizontal"}
|
|
79
85
|
aria-valuenow=${Math.round(this._size * 100)}
|
|
80
86
|
aria-valuemin=${Math.round(this.min * 100)}
|
|
@@ -82,7 +88,7 @@ let n = class extends v {
|
|
|
82
88
|
@pointerdown=${this._onPointerDown}
|
|
83
89
|
@keydown=${this._onKeydown}
|
|
84
90
|
></div>
|
|
85
|
-
<div class="pane" style=${
|
|
91
|
+
<div class="pane" style=${o}><slot name="end"></slot></div>
|
|
86
92
|
`;
|
|
87
93
|
}
|
|
88
94
|
};
|
|
@@ -104,7 +110,10 @@ n.styles = [b, f, h`
|
|
|
104
110
|
.handle {
|
|
105
111
|
flex-shrink: 0;
|
|
106
112
|
position: relative;
|
|
107
|
-
|
|
113
|
+
z-index: var(--cg-z-index-100);
|
|
114
|
+
transition:
|
|
115
|
+
background-color var(--cg-transition-duration-fast) var(--cg-transition-easing-default),
|
|
116
|
+
border-color var(--cg-transition-duration-fast) var(--cg-transition-easing-default);
|
|
108
117
|
}
|
|
109
118
|
:host([direction="horizontal"]) .handle {
|
|
110
119
|
width: var(--cg-spacing-6);
|
|
@@ -145,12 +154,10 @@ n.styles = [b, f, h`
|
|
|
145
154
|
top: 50%;
|
|
146
155
|
left: 50%;
|
|
147
156
|
transform: translate(-50%, -50%);
|
|
148
|
-
background:
|
|
149
|
-
var(--cg-color-surface-container-outlined),
|
|
150
|
-
var(--cg-color-surface-container-outlined),
|
|
151
|
-
var(--cg-color-surface-container-outlined);
|
|
152
157
|
pointer-events: none;
|
|
153
|
-
transition:
|
|
158
|
+
transition:
|
|
159
|
+
background-color var(--cg-transition-duration-fast) var(--cg-transition-easing-default),
|
|
160
|
+
box-shadow var(--cg-transition-duration-fast) var(--cg-transition-easing-default);
|
|
154
161
|
}
|
|
155
162
|
:host([direction="horizontal"]) .handle::before {
|
|
156
163
|
width: var(--cg-border-width-50);
|
|
@@ -174,31 +181,31 @@ n.styles = [b, f, h`
|
|
|
174
181
|
:host([direction="horizontal"]) .handle:focus-visible {
|
|
175
182
|
border-left-color: var(--cg-color-action-primary-border-default);
|
|
176
183
|
border-right-color: var(--cg-color-action-primary-border-default);
|
|
177
|
-
background:
|
|
184
|
+
background: var(--cg-overlay-accent-medium);
|
|
178
185
|
outline: none;
|
|
179
186
|
}
|
|
180
187
|
:host([direction="vertical"]) .handle:hover,
|
|
181
188
|
:host([direction="vertical"]) .handle:focus-visible {
|
|
182
189
|
border-top-color: var(--cg-color-action-primary-border-default);
|
|
183
190
|
border-bottom-color: var(--cg-color-action-primary-border-default);
|
|
184
|
-
background:
|
|
191
|
+
background: var(--cg-overlay-accent-medium);
|
|
185
192
|
outline: none;
|
|
186
193
|
}
|
|
187
194
|
.handle:hover::before,
|
|
188
195
|
.handle:focus-visible::before {
|
|
189
|
-
background: var(--cg-color-
|
|
196
|
+
background: var(--cg-color-accent-text);
|
|
190
197
|
}
|
|
191
198
|
:host([direction="horizontal"]) .handle:hover::before,
|
|
192
199
|
:host([direction="horizontal"]) .handle:focus-visible::before {
|
|
193
200
|
box-shadow:
|
|
194
|
-
calc(var(--cg-spacing-4) * -1) 0 0 0 var(--cg-color-
|
|
195
|
-
var(--cg-spacing-4) 0 0 0 var(--cg-color-
|
|
201
|
+
calc(var(--cg-spacing-4) * -1) 0 0 0 var(--cg-color-accent-text),
|
|
202
|
+
var(--cg-spacing-4) 0 0 0 var(--cg-color-accent-text);
|
|
196
203
|
}
|
|
197
204
|
:host([direction="vertical"]) .handle:hover::before,
|
|
198
205
|
:host([direction="vertical"]) .handle:focus-visible::before {
|
|
199
206
|
box-shadow:
|
|
200
|
-
0 calc(var(--cg-spacing-4) * -1) 0 0 var(--cg-color-
|
|
201
|
-
0 var(--cg-spacing-4) 0 0 var(--cg-color-
|
|
207
|
+
0 calc(var(--cg-spacing-4) * -1) 0 0 var(--cg-color-accent-text),
|
|
208
|
+
0 var(--cg-spacing-4) 0 0 var(--cg-color-accent-text);
|
|
202
209
|
}
|
|
203
210
|
|
|
204
211
|
/* Active drag — stronger tint while pointer is down. */
|
|
@@ -212,22 +219,25 @@ n.styles = [b, f, h`
|
|
|
212
219
|
0 0 0 calc(var(--cg-focus-ring-offset) + var(--cg-focus-ring-width)) var(--cg-color-focus-ring);
|
|
213
220
|
}
|
|
214
221
|
`];
|
|
215
|
-
|
|
222
|
+
c([
|
|
216
223
|
l({ reflect: !0 })
|
|
217
224
|
], n.prototype, "direction", 2);
|
|
218
|
-
|
|
225
|
+
c([
|
|
219
226
|
l({ type: Number })
|
|
220
227
|
], n.prototype, "defaultSize", 2);
|
|
221
|
-
|
|
228
|
+
c([
|
|
222
229
|
l({ type: Number })
|
|
223
230
|
], n.prototype, "min", 2);
|
|
224
|
-
|
|
231
|
+
c([
|
|
225
232
|
l({ type: Number })
|
|
226
233
|
], n.prototype, "max", 2);
|
|
227
|
-
|
|
234
|
+
c([
|
|
235
|
+
l({ attribute: "handle-label" })
|
|
236
|
+
], n.prototype, "handleLabel", 2);
|
|
237
|
+
c([
|
|
228
238
|
u()
|
|
229
239
|
], n.prototype, "_size", 2);
|
|
230
|
-
n =
|
|
240
|
+
n = c([
|
|
231
241
|
p("cg-resizable")
|
|
232
242
|
], n);
|
|
233
243
|
export {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cg-resizable.js","sources":["../../../src/components/cg-resizable/cg-resizable.ts"],"sourcesContent":["import { LitElement, html, css } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { hostBlock, reducedMotion } from '../../styles/index.js';\n\n/**\n * @element cg-resizable\n * Two-pane split container with a draggable handle.\n *\n * @slot start - First pane (left or top).\n * @slot end - Second pane (right or bottom).\n *\n * @fires {CustomEvent<{size:number}>} cg-resize - When the split ratio changes.\n */\n@customElement('cg-resizable')\nexport class CgResizable extends LitElement {\n static override styles = [hostBlock, reducedMotion, css`\n :host {\n display: flex;\n width: 100%;\n height: 100%;\n min-height: var(--cg-spacing-160);\n overflow: hidden;\n }\n :host([direction=\"vertical\"]) { flex-direction: column; }\n\n .pane {\n overflow: auto;\n position: relative;\n }\n\n .handle {\n flex-shrink: 0;\n position: relative;\n transition: background-color var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n :host([direction=\"horizontal\"]) .handle {\n width: var(--cg-spacing-6);\n cursor: col-resize;\n background: transparent;\n border-left: var(--cg-border-width-50) solid var(--cg-color-surface-container-border);\n border-right: var(--cg-border-width-50) solid var(--cg-color-surface-container-border);\n }\n :host([direction=\"vertical\"]) .handle {\n height: var(--cg-spacing-6);\n cursor: row-resize;\n background: transparent;\n border-top: var(--cg-border-width-50) solid var(--cg-color-surface-container-border);\n border-bottom: var(--cg-border-width-50) solid var(--cg-color-surface-container-border);\n }\n\n /* Invisible hit area — extends the handle on the perpendicular axis to\n hit the WCAG 2.5.5 / Cognivo 44px minimum touch-target requirement. */\n .handle::after {\n content: '';\n position: absolute;\n inset: 0;\n }\n :host([direction=\"horizontal\"]) .handle::after {\n left: calc(var(--cg-spacing-20) * -1);\n right: calc(var(--cg-spacing-20) * -1);\n }\n :host([direction=\"vertical\"]) .handle::after {\n top: calc(var(--cg-spacing-20) * -1);\n bottom: calc(var(--cg-spacing-20) * -1);\n }\n\n /* Visible grip glyph — three small bars centered on the handle so users\n see it's draggable. */\n .handle::before {\n content: '';\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n background:\n var(--cg-color-surface-container-outlined),\n var(--cg-color-surface-container-outlined),\n var(--cg-color-surface-container-outlined);\n pointer-events: none;\n transition: background-color var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n :host([direction=\"horizontal\"]) .handle::before {\n width: var(--cg-border-width-50);\n height: var(--cg-spacing-24);\n background: var(--cg-color-surface-container-outlined);\n box-shadow:\n calc(var(--cg-spacing-4) * -1) 0 0 0 var(--cg-color-surface-container-outlined),\n var(--cg-spacing-4) 0 0 0 var(--cg-color-surface-container-outlined);\n }\n :host([direction=\"vertical\"]) .handle::before {\n width: var(--cg-spacing-24);\n height: var(--cg-border-width-50);\n background: var(--cg-color-surface-container-outlined);\n box-shadow:\n 0 calc(var(--cg-spacing-4) * -1) 0 0 var(--cg-color-surface-container-outlined),\n 0 var(--cg-spacing-4) 0 0 var(--cg-color-surface-container-outlined);\n }\n\n /* Hover + focus-visible — brand-accent borders + tinted fill. */\n :host([direction=\"horizontal\"]) .handle:hover,\n :host([direction=\"horizontal\"]) .handle:focus-visible {\n border-left-color: var(--cg-color-action-primary-border-default);\n border-right-color: var(--cg-color-action-primary-border-default);\n background: color-mix(in srgb, var(--cg-color-action-primary-background-default) 20%, transparent);\n outline: none;\n }\n :host([direction=\"vertical\"]) .handle:hover,\n :host([direction=\"vertical\"]) .handle:focus-visible {\n border-top-color: var(--cg-color-action-primary-border-default);\n border-bottom-color: var(--cg-color-action-primary-border-default);\n background: color-mix(in srgb, var(--cg-color-action-primary-background-default) 20%, transparent);\n outline: none;\n }\n .handle:hover::before,\n .handle:focus-visible::before {\n background: var(--cg-color-action-primary-text-default);\n }\n :host([direction=\"horizontal\"]) .handle:hover::before,\n :host([direction=\"horizontal\"]) .handle:focus-visible::before {\n box-shadow:\n calc(var(--cg-spacing-4) * -1) 0 0 0 var(--cg-color-action-primary-text-default),\n var(--cg-spacing-4) 0 0 0 var(--cg-color-action-primary-text-default);\n }\n :host([direction=\"vertical\"]) .handle:hover::before,\n :host([direction=\"vertical\"]) .handle:focus-visible::before {\n box-shadow:\n 0 calc(var(--cg-spacing-4) * -1) 0 0 var(--cg-color-action-primary-text-default),\n 0 var(--cg-spacing-4) 0 0 var(--cg-color-action-primary-text-default);\n }\n\n /* Active drag — stronger tint while pointer is down. */\n .handle[data-dragging] {\n background: color-mix(in srgb, var(--cg-color-action-primary-background-default) 35%, transparent);\n }\n\n .handle:focus-visible {\n box-shadow:\n 0 0 0 var(--cg-focus-ring-offset) var(--cg-color-focus-ring-offset),\n 0 0 0 calc(var(--cg-focus-ring-offset) + var(--cg-focus-ring-width)) var(--cg-color-focus-ring);\n }\n `];\n\n @property({ reflect: true }) direction: 'horizontal' | 'vertical' = 'horizontal';\n @property({ type: Number }) defaultSize = 0.5;\n @property({ type: Number }) min = 0.1;\n @property({ type: Number }) max = 0.9;\n\n @state() private _size = 0.5;\n\n private _activeMove: ((ev: PointerEvent) => void) | null = null;\n private _activeUp: (() => void) | null = null;\n\n override connectedCallback(): void {\n super.connectedCallback();\n this._size = this._clamp(this.defaultSize);\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n // Drop any in-progress drag listeners so an unmount mid-drag doesn't leak.\n if (this._activeMove) window.removeEventListener('pointermove', this._activeMove);\n if (this._activeUp) window.removeEventListener('pointerup', this._activeUp);\n this._activeMove = null;\n this._activeUp = null;\n }\n\n private _clamp(v: number): number {\n return Math.max(this.min, Math.min(this.max, v));\n }\n\n private _setSize(v: number): void {\n const next = this._clamp(v);\n if (next === this._size) return;\n this._size = next;\n this.dispatchEvent(new CustomEvent('cg-resize', {\n bubbles: true,\n composed: true,\n detail: { size: next },\n }));\n }\n\n private _onPointerDown(e: PointerEvent): void {\n e.preventDefault();\n const handle = e.currentTarget as HTMLElement;\n const pointerId = e.pointerId;\n handle.setPointerCapture?.(pointerId);\n handle.setAttribute('data-dragging', '');\n const rect = this.getBoundingClientRect();\n const move = (ev: PointerEvent) => {\n const fraction =\n this.direction === 'horizontal'\n ? (ev.clientX - rect.left) / rect.width\n : (ev.clientY - rect.top) / rect.height;\n this._setSize(fraction);\n };\n const up = () => {\n window.removeEventListener('pointermove', move);\n window.removeEventListener('pointerup', up);\n window.removeEventListener('pointercancel', up);\n try { handle.releasePointerCapture?.(pointerId); } catch { /* already released */ }\n handle.removeAttribute('data-dragging');\n this._activeMove = null;\n this._activeUp = null;\n };\n this._activeMove = move;\n this._activeUp = up;\n window.addEventListener('pointermove', move);\n window.addEventListener('pointerup', up);\n window.addEventListener('pointercancel', up);\n }\n\n private _onKeydown(e: KeyboardEvent): void {\n // 5% per arrow press, 10% with Shift, 10% on PageUp/PageDown.\n const baseStep = 0.05;\n const step = e.shiftKey ? baseStep * 2 : baseStep;\n const horizontal = this.direction === 'horizontal';\n const decreaseKey = horizontal ? 'ArrowLeft' : 'ArrowUp';\n const increaseKey = horizontal ? 'ArrowRight' : 'ArrowDown';\n switch (e.key) {\n case decreaseKey:\n e.preventDefault();\n this._setSize(this._size - step);\n break;\n case increaseKey:\n e.preventDefault();\n this._setSize(this._size + step);\n break;\n case 'PageUp':\n e.preventDefault();\n this._setSize(this._size - 0.1);\n break;\n case 'PageDown':\n e.preventDefault();\n this._setSize(this._size + 0.1);\n break;\n case 'Home':\n e.preventDefault();\n this._setSize(this.min);\n break;\n case 'End':\n e.preventDefault();\n this._setSize(this.max);\n break;\n }\n }\n\n override render() {\n const horizontal = this.direction === 'horizontal';\n const startStyle = horizontal\n ? `width: ${this._size * 100}%; height: 100%;`\n : `height: ${this._size * 100}%; width: 100%;`;\n const endStyle = horizontal\n ? `width: ${(1 - this._size) * 100}%; height: 100%;`\n : `height: ${(1 - this._size) * 100}%; width: 100%;`;\n\n return html`\n <div class=\"pane\" style=${startStyle}><slot name=\"start\"></slot></div>\n <div\n class=\"handle\"\n role=\"separator\"\n tabindex=\"0\"\n aria-orientation=${horizontal ? 'vertical' : 'horizontal'}\n aria-valuenow=${Math.round(this._size * 100)}\n aria-valuemin=${Math.round(this.min * 100)}\n aria-valuemax=${Math.round(this.max * 100)}\n @pointerdown=${this._onPointerDown}\n @keydown=${this._onKeydown}\n ></div>\n <div class=\"pane\" style=${endStyle}><slot name=\"end\"></slot></div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'cg-resizable': CgResizable;\n }\n}\n"],"names":["CgResizable","LitElement","v","next","handle","pointerId","rect","move","ev","fraction","up","step","horizontal","decreaseKey","increaseKey","startStyle","endStyle","html","hostBlock","reducedMotion","css","__decorateClass","property","state","customElement"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cg-resizable.js","sources":["../../../src/components/cg-resizable/cg-resizable.ts"],"sourcesContent":["import { LitElement, html, css, type PropertyValues } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { hostBlock, reducedMotion } from '../../styles/index.js';\n\n/**\n * @element cg-resizable\n * Two-pane split container with a draggable handle.\n *\n * @slot start - First pane (left or top).\n * @slot end - Second pane (right or bottom).\n *\n * @fires {CustomEvent<{size:number}>} cg-resize - When the split ratio changes.\n */\n@customElement('cg-resizable')\nexport class CgResizable extends LitElement {\n static override styles = [hostBlock, reducedMotion, css`\n :host {\n display: flex;\n width: 100%;\n height: 100%;\n min-height: var(--cg-spacing-160);\n overflow: hidden;\n }\n :host([direction=\"vertical\"]) { flex-direction: column; }\n\n .pane {\n overflow: auto;\n position: relative;\n }\n\n .handle {\n flex-shrink: 0;\n position: relative;\n z-index: var(--cg-z-index-100);\n transition:\n background-color var(--cg-transition-duration-fast) var(--cg-transition-easing-default),\n border-color var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n :host([direction=\"horizontal\"]) .handle {\n width: var(--cg-spacing-6);\n cursor: col-resize;\n background: transparent;\n border-left: var(--cg-border-width-50) solid var(--cg-color-surface-container-border);\n border-right: var(--cg-border-width-50) solid var(--cg-color-surface-container-border);\n }\n :host([direction=\"vertical\"]) .handle {\n height: var(--cg-spacing-6);\n cursor: row-resize;\n background: transparent;\n border-top: var(--cg-border-width-50) solid var(--cg-color-surface-container-border);\n border-bottom: var(--cg-border-width-50) solid var(--cg-color-surface-container-border);\n }\n\n /* Invisible hit area — extends the handle on the perpendicular axis to\n hit the WCAG 2.5.5 / Cognivo 44px minimum touch-target requirement. */\n .handle::after {\n content: '';\n position: absolute;\n inset: 0;\n }\n :host([direction=\"horizontal\"]) .handle::after {\n left: calc(var(--cg-spacing-20) * -1);\n right: calc(var(--cg-spacing-20) * -1);\n }\n :host([direction=\"vertical\"]) .handle::after {\n top: calc(var(--cg-spacing-20) * -1);\n bottom: calc(var(--cg-spacing-20) * -1);\n }\n\n /* Visible grip glyph — three small bars centered on the handle so users\n see it's draggable. */\n .handle::before {\n content: '';\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n pointer-events: none;\n transition:\n background-color var(--cg-transition-duration-fast) var(--cg-transition-easing-default),\n box-shadow var(--cg-transition-duration-fast) var(--cg-transition-easing-default);\n }\n :host([direction=\"horizontal\"]) .handle::before {\n width: var(--cg-border-width-50);\n height: var(--cg-spacing-24);\n background: var(--cg-color-surface-container-outlined);\n box-shadow:\n calc(var(--cg-spacing-4) * -1) 0 0 0 var(--cg-color-surface-container-outlined),\n var(--cg-spacing-4) 0 0 0 var(--cg-color-surface-container-outlined);\n }\n :host([direction=\"vertical\"]) .handle::before {\n width: var(--cg-spacing-24);\n height: var(--cg-border-width-50);\n background: var(--cg-color-surface-container-outlined);\n box-shadow:\n 0 calc(var(--cg-spacing-4) * -1) 0 0 var(--cg-color-surface-container-outlined),\n 0 var(--cg-spacing-4) 0 0 var(--cg-color-surface-container-outlined);\n }\n\n /* Hover + focus-visible — brand-accent borders + tinted fill. */\n :host([direction=\"horizontal\"]) .handle:hover,\n :host([direction=\"horizontal\"]) .handle:focus-visible {\n border-left-color: var(--cg-color-action-primary-border-default);\n border-right-color: var(--cg-color-action-primary-border-default);\n background: var(--cg-overlay-accent-medium);\n outline: none;\n }\n :host([direction=\"vertical\"]) .handle:hover,\n :host([direction=\"vertical\"]) .handle:focus-visible {\n border-top-color: var(--cg-color-action-primary-border-default);\n border-bottom-color: var(--cg-color-action-primary-border-default);\n background: var(--cg-overlay-accent-medium);\n outline: none;\n }\n .handle:hover::before,\n .handle:focus-visible::before {\n background: var(--cg-color-accent-text);\n }\n :host([direction=\"horizontal\"]) .handle:hover::before,\n :host([direction=\"horizontal\"]) .handle:focus-visible::before {\n box-shadow:\n calc(var(--cg-spacing-4) * -1) 0 0 0 var(--cg-color-accent-text),\n var(--cg-spacing-4) 0 0 0 var(--cg-color-accent-text);\n }\n :host([direction=\"vertical\"]) .handle:hover::before,\n :host([direction=\"vertical\"]) .handle:focus-visible::before {\n box-shadow:\n 0 calc(var(--cg-spacing-4) * -1) 0 0 var(--cg-color-accent-text),\n 0 var(--cg-spacing-4) 0 0 var(--cg-color-accent-text);\n }\n\n /* Active drag — stronger tint while pointer is down. */\n .handle[data-dragging] {\n background: color-mix(in srgb, var(--cg-color-action-primary-background-default) 35%, transparent);\n }\n\n .handle:focus-visible {\n box-shadow:\n 0 0 0 var(--cg-focus-ring-offset) var(--cg-color-focus-ring-offset),\n 0 0 0 calc(var(--cg-focus-ring-offset) + var(--cg-focus-ring-width)) var(--cg-color-focus-ring);\n }\n `];\n\n @property({ reflect: true }) direction: 'horizontal' | 'vertical' = 'horizontal';\n @property({ type: Number }) defaultSize = 0.5;\n @property({ type: Number }) min = 0.1;\n @property({ type: Number }) max = 0.9;\n /** Accessible name for the resize handle (window-splitter pattern). */\n @property({ attribute: 'handle-label' }) handleLabel = 'Resize panes';\n\n @state() private _size = 0.5;\n\n protected override willUpdate(changed: PropertyValues<this>): void {\n if (changed.has('min') || changed.has('max')) {\n this._size = this._clamp(this._size);\n }\n }\n\n private _activeMove: ((ev: PointerEvent) => void) | null = null;\n private _activeUp: (() => void) | null = null;\n\n override connectedCallback(): void {\n super.connectedCallback();\n this._size = this._clamp(this.defaultSize);\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n // Drop any in-progress drag listeners so an unmount mid-drag doesn't leak.\n if (this._activeMove) window.removeEventListener('pointermove', this._activeMove);\n if (this._activeUp) window.removeEventListener('pointerup', this._activeUp);\n this._activeMove = null;\n this._activeUp = null;\n }\n\n private _clamp(v: number): number {\n return Math.max(this.min, Math.min(this.max, v));\n }\n\n private _setSize(v: number): void {\n const next = this._clamp(v);\n if (next === this._size) return;\n this._size = next;\n this.dispatchEvent(new CustomEvent('cg-resize', {\n bubbles: true,\n composed: true,\n detail: { size: next },\n }));\n }\n\n private _onPointerDown(e: PointerEvent): void {\n e.preventDefault();\n const handle = e.currentTarget as HTMLElement;\n handle.focus();\n const pointerId = e.pointerId;\n handle.setPointerCapture?.(pointerId);\n handle.setAttribute('data-dragging', '');\n const rect = this.getBoundingClientRect();\n const move = (ev: PointerEvent) => {\n const fraction =\n this.direction === 'horizontal'\n ? (ev.clientX - rect.left) / rect.width\n : (ev.clientY - rect.top) / rect.height;\n this._setSize(fraction);\n };\n const up = () => {\n window.removeEventListener('pointermove', move);\n window.removeEventListener('pointerup', up);\n window.removeEventListener('pointercancel', up);\n try { handle.releasePointerCapture?.(pointerId); } catch { /* already released */ }\n handle.removeAttribute('data-dragging');\n this._activeMove = null;\n this._activeUp = null;\n };\n this._activeMove = move;\n this._activeUp = up;\n window.addEventListener('pointermove', move);\n window.addEventListener('pointerup', up);\n window.addEventListener('pointercancel', up);\n }\n\n private _onKeydown(e: KeyboardEvent): void {\n // 5% per arrow press, 10% with Shift, 10% on PageUp/PageDown.\n const baseStep = 0.05;\n const step = e.shiftKey ? baseStep * 2 : baseStep;\n const horizontal = this.direction === 'horizontal';\n const decreaseKey = horizontal ? 'ArrowLeft' : 'ArrowUp';\n const increaseKey = horizontal ? 'ArrowRight' : 'ArrowDown';\n switch (e.key) {\n case decreaseKey:\n e.preventDefault();\n this._setSize(this._size - step);\n break;\n case increaseKey:\n e.preventDefault();\n this._setSize(this._size + step);\n break;\n case 'PageUp':\n e.preventDefault();\n this._setSize(this._size - 0.1);\n break;\n case 'PageDown':\n e.preventDefault();\n this._setSize(this._size + 0.1);\n break;\n case 'Home':\n e.preventDefault();\n this._setSize(this.min);\n break;\n case 'End':\n e.preventDefault();\n this._setSize(this.max);\n break;\n }\n }\n\n override render() {\n const horizontal = this.direction === 'horizontal';\n const startStyle = horizontal\n ? `width: ${this._size * 100}%; height: 100%;`\n : `height: ${this._size * 100}%; width: 100%;`;\n const endStyle = horizontal\n ? `width: ${(1 - this._size) * 100}%; height: 100%;`\n : `height: ${(1 - this._size) * 100}%; width: 100%;`;\n\n return html`\n <div class=\"pane\" style=${startStyle}><slot name=\"start\"></slot></div>\n <div\n class=\"handle\"\n role=\"separator\"\n tabindex=\"0\"\n aria-label=${this.handleLabel}\n aria-orientation=${horizontal ? 'vertical' : 'horizontal'}\n aria-valuenow=${Math.round(this._size * 100)}\n aria-valuemin=${Math.round(this.min * 100)}\n aria-valuemax=${Math.round(this.max * 100)}\n @pointerdown=${this._onPointerDown}\n @keydown=${this._onKeydown}\n ></div>\n <div class=\"pane\" style=${endStyle}><slot name=\"end\"></slot></div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'cg-resizable': CgResizable;\n }\n}\n"],"names":["CgResizable","LitElement","changed","v","next","handle","pointerId","rect","move","ev","fraction","up","step","horizontal","decreaseKey","increaseKey","startStyle","endStyle","html","hostBlock","reducedMotion","css","__decorateClass","property","state","customElement"],"mappings":"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"}
|
|
@@ -17,6 +17,14 @@ export declare class CgScrollArea extends LitElement {
|
|
|
17
17
|
static styles: import('lit').CSSResult[];
|
|
18
18
|
orientation: 'vertical' | 'horizontal' | 'both';
|
|
19
19
|
type: 'auto' | 'always' | 'hover';
|
|
20
|
+
/** Accessible name for the scroll region (role="region" is only emitted
|
|
21
|
+
* when named — an anonymous focusable container is an AT dead stop). */
|
|
22
|
+
label: string;
|
|
23
|
+
private _scrollable;
|
|
24
|
+
private _resizeObserver;
|
|
25
|
+
firstUpdated(): void;
|
|
26
|
+
disconnectedCallback(): void;
|
|
27
|
+
private _updateScrollable;
|
|
20
28
|
render(): import('lit').TemplateResult<1>;
|
|
21
29
|
}
|
|
22
30
|
declare global {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cg-scroll-area.d.ts","sourceRoot":"","sources":["../../../src/components/cg-scroll-area/cg-scroll-area.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"cg-scroll-area.d.ts","sourceRoot":"","sources":["../../../src/components/cg-scroll-area/cg-scroll-area.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAsB,MAAM,KAAK,CAAC;AAIrD;;;;;;;;;;;;;GAaG;AACH,qBACa,YAAa,SAAQ,UAAU;IAC1C,OAAgB,MAAM,4BAgGnB;IAE0B,WAAW,EAAE,UAAU,GAAG,YAAY,GAAG,MAAM,CAAc;IAC7D,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAW;IACzE;6EACyE;IAC7D,KAAK,SAAM;IAEd,OAAO,CAAC,WAAW,CAAS;IAErC,OAAO,CAAC,eAAe,CAA6B;IAE3C,YAAY,IAAI,IAAI;IAQpB,oBAAoB,IAAI,IAAI;IAMrC,OAAO,CAAC,iBAAiB;IAMhB,MAAM;CAehB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,gBAAgB,EAAE,YAAY,CAAC;KAChC;CACF"}
|