@ngstarter-ui/components 1.0.28 → 1.0.30
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/fesm2022/ngstarter-ui-components-action-required.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-action-required.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-alert.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-alert.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-announcement.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-announcement.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-autocomplete.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-autocomplete.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-avatar.mjs +8 -8
- package/fesm2022/ngstarter-ui-components-avatar.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-badge.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-badge.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-block-loader.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-block-loader.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-breadcrumbs.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-breadcrumbs.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-button-toggle.mjs +4 -4
- package/fesm2022/ngstarter-ui-components-button-toggle.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-button.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-button.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-card.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-card.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-checkbox.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-checkbox.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-chips.mjs +6 -6
- package/fesm2022/ngstarter-ui-components-chips.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-code-highlighter.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-code-highlighter.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-color-picker.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-color-picker.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-color-switcher.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-color-switcher.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-command-bar.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-command-bar.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-comment-editor.mjs +6 -6
- package/fesm2022/ngstarter-ui-components-comment-editor.mjs.map +1 -1
- package/fesm2022/{ngstarter-ui-components-content-editor-code-block.component-Bk6QTli8.mjs → ngstarter-ui-components-content-editor-code-block.component-CpZ5gJOc.mjs} +4 -4
- package/fesm2022/{ngstarter-ui-components-content-editor-code-block.component-Bk6QTli8.mjs.map → ngstarter-ui-components-content-editor-code-block.component-CpZ5gJOc.mjs.map} +1 -1
- package/fesm2022/{ngstarter-ui-components-content-editor-embed-block-BbkC_t86.mjs → ngstarter-ui-components-content-editor-embed-block-ghm0_0AF.mjs} +2 -2
- package/fesm2022/{ngstarter-ui-components-content-editor-embed-block-BbkC_t86.mjs.map → ngstarter-ui-components-content-editor-embed-block-ghm0_0AF.mjs.map} +1 -1
- package/fesm2022/{ngstarter-ui-components-content-editor-heading-block.component-D9_CxTY1.mjs → ngstarter-ui-components-content-editor-heading-block.component-C1FH89Sj.mjs} +4 -4
- package/fesm2022/{ngstarter-ui-components-content-editor-heading-block.component-D9_CxTY1.mjs.map → ngstarter-ui-components-content-editor-heading-block.component-C1FH89Sj.mjs.map} +1 -1
- package/fesm2022/{ngstarter-ui-components-content-editor-image-block.component-B4zJyUg1.mjs → ngstarter-ui-components-content-editor-image-block.component-ahCIfpvQ.mjs} +4 -4
- package/fesm2022/{ngstarter-ui-components-content-editor-image-block.component-B4zJyUg1.mjs.map → ngstarter-ui-components-content-editor-image-block.component-ahCIfpvQ.mjs.map} +1 -1
- package/fesm2022/{ngstarter-ui-components-content-editor-list-block.component-Cv6wx5Xe.mjs → ngstarter-ui-components-content-editor-list-block.component-guhW_EyK.mjs} +4 -4
- package/fesm2022/{ngstarter-ui-components-content-editor-list-block.component-Cv6wx5Xe.mjs.map → ngstarter-ui-components-content-editor-list-block.component-guhW_EyK.mjs.map} +1 -1
- package/fesm2022/{ngstarter-ui-components-content-editor-ngstarter-ui-components-content-editor-1Zi2nAX5.mjs → ngstarter-ui-components-content-editor-ngstarter-ui-components-content-editor-DNLTNGYa.mjs} +15 -15
- package/fesm2022/{ngstarter-ui-components-content-editor-ngstarter-ui-components-content-editor-1Zi2nAX5.mjs.map → ngstarter-ui-components-content-editor-ngstarter-ui-components-content-editor-DNLTNGYa.mjs.map} +1 -1
- package/fesm2022/{ngstarter-ui-components-content-editor-paragraph-block.component-C9bQvDYU.mjs → ngstarter-ui-components-content-editor-paragraph-block.component-DjgGUc7s.mjs} +4 -4
- package/fesm2022/{ngstarter-ui-components-content-editor-paragraph-block.component-C9bQvDYU.mjs.map → ngstarter-ui-components-content-editor-paragraph-block.component-DjgGUc7s.mjs.map} +1 -1
- package/fesm2022/{ngstarter-ui-components-content-editor-quote-block.component-BbHds2r2.mjs → ngstarter-ui-components-content-editor-quote-block.component-B3pek1H6.mjs} +4 -4
- package/fesm2022/{ngstarter-ui-components-content-editor-quote-block.component-BbHds2r2.mjs.map → ngstarter-ui-components-content-editor-quote-block.component-B3pek1H6.mjs.map} +1 -1
- package/fesm2022/{ngstarter-ui-components-content-editor-table-block.component-DlDh7Fnn.mjs → ngstarter-ui-components-content-editor-table-block.component-bgBNjf4d.mjs} +6 -6
- package/fesm2022/{ngstarter-ui-components-content-editor-table-block.component-DlDh7Fnn.mjs.map → ngstarter-ui-components-content-editor-table-block.component-bgBNjf4d.mjs.map} +1 -1
- package/fesm2022/{ngstarter-ui-components-content-editor-video-block.component-m4DTihP2.mjs → ngstarter-ui-components-content-editor-video-block.component-DPlYe-_8.mjs} +2 -2
- package/fesm2022/{ngstarter-ui-components-content-editor-video-block.component-m4DTihP2.mjs.map → ngstarter-ui-components-content-editor-video-block.component-DPlYe-_8.mjs.map} +1 -1
- package/fesm2022/ngstarter-ui-components-content-editor.mjs +1 -1
- package/fesm2022/ngstarter-ui-components-content-fade.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-content-fade.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-cookie-popup.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-cookie-popup.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-core.mjs +137 -34
- package/fesm2022/ngstarter-ui-components-core.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-country-select.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-country-select.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-data-view.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-data-view.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-datepicker.mjs +10 -10
- package/fesm2022/ngstarter-ui-components-datepicker.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-dialog.mjs +8 -8
- package/fesm2022/ngstarter-ui-components-dialog.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-divider.mjs +4 -4
- package/fesm2022/ngstarter-ui-components-divider.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-drawer.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-drawer.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-emoji-picker.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-emoji-picker.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-empty-state.mjs +4 -4
- package/fesm2022/ngstarter-ui-components-empty-state.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-expand.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-expand.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-expansion.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-expansion.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-filter-builder.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-filter-builder.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-form-field.mjs +4 -4
- package/fesm2022/ngstarter-ui-components-form-field.mjs.map +1 -1
- package/fesm2022/{ngstarter-ui-components-form-renderer-divider-content-CwGzDCZv.mjs → ngstarter-ui-components-form-renderer-divider-content-D8Sffofu.mjs} +3 -3
- package/fesm2022/{ngstarter-ui-components-form-renderer-divider-content-CwGzDCZv.mjs.map → ngstarter-ui-components-form-renderer-divider-content-D8Sffofu.mjs.map} +1 -1
- package/fesm2022/{ngstarter-ui-components-form-renderer-radio-group-field-Cv3AGpoq.mjs → ngstarter-ui-components-form-renderer-radio-group-field-DUCSU3iT.mjs} +3 -3
- package/fesm2022/{ngstarter-ui-components-form-renderer-radio-group-field-Cv3AGpoq.mjs.map → ngstarter-ui-components-form-renderer-radio-group-field-DUCSU3iT.mjs.map} +1 -1
- package/fesm2022/ngstarter-ui-components-form-renderer.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-gauge.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-gauge.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-grid.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-grid.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-guided-tour.mjs +4 -4
- package/fesm2022/ngstarter-ui-components-guided-tour.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-image-placeholder.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-image-placeholder.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-image-resizer.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-image-resizer.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-image-viewer.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-image-viewer.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-image-zoom-viewer.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-image-zoom-viewer.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-incidents.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-incidents.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-inline-text-edit.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-inline-text-edit.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-kanban-board.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-kanban-board.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-kbd.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-kbd.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-list.mjs +10 -10
- package/fesm2022/ngstarter-ui-components-list.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-logo.mjs +8 -8
- package/fesm2022/ngstarter-ui-components-logo.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-menu.mjs +8 -8
- package/fesm2022/ngstarter-ui-components-menu.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-micro-chart.mjs +10 -10
- package/fesm2022/ngstarter-ui-components-micro-chart.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-navigation.mjs +8 -8
- package/fesm2022/ngstarter-ui-components-navigation.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-notifications.mjs +8 -8
- package/fesm2022/ngstarter-ui-components-notifications.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-number-input.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-number-input.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-option.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-option.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-paginator.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-paginator.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-password-strength.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-password-strength.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-phone-input.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-phone-input.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-popover.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-popover.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-progress-bar.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-progress-bar.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-radio-card.mjs +4 -4
- package/fesm2022/ngstarter-ui-components-radio-card.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-radio.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-radio.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-rail-nav.mjs +4 -4
- package/fesm2022/ngstarter-ui-components-rail-nav.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-resizable-container.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-resizable-container.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-screen-loader.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-screen-loader.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-scroll-spy.mjs +6 -6
- package/fesm2022/ngstarter-ui-components-scroll-spy.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-scrollbar-area.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-scrollbar-area.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-segmented.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-segmented.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-select.mjs +8 -8
- package/fesm2022/ngstarter-ui-components-select.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-side-panel.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-side-panel.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-sidebar.mjs +14 -14
- package/fesm2022/ngstarter-ui-components-sidebar.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-sidenav.mjs +4 -4
- package/fesm2022/ngstarter-ui-components-sidenav.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-signature-pad.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-signature-pad.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-skeleton.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-skeleton.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-slide-toggle.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-slide-toggle.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-slider.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-slider.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-snack-bar.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-snack-bar.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-spinner.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-spinner.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-splash-screen.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-splash-screen.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-split.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-split.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-stepper.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-stepper.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-suggestions.mjs +4 -4
- package/fesm2022/ngstarter-ui-components-suggestions.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-tab-panel.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-tab-panel.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-table.mjs +6 -6
- package/fesm2022/ngstarter-ui-components-table.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-tabs.mjs +6 -6
- package/fesm2022/ngstarter-ui-components-tabs.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-text-editor.mjs +10 -10
- package/fesm2022/ngstarter-ui-components-text-editor.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-thumbnail-maker.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-thumbnail-maker.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-tiles.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-tiles.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-timeline.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-timeline.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-timepicker.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-timepicker.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-toolbar.mjs +4 -4
- package/fesm2022/ngstarter-ui-components-toolbar.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-tooltip.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-tooltip.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-upload.mjs +10 -10
- package/fesm2022/ngstarter-ui-components-upload.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-video-viewer.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-video-viewer.mjs.map +1 -1
- package/package.json +15 -3
- package/schematics/collection.json +10 -0
- package/schematics/migrations.json +11 -0
- package/schematics/ng-add/index.d.ts +6 -0
- package/schematics/ng-add/index.js +14 -0
- package/schematics/ng-add/index.js.map +1 -0
- package/schematics/ng-add/schema.json +17 -0
- package/schematics/ng-update/index.d.ts +6 -0
- package/schematics/ng-update/index.js +14 -0
- package/schematics/ng-update/index.js.map +1 -0
- package/schematics/ng-update/schema.json +17 -0
- package/schematics/utils.d.ts +8 -0
- package/schematics/utils.js +305 -0
- package/schematics/utils.js.map +1 -0
- package/styles/_common.scss +84 -390
- package/styles/_global.scss +12 -12
- package/styles/_tokens.scss +1041 -0
- package/styles/themes/compact.scss +9 -0
- package/styles/themes/enterprise.scss +349 -0
- package/styles/themes/modern.scss +352 -0
- package/types/ngstarter-ui-components-core.d.ts +41 -5
|
@@ -22,7 +22,7 @@ class ActionRequired {
|
|
|
22
22
|
return iconName;
|
|
23
23
|
}
|
|
24
24
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: ActionRequired, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
25
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.4", type: ActionRequired, isStandalone: true, selector: "ngs-action-required", inputs: { actionText: { classPropertyName: "actionText", publicName: "actionText", isSignal: true, isRequired: false, transformFunction: null }, iconName: { classPropertyName: "iconName", publicName: "iconName", isSignal: true, isRequired: false, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: true, transformFunction: null }, buttonText: { classPropertyName: "buttonText", publicName: "buttonText", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { buttonClicked: "buttonClicked" }, host: { classAttribute: "ngs-action-required" }, exportAs: ["ngsActionRequired"], ngImport: i0, template: "<div class=\"action-text\">\n <ngs-icon [name]=\"getIconName(iconName() || 'error')\"/>\n {{ actionText() || 'Action Required' }}\n</div>\n<div class=\"description\">{{ description() }}</div>\n<button ngsButton=\"filled\" class=\"button\" (click)=\"buttonClicked.emit()\">\n {{ buttonText() }}\n<!-- <ngs-icon name=\"fluent:arrow-right-24-regular\"/>-->\n</button>\n", styles: [":host{--ngs-action-required-bg: linear-gradient(135deg, var(--color-
|
|
25
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.4", type: ActionRequired, isStandalone: true, selector: "ngs-action-required", inputs: { actionText: { classPropertyName: "actionText", publicName: "actionText", isSignal: true, isRequired: false, transformFunction: null }, iconName: { classPropertyName: "iconName", publicName: "iconName", isSignal: true, isRequired: false, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: true, transformFunction: null }, buttonText: { classPropertyName: "buttonText", publicName: "buttonText", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { buttonClicked: "buttonClicked" }, host: { classAttribute: "ngs-action-required" }, exportAs: ["ngsActionRequired"], ngImport: i0, template: "<div class=\"action-text\">\n <ngs-icon [name]=\"getIconName(iconName() || 'error')\"/>\n {{ actionText() || 'Action Required' }}\n</div>\n<div class=\"description\">{{ description() }}</div>\n<button ngsButton=\"filled\" class=\"button\" (click)=\"buttonClicked.emit()\">\n {{ buttonText() }}\n<!-- <ngs-icon name=\"fluent:arrow-right-24-regular\"/>-->\n</button>\n", styles: [":host{--ngs-action-required-bg: linear-gradient(135deg, var(--ngs-color-danger-container), var(--ngs-color-danger-container-highest));--ngs-action-action-text-bg: var(--ngs-color-surface);--ngs-action-text-color: var(--ngs-color-on-danger-container);display:flex;width:100%;border-radius:var(--ngs-radius-xl);padding:calc(var(--spacing, .25rem) * 6);gap:calc(var(--spacing, .25rem) * 8);align-items:center;background:var(--ngs-action-required-bg);color:var(--ngs-action-text-color)}:host .action-text{display:flex;border-radius:var(--ngs-radius-xl);background:var(--ngs-action-action-text-bg);padding:calc(var(--spacing, .25rem) * 2.5) calc(var(--spacing, .25rem) * 3) calc(var(--spacing, .25rem) * 2.5) calc(var(--spacing, .25rem) * 2.5);align-items:center;flex:none;font-size:var(--text-md);gap:calc(var(--spacing, .25rem) * 1.5)}:host .description{flex-grow:1}:host .button{flex:none}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "component", type: Icon, selector: "ngs-icon", inputs: ["name"], exportAs: ["ngsIcon"] }, { kind: "component", type: Button, selector: " button[ngsButton], button[ngsIconButton], a[ngsButton], a[ngsIconButton] ", inputs: ["ngsButton", "ngsIconButton", "loading", "disabled", "disabledInteractive", "disableRipple", "reverse", "fullWidth", "hideTextOnMobile"], exportAs: ["ngsButton"] }] });
|
|
26
26
|
}
|
|
27
27
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: ActionRequired, decorators: [{
|
|
28
28
|
type: Component,
|
|
@@ -31,7 +31,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImpor
|
|
|
31
31
|
Button
|
|
32
32
|
], host: {
|
|
33
33
|
'class': 'ngs-action-required',
|
|
34
|
-
}, template: "<div class=\"action-text\">\n <ngs-icon [name]=\"getIconName(iconName() || 'error')\"/>\n {{ actionText() || 'Action Required' }}\n</div>\n<div class=\"description\">{{ description() }}</div>\n<button ngsButton=\"filled\" class=\"button\" (click)=\"buttonClicked.emit()\">\n {{ buttonText() }}\n<!-- <ngs-icon name=\"fluent:arrow-right-24-regular\"/>-->\n</button>\n", styles: [":host{--ngs-action-required-bg: linear-gradient(135deg, var(--color-
|
|
34
|
+
}, template: "<div class=\"action-text\">\n <ngs-icon [name]=\"getIconName(iconName() || 'error')\"/>\n {{ actionText() || 'Action Required' }}\n</div>\n<div class=\"description\">{{ description() }}</div>\n<button ngsButton=\"filled\" class=\"button\" (click)=\"buttonClicked.emit()\">\n {{ buttonText() }}\n<!-- <ngs-icon name=\"fluent:arrow-right-24-regular\"/>-->\n</button>\n", styles: [":host{--ngs-action-required-bg: linear-gradient(135deg, var(--ngs-color-danger-container), var(--ngs-color-danger-container-highest));--ngs-action-action-text-bg: var(--ngs-color-surface);--ngs-action-text-color: var(--ngs-color-on-danger-container);display:flex;width:100%;border-radius:var(--ngs-radius-xl);padding:calc(var(--spacing, .25rem) * 6);gap:calc(var(--spacing, .25rem) * 8);align-items:center;background:var(--ngs-action-required-bg);color:var(--ngs-action-text-color)}:host .action-text{display:flex;border-radius:var(--ngs-radius-xl);background:var(--ngs-action-action-text-bg);padding:calc(var(--spacing, .25rem) * 2.5) calc(var(--spacing, .25rem) * 3) calc(var(--spacing, .25rem) * 2.5) calc(var(--spacing, .25rem) * 2.5);align-items:center;flex:none;font-size:var(--text-md);gap:calc(var(--spacing, .25rem) * 1.5)}:host .description{flex-grow:1}:host .button{flex:none}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
|
|
35
35
|
}], propDecorators: { actionText: [{ type: i0.Input, args: [{ isSignal: true, alias: "actionText", required: false }] }], iconName: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconName", required: false }] }], description: [{ type: i0.Input, args: [{ isSignal: true, alias: "description", required: true }] }], buttonText: [{ type: i0.Input, args: [{ isSignal: true, alias: "buttonText", required: true }] }], buttonClicked: [{ type: i0.Output, args: ["buttonClicked"] }] } });
|
|
36
36
|
|
|
37
37
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngstarter-ui-components-action-required.mjs","sources":["../../../projects/components/action-required/src/action-required/action-required.ts","../../../projects/components/action-required/src/action-required/action-required.html","../../../projects/components/action-required/ngstarter-ui-components-action-required.ts"],"sourcesContent":["import { Component, input, output } from '@angular/core';\nimport { Icon } from '@ngstarter-ui/components/icon';\nimport { Button } from '@ngstarter-ui/components/button';\n\n@Component({\n selector: 'ngs-action-required',\n exportAs: 'ngsActionRequired',\n imports: [\n Icon,\n Button\n ],\n templateUrl: './action-required.html',\n styleUrl: './action-required.scss',\n host: {\n 'class': 'ngs-action-required',\n }\n})\nexport class ActionRequired {\n actionText = input<string>();\n iconName = input<string>();\n description = input.required<string>();\n buttonText = input.required<string>();\n\n readonly buttonClicked = output<void>();\n\n protected getIconName(iconName: string): string {\n if (iconName === 'error') {\n return 'fluent:error-circle-24-regular';\n }\n if (iconName === 'warning') {\n return 'fluent:warning-24-regular';\n }\n if (iconName === 'help') {\n return 'fluent:question-circle-24-regular';\n }\n return iconName;\n }\n}\n","<div class=\"action-text\">\n <ngs-icon [name]=\"getIconName(iconName() || 'error')\"/>\n {{ actionText() || 'Action Required' }}\n</div>\n<div class=\"description\">{{ description() }}</div>\n<button ngsButton=\"filled\" class=\"button\" (click)=\"buttonClicked.emit()\">\n {{ buttonText() }}\n<!-- <ngs-icon name=\"fluent:arrow-right-24-regular\"/>-->\n</button>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;MAiBa,cAAc,CAAA;IACzB,UAAU,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;IAC5B,QAAQ,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;AAC1B,IAAA,WAAW,GAAG,KAAK,CAAC,QAAQ,iFAAU;AACtC,IAAA,UAAU,GAAG,KAAK,CAAC,QAAQ,gFAAU;IAE5B,aAAa,GAAG,MAAM,EAAQ;AAE7B,IAAA,WAAW,CAAC,QAAgB,EAAA;AACpC,QAAA,IAAI,QAAQ,KAAK,OAAO,EAAE;AACxB,YAAA,OAAO,gCAAgC;QACzC;AACA,QAAA,IAAI,QAAQ,KAAK,SAAS,EAAE;AAC1B,YAAA,OAAO,2BAA2B;QACpC;AACA,QAAA,IAAI,QAAQ,KAAK,MAAM,EAAE;AACvB,YAAA,OAAO,mCAAmC;QAC5C;AACA,QAAA,OAAO,QAAQ;IACjB;uGAnBW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjB3B,oXASA,EAAA,MAAA,EAAA,CAAA,
|
|
1
|
+
{"version":3,"file":"ngstarter-ui-components-action-required.mjs","sources":["../../../projects/components/action-required/src/action-required/action-required.ts","../../../projects/components/action-required/src/action-required/action-required.html","../../../projects/components/action-required/ngstarter-ui-components-action-required.ts"],"sourcesContent":["import { Component, input, output } from '@angular/core';\nimport { Icon } from '@ngstarter-ui/components/icon';\nimport { Button } from '@ngstarter-ui/components/button';\n\n@Component({\n selector: 'ngs-action-required',\n exportAs: 'ngsActionRequired',\n imports: [\n Icon,\n Button\n ],\n templateUrl: './action-required.html',\n styleUrl: './action-required.scss',\n host: {\n 'class': 'ngs-action-required',\n }\n})\nexport class ActionRequired {\n actionText = input<string>();\n iconName = input<string>();\n description = input.required<string>();\n buttonText = input.required<string>();\n\n readonly buttonClicked = output<void>();\n\n protected getIconName(iconName: string): string {\n if (iconName === 'error') {\n return 'fluent:error-circle-24-regular';\n }\n if (iconName === 'warning') {\n return 'fluent:warning-24-regular';\n }\n if (iconName === 'help') {\n return 'fluent:question-circle-24-regular';\n }\n return iconName;\n }\n}\n","<div class=\"action-text\">\n <ngs-icon [name]=\"getIconName(iconName() || 'error')\"/>\n {{ actionText() || 'Action Required' }}\n</div>\n<div class=\"description\">{{ description() }}</div>\n<button ngsButton=\"filled\" class=\"button\" (click)=\"buttonClicked.emit()\">\n {{ buttonText() }}\n<!-- <ngs-icon name=\"fluent:arrow-right-24-regular\"/>-->\n</button>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -59,7 +59,7 @@ class Alert {
|
|
|
59
59
|
provide: ALERT,
|
|
60
60
|
useExisting: Alert
|
|
61
61
|
}
|
|
62
|
-
], queries: [{ propertyName: "iconRef", first: true, predicate: AlertIconDirective, descendants: true, isSignal: true }], exportAs: ["ngsAlert"], ngImport: i0, template: "<div class=\"thumbnail\">\n <ng-content select=\"[ngsAlertIcon]\"/>\n @if (iconRef()) {\n <ng-container [ngTemplateOutlet]=\"iconRefTemplate\"/>\n }\n</div>\n<div class=\"content\">\n <div class=\"title\">\n <ng-content select=\"ngs-alert-title,[ngsAlertTitle]\"/>\n </div>\n <ng-content/>\n</div>\n<div class=\"actions\">\n <ng-content select=\"[ngsAlertAction]\"/>\n</div>\n", styles: [":host{--ngs-alert-bg-color: transparent;--ngs-alert-color: inherit;--ngs-alert-icon-color: white;--ngs-alert-border-color: transparent;--ngs-alert-border-radius:
|
|
62
|
+
], queries: [{ propertyName: "iconRef", first: true, predicate: AlertIconDirective, descendants: true, isSignal: true }], exportAs: ["ngsAlert"], ngImport: i0, template: "<div class=\"thumbnail\">\n <ng-content select=\"[ngsAlertIcon]\"/>\n @if (iconRef()) {\n <ng-container [ngTemplateOutlet]=\"iconRefTemplate\"/>\n }\n</div>\n<div class=\"content\">\n <div class=\"title\">\n <ng-content select=\"ngs-alert-title,[ngsAlertTitle]\"/>\n </div>\n <ng-content/>\n</div>\n<div class=\"actions\">\n <ng-content select=\"[ngsAlertAction]\"/>\n</div>\n", styles: [":host{--ngs-alert-bg-color: transparent;--ngs-alert-color: inherit;--ngs-alert-icon-color: white;--ngs-alert-border-color: transparent;--ngs-alert-border-radius: var(--ngs-radius-xl);--ngs-alert-padding: calc(var(--spacing, .25rem) * 2.5) calc(var(--spacing, .25rem) * 3);--ngs-alert-has-thumbnail-padding: calc(var(--spacing, .25rem) * 1.5);--ngs-alert-gap: calc(var(--spacing, .25rem) * 3.5);--ngs-alert-border-width: 1px;--ngs-alert-font-size: var(--ngs-font-size-sm);--ngs-alert-thumbnail-bg: white;--ngs-alert-thumbnail-border-radius: var(--ngs-radius-xl);--ngs-alert-thumbnail-size: calc(var(--spacing, .25rem) * 10);--ngs-alert-title-font-weight: 600;--ngs-alert-title-font-size: var(--ngs-font-size-xs);--ngs-alert-actions-gap: calc(var(--spacing, .25rem) * 1);--ngs-alert-action-height: calc(var(--spacing, .25rem) * 10);--ngs-alert-action-padding: 0 calc(var(--spacing, .25rem) * 3.5);--ngs-alert-action-with-icon-padding: 0 calc(var(--spacing, .25rem) * 2);--ngs-alert-action-hover-bg: white;--ngs-alert-action-border-radius: calc(infinity * 1px);--ngs-alert-action-font-weight: 500;--ngs-alert-action-hover-color: inherit;position:relative;display:flex;width:100%;align-items:center;border-radius:var(--ngs-alert-border-radius);gap:var(--ngs-alert-gap);background:var(--ngs-alert-bg-color);padding:var(--ngs-alert-padding);color:var(--ngs-alert-color);font-size:var(--ngs-alert-font-size);border:var(--ngs-alert-border-width) solid transparent}:host:has(.thumbnail:not(:empty)){padding:var(--ngs-alert-has-thumbnail-padding)}:host:has(.ngs-alert-title){align-items:stretch}:host .thumbnail{display:flex;align-items:center;justify-content:center;flex:none;background:var(--ngs-alert-thumbnail-bg);color:var(--ngs-alert-icon-color);width:var(--ngs-alert-thumbnail-size);height:var(--ngs-alert-thumbnail-size);border-radius:var(--ngs-alert-thumbnail-border-radius)}:host .thumbnail:empty{display:none}:host .title{font-size:var(--ngs-alert-title-font-size);font-weight:var(--ngs-alert-title-font-weight);margin-bottom:calc(var(--spacing, .25rem) * 1);text-transform:uppercase;display:block}:host .title:empty{display:none}:host .actions{margin-inline-start:auto;display:flex;align-items:center;gap:var(--ngs-alert-actions-gap);line-height:0;flex:none}:host .actions:empty{display:none}:host[ngs-alert-variant=default],:host[ngs-alert-variant=neutral]{--ngs-alert-bg-color: var(--ngs-color-surface-container);--ngs-alert-thumbnail-bg: var(--ngs-color-surface-container-highest)}:host[ngs-alert-variant=info],:host[ngs-alert-variant=informative]{--ngs-alert-bg-color: var(--ngs-color-info-container);--ngs-alert-thumbnail-bg: var(--ngs-color-info);--ngs-alert-color: var(--ngs-color-on-info-container)}:host[ngs-alert-variant=success],:host[ngs-alert-variant=positive]{--ngs-alert-bg-color: var(--ngs-color-success-container);--ngs-alert-thumbnail-bg: var(--ngs-color-success);--ngs-alert-color: var(--ngs-color-on-success-container)}:host[ngs-alert-variant=danger],:host[ngs-alert-variant=negative]{--ngs-alert-bg-color: var(--ngs-color-danger-container);--ngs-alert-thumbnail-bg: var(--ngs-color-danger);--ngs-alert-color: var(--ngs-color-on-danger-container)}:host[ngs-alert-variant=warning],:host[ngs-alert-variant=notice]{--ngs-alert-bg-color: var(--ngs-color-warning-container);--ngs-alert-thumbnail-bg: var(--ngs-color-warning);--ngs-alert-color: var(--ngs-color-on-warning-container)}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
|
|
63
63
|
}
|
|
64
64
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: Alert, decorators: [{
|
|
65
65
|
type: Component,
|
|
@@ -71,7 +71,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImpor
|
|
|
71
71
|
], host: {
|
|
72
72
|
'class': 'ngs-alert',
|
|
73
73
|
'[class.is-bordered]': 'bordered()',
|
|
74
|
-
}, template: "<div class=\"thumbnail\">\n <ng-content select=\"[ngsAlertIcon]\"/>\n @if (iconRef()) {\n <ng-container [ngTemplateOutlet]=\"iconRefTemplate\"/>\n }\n</div>\n<div class=\"content\">\n <div class=\"title\">\n <ng-content select=\"ngs-alert-title,[ngsAlertTitle]\"/>\n </div>\n <ng-content/>\n</div>\n<div class=\"actions\">\n <ng-content select=\"[ngsAlertAction]\"/>\n</div>\n", styles: [":host{--ngs-alert-bg-color: transparent;--ngs-alert-color: inherit;--ngs-alert-icon-color: white;--ngs-alert-border-color: transparent;--ngs-alert-border-radius:
|
|
74
|
+
}, template: "<div class=\"thumbnail\">\n <ng-content select=\"[ngsAlertIcon]\"/>\n @if (iconRef()) {\n <ng-container [ngTemplateOutlet]=\"iconRefTemplate\"/>\n }\n</div>\n<div class=\"content\">\n <div class=\"title\">\n <ng-content select=\"ngs-alert-title,[ngsAlertTitle]\"/>\n </div>\n <ng-content/>\n</div>\n<div class=\"actions\">\n <ng-content select=\"[ngsAlertAction]\"/>\n</div>\n", styles: [":host{--ngs-alert-bg-color: transparent;--ngs-alert-color: inherit;--ngs-alert-icon-color: white;--ngs-alert-border-color: transparent;--ngs-alert-border-radius: var(--ngs-radius-xl);--ngs-alert-padding: calc(var(--spacing, .25rem) * 2.5) calc(var(--spacing, .25rem) * 3);--ngs-alert-has-thumbnail-padding: calc(var(--spacing, .25rem) * 1.5);--ngs-alert-gap: calc(var(--spacing, .25rem) * 3.5);--ngs-alert-border-width: 1px;--ngs-alert-font-size: var(--ngs-font-size-sm);--ngs-alert-thumbnail-bg: white;--ngs-alert-thumbnail-border-radius: var(--ngs-radius-xl);--ngs-alert-thumbnail-size: calc(var(--spacing, .25rem) * 10);--ngs-alert-title-font-weight: 600;--ngs-alert-title-font-size: var(--ngs-font-size-xs);--ngs-alert-actions-gap: calc(var(--spacing, .25rem) * 1);--ngs-alert-action-height: calc(var(--spacing, .25rem) * 10);--ngs-alert-action-padding: 0 calc(var(--spacing, .25rem) * 3.5);--ngs-alert-action-with-icon-padding: 0 calc(var(--spacing, .25rem) * 2);--ngs-alert-action-hover-bg: white;--ngs-alert-action-border-radius: calc(infinity * 1px);--ngs-alert-action-font-weight: 500;--ngs-alert-action-hover-color: inherit;position:relative;display:flex;width:100%;align-items:center;border-radius:var(--ngs-alert-border-radius);gap:var(--ngs-alert-gap);background:var(--ngs-alert-bg-color);padding:var(--ngs-alert-padding);color:var(--ngs-alert-color);font-size:var(--ngs-alert-font-size);border:var(--ngs-alert-border-width) solid transparent}:host:has(.thumbnail:not(:empty)){padding:var(--ngs-alert-has-thumbnail-padding)}:host:has(.ngs-alert-title){align-items:stretch}:host .thumbnail{display:flex;align-items:center;justify-content:center;flex:none;background:var(--ngs-alert-thumbnail-bg);color:var(--ngs-alert-icon-color);width:var(--ngs-alert-thumbnail-size);height:var(--ngs-alert-thumbnail-size);border-radius:var(--ngs-alert-thumbnail-border-radius)}:host .thumbnail:empty{display:none}:host .title{font-size:var(--ngs-alert-title-font-size);font-weight:var(--ngs-alert-title-font-weight);margin-bottom:calc(var(--spacing, .25rem) * 1);text-transform:uppercase;display:block}:host .title:empty{display:none}:host .actions{margin-inline-start:auto;display:flex;align-items:center;gap:var(--ngs-alert-actions-gap);line-height:0;flex:none}:host .actions:empty{display:none}:host[ngs-alert-variant=default],:host[ngs-alert-variant=neutral]{--ngs-alert-bg-color: var(--ngs-color-surface-container);--ngs-alert-thumbnail-bg: var(--ngs-color-surface-container-highest)}:host[ngs-alert-variant=info],:host[ngs-alert-variant=informative]{--ngs-alert-bg-color: var(--ngs-color-info-container);--ngs-alert-thumbnail-bg: var(--ngs-color-info);--ngs-alert-color: var(--ngs-color-on-info-container)}:host[ngs-alert-variant=success],:host[ngs-alert-variant=positive]{--ngs-alert-bg-color: var(--ngs-color-success-container);--ngs-alert-thumbnail-bg: var(--ngs-color-success);--ngs-alert-color: var(--ngs-color-on-success-container)}:host[ngs-alert-variant=danger],:host[ngs-alert-variant=negative]{--ngs-alert-bg-color: var(--ngs-color-danger-container);--ngs-alert-thumbnail-bg: var(--ngs-color-danger);--ngs-alert-color: var(--ngs-color-on-danger-container)}:host[ngs-alert-variant=warning],:host[ngs-alert-variant=notice]{--ngs-alert-bg-color: var(--ngs-color-warning-container);--ngs-alert-thumbnail-bg: var(--ngs-color-warning);--ngs-alert-color: var(--ngs-color-on-warning-container)}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
|
|
75
75
|
}], ctorParameters: () => [], propDecorators: { iconRef: [{ type: i0.ContentChild, args: [i0.forwardRef(() => AlertIconDirective), { isSignal: true }] }], autoClose: [{ type: i0.Input, args: [{ isSignal: true, alias: "autoClose", required: false }] }], bordered: [{ type: i0.Input, args: [{ isSignal: true, alias: "bordered", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], closed: [{ type: i0.Output, args: ["closed"] }] } });
|
|
76
76
|
|
|
77
77
|
class AlertTitleDirective {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngstarter-ui-components-alert.mjs","sources":["../../../projects/components/alert/src/alert.properties.ts","../../../projects/components/alert/src/alert-icon.directive.ts","../../../projects/components/alert/src/alert/alert.ts","../../../projects/components/alert/src/alert/alert.html","../../../projects/components/alert/src/alert-title.directive.ts","../../../projects/components/alert/src/alert-close.directive.ts","../../../projects/components/alert/src/alert-action.directive.ts","../../../projects/components/alert/ngstarter-ui-components-alert.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport const ALERT = new InjectionToken('Alert');\nexport type AlertVariant = 'default' | 'secondary' | 'positive' | 'informative' | 'negative' | 'notice' | string;\n","import { Directive, inject, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[ngsAlertIcon]',\n exportAs: 'ngsAlertIcon',\n host: {\n 'class': 'ngs-alert-icon'\n }\n})\nexport class AlertIconDirective {\n public readonly templateRef = inject(TemplateRef, { optional: true });\n}\n","import {\n booleanAttribute,\n Component,\n ElementRef,\n inject,\n Input,\n OnInit,\n Renderer2,\n contentChild, TemplateRef, input, numberAttribute, effect, output, OnChanges, SimpleChanges\n} from '@angular/core';\nimport { ALERT, AlertVariant } from '../alert.properties';\nimport { AlertIconDirective } from '../alert-icon.directive';\nimport { NgTemplateOutlet } from '@angular/common';\n\n@Component({\n selector: 'ngs-alert',\n exportAs: 'ngsAlert',\n imports: [NgTemplateOutlet],\n templateUrl: './alert.html',\n styleUrl: './alert.scss',\n providers: [\n {\n provide: ALERT,\n useExisting: Alert\n }\n ],\n host: {\n 'class': 'ngs-alert',\n '[class.is-bordered]': 'bordered()',\n }\n})\nexport class Alert {\n private _renderer = inject(Renderer2);\n private _elementRef = inject(ElementRef);\n readonly iconRef = contentChild(AlertIconDirective);\n\n autoClose = input(null, {\n transform: numberAttribute\n });\n bordered = input(false, {\n transform: booleanAttribute\n });\n variant = input<AlertVariant>('default');\n\n readonly closed = output<void>();\n private _autoCloseTimeout: any = undefined;\n\n constructor() {\n effect(() => {\n this._renderer.setAttribute(this._elementRef.nativeElement, 'ngs-alert-variant', this.variant());\n\n clearTimeout(this._autoCloseTimeout);\n\n if (!this.autoClose()) {\n return;\n }\n\n this._autoCloseTimeout = setTimeout(() => {\n this._close();\n }, this.autoClose() as number);\n });\n }\n\n get api() {\n return {\n close: () => this._close()\n };\n }\n\n protected get iconRefTemplate(): TemplateRef<any> {\n return this.iconRef()?.templateRef as TemplateRef<any>;\n }\n\n private _close() {\n clearTimeout(this._autoCloseTimeout);\n this._elementRef.nativeElement.remove();\n }\n}\n","<div class=\"thumbnail\">\n <ng-content select=\"[ngsAlertIcon]\"/>\n @if (iconRef()) {\n <ng-container [ngTemplateOutlet]=\"iconRefTemplate\"/>\n }\n</div>\n<div class=\"content\">\n <div class=\"title\">\n <ng-content select=\"ngs-alert-title,[ngsAlertTitle]\"/>\n </div>\n <ng-content/>\n</div>\n<div class=\"actions\">\n <ng-content select=\"[ngsAlertAction]\"/>\n</div>\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: 'ngs-alert-title,[ngsAlertTitle]',\n exportAs: 'ngsAlertTitle',\n host: {\n 'class': 'ngs-alert-title'\n }\n})\nexport class AlertTitleDirective {\n}\n","import { Directive, inject } from '@angular/core';\nimport { ALERT } from './alert.properties';\nimport { Alert } from './alert/alert';\n\n@Directive({\n selector: '[ngsAlertClose]',\n exportAs: 'ngsAlertClose',\n host: {\n 'class': 'ngs-alert-close',\n '(click)': '_handleClick()'\n }\n})\nexport class AlertCloseDirective {\n private _alert = inject<Alert>(ALERT);\n\n protected _handleClick() {\n this._alert.api.close();\n }\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[ngsAlertAction]',\n exportAs: 'ngsAlertAction',\n host: {\n 'class': 'ngs-alert-action'\n }\n})\nexport class AlertActionDirective {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ngstarter-ui-components-alert.mjs","sources":["../../../projects/components/alert/src/alert.properties.ts","../../../projects/components/alert/src/alert-icon.directive.ts","../../../projects/components/alert/src/alert/alert.ts","../../../projects/components/alert/src/alert/alert.html","../../../projects/components/alert/src/alert-title.directive.ts","../../../projects/components/alert/src/alert-close.directive.ts","../../../projects/components/alert/src/alert-action.directive.ts","../../../projects/components/alert/ngstarter-ui-components-alert.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport const ALERT = new InjectionToken('Alert');\nexport type AlertVariant = 'default' | 'secondary' | 'positive' | 'informative' | 'negative' | 'notice' | string;\n","import { Directive, inject, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[ngsAlertIcon]',\n exportAs: 'ngsAlertIcon',\n host: {\n 'class': 'ngs-alert-icon'\n }\n})\nexport class AlertIconDirective {\n public readonly templateRef = inject(TemplateRef, { optional: true });\n}\n","import {\n booleanAttribute,\n Component,\n ElementRef,\n inject,\n Input,\n OnInit,\n Renderer2,\n contentChild, TemplateRef, input, numberAttribute, effect, output, OnChanges, SimpleChanges\n} from '@angular/core';\nimport { ALERT, AlertVariant } from '../alert.properties';\nimport { AlertIconDirective } from '../alert-icon.directive';\nimport { NgTemplateOutlet } from '@angular/common';\n\n@Component({\n selector: 'ngs-alert',\n exportAs: 'ngsAlert',\n imports: [NgTemplateOutlet],\n templateUrl: './alert.html',\n styleUrl: './alert.scss',\n providers: [\n {\n provide: ALERT,\n useExisting: Alert\n }\n ],\n host: {\n 'class': 'ngs-alert',\n '[class.is-bordered]': 'bordered()',\n }\n})\nexport class Alert {\n private _renderer = inject(Renderer2);\n private _elementRef = inject(ElementRef);\n readonly iconRef = contentChild(AlertIconDirective);\n\n autoClose = input(null, {\n transform: numberAttribute\n });\n bordered = input(false, {\n transform: booleanAttribute\n });\n variant = input<AlertVariant>('default');\n\n readonly closed = output<void>();\n private _autoCloseTimeout: any = undefined;\n\n constructor() {\n effect(() => {\n this._renderer.setAttribute(this._elementRef.nativeElement, 'ngs-alert-variant', this.variant());\n\n clearTimeout(this._autoCloseTimeout);\n\n if (!this.autoClose()) {\n return;\n }\n\n this._autoCloseTimeout = setTimeout(() => {\n this._close();\n }, this.autoClose() as number);\n });\n }\n\n get api() {\n return {\n close: () => this._close()\n };\n }\n\n protected get iconRefTemplate(): TemplateRef<any> {\n return this.iconRef()?.templateRef as TemplateRef<any>;\n }\n\n private _close() {\n clearTimeout(this._autoCloseTimeout);\n this._elementRef.nativeElement.remove();\n }\n}\n","<div class=\"thumbnail\">\n <ng-content select=\"[ngsAlertIcon]\"/>\n @if (iconRef()) {\n <ng-container [ngTemplateOutlet]=\"iconRefTemplate\"/>\n }\n</div>\n<div class=\"content\">\n <div class=\"title\">\n <ng-content select=\"ngs-alert-title,[ngsAlertTitle]\"/>\n </div>\n <ng-content/>\n</div>\n<div class=\"actions\">\n <ng-content select=\"[ngsAlertAction]\"/>\n</div>\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: 'ngs-alert-title,[ngsAlertTitle]',\n exportAs: 'ngsAlertTitle',\n host: {\n 'class': 'ngs-alert-title'\n }\n})\nexport class AlertTitleDirective {\n}\n","import { Directive, inject } from '@angular/core';\nimport { ALERT } from './alert.properties';\nimport { Alert } from './alert/alert';\n\n@Directive({\n selector: '[ngsAlertClose]',\n exportAs: 'ngsAlertClose',\n host: {\n 'class': 'ngs-alert-close',\n '(click)': '_handleClick()'\n }\n})\nexport class AlertCloseDirective {\n private _alert = inject<Alert>(ALERT);\n\n protected _handleClick() {\n this._alert.api.close();\n }\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[ngsAlertAction]',\n exportAs: 'ngsAlertAction',\n host: {\n 'class': 'ngs-alert-action'\n }\n})\nexport class AlertActionDirective {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;MAEa,KAAK,GAAG,IAAI,cAAc,CAAC,OAAO;;MCOlC,kBAAkB,CAAA;IACb,WAAW,GAAG,MAAM,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;uGAD1D,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAP9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,IAAI,EAAE;AACF,wBAAA,OAAO,EAAE;AACZ;AACJ,iBAAA;;;MCuBY,KAAK,CAAA;AACR,IAAA,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AAC7B,IAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,IAAA,OAAO,GAAG,YAAY,CAAC,kBAAkB,8EAAC;IAEnD,SAAS,GAAG,KAAK,CAAC,IAAI,iFACpB,SAAS,EAAE,eAAe,EAAA,CAC1B;IACF,QAAQ,GAAG,KAAK,CAAC,KAAK,gFACpB,SAAS,EAAE,gBAAgB,EAAA,CAC3B;AACF,IAAA,OAAO,GAAG,KAAK,CAAe,SAAS,8EAAC;IAE/B,MAAM,GAAG,MAAM,EAAQ;IACxB,iBAAiB,GAAQ,SAAS;AAE1C,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,mBAAmB,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;AAEhG,YAAA,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC;AAEpC,YAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE;gBACrB;YACF;AAEA,YAAA,IAAI,CAAC,iBAAiB,GAAG,UAAU,CAAC,MAAK;gBACvC,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,CAAC,EAAE,IAAI,CAAC,SAAS,EAAY,CAAC;AAChC,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,IAAI,GAAG,GAAA;QACL,OAAO;AACL,YAAA,KAAK,EAAE,MAAM,IAAI,CAAC,MAAM;SACzB;IACH;AAEA,IAAA,IAAc,eAAe,GAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,WAA+B;IACxD;IAEQ,MAAM,GAAA;AACZ,QAAA,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC;AACpC,QAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,EAAE;IACzC;uGA7CW,KAAK,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAL,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAK,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,EAAA,cAAA,EAAA,WAAA,EAAA,EAAA,SAAA,EAXL;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,WAAW,EAAE;AACd;AACF,SAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAS+B,kBAAkB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClCpD,uYAeA,EAAA,MAAA,EAAA,CAAA,84GAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDEY,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAcf,KAAK,EAAA,UAAA,EAAA,CAAA;kBAjBjB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,YACX,UAAU,EAAA,OAAA,EACX,CAAC,gBAAgB,CAAC,EAAA,SAAA,EAGhB;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,KAAK;AACd,4BAAA,WAAW,EAAA;AACZ;qBACF,EAAA,IAAA,EACK;AACJ,wBAAA,OAAO,EAAE,WAAW;AACpB,wBAAA,qBAAqB,EAAE,YAAY;AACpC,qBAAA,EAAA,QAAA,EAAA,uYAAA,EAAA,MAAA,EAAA,CAAA,84GAAA,CAAA,EAAA;sHAK+B,kBAAkB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;MEzBvC,mBAAmB,CAAA;uGAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAP/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,iCAAiC;AAC3C,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,IAAI,EAAE;AACF,wBAAA,OAAO,EAAE;AACZ;AACJ,iBAAA;;;MCIY,mBAAmB,CAAA;AACtB,IAAA,MAAM,GAAG,MAAM,CAAQ,KAAK,CAAC;IAE3B,YAAY,GAAA;AACpB,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE;IACzB;uGALW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAR/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,IAAI,EAAE;AACJ,wBAAA,OAAO,EAAE,iBAAiB;AAC1B,wBAAA,SAAS,EAAE;AACZ;AACJ,iBAAA;;;MCFY,oBAAoB,CAAA;uGAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAPhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,IAAI,EAAE;AACF,wBAAA,OAAO,EAAE;AACZ;AACJ,iBAAA;;;ACRD;;AAEG;;;;"}
|
|
@@ -23,7 +23,7 @@ class Announcement {
|
|
|
23
23
|
this.closed.emit();
|
|
24
24
|
}
|
|
25
25
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: Announcement, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
26
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.4", type: Announcement, isStandalone: true, selector: "ngs-announcement", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, iconName: { classPropertyName: "iconName", publicName: "iconName", isSignal: true, isRequired: false, transformFunction: null }, closable: { classPropertyName: "closable", publicName: "closable", isSignal: true, isRequired: false, transformFunction: null }, linkTo: { classPropertyName: "linkTo", publicName: "linkTo", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { closed: "closed" }, host: { classAttribute: "ngs-announcement" }, exportAs: ["ngsAnnouncement"], ngImport: i0, template: "<div class=\"content\">\n @if (iconName()) {\n <div class=\"icon\">\n <ngs-icon [name]=\"iconName()\"/>\n </div>\n }\n @if (title()) {\n <div class=\"title\">{{ title() }}</div>\n }\n <div class=\"message\"><ng-content/></div>\n @if (linkTo()) {\n <a class=\"link underline underline-offset-3\" href=\"{{ linkTo()!.url }}\" [target]=\"linkTo()!.target || 'blank'\">\n {{ linkTo()!.text || linkTo()!.url }}\n </a>\n }\n</div>\n@if (closable()) {\n <div class=\"close\">\n <button ngsIconButton (click)=\"close()\">\n <ngs-icon name=\"fluent:dismiss-24-regular\"/>\n </button>\n </div>\n}\n", styles: [":host{display:flex;align-items:center;justify-content:space-between;padding:calc(var(--spacing, .25rem) * 1) calc(var(--spacing, .25rem) * 4);font-size
|
|
26
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.4", type: Announcement, isStandalone: true, selector: "ngs-announcement", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, iconName: { classPropertyName: "iconName", publicName: "iconName", isSignal: true, isRequired: false, transformFunction: null }, closable: { classPropertyName: "closable", publicName: "closable", isSignal: true, isRequired: false, transformFunction: null }, linkTo: { classPropertyName: "linkTo", publicName: "linkTo", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { closed: "closed" }, host: { classAttribute: "ngs-announcement" }, exportAs: ["ngsAnnouncement"], ngImport: i0, template: "<div class=\"content\">\n @if (iconName()) {\n <div class=\"icon\">\n <ngs-icon [name]=\"iconName()\"/>\n </div>\n }\n @if (title()) {\n <div class=\"title\">{{ title() }}</div>\n }\n <div class=\"message\"><ng-content/></div>\n @if (linkTo()) {\n <a class=\"link underline underline-offset-3\" href=\"{{ linkTo()!.url }}\" [target]=\"linkTo()!.target || 'blank'\">\n {{ linkTo()!.text || linkTo()!.url }}\n </a>\n }\n</div>\n@if (closable()) {\n <div class=\"close\">\n <button ngsIconButton (click)=\"close()\">\n <ngs-icon name=\"fluent:dismiss-24-regular\"/>\n </button>\n </div>\n}\n", styles: [":host{display:flex;align-items:center;justify-content:space-between;padding:calc(var(--spacing, .25rem) * 1) calc(var(--spacing, .25rem) * 4);font-size:var(--ngs-font-size-sm);min-height:calc(var(--spacing, .25rem) * 10)}:host .title{font-weight:700;margin-inline-end:calc(var(--spacing, .25rem) * 3)}:host .title:empty{display:none}:host[data-variant=neutral]{background:var(--ngs-color-secondary-container);color:var(--ngs-color-on-secondary-container)}:host[data-variant=informative]{background:var(--ngs-color-info-container);color:var(--ngs-color-on-info-container)}:host[data-variant=positive]{background:var(--ngs-color-success-container);color:var(--ngs-color-on-success-container)}:host[data-variant=warning]{background:var(--ngs-color-warning-container);color:var(--ngs-color-on-warning-container)}:host[data-variant=negative]{background:var(--ngs-color-danger-container);color:var(--ngs-color-on-danger-container)}:host .content{display:flex;align-items:center;flex:1 1 0}:host .message{margin-inline-end:calc(var(--spacing, .25rem) * 3)}:host .icon{display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-inline-end:calc(var(--spacing, .25rem) * 2)}:host:has(.icon){padding-left:calc(var(--spacing, .25rem) * 3)}:host:has(.close){padding-right:calc(var(--spacing, .25rem) * 2.5)}:host .close{display:flex;align-items:center;flex-shrink:0}:host .close [ngsIconButton]{width:2rem;height:2rem;min-width:2rem;min-height:2rem;--btn-tonal-bg: transparent;--btn-filled-bg: transparent}:host .close [ngsIconButton] ngs-icon{width:1.25rem;height:1.25rem}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "component", type: Icon, selector: "ngs-icon", inputs: ["name"], exportAs: ["ngsIcon"] }, { kind: "component", type: Button, selector: " button[ngsButton], button[ngsIconButton], a[ngsButton], a[ngsIconButton] ", inputs: ["ngsButton", "ngsIconButton", "loading", "disabled", "disabledInteractive", "disableRipple", "reverse", "fullWidth", "hideTextOnMobile"], exportAs: ["ngsButton"] }] });
|
|
27
27
|
}
|
|
28
28
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: Announcement, decorators: [{
|
|
29
29
|
type: Component,
|
|
@@ -32,7 +32,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImpor
|
|
|
32
32
|
Button
|
|
33
33
|
], host: {
|
|
34
34
|
'class': 'ngs-announcement',
|
|
35
|
-
}, template: "<div class=\"content\">\n @if (iconName()) {\n <div class=\"icon\">\n <ngs-icon [name]=\"iconName()\"/>\n </div>\n }\n @if (title()) {\n <div class=\"title\">{{ title() }}</div>\n }\n <div class=\"message\"><ng-content/></div>\n @if (linkTo()) {\n <a class=\"link underline underline-offset-3\" href=\"{{ linkTo()!.url }}\" [target]=\"linkTo()!.target || 'blank'\">\n {{ linkTo()!.text || linkTo()!.url }}\n </a>\n }\n</div>\n@if (closable()) {\n <div class=\"close\">\n <button ngsIconButton (click)=\"close()\">\n <ngs-icon name=\"fluent:dismiss-24-regular\"/>\n </button>\n </div>\n}\n", styles: [":host{display:flex;align-items:center;justify-content:space-between;padding:calc(var(--spacing, .25rem) * 1) calc(var(--spacing, .25rem) * 4);font-size
|
|
35
|
+
}, template: "<div class=\"content\">\n @if (iconName()) {\n <div class=\"icon\">\n <ngs-icon [name]=\"iconName()\"/>\n </div>\n }\n @if (title()) {\n <div class=\"title\">{{ title() }}</div>\n }\n <div class=\"message\"><ng-content/></div>\n @if (linkTo()) {\n <a class=\"link underline underline-offset-3\" href=\"{{ linkTo()!.url }}\" [target]=\"linkTo()!.target || 'blank'\">\n {{ linkTo()!.text || linkTo()!.url }}\n </a>\n }\n</div>\n@if (closable()) {\n <div class=\"close\">\n <button ngsIconButton (click)=\"close()\">\n <ngs-icon name=\"fluent:dismiss-24-regular\"/>\n </button>\n </div>\n}\n", styles: [":host{display:flex;align-items:center;justify-content:space-between;padding:calc(var(--spacing, .25rem) * 1) calc(var(--spacing, .25rem) * 4);font-size:var(--ngs-font-size-sm);min-height:calc(var(--spacing, .25rem) * 10)}:host .title{font-weight:700;margin-inline-end:calc(var(--spacing, .25rem) * 3)}:host .title:empty{display:none}:host[data-variant=neutral]{background:var(--ngs-color-secondary-container);color:var(--ngs-color-on-secondary-container)}:host[data-variant=informative]{background:var(--ngs-color-info-container);color:var(--ngs-color-on-info-container)}:host[data-variant=positive]{background:var(--ngs-color-success-container);color:var(--ngs-color-on-success-container)}:host[data-variant=warning]{background:var(--ngs-color-warning-container);color:var(--ngs-color-on-warning-container)}:host[data-variant=negative]{background:var(--ngs-color-danger-container);color:var(--ngs-color-on-danger-container)}:host .content{display:flex;align-items:center;flex:1 1 0}:host .message{margin-inline-end:calc(var(--spacing, .25rem) * 3)}:host .icon{display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-inline-end:calc(var(--spacing, .25rem) * 2)}:host:has(.icon){padding-left:calc(var(--spacing, .25rem) * 3)}:host:has(.close){padding-right:calc(var(--spacing, .25rem) * 2.5)}:host .close{display:flex;align-items:center;flex-shrink:0}:host .close [ngsIconButton]{width:2rem;height:2rem;min-width:2rem;min-height:2rem;--btn-tonal-bg: transparent;--btn-filled-bg: transparent}:host .close [ngsIconButton] ngs-icon{width:1.25rem;height:1.25rem}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
|
|
36
36
|
}], ctorParameters: () => [], propDecorators: { title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], iconName: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconName", required: false }] }], closable: [{ type: i0.Input, args: [{ isSignal: true, alias: "closable", required: false }] }], linkTo: [{ type: i0.Input, args: [{ isSignal: true, alias: "linkTo", required: false }] }], closed: [{ type: i0.Output, args: ["closed"] }] } });
|
|
37
37
|
|
|
38
38
|
const initialState = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngstarter-ui-components-announcement.mjs","sources":["../../../projects/components/announcement/src/announcement/announcement.ts","../../../projects/components/announcement/src/announcement/announcement.html","../../../projects/components/announcement/src/announcement.store.ts","../../../projects/components/announcement/src/announcement-global/announcement-global.ts","../../../projects/components/announcement/src/announcement-global/announcement-global.html","../../../projects/components/announcement/src/announcement-title.ts","../../../projects/components/announcement/ngstarter-ui-components-announcement.ts"],"sourcesContent":["import {\n booleanAttribute,\n Component, effect,\n ElementRef,\n inject,\n input,\n output,\n Renderer2\n} from '@angular/core';\nimport { Icon } from '@ngstarter-ui/components/icon';\nimport { AnnouncementLinkTo, AnnouncementVariant } from '../types';\nimport { Button } from '@ngstarter-ui/components/button';\n\n@Component({\n selector: 'ngs-announcement',\n exportAs: 'ngsAnnouncement',\n imports: [\n Icon,\n Button\n ],\n templateUrl: './announcement.html',\n styleUrl: './announcement.scss',\n host: {\n 'class': 'ngs-announcement',\n }\n})\nexport class Announcement {\n private _elementRef = inject(ElementRef);\n private _renderer = inject(Renderer2);\n\n title = input('');\n variant = input<AnnouncementVariant>('neutral');\n iconName = input('');\n closable = input(false, {\n transform: booleanAttribute\n });\n linkTo = input<AnnouncementLinkTo | null | undefined>(null);\n\n readonly closed = output<void>();\n\n constructor() {\n effect(() => {\n this._renderer.setAttribute(this._elementRef.nativeElement, 'data-variant', this.variant() || 'neutral');\n });\n }\n\n protected close() {\n this.closed.emit();\n }\n}\n","<div class=\"content\">\n @if (iconName()) {\n <div class=\"icon\">\n <ngs-icon [name]=\"iconName()\"/>\n </div>\n }\n @if (title()) {\n <div class=\"title\">{{ title() }}</div>\n }\n <div class=\"message\"><ng-content/></div>\n @if (linkTo()) {\n <a class=\"link underline underline-offset-3\" href=\"{{ linkTo()!.url }}\" [target]=\"linkTo()!.target || 'blank'\">\n {{ linkTo()!.text || linkTo()!.url }}\n </a>\n }\n</div>\n@if (closable()) {\n <div class=\"close\">\n <button ngsIconButton (click)=\"close()\">\n <ngs-icon name=\"fluent:dismiss-24-regular\"/>\n </button>\n </div>\n}\n","import { patchState, signalStore, withMethods, withState } from '@ngrx/signals';\nimport { AnnouncementData } from './types';\n\nexport interface AnnouncementState {\n announcement: AnnouncementData | null;\n}\n\nconst initialState: AnnouncementState = {\n announcement: null,\n};\n\nexport const AnnouncementStore = signalStore(\n { providedIn: 'root' },\n withState(initialState),\n withMethods((store) => ({\n show(announcement: AnnouncementData): void {\n patchState(store, { announcement });\n },\n hide() {\n patchState(store, { announcement: null });\n }\n }))\n);\n","import { Component, computed, inject, output } from '@angular/core';\nimport { AnnouncementStore } from '../announcement.store';\nimport { AnnouncementData as AnnouncementInterface } from '../types';\nimport { Announcement } from '../announcement/announcement';\nimport { SafeHtmlPipe } from '@ngstarter-ui/components/core';\n\n@Component({\n selector: 'ngs-announcement-global',\n exportAs: 'ngsAnnouncementGlobal',\n imports: [\n Announcement,\n SafeHtmlPipe\n ],\n templateUrl: './announcement-global.html',\n styleUrl: './announcement-global.scss'\n})\nexport class AnnouncementGlobal {\n private _announcementStore = inject(AnnouncementStore);\n\n announcement = computed<AnnouncementInterface>(() => {\n return this._announcementStore.announcement() as AnnouncementInterface;\n });\n\n readonly announcementClose = output<void>();\n\n onClose() {\n this._announcementStore.hide();\n }\n}\n","@if (announcement()) {\n <ngs-announcement closable\n [title]=\"announcement().title || ''\"\n [iconName]=\"announcement().iconName || ''\"\n [variant]=\"announcement().variant || ''\"\n [linkTo]=\"announcement().linkTo\"\n (closed)=\"onClose()\">\n <div [innerHTML]=\"announcement().message | safeHtml\"></div>\n </ngs-announcement>\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[ngsAnnouncementTitle]'\n})\nexport class AnnouncementTitle {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;MA0Ba,YAAY,CAAA;AACf,IAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;AAChC,IAAA,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AAErC,IAAA,KAAK,GAAG,KAAK,CAAC,EAAE,4EAAC;AACjB,IAAA,OAAO,GAAG,KAAK,CAAsB,SAAS,8EAAC;AAC/C,IAAA,QAAQ,GAAG,KAAK,CAAC,EAAE,+EAAC;IACpB,QAAQ,GAAG,KAAK,CAAC,KAAK,gFACpB,SAAS,EAAE,gBAAgB,EAAA,CAC3B;AACF,IAAA,MAAM,GAAG,KAAK,CAAwC,IAAI,6EAAC;IAElD,MAAM,GAAG,MAAM,EAAQ;AAEhC,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,cAAc,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,SAAS,CAAC;AAC1G,QAAA,CAAC,CAAC;IACJ;IAEU,KAAK,GAAA;AACb,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;IACpB;uGAtBW,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAZ,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC1BzB,2nBAuBA,EAAA,MAAA,EAAA,CAAA,
|
|
1
|
+
{"version":3,"file":"ngstarter-ui-components-announcement.mjs","sources":["../../../projects/components/announcement/src/announcement/announcement.ts","../../../projects/components/announcement/src/announcement/announcement.html","../../../projects/components/announcement/src/announcement.store.ts","../../../projects/components/announcement/src/announcement-global/announcement-global.ts","../../../projects/components/announcement/src/announcement-global/announcement-global.html","../../../projects/components/announcement/src/announcement-title.ts","../../../projects/components/announcement/ngstarter-ui-components-announcement.ts"],"sourcesContent":["import {\n booleanAttribute,\n Component, effect,\n ElementRef,\n inject,\n input,\n output,\n Renderer2\n} from '@angular/core';\nimport { Icon } from '@ngstarter-ui/components/icon';\nimport { AnnouncementLinkTo, AnnouncementVariant } from '../types';\nimport { Button } from '@ngstarter-ui/components/button';\n\n@Component({\n selector: 'ngs-announcement',\n exportAs: 'ngsAnnouncement',\n imports: [\n Icon,\n Button\n ],\n templateUrl: './announcement.html',\n styleUrl: './announcement.scss',\n host: {\n 'class': 'ngs-announcement',\n }\n})\nexport class Announcement {\n private _elementRef = inject(ElementRef);\n private _renderer = inject(Renderer2);\n\n title = input('');\n variant = input<AnnouncementVariant>('neutral');\n iconName = input('');\n closable = input(false, {\n transform: booleanAttribute\n });\n linkTo = input<AnnouncementLinkTo | null | undefined>(null);\n\n readonly closed = output<void>();\n\n constructor() {\n effect(() => {\n this._renderer.setAttribute(this._elementRef.nativeElement, 'data-variant', this.variant() || 'neutral');\n });\n }\n\n protected close() {\n this.closed.emit();\n }\n}\n","<div class=\"content\">\n @if (iconName()) {\n <div class=\"icon\">\n <ngs-icon [name]=\"iconName()\"/>\n </div>\n }\n @if (title()) {\n <div class=\"title\">{{ title() }}</div>\n }\n <div class=\"message\"><ng-content/></div>\n @if (linkTo()) {\n <a class=\"link underline underline-offset-3\" href=\"{{ linkTo()!.url }}\" [target]=\"linkTo()!.target || 'blank'\">\n {{ linkTo()!.text || linkTo()!.url }}\n </a>\n }\n</div>\n@if (closable()) {\n <div class=\"close\">\n <button ngsIconButton (click)=\"close()\">\n <ngs-icon name=\"fluent:dismiss-24-regular\"/>\n </button>\n </div>\n}\n","import { patchState, signalStore, withMethods, withState } from '@ngrx/signals';\nimport { AnnouncementData } from './types';\n\nexport interface AnnouncementState {\n announcement: AnnouncementData | null;\n}\n\nconst initialState: AnnouncementState = {\n announcement: null,\n};\n\nexport const AnnouncementStore = signalStore(\n { providedIn: 'root' },\n withState(initialState),\n withMethods((store) => ({\n show(announcement: AnnouncementData): void {\n patchState(store, { announcement });\n },\n hide() {\n patchState(store, { announcement: null });\n }\n }))\n);\n","import { Component, computed, inject, output } from '@angular/core';\nimport { AnnouncementStore } from '../announcement.store';\nimport { AnnouncementData as AnnouncementInterface } from '../types';\nimport { Announcement } from '../announcement/announcement';\nimport { SafeHtmlPipe } from '@ngstarter-ui/components/core';\n\n@Component({\n selector: 'ngs-announcement-global',\n exportAs: 'ngsAnnouncementGlobal',\n imports: [\n Announcement,\n SafeHtmlPipe\n ],\n templateUrl: './announcement-global.html',\n styleUrl: './announcement-global.scss'\n})\nexport class AnnouncementGlobal {\n private _announcementStore = inject(AnnouncementStore);\n\n announcement = computed<AnnouncementInterface>(() => {\n return this._announcementStore.announcement() as AnnouncementInterface;\n });\n\n readonly announcementClose = output<void>();\n\n onClose() {\n this._announcementStore.hide();\n }\n}\n","@if (announcement()) {\n <ngs-announcement closable\n [title]=\"announcement().title || ''\"\n [iconName]=\"announcement().iconName || ''\"\n [variant]=\"announcement().variant || ''\"\n [linkTo]=\"announcement().linkTo\"\n (closed)=\"onClose()\">\n <div [innerHTML]=\"announcement().message | safeHtml\"></div>\n </ngs-announcement>\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[ngsAnnouncementTitle]'\n})\nexport class AnnouncementTitle {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -41,7 +41,7 @@ class Autocomplete {
|
|
|
41
41
|
provide: OPTION_PARENT,
|
|
42
42
|
useExisting: forwardRef(() => Autocomplete)
|
|
43
43
|
}
|
|
44
|
-
], queries: [{ propertyName: "options", predicate: Option, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "template", first: true, predicate: TemplateRef, descendants: true, isSignal: true }, { propertyName: "panel", first: true, predicate: ["panel"], descendants: true, isSignal: true }], exportAs: ["ngsAutocomplete"], ngImport: i0, template: "<ng-template>\n <div class=\"ngs-autocomplete-panel\"\n role=\"listbox\"\n [id]=\"id\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-labelledby]=\"ariaLabelledby()\"\n [ngClass]=\"classList()\"\n #panel>\n <ng-content />\n </div>\n</ng-template>\n", styles: [".ngs-autocomplete-panel{background:var(--ngs-autocomplete-panel-bg, var(--dropdown-bg));box-shadow:var(--ngs-autocomplete-panel-shadow, var(--dropdown-shadow));border-radius:var(--ngs-autocomplete-panel-border-radius, var(--dropdown-radius));max-height:var(--ngs-autocomplete-panel-max-height, var(--dropdown-max-height, 256px));overflow:auto;min-width:100%;transform-origin:top;animation:ngs-dropdown-panel-showing .15s cubic-bezier(0,0,.2,1);padding-top:8px;padding-bottom:8px;outline:var(--ngs-autocomplete-panel-border, var(--dropdown-border))}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
44
|
+
], queries: [{ propertyName: "options", predicate: Option, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "template", first: true, predicate: TemplateRef, descendants: true, isSignal: true }, { propertyName: "panel", first: true, predicate: ["panel"], descendants: true, isSignal: true }], exportAs: ["ngsAutocomplete"], ngImport: i0, template: "<ng-template>\n <div class=\"ngs-autocomplete-panel\"\n role=\"listbox\"\n [id]=\"id\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-labelledby]=\"ariaLabelledby()\"\n [ngClass]=\"classList()\"\n #panel>\n <ng-content />\n </div>\n</ng-template>\n", styles: [".ngs-autocomplete-panel{background:var(--ngs-autocomplete-panel-bg, var(--ngs-dropdown-bg));box-shadow:var(--ngs-autocomplete-panel-shadow, var(--ngs-dropdown-shadow));border-radius:var(--ngs-autocomplete-panel-border-radius, var(--ngs-dropdown-radius));max-height:var(--ngs-autocomplete-panel-max-height, var(--ngs-dropdown-max-height, 256px));overflow:auto;min-width:100%;transform-origin:top;animation:ngs-dropdown-panel-showing .15s cubic-bezier(0,0,.2,1);padding-top:8px;padding-bottom:8px;outline:var(--ngs-autocomplete-panel-border, var(--ngs-dropdown-border))}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
45
45
|
}
|
|
46
46
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: Autocomplete, decorators: [{
|
|
47
47
|
type: Component,
|
|
@@ -52,7 +52,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImpor
|
|
|
52
52
|
provide: OPTION_PARENT,
|
|
53
53
|
useExisting: forwardRef(() => Autocomplete)
|
|
54
54
|
}
|
|
55
|
-
], template: "<ng-template>\n <div class=\"ngs-autocomplete-panel\"\n role=\"listbox\"\n [id]=\"id\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-labelledby]=\"ariaLabelledby()\"\n [ngClass]=\"classList()\"\n #panel>\n <ng-content />\n </div>\n</ng-template>\n", styles: [".ngs-autocomplete-panel{background:var(--ngs-autocomplete-panel-bg, var(--dropdown-bg));box-shadow:var(--ngs-autocomplete-panel-shadow, var(--dropdown-shadow));border-radius:var(--ngs-autocomplete-panel-border-radius, var(--dropdown-radius));max-height:var(--ngs-autocomplete-panel-max-height, var(--dropdown-max-height, 256px));overflow:auto;min-width:100%;transform-origin:top;animation:ngs-dropdown-panel-showing .15s cubic-bezier(0,0,.2,1);padding-top:8px;padding-bottom:8px;outline:var(--ngs-autocomplete-panel-border, var(--dropdown-border))}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
|
|
55
|
+
], template: "<ng-template>\n <div class=\"ngs-autocomplete-panel\"\n role=\"listbox\"\n [id]=\"id\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-labelledby]=\"ariaLabelledby()\"\n [ngClass]=\"classList()\"\n #panel>\n <ng-content />\n </div>\n</ng-template>\n", styles: [".ngs-autocomplete-panel{background:var(--ngs-autocomplete-panel-bg, var(--ngs-dropdown-bg));box-shadow:var(--ngs-autocomplete-panel-shadow, var(--ngs-dropdown-shadow));border-radius:var(--ngs-autocomplete-panel-border-radius, var(--ngs-dropdown-radius));max-height:var(--ngs-autocomplete-panel-max-height, var(--ngs-dropdown-max-height, 256px));overflow:auto;min-width:100%;transform-origin:top;animation:ngs-dropdown-panel-showing .15s cubic-bezier(0,0,.2,1);padding-top:8px;padding-bottom:8px;outline:var(--ngs-autocomplete-panel-border, var(--ngs-dropdown-border))}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
|
|
56
56
|
}], propDecorators: { options: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => Option), { ...{ descendants: true }, isSignal: true }] }], template: [{ type: i0.ViewChild, args: [i0.forwardRef(() => TemplateRef), { isSignal: true }] }], panel: [{ type: i0.ViewChild, args: ['panel', { isSignal: true }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-label", required: false }] }], ariaLabelledby: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-labelledby", required: false }] }], autoActiveFirstOption: [{ type: i0.Input, args: [{ isSignal: true, alias: "autoActiveFirstOption", required: false }] }], autoSelectActiveOption: [{ type: i0.Input, args: [{ isSignal: true, alias: "autoSelectActiveOption", required: false }] }], classList: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }], disableRipple: [{ type: i0.Input, args: [{ isSignal: true, alias: "disableRipple", required: false }] }], displayWith: [{ type: i0.Input, args: [{ isSignal: true, alias: "displayWith", required: false }] }], hideSingleSelectionIndicator: [{ type: i0.Input, args: [{ isSignal: true, alias: "hideSingleSelectionIndicator", required: false }] }], panelWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "panelWidth", required: false }] }], requireSelection: [{ type: i0.Input, args: [{ isSignal: true, alias: "requireSelection", required: false }] }], closed: [{ type: i0.Output, args: ["closed"] }], opened: [{ type: i0.Output, args: ["opened"] }], optionActivated: [{ type: i0.Output, args: ["optionActivated"] }], optionSelected: [{ type: i0.Output, args: ["optionSelected"] }] } });
|
|
57
57
|
|
|
58
58
|
class AutocompleteTrigger {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngstarter-ui-components-autocomplete.mjs","sources":["../../../projects/components/autocomplete/src/autocomplete/autocomplete.ts","../../../projects/components/autocomplete/src/autocomplete/autocomplete.html","../../../projects/components/autocomplete/src/autocomplete-trigger.ts","../../../projects/components/autocomplete/ngstarter-ui-components-autocomplete.ts"],"sourcesContent":["import {\n Component,\n TemplateRef,\n viewChild,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n output,\n ElementRef,\n input,\n booleanAttribute,\n EventEmitter,\n Output,\n Input,\n signal,\n forwardRef,\n contentChildren\n} from '@angular/core';\nimport { Option, OPTION_PARENT, _OptionParent } from '@ngstarter-ui/components/option';\nimport { NgClass } from '@angular/common';\n\nlet nextId = 0;\n\nexport interface AutocompleteActivatedEvent {\n source: Autocomplete;\n option: Option | null;\n}\n\nexport interface AutocompleteSelectedEvent {\n source: Autocomplete;\n option: Option;\n}\n\n@Component({\n selector: 'ngs-autocomplete',\n exportAs: 'ngsAutocomplete',\n imports: [\n NgClass\n ],\n templateUrl: './autocomplete.html',\n styleUrl: './autocomplete.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: OPTION_PARENT,\n useExisting: forwardRef(() => Autocomplete)\n }\n ]\n})\nexport class Autocomplete implements _OptionParent {\n readonly options = contentChildren(Option, { descendants: true });\n\n multiple = signal(false);\n readonly template = viewChild.required(TemplateRef);\n readonly panel = viewChild<ElementRef<HTMLElement>>('panel');\n\n id = `ngs-autocomplete-${nextId++}`;\n\n ariaLabel = input<string | undefined>(undefined, { alias: 'aria-label' });\n ariaLabelledby = input<string | undefined>(undefined, { alias: 'aria-labelledby' });\n autoActiveFirstOption = input(false, { transform: booleanAttribute });\n autoSelectActiveOption = input(false, { transform: booleanAttribute });\n classList = input<string | string[] | undefined>(undefined, { alias: 'class' });\n disableRipple = input(false, { transform: booleanAttribute });\n displayWith = input<(value: any) => string | null>(() => null);\n hideSingleSelectionIndicator = input(false, { transform: booleanAttribute });\n panelWidth = input<string | number | undefined>(undefined);\n requireSelection = input(false, { transform: booleanAttribute });\n\n closed = output<void>();\n opened = output<void>();\n optionActivated = output<AutocompleteActivatedEvent>();\n optionSelected = output<AutocompleteSelectedEvent>();\n\n _emitSelectEvent(option: Option): void {\n this.optionSelected.emit({ source: this, option });\n }\n}\n","<ng-template>\n <div class=\"ngs-autocomplete-panel\"\n role=\"listbox\"\n [id]=\"id\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-labelledby]=\"ariaLabelledby()\"\n [ngClass]=\"classList()\"\n #panel>\n <ng-content />\n </div>\n</ng-template>\n","import {\n Directive,\n ElementRef,\n inject,\n input,\n OnDestroy,\n ViewContainerRef,\n effect,\n Injector,\n} from '@angular/core';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { Autocomplete } from './autocomplete/autocomplete';\nimport { fromEvent, Subscription, merge } from 'rxjs';\nimport { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport { Option } from '@ngstarter-ui/components/option';\nimport { FormField } from '@ngstarter-ui/components/form-field';\nimport { ChipInput } from '@ngstarter-ui/components/chips';\n\n@Directive({\n selector: '[ngsAutocomplete]',\n exportAs: 'ngsAutocompleteTrigger',\n host: {\n 'role': 'combobox',\n 'aria-autocomplete': 'list',\n 'aria-haspopup': 'listbox',\n '(input)': '_handleInput()',\n '(focusin)': '_handleFocus()',\n '(click)': '_handleClick()',\n '(keydown)': '_handleKeydown($event)',\n }\n})\nexport class AutocompleteTrigger implements OnDestroy {\n private _elementRef = inject(ElementRef<HTMLInputElement>);\n private _overlay = inject(Overlay);\n private _viewContainerRef = inject(ViewContainerRef);\n private _formField = inject(FormField, { optional: true });\n private _chipInput = inject(ChipInput, { optional: true });\n private _injector = inject(Injector);\n\n autocomplete = input.required<Autocomplete>({alias: 'ngsAutocomplete'});\n\n private _overlayRef: OverlayRef | null = null;\n private _portal: TemplatePortal | null = null;\n private _closingSubscription = Subscription.EMPTY;\n private _keyManager!: ActiveDescendantKeyManager<Option>;\n private _canOpenOnInput = true;\n private _resizeObserver: ResizeObserver | null = null;\n private _optionsSubscription = Subscription.EMPTY;\n\n constructor() {\n effect(() => {\n const chipsLength = this._chipInput?.chipGrid?.chipsLength;\n\n if (chipsLength === 0 && this.panelOpen) {\n this._elementRef.nativeElement.focus();\n }\n });\n }\n\n ngOnDestroy() {\n this._destroyOverlay();\n this._stopResizeObserver();\n this._optionsSubscription.unsubscribe();\n }\n\n private _startResizeObserver() {\n this._resizeObserver = new ResizeObserver(() => {\n this.updatePosition();\n });\n this._resizeObserver.observe(this._getConnectedElement().nativeElement);\n }\n\n private _stopResizeObserver() {\n this._resizeObserver?.disconnect();\n this._resizeObserver = null;\n }\n\n _handleInput(): void {\n if (!this.panelOpen && this._canOpenOnInput) {\n this.openPanel();\n }\n this._syncSelectedOption();\n }\n\n private _syncSelectedOption(): void {\n const value = this._elementRef.nativeElement.value;\n this.autocomplete().options().forEach(option => {\n if (value && option.viewValue.toLowerCase() === value.toLowerCase()) {\n option.select();\n } else {\n option.deselect();\n }\n });\n }\n\n _handleFocus(): void {\n if (!this.panelOpen && this._canOpenOnInput) {\n this.openPanel();\n }\n this._syncSelectedOption();\n }\n\n _handleClick(): void {\n if (!this.panelOpen && this._canOpenOnInput) {\n this.openPanel();\n }\n this._syncSelectedOption();\n }\n\n _handleKeydown(event: KeyboardEvent): void {\n if (event.defaultPrevented) {\n return;\n }\n\n if (event.key === 'Escape' && this.panelOpen) {\n this.closePanel();\n event.stopPropagation();\n } else if (this._keyManager) {\n const activeItemBefore = this._keyManager.activeItem;\n this._keyManager.onKeydown(event);\n\n if (event.key === 'Enter' && this._keyManager.activeItem && this._keyManager.activeItem === activeItemBefore) {\n this._selectOption(this._keyManager.activeItem);\n event.preventDefault();\n }\n }\n }\n\n get panelOpen(): boolean {\n return !!this._overlayRef && this._overlayRef.hasAttached();\n }\n\n openPanel(): void {\n if (this.panelOpen || !this.autocomplete().options().length) {\n return;\n }\n\n if (!this._overlayRef) {\n this._createOverlay();\n }\n\n this._updatePanelWidth();\n\n if (!this._overlayRef!.hasAttached()) {\n this._portal = new TemplatePortal(this.autocomplete().template(), this._viewContainerRef);\n this._overlayRef!.attach(this._portal);\n this._closingSubscription = this._subscribeToClosingIndices();\n this._setupSelectionListeners();\n this._startResizeObserver();\n this.autocomplete().opened.emit();\n }\n\n this._initKeyManager();\n this._setActiveItem();\n }\n\n private _setActiveItem(): void {\n const value = this._elementRef.nativeElement.value;\n\n if (this.autocomplete().options().length > 0) {\n const activeOption = this.autocomplete().options().find(option => {\n return option.viewValue.toLowerCase() === value.toLowerCase();\n });\n\n if (activeOption) {\n this._keyManager.setActiveItem(activeOption);\n } else {\n if (value && this.autocomplete().autoActiveFirstOption()) {\n this._keyManager.setFirstItemActive();\n } else {\n this._keyManager.setActiveItem(-1);\n }\n }\n\n this._scrollToOption();\n }\n }\n\n private _scrollToOption(): void {\n const index = this._keyManager.activeItemIndex || 0;\n const option = this.autocomplete().options()[index];\n\n if (option && this.autocomplete().panel()) {\n const panel = this.autocomplete().panel()!.nativeElement;\n const optionElement = option.elementRef.nativeElement;\n const panelTop = panel.scrollTop;\n const panelBottom = panelTop + panel.clientHeight;\n const optionTop = optionElement.offsetTop;\n const optionBottom = optionTop + optionElement.clientHeight;\n\n if (optionTop < panelTop) {\n panel.scrollTop = optionTop;\n } else if (optionBottom > panelBottom) {\n panel.scrollTop = optionBottom - panel.clientHeight;\n }\n }\n }\n\n closePanel(): void {\n if (this.panelOpen) {\n this._overlayRef!.detach();\n this._closingSubscription.unsubscribe();\n this._stopResizeObserver();\n\n if (this.autocomplete().requireSelection() && !this._elementRef.nativeElement.value) {\n this._elementRef.nativeElement.value = '';\n this._elementRef.nativeElement.dispatchEvent(new Event('input', { bubbles: true }));\n }\n\n this.autocomplete().closed.emit();\n }\n }\n\n updatePosition(): void {\n if (this._overlayRef) {\n this._updatePanelWidth();\n this._overlayRef.updatePosition();\n }\n }\n\n private _getConnectedElement(): ElementRef {\n if (this._formField) {\n return this._formField.wrapper();\n }\n\n return this._elementRef;\n }\n\n private _getPanelWidth(): number | string {\n return this.autocomplete().panelWidth() || this._getConnectedElement().nativeElement.offsetWidth;\n }\n\n private _createOverlay(): void {\n const strategy = this._overlay\n .position()\n .flexibleConnectedTo(this._getConnectedElement())\n .withPositions([\n {originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top'},\n {originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom'}\n ]);\n\n this._overlayRef = this._overlay.create({\n positionStrategy: strategy,\n scrollStrategy: this._overlay.scrollStrategies.reposition(),\n width: this._getPanelWidth(),\n });\n }\n\n private _destroyOverlay(): void {\n if (this._overlayRef) {\n this.closePanel();\n this._overlayRef.dispose();\n this._overlayRef = null;\n }\n }\n\n private _subscribeToClosingIndices(): Subscription {\n const backdropClick = this._overlayRef!.backdropClick();\n const detachments = this._overlayRef!.detachments();\n const outsidePointerEvents = this._overlayRef!.outsidePointerEvents();\n\n return merge(backdropClick, detachments, outsidePointerEvents).subscribe((event) => {\n if (event instanceof MouseEvent) {\n if (this._elementRef.nativeElement.contains(event.target as Node)) {\n return;\n }\n\n const connectedElement = this._getConnectedElement().nativeElement;\n\n if (connectedElement.contains(event.target as Node)) {\n return;\n }\n }\n\n this.closePanel();\n });\n }\n\n private _initKeyManager(): void {\n if (this._keyManager) {\n return;\n }\n\n this._keyManager = new ActiveDescendantKeyManager<Option>(this.autocomplete().options())\n .withWrap()\n .withTypeAhead();\n\n this._optionsSubscription = toObservable(this.autocomplete().options, { injector: this._injector }).subscribe(() => {\n this._setupSelectionListeners();\n this._setActiveItem();\n this._syncSelectedOption();\n\n if (this.autocomplete().options().length === 0 && this.panelOpen) {\n this.closePanel();\n } else if (this.autocomplete().options().length > 0 && !this.panelOpen && this._elementRef.nativeElement === document.activeElement && this._canOpenOnInput) {\n this.openPanel();\n }\n });\n\n this._keyManager.change.subscribe(() => {\n this._scrollToOption();\n\n if (this.autocomplete().autoSelectActiveOption() && this._keyManager.activeItem) {\n this._selectOption(this._keyManager.activeItem);\n }\n\n this.autocomplete().optionActivated.emit({\n source: this.autocomplete(),\n option: this._keyManager.activeItem\n });\n });\n }\n\n private _setupSelectionListeners(): void {\n this.autocomplete().options().forEach(option => {\n // Prevent input from losing focus on mousedown, but do not select yet\n const mousedownSub = fromEvent<MouseEvent>(option.elementRef.nativeElement, 'mousedown').subscribe((event) => {\n event.preventDefault();\n });\n // Select option on click (after mouseup) to match native/select behavior\n const clickSub = fromEvent<MouseEvent>(option.elementRef.nativeElement, 'click').subscribe((event) => {\n if (option.disabled) {\n event.preventDefault();\n return;\n }\n this._selectOption(option);\n });\n if (this._closingSubscription && !this._closingSubscription.closed) {\n this._closingSubscription.add(mousedownSub);\n this._closingSubscription.add(clickSub);\n }\n });\n }\n\n private _updatePanelWidth(): void {\n if (this._overlayRef) {\n this._overlayRef.updateSize({\n width: this._getPanelWidth()\n });\n }\n }\n\n private _selectOption(option: Option): void {\n const value = option.viewValue;\n this.autocomplete().options().forEach(o => o.deselect());\n option.select();\n this._canOpenOnInput = false;\n this._elementRef.nativeElement.value = value;\n this._elementRef.nativeElement.dispatchEvent(new Event('input', { bubbles: true }));\n this._elementRef.nativeElement.dispatchEvent(new Event('change', { bubbles: true }));\n this.autocomplete()._emitSelectEvent(option);\n this.closePanel();\n setTimeout(() => this._canOpenOnInput = true);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngstarter-ui-components-autocomplete.mjs","sources":["../../../projects/components/autocomplete/src/autocomplete/autocomplete.ts","../../../projects/components/autocomplete/src/autocomplete/autocomplete.html","../../../projects/components/autocomplete/src/autocomplete-trigger.ts","../../../projects/components/autocomplete/ngstarter-ui-components-autocomplete.ts"],"sourcesContent":["import {\n Component,\n TemplateRef,\n viewChild,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n output,\n ElementRef,\n input,\n booleanAttribute,\n EventEmitter,\n Output,\n Input,\n signal,\n forwardRef,\n contentChildren\n} from '@angular/core';\nimport { Option, OPTION_PARENT, _OptionParent } from '@ngstarter-ui/components/option';\nimport { NgClass } from '@angular/common';\n\nlet nextId = 0;\n\nexport interface AutocompleteActivatedEvent {\n source: Autocomplete;\n option: Option | null;\n}\n\nexport interface AutocompleteSelectedEvent {\n source: Autocomplete;\n option: Option;\n}\n\n@Component({\n selector: 'ngs-autocomplete',\n exportAs: 'ngsAutocomplete',\n imports: [\n NgClass\n ],\n templateUrl: './autocomplete.html',\n styleUrl: './autocomplete.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: OPTION_PARENT,\n useExisting: forwardRef(() => Autocomplete)\n }\n ]\n})\nexport class Autocomplete implements _OptionParent {\n readonly options = contentChildren(Option, { descendants: true });\n\n multiple = signal(false);\n readonly template = viewChild.required(TemplateRef);\n readonly panel = viewChild<ElementRef<HTMLElement>>('panel');\n\n id = `ngs-autocomplete-${nextId++}`;\n\n ariaLabel = input<string | undefined>(undefined, { alias: 'aria-label' });\n ariaLabelledby = input<string | undefined>(undefined, { alias: 'aria-labelledby' });\n autoActiveFirstOption = input(false, { transform: booleanAttribute });\n autoSelectActiveOption = input(false, { transform: booleanAttribute });\n classList = input<string | string[] | undefined>(undefined, { alias: 'class' });\n disableRipple = input(false, { transform: booleanAttribute });\n displayWith = input<(value: any) => string | null>(() => null);\n hideSingleSelectionIndicator = input(false, { transform: booleanAttribute });\n panelWidth = input<string | number | undefined>(undefined);\n requireSelection = input(false, { transform: booleanAttribute });\n\n closed = output<void>();\n opened = output<void>();\n optionActivated = output<AutocompleteActivatedEvent>();\n optionSelected = output<AutocompleteSelectedEvent>();\n\n _emitSelectEvent(option: Option): void {\n this.optionSelected.emit({ source: this, option });\n }\n}\n","<ng-template>\n <div class=\"ngs-autocomplete-panel\"\n role=\"listbox\"\n [id]=\"id\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-labelledby]=\"ariaLabelledby()\"\n [ngClass]=\"classList()\"\n #panel>\n <ng-content />\n </div>\n</ng-template>\n","import {\n Directive,\n ElementRef,\n inject,\n input,\n OnDestroy,\n ViewContainerRef,\n effect,\n Injector,\n} from '@angular/core';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { Autocomplete } from './autocomplete/autocomplete';\nimport { fromEvent, Subscription, merge } from 'rxjs';\nimport { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport { Option } from '@ngstarter-ui/components/option';\nimport { FormField } from '@ngstarter-ui/components/form-field';\nimport { ChipInput } from '@ngstarter-ui/components/chips';\n\n@Directive({\n selector: '[ngsAutocomplete]',\n exportAs: 'ngsAutocompleteTrigger',\n host: {\n 'role': 'combobox',\n 'aria-autocomplete': 'list',\n 'aria-haspopup': 'listbox',\n '(input)': '_handleInput()',\n '(focusin)': '_handleFocus()',\n '(click)': '_handleClick()',\n '(keydown)': '_handleKeydown($event)',\n }\n})\nexport class AutocompleteTrigger implements OnDestroy {\n private _elementRef = inject(ElementRef<HTMLInputElement>);\n private _overlay = inject(Overlay);\n private _viewContainerRef = inject(ViewContainerRef);\n private _formField = inject(FormField, { optional: true });\n private _chipInput = inject(ChipInput, { optional: true });\n private _injector = inject(Injector);\n\n autocomplete = input.required<Autocomplete>({alias: 'ngsAutocomplete'});\n\n private _overlayRef: OverlayRef | null = null;\n private _portal: TemplatePortal | null = null;\n private _closingSubscription = Subscription.EMPTY;\n private _keyManager!: ActiveDescendantKeyManager<Option>;\n private _canOpenOnInput = true;\n private _resizeObserver: ResizeObserver | null = null;\n private _optionsSubscription = Subscription.EMPTY;\n\n constructor() {\n effect(() => {\n const chipsLength = this._chipInput?.chipGrid?.chipsLength;\n\n if (chipsLength === 0 && this.panelOpen) {\n this._elementRef.nativeElement.focus();\n }\n });\n }\n\n ngOnDestroy() {\n this._destroyOverlay();\n this._stopResizeObserver();\n this._optionsSubscription.unsubscribe();\n }\n\n private _startResizeObserver() {\n this._resizeObserver = new ResizeObserver(() => {\n this.updatePosition();\n });\n this._resizeObserver.observe(this._getConnectedElement().nativeElement);\n }\n\n private _stopResizeObserver() {\n this._resizeObserver?.disconnect();\n this._resizeObserver = null;\n }\n\n _handleInput(): void {\n if (!this.panelOpen && this._canOpenOnInput) {\n this.openPanel();\n }\n this._syncSelectedOption();\n }\n\n private _syncSelectedOption(): void {\n const value = this._elementRef.nativeElement.value;\n this.autocomplete().options().forEach(option => {\n if (value && option.viewValue.toLowerCase() === value.toLowerCase()) {\n option.select();\n } else {\n option.deselect();\n }\n });\n }\n\n _handleFocus(): void {\n if (!this.panelOpen && this._canOpenOnInput) {\n this.openPanel();\n }\n this._syncSelectedOption();\n }\n\n _handleClick(): void {\n if (!this.panelOpen && this._canOpenOnInput) {\n this.openPanel();\n }\n this._syncSelectedOption();\n }\n\n _handleKeydown(event: KeyboardEvent): void {\n if (event.defaultPrevented) {\n return;\n }\n\n if (event.key === 'Escape' && this.panelOpen) {\n this.closePanel();\n event.stopPropagation();\n } else if (this._keyManager) {\n const activeItemBefore = this._keyManager.activeItem;\n this._keyManager.onKeydown(event);\n\n if (event.key === 'Enter' && this._keyManager.activeItem && this._keyManager.activeItem === activeItemBefore) {\n this._selectOption(this._keyManager.activeItem);\n event.preventDefault();\n }\n }\n }\n\n get panelOpen(): boolean {\n return !!this._overlayRef && this._overlayRef.hasAttached();\n }\n\n openPanel(): void {\n if (this.panelOpen || !this.autocomplete().options().length) {\n return;\n }\n\n if (!this._overlayRef) {\n this._createOverlay();\n }\n\n this._updatePanelWidth();\n\n if (!this._overlayRef!.hasAttached()) {\n this._portal = new TemplatePortal(this.autocomplete().template(), this._viewContainerRef);\n this._overlayRef!.attach(this._portal);\n this._closingSubscription = this._subscribeToClosingIndices();\n this._setupSelectionListeners();\n this._startResizeObserver();\n this.autocomplete().opened.emit();\n }\n\n this._initKeyManager();\n this._setActiveItem();\n }\n\n private _setActiveItem(): void {\n const value = this._elementRef.nativeElement.value;\n\n if (this.autocomplete().options().length > 0) {\n const activeOption = this.autocomplete().options().find(option => {\n return option.viewValue.toLowerCase() === value.toLowerCase();\n });\n\n if (activeOption) {\n this._keyManager.setActiveItem(activeOption);\n } else {\n if (value && this.autocomplete().autoActiveFirstOption()) {\n this._keyManager.setFirstItemActive();\n } else {\n this._keyManager.setActiveItem(-1);\n }\n }\n\n this._scrollToOption();\n }\n }\n\n private _scrollToOption(): void {\n const index = this._keyManager.activeItemIndex || 0;\n const option = this.autocomplete().options()[index];\n\n if (option && this.autocomplete().panel()) {\n const panel = this.autocomplete().panel()!.nativeElement;\n const optionElement = option.elementRef.nativeElement;\n const panelTop = panel.scrollTop;\n const panelBottom = panelTop + panel.clientHeight;\n const optionTop = optionElement.offsetTop;\n const optionBottom = optionTop + optionElement.clientHeight;\n\n if (optionTop < panelTop) {\n panel.scrollTop = optionTop;\n } else if (optionBottom > panelBottom) {\n panel.scrollTop = optionBottom - panel.clientHeight;\n }\n }\n }\n\n closePanel(): void {\n if (this.panelOpen) {\n this._overlayRef!.detach();\n this._closingSubscription.unsubscribe();\n this._stopResizeObserver();\n\n if (this.autocomplete().requireSelection() && !this._elementRef.nativeElement.value) {\n this._elementRef.nativeElement.value = '';\n this._elementRef.nativeElement.dispatchEvent(new Event('input', { bubbles: true }));\n }\n\n this.autocomplete().closed.emit();\n }\n }\n\n updatePosition(): void {\n if (this._overlayRef) {\n this._updatePanelWidth();\n this._overlayRef.updatePosition();\n }\n }\n\n private _getConnectedElement(): ElementRef {\n if (this._formField) {\n return this._formField.wrapper();\n }\n\n return this._elementRef;\n }\n\n private _getPanelWidth(): number | string {\n return this.autocomplete().panelWidth() || this._getConnectedElement().nativeElement.offsetWidth;\n }\n\n private _createOverlay(): void {\n const strategy = this._overlay\n .position()\n .flexibleConnectedTo(this._getConnectedElement())\n .withPositions([\n {originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top'},\n {originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom'}\n ]);\n\n this._overlayRef = this._overlay.create({\n positionStrategy: strategy,\n scrollStrategy: this._overlay.scrollStrategies.reposition(),\n width: this._getPanelWidth(),\n });\n }\n\n private _destroyOverlay(): void {\n if (this._overlayRef) {\n this.closePanel();\n this._overlayRef.dispose();\n this._overlayRef = null;\n }\n }\n\n private _subscribeToClosingIndices(): Subscription {\n const backdropClick = this._overlayRef!.backdropClick();\n const detachments = this._overlayRef!.detachments();\n const outsidePointerEvents = this._overlayRef!.outsidePointerEvents();\n\n return merge(backdropClick, detachments, outsidePointerEvents).subscribe((event) => {\n if (event instanceof MouseEvent) {\n if (this._elementRef.nativeElement.contains(event.target as Node)) {\n return;\n }\n\n const connectedElement = this._getConnectedElement().nativeElement;\n\n if (connectedElement.contains(event.target as Node)) {\n return;\n }\n }\n\n this.closePanel();\n });\n }\n\n private _initKeyManager(): void {\n if (this._keyManager) {\n return;\n }\n\n this._keyManager = new ActiveDescendantKeyManager<Option>(this.autocomplete().options())\n .withWrap()\n .withTypeAhead();\n\n this._optionsSubscription = toObservable(this.autocomplete().options, { injector: this._injector }).subscribe(() => {\n this._setupSelectionListeners();\n this._setActiveItem();\n this._syncSelectedOption();\n\n if (this.autocomplete().options().length === 0 && this.panelOpen) {\n this.closePanel();\n } else if (this.autocomplete().options().length > 0 && !this.panelOpen && this._elementRef.nativeElement === document.activeElement && this._canOpenOnInput) {\n this.openPanel();\n }\n });\n\n this._keyManager.change.subscribe(() => {\n this._scrollToOption();\n\n if (this.autocomplete().autoSelectActiveOption() && this._keyManager.activeItem) {\n this._selectOption(this._keyManager.activeItem);\n }\n\n this.autocomplete().optionActivated.emit({\n source: this.autocomplete(),\n option: this._keyManager.activeItem\n });\n });\n }\n\n private _setupSelectionListeners(): void {\n this.autocomplete().options().forEach(option => {\n // Prevent input from losing focus on mousedown, but do not select yet\n const mousedownSub = fromEvent<MouseEvent>(option.elementRef.nativeElement, 'mousedown').subscribe((event) => {\n event.preventDefault();\n });\n // Select option on click (after mouseup) to match native/select behavior\n const clickSub = fromEvent<MouseEvent>(option.elementRef.nativeElement, 'click').subscribe((event) => {\n if (option.disabled) {\n event.preventDefault();\n return;\n }\n this._selectOption(option);\n });\n if (this._closingSubscription && !this._closingSubscription.closed) {\n this._closingSubscription.add(mousedownSub);\n this._closingSubscription.add(clickSub);\n }\n });\n }\n\n private _updatePanelWidth(): void {\n if (this._overlayRef) {\n this._overlayRef.updateSize({\n width: this._getPanelWidth()\n });\n }\n }\n\n private _selectOption(option: Option): void {\n const value = option.viewValue;\n this.autocomplete().options().forEach(o => o.deselect());\n option.select();\n this._canOpenOnInput = false;\n this._elementRef.nativeElement.value = value;\n this._elementRef.nativeElement.dispatchEvent(new Event('input', { bubbles: true }));\n this._elementRef.nativeElement.dispatchEvent(new Event('change', { bubbles: true }));\n this.autocomplete()._emitSelectEvent(option);\n this.closePanel();\n setTimeout(() => this._canOpenOnInput = true);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|