@lifecorner/angular-ui-kit 3.4.0 → 3.5.0
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/README.md +12 -2
- package/fesm2022/lifecorner-angular-ui-kit-accordion.mjs +454 -0
- package/fesm2022/lifecorner-angular-ui-kit-accordion.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-alert.mjs +297 -0
- package/fesm2022/lifecorner-angular-ui-kit-alert.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-app-shell.mjs +190 -0
- package/fesm2022/lifecorner-angular-ui-kit-app-shell.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-area-chart.mjs +446 -0
- package/fesm2022/lifecorner-angular-ui-kit-area-chart.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-avatar-group.mjs +158 -0
- package/fesm2022/lifecorner-angular-ui-kit-avatar-group.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-avatar.mjs +216 -0
- package/fesm2022/lifecorner-angular-ui-kit-avatar.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-badge.mjs +121 -0
- package/fesm2022/lifecorner-angular-ui-kit-badge.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-bar-chart.mjs +360 -0
- package/fesm2022/lifecorner-angular-ui-kit-bar-chart.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-bottom-nav.mjs +344 -0
- package/fesm2022/lifecorner-angular-ui-kit-bottom-nav.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-breadcrumbs.mjs +191 -0
- package/fesm2022/lifecorner-angular-ui-kit-breadcrumbs.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-button.mjs +423 -0
- package/fesm2022/lifecorner-angular-ui-kit-button.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-calendar.mjs +368 -0
- package/fesm2022/lifecorner-angular-ui-kit-calendar.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-callout.mjs +203 -0
- package/fesm2022/lifecorner-angular-ui-kit-callout.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-card.mjs +323 -0
- package/fesm2022/lifecorner-angular-ui-kit-card.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-chat.mjs +790 -0
- package/fesm2022/lifecorner-angular-ui-kit-chat.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-checkbox.mjs +325 -0
- package/fesm2022/lifecorner-angular-ui-kit-checkbox.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-chip.mjs +214 -0
- package/fesm2022/lifecorner-angular-ui-kit-chip.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-choice-prompt.mjs +375 -0
- package/fesm2022/lifecorner-angular-ui-kit-choice-prompt.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-code-block.mjs +518 -0
- package/fesm2022/lifecorner-angular-ui-kit-code-block.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-color-picker.mjs +278 -0
- package/fesm2022/lifecorner-angular-ui-kit-color-picker.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-combobox.mjs +688 -0
- package/fesm2022/lifecorner-angular-ui-kit-combobox.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-confirm-dialog.mjs +494 -0
- package/fesm2022/lifecorner-angular-ui-kit-confirm-dialog.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-container.mjs +103 -0
- package/fesm2022/lifecorner-angular-ui-kit-container.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-copy-field.mjs +308 -0
- package/fesm2022/lifecorner-angular-ui-kit-copy-field.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-date-range-picker.mjs +466 -0
- package/fesm2022/lifecorner-angular-ui-kit-date-range-picker.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-datepicker.mjs +810 -0
- package/fesm2022/lifecorner-angular-ui-kit-datepicker.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-dependency-viewer.mjs +1761 -0
- package/fesm2022/lifecorner-angular-ui-kit-dependency-viewer.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-description-list.mjs +165 -0
- package/fesm2022/lifecorner-angular-ui-kit-description-list.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-diff-viewer.mjs +356 -0
- package/fesm2022/lifecorner-angular-ui-kit-diff-viewer.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-divider.mjs +119 -0
- package/fesm2022/lifecorner-angular-ui-kit-divider.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-document-viewer.mjs +762 -0
- package/fesm2022/lifecorner-angular-ui-kit-document-viewer.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-donut-chart.mjs +255 -0
- package/fesm2022/lifecorner-angular-ui-kit-donut-chart.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-drawer.mjs +308 -0
- package/fesm2022/lifecorner-angular-ui-kit-drawer.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-email-input.mjs +519 -0
- package/fesm2022/lifecorner-angular-ui-kit-email-input.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-empty-state.mjs +143 -0
- package/fesm2022/lifecorner-angular-ui-kit-empty-state.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-error-display.mjs +306 -0
- package/fesm2022/lifecorner-angular-ui-kit-error-display.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-field-group.mjs +154 -0
- package/fesm2022/lifecorner-angular-ui-kit-field-group.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-file-upload.mjs +281 -0
- package/fesm2022/lifecorner-angular-ui-kit-file-upload.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-filter-bar.mjs +258 -0
- package/fesm2022/lifecorner-angular-ui-kit-filter-bar.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-footer.mjs +200 -0
- package/fesm2022/lifecorner-angular-ui-kit-footer.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-funnel-chart.mjs +292 -0
- package/fesm2022/lifecorner-angular-ui-kit-funnel-chart.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-gallery.mjs +563 -0
- package/fesm2022/lifecorner-angular-ui-kit-gallery.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-gantt-chart.mjs +314 -0
- package/fesm2022/lifecorner-angular-ui-kit-gantt-chart.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-gauge.mjs +265 -0
- package/fesm2022/lifecorner-angular-ui-kit-gauge.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-header.mjs +955 -0
- package/fesm2022/lifecorner-angular-ui-kit-header.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-heatmap.mjs +305 -0
- package/fesm2022/lifecorner-angular-ui-kit-heatmap.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-hero.mjs +168 -0
- package/fesm2022/lifecorner-angular-ui-kit-hero.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-icon-names.mjs +9 -0
- package/fesm2022/lifecorner-angular-ui-kit-icon-names.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-icon.mjs +1026 -0
- package/fesm2022/lifecorner-angular-ui-kit-icon.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-input.mjs +595 -0
- package/fesm2022/lifecorner-angular-ui-kit-input.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-internal-chart.mjs +105 -0
- package/fesm2022/lifecorner-angular-ui-kit-internal-chart.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-internal-overlay.mjs +50 -0
- package/fesm2022/lifecorner-angular-ui-kit-internal-overlay.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-internal-url.mjs +22 -0
- package/fesm2022/lifecorner-angular-ui-kit-internal-url.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-kanban-board.mjs +319 -0
- package/fesm2022/lifecorner-angular-ui-kit-kanban-board.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-line-chart.mjs +413 -0
- package/fesm2022/lifecorner-angular-ui-kit-line-chart.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-list.mjs +338 -0
- package/fesm2022/lifecorner-angular-ui-kit-list.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-log-viewer.mjs +813 -0
- package/fesm2022/lifecorner-angular-ui-kit-log-viewer.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-logo.mjs +226 -0
- package/fesm2022/lifecorner-angular-ui-kit-logo.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-markdown.mjs +756 -0
- package/fesm2022/lifecorner-angular-ui-kit-markdown.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-menu.mjs +321 -0
- package/fesm2022/lifecorner-angular-ui-kit-menu.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-modal.mjs +329 -0
- package/fesm2022/lifecorner-angular-ui-kit-modal.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-models.mjs +0 -0
- package/fesm2022/lifecorner-angular-ui-kit-next-step-card.mjs +419 -0
- package/fesm2022/lifecorner-angular-ui-kit-next-step-card.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-notification-center.mjs +644 -0
- package/fesm2022/lifecorner-angular-ui-kit-notification-center.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-number-input.mjs +401 -0
- package/fesm2022/lifecorner-angular-ui-kit-number-input.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-page-header.mjs +266 -0
- package/fesm2022/lifecorner-angular-ui-kit-page-header.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-page-layout.mjs +127 -0
- package/fesm2022/lifecorner-angular-ui-kit-page-layout.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-pagination.mjs +343 -0
- package/fesm2022/lifecorner-angular-ui-kit-pagination.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-password-input.mjs +696 -0
- package/fesm2022/lifecorner-angular-ui-kit-password-input.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-pie-chart.mjs +162 -0
- package/fesm2022/lifecorner-angular-ui-kit-pie-chart.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-pipeline.mjs +159 -0
- package/fesm2022/lifecorner-angular-ui-kit-pipeline.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-popover.mjs +190 -0
- package/fesm2022/lifecorner-angular-ui-kit-popover.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-progress-bar.mjs +190 -0
- package/fesm2022/lifecorner-angular-ui-kit-progress-bar.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-progress-ring.mjs +175 -0
- package/fesm2022/lifecorner-angular-ui-kit-progress-ring.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-provider-button.mjs +255 -0
- package/fesm2022/lifecorner-angular-ui-kit-provider-button.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-radar-chart.mjs +309 -0
- package/fesm2022/lifecorner-angular-ui-kit-radar-chart.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-radio.mjs +708 -0
- package/fesm2022/lifecorner-angular-ui-kit-radio.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-rating.mjs +327 -0
- package/fesm2022/lifecorner-angular-ui-kit-rating.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-rich-text-editor.mjs +718 -0
- package/fesm2022/lifecorner-angular-ui-kit-rich-text-editor.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-scatter-plot.mjs +415 -0
- package/fesm2022/lifecorner-angular-ui-kit-scatter-plot.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-search-input.mjs +290 -0
- package/fesm2022/lifecorner-angular-ui-kit-search-input.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-section.mjs +127 -0
- package/fesm2022/lifecorner-angular-ui-kit-section.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-select.mjs +650 -0
- package/fesm2022/lifecorner-angular-ui-kit-select.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-sidenav.mjs +691 -0
- package/fesm2022/lifecorner-angular-ui-kit-sidenav.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-skeleton.mjs +144 -0
- package/fesm2022/lifecorner-angular-ui-kit-skeleton.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-slider.mjs +204 -0
- package/fesm2022/lifecorner-angular-ui-kit-slider.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-spacer.mjs +73 -0
- package/fesm2022/lifecorner-angular-ui-kit-spacer.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-sparkline.mjs +318 -0
- package/fesm2022/lifecorner-angular-ui-kit-sparkline.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-spinner.mjs +95 -0
- package/fesm2022/lifecorner-angular-ui-kit-spinner.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-split-pane.mjs +298 -0
- package/fesm2022/lifecorner-angular-ui-kit-split-pane.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-stack.mjs +162 -0
- package/fesm2022/lifecorner-angular-ui-kit-stack.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-stacked-bar-chart.mjs +412 -0
- package/fesm2022/lifecorner-angular-ui-kit-stacked-bar-chart.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-stage-list.mjs +186 -0
- package/fesm2022/lifecorner-angular-ui-kit-stage-list.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-stat-trend.mjs +224 -0
- package/fesm2022/lifecorner-angular-ui-kit-stat-trend.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-status-dot.mjs +122 -0
- package/fesm2022/lifecorner-angular-ui-kit-status-dot.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-stepper.mjs +209 -0
- package/fesm2022/lifecorner-angular-ui-kit-stepper.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-switch.mjs +249 -0
- package/fesm2022/lifecorner-angular-ui-kit-switch.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-table.mjs +1434 -0
- package/fesm2022/lifecorner-angular-ui-kit-table.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-tabs.mjs +407 -0
- package/fesm2022/lifecorner-angular-ui-kit-tabs.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-tag-input.mjs +380 -0
- package/fesm2022/lifecorner-angular-ui-kit-tag-input.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-textarea.mjs +440 -0
- package/fesm2022/lifecorner-angular-ui-kit-textarea.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-theme.mjs +145 -0
- package/fesm2022/lifecorner-angular-ui-kit-theme.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-timeline.mjs +262 -0
- package/fesm2022/lifecorner-angular-ui-kit-timeline.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-toast.mjs +352 -0
- package/fesm2022/lifecorner-angular-ui-kit-toast.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-toggle-group.mjs +215 -0
- package/fesm2022/lifecorner-angular-ui-kit-toggle-group.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-tokens.mjs +134 -0
- package/fesm2022/lifecorner-angular-ui-kit-tokens.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-toolbar.mjs +225 -0
- package/fesm2022/lifecorner-angular-ui-kit-toolbar.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-tooltip.mjs +386 -0
- package/fesm2022/lifecorner-angular-ui-kit-tooltip.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-tree-view.mjs +509 -0
- package/fesm2022/lifecorner-angular-ui-kit-tree-view.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-typography.mjs +209 -0
- package/fesm2022/lifecorner-angular-ui-kit-typography.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-verification-code-input.mjs +365 -0
- package/fesm2022/lifecorner-angular-ui-kit-verification-code-input.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit-waterfall-chart.mjs +371 -0
- package/fesm2022/lifecorner-angular-ui-kit-waterfall-chart.mjs.map +1 -0
- package/fesm2022/lifecorner-angular-ui-kit.mjs +109 -38925
- package/package.json +449 -1
- package/types/lifecorner-angular-ui-kit-accordion.d.ts +239 -0
- package/types/lifecorner-angular-ui-kit-alert.d.ts +189 -0
- package/types/lifecorner-angular-ui-kit-app-shell.d.ts +148 -0
- package/types/lifecorner-angular-ui-kit-area-chart.d.ts +180 -0
- package/types/lifecorner-angular-ui-kit-avatar-group.d.ts +62 -0
- package/types/lifecorner-angular-ui-kit-avatar.d.ts +131 -0
- package/types/lifecorner-angular-ui-kit-badge.d.ts +59 -0
- package/types/lifecorner-angular-ui-kit-bar-chart.d.ts +157 -0
- package/types/lifecorner-angular-ui-kit-bottom-nav.d.ts +184 -0
- package/types/lifecorner-angular-ui-kit-breadcrumbs.d.ts +55 -0
- package/types/lifecorner-angular-ui-kit-button.d.ts +181 -0
- package/types/lifecorner-angular-ui-kit-calendar.d.ts +136 -0
- package/types/lifecorner-angular-ui-kit-callout.d.ts +77 -0
- package/types/lifecorner-angular-ui-kit-card.d.ts +213 -0
- package/types/lifecorner-angular-ui-kit-chat.d.ts +379 -0
- package/types/lifecorner-angular-ui-kit-checkbox.d.ts +116 -0
- package/types/lifecorner-angular-ui-kit-chip.d.ts +104 -0
- package/types/lifecorner-angular-ui-kit-choice-prompt.d.ts +186 -0
- package/types/lifecorner-angular-ui-kit-code-block.d.ts +85 -0
- package/types/lifecorner-angular-ui-kit-color-picker.d.ts +88 -0
- package/types/lifecorner-angular-ui-kit-combobox.d.ts +222 -0
- package/types/lifecorner-angular-ui-kit-confirm-dialog.d.ts +211 -0
- package/types/lifecorner-angular-ui-kit-container.d.ts +47 -0
- package/types/lifecorner-angular-ui-kit-copy-field.d.ts +89 -0
- package/types/lifecorner-angular-ui-kit-date-range-picker.d.ts +126 -0
- package/types/lifecorner-angular-ui-kit-datepicker.d.ts +363 -0
- package/types/lifecorner-angular-ui-kit-dependency-viewer.d.ts +568 -0
- package/types/lifecorner-angular-ui-kit-description-list.d.ts +137 -0
- package/types/lifecorner-angular-ui-kit-diff-viewer.d.ts +93 -0
- package/types/lifecorner-angular-ui-kit-divider.d.ts +66 -0
- package/types/lifecorner-angular-ui-kit-document-viewer.d.ts +256 -0
- package/types/lifecorner-angular-ui-kit-donut-chart.d.ts +92 -0
- package/types/lifecorner-angular-ui-kit-drawer.d.ts +124 -0
- package/types/lifecorner-angular-ui-kit-email-input.d.ts +292 -0
- package/types/lifecorner-angular-ui-kit-empty-state.d.ts +81 -0
- package/types/lifecorner-angular-ui-kit-error-display.d.ts +157 -0
- package/types/lifecorner-angular-ui-kit-field-group.d.ts +69 -0
- package/types/lifecorner-angular-ui-kit-file-upload.d.ts +122 -0
- package/types/lifecorner-angular-ui-kit-filter-bar.d.ts +116 -0
- package/types/lifecorner-angular-ui-kit-footer.d.ts +97 -0
- package/types/lifecorner-angular-ui-kit-funnel-chart.d.ts +97 -0
- package/types/lifecorner-angular-ui-kit-gallery.d.ts +240 -0
- package/types/lifecorner-angular-ui-kit-gantt-chart.d.ts +133 -0
- package/types/lifecorner-angular-ui-kit-gauge.d.ts +94 -0
- package/types/lifecorner-angular-ui-kit-header.d.ts +496 -0
- package/types/lifecorner-angular-ui-kit-heatmap.d.ts +126 -0
- package/types/lifecorner-angular-ui-kit-hero.d.ts +121 -0
- package/types/lifecorner-angular-ui-kit-icon-names.d.ts +21 -0
- package/types/lifecorner-angular-ui-kit-icon.d.ts +260 -0
- package/types/lifecorner-angular-ui-kit-input.d.ts +346 -0
- package/types/lifecorner-angular-ui-kit-internal-chart.d.ts +86 -0
- package/types/lifecorner-angular-ui-kit-internal-overlay.d.ts +31 -0
- package/types/lifecorner-angular-ui-kit-internal-url.d.ts +22 -0
- package/types/lifecorner-angular-ui-kit-kanban-board.d.ts +111 -0
- package/types/lifecorner-angular-ui-kit-line-chart.d.ts +186 -0
- package/types/lifecorner-angular-ui-kit-list.d.ts +215 -0
- package/types/lifecorner-angular-ui-kit-log-viewer.d.ts +355 -0
- package/types/lifecorner-angular-ui-kit-logo.d.ts +182 -0
- package/types/lifecorner-angular-ui-kit-markdown.d.ts +278 -0
- package/types/lifecorner-angular-ui-kit-menu.d.ts +152 -0
- package/types/lifecorner-angular-ui-kit-modal.d.ts +207 -0
- package/types/lifecorner-angular-ui-kit-models.d.ts +62 -0
- package/types/lifecorner-angular-ui-kit-next-step-card.d.ts +262 -0
- package/types/lifecorner-angular-ui-kit-notification-center.d.ts +237 -0
- package/types/lifecorner-angular-ui-kit-number-input.d.ts +126 -0
- package/types/lifecorner-angular-ui-kit-page-header.d.ts +178 -0
- package/types/lifecorner-angular-ui-kit-page-layout.d.ts +61 -0
- package/types/lifecorner-angular-ui-kit-pagination.d.ts +141 -0
- package/types/lifecorner-angular-ui-kit-password-input.d.ts +361 -0
- package/types/lifecorner-angular-ui-kit-pie-chart.d.ts +58 -0
- package/types/lifecorner-angular-ui-kit-pipeline.d.ts +89 -0
- package/types/lifecorner-angular-ui-kit-popover.d.ts +104 -0
- package/types/lifecorner-angular-ui-kit-progress-bar.d.ts +116 -0
- package/types/lifecorner-angular-ui-kit-progress-ring.d.ts +67 -0
- package/types/lifecorner-angular-ui-kit-provider-button.d.ts +137 -0
- package/types/lifecorner-angular-ui-kit-radar-chart.d.ts +113 -0
- package/types/lifecorner-angular-ui-kit-radio.d.ts +297 -0
- package/types/lifecorner-angular-ui-kit-rating.d.ts +115 -0
- package/types/lifecorner-angular-ui-kit-rich-text-editor.d.ts +226 -0
- package/types/lifecorner-angular-ui-kit-scatter-plot.d.ts +190 -0
- package/types/lifecorner-angular-ui-kit-search-input.d.ts +137 -0
- package/types/lifecorner-angular-ui-kit-section.d.ts +34 -0
- package/types/lifecorner-angular-ui-kit-select.d.ts +274 -0
- package/types/lifecorner-angular-ui-kit-sidenav.d.ts +367 -0
- package/types/lifecorner-angular-ui-kit-skeleton.d.ts +61 -0
- package/types/lifecorner-angular-ui-kit-slider.d.ts +79 -0
- package/types/lifecorner-angular-ui-kit-spacer.d.ts +27 -0
- package/types/lifecorner-angular-ui-kit-sparkline.d.ts +113 -0
- package/types/lifecorner-angular-ui-kit-spinner.d.ts +50 -0
- package/types/lifecorner-angular-ui-kit-split-pane.d.ts +131 -0
- package/types/lifecorner-angular-ui-kit-stack.d.ts +49 -0
- package/types/lifecorner-angular-ui-kit-stacked-bar-chart.d.ts +171 -0
- package/types/lifecorner-angular-ui-kit-stage-list.d.ts +69 -0
- package/types/lifecorner-angular-ui-kit-stat-trend.d.ts +62 -0
- package/types/lifecorner-angular-ui-kit-status-dot.d.ts +62 -0
- package/types/lifecorner-angular-ui-kit-stepper.d.ts +113 -0
- package/types/lifecorner-angular-ui-kit-switch.d.ts +141 -0
- package/types/lifecorner-angular-ui-kit-table.d.ts +632 -0
- package/types/lifecorner-angular-ui-kit-tabs.d.ts +196 -0
- package/types/lifecorner-angular-ui-kit-tag-input.d.ts +123 -0
- package/types/lifecorner-angular-ui-kit-textarea.d.ts +225 -0
- package/types/lifecorner-angular-ui-kit-theme.d.ts +91 -0
- package/types/lifecorner-angular-ui-kit-timeline.d.ts +162 -0
- package/types/lifecorner-angular-ui-kit-toast.d.ts +204 -0
- package/types/lifecorner-angular-ui-kit-toggle-group.d.ts +100 -0
- package/types/lifecorner-angular-ui-kit-tokens.d.ts +134 -0
- package/types/lifecorner-angular-ui-kit-toolbar.d.ts +120 -0
- package/types/lifecorner-angular-ui-kit-tooltip.d.ts +120 -0
- package/types/lifecorner-angular-ui-kit-tree-view.d.ts +231 -0
- package/types/lifecorner-angular-ui-kit-typography.d.ts +126 -0
- package/types/lifecorner-angular-ui-kit-verification-code-input.d.ts +187 -0
- package/types/lifecorner-angular-ui-kit-waterfall-chart.d.ts +163 -0
- package/types/lifecorner-angular-ui-kit.d.ts +109 -17401
- package/fesm2022/lifecorner-angular-ui-kit.mjs.map +0 -1
|
@@ -0,0 +1,278 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
import { OnDestroy } from "@angular/core";
|
|
3
|
+
import { SafeHtml } from "@angular/platform-browser";
|
|
4
|
+
import { CodeBlockLanguage } from "@lifecorner/angular-ui-kit/code-block";
|
|
5
|
+
export interface MarkdownHeading {
|
|
6
|
+
level: number;
|
|
7
|
+
text: string;
|
|
8
|
+
id: string;
|
|
9
|
+
}
|
|
10
|
+
export interface MarkdownLinkClick {
|
|
11
|
+
href: string;
|
|
12
|
+
event: MouseEvent;
|
|
13
|
+
}
|
|
14
|
+
export interface MarkdownRendered {
|
|
15
|
+
headings: MarkdownHeading[];
|
|
16
|
+
}
|
|
17
|
+
export interface MarkdownChangesHighlighted {
|
|
18
|
+
/** Number of changed/added blocks highlighted in the current render. */
|
|
19
|
+
changedBlocks: number;
|
|
20
|
+
}
|
|
21
|
+
export interface RenderPart {
|
|
22
|
+
type: 'html' | 'code' | 'mermaid';
|
|
23
|
+
index: number;
|
|
24
|
+
safeHtml?: SafeHtml;
|
|
25
|
+
code?: string;
|
|
26
|
+
lang?: CodeBlockLanguage;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Markdown renderer component.
|
|
30
|
+
*
|
|
31
|
+
* Renders GitHub-Flavored Markdown (GFM) to sanitized HTML with
|
|
32
|
+
* optional syntax highlighting via `<lc-code-block>`.
|
|
33
|
+
*
|
|
34
|
+
* Supports headings (+ anchors), paragraphs, ordered/unordered lists, task lists
|
|
35
|
+
* (`- [ ]` / `- [x]` → accessible checkbox), blockquotes, horizontal rules,
|
|
36
|
+
* images, GFM tables (column alignment + horizontal scroll), bold/italic/
|
|
37
|
+
* strikethrough, inline code, fenced code (incl. `mermaid`), explicit links and
|
|
38
|
+
* autolinks (bare URLs / `www.` / emails, never inside code).
|
|
39
|
+
*
|
|
40
|
+
* Optionally highlights *changed* blocks in place: pass the pre-edit markdown as
|
|
41
|
+
* `previousContent` and set `highlightChanges` — added/edited blocks (diffed at
|
|
42
|
+
* block / list-item level) gain a left accent bar + subtle tint, can auto-fade
|
|
43
|
+
* (`changeHighlightFadeMs`) and scroll into view (`scrollToFirstChange`).
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* ```html
|
|
47
|
+
* <lc-markdown [content]="'# Hello World'" />
|
|
48
|
+
* <lc-markdown [src]="'/docs/readme.md'" />
|
|
49
|
+
* <lc-markdown
|
|
50
|
+
* [content]="current" [previousContent]="prev"
|
|
51
|
+
* [highlightChanges]="true" [changeHighlightFadeMs]="3000" />
|
|
52
|
+
* ```
|
|
53
|
+
*/
|
|
54
|
+
export declare class MarkdownComponent implements OnDestroy {
|
|
55
|
+
private readonly sanitizer;
|
|
56
|
+
private readonly instanceId;
|
|
57
|
+
private readonly http;
|
|
58
|
+
private readonly host;
|
|
59
|
+
private httpSub?;
|
|
60
|
+
private fadeTimer?;
|
|
61
|
+
private scrollTimer?;
|
|
62
|
+
private mermaidApiPromise?;
|
|
63
|
+
private mermaidInitialized;
|
|
64
|
+
private mermaidRenderRun;
|
|
65
|
+
/** URL or path to load markdown from */
|
|
66
|
+
readonly src: import("@angular/core").InputSignal<string | undefined>;
|
|
67
|
+
/** Raw markdown string */
|
|
68
|
+
readonly content: import("@angular/core").InputSignal<string | undefined>;
|
|
69
|
+
/** Display variant */
|
|
70
|
+
readonly variant: import("@angular/core").InputSignal<"default" | "compact" | "chat">;
|
|
71
|
+
/** Target for links */
|
|
72
|
+
readonly linkTarget: import("@angular/core").InputSignal<"_self" | "_blank">;
|
|
73
|
+
/** Whether to sanitize HTML output */
|
|
74
|
+
readonly sanitize: import("@angular/core").InputSignal<boolean>;
|
|
75
|
+
/** Whether to use code-block for fenced code */
|
|
76
|
+
readonly syntaxHighlight: import("@angular/core").InputSignal<boolean>;
|
|
77
|
+
/** Whether to show anchor links on headings */
|
|
78
|
+
readonly showHeadingAnchors: import("@angular/core").InputSignal<boolean>;
|
|
79
|
+
/** Base URL for resolving relative links/images */
|
|
80
|
+
readonly baseUrl: import("@angular/core").InputSignal<string | undefined>;
|
|
81
|
+
/** Enable change highlighting (requires `previousContent` to compute a diff). */
|
|
82
|
+
readonly highlightChanges: import("@angular/core").InputSignal<boolean>;
|
|
83
|
+
/**
|
|
84
|
+
* The prior Markdown. When it differs from `content`, the changed/added blocks
|
|
85
|
+
* in `content` are highlighted. The caller passes the pre-edit markdown.
|
|
86
|
+
*/
|
|
87
|
+
readonly previousContent: import("@angular/core").InputSignal<string | undefined>;
|
|
88
|
+
/** Auto-fade the highlight after N ms. 0 / undefined ⇒ persist until content changes. */
|
|
89
|
+
readonly changeHighlightFadeMs: import("@angular/core").InputSignal<number | undefined>;
|
|
90
|
+
/** Scroll the first changed block into view when highlights appear. */
|
|
91
|
+
readonly scrollToFirstChange: import("@angular/core").InputSignal<boolean>;
|
|
92
|
+
/** Screen-reader marker put in front of each highlighted block (`highlightChanges`). */
|
|
93
|
+
readonly changedMarkerLabel: import("@angular/core").InputSignal<string>;
|
|
94
|
+
/** Announced after the count when one block changed: `1 Abschnitt geändert`. */
|
|
95
|
+
readonly changedSummaryOneLabel: import("@angular/core").InputSignal<string>;
|
|
96
|
+
/** Announced after the count when several blocks changed: `3 Abschnitte geändert`. */
|
|
97
|
+
readonly changedSummaryManyLabel: import("@angular/core").InputSignal<string>;
|
|
98
|
+
/** Shown while a Mermaid diagram renders. */
|
|
99
|
+
readonly mermaidLoadingLabel: import("@angular/core").InputSignal<string>;
|
|
100
|
+
/** Shown above the source when a Mermaid diagram fails. */
|
|
101
|
+
readonly mermaidErrorLabel: import("@angular/core").InputSignal<string>;
|
|
102
|
+
/** Shown above the source when the optional `mermaid` package cannot be loaded. */
|
|
103
|
+
readonly mermaidUnavailableLabel: import("@angular/core").InputSignal<string>;
|
|
104
|
+
/** Emitted when a link is clicked */
|
|
105
|
+
readonly linkClick: import("@angular/core").OutputEmitterRef<MarkdownLinkClick>;
|
|
106
|
+
/** Emitted after rendering with heading TOC */
|
|
107
|
+
readonly rendered: import("@angular/core").OutputEmitterRef<MarkdownRendered>;
|
|
108
|
+
/** Emitted after a render that produced change highlights. */
|
|
109
|
+
readonly changesHighlighted: import("@angular/core").OutputEmitterRef<MarkdownChangesHighlighted>;
|
|
110
|
+
/** Internal resolved markdown source */
|
|
111
|
+
protected resolvedMarkdown: import("@angular/core").WritableSignal<string>;
|
|
112
|
+
/** Parsed result (computed once from resolvedMarkdown) */
|
|
113
|
+
private parsed;
|
|
114
|
+
/**
|
|
115
|
+
* Rendered HTML after applying change highlights. When highlighting is off (or
|
|
116
|
+
* there is no differing `previousContent`) this returns the parsed HTML
|
|
117
|
+
* unchanged, so the non-highlight path is byte-for-byte identical to before.
|
|
118
|
+
*/
|
|
119
|
+
private readonly highlightResult;
|
|
120
|
+
/** Number of changed/added blocks highlighted in the current render. */
|
|
121
|
+
protected readonly changedCount: import("@angular/core").Signal<number>;
|
|
122
|
+
/** Visually-hidden polite summary announced when highlights appear. */
|
|
123
|
+
protected readonly changeSummary: import("@angular/core").Signal<string>;
|
|
124
|
+
/** Whether the current highlights have faded out (after `changeHighlightFadeMs`). */
|
|
125
|
+
protected readonly highlightsFaded: import("@angular/core").WritableSignal<boolean>;
|
|
126
|
+
/** Computed render parts (HTML chunks + code blocks interleaved) */
|
|
127
|
+
protected renderParts: import("@angular/core").Signal<RenderPart[]>;
|
|
128
|
+
/**
|
|
129
|
+
* The HTML as it may go into the DOM. With `sanitize` on (the default) that is
|
|
130
|
+
* Angular's HTML sanitizer's output — which drops every `id`, since `id` isn't
|
|
131
|
+
* on its attribute allow-list. The heading ids are put back afterwards: they
|
|
132
|
+
* are what anchors and the `rendered` TOC point at, and each is a `[\w-]`
|
|
133
|
+
* slug this parser produced itself, so re-adding them reopens nothing. The
|
|
134
|
+
* cursor walks the parsed headings in document order across the parts.
|
|
135
|
+
*/
|
|
136
|
+
private sanitizeHtml;
|
|
137
|
+
protected containerClasses: import("@angular/core").Signal<string>;
|
|
138
|
+
protected mermaidSvgs: import("@angular/core").WritableSignal<Record<number, SafeHtml>>;
|
|
139
|
+
protected mermaidErrors: import("@angular/core").WritableSignal<Record<number, string>>;
|
|
140
|
+
private headings;
|
|
141
|
+
constructor();
|
|
142
|
+
ngOnDestroy(): void;
|
|
143
|
+
protected onLinkClick(event: MouseEvent): void;
|
|
144
|
+
/** Side-effects for a render: emit, (re)arm the fade timer, optional scroll. */
|
|
145
|
+
private onHighlightResult;
|
|
146
|
+
private scrollToFirstChanged;
|
|
147
|
+
/**
|
|
148
|
+
* Wraps the changed/added top-level blocks of `html` with
|
|
149
|
+
* `.lc-markdown__block--changed`. A block is "changed" when its normalized
|
|
150
|
+
* text is not present among the blocks of `prevMarkdown`. Lists are diffed
|
|
151
|
+
* per `<li>` and tables per `<tr>` so a single edited item highlights alone.
|
|
152
|
+
*/
|
|
153
|
+
private applyChangeHighlights;
|
|
154
|
+
/** Normalized text set of the logical blocks within an HTML fragment. */
|
|
155
|
+
private collectBlockKeys;
|
|
156
|
+
/**
|
|
157
|
+
* Visits each diffable block under `root`: top-level elements, but descending
|
|
158
|
+
* into `<ul>`/`<ol>` (per `<li>`) and `<table>` (per `<tr>`).
|
|
159
|
+
*/
|
|
160
|
+
private eachLogicalBlock;
|
|
161
|
+
private blockTextKey;
|
|
162
|
+
private htmlToElement;
|
|
163
|
+
private loadFromUrl;
|
|
164
|
+
private splitIntoParts;
|
|
165
|
+
private parseMarkdown;
|
|
166
|
+
private parseTables;
|
|
167
|
+
/** Splits a pipe-table row into trimmed cells, dropping the leading/trailing edges. */
|
|
168
|
+
private splitTableRow;
|
|
169
|
+
private escapeHtml;
|
|
170
|
+
/**
|
|
171
|
+
* Linkifies bare URLs (`http(s)://…`, `www.…`) and email addresses in text,
|
|
172
|
+
* leaving anything inside an existing `<a>` or `<code>` (and all tag
|
|
173
|
+
* attributes) untouched. The HTML is tokenized into tags vs. text so only
|
|
174
|
+
* top-level text runs are linkified.
|
|
175
|
+
*/
|
|
176
|
+
private autolink;
|
|
177
|
+
protected mermaidSvgFor(index: number): SafeHtml | null;
|
|
178
|
+
protected mermaidErrorFor(index: number): string | null;
|
|
179
|
+
private renderMermaidParts;
|
|
180
|
+
private getMermaidApi;
|
|
181
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<MarkdownComponent, never>;
|
|
182
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<MarkdownComponent, "lc-markdown", never, {
|
|
183
|
+
"src": {
|
|
184
|
+
"alias": "src";
|
|
185
|
+
"required": false;
|
|
186
|
+
"isSignal": true;
|
|
187
|
+
};
|
|
188
|
+
"content": {
|
|
189
|
+
"alias": "content";
|
|
190
|
+
"required": false;
|
|
191
|
+
"isSignal": true;
|
|
192
|
+
};
|
|
193
|
+
"variant": {
|
|
194
|
+
"alias": "variant";
|
|
195
|
+
"required": false;
|
|
196
|
+
"isSignal": true;
|
|
197
|
+
};
|
|
198
|
+
"linkTarget": {
|
|
199
|
+
"alias": "linkTarget";
|
|
200
|
+
"required": false;
|
|
201
|
+
"isSignal": true;
|
|
202
|
+
};
|
|
203
|
+
"sanitize": {
|
|
204
|
+
"alias": "sanitize";
|
|
205
|
+
"required": false;
|
|
206
|
+
"isSignal": true;
|
|
207
|
+
};
|
|
208
|
+
"syntaxHighlight": {
|
|
209
|
+
"alias": "syntaxHighlight";
|
|
210
|
+
"required": false;
|
|
211
|
+
"isSignal": true;
|
|
212
|
+
};
|
|
213
|
+
"showHeadingAnchors": {
|
|
214
|
+
"alias": "showHeadingAnchors";
|
|
215
|
+
"required": false;
|
|
216
|
+
"isSignal": true;
|
|
217
|
+
};
|
|
218
|
+
"baseUrl": {
|
|
219
|
+
"alias": "baseUrl";
|
|
220
|
+
"required": false;
|
|
221
|
+
"isSignal": true;
|
|
222
|
+
};
|
|
223
|
+
"highlightChanges": {
|
|
224
|
+
"alias": "highlightChanges";
|
|
225
|
+
"required": false;
|
|
226
|
+
"isSignal": true;
|
|
227
|
+
};
|
|
228
|
+
"previousContent": {
|
|
229
|
+
"alias": "previousContent";
|
|
230
|
+
"required": false;
|
|
231
|
+
"isSignal": true;
|
|
232
|
+
};
|
|
233
|
+
"changeHighlightFadeMs": {
|
|
234
|
+
"alias": "changeHighlightFadeMs";
|
|
235
|
+
"required": false;
|
|
236
|
+
"isSignal": true;
|
|
237
|
+
};
|
|
238
|
+
"scrollToFirstChange": {
|
|
239
|
+
"alias": "scrollToFirstChange";
|
|
240
|
+
"required": false;
|
|
241
|
+
"isSignal": true;
|
|
242
|
+
};
|
|
243
|
+
"changedMarkerLabel": {
|
|
244
|
+
"alias": "changedMarkerLabel";
|
|
245
|
+
"required": false;
|
|
246
|
+
"isSignal": true;
|
|
247
|
+
};
|
|
248
|
+
"changedSummaryOneLabel": {
|
|
249
|
+
"alias": "changedSummaryOneLabel";
|
|
250
|
+
"required": false;
|
|
251
|
+
"isSignal": true;
|
|
252
|
+
};
|
|
253
|
+
"changedSummaryManyLabel": {
|
|
254
|
+
"alias": "changedSummaryManyLabel";
|
|
255
|
+
"required": false;
|
|
256
|
+
"isSignal": true;
|
|
257
|
+
};
|
|
258
|
+
"mermaidLoadingLabel": {
|
|
259
|
+
"alias": "mermaidLoadingLabel";
|
|
260
|
+
"required": false;
|
|
261
|
+
"isSignal": true;
|
|
262
|
+
};
|
|
263
|
+
"mermaidErrorLabel": {
|
|
264
|
+
"alias": "mermaidErrorLabel";
|
|
265
|
+
"required": false;
|
|
266
|
+
"isSignal": true;
|
|
267
|
+
};
|
|
268
|
+
"mermaidUnavailableLabel": {
|
|
269
|
+
"alias": "mermaidUnavailableLabel";
|
|
270
|
+
"required": false;
|
|
271
|
+
"isSignal": true;
|
|
272
|
+
};
|
|
273
|
+
}, {
|
|
274
|
+
"linkClick": "linkClick";
|
|
275
|
+
"rendered": "rendered";
|
|
276
|
+
"changesHighlighted": "changesHighlighted";
|
|
277
|
+
}, never, never, true, never>;
|
|
278
|
+
}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
import { OnDestroy } from "@angular/core";
|
|
3
|
+
export interface MenuItem {
|
|
4
|
+
id: string;
|
|
5
|
+
label: string;
|
|
6
|
+
icon?: string;
|
|
7
|
+
iconSize?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
|
|
8
|
+
href?: string;
|
|
9
|
+
target?: '_blank' | '_self' | '_parent' | '_top';
|
|
10
|
+
variant?: 'default' | 'danger';
|
|
11
|
+
dividerAfter?: boolean;
|
|
12
|
+
disabled?: boolean;
|
|
13
|
+
metadata?: {
|
|
14
|
+
subtitle?: string;
|
|
15
|
+
badge?: string;
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Menu Component - Dropdown menu for navigation and actions
|
|
20
|
+
*
|
|
21
|
+
* Features:
|
|
22
|
+
* - Customizable menu items with icons
|
|
23
|
+
* - Support for links and buttons
|
|
24
|
+
* - Dividers between menu sections
|
|
25
|
+
* - Optional subtitle/metadata for items
|
|
26
|
+
* - Danger variant for destructive actions
|
|
27
|
+
* - Click outside to close (top-most overlay only)
|
|
28
|
+
* - Keyboard navigation: focus moves into the menu on open, Arrow keys /
|
|
29
|
+
* Home / End move between items (roving tabindex), Enter / Space activate,
|
|
30
|
+
* Escape closes and returns focus to the trigger, Tab closes
|
|
31
|
+
* - ARIA menu semantics (`aria-haspopup` / `aria-expanded` / `aria-controls`
|
|
32
|
+
* on the projected trigger, `role="menu"` / `role="menuitem"` on the panel)
|
|
33
|
+
* - OnPush change detection for performance
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* ```html
|
|
37
|
+
* <lc-menu
|
|
38
|
+
* [items]="menuItems"
|
|
39
|
+
* [isOpen]="isMenuOpen"
|
|
40
|
+
* (itemClick)="handleMenuClick($event)"
|
|
41
|
+
* (closed)="isMenuOpen = false"
|
|
42
|
+
* >
|
|
43
|
+
* <button trigger>Open Menu</button>
|
|
44
|
+
* <div header>User Profile</div>
|
|
45
|
+
* </lc-menu>
|
|
46
|
+
* ```
|
|
47
|
+
*/
|
|
48
|
+
export declare class MenuComponent implements OnDestroy {
|
|
49
|
+
private static nextId;
|
|
50
|
+
/** Identifies this instance in the overlay stack. */
|
|
51
|
+
private readonly menuId;
|
|
52
|
+
readonly items: import("@angular/core").InputSignal<MenuItem[]>;
|
|
53
|
+
readonly isOpen: import("@angular/core").InputSignal<boolean>;
|
|
54
|
+
readonly position: import("@angular/core").InputSignal<"bottom-left" | "bottom-right" | "top-left" | "top-right">;
|
|
55
|
+
readonly size: import("@angular/core").InputSignal<"sm" | "md" | "lg">;
|
|
56
|
+
readonly minWidth: import("@angular/core").InputSignal<string>;
|
|
57
|
+
/**
|
|
58
|
+
* Maximum width of the panel (any CSS width, e.g. `min(18rem, calc(100vw - 2rem))`).
|
|
59
|
+
* Empty leaves it unbounded. Long item labels and header lines wrap within it.
|
|
60
|
+
*/
|
|
61
|
+
readonly maxWidth: import("@angular/core").InputSignal<string>;
|
|
62
|
+
readonly itemClick: import("@angular/core").OutputEmitterRef<MenuItem>;
|
|
63
|
+
readonly closed: import("@angular/core").OutputEmitterRef<void>;
|
|
64
|
+
/** Id of the `role="menu"` element, referenced by the trigger's `aria-controls`. */
|
|
65
|
+
protected readonly panelId: string;
|
|
66
|
+
/** Index (into `items()`) of the item that currently owns the roving tabindex. */
|
|
67
|
+
protected readonly activeIndex: import("@angular/core").WritableSignal<number>;
|
|
68
|
+
private readonly itemElements;
|
|
69
|
+
private readonly elementRef;
|
|
70
|
+
private readonly renderer;
|
|
71
|
+
private readonly injector;
|
|
72
|
+
private readonly overlayStack;
|
|
73
|
+
constructor();
|
|
74
|
+
ngOnDestroy(): void;
|
|
75
|
+
/**
|
|
76
|
+
* Handle menu item click
|
|
77
|
+
*/
|
|
78
|
+
onItemClick(item: MenuItem, event: Event): void;
|
|
79
|
+
/**
|
|
80
|
+
* Close the menu
|
|
81
|
+
*/
|
|
82
|
+
close(): void;
|
|
83
|
+
/**
|
|
84
|
+
* Handle click outside to close menu — only while the menu is the top-most
|
|
85
|
+
* overlay, so a click inside a layer above it (a modal opened from a menu
|
|
86
|
+
* item) is left alone.
|
|
87
|
+
*/
|
|
88
|
+
onDocumentClick(event: MouseEvent): void;
|
|
89
|
+
/**
|
|
90
|
+
* Escape closes the menu (top-most overlay only) and returns focus to the
|
|
91
|
+
* trigger; the event is consumed so overlays underneath stay open.
|
|
92
|
+
*/
|
|
93
|
+
onEscapeKey(event: Event): void;
|
|
94
|
+
/** Keyboard navigation inside the `role="menu"` panel. */
|
|
95
|
+
protected onPanelKeydown(event: KeyboardEvent): void;
|
|
96
|
+
/** Roving tabindex: only the active item is in the tab sequence. */
|
|
97
|
+
protected tabindexFor(index: number, item: MenuItem): number;
|
|
98
|
+
private focusIndex;
|
|
99
|
+
private focusActiveItem;
|
|
100
|
+
private firstEnabledIndex;
|
|
101
|
+
/** Index of the next enabled item in `direction`, wrapping around; -1 if none. */
|
|
102
|
+
private nextEnabledIndex;
|
|
103
|
+
/**
|
|
104
|
+
* The element that carries the menu-button ARIA attributes and receives
|
|
105
|
+
* focus back: the projected `[trigger]` node itself when it is natively
|
|
106
|
+
* interactive, otherwise the first interactive element inside it (e.g. the
|
|
107
|
+
* `<button>` inside an `<lc-button trigger>`).
|
|
108
|
+
*/
|
|
109
|
+
private triggerElement;
|
|
110
|
+
/**
|
|
111
|
+
* Closing removes the panel from the DOM; if focus is inside it (an item was
|
|
112
|
+
* activated by keyboard) it would silently drop to `<body>`, so send it back
|
|
113
|
+
* to the trigger.
|
|
114
|
+
*/
|
|
115
|
+
private restoreFocus;
|
|
116
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<MenuComponent, never>;
|
|
117
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<MenuComponent, "lc-menu", never, {
|
|
118
|
+
"items": {
|
|
119
|
+
"alias": "items";
|
|
120
|
+
"required": false;
|
|
121
|
+
"isSignal": true;
|
|
122
|
+
};
|
|
123
|
+
"isOpen": {
|
|
124
|
+
"alias": "isOpen";
|
|
125
|
+
"required": false;
|
|
126
|
+
"isSignal": true;
|
|
127
|
+
};
|
|
128
|
+
"position": {
|
|
129
|
+
"alias": "position";
|
|
130
|
+
"required": false;
|
|
131
|
+
"isSignal": true;
|
|
132
|
+
};
|
|
133
|
+
"size": {
|
|
134
|
+
"alias": "size";
|
|
135
|
+
"required": false;
|
|
136
|
+
"isSignal": true;
|
|
137
|
+
};
|
|
138
|
+
"minWidth": {
|
|
139
|
+
"alias": "minWidth";
|
|
140
|
+
"required": false;
|
|
141
|
+
"isSignal": true;
|
|
142
|
+
};
|
|
143
|
+
"maxWidth": {
|
|
144
|
+
"alias": "maxWidth";
|
|
145
|
+
"required": false;
|
|
146
|
+
"isSignal": true;
|
|
147
|
+
};
|
|
148
|
+
}, {
|
|
149
|
+
"itemClick": "itemClick";
|
|
150
|
+
"closed": "closed";
|
|
151
|
+
}, never, ["[trigger]", "[header]", "[footer]"], true, never>;
|
|
152
|
+
}
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
import { OnDestroy } from "@angular/core";
|
|
3
|
+
export type ModalSize = 'sm' | 'md' | 'lg' | 'xl' | 'full';
|
|
4
|
+
/**
|
|
5
|
+
* Where the dialog sits.
|
|
6
|
+
* - `center`: centred on every screen (3.2)
|
|
7
|
+
* - `auto`: a bottom sheet below 640 px viewport width (full width, top
|
|
8
|
+
* corners rounded, above the safe-area inset, in thumb reach), centred above
|
|
9
|
+
* - `sheet`: a bottom sheet on every screen
|
|
10
|
+
*/
|
|
11
|
+
export type ModalPlacement = 'center' | 'auto' | 'sheet';
|
|
12
|
+
/**
|
|
13
|
+
* Modal dialog component for focused user interactions.
|
|
14
|
+
*
|
|
15
|
+
* Features:
|
|
16
|
+
* - Size presets (sm, md, lg, xl, full)
|
|
17
|
+
* - Placement: centred, or a bottom sheet on phones (`placement="auto"`)
|
|
18
|
+
* - Header and footer stay visible while the body scrolls; the close button
|
|
19
|
+
* is a 44 px target
|
|
20
|
+
* - Focus trap for keyboard accessibility
|
|
21
|
+
* - Backdrop click and Escape key to close
|
|
22
|
+
* - Two-way open binding
|
|
23
|
+
* - Header, body, and footer content slots
|
|
24
|
+
* - Optional close button
|
|
25
|
+
* - Accessible with ARIA dialog role
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```html
|
|
29
|
+
* <lc-modal [(open)]="isOpen" size="md" [closeOnBackdropClick]="true">
|
|
30
|
+
* <div slot="header"><h2>Title</h2></div>
|
|
31
|
+
* <div slot="body">Content</div>
|
|
32
|
+
* <div slot="footer"><lc-button (click)="close()">Close</lc-button></div>
|
|
33
|
+
* </lc-modal>
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
export declare class ModalComponent implements OnDestroy {
|
|
37
|
+
private static nextId;
|
|
38
|
+
/**
|
|
39
|
+
* Whether the modal is open (input from parent)
|
|
40
|
+
* @default false
|
|
41
|
+
*/
|
|
42
|
+
open: import("@angular/core").InputSignal<boolean>;
|
|
43
|
+
/**
|
|
44
|
+
* Modal size
|
|
45
|
+
* @default 'md'
|
|
46
|
+
*/
|
|
47
|
+
size: import("@angular/core").InputSignal<ModalSize>;
|
|
48
|
+
/**
|
|
49
|
+
* Where the dialog sits: `center` (3.2), `auto` — a bottom sheet below
|
|
50
|
+
* 640 px viewport width and centred above — or `sheet` (always a bottom
|
|
51
|
+
* sheet). The sheet spans the width, rounds its top corners, keeps clear of
|
|
52
|
+
* `env(safe-area-inset-bottom)` and is at most 90 % of the dynamic viewport
|
|
53
|
+
* high; header and footer stay visible while the body scrolls. `full`
|
|
54
|
+
* size ignores it.
|
|
55
|
+
* @default 'center'
|
|
56
|
+
*/
|
|
57
|
+
placement: import("@angular/core").InputSignal<ModalPlacement>;
|
|
58
|
+
/**
|
|
59
|
+
* Whether clicking backdrop closes modal
|
|
60
|
+
* @default true
|
|
61
|
+
*/
|
|
62
|
+
closeOnBackdropClick: import("@angular/core").InputSignal<boolean>;
|
|
63
|
+
/**
|
|
64
|
+
* Whether pressing Escape closes modal
|
|
65
|
+
* @default true
|
|
66
|
+
*/
|
|
67
|
+
closeOnEscape: import("@angular/core").InputSignal<boolean>;
|
|
68
|
+
/**
|
|
69
|
+
* Whether to show close button in header
|
|
70
|
+
* @default true
|
|
71
|
+
*/
|
|
72
|
+
showCloseButton: import("@angular/core").InputSignal<boolean>;
|
|
73
|
+
/**
|
|
74
|
+
* ARIA label for accessibility
|
|
75
|
+
*/
|
|
76
|
+
ariaLabel: import("@angular/core").InputSignal<string | undefined>;
|
|
77
|
+
/**
|
|
78
|
+
* ARIA labelledby ID
|
|
79
|
+
*/
|
|
80
|
+
ariaLabelledBy: import("@angular/core").InputSignal<string | undefined>;
|
|
81
|
+
/**
|
|
82
|
+
* ARIA describedby ID
|
|
83
|
+
*/
|
|
84
|
+
ariaDescribedBy: import("@angular/core").InputSignal<string | undefined>;
|
|
85
|
+
/** Accessible name of the close button (`showCloseButton`). */
|
|
86
|
+
closeAriaLabel: import("@angular/core").InputSignal<string>;
|
|
87
|
+
/**
|
|
88
|
+
* Emitted when modal opens
|
|
89
|
+
*/
|
|
90
|
+
readonly modalOpened: import("@angular/core").OutputEmitterRef<void>;
|
|
91
|
+
/**
|
|
92
|
+
* Emitted when modal closes
|
|
93
|
+
*/
|
|
94
|
+
readonly modalClosed: import("@angular/core").OutputEmitterRef<void>;
|
|
95
|
+
/**
|
|
96
|
+
* Two-way binding for open state
|
|
97
|
+
*/
|
|
98
|
+
readonly openChange: import("@angular/core").OutputEmitterRef<boolean>;
|
|
99
|
+
/**
|
|
100
|
+
* Emitted when backdrop is clicked
|
|
101
|
+
*/
|
|
102
|
+
readonly backdropClicked: import("@angular/core").OutputEmitterRef<MouseEvent>;
|
|
103
|
+
/**
|
|
104
|
+
* Internal open state (protected for AOT); follows the `open` input and is
|
|
105
|
+
* also set by the programmatic open/close methods.
|
|
106
|
+
*/
|
|
107
|
+
protected _open: import("@angular/core").WritableSignal<boolean>;
|
|
108
|
+
/**
|
|
109
|
+
* Computed modal classes
|
|
110
|
+
*/
|
|
111
|
+
protected modalClasses: import("@angular/core").Signal<string>;
|
|
112
|
+
private readonly overlayStack;
|
|
113
|
+
/** Identifies this instance in the overlay stack. */
|
|
114
|
+
private readonly modalId;
|
|
115
|
+
private originalOverflow?;
|
|
116
|
+
constructor();
|
|
117
|
+
ngOnDestroy(): void;
|
|
118
|
+
/**
|
|
119
|
+
* Open the modal programmatically
|
|
120
|
+
*/
|
|
121
|
+
openModal(): void;
|
|
122
|
+
/**
|
|
123
|
+
* Close the modal programmatically
|
|
124
|
+
*/
|
|
125
|
+
closeModal(): void;
|
|
126
|
+
/**
|
|
127
|
+
* Handle backdrop click. Ignored while another overlay (popover, menu,
|
|
128
|
+
* confirm dialog, …) sits above this modal — the click belongs to that layer.
|
|
129
|
+
*/
|
|
130
|
+
protected onBackdropClick(event: MouseEvent): void;
|
|
131
|
+
/**
|
|
132
|
+
* Handle close button click
|
|
133
|
+
*/
|
|
134
|
+
protected onCloseClick(event: Event): void;
|
|
135
|
+
/**
|
|
136
|
+
* Escape closes the modal only while it is the top-most overlay; the event
|
|
137
|
+
* is consumed either way so overlays underneath stay open.
|
|
138
|
+
*/
|
|
139
|
+
protected onDocumentKeydown(event: KeyboardEvent): void;
|
|
140
|
+
/**
|
|
141
|
+
* Show the modal. Focus is moved inside and restored on close by the
|
|
142
|
+
* template's `cdkTrapFocus` / `cdkTrapFocusAutoCapture`.
|
|
143
|
+
*/
|
|
144
|
+
private showModal;
|
|
145
|
+
/**
|
|
146
|
+
* Hide the modal
|
|
147
|
+
*/
|
|
148
|
+
private hideModal;
|
|
149
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ModalComponent, never>;
|
|
150
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ModalComponent, "lc-modal", never, {
|
|
151
|
+
"open": {
|
|
152
|
+
"alias": "open";
|
|
153
|
+
"required": false;
|
|
154
|
+
"isSignal": true;
|
|
155
|
+
};
|
|
156
|
+
"size": {
|
|
157
|
+
"alias": "size";
|
|
158
|
+
"required": false;
|
|
159
|
+
"isSignal": true;
|
|
160
|
+
};
|
|
161
|
+
"placement": {
|
|
162
|
+
"alias": "placement";
|
|
163
|
+
"required": false;
|
|
164
|
+
"isSignal": true;
|
|
165
|
+
};
|
|
166
|
+
"closeOnBackdropClick": {
|
|
167
|
+
"alias": "closeOnBackdropClick";
|
|
168
|
+
"required": false;
|
|
169
|
+
"isSignal": true;
|
|
170
|
+
};
|
|
171
|
+
"closeOnEscape": {
|
|
172
|
+
"alias": "closeOnEscape";
|
|
173
|
+
"required": false;
|
|
174
|
+
"isSignal": true;
|
|
175
|
+
};
|
|
176
|
+
"showCloseButton": {
|
|
177
|
+
"alias": "showCloseButton";
|
|
178
|
+
"required": false;
|
|
179
|
+
"isSignal": true;
|
|
180
|
+
};
|
|
181
|
+
"ariaLabel": {
|
|
182
|
+
"alias": "ariaLabel";
|
|
183
|
+
"required": false;
|
|
184
|
+
"isSignal": true;
|
|
185
|
+
};
|
|
186
|
+
"ariaLabelledBy": {
|
|
187
|
+
"alias": "ariaLabelledBy";
|
|
188
|
+
"required": false;
|
|
189
|
+
"isSignal": true;
|
|
190
|
+
};
|
|
191
|
+
"ariaDescribedBy": {
|
|
192
|
+
"alias": "ariaDescribedBy";
|
|
193
|
+
"required": false;
|
|
194
|
+
"isSignal": true;
|
|
195
|
+
};
|
|
196
|
+
"closeAriaLabel": {
|
|
197
|
+
"alias": "closeAriaLabel";
|
|
198
|
+
"required": false;
|
|
199
|
+
"isSignal": true;
|
|
200
|
+
};
|
|
201
|
+
}, {
|
|
202
|
+
"modalOpened": "modalOpened";
|
|
203
|
+
"modalClosed": "modalClosed";
|
|
204
|
+
"openChange": "openChange";
|
|
205
|
+
"backdropClicked": "backdropClicked";
|
|
206
|
+
}, never, ["[slot='header']", "[slot='body']", "*", "[slot='footer']"], true, never>;
|
|
207
|
+
}
|