@egose/shadcn-theme-ng-tw 0.0.28 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +130 -13
- package/accordion/README.md +376 -34
- package/accordion/fesm2022/accordion.mjs +20 -20
- package/alert/README.md +343 -34
- package/alert/fesm2022/alert.mjs +18 -18
- package/alert-dialog/README.md +471 -5
- package/alert-dialog/fesm2022/alert-dialog.mjs +48 -48
- package/alert-dialog/types/alert-dialog.d.ts +1 -1
- package/aspect-ratio/README.md +272 -5
- package/aspect-ratio/fesm2022/aspect-ratio.mjs +9 -9
- package/autocomplete/README.md +473 -34
- package/autocomplete/fesm2022/autocomplete.mjs +54 -54
- package/autocomplete/types/autocomplete.d.ts +1 -1
- package/avatar/README.md +357 -5
- package/avatar/fesm2022/avatar.mjs +32 -32
- package/badge/README.md +289 -34
- package/badge/fesm2022/badge.mjs +4 -4
- package/basic-alert/README.md +324 -34
- package/basic-alert/fesm2022/basic-alert.mjs +4 -4
- package/basic-alert/types/basic-alert.d.ts +1 -1
- package/breadcrumb/README.md +406 -5
- package/breadcrumb/fesm2022/breadcrumb.mjs +34 -34
- package/button/README.md +453 -34
- package/button/fesm2022/button.mjs +96 -118
- package/button/types/button.d.ts +7 -10
- package/button-group/README.md +318 -5
- package/button-group/fesm2022/button-group.mjs +20 -20
- package/calendar/README.md +328 -34
- package/calendar/fesm2022/calendar.mjs +154 -154
- package/card/README.md +331 -5
- package/card/fesm2022/card.mjs +33 -33
- package/carousel/README.md +333 -5
- package/carousel/fesm2022/carousel.mjs +47 -44
- package/carousel/types/carousel.d.ts +1 -1
- package/checkbox/README.md +291 -34
- package/checkbox/fesm2022/checkbox.mjs +22 -20
- package/checkbox/types/checkbox.d.ts +5 -4
- package/collapsible/README.md +332 -5
- package/collapsible/fesm2022/collapsible.mjs +15 -15
- package/combobox/README.md +507 -5
- package/combobox/fesm2022/combobox.mjs +95 -92
- package/combobox/types/combobox.d.ts +1 -1
- package/command/README.md +435 -5
- package/command/fesm2022/command.mjs +56 -56
- package/confirmation-dialog/README.md +272 -34
- package/confirmation-dialog/fesm2022/confirmation-dialog.mjs +13 -12
- package/confirmation-dialog/types/confirmation-dialog.d.ts +9 -5
- package/context-menu/README.md +366 -5
- package/context-menu/fesm2022/context-menu.mjs +9 -9
- package/date-picker/README.md +436 -34
- package/date-picker/fesm2022/date-picker.mjs +79 -68
- package/date-picker/types/date-picker.d.ts +8 -4
- package/dialog/README.md +419 -34
- package/dialog/fesm2022/dialog.mjs +48 -48
- package/drawer/README.md +395 -5
- package/drawer/fesm2022/drawer.mjs +45 -45
- package/dropdown-menu/README.md +417 -5
- package/dropdown-menu/fesm2022/dropdown-menu.mjs +85 -73
- package/dropdown-menu/types/dropdown-menu.d.ts +4 -0
- package/empty/README.md +329 -5
- package/empty/fesm2022/empty.mjs +31 -31
- package/field/README.md +385 -5
- package/field/fesm2022/field.mjs +59 -59
- package/field/types/field.d.ts +1 -1
- package/form-checkbox/README.md +283 -34
- package/form-checkbox/fesm2022/form-checkbox.mjs +37 -19
- package/form-checkbox/types/form-checkbox.d.ts +7 -1
- package/form-date-picker/README.md +293 -34
- package/form-date-picker/fesm2022/form-date-picker.mjs +59 -24
- package/form-date-picker/types/form-date-picker.d.ts +7 -1
- package/form-field/README.md +327 -34
- package/form-field/fesm2022/form-field.mjs +30 -16
- package/form-field/types/form-field.d.ts +28 -20
- package/form-field-simple/README.md +311 -34
- package/form-field-simple/fesm2022/form-field-simple.mjs +4 -4
- package/form-searchable-multiselect/README.md +332 -34
- package/form-searchable-multiselect/fesm2022/form-searchable-multiselect.mjs +41 -21
- package/form-searchable-multiselect/types/form-searchable-multiselect.d.ts +8 -2
- package/form-select/README.md +321 -34
- package/form-select/fesm2022/form-select.mjs +62 -29
- package/form-select/types/form-select.d.ts +7 -1
- package/form-text-input/README.md +342 -34
- package/form-text-input/fesm2022/form-text-input.mjs +43 -55
- package/form-text-input/types/form-text-input.d.ts +9 -12
- package/form-textarea/README.md +318 -34
- package/form-textarea/fesm2022/form-textarea.mjs +42 -23
- package/form-textarea/types/form-textarea.d.ts +8 -1
- package/hover-card/README.md +256 -5
- package/hover-card/fesm2022/hover-card.mjs +19 -19
- package/icon/README.md +210 -34
- package/icon/fesm2022/icon.mjs +8 -8
- package/input/README.md +240 -34
- package/input/fesm2022/input.mjs +17 -12
- package/input/types/input.d.ts +2 -1
- package/input-group/README.md +335 -5
- package/input-group/fesm2022/input-group.mjs +37 -37
- package/input-group/types/input-group.d.ts +3 -3
- package/input-otp/README.md +375 -5
- package/input-otp/fesm2022/input-otp.mjs +27 -27
- package/item/README.md +385 -5
- package/item/fesm2022/item.mjs +54 -54
- package/kbd/README.md +291 -5
- package/kbd/fesm2022/kbd.mjs +13 -13
- package/label/README.md +243 -34
- package/label/fesm2022/label.mjs +9 -9
- package/label/types/label.d.ts +1 -1
- package/layout-simple/README.md +174 -44
- package/layout-simple/fesm2022/layout-simple.mjs +917 -398
- package/layout-simple/types/layout-simple.d.ts +180 -129
- package/menu/README.md +418 -0
- package/menu/fesm2022/menu.mjs +461 -0
- package/menu/package.json +24 -0
- package/menu/types/menu.d.ts +137 -0
- package/menubar/README.md +343 -5
- package/menubar/fesm2022/menubar.mjs +13 -13
- package/native-select/README.md +323 -5
- package/native-select/fesm2022/native-select.mjs +19 -19
- package/navigation-menu/README.md +369 -5
- package/navigation-menu/fesm2022/navigation-menu.mjs +37 -37
- package/package.json +183 -154
- package/pagination/README.md +388 -5
- package/pagination/fesm2022/pagination.mjs +63 -63
- package/popover/README.md +302 -34
- package/popover/fesm2022/popover.mjs +30 -30
- package/progress/README.md +311 -5
- package/progress/fesm2022/progress.mjs +13 -13
- package/radio-group/README.md +335 -34
- package/radio-group/fesm2022/radio-group.mjs +26 -19
- package/resizable/README.md +269 -5
- package/resizable/fesm2022/resizable.mjs +19 -19
- package/scroll-area/README.md +233 -5
- package/scroll-area/fesm2022/scroll-area.mjs +9 -9
- package/searchable-multiselect/README.md +294 -34
- package/searchable-multiselect/fesm2022/searchable-multiselect.mjs +63 -16
- package/searchable-multiselect/types/searchable-multiselect.d.ts +8 -2
- package/select/README.md +408 -34
- package/select/fesm2022/select.mjs +80 -72
- package/select/types/select.d.ts +3 -1
- package/separator/README.md +193 -34
- package/separator/fesm2022/separator.mjs +9 -9
- package/separator/types/separator.d.ts +1 -1
- package/sheet/README.md +282 -34
- package/sheet/fesm2022/sheet.mjs +30 -30
- package/sidebar/README.md +457 -5
- package/sidebar/fesm2022/sidebar.mjs +136 -134
- package/sidebar/types/sidebar.d.ts +3 -3
- package/skeleton/README.md +217 -5
- package/skeleton/fesm2022/skeleton.mjs +9 -9
- package/slider/README.md +273 -5
- package/slider/fesm2022/slider.mjs +29 -25
- package/sonner/README.md +317 -34
- package/sonner/fesm2022/sonner.mjs +9 -9
- package/spinner/README.md +255 -34
- package/spinner/fesm2022/spinner.mjs +8 -8
- package/switch/README.md +281 -34
- package/switch/fesm2022/switch.mjs +12 -14
- package/table/README.md +423 -5
- package/table/fesm2022/table.mjs +41 -41
- package/tabs/README.md +382 -34
- package/tabs/fesm2022/tabs.mjs +48 -38
- package/textarea/README.md +282 -5
- package/textarea/fesm2022/textarea.mjs +9 -9
- package/toggle/README.md +270 -5
- package/toggle/fesm2022/toggle.mjs +14 -14
- package/toggle-group/README.md +340 -5
- package/toggle-group/fesm2022/toggle-group.mjs +13 -13
- package/toggle-group/types/toggle-group.d.ts +13 -7
- package/tooltip/README.md +240 -34
- package/tooltip/fesm2022/tooltip.mjs +14 -14
- package/typography/README.md +271 -5
- package/typography/fesm2022/typography.mjs +53 -53
- package/typography/types/typography.d.ts +12 -12
- package/utils/README.md +274 -34
- package/utils/fesm2022/utils.mjs +68 -44
- package/accordion/fesm2022/accordion.mjs.map +0 -1
- package/alert/fesm2022/alert.mjs.map +0 -1
- package/alert-dialog/fesm2022/alert-dialog.mjs.map +0 -1
- package/aspect-ratio/fesm2022/aspect-ratio.mjs.map +0 -1
- package/autocomplete/fesm2022/autocomplete.mjs.map +0 -1
- package/avatar/fesm2022/avatar.mjs.map +0 -1
- package/badge/fesm2022/badge.mjs.map +0 -1
- package/basic-alert/fesm2022/basic-alert.mjs.map +0 -1
- package/breadcrumb/fesm2022/breadcrumb.mjs.map +0 -1
- package/button/fesm2022/button.mjs.map +0 -1
- package/button-group/fesm2022/button-group.mjs.map +0 -1
- package/calendar/fesm2022/calendar.mjs.map +0 -1
- package/card/fesm2022/card.mjs.map +0 -1
- package/carousel/fesm2022/carousel.mjs.map +0 -1
- package/checkbox/fesm2022/checkbox.mjs.map +0 -1
- package/collapsible/fesm2022/collapsible.mjs.map +0 -1
- package/combobox/fesm2022/combobox.mjs.map +0 -1
- package/command/fesm2022/command.mjs.map +0 -1
- package/confirmation-dialog/fesm2022/confirmation-dialog.mjs.map +0 -1
- package/context-menu/fesm2022/context-menu.mjs.map +0 -1
- package/date-picker/fesm2022/date-picker.mjs.map +0 -1
- package/dialog/fesm2022/dialog.mjs.map +0 -1
- package/drawer/fesm2022/drawer.mjs.map +0 -1
- package/dropdown-menu/fesm2022/dropdown-menu.mjs.map +0 -1
- package/empty/fesm2022/empty.mjs.map +0 -1
- package/field/fesm2022/field.mjs.map +0 -1
- package/form-checkbox/fesm2022/form-checkbox.mjs.map +0 -1
- package/form-date-picker/fesm2022/form-date-picker.mjs.map +0 -1
- package/form-field/fesm2022/form-field.mjs.map +0 -1
- package/form-field-simple/fesm2022/form-field-simple.mjs.map +0 -1
- package/form-searchable-multiselect/fesm2022/form-searchable-multiselect.mjs.map +0 -1
- package/form-select/fesm2022/form-select.mjs.map +0 -1
- package/form-text-input/fesm2022/form-text-input.mjs.map +0 -1
- package/form-textarea/fesm2022/form-textarea.mjs.map +0 -1
- package/hover-card/fesm2022/hover-card.mjs.map +0 -1
- package/icon/fesm2022/icon.mjs.map +0 -1
- package/input/fesm2022/input.mjs.map +0 -1
- package/input-group/fesm2022/input-group.mjs.map +0 -1
- package/input-otp/fesm2022/input-otp.mjs.map +0 -1
- package/item/fesm2022/item.mjs.map +0 -1
- package/kbd/fesm2022/kbd.mjs.map +0 -1
- package/label/fesm2022/label.mjs.map +0 -1
- package/layout-simple/fesm2022/layout-simple.mjs.map +0 -1
- package/menubar/fesm2022/menubar.mjs.map +0 -1
- package/native-select/fesm2022/native-select.mjs.map +0 -1
- package/navigation-menu/fesm2022/navigation-menu.mjs.map +0 -1
- package/pagination/fesm2022/pagination.mjs.map +0 -1
- package/popover/fesm2022/popover.mjs.map +0 -1
- package/progress/fesm2022/progress.mjs.map +0 -1
- package/radio-group/fesm2022/radio-group.mjs.map +0 -1
- package/resizable/fesm2022/resizable.mjs.map +0 -1
- package/scroll-area/fesm2022/scroll-area.mjs.map +0 -1
- package/searchable-multiselect/fesm2022/searchable-multiselect.mjs.map +0 -1
- package/select/fesm2022/select.mjs.map +0 -1
- package/separator/fesm2022/separator.mjs.map +0 -1
- package/sheet/fesm2022/sheet.mjs.map +0 -1
- package/sidebar/fesm2022/sidebar.mjs.map +0 -1
- package/skeleton/fesm2022/skeleton.mjs.map +0 -1
- package/slider/fesm2022/slider.mjs.map +0 -1
- package/sonner/fesm2022/sonner.mjs.map +0 -1
- package/spinner/fesm2022/spinner.mjs.map +0 -1
- package/switch/fesm2022/switch.mjs.map +0 -1
- package/table/fesm2022/table.mjs.map +0 -1
- package/tabs/fesm2022/tabs.mjs.map +0 -1
- package/textarea/fesm2022/textarea.mjs.map +0 -1
- package/toggle/fesm2022/toggle.mjs.map +0 -1
- package/toggle-group/fesm2022/toggle-group.mjs.map +0 -1
- package/tooltip/fesm2022/tooltip.mjs.map +0 -1
- package/typography/fesm2022/typography.mjs.map +0 -1
- package/utils/fesm2022/utils.mjs.map +0 -1
|
@@ -12,12 +12,12 @@ import { HlmInputGroupImports } from '@egose/shadcn-theme-ng-tw/input-group';
|
|
|
12
12
|
|
|
13
13
|
class HlmCommand {
|
|
14
14
|
constructor() {
|
|
15
|
-
classes(() => 'bg-popover text-popover-foreground rounded-xl! p-1 flex size-full flex-col overflow-hidden');
|
|
15
|
+
classes(() => 'tw:bg-popover tw:text-popover-foreground tw:rounded-xl! tw:p-1 tw:flex tw:size-full tw:flex-col tw:overflow-hidden');
|
|
16
16
|
}
|
|
17
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.
|
|
18
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.
|
|
17
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmCommand, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
18
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.3", type: HlmCommand, isStandalone: true, selector: "[hlmCommand],hlm-command", host: { attributes: { "data-slot": "command" } }, hostDirectives: [{ directive: i1.BrnCommand, inputs: ["id", "id", "filter", "filter", "search", "search", "disabled", "disabled"], outputs: ["valueChange", "valueChange", "searchChange", "searchChange"] }], ngImport: i0 });
|
|
19
19
|
}
|
|
20
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.
|
|
20
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmCommand, decorators: [{
|
|
21
21
|
type: Directive,
|
|
22
22
|
args: [{
|
|
23
23
|
selector: '[hlmCommand],hlm-command',
|
|
@@ -46,22 +46,22 @@ class HlmCommandDialog {
|
|
|
46
46
|
showCloseButton = input(false, { ...(ngDevMode ? { debugName: "showCloseButton" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
47
47
|
dialogContentClass = input('', /* @ts-ignore */
|
|
48
48
|
...(ngDevMode ? [{ debugName: "dialogContentClass" }] : /* istanbul ignore next */ []));
|
|
49
|
-
_computedDialogContentClass = computed(() => hlm('w-96 p-0', this.dialogContentClass()), /* @ts-ignore */
|
|
49
|
+
_computedDialogContentClass = computed(() => hlm('tw:w-96 tw:p-0', this.dialogContentClass()), /* @ts-ignore */
|
|
50
50
|
...(ngDevMode ? [{ debugName: "_computedDialogContentClass" }] : /* istanbul ignore next */ []));
|
|
51
51
|
stateChange = output();
|
|
52
52
|
stateChanged(state) {
|
|
53
53
|
this.stateChange.emit(state);
|
|
54
54
|
this._state.set(state);
|
|
55
55
|
}
|
|
56
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.
|
|
57
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.
|
|
56
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmCommandDialog, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
57
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.3", type: HlmCommandDialog, isStandalone: true, selector: "hlm-command-dialog", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: false, transformFunction: null }, state: { classPropertyName: "state", publicName: "state", isSignal: true, isRequired: false, transformFunction: null }, showCloseButton: { classPropertyName: "showCloseButton", publicName: "showCloseButton", isSignal: true, isRequired: false, transformFunction: null }, dialogContentClass: { classPropertyName: "dialogContentClass", publicName: "dialogContentClass", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { stateChange: "stateChange" }, ngImport: i0, template: `
|
|
58
58
|
<hlm-dialog [state]="_state()" (stateChanged)="stateChanged($event)">
|
|
59
59
|
<hlm-dialog-content
|
|
60
60
|
*hlmDialogPortal="let ctx"
|
|
61
61
|
[class]="_computedDialogContentClass()"
|
|
62
62
|
[showCloseButton]="showCloseButton()"
|
|
63
63
|
>
|
|
64
|
-
<hlm-dialog-header class="sr-only">
|
|
64
|
+
<hlm-dialog-header class="tw:sr-only">
|
|
65
65
|
<h2 hlmDialogTitle>{{ title() }}</h2>
|
|
66
66
|
<p hlmDialogDescription>{{ description() }}</p>
|
|
67
67
|
</hlm-dialog-header>
|
|
@@ -70,7 +70,7 @@ class HlmCommandDialog {
|
|
|
70
70
|
</hlm-dialog>
|
|
71
71
|
`, isInline: true, dependencies: [{ kind: "component", type: i1$1.HlmDialog, selector: "hlm-dialog", exportAs: ["hlmDialog"] }, { kind: "component", type: i1$1.HlmDialogContent, selector: "hlm-dialog-content", inputs: ["showCloseButton"] }, { kind: "directive", type: i1$1.HlmDialogDescription, selector: "[hlmDialogDescription]" }, { kind: "directive", type: i1$1.HlmDialogHeader, selector: "[hlmDialogHeader],hlm-dialog-header" }, { kind: "directive", type: i1$1.HlmDialogPortal, selector: "[hlmDialogPortal]" }, { kind: "directive", type: i1$1.HlmDialogTitle, selector: "[hlmDialogTitle]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
72
72
|
}
|
|
73
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.
|
|
73
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmCommandDialog, decorators: [{
|
|
74
74
|
type: Component,
|
|
75
75
|
args: [{
|
|
76
76
|
selector: 'hlm-command-dialog',
|
|
@@ -83,7 +83,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
|
|
|
83
83
|
[class]="_computedDialogContentClass()"
|
|
84
84
|
[showCloseButton]="showCloseButton()"
|
|
85
85
|
>
|
|
86
|
-
<hlm-dialog-header class="sr-only">
|
|
86
|
+
<hlm-dialog-header class="tw:sr-only">
|
|
87
87
|
<h2 hlmDialogTitle>{{ title() }}</h2>
|
|
88
88
|
<p hlmDialogDescription>{{ description() }}</p>
|
|
89
89
|
</hlm-dialog-header>
|
|
@@ -96,12 +96,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
|
|
|
96
96
|
|
|
97
97
|
class HlmCommandEmpty {
|
|
98
98
|
constructor() {
|
|
99
|
-
classes(() => 'py-6 text-center text-sm');
|
|
99
|
+
classes(() => 'tw:py-6 tw:text-center tw:text-sm');
|
|
100
100
|
}
|
|
101
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.
|
|
102
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.
|
|
101
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmCommandEmpty, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
102
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.3", type: HlmCommandEmpty, isStandalone: true, selector: "[hlmCommandEmpty]", host: { attributes: { "data-slot": "command-empty" } }, ngImport: i0 });
|
|
103
103
|
}
|
|
104
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.
|
|
104
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmCommandEmpty, decorators: [{
|
|
105
105
|
type: Directive,
|
|
106
106
|
args: [{
|
|
107
107
|
selector: '[hlmCommandEmpty]',
|
|
@@ -112,10 +112,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
|
|
|
112
112
|
}], ctorParameters: () => [] });
|
|
113
113
|
|
|
114
114
|
class HlmCommandEmptyState {
|
|
115
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.
|
|
116
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.
|
|
115
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmCommandEmptyState, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
116
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.3", type: HlmCommandEmptyState, isStandalone: true, selector: "[hlmCommandEmptyState]", hostDirectives: [{ directive: i1.BrnCommandEmpty }], ngImport: i0 });
|
|
117
117
|
}
|
|
118
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.
|
|
118
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmCommandEmptyState, decorators: [{
|
|
119
119
|
type: Directive,
|
|
120
120
|
args: [{
|
|
121
121
|
selector: '[hlmCommandEmptyState]',
|
|
@@ -125,12 +125,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
|
|
|
125
125
|
|
|
126
126
|
class HlmCommandGroup {
|
|
127
127
|
constructor() {
|
|
128
|
-
classes(() => 'text-foreground
|
|
128
|
+
classes(() => 'tw:text-foreground tw:**:data-[slot=command-group-label]:text-muted-foreground tw:overflow-hidden tw:p-1 tw:**:data-[slot=command-group-label]:px-2 tw:**:data-[slot=command-group-label]:py-1.5 tw:**:data-[slot=command-group-label]:text-xs tw:**:data-[slot=command-group-label]:font-medium tw:block tw:data-hidden:hidden');
|
|
129
129
|
}
|
|
130
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.
|
|
131
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.
|
|
130
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmCommandGroup, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
131
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.3", type: HlmCommandGroup, isStandalone: true, selector: "[hlmCommandGroup],hlm-command-group", host: { attributes: { "data-slot": "command-group" } }, hostDirectives: [{ directive: i1.BrnCommandGroup, inputs: ["id", "id"] }], ngImport: i0 });
|
|
132
132
|
}
|
|
133
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.
|
|
133
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmCommandGroup, decorators: [{
|
|
134
134
|
type: Directive,
|
|
135
135
|
args: [{
|
|
136
136
|
selector: '[hlmCommandGroup],hlm-command-group',
|
|
@@ -148,12 +148,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
|
|
|
148
148
|
|
|
149
149
|
class HlmCommandGroupLabel {
|
|
150
150
|
constructor() {
|
|
151
|
-
classes(() => 'inline-block');
|
|
151
|
+
classes(() => 'tw:inline-block');
|
|
152
152
|
}
|
|
153
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.
|
|
154
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.
|
|
153
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmCommandGroupLabel, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
154
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.3", type: HlmCommandGroupLabel, isStandalone: true, selector: "[hlmCommandGroupLabel],hlm-command-group-label", host: { attributes: { "data-slot": "command-group-label", "role": "presentation" } }, ngImport: i0 });
|
|
155
155
|
}
|
|
156
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.
|
|
156
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmCommandGroupLabel, decorators: [{
|
|
157
157
|
type: Directive,
|
|
158
158
|
args: [{
|
|
159
159
|
selector: '[hlmCommandGroupLabel],hlm-command-group-label',
|
|
@@ -170,28 +170,28 @@ class HlmCommandInput {
|
|
|
170
170
|
placeholder = input('', /* @ts-ignore */
|
|
171
171
|
...(ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []));
|
|
172
172
|
constructor() {
|
|
173
|
-
classes(() => 'p-1 pb-0');
|
|
173
|
+
classes(() => 'tw:p-1 tw:pb-0');
|
|
174
174
|
}
|
|
175
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.
|
|
176
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.
|
|
175
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmCommandInput, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
176
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.3", type: HlmCommandInput, isStandalone: true, selector: "hlm-command-input", inputs: { inputId: { classPropertyName: "inputId", publicName: "inputId", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-slot": "command-input-wrapper" } }, providers: [provideIcons({ lucideSearch })], ngImport: i0, template: `
|
|
177
177
|
<hlm-input-group
|
|
178
|
-
class="bg-input/30 border-input/30 h-8! rounded-lg! shadow-none!
|
|
178
|
+
class="tw:bg-input/30 tw:border-input/30 tw:h-8! tw:rounded-lg! tw:shadow-none! tw:*:data-[slot=input-group-addon]:pl-2!"
|
|
179
179
|
>
|
|
180
180
|
<input
|
|
181
181
|
brnCommandInput
|
|
182
182
|
data-slot="command-input"
|
|
183
|
-
class="w-full text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50"
|
|
183
|
+
class="tw:w-full tw:text-sm tw:outline-hidden tw:disabled:cursor-not-allowed tw:disabled:opacity-50"
|
|
184
184
|
[id]="inputId()"
|
|
185
185
|
[placeholder]="placeholder()"
|
|
186
186
|
/>
|
|
187
187
|
|
|
188
188
|
<hlm-input-group-addon>
|
|
189
|
-
<ng-icon name="lucideSearch" class="shrink-0 text-[length:--spacing(4)] opacity-50" />
|
|
189
|
+
<ng-icon name="lucideSearch" class="tw:shrink-0 tw:text-[length:--spacing(4)] tw:opacity-50" />
|
|
190
190
|
</hlm-input-group-addon>
|
|
191
191
|
</hlm-input-group>
|
|
192
192
|
`, isInline: true, dependencies: [{ kind: "directive", type: i1$2.HlmInputGroup, selector: "[hlmInputGroup],hlm-input-group" }, { kind: "directive", type: i1$2.HlmInputGroupAddon, selector: "[hlmInputGroupAddon],hlm-input-group-addon", inputs: ["align"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: BrnCommandInput, selector: "input[brnCommandInput]", inputs: ["id"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
193
193
|
}
|
|
194
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.
|
|
194
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmCommandInput, decorators: [{
|
|
195
195
|
type: Component,
|
|
196
196
|
args: [{
|
|
197
197
|
selector: 'hlm-command-input',
|
|
@@ -203,18 +203,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
|
|
|
203
203
|
},
|
|
204
204
|
template: `
|
|
205
205
|
<hlm-input-group
|
|
206
|
-
class="bg-input/30 border-input/30 h-8! rounded-lg! shadow-none!
|
|
206
|
+
class="tw:bg-input/30 tw:border-input/30 tw:h-8! tw:rounded-lg! tw:shadow-none! tw:*:data-[slot=input-group-addon]:pl-2!"
|
|
207
207
|
>
|
|
208
208
|
<input
|
|
209
209
|
brnCommandInput
|
|
210
210
|
data-slot="command-input"
|
|
211
|
-
class="w-full text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50"
|
|
211
|
+
class="tw:w-full tw:text-sm tw:outline-hidden tw:disabled:cursor-not-allowed tw:disabled:opacity-50"
|
|
212
212
|
[id]="inputId()"
|
|
213
213
|
[placeholder]="placeholder()"
|
|
214
214
|
/>
|
|
215
215
|
|
|
216
216
|
<hlm-input-group-addon>
|
|
217
|
-
<ng-icon name="lucideSearch" class="shrink-0 text-[length:--spacing(4)] opacity-50" />
|
|
217
|
+
<ng-icon name="lucideSearch" class="tw:shrink-0 tw:text-[length:--spacing(4)] tw:opacity-50" />
|
|
218
218
|
</hlm-input-group-addon>
|
|
219
219
|
</hlm-input-group>
|
|
220
220
|
`,
|
|
@@ -223,12 +223,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
|
|
|
223
223
|
|
|
224
224
|
class HlmCommandItem {
|
|
225
225
|
constructor() {
|
|
226
|
-
classes(() => "data-selected:bg-muted data-selected:text-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none in-data-[slot=dialog-content]:rounded-lg! [&_ng-icon:not([class*='text-'])]:text-[length:--spacing(4)] group/command-item w-full data-disabled:pointer-events-none data-disabled:opacity-50 data-hidden:hidden [&>ng-icon]:pointer-events-none [&>ng-icon]:shrink-0");
|
|
226
|
+
classes(() => "tw:data-selected:bg-muted tw:data-selected:text-foreground tw:relative tw:flex tw:cursor-default tw:items-center tw:gap-2 tw:rounded-sm tw:px-2 tw:py-1.5 tw:text-sm tw:outline-hidden tw:select-none tw:in-data-[slot=dialog-content]:rounded-lg! tw:[&_ng-icon:not([class*='text-'])]:text-[length:--spacing(4)] tw:group/command-item tw:w-full tw:data-disabled:pointer-events-none tw:data-disabled:opacity-50 tw:data-hidden:hidden tw:[&>ng-icon]:pointer-events-none tw:[&>ng-icon]:shrink-0");
|
|
227
227
|
}
|
|
228
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.
|
|
229
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.
|
|
228
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmCommandItem, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
229
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.3", type: HlmCommandItem, isStandalone: true, selector: "button[hlmCommandItem],button[hlm-command-item]", host: { attributes: { "data-slot": "command-item" } }, hostDirectives: [{ directive: i1.BrnCommandItem, inputs: ["value", "value", "disabled", "disabled", "id", "id"], outputs: ["selected", "selected"] }], ngImport: i0 });
|
|
230
230
|
}
|
|
231
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.
|
|
231
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmCommandItem, decorators: [{
|
|
232
232
|
type: Directive,
|
|
233
233
|
args: [{
|
|
234
234
|
selector: 'button[hlmCommandItem],button[hlm-command-item]',
|
|
@@ -247,12 +247,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
|
|
|
247
247
|
|
|
248
248
|
class HlmCommandList {
|
|
249
249
|
constructor() {
|
|
250
|
-
classes(() => 'no-scrollbar max-h-72 scroll-py-1 outline-none overflow-x-hidden overflow-y-auto');
|
|
250
|
+
classes(() => 'no-scrollbar tw:max-h-72 tw:scroll-py-1 tw:outline-none tw:overflow-x-hidden tw:overflow-y-auto');
|
|
251
251
|
}
|
|
252
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.
|
|
253
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.
|
|
252
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmCommandList, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
253
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.3", type: HlmCommandList, isStandalone: true, selector: "[hlmCommandList],hlm-command-list", host: { attributes: { "data-slot": "command-list" } }, hostDirectives: [{ directive: i1.BrnCommandList, inputs: ["id", "id"] }], ngImport: i0 });
|
|
254
254
|
}
|
|
255
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.
|
|
255
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmCommandList, decorators: [{
|
|
256
256
|
type: Directive,
|
|
257
257
|
args: [{
|
|
258
258
|
selector: '[hlmCommandList],hlm-command-list',
|
|
@@ -270,12 +270,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
|
|
|
270
270
|
|
|
271
271
|
class HlmCommandSeparator {
|
|
272
272
|
constructor() {
|
|
273
|
-
classes(() => 'bg-border
|
|
273
|
+
classes(() => 'tw:bg-border tw:-mx-1 tw:h-px tw:w-auto tw:block tw:data-hidden:hidden');
|
|
274
274
|
}
|
|
275
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.
|
|
276
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.
|
|
275
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmCommandSeparator, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
276
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.3", type: HlmCommandSeparator, isStandalone: true, selector: "[hlmCommandSeparator],hlm-command-separator", host: { attributes: { "data-slot": "command-separator" } }, hostDirectives: [{ directive: i1.BrnCommandSeparator }], ngImport: i0 });
|
|
277
277
|
}
|
|
278
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.
|
|
278
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmCommandSeparator, decorators: [{
|
|
279
279
|
type: Directive,
|
|
280
280
|
args: [{
|
|
281
281
|
selector: '[hlmCommandSeparator],hlm-command-separator',
|
|
@@ -288,12 +288,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
|
|
|
288
288
|
|
|
289
289
|
class HlmCommandShortcut {
|
|
290
290
|
constructor() {
|
|
291
|
-
classes(() => 'text-muted-foreground group-data-[selected]/command-item:text-foreground ms-auto text-xs tracking-widest');
|
|
291
|
+
classes(() => 'tw:text-muted-foreground tw:group-data-[selected]/command-item:text-foreground tw:ms-auto tw:text-xs tw:tracking-widest');
|
|
292
292
|
}
|
|
293
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.
|
|
294
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.
|
|
293
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmCommandShortcut, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
294
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.3", type: HlmCommandShortcut, isStandalone: true, selector: "[hlmCommandShortcut],hlm-command-shortcut", host: { attributes: { "data-slot": "command-shortcut" } }, ngImport: i0 });
|
|
295
295
|
}
|
|
296
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.
|
|
296
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmCommandShortcut, decorators: [{
|
|
297
297
|
type: Directive,
|
|
298
298
|
args: [{
|
|
299
299
|
selector: '[hlmCommandShortcut],hlm-command-shortcut',
|
|
@@ -320,8 +320,8 @@ const HlmCommandImports = [
|
|
|
320
320
|
HlmCommandShortcut,
|
|
321
321
|
];
|
|
322
322
|
class HlmCommandModule {
|
|
323
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.
|
|
324
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.
|
|
323
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmCommandModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
324
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.1.3", ngImport: i0, type: HlmCommandModule, imports: [HlmCommand,
|
|
325
325
|
HlmCommandDialog,
|
|
326
326
|
HlmCommandEmpty,
|
|
327
327
|
HlmCommandEmptyState,
|
|
@@ -342,10 +342,10 @@ class HlmCommandModule {
|
|
|
342
342
|
HlmCommandList,
|
|
343
343
|
HlmCommandSeparator,
|
|
344
344
|
HlmCommandShortcut] });
|
|
345
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.
|
|
345
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmCommandModule, imports: [HlmCommandDialog,
|
|
346
346
|
HlmCommandInput] });
|
|
347
347
|
}
|
|
348
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.
|
|
348
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmCommandModule, decorators: [{
|
|
349
349
|
type: NgModule,
|
|
350
350
|
args: [{
|
|
351
351
|
imports: [...HlmCommandImports],
|
|
@@ -358,4 +358,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImpor
|
|
|
358
358
|
*/
|
|
359
359
|
|
|
360
360
|
export { HlmCommand, HlmCommandDialog, HlmCommandEmpty, HlmCommandEmptyState, HlmCommandGroup, HlmCommandGroupLabel, HlmCommandImports, HlmCommandInput, HlmCommandItem, HlmCommandList, HlmCommandModule, HlmCommandSeparator, HlmCommandShortcut };
|
|
361
|
-
|
|
361
|
+
|
|
@@ -1,64 +1,302 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Confirmation Dialog (`@egose/shadcn-theme-ng/confirmation-dialog`)
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
A promise-based "Are you sure?" modal — the Angular equivalent of a shadcn/ui `AlertDialog` confirmation shortcut. Instead of composing dialog primitives by hand, you call `EgConfirmationDialogService.showConfirmationDialog({ title, description })` and `await` a `Promise<boolean>` (`true` = Confirm, `false` = Cancel/dismiss). The rendered `EgConfirmationDialog` component itself (warning icon + title + description + Cancel/Confirm footer) is opened through `HlmDialogService` from `@egose/shadcn-theme-ng/dialog` with a `BrnDialogRef<boolean>` result. There is no `*Imports` array and no `*Module` — the public surface is the component, the service, and a deprecated misspelled alias.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Ships as `@egose/shadcn-theme-ng/confirmation-dialog` and `@egose/shadcn-theme-ng-tw/confirmation-dialog` (the `tw:`-prefixed variant). See the [package README](../../README.md) for install, peer dependencies, and Tailwind setup. Do not publish this project directory independently — it is consumed via the published subpath only.
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
## Installation
|
|
8
8
|
|
|
9
9
|
```bash
|
|
10
|
-
|
|
10
|
+
# Plain Tailwind (no prefix):
|
|
11
|
+
npm install @egose/shadcn-theme-ng
|
|
12
|
+
|
|
13
|
+
# Or the tw:-prefixed variant:
|
|
14
|
+
npm install @egose/shadcn-theme-ng-tw
|
|
11
15
|
```
|
|
12
16
|
|
|
13
|
-
|
|
17
|
+
Peers are listed in the [package README](../../README.md). This subpath declares `@angular/common` and `@angular/core` as peers (see `projects/confirmation-dialog/package.json`); at runtime it uses `@egose/shadcn-theme-ng/dialog`, `button`, `alert`, and `icon`, so install the whole package.
|
|
14
18
|
|
|
15
|
-
|
|
16
|
-
|
|
19
|
+
## Imports
|
|
20
|
+
|
|
21
|
+
The public API (`projects/confirmation-dialog/src/public-api.ts`) exports exactly:
|
|
22
|
+
|
|
23
|
+
```ts
|
|
24
|
+
import {
|
|
25
|
+
EgConfirmationDialog,
|
|
26
|
+
EgConfirmationDialogService,
|
|
27
|
+
// Deprecated misspelled alias (type + const) — do not use in new code:
|
|
28
|
+
EgConfirmationDiaglog,
|
|
29
|
+
} from '@egose/shadcn-theme-ng/confirmation-dialog';
|
|
30
|
+
// tw variant:
|
|
31
|
+
// import { ... } from '@egose/shadcn-theme-ng-tw/confirmation-dialog';
|
|
17
32
|
```
|
|
18
33
|
|
|
19
|
-
|
|
34
|
+
There is no `EgConfirmationDialogImports` and no `EgConfirmationDialogModule`. The service is `@Injectable({ providedIn: 'root' })` — just inject it:
|
|
20
35
|
|
|
21
|
-
|
|
36
|
+
```ts
|
|
37
|
+
import { Component, inject } from '@angular/core';
|
|
38
|
+
import { EgConfirmationDialogService } from '@egose/shadcn-theme-ng/confirmation-dialog';
|
|
22
39
|
|
|
23
|
-
|
|
24
|
-
|
|
40
|
+
@Component({ selector: 'app-demo', standalone: true, template: `...` })
|
|
41
|
+
export class DemoComponent {
|
|
42
|
+
private readonly confirm = inject(EgConfirmationDialogService);
|
|
43
|
+
}
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
> `EgConfirmationDiaglog` (missing the second `a`) is a deprecated type+const alias for `EgConfirmationDialog` kept for back-compat. It will be removed in the next major release — use the correctly spelled name.
|
|
47
|
+
|
|
48
|
+
## Anatomy / Structure
|
|
49
|
+
|
|
50
|
+
You never write the dialog markup yourself — the service opens this fixed template:
|
|
51
|
+
|
|
52
|
+
```html
|
|
53
|
+
<!-- Rendered by EgConfirmationDialog (fixed internal template) -->
|
|
54
|
+
<hlm-dialog-header>
|
|
55
|
+
<div class="tw:flex tw:items-center tw:gap-1">
|
|
56
|
+
<ng-icon hlm hlmAlertIcon name="lucideTriangleAlert" size="base" />
|
|
57
|
+
<h3 hlmDialogTitle>{{ title }}</h3>
|
|
58
|
+
</div>
|
|
59
|
+
<p hlmDialogDescription>{{ description }}</p>
|
|
60
|
+
</hlm-dialog-header>
|
|
61
|
+
|
|
62
|
+
<hlm-dialog-footer>
|
|
63
|
+
<button hlmButton variant="secondary" appearance="outline">Cancel</button>
|
|
64
|
+
<button hlmButton variant="danger">Confirm</button>
|
|
65
|
+
</hlm-dialog-footer>
|
|
25
66
|
```
|
|
26
67
|
|
|
27
|
-
|
|
68
|
+
- `EgConfirmationDialog` has **no selector** — it is instantiated by `HlmDialogService.open<boolean>(EgConfirmationDialog, { context: { title, description } })`.
|
|
69
|
+
- Title/description fall back to `'Are you absolutely sure?'` / `'This action cannot be undone.'` when the context omits them.
|
|
70
|
+
- `close(confirm: boolean)` closes the `BrnDialogRef<boolean>` with the result; Cancel resolves `false`, Confirm resolves `true`, and dismissing (X / backdrop / Escape) resolves `false` via `closed$ ?? false`.
|
|
28
71
|
|
|
29
|
-
|
|
72
|
+
## API reference
|
|
30
73
|
|
|
31
|
-
|
|
74
|
+
### `EgConfirmationDialogService`
|
|
32
75
|
|
|
33
|
-
|
|
76
|
+
`@Injectable({ providedIn: 'root' })`, constructor-injects `HlmDialogService`.
|
|
34
77
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
78
|
+
| Method | Signature | Description |
|
|
79
|
+
| ------------------------ | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- |
|
|
80
|
+
| `showConfirmationDialog` | `({ title, description }: { title: string; description: string }) => Promise<boolean>` | Opens the modal with the given copy; resolves `true` on Confirm, `false` on Cancel or any dismiss. |
|
|
38
81
|
|
|
39
|
-
|
|
40
|
-
```bash
|
|
41
|
-
npm publish
|
|
42
|
-
```
|
|
82
|
+
Implementation detail: subscribes to `dialogRef.closed$` once per call and resolves `confirm ?? false`.
|
|
43
83
|
|
|
44
|
-
|
|
84
|
+
### `EgConfirmationDialog`
|
|
45
85
|
|
|
46
|
-
|
|
86
|
+
Standalone component (no selector), opened via the dialog service.
|
|
47
87
|
|
|
48
|
-
|
|
49
|
-
|
|
88
|
+
| Member | Type | Description |
|
|
89
|
+
| ------- | ---------------------------- | ------------------------------------------------------------------------------------------- |
|
|
90
|
+
| `close` | `(confirm: boolean) => void` | Closes the dialog with the boolean result. Wired to the two footer buttons in the template. |
|
|
91
|
+
|
|
92
|
+
Reads `{ title, description }` from `injectBrnDialogContext()`.
|
|
93
|
+
|
|
94
|
+
## Examples
|
|
95
|
+
|
|
96
|
+
### 1. Basic delete confirmation (`async/await`)
|
|
97
|
+
|
|
98
|
+
```ts
|
|
99
|
+
import { Component, inject } from '@angular/core';
|
|
100
|
+
import { EgConfirmationDialogService } from '@egose/shadcn-theme-ng/confirmation-dialog';
|
|
101
|
+
|
|
102
|
+
@Component({
|
|
103
|
+
selector: 'app-delete-button',
|
|
104
|
+
standalone: true,
|
|
105
|
+
template: `<button type="button" (click)="onDelete()">Delete project</button>`,
|
|
106
|
+
})
|
|
107
|
+
export class DeleteButtonComponent {
|
|
108
|
+
private readonly confirm = inject(EgConfirmationDialogService);
|
|
109
|
+
|
|
110
|
+
async onDelete() {
|
|
111
|
+
const ok = await this.confirm.showConfirmationDialog({
|
|
112
|
+
title: 'Delete project?',
|
|
113
|
+
description: 'This will permanently delete the project and all of its data.',
|
|
114
|
+
});
|
|
115
|
+
if (ok) {
|
|
116
|
+
console.log('deleting…');
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
50
120
|
```
|
|
51
121
|
|
|
52
|
-
|
|
122
|
+
### 2. Promise-chain style (no `async`)
|
|
53
123
|
|
|
54
|
-
|
|
124
|
+
```ts
|
|
125
|
+
import { Component, inject } from '@angular/core';
|
|
126
|
+
import { EgConfirmationDialogService } from '@egose/shadcn-theme-ng/confirmation-dialog';
|
|
55
127
|
|
|
56
|
-
|
|
57
|
-
|
|
128
|
+
@Component({
|
|
129
|
+
selector: 'app-leave-page',
|
|
130
|
+
standalone: true,
|
|
131
|
+
template: `<button type="button" (click)="leave()">Discard changes</button>`,
|
|
132
|
+
})
|
|
133
|
+
export class LeavePageComponent {
|
|
134
|
+
private readonly confirm = inject(EgConfirmationDialogService);
|
|
135
|
+
|
|
136
|
+
leave() {
|
|
137
|
+
this.confirm
|
|
138
|
+
.showConfirmationDialog({
|
|
139
|
+
title: 'Discard unsaved changes?',
|
|
140
|
+
description: 'Your edits will be lost if you leave this page.',
|
|
141
|
+
})
|
|
142
|
+
.then((ok) => {
|
|
143
|
+
if (ok) console.log('navigating away…');
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
### 3. Destructive row action in a table
|
|
150
|
+
|
|
151
|
+
Each row awaits its own confirmation before mutating the list.
|
|
152
|
+
|
|
153
|
+
```ts
|
|
154
|
+
import { Component, inject, signal } from '@angular/core';
|
|
155
|
+
import { EgConfirmationDialogService } from '@egose/shadcn-theme-ng/confirmation-dialog';
|
|
156
|
+
|
|
157
|
+
interface Member {
|
|
158
|
+
id: number;
|
|
159
|
+
name: string;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
@Component({
|
|
163
|
+
selector: 'app-members-table',
|
|
164
|
+
standalone: true,
|
|
165
|
+
template: `
|
|
166
|
+
<ul>
|
|
167
|
+
@for (m of members(); track m.id) {
|
|
168
|
+
<li class="flex items-center justify-between py-1">
|
|
169
|
+
<span>{{ m.name }}</span>
|
|
170
|
+
<button type="button" (click)="remove(m)">Remove</button>
|
|
171
|
+
</li>
|
|
172
|
+
}
|
|
173
|
+
</ul>
|
|
174
|
+
`,
|
|
175
|
+
})
|
|
176
|
+
export class MembersTableComponent {
|
|
177
|
+
private readonly confirm = inject(EgConfirmationDialogService);
|
|
178
|
+
readonly members = signal<Member[]>([
|
|
179
|
+
{ id: 1, name: 'Ada' },
|
|
180
|
+
{ id: 2, name: 'Grace' },
|
|
181
|
+
]);
|
|
182
|
+
|
|
183
|
+
async remove(m: Member) {
|
|
184
|
+
const ok = await this.confirm.showConfirmationDialog({
|
|
185
|
+
title: `Remove ${m.name}?`,
|
|
186
|
+
description: `${m.name} will lose access immediately. You can re-invite them later.`,
|
|
187
|
+
});
|
|
188
|
+
if (ok) this.members.update((ms) => ms.filter((x) => x.id !== m.id));
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
### 4. Guarding a reactive form reset
|
|
194
|
+
|
|
195
|
+
```ts
|
|
196
|
+
import { Component, inject } from '@angular/core';
|
|
197
|
+
import { FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';
|
|
198
|
+
import { EgConfirmationDialogService } from '@egose/shadcn-theme-ng/confirmation-dialog';
|
|
199
|
+
|
|
200
|
+
@Component({
|
|
201
|
+
selector: 'app-settings-form',
|
|
202
|
+
standalone: true,
|
|
203
|
+
imports: [ReactiveFormsModule],
|
|
204
|
+
template: `
|
|
205
|
+
<form [formGroup]="form">
|
|
206
|
+
<input formControlName="name" placeholder="Workspace name" />
|
|
207
|
+
<button type="button" (click)="reset()">Reset to defaults</button>
|
|
208
|
+
</form>
|
|
209
|
+
`,
|
|
210
|
+
})
|
|
211
|
+
export class SettingsFormComponent {
|
|
212
|
+
private readonly confirm = inject(EgConfirmationDialogService);
|
|
213
|
+
readonly form = new FormGroup({ name: new FormControl('acme') });
|
|
214
|
+
|
|
215
|
+
async reset() {
|
|
216
|
+
if (this.form.pristine) return;
|
|
217
|
+
const ok = await this.confirm.showConfirmationDialog({
|
|
218
|
+
title: 'Reset settings?',
|
|
219
|
+
description: 'All fields return to their default values.',
|
|
220
|
+
});
|
|
221
|
+
if (ok) this.form.reset({ name: 'acme' });
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
### 5. Sequential confirmations (two-step destructive flow)
|
|
227
|
+
|
|
228
|
+
Await twice — e.g. confirm scope, then confirm irreversibility.
|
|
229
|
+
|
|
230
|
+
```ts
|
|
231
|
+
import { Component, inject } from '@angular/core';
|
|
232
|
+
import { EgConfirmationDialogService } from '@egose/shadcn-theme-ng/confirmation-dialog';
|
|
233
|
+
|
|
234
|
+
@Component({
|
|
235
|
+
selector: 'app-purge-flow',
|
|
236
|
+
standalone: true,
|
|
237
|
+
template: `<button type="button" (click)="purge()">Purge organization</button>`,
|
|
238
|
+
})
|
|
239
|
+
export class PurgeFlowComponent {
|
|
240
|
+
private readonly confirm = inject(EgConfirmationDialogService);
|
|
241
|
+
|
|
242
|
+
async purge() {
|
|
243
|
+
const step1 = await this.confirm.showConfirmationDialog({
|
|
244
|
+
title: 'Purge all data?',
|
|
245
|
+
description: 'This affects every project in the organization.',
|
|
246
|
+
});
|
|
247
|
+
if (!step1) return;
|
|
248
|
+
|
|
249
|
+
const step2 = await this.confirm.showConfirmationDialog({
|
|
250
|
+
title: 'Are you absolutely sure?',
|
|
251
|
+
description: 'This action cannot be undone. Backups are deleted too.',
|
|
252
|
+
});
|
|
253
|
+
if (step2) console.log('purging…');
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
### 6. Opening the component directly (custom dialog options)
|
|
259
|
+
|
|
260
|
+
If you need non-default dialog chrome (different `contentClass`, close behavior), bypass the service and use `HlmDialogService` with `EgConfirmationDialog` directly.
|
|
261
|
+
|
|
262
|
+
```ts
|
|
263
|
+
import { Component, inject } from '@angular/core';
|
|
264
|
+
import { EgConfirmationDialog } from '@egose/shadcn-theme-ng/confirmation-dialog';
|
|
265
|
+
import { HlmDialogService } from '@egose/shadcn-theme-ng/dialog';
|
|
266
|
+
|
|
267
|
+
@Component({
|
|
268
|
+
selector: 'app-custom-open',
|
|
269
|
+
standalone: true,
|
|
270
|
+
template: `<button type="button" (click)="open()">Review defaults</button>`,
|
|
271
|
+
})
|
|
272
|
+
export class CustomOpenComponent {
|
|
273
|
+
private readonly dialogs = inject(HlmDialogService);
|
|
274
|
+
|
|
275
|
+
open() {
|
|
276
|
+
// No title/description → component falls back to its default copy.
|
|
277
|
+
const ref = this.dialogs.open<boolean>(EgConfirmationDialog, {
|
|
278
|
+
context: { title: '', description: '' },
|
|
279
|
+
contentClass: 'sm:max-w-md',
|
|
280
|
+
});
|
|
281
|
+
ref.closed$.subscribe((ok) => console.log('result:', ok ?? false));
|
|
282
|
+
}
|
|
283
|
+
}
|
|
58
284
|
```
|
|
59
285
|
|
|
60
|
-
|
|
286
|
+
## Accessibility notes
|
|
287
|
+
|
|
288
|
+
- The dialog uses the standard `hlm-dialog` primitives (`hlmDialogTitle` + `hlmDialogDescription`), so screen readers announce title/description on open and focus is trapped/moved per the dialog service.
|
|
289
|
+
- Confirm is styled `variant="danger"` and Cancel `variant="secondary" appearance="outline"` — the safe action is visually distinct; keyboard order is Cancel → Confirm.
|
|
290
|
+
- Dismiss (Escape/backdrop/X) resolves `false` — the destructive path always requires an explicit Confirm click.
|
|
291
|
+
- Keep `title`/`description` specific ("Delete 'Q3 report'?") rather than generic so SR users hear the consequence without surrounding context.
|
|
292
|
+
|
|
293
|
+
## Theming / CSS variables
|
|
294
|
+
|
|
295
|
+
No component-specific CSS variables. The icon uses `hlmAlertIcon` (warning treatment), the title is `text-xl`, the description `text-base text-gray-700`, and the footer is `mt-4`. Buttons follow the shared `hlmButton` `secondary`/`danger` variants in both themes.
|
|
61
296
|
|
|
62
|
-
##
|
|
297
|
+
## Related subpaths
|
|
63
298
|
|
|
64
|
-
|
|
299
|
+
- `@egose/shadcn-theme-ng/dialog` — `HlmDialogService.open`, title/description/footer primitives behind this shortcut.
|
|
300
|
+
- `@egose/shadcn-theme-ng/alert-dialog` — fully custom alert dialogs when you need your own buttons/copy/layout.
|
|
301
|
+
- `@egose/shadcn-theme-ng/button` — `secondary`/`danger` variants used by the footer.
|
|
302
|
+
- `@egose/shadcn-theme-ng/alert` — `HlmAlertIcon` warning treatment for the header icon.
|